All widget coordinates are now 32 bit. Beware though, on a 16 bit graphics system, line drawing and window positioning is still messed up for coordinates beyond 16 bit. See STR #1929.

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@6112 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Matthias Melcher
2008-04-23 15:07:13 +00:00
parent 8683ea2c81
commit 88c0d727aa
6 changed files with 19 additions and 17 deletions
+1
View File
@@ -1,5 +1,6 @@
CHANGES IN FLTK 1.3.0 CHANGES IN FLTK 1.3.0
- changed widget coordinates to 32 bit
- added support for shortcuts for Fl_Input_, - added support for shortcuts for Fl_Input_,
Fl_Value_Input, and Fl_Text_Display derived Fl_Value_Input, and Fl_Text_Display derived
widgets (STR #1770) widgets (STR #1770)
+2 -2
View File
@@ -38,7 +38,7 @@ class FL_EXPORT Fl_Group : public Fl_Widget {
Fl_Widget* savedfocus_; Fl_Widget* savedfocus_;
Fl_Widget* resizable_; Fl_Widget* resizable_;
int children_; int children_;
short *sizes_; // remembered initial sizes of children int *sizes_; // remembered initial sizes of children
int navigation(int); int navigation(int);
static Fl_Group *current_; static Fl_Group *current_;
@@ -58,7 +58,7 @@ protected:
void draw_children(); void draw_children();
void draw_outside_label(const Fl_Widget&) const ; void draw_outside_label(const Fl_Widget&) const ;
void update_child(Fl_Widget&) const; void update_child(Fl_Widget&) const;
short* sizes(); int *sizes();
public: public:
+5 -5
View File
@@ -58,7 +58,7 @@ class FL_EXPORT Fl_Widget {
Fl_Group* parent_; Fl_Group* parent_;
Fl_Callback* callback_; Fl_Callback* callback_;
void* user_data_; void* user_data_;
short x_,y_,w_,h_; int x_,y_,w_,h_;
Fl_Label label_; Fl_Label label_;
int flags_; int flags_;
unsigned color_; unsigned color_;
@@ -79,10 +79,10 @@ protected:
Fl_Widget(int,int,int,int,const char* =0); Fl_Widget(int,int,int,int,const char* =0);
void x(int v) {x_ = (short)v;} void x(int v) {x_ = v;}
void y(int v) {y_ = (short)v;} void y(int v) {y_ = v;}
void w(int v) {w_ = (short)v;} void w(int v) {w_ = v;}
void h(int v) {h_ = (short)v;} void h(int v) {h_ = v;}
int flags() const {return flags_;} int flags() const {return flags_;}
void set_flag(int c) {flags_ |= c;} void set_flag(int c) {flags_ |= c;}
+4 -3
View File
@@ -44,8 +44,9 @@ class FL_EXPORT Fl_Window : public Fl_Group {
const char* xclass_; const char* xclass_;
const void* icon_; const void* icon_;
// size_range stuff: // size_range stuff:
short minw, minh, maxw, maxh; int minw, minh, maxw, maxh;
uchar dw, dh, aspect, size_range_set; int dw, dh, aspect;
uchar size_range_set;
// cursor stuff // cursor stuff
Fl_Cursor cursor_default; Fl_Cursor cursor_default;
Fl_Color cursor_fg, cursor_bg; Fl_Color cursor_fg, cursor_bg;
@@ -94,7 +95,7 @@ public:
void hotspot(const Fl_Widget& p, int offscreen = 0) {hotspot(&p,offscreen);} void hotspot(const Fl_Widget& p, int offscreen = 0) {hotspot(&p,offscreen);}
void free_position() {clear_flag(FL_FORCE_POSITION);} void free_position() {clear_flag(FL_FORCE_POSITION);}
void size_range(int a, int b, int c=0, int d=0, int e=0, int f=0, int g=0) { void size_range(int a, int b, int c=0, int d=0, int e=0, int f=0, int g=0) {
minw=(short)a; minh=(short)b; maxw=(short)c; maxh=(short)d; dw=(uchar)e; dh=(uchar)f; aspect=(uchar)g; size_range_();} minw=a; minh=b; maxw=c; maxh=d; dw=e; dh=f; aspect=g; size_range_();}
const char* label() const {return Fl_Widget::label();} const char* label() const {return Fl_Widget::label();}
const char* iconlabel() const {return iconlabel_;} const char* iconlabel() const {return iconlabel_;}
+3 -3
View File
@@ -428,9 +428,9 @@ void Fl_Group::init_sizes() {
delete[] sizes_; sizes_ = 0; delete[] sizes_; sizes_ = 0;
} }
short* Fl_Group::sizes() { int *Fl_Group::sizes() {
if (!sizes_) { if (!sizes_) {
short* p = sizes_ = new short[4*(children_+2)]; int *p = sizes_ = new int[4*(children_+2)];
// first thing in sizes array is the group's size: // first thing in sizes array is the group's size:
if (type() < FL_WINDOW) {p[0] = x(); p[2] = y();} else {p[0] = p[2] = 0;} if (type() < FL_WINDOW) {p[0] = x(); p[2] = y();} else {p[0] = p[2] = 0;}
p[1] = p[0]+w(); p[3] = p[2]+h(); p[1] = p[0]+w(); p[3] = p[2]+h();
@@ -477,7 +477,7 @@ void Fl_Group::resize(int X, int Y, int W, int H) {
} else if (children_) { } else if (children_) {
short* p = sizes(); int *p = sizes();
// get changes in size/position from the initial size: // get changes in size/position from the initial size:
int dx = X - p[0]; int dx = X - p[0];
+4 -4
View File
@@ -39,7 +39,7 @@
void Fl_Tile::position(int oix, int oiy, int newx, int newy) { void Fl_Tile::position(int oix, int oiy, int newx, int newy) {
Fl_Widget*const* a = array(); Fl_Widget*const* a = array();
short* p = sizes(); int *p = sizes();
p += 8; // skip group & resizable's saved size p += 8; // skip group & resizable's saved size
for (int i=children(); i--; p += 4) { for (int i=children(); i--; p += 4) {
Fl_Widget* o = *a++; Fl_Widget* o = *a++;
@@ -73,7 +73,7 @@ void Fl_Tile::resize(int X,int Y,int W,int H) {
int dy = Y-y(); int dy = Y-y();
int dw = W-w(); int dw = W-w();
int dh = H-h(); int dh = H-h();
short* p = sizes(); int *p = sizes();
// resize this (skip the Fl_Group resize): // resize this (skip the Fl_Group resize):
Fl_Widget::resize(X,Y,W,H); Fl_Widget::resize(X,Y,W,H);
// find bottom-right of resiable: // find bottom-right of resiable:
@@ -138,8 +138,8 @@ int Fl_Tile::handle(int event) {
int oldx = 0; int oldx = 0;
int oldy = 0; int oldy = 0;
Fl_Widget*const* a = array(); Fl_Widget*const* a = array();
short* q = sizes(); int *q = sizes();
short* p = q+8; int *p = q+8;
for (int i=children(); i--; p += 4) { for (int i=children(); i--; p += 4) {
Fl_Widget* o = *a++; Fl_Widget* o = *a++;
if (o == resizable()) continue; if (o == resizable()) continue;