// ----- BEGIN: TryWin.h #include class TryWin : public Fl_Gl_Window { public: TryWin(int x1, int y1, int x2, int y2, int index0 = -1); void draw(); void initGL(); }; // ----- END: TryWin.h // ----- BEGIN: TryWin.cpp #include #include TryWin::TryWin(int x1, int y1, int x2, int y2, int index0) : Fl_Gl_Window(x1, y1, x2, y2, "TryWin") // THIS SETS THE OPENGL VIEWPORT { } void TryWin::initGL() { glClear(GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT); } void TryWin::draw(){ if (!visible_r()) return; // don't draw invisible widget if (!valid()) { glLoadIdentity(); glViewport(0, 0, pixel_w(), pixel_h()); } // Draw using the FLTK widget's rgb color() // RRGGBBCC // -------- float r = (color() >> (8*3) & 0xff) / 255.0; // get red component 0xff000000 float g = (color() >> (8*2) & 0xff) / 255.0; // get grn component 0x00ff0000 float b = (color() >> (8*1) & 0xff) / 255.0; // get blu component 0x0000ff00 glClearColor(r, g, b, 1.0); glClear(GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT); glFlush(); } // ----- END: TryWin.cpp // ----- BEGIN: TryFLTK.cpp #include #include #include int main(int argc, char **argv) { Fl_Window *mainwin = new Fl_Window(800,180); { // Positions of these subwindows are relative to the mainwin's upper/left Fl_Window *leftwin = new TryWin(20,20, 200, 140, 1); leftwin->align(FL_ALIGN_CENTER); leftwin->color(0x88000000); // dark red leftwin->end(); Fl_Window *midwin = new TryWin(120, 20, 200, 150, 2); midwin->align(FL_ALIGN_CENTER); midwin->color(0xdd000000); // red midwin->end(); Fl_Window *rightwin = new Fl_Window(410, 20, 200, 140); rightwin->align(FL_ALIGN_CENTER); rightwin->color(0x00880000); // dark green rightwin->begin(); { // Child box coords within subwindow Fl_Box *box = new Fl_Box(20,20,80,80,"R Box"); box->color(0x00dd0000); // green box->box(FL_FLAT_BOX); } rightwin->end(); } mainwin->end(); mainwin->resizable(mainwin); mainwin->show(argc, argv); return Fl::run(); } // END: TryFLTK.cpp