}
}
-void HSlider::render_part(const Part &part) const
+void HSlider::render_special(const Part &part) const
{
if(part.get_name()=="slider")
{
- unsigned gw=part.get_width();
- unsigned gh=(part.get_fill_y() ? geom.h : part.get_height());
+ Alignment align=part.get_alignment();
+ align.x=(value-min)/(max-min);
+
+ Geometry pgeom=part.get_geometry();
+ align.apply(pgeom, geom, part.get_margin());
+
GL::push_matrix();
- GL::translate((geom.w-gw)*(value-min)/(max-min), (geom.h-gh)*(part.get_alignment().y+1)/2, 0);
- const Graphic *graphic=part.get_graphic(state);
- graphic->render(gw, gh);
+ GL::translate(pgeom.x, pgeom.y, 0);
+ part.get_graphic(state)->render(pgeom.w, pgeom.h);
GL::pop_matrix();
}
- else
- Widget::render_part(part);
}
unsigned HSlider::get_slider_width() const
{
for(PartSeq::const_iterator i=style->get_parts().begin(); i!=style->get_parts().end(); ++i)
if(i->get_name()=="slider")
- return i->get_width();
+ return i->get_geometry().w;
return 0;
}