Author: manolo
Date: 2012-05-15 02:31:29 -0700 (Tue, 15 May 2012)
New Revision: 9496
Log:
Completed compatibility with FLTK1 in relation to group-relative FLTK3
coordinates.
Modified:
branches/branch-3.0/include/FL/Fl_Widget.H
branches/branch-3.0/include/fltk3/Wrapper.h
Modified: branches/branch-3.0/include/FL/Fl_Widget.H
===================================================================
--- branches/branch-3.0/include/FL/Fl_Widget.H 2012-05-14 21:39:08 UTC (rev
9495)
+++ branches/branch-3.0/include/FL/Fl_Widget.H 2012-05-15 09:31:29 UTC (rev
9496)
@@ -106,11 +106,11 @@
}
void x(int v) {
- ((fltk3::Widget_I*)_p)->x(v);
+ ((fltk3::Widget_I*)_p)->x(_ctor_dx(v));
}
void y(int v) {
- ((fltk3::Widget_I*)_p)->y(v);
+ ((fltk3::Widget_I*)_p)->y(_ctor_dy(v));
}
void w(int v) {
@@ -134,11 +134,15 @@
}
void draw_box() const {
+ fltk3::push_origin(); fltk3::origin(x(), y());
((fltk3::Widget_I*)_p)->draw_box();
+ fltk3::pop_origin();
}
void draw_box(Fl_Boxtype t, Fl_Color c) const {
+ fltk3::push_origin(); fltk3::origin(x(), y());
((fltk3::Widget_I*)_p)->draw_box(fltk3::_1to3_boxtype(t),
fltk3::_1to3_color(c));
+ fltk3::pop_origin();
}
void draw_box(Fl_Boxtype t, int x,int y,int w,int h, Fl_Color c) const {
@@ -146,7 +150,9 @@
}
void draw_backdrop() const {
+ fltk3::push_origin(); fltk3::origin(x(), y());
((fltk3::Widget_I*)_p)->draw_backdrop();
+ fltk3::pop_origin();
}
void draw_focus() {
@@ -158,7 +164,9 @@
}
void draw_label() const {
+ fltk3::push_origin(); fltk3::origin(x(), y());
((fltk3::Widget_I*)_p)->draw_label();
+ fltk3::pop_origin();
}
void draw_label(int x, int y, int w, int h) const {
@@ -201,6 +209,7 @@
_p->wrapper(this);
}
+
virtual Fl_Group* as_group() {return 0;}
virtual Fl_Window* as_window() {return 0;}
@@ -228,11 +237,11 @@
}
int x() const {
- return ((fltk3::Widget_I*)_p)->x();
+ return ((fltk3::Widget_I*)_p)->dx_window();
}
int y() const {
- return ((fltk3::Widget_I*)_p)->y();
+ return ((fltk3::Widget_I*)_p)->dy_window();
}
int w() const {
@@ -246,11 +255,15 @@
int damage_resize(int,int,int,int);
void position(int x, int y) {
- ((fltk3::Widget_I*)_p)->position(x, y);;
+ if (!as_window() || !window()) { // except for top windows
+ x = _ctor_dx(x); // transform to group-relative coords
+ y = _ctor_dy(y);
+ }
+ ((fltk3::Widget_I*)_p)->position(x, y);
}
void size(int w, int h) {
- ((fltk3::Widget_I*)_p)->size(w, h);;
+ ((fltk3::Widget_I*)_p)->size(w, h);
}
Fl_Align align() const {
Modified: branches/branch-3.0/include/fltk3/Wrapper.h
===================================================================
--- branches/branch-3.0/include/fltk3/Wrapper.h 2012-05-14 21:39:08 UTC (rev
9495)
+++ branches/branch-3.0/include/fltk3/Wrapper.h 2012-05-15 09:31:29 UTC (rev
9496)
@@ -151,21 +151,6 @@
}
*/
-#define FLTK3_WRAPPER_VCALLS_OBJECT_DRAW(type, klass, proto, call, flag) \
- virtual void proto { \
- if ( pVCalls & pVCall##type##flag ) { \
- fltk3::translate_origin(x(), y()); \
- ((fltk3::klass*)_p)->call; \
- fltk3::translate_origin(-x(), -y()); \
- } else { \
- pVCalls |= pVCall##type##flag; \
- fltk3::translate_origin(x(), y()); \
- ((fltk3::klass*)_p)->call; \
- fltk3::translate_origin(-x(), -y()); \
- pVCalls &= ~pVCall##type##flag; \
- } \
- }
-
#define FLTK3_WRAPPER_VCALLS_OBJECT(type, klass, proto, call, flag) \
virtual void proto { \
if ( pVCalls & pVCall##type##flag ) { \
@@ -205,16 +190,6 @@
return; \
}
-#define FLTK3_OBJECT_VCALLS_WRAPPER_DRAW(type, call, flag) \
- if (pWrapper && !(pWrapper->pVCalls & Wrapper::pVCall##type##flag) ) { \
- pWrapper->pVCalls |= Wrapper::pVCall##type##flag; \
- fltk3::translate_origin(-x(), -y()); \
- ((type##Wrapper*)pWrapper)->call; \
- fltk3::translate_origin(x(), y()); \
- pWrapper->pVCalls &= ~Wrapper::pVCall##type##flag; \
- return; \
- }
-
#define FLTK3_OBJECT_VCALLS_WRAPPER(type, call, flag) \
if (pWrapper && !(pWrapper->pVCalls & Wrapper::pVCall##type##flag) ) { \
pWrapper->pVCalls |= Wrapper::pVCall##type##flag; \
@@ -261,12 +236,27 @@
type3::hide(); \
} \
void resize(int X, int Y, int W, int H) { \
- FLTK3_WIDGET_VCALLS_WRAPPER(resize(X, Y, W, H), Resize) \
- type3::resize(X, Y, W, H); \
+ if (pWrapper && !(pWrapper->pVCalls & Wrapper::pVCallWidgetResize) ) { \
+ pWrapper->pVCalls |= Wrapper::pVCallWidgetResize; \
+ ((WidgetWrapper*)pWrapper)->resize(X + origin_x(), Y + origin_y(), W,
H); \
+ pWrapper->pVCalls &= ~Wrapper::pVCallWidgetResize; \
+ return; \
+ } \
+ type3::resize(X - origin_x(), Y - origin_y(), W, H); \
} \
void draw() { \
- FLTK3_OBJECT_VCALLS_WRAPPER_DRAW(Widget, draw(), Draw) \
- type3::draw(); \
+ if (pWrapper && !(pWrapper->pVCalls & Wrapper::pVCallWidgetDraw) ) { \
+ pWrapper->pVCalls |= Wrapper::pVCallWidgetDraw; \
+ push_origin(); origin(0, 0); \
+ ((WidgetWrapper*)pWrapper)->draw(); \
+ pop_origin(); \
+ pWrapper->pVCalls &= ~Wrapper::pVCallWidgetDraw; \
+ return; \
+ } \
+ push_origin(); \
+ origin( as_window()?0:dx_window(), as_window()?0:dy_window() ); \
+ type3::draw(); \
+ pop_origin(); \
} \
int handle(int event) { \
FLTK3_WIDGET_VCALLS_WRAPPER_RET(int, handle(event), Handle) \
@@ -349,7 +339,7 @@
FLTK3_WRAPPER_VCALLS_OBJECT_DTOR(type1, type3##_I) \
FLTK3_WRAPPER_VCALLS_WIDGET(type3##_I, show(), show(), Show) \
FLTK3_WRAPPER_VCALLS_WIDGET(type3##_I, hide(), hide(), Hide) \
- FLTK3_WRAPPER_VCALLS_OBJECT_DRAW(Widget, type3##_I, draw(), draw(), Draw) \
+ FLTK3_WRAPPER_VCALLS_WIDGET(type3##_I, draw(), draw(), Draw) \
FLTK3_WRAPPER_VCALLS_WIDGET(type3##_I, resize(int x, int y, int w, int h),
resize(x, y, w, h), Resize) \
FLTK3_WRAPPER_VCALLS_WIDGET_RET(int, type3##_I, handle(int event),
handle(event), Handle)
@@ -358,18 +348,7 @@
FLTK3_WIDGET_VCALLS(type1, type3) \
FLTK3_WRAPPER_VCALLS_WIDGET(type3##_I, draw_overlay(), draw_overlay(),
DrawOverlay)
-/*
#define FLTK3_IMAGE_VCALLS(type1, type3) \
- FLTK3_WRAPPER_VCALLS_OBJECT_DTOR(type1, type3##_I) \
- FLTK3_WRAPPER_VCALLS_IMAGE_RET(fltk3::Image *, type3##_I, copy(int w, int
h), copy(w, h), CopyWH) \
- FLTK3_WRAPPER_VCALLS_IMAGE(type3##_I, color_average(Fl_Color c, float i),
color_average(fltk3::_1to3_color(c), i), ColorAverage) \
- FLTK3_WRAPPER_VCALLS_IMAGE(type3##_I, desaturate(), desaturate(),
Desaturate) \
- FLTK3_WRAPPER_VCALLS_IMAGE(type3##_I, label(Fl_Widget *w),
label(fltk3::_1to3_widget(w)), LabelW) \
- FLTK3_WRAPPER_VCALLS_IMAGE(type3##_I, label(Fl_Menu_Item *w),
label((fltk3::MenuItem*)w), LabelM) \
- FLTK3_WRAPPER_VCALLS_IMAGE(type3##_I, draw(int X, int Y, int W, int H, int
cx=0, int cy=0), draw(X, Y, W, H, cx, cy), Draw) \
- FLTK3_WRAPPER_VCALLS_IMAGE(type3##_I, uncache(), uncache(), Uncache)
-*/
-#define FLTK3_IMAGE_VCALLS(type1, type3) \
FLTK3_WRAPPER_VCALLS_OBJECT_DTOR(type1, type3##_I) \
FLTK3_WRAPPER_VCALLS_IMAGE(type3##_I, color_average(Fl_Color c, float i),
color_average(fltk3::_1to3_color(c), i), ColorAverage) \
FLTK3_WRAPPER_VCALLS_IMAGE(type3##_I, desaturate(), desaturate(), Desaturate) \
_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit