Exemple #1
0
/**
 * Writes the attributed object id, comments, and artifacts.
 */
void Translator::WriteAttributedObject(const AttributedObject& aobj, Context& ctxt, tinyxml2::XMLElement & elem, bool bIdAttributeRequired)
{
	//Write the ID.
	if( aobj.Id().length() > 0 )
		elem.SetAttribute( "id", aobj.Id().c_str());
	else if( bIdAttributeRequired )
		throw GnssMetadata::TranslationException( "Required id attribute not defined.");



	//Write the comments.
	CommentList::const_iterator citer = aobj.Comments().begin();
	for(; citer != aobj.Comments().end(); citer++)
	{
		XMLElement* pec = elem.GetDocument()->NewElement( "comment");
		const Comment& cmt = *citer;
		const char* szFormat = (cmt.Format() == Comment::text) ? "text":"html";
		pec->SetAttribute("format",szFormat);
		pec->SetText( cmt.Value().c_str());
		elem.InsertEndChild(pec);
	}

	//Write the Artifacts.
	AnyUriList::const_iterator aiter = aobj.Artifacts().begin();
	for(; aiter != aobj.Artifacts().end(); aiter++)
	{
		XMLElement* pec = elem.GetDocument()->NewElement( "artifact");
		pec->SetText( aiter->Value().c_str());
		elem.InsertEndChild(pec);
	}
}
void UIAnimation::Save(tinyxml2::XMLElement& elem)
{
	if (mGlobalAnim){
		elem.SetAttribute("globalName", mName.c_str());
	}
	else {
		elem.SetAttribute("id", mID);
		elem.SetAttribute("name", mName.c_str());
		elem.SetAttribute("length", mLength);
		elem.SetAttribute("loop", mLoop);
		if (!mKeyTextColor.empty()){
			auto textColorElem = elem.GetDocument()->NewElement("TextColor");
			elem.InsertEndChild(textColorElem);
			for (auto& it : mKeyTextColor)
			{
				auto keyelem = textColorElem->GetDocument()->NewElement("key");
				textColorElem->InsertEndChild(keyelem);
				keyelem->SetAttribute("time", it.first);
				keyelem->SetAttribute("color", StringMathConverter::ToString(it.second).c_str());
			}
		}

		if (!mKeyBackColor.empty()){
			auto backColorElem = elem.GetDocument()->NewElement("BackColor");
			elem.InsertEndChild(backColorElem);
			for (auto& it : mKeyBackColor)
			{
				auto keyelem = backColorElem->GetDocument()->NewElement("key");
				backColorElem->InsertEndChild(keyelem);
				keyelem->SetAttribute("time", it.first);
				keyelem->SetAttribute("color", StringMathConverter::ToString(it.second).c_str());
			}
		}

		if (!mKeyMaterialColor.empty()){
			auto materialColorElem = elem.GetDocument()->NewElement("MaterialColor");
			elem.InsertEndChild(materialColorElem);
			for (auto& it : mKeyMaterialColor)
			{
				auto keyelem = materialColorElem->GetDocument()->NewElement("key");
				materialColorElem->InsertEndChild(keyelem);
				keyelem->SetAttribute("time", it.first);
				keyelem->SetAttribute("color", StringMathConverter::ToString(it.second).c_str());
			}
		}

		if (!mKeyPos.empty()){
			auto posElem = elem.GetDocument()->NewElement("Pos");
			elem.InsertEndChild(posElem);
			for (auto& it : mKeyPos)
			{
				auto keyelem = posElem->GetDocument()->NewElement("key");
				posElem->InsertEndChild(keyelem);
				keyelem->SetAttribute("time", it.first);
				keyelem->SetAttribute("pos", StringMathConverter::ToString(it.second).c_str());
			}
		}

		if (!mKeyScale.empty()){
			auto scaleElem = elem.GetDocument()->NewElement("Scale");
			elem.InsertEndChild(scaleElem);
			for (auto& it : mKeyScale)
			{
				auto keyelem = scaleElem->GetDocument()->NewElement("key");
				scaleElem->InsertEndChild(keyelem);
				keyelem->SetAttribute("time", it.first);
				keyelem->SetAttribute("scale", StringMathConverter::ToString(it.second).c_str());
			}
		}

		if (!mKeyAlpha.empty()){
			auto alphaElem = elem.GetDocument()->NewElement("Alpha");
			elem.InsertEndChild(alphaElem);
			for (auto& it : mKeyAlpha)
			{
				auto keyelem = alphaElem->GetDocument()->NewElement("key");
				alphaElem->InsertEndChild(keyelem);
				keyelem->SetAttribute("time", it.first);
				keyelem->SetAttribute("alpha", StringConverter::ToString(it.second).c_str());
			}
		}
	}
}