#include "toonz/txshnoteset.h" #include "tstream.h" #include "texception.h" #include //============================================================================= // 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()) { std::string tagName; if (is.matchTag(tagName)) { if (tagName == "notes") { while (!is.eos()) { std::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 "); is.closeChild(); } } else throw TException("expected or "); 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(); }