Point Slider::PreferredSize() { const Skin &skin = GetContext()->GetSkin(); if (m_orient == SLIDER_HORIZONTAL) { SetSizeControlFlags(EXPAND_WIDTH); return skin.SliderHorizontalButtonNormal().size; } SetSizeControlFlags(EXPAND_HEIGHT); return skin.SliderVerticalButtonNormal().size; }
Face::Face(Context *context, Uint32 flags, Uint32 seed) : Single(context), m_preferredSize(INT_MAX) { if (!seed) seed = time(0); m_flags = flags; m_seed = seed; SDLSurfacePtr faceim = SDLSurfacePtr::WrapNew(SDL_CreateRGBSurface(SDL_SWSURFACE, FaceParts::FACE_WIDTH, FaceParts::FACE_HEIGHT, 24, 0xff, 0xff00, 0xff0000, 0)); FaceParts::FaceDescriptor face; switch (flags & GENDER_MASK) { case RAND: face.gender = -1; break; case MALE: face.gender = 0; break; case FEMALE: face.gender = 1; break; default: assert(0); break; } FaceParts::PickFaceParts(face, m_seed); FaceParts::BuildFaceImage(faceim.Get(), face, (flags & ARMOUR)); m_texture.reset(Graphics::TextureBuilder(faceim, Graphics::LINEAR_CLAMP, true, true).CreateTexture(GetContext()->GetRenderer())); if (!s_material) { Graphics::MaterialDescriptor matDesc; matDesc.textures = 1; s_material.Reset(GetContext()->GetRenderer()->CreateMaterial(matDesc)); } m_preferredSize = UI::Point(FaceParts::FACE_WIDTH, FaceParts::FACE_HEIGHT); SetSizeControlFlags(UI::Widget::PRESERVE_ASPECT); }
Point Expand::PreferredSize() { const Point innerPreferredSize(GetInnerWidget() ? GetInnerWidget()->CalcLayoutContribution() : Point()); switch (m_direction) { case BOTH: SetSizeControlFlags(EXPAND_WIDTH | EXPAND_HEIGHT); break; case HORIZONTAL: SetSizeControlFlags(EXPAND_WIDTH); break; case VERTICAL: SetSizeControlFlags(EXPAND_HEIGHT); break; } return innerPreferredSize; }
Image::Image(Context *context, const std::string &filename, Uint32 sizeControlFlags): Widget(context) { Graphics::TextureBuilder b = Graphics::TextureBuilder::UI(filename); m_texture.Reset(b.GetOrCreateTexture(GetContext()->GetRenderer(), "ui")); const Graphics::TextureDescriptor &descriptor = b.GetDescriptor(); m_initialSize = Point(descriptor.dataSize.x*descriptor.texSize.x,descriptor.dataSize.y*descriptor.texSize.y); Graphics::MaterialDescriptor material_desc; material_desc.textures = 1; m_material.Reset(GetContext()->GetRenderer()->CreateMaterial(material_desc)); m_material->texture0 = m_texture.Get(); SetSizeControlFlags(sizeControlFlags); }
Point Gauge::PreferredSize() { SetSizeControlFlags(EXPAND_WIDTH); return GetContext()->GetSkin().GaugeBackground().size; }
Point Icon::PreferredSize() { SetSizeControlFlags(NO_HEIGHT | PRESERVE_ASPECT); return Point(48); }
MultiLineText::MultiLineText(Context *context, const std::string &text) : Widget(context), m_text(text) { m_layout.Reset(new TextLayout(GetContext()->GetFont(GetFont()), m_text)); SetSizeControlFlags(EXPAND_WIDTH); }