Blob Blame Raw


#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()) {
		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 <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();
}