diff options
author | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2011-01-19 22:20:02 +0100 |
---|---|---|
committer | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2011-01-19 22:20:02 +0100 |
commit | 23dba8ea85c357e37dab3ee264d17c06f5ef828f (patch) | |
tree | dcd7370f7a97b9cc4ec75902ea4b65bc28309878 | |
parent | 72b7443dbc2914ffddb45f7e89af2e7a943d355e (diff) |
adjust FltkView to global coordinates in fltk-1.3
-rw-r--r-- | dw/fltkviewbase.cc | 72 | ||||
-rw-r--r-- | dw/fltkviewport.cc | 25 |
2 files changed, 51 insertions, 46 deletions
diff --git a/dw/fltkviewbase.cc b/dw/fltkviewbase.cc index 0e942f2e..edcdf030 100644 --- a/dw/fltkviewbase.cc +++ b/dw/fltkviewbase.cc @@ -174,8 +174,9 @@ PORT1.3 #endif core::Rectangle r (rect->x, rect->y, rect->width, rect->height); fl_color(bgColor); - fl_rectf(translateViewXToCanvasX (rect->x), - translateCanvasYToViewY (rect->y), rect->width, rect->height); + fl_rectf(x () + translateViewXToCanvasX (rect->x), + y () + translateCanvasYToViewY (rect->y), + rect->width, rect->height); theLayout->expose (this, &r); } @@ -221,8 +222,8 @@ int FltkViewBase::handle (int event) case FL_PUSH: processed = theLayout->buttonPress (this, Fl::event_clicks () + 1, - translateViewXToCanvasX (Fl::event_x ()), - translateViewYToCanvasY (Fl::event_y ()), + translateViewXToCanvasX (Fl::event_x () - x ()), + translateViewYToCanvasY (Fl::event_y () - y ()), getDwButtonState (), Fl::event_button ()); _MSG("PUSH => %s\n", processed ? "true" : "false"); if (processed) { @@ -234,15 +235,15 @@ int FltkViewBase::handle (int event) case FL_RELEASE: processed = theLayout->buttonRelease (this, Fl::event_clicks () + 1, - translateViewXToCanvasX (Fl::event_x ()), - translateViewYToCanvasY (Fl::event_y ()), + translateViewXToCanvasX (Fl::event_x () - x ()), + translateViewYToCanvasY (Fl::event_y () - y ()), getDwButtonState (), Fl::event_button ()); _MSG("RELEASE => %s\n", processed ? "true" : "false"); return processed ? true : Fl_Group::handle (event); case FL_MOVE: - mouse_x = Fl::event_x(); - mouse_y = Fl::event_y(); + mouse_x = Fl::event_x() - x (); + mouse_y = Fl::event_y() - y (); processed = theLayout->motionNotify (this, translateViewXToCanvasX (mouse_x), @@ -254,15 +255,16 @@ int FltkViewBase::handle (int event) case FL_DRAG: processed = theLayout->motionNotify (this, - translateViewXToCanvasX (Fl::event_x ()), - translateViewYToCanvasY (Fl::event_y ()), + translateViewXToCanvasX (Fl::event_x () - x ()), + translateViewYToCanvasY (Fl::event_y () - y ()), getDwButtonState ()); _MSG("DRAG => %s\n", processed ? "true" : "false"); return processed ? true : Fl_Group::handle (event); case FL_ENTER: - theLayout->enterNotify (this, translateViewXToCanvasX (Fl::event_x ()), - translateViewYToCanvasY (Fl::event_y ()), + theLayout->enterNotify (this, + translateViewXToCanvasX (Fl::event_x () - x ()), + translateViewYToCanvasY (Fl::event_y () - y ()), getDwButtonState ()); return Fl_Group::handle (event); @@ -376,8 +378,10 @@ void FltkViewBase::drawLine (core::style::Color *color, int x1, int y1, int x2, int y2) { fl_color(((FltkColor*)color)->colors[shading]); - fl_line (translateCanvasXToViewX (x1), translateCanvasYToViewY (y1), - translateCanvasXToViewX (x2), translateCanvasYToViewY (y2)); + fl_line (x () + translateCanvasXToViewX (x1), + y () + translateCanvasYToViewY (y1), + x () + translateCanvasXToViewX (x2), + y () + translateCanvasYToViewY (y2)); } void FltkViewBase::drawTypedLine (core::style::Color *color, @@ -416,22 +420,22 @@ void FltkViewBase::drawTypedLine (core::style::Color *color, void FltkViewBase::drawRectangle (core::style::Color *color, core::style::Color::Shading shading, bool filled, - int x, int y, int width, int height) + int X, int Y, int width, int height) { fl_color(((FltkColor*)color)->colors[shading]); if (width < 0) { - x += width; + X += width; width = -width; } if (height < 0) { - y += height; + Y += height; height = -height; } - int x1 = translateCanvasXToViewX (x); - int y1 = translateCanvasYToViewY (y); - int x2 = translateCanvasXToViewX (x + width); - int y2 = translateCanvasYToViewY (y + height); + int x1 = translateCanvasXToViewX (X); + int y1 = translateCanvasYToViewY (Y); + int x2 = translateCanvasXToViewX (X + width); + int y2 = translateCanvasYToViewY (Y + height); #if 0 PORT1.3 @@ -443,9 +447,9 @@ PORT1.3 #endif if (filled) - fl_rectf (x1, y1, x2 - x1, y2 - y1); + fl_rectf (x () + x1, y () + y1, x2 - x1, y2 - y1); else - fl_rect (x1, y1, x2 - x1, y2 - y1); + fl_rect (x () + x1, y () + y1, x2 - x1, y2 - y1); } void FltkViewBase::drawArc (core::style::Color *color, @@ -535,7 +539,7 @@ PORT1.3 void FltkWidgetView::drawText (core::style::Font *font, core::style::Color *color, core::style::Color::Shading shading, - int x, int y, const char *text, int len) + int X, int Y, const char *text, int len) { FltkFont *ff = (FltkFont*)font; fl_font(ff->font, ff->size); @@ -543,11 +547,11 @@ void FltkWidgetView::drawText (core::style::Font *font, if (!font->letterSpacing && !font->fontVariant) { fl_draw(text, len, - translateCanvasXToViewX (x), translateCanvasYToViewY (y)); + x () + translateCanvasXToViewX (X), y () + translateCanvasYToViewY (Y)); } else { /* Nonzero letter spacing adjustment, draw each glyph individually */ - int viewX = translateCanvasXToViewX (x), - viewY = translateCanvasYToViewY (y); + int viewX = translateCanvasXToViewX (X), + viewY = translateCanvasYToViewY (Y); int curr = 0, next = 0, nb; char chbuf[4]; wchar_t wc, wcu; @@ -560,7 +564,7 @@ void FltkWidgetView::drawText (core::style::Font *font, if ((wcu = towupper(wc)) == wc) { /* already uppercase, just draw the character */ fl_font(ff->font, ff->size); - fl_draw(text + curr, next - curr, viewX, viewY); + fl_draw(text + curr, next - curr, x () + viewX, y () + viewY); viewX += font->letterSpacing; viewX += (int)fl_width(text + curr, next - curr); } else { @@ -570,7 +574,7 @@ PORT1.3 nb = utf8encode(wcu, chbuf); #endif fl_font(ff->font, sc_fontsize); - fl_draw(chbuf, nb, viewX, viewY); + fl_draw(chbuf, nb, x() + viewX, y () + viewY); viewX += font->letterSpacing; viewX += (int)fl_width(chbuf, nb); } @@ -578,7 +582,7 @@ PORT1.3 } else { while (next < len) { next = theLayout->nextGlyph(text, curr); - fl_draw(text + curr, next - curr, viewX, viewY); + fl_draw(text + curr, next - curr, x () + viewX, y () + viewY); viewX += font->letterSpacing + (int)fl_width(text + curr,next - curr); curr = next; @@ -588,12 +592,12 @@ PORT1.3 } void FltkWidgetView::drawImage (core::Imgbuf *imgbuf, int xRoot, int yRoot, - int x, int y, int width, int height) + int X, int Y, int width, int height) { ((FltkImgbuf*)imgbuf)->draw (this, - translateCanvasXToViewX (xRoot), - translateCanvasYToViewY (yRoot), - x, y, width, height); + x () + translateCanvasXToViewX (xRoot), + y () + translateCanvasYToViewY (yRoot), + X, Y, width, height); } bool FltkWidgetView::usesFltkWidgets () diff --git a/dw/fltkviewport.cc b/dw/fltkviewport.cc index 259fd5fd..a50be898 100644 --- a/dw/fltkviewport.cc +++ b/dw/fltkviewport.cc @@ -34,15 +34,15 @@ using namespace lout::container::typed; namespace dw { namespace fltk { -FltkViewport::FltkViewport (int x, int y, int w, int h, const char *label): - FltkWidgetView (x, y, w, h, label) +FltkViewport::FltkViewport (int X, int Y, int W, int H, const char *label): + FltkWidgetView (X, Y, W, H, label) { - hscrollbar = new Fl_Scrollbar (0, 0, 1, 1); + hscrollbar = new Fl_Scrollbar (x (), y (), 1, 1); hscrollbar->type(FL_HORIZONTAL); hscrollbar->callback (hscrollbarCallback, this); add (hscrollbar); - vscrollbar = new Fl_Scrollbar (0, 0, 1, 1); + vscrollbar = new Fl_Scrollbar (x (), y(), 1, 1); vscrollbar->type(FL_VERTICAL); vscrollbar->callback (vscrollbarCallback, this); add (vscrollbar); @@ -92,24 +92,25 @@ void FltkViewport::adjustScrollbarsAndGadgetsAllocation () vdiff = hscrollbar->visible () ? SCROLLBAR_THICKNESS : 0; } - hscrollbar->resize(0, h () - SCROLLBAR_THICKNESS, + hscrollbar->resize(x (), y () + h () - SCROLLBAR_THICKNESS, w () - hdiff, SCROLLBAR_THICKNESS); - vscrollbar->resize(w () - SCROLLBAR_THICKNESS, 0, + vscrollbar->resize(x () + w () - SCROLLBAR_THICKNESS, y (), SCROLLBAR_THICKNESS, h () - vdiff); - int x = w () - SCROLLBAR_THICKNESS, y = h () - SCROLLBAR_THICKNESS; + int X = x () + w () - SCROLLBAR_THICKNESS; + int Y = y () + h () - SCROLLBAR_THICKNESS; for (Iterator <TypedPointer < Fl_Widget> > it = gadgets->iterator (); it.hasNext (); ) { Fl_Widget *widget = it.getNext()->getTypedValue (); - widget->resize(0, 0, SCROLLBAR_THICKNESS, SCROLLBAR_THICKNESS); + widget->resize(x (), y (), SCROLLBAR_THICKNESS, SCROLLBAR_THICKNESS); switch (gadgetOrientation [visibility]) { case GADGET_VERTICAL: - y -= SCROLLBAR_THICKNESS; + Y -= SCROLLBAR_THICKNESS; break; case GADGET_HORIZONTAL: - x -= SCROLLBAR_THICKNESS; + X -= SCROLLBAR_THICKNESS; break; } } @@ -179,13 +180,13 @@ void FltkViewport::draw () if (d & FL_DAMAGE_SCROLL) { Fl::damage (FL_DAMAGE_SCROLL); - fl_scroll(0, 0, w () - hdiff, h () - vdiff, -scrollDX, -scrollDY, draw_area, this); + fl_scroll(x(), y(), w () - hdiff, h () - vdiff, -scrollDX, -scrollDY, draw_area, this); d &= ~FL_DAMAGE_SCROLL; Fl::damage (d); } if (d) { - draw_area(this, 0, 0, w () - hdiff, h () - vdiff); + draw_area(this, x(), y(), w () - hdiff, h () - vdiff); if (d == FL_DAMAGE_CHILD) { if (hscrollbar->damage ()) |