tahoma2d/toonz/sources/toonzlib/txshsoundtextlevel.cpp
2016-06-15 15:43:10 +09:00

78 lines
2.2 KiB
C++

#include "toonz/txshsoundtextlevel.h"
#include "toonz/txshleveltypes.h"
#include "tstream.h"
//-----------------------------------------------------------------------------
DEFINE_CLASS_CODE(TXshSoundTextLevel, 54)
PERSIST_IDENTIFIER(TXshSoundTextLevel, "soundTextLevel")
//=============================================================================
TXshSoundTextLevel::TXshSoundTextLevel(std::wstring name)
: TXshLevel(m_classCode, name), m_framesText() {}
//-----------------------------------------------------------------------------
TXshSoundTextLevel::~TXshSoundTextLevel() {}
//-----------------------------------------------------------------------------
TXshSoundTextLevel *TXshSoundTextLevel::clone() const {
TXshSoundTextLevel *sound = new TXshSoundTextLevel(m_name);
return sound;
}
//-----------------------------------------------------------------------------
void TXshSoundTextLevel::setFrameText(int frameIndex, QString text) {
while (frameIndex >= m_framesText.size()) m_framesText.append(QString());
m_framesText.replace(frameIndex, text);
}
//-----------------------------------------------------------------------------
QString TXshSoundTextLevel::getFrameText(int frameIndex) const {
if (frameIndex >= m_framesText.size()) return QString();
return m_framesText[frameIndex];
}
//-----------------------------------------------------------------------------
void TXshSoundTextLevel::loadData(TIStream &is) {
is >> m_name;
setName(m_name);
std::string tagName;
int type = UNKNOWN_XSHLEVEL;
while (is.matchTag(tagName)) {
if (tagName == "type") {
std::string v;
is >> v;
if (v == "textSound") type = SND_TXT_XSHLEVEL;
is.matchEndTag();
} else if (tagName == "frame") {
QString text;
is >> text;
m_framesText.push_back(text);
is.matchEndTag();
} else
throw TException("unexpected tag " + tagName);
}
setType(type);
}
//-----------------------------------------------------------------------------
void TXshSoundTextLevel::saveData(TOStream &os) {
os << m_name;
int i;
for (i = 0; i < m_framesText.size(); i++) {
os.openChild("frame");
os << m_framesText[i];
os.closeChild();
}
os.child("type") << L"textSound";
}