#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") { std::wstring text; is >> text; m_framesText.push_back(QString::fromStdWString(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"; }