196 lines
4.6 KiB
C++
196 lines
4.6 KiB
C++
|
|
||
|
|
||
|
#include "toonz/txshnoteset.h"
|
||
|
#include "tstream.h"
|
||
|
#include "texception.h"
|
||
|
|
||
|
#include <QString>
|
||
|
|
||
|
//=============================================================================
|
||
|
// TXshNoteSet
|
||
|
|
||
|
TXshNoteSet::TXshNoteSet()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
int TXshNoteSet::addNote(Note note)
|
||
|
{
|
||
|
m_notes.push_back(note);
|
||
|
return getCount() - 1;
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
void TXshNoteSet::removeNote(int index)
|
||
|
{
|
||
|
if (m_notes.empty() || index >= (int)m_notes.size())
|
||
|
return;
|
||
|
m_notes.removeAt(index);
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
int TXshNoteSet::getCount() const
|
||
|
{
|
||
|
if (m_notes.empty())
|
||
|
return 0;
|
||
|
return m_notes.size();
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
int TXshNoteSet::getNoteColorIndex(int noteIndex) const
|
||
|
{
|
||
|
assert(noteIndex < m_notes.size());
|
||
|
if (noteIndex >= m_notes.size())
|
||
|
return 0;
|
||
|
return m_notes[noteIndex].m_colorIndex;
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
void TXshNoteSet::setNoteColorIndex(int noteIndex, int colorIndex)
|
||
|
{
|
||
|
assert(noteIndex < m_notes.size());
|
||
|
if (noteIndex >= m_notes.size())
|
||
|
return;
|
||
|
m_notes[noteIndex].m_colorIndex = colorIndex;
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
QString TXshNoteSet::getNoteHtmlText(int noteIndex) const
|
||
|
{
|
||
|
assert(noteIndex < m_notes.size());
|
||
|
if (noteIndex >= m_notes.size())
|
||
|
return QString();
|
||
|
return m_notes[noteIndex].m_text;
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
void TXshNoteSet::setNoteHtmlText(int noteIndex, QString text)
|
||
|
{
|
||
|
assert(noteIndex < m_notes.size());
|
||
|
if (noteIndex >= m_notes.size())
|
||
|
return;
|
||
|
m_notes[noteIndex].m_text = text;
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
int TXshNoteSet::getNoteRow(int noteIndex) const
|
||
|
{
|
||
|
assert(noteIndex < m_notes.size());
|
||
|
if (noteIndex >= m_notes.size())
|
||
|
return 0;
|
||
|
return m_notes[noteIndex].m_row;
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
void TXshNoteSet::setNoteRow(int noteIndex, int row)
|
||
|
{
|
||
|
assert(noteIndex < m_notes.size());
|
||
|
if (noteIndex >= m_notes.size())
|
||
|
return;
|
||
|
m_notes[noteIndex].m_row = row;
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
int TXshNoteSet::getNoteCol(int noteIndex) const
|
||
|
{
|
||
|
assert(noteIndex < m_notes.size());
|
||
|
if (noteIndex >= m_notes.size())
|
||
|
return 0;
|
||
|
return m_notes[noteIndex].m_col;
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
void TXshNoteSet::setNoteCol(int noteIndex, int col)
|
||
|
{
|
||
|
assert(noteIndex < m_notes.size());
|
||
|
if (noteIndex >= m_notes.size())
|
||
|
return;
|
||
|
m_notes[noteIndex].m_col = col;
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
TPointD TXshNoteSet::getNotePos(int noteIndex) const
|
||
|
{
|
||
|
assert(noteIndex < m_notes.size());
|
||
|
if (noteIndex >= m_notes.size())
|
||
|
return TPointD(5, 5);
|
||
|
return m_notes[noteIndex].m_pos;
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
void TXshNoteSet::setNotePos(int noteIndex, TPointD pos)
|
||
|
{
|
||
|
assert(noteIndex < m_notes.size());
|
||
|
if (noteIndex >= m_notes.size())
|
||
|
return;
|
||
|
m_notes[noteIndex].m_pos = pos;
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
void TXshNoteSet::loadData(TIStream &is)
|
||
|
{
|
||
|
while (!is.eos()) {
|
||
|
string tagName;
|
||
|
if (is.matchTag(tagName)) {
|
||
|
if (tagName == "notes") {
|
||
|
while (!is.eos()) {
|
||
|
string tagName;
|
||
|
if (is.matchTag(tagName)) {
|
||
|
if (tagName == "note") {
|
||
|
Note note;
|
||
|
is >> note.m_colorIndex;
|
||
|
std::wstring text;
|
||
|
is >> text;
|
||
|
note.m_text = QString::fromStdWString(text);
|
||
|
is >> note.m_row;
|
||
|
is >> note.m_col;
|
||
|
is >> note.m_pos.x;
|
||
|
is >> note.m_pos.y;
|
||
|
m_notes.push_back(note);
|
||
|
}
|
||
|
} else
|
||
|
throw TException("expected <note>");
|
||
|
is.closeChild();
|
||
|
}
|
||
|
} else
|
||
|
throw TException("expected <defaultColor> or <notes>");
|
||
|
is.closeChild();
|
||
|
} else
|
||
|
throw TException("expected tag");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
void TXshNoteSet::saveData(TOStream &os)
|
||
|
{
|
||
|
int i;
|
||
|
os.openChild("notes");
|
||
|
for (i = 0; i < getCount(); i++) {
|
||
|
os.openChild("note");
|
||
|
Note note = m_notes.at(i);
|
||
|
os << note.m_colorIndex;
|
||
|
os << note.m_text.toStdWString();
|
||
|
os << note.m_row;
|
||
|
os << note.m_col;
|
||
|
os << note.m_pos.x;
|
||
|
os << note.m_pos.y;
|
||
|
os.closeChild();
|
||
|
}
|
||
|
os.closeChild();
|
||
|
}
|