| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #include "core/Logger.h"
- #include "core/UiManager.h"
- #include "core/UiFont.h"
- #include "core/XmlFontFile.h"
- XmlFontFile::XmlFontFile(const Ogre::String& file):
- XmlFile(file)
- {
- }
- XmlFontFile::~XmlFontFile()
- {
- }
- void
- XmlFontFile::LoadFont()
- {
- TiXmlNode* node = m_File.RootElement();
- if(node == nullptr || node->ValueStr() != "font")
- {
- LOG_ERROR(m_File.ValueStr() + " is not a valid font file! No <font> in root.");
- return;
- }
- Ogre::String name = GetString(node, "name", "");
- Ogre::String language = GetString( node, "language", "" );
- Ogre::String image = GetString(node, "image", "");
- Ogre::Vector2 size = GetVector2(node, "image_size", Ogre::Vector2::ZERO);
- int height = GetInt(node, "height", 0);
- if(name != "" && image != "" && size.x != 0 && size.y != 0)
- {
- UiFont* font = new UiFont( name, language );
- font->SetImage(image, (int)size.x, (int)size.y);
- font->SetHeight(height);
- node = node->FirstChild();
- while(node != nullptr)
- {
- if(node->Type() == TiXmlNode::TINYXML_ELEMENT && node->ValueStr() == "char")
- {
- UiCharData data;
- Ogre::UTFString name = GetUTFString(node, "name", "");
- if(name != "")
- {
- data.char_code = *(name.c_str());
- }
- data.x = GetInt(node, "x", 0);
- data.y = GetInt(node, "y", 0);
- data.width = GetInt(node, "width", 0);
- data.height = GetInt(node, "height", 0);
- data.pre = GetInt(node, "pre", 0);
- data.post = GetInt(node, "post", 0);
- font->AddCharData(data);
- }
- node = node->NextSibling();
- }
- UiManager::getSingleton().AddFont(font);
- }
- }
|