void Alignment::apply(Geometry &geom, const Geometry &parent) const
{
if(parent.w>geom.w)
+ {
geom.w+=static_cast<unsigned>((parent.w-geom.w)*w);
+ geom.x+=static_cast<int>((parent.w-geom.w)*x);
+ }
if(parent.h>geom.h)
+ {
geom.h+=static_cast<unsigned>((parent.h-geom.h)*h);
-
- geom.x+=static_cast<int>((parent.w-geom.w)*x);
- geom.y+=static_cast<int>((parent.h-geom.h)*y);
+ geom.y+=static_cast<int>((parent.h-geom.h)*y);
+ }
}
void Alignment::apply(Geometry &geom, const Geometry &parent, const Sides &margin) const
unsigned pw=parent.w-margin.left-margin.right;
unsigned ph=parent.h-margin.bottom-margin.top;
+ geom.x+=margin.left;
+ geom.y+=margin.bottom;
+
if(parent.w>geom.w)
+ {
geom.w+=static_cast<unsigned>((pw-geom.w)*w);
+ geom.x+=static_cast<int>((pw-geom.w)*x);
+ }
if(parent.h>geom.h)
+ {
geom.h+=static_cast<unsigned>((ph-geom.h)*h);
-
- geom.x+=static_cast<int>(margin.left+(pw-geom.w)*x);
- geom.y+=static_cast<int>(margin.bottom+(ph-geom.h)*y);
+ geom.y+=static_cast<int>((ph-geom.h)*y);
+ }
}
} // namespace GLtk
Distributed under the LGPL
*/
+#include <msp/gl/immediate.h>
#include <msp/gl/matrix.h>
#include <msp/gl/transform.h>
#include "graphic.h"
{
const GL::Font *const font=style->get_font();
const float font_size=font->get_default_size();
+ const GL::Color &color=style->get_font_color();
const unsigned row_height=static_cast<unsigned>(font_size);
const Sides &margin=part.get_margin();
Geometry rgeom;
rgeom.w=static_cast<unsigned>(font->get_string_width(items[first+i])*font_size);
rgeom.h=static_cast<unsigned>((font->get_ascent()-font->get_descent())*font_size);
+ rgeom.x=margin.left;
rgeom.y=geom.h-margin.top-(i+1)*row_height-static_cast<int>(font->get_descent()*font_size);
part.get_alignment().apply(rgeom, pgeom);
GL::push_matrix();
GL::translate(rgeom.x, rgeom.y, 0);
GL::scale_uniform(font_size);
- font->draw_string(items[first+i]);
+ GL::Immediate imm((GL::COLOR4_UBYTE, GL::TEXCOORD2, GL::VERTEX2));
+ imm.color(color.r, color.g, color.b);
+ font->draw_string(items[first+i], imm);
GL::pop_matrix();
}
}