DO NOT REPLY TO THIS MESSAGE. INSTEAD, POST ANY RESPONSES TO THE LINK BELOW.
[STR New]
Link: http://www.fltk.org/str.php?L2115
Version: 1.3-current
Link: http://www.fltk.org/str.php?L2115
Version: 1.3-current
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Box.H>
#include <FL/fl_draw.H>
// TEST TEXT POSITIONING WITHIN BOX USING VARIOUS METHODS
class TestBox : public Fl_Box {
public:
TestBox(int X,int Y,int W,int H,const char*L=0) : Fl_Box(X,Y,W,H,L) {
box(FL_FLAT_BOX);
color(FL_WHITE);
}
void draw() {
// DRAW OUTER BOX IN WHITE
fl_color(FL_WHITE);
fl_rectf(x(),y(),w(),h());
// SET FONT/SIZE TO DETERMINE XYWH OF TEXT
fl_font(labelfont(), labelsize());
// A: DRAW USING draw(s,X,Y,W,H) + fl_measure()
{
int X=x()+20, Y=y()+5, W=0, H=0;
fl_measure(label(), W,H, 0);
// DRAW RED BOX AROUND FL_MEASURE'D AREA
fl_color(FL_RED);
fl_rect(X,Y,W,H);
// DRAW TEXT IN BLACK
fl_color(FL_BLACK);
fl_draw(label(), X,Y,W,H, align(),0,0);
fl_draw("A:",x(),Y+fl_height()-fl_descent());
}
// B: DRAW USING draw(s,X,Y) + fl_measure() + fl_descent()
{
int X=x()+20, Y=y()+35, W=0, H=0;
fl_measure(label(), W,H, 0);
// DRAW RED BOX AROUND FL_MEASURE'D AREA
fl_color(FL_RED);
fl_rect(X,Y,W,H);
// DRAW TEXT IN BLACK
fl_color(FL_BLACK);
fl_draw(label(), X,Y+H-fl_descent());
fl_draw("B:",x(),Y+fl_height()-fl_descent());
}
// C: DRAW USING draw(s,X,Y) + fl_height() + fl_descent()
{
int X=x()+20, Y=y()+65, W=0, H=0;
fl_measure(label(), W,H, 0);
// DRAW RED BOX AROUND FL_MEASURE'D AREA
fl_color(FL_RED);
fl_rect(X,Y,W,H);
// DRAW TEXT IN BLACK
fl_color(FL_BLACK);
fl_draw(label(),X,Y+fl_height()-fl_descent());
fl_draw("C:",x(),Y+fl_height()-fl_descent());
}
// D: DRAW USING draw(s,X,Y) + Ian's new fl_text_extents()
{
int X=x()+20, Y=y()+95;
int dx=0,dy=0,wo=0,ho=0;
fl_text_extents(label(), dx, dy, wo, ho);
// DRAW RED BOX AROUND TEXT EXTENTS AREA
fl_color(FL_RED);
fl_rect(X+dx,Y+dy+fl_height()-fl_descent(),wo,ho);
// DRAW TEXT IN BLACK
fl_color(FL_BLACK);
fl_draw(label(),X,Y+fl_height()-fl_descent());
fl_draw("D:",x(),Y+fl_height()-fl_descent());
}
// E: DRAW USING draw(s,X,Y,W,H) + labelsize() for height, fl_width()
for width
{
int X=x()+20, Y=y()+125, W=0, H=0;
W = (int)fl_width(label());
H = labelsize(); // probably bad
// DRAW RED BOX AROUND TEXT EXTENTS AREA
fl_color(FL_RED);
fl_rect(X,Y,W,H);
// DRAW TEXT IN BLACK
fl_color(FL_BLACK);
fl_draw(label(), X,Y,W,H, align(),0,0);
fl_draw("E:", x(),Y,(int)fl_width("E:"),H, align(),0,0);
}
}
};
int main() {
Fl_Window win(300,300);
TestBox test(10,10,300-20,300-20,"ABCabc HHHllljjjgggkk()||ÃÃÃÃÃ");
test.align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
test.labelfont(FL_COURIER);
test.labelsize(11);
win.end();
win.show();
return(Fl::run());
}
_______________________________________________
fltk-bugs mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-bugs