Icon::Icon(Context *context, const std::string &iconName): Widget(context), m_color(Color::WHITE) { if (!s_texture) { s_config.Read(FileSystem::gameDataFiles, CONFIG_FILE); s_texture.Reset(Graphics::TextureBuilder::UI(s_config.String("TextureFile")).GetOrCreateTexture(GetContext()->GetRenderer(), "ui")); const Graphics::TextureDescriptor &texDesc = s_texture->GetDescriptor(); s_texScale = vector2f(1.0f/texDesc.dataSize.x, 1.0f/texDesc.dataSize.y); Graphics::MaterialDescriptor matDesc; matDesc.textures = 1; s_material.Reset(GetContext()->GetRenderer()->CreateMaterial(matDesc)); s_material->texture0 = s_texture.Get(); } std::string spec(s_config.String(iconName.c_str())); if (spec.size() == 0) spec = s_config.String(FALLBACK_ICON); assert(spec.size() > 0); std::vector<int> v(2); SplitSpec(spec, v); m_texPos = Point(v[0], v[1]); }
Skin::EdgedRectElement Skin::LoadEdgedRectElement(const std::string &spec) { std::vector<int> v(5); SplitSpec(spec, v); return EdgedRectElement(v[0], v[1], v[2], v[3], v[4]); }
Skin::BorderedRectElement Skin::LoadBorderedRectElement(const std::string &spec) { std::vector<int> v(5); SplitSpec(spec, v); return BorderedRectElement(v[0], v[1], v[2], v[3], v[4]*m_scale); }
Skin::RectElement Skin::LoadRectElement(const std::string &spec) { std::vector<int> v(4); SplitSpec(spec, v); return RectElement(v[0], v[1], v[2], v[3]); }