#include Drawing:: Drawing::Drawing(int x,int y,int w,int h) : Fl_Widget(x,y,w,h), x1(0), y1(0), x2(0), y2(0), modo(PRIMER_PUNTO) { } void Drawing::draw() { fl_clip(x(),y(),w(),h()); fl_color(fl_rgb_color(223, 223, 223)); fl_rectf(x(),y(),w(),h()); fl_color(FL_BLUE); fl_line_style(FL_SOLID, 2); if (modo == ARRASTRE) { fl_color(FL_BACKGROUND_COLOR); fl_begin_line(); fl_vertex(x1,y1); fl_vertex(x2,y2); fl_end_line(); fl_color(FL_GREEN); fl_begin_line(); fl_vertex(x1,y1); fl_vertex(x2,y2); fl_end_line(); } if (modo == SEGUNDO_PUNTO) { fl_begin_line(); fl_vertex(x1,y1); fl_vertex(x2,y2); fl_end_line(); } fl_pop_clip(); } int Drawing::handle (int evento) { switch (evento) { case FL_DRAG: modo = ARRASTRE; x2 = Fl::event_x(); y2 = Fl::event_y(); redraw(); return 1; case FL_RELEASE: modo = SEGUNDO_PUNTO; x2 = Fl::event_x(); y2 = Fl::event_y(); redraw(); return 1; break; case FL_PUSH: modo = PRIMER_PUNTO; x1 = Fl::event_x(); y1 = Fl::event_y(); return 1; break; default: return 0; } }