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

Reply via email to