Move the rest of the image file formats (except for XBM and XPM) to

the fltk_images library; saves about 16k in the FLTK core library on my
Intel system.

Fix a memory leak bug in most of the fl_set_fonts*.cxx implementations;
as a result, the Fl_Fontdesc structure now has a fontname member to old
the human-readable font name.

Lots of fixes for shadowed variables, etc.

Use snprintf, strlcpy, and strlcat in more places.


git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@2566 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Michael R Sweet 2002-08-09 01:09:49 +00:00
parent 27a54dc22b
commit a6b935289e
55 changed files with 1107 additions and 1096 deletions

10
CHANGES
View File

@ -1,6 +1,16 @@
CHANGES IN FLTK 1.1.0 CHANGES IN FLTK 1.1.0
- Documentation updates. - Documentation updates.
- More snprintf/strlcpy/strlcat changes where needed.
- Fl::get_font_name() would leak 128 bytes.
- Eliminated most of the "shadowed" variables to avoid
potential problems with using the wrong copy of "foo"
in a class method.
- Moved Fl_BMP_Image, Fl_GIF_Image, and Fl_PNM_Image to
the fltk_images library, so the only image formats
that are supported by the core library are XBM and XPM
files. This reduces the size of the FLTK core library
by about 16k...
- The Fl_Text_Display::resize() method was incorrectly - The Fl_Text_Display::resize() method was incorrectly
flagged as protected. flagged as protected.
- Fixed some memory/initialization bugs in - Fixed some memory/initialization bugs in

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl.H,v 1.8.2.11.2.19 2002/07/30 14:57:02 easysw Exp $" // "$Id: Fl.H,v 1.8.2.11.2.20 2002/08/09 01:09:48 easysw Exp $"
// //
// Main header file for the Fast Light Tool Kit (FLTK). // Main header file for the Fast Light Tool Kit (FLTK).
// //
@ -69,7 +69,7 @@ public: // should be private!
static int compose_state; static int compose_state;
static int visible_focus_; static int visible_focus_;
static int dnd_text_ops_; static int dnd_text_ops_;
static void damage(int x) {damage_ = x;} static void damage(int d) {damage_ = d;}
static void (*idle)(); static void (*idle)();
@ -237,7 +237,7 @@ public:
static int event_button2() {return e_state&FL_BUTTON2;} static int event_button2() {return e_state&FL_BUTTON2;}
static int event_button3() {return e_state&FL_BUTTON3;} static int event_button3() {return e_state&FL_BUTTON3;}
static void set_idle(void (*cb)()) {idle = cb;} static void set_idle(void (*cb)()) {idle = cb;}
static void grab(Fl_Window&w) {grab(&w);} static void grab(Fl_Window&win) {grab(&win);}
static void release() {grab(0);} static void release() {grab(0);}
// Visible focus methods... // Visible focus methods...
@ -258,5 +258,5 @@ public:
#endif // !Fl_H #endif // !Fl_H
// //
// End of "$Id: Fl.H,v 1.8.2.11.2.19 2002/07/30 14:57:02 easysw Exp $". // End of "$Id: Fl.H,v 1.8.2.11.2.20 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Adjuster.H,v 1.5.2.3.2.1 2002/01/01 15:11:27 easysw Exp $" // "$Id: Fl_Adjuster.H,v 1.5.2.3.2.2 2002/08/09 01:09:48 easysw Exp $"
// //
// Adjuster widget header file for the Fast Light Tool Kit (FLTK). // Adjuster widget header file for the Fast Light Tool Kit (FLTK).
// //
@ -41,13 +41,13 @@ protected:
FL_EXPORT int handle(int); FL_EXPORT int handle(int);
FL_EXPORT void value_damage(); FL_EXPORT void value_damage();
public: public:
FL_EXPORT Fl_Adjuster(int x,int y,int w,int h,const char *l=0); FL_EXPORT Fl_Adjuster(int X,int Y,int W,int H,const char *l=0);
FL_EXPORT void soft(int x) {soft_ = x;} FL_EXPORT void soft(int s) {soft_ = s;}
FL_EXPORT int soft() const {return soft_;} FL_EXPORT int soft() const {return soft_;}
}; };
#endif #endif
// //
// End of "$Id: Fl_Adjuster.H,v 1.5.2.3.2.1 2002/01/01 15:11:27 easysw Exp $". // End of "$Id: Fl_Adjuster.H,v 1.5.2.3.2.2 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Box.H,v 1.5.2.4.2.2 2002/04/12 20:16:07 easysw Exp $" // "$Id: Fl_Box.H,v 1.5.2.4.2.3 2002/08/09 01:09:48 easysw Exp $"
// //
// Box header file for the Fast Light Tool Kit (FLTK). // Box header file for the Fast Light Tool Kit (FLTK).
// //
@ -34,10 +34,10 @@ class Fl_Box : public Fl_Widget {
protected: protected:
FL_EXPORT void draw(); FL_EXPORT void draw();
public: public:
FL_EXPORT Fl_Box(int x, int y, int w, int h, const char *l=0) FL_EXPORT Fl_Box(int X, int Y, int W, int H, const char *l=0)
: Fl_Widget(x,y,w,h,l) {} : Fl_Widget(X,Y,W,H,l) {}
FL_EXPORT Fl_Box(Fl_Boxtype b, int x, int y, int w, int h, const char *l) FL_EXPORT Fl_Box(Fl_Boxtype b, int X, int Y, int W, int H, const char *l)
: Fl_Widget(x,y,w,h,l) {box(b);} : Fl_Widget(X,Y,W,H,l) {box(b);}
virtual FL_EXPORT int handle(int); virtual FL_EXPORT int handle(int);
}; };
@ -45,5 +45,5 @@ public:
#endif #endif
// //
// End of "$Id: Fl_Box.H,v 1.5.2.4.2.2 2002/04/12 20:16:07 easysw Exp $". // End of "$Id: Fl_Box.H,v 1.5.2.4.2.3 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Menu_.H,v 1.7.2.4.2.2 2002/01/01 15:11:27 easysw Exp $" // "$Id: Fl_Menu_.H,v 1.7.2.4.2.3 2002/08/09 01:09:48 easysw Exp $"
// //
// Menu base class header file for the Fast Light Tool Kit (FLTK). // Menu base class header file for the Fast Light Tool Kit (FLTK).
// //
@ -65,7 +65,7 @@ public:
FL_EXPORT void replace(int,const char *); FL_EXPORT void replace(int,const char *);
FL_EXPORT void remove(int); FL_EXPORT void remove(int);
void shortcut(int i, int s) {menu_[i].shortcut(s);} void shortcut(int i, int s) {menu_[i].shortcut(s);}
void mode(int i,int x) {menu_[i].flags = x;} void mode(int i,int fl) {menu_[i].flags = fl;}
int mode(int i) const {return menu_[i].flags;} int mode(int i) const {return menu_[i].flags;}
const Fl_Menu_Item *mvalue() const {return value_;} const Fl_Menu_Item *mvalue() const {return value_;}
@ -93,5 +93,5 @@ public:
#endif #endif
// //
// End of "$Id: Fl_Menu_.H,v 1.7.2.4.2.2 2002/01/01 15:11:27 easysw Exp $". // End of "$Id: Fl_Menu_.H,v 1.7.2.4.2.3 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Menu_Bar.H,v 1.5.2.4.2.1 2002/01/01 15:11:27 easysw Exp $" // "$Id: Fl_Menu_Bar.H,v 1.5.2.4.2.2 2002/08/09 01:09:48 easysw Exp $"
// //
// Menu bar header file for the Fast Light Tool Kit (FLTK). // Menu bar header file for the Fast Light Tool Kit (FLTK).
// //
@ -33,12 +33,12 @@ protected:
FL_EXPORT void draw(); FL_EXPORT void draw();
public: public:
FL_EXPORT int handle(int); FL_EXPORT int handle(int);
Fl_Menu_Bar(int x,int y,int w,int h,const char *l=0) Fl_Menu_Bar(int X, int Y, int W, int H,const char *l=0)
: Fl_Menu_(x,y,w,h,l) {} : Fl_Menu_(X,Y,W,H,l) {}
}; };
#endif #endif
// //
// End of "$Id: Fl_Menu_Bar.H,v 1.5.2.4.2.1 2002/01/01 15:11:27 easysw Exp $". // End of "$Id: Fl_Menu_Bar.H,v 1.5.2.4.2.2 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Pixmap.H,v 1.6.2.8.2.8 2002/08/05 17:50:23 easysw Exp $" // "$Id: Fl_Pixmap.H,v 1.6.2.8.2.9 2002/08/09 01:09:48 easysw Exp $"
// //
// Pixmap header file for the Fast Light Tool Kit (FLTK). // Pixmap header file for the Fast Light Tool Kit (FLTK).
// //
@ -50,10 +50,10 @@ class FL_EXPORT Fl_Pixmap : public Fl_Image {
Fl_Offscreen id; // for internal use Fl_Offscreen id; // for internal use
Fl_Bitmask mask; // for internal use (mask bitmap) Fl_Bitmask mask; // for internal use (mask bitmap)
explicit Fl_Pixmap(char * const * d) : Fl_Image(-1,0,1), alloc_data(0), id(0), mask(0) {set_data((const char*const*)d); measure();} explicit Fl_Pixmap(char * const * D) : Fl_Image(-1,0,1), alloc_data(0), id(0), mask(0) {set_data((const char*const*)D); measure();}
explicit Fl_Pixmap(uchar* const * d) : Fl_Image(-1,0,1), alloc_data(0), id(0), mask(0) {set_data((const char*const*)d); measure();} explicit Fl_Pixmap(uchar* const * D) : Fl_Image(-1,0,1), alloc_data(0), id(0), mask(0) {set_data((const char*const*)D); measure();}
explicit Fl_Pixmap(const char * const * d) : Fl_Image(-1,0,1), alloc_data(0), id(0), mask(0) {set_data((const char*const*)d); measure();} explicit Fl_Pixmap(const char * const * D) : Fl_Image(-1,0,1), alloc_data(0), id(0), mask(0) {set_data((const char*const*)D); measure();}
explicit Fl_Pixmap(const uchar* const * d) : Fl_Image(-1,0,1), alloc_data(0), id(0), mask(0) {set_data((const char*const*)d); measure();} explicit Fl_Pixmap(const uchar* const * D) : Fl_Image(-1,0,1), alloc_data(0), id(0), mask(0) {set_data((const char*const*)D); measure();}
virtual ~Fl_Pixmap(); virtual ~Fl_Pixmap();
virtual Fl_Image *copy(int W, int H); virtual Fl_Image *copy(int W, int H);
Fl_Image *copy() { return copy(w(), h()); } Fl_Image *copy() { return copy(w(), h()); }
@ -69,5 +69,5 @@ class FL_EXPORT Fl_Pixmap : public Fl_Image {
#endif #endif
// //
// End of "$Id: Fl_Pixmap.H,v 1.6.2.8.2.8 2002/08/05 17:50:23 easysw Exp $". // End of "$Id: Fl_Pixmap.H,v 1.6.2.8.2.9 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Return_Button.H,v 1.5.2.3.2.1 2002/01/01 15:11:28 easysw Exp $" // "$Id: Fl_Return_Button.H,v 1.5.2.3.2.2 2002/08/09 01:09:48 easysw Exp $"
// //
// Return button header file for the Fast Light Tool Kit (FLTK). // Return button header file for the Fast Light Tool Kit (FLTK).
// //
@ -32,12 +32,12 @@ protected:
FL_EXPORT void draw(); FL_EXPORT void draw();
public: public:
FL_EXPORT int handle(int); FL_EXPORT int handle(int);
Fl_Return_Button(int x,int y,int w,int h,const char *l=0) Fl_Return_Button(int X, int Y, int W, int H,const char *l=0)
: Fl_Button(x,y,w,h,l) {} : Fl_Button(X,Y,W,H,l) {}
}; };
#endif #endif
// //
// End of "$Id: Fl_Return_Button.H,v 1.5.2.3.2.1 2002/01/01 15:11:28 easysw Exp $". // End of "$Id: Fl_Return_Button.H,v 1.5.2.3.2.2 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Scrollbar.H,v 1.5.2.4.2.1 2002/01/01 15:11:28 easysw Exp $" // "$Id: Fl_Scrollbar.H,v 1.5.2.4.2.2 2002/08/09 01:09:48 easysw Exp $"
// //
// Scroll bar header file for the Fast Light Tool Kit (FLTK). // Scroll bar header file for the Fast Light Tool Kit (FLTK).
// //
@ -43,8 +43,8 @@ public:
FL_EXPORT int handle(int); FL_EXPORT int handle(int);
int value() {return int(Fl_Slider::value());} int value() {return int(Fl_Slider::value());}
int value(int position, int size, int top, int total) { int value(int p, int s, int top, int total) {
return scrollvalue(position, size, top, total); return scrollvalue(p, s, top, total);
} }
int linesize() const {return linesize_;} int linesize() const {return linesize_;}
void linesize(int i) {linesize_ = i;} void linesize(int i) {linesize_ = i;}
@ -54,5 +54,5 @@ public:
#endif #endif
// //
// End of "$Id: Fl_Scrollbar.H,v 1.5.2.4.2.1 2002/01/01 15:11:28 easysw Exp $". // End of "$Id: Fl_Scrollbar.H,v 1.5.2.4.2.2 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Value_Input.H,v 1.5.2.3.2.2 2002/01/01 15:11:28 easysw Exp $" // "$Id: Fl_Value_Input.H,v 1.5.2.3.2.3 2002/08/09 01:09:48 easysw Exp $"
// //
// Value input header file for the Fast Light Tool Kit (FLTK). // Value input header file for the Fast Light Tool Kit (FLTK).
// //
@ -42,7 +42,7 @@ public:
FL_EXPORT void resize(int,int,int,int); FL_EXPORT void resize(int,int,int,int);
FL_EXPORT Fl_Value_Input(int x,int y,int w,int h,const char *l=0); FL_EXPORT Fl_Value_Input(int x,int y,int w,int h,const char *l=0);
void soft(char x) {soft_ = x;} void soft(char s) {soft_ = s;}
char soft() const {return soft_;} char soft() const {return soft_;}
Fl_Font textfont() const {return input.textfont();} Fl_Font textfont() const {return input.textfont();}
@ -59,5 +59,5 @@ public:
#endif #endif
// //
// End of "$Id: Fl_Value_Input.H,v 1.5.2.3.2.2 2002/01/01 15:11:28 easysw Exp $". // End of "$Id: Fl_Value_Input.H,v 1.5.2.3.2.3 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Widget.H,v 1.6.2.4.2.15 2002/07/23 15:07:32 easysw Exp $" // "$Id: Fl_Widget.H,v 1.6.2.4.2.16 2002/08/09 01:09:48 easysw Exp $"
// //
// Widget header file for the Fast Light Tool Kit (FLTK). // Widget header file for the Fast Light Tool Kit (FLTK).
// //
@ -103,7 +103,7 @@ public:
FL_EXPORT virtual void draw() = 0; FL_EXPORT virtual void draw() = 0;
FL_EXPORT virtual int handle(int); FL_EXPORT virtual int handle(int);
Fl_Group* parent() const {return parent_;} Fl_Group* parent() const {return parent_;}
void parent(Fl_Group* w) {parent_ = w;} // for hacks only, Fl_Group::add() void parent(Fl_Group* p) {parent_ = p;} // for hacks only, Fl_Group::add()
uchar type() const {return type_;} uchar type() const {return type_;}
void type(uchar t) {type_ = t;} void type(uchar t) {type_ = t;}
@ -195,7 +195,7 @@ public:
FL_EXPORT void damage(uchar c); FL_EXPORT void damage(uchar c);
FL_EXPORT void damage(uchar c,int,int,int,int); FL_EXPORT void damage(uchar c,int,int,int,int);
FL_EXPORT void draw_label(int, int, int, int, Fl_Align) const; FL_EXPORT void draw_label(int, int, int, int, Fl_Align) const;
void measure_label(int& x, int& y) {label_.measure(x,y);} void measure_label(int& xx, int& yy) {label_.measure(xx,yy);}
FL_EXPORT Fl_Window* window() const ; FL_EXPORT Fl_Window* window() const ;
@ -212,5 +212,5 @@ public:
#endif #endif
// //
// End of "$Id: Fl_Widget.H,v 1.6.2.4.2.15 2002/07/23 15:07:32 easysw Exp $". // End of "$Id: Fl_Widget.H,v 1.6.2.4.2.16 2002/08/09 01:09:48 easysw Exp $".
// //

10
FL/x.H
View File

@ -1,5 +1,5 @@
// //
// "$Id: x.H,v 1.10.2.8.2.9 2002/04/15 12:19:01 easysw Exp $" // "$Id: x.H,v 1.10.2.8.2.10 2002/08/09 01:09:48 easysw Exp $"
// //
// X11 header file for the Fast Light Tool Kit (FLTK). // X11 header file for the Fast Light Tool Kit (FLTK).
// //
@ -114,15 +114,15 @@ public:
char wait_for_expose; char wait_for_expose;
char backbuffer_bad; // used for XDBE char backbuffer_bad; // used for XDBE
static FL_EXPORT Fl_X* first; static FL_EXPORT Fl_X* first;
static FL_EXPORT Fl_X* i(const Fl_Window* w) {return w->i;} static FL_EXPORT Fl_X* i(const Fl_Window* wi) {return wi->i;}
FL_EXPORT void setwindow(Fl_Window* wi) {w=wi; wi->i=this;} FL_EXPORT void setwindow(Fl_Window* wi) {w=wi; wi->i=this;}
FL_EXPORT void sendxjunk(); FL_EXPORT void sendxjunk();
static FL_EXPORT void make_xid(Fl_Window*,XVisualInfo* =fl_visual, Colormap=fl_colormap); static FL_EXPORT void make_xid(Fl_Window*,XVisualInfo* =fl_visual, Colormap=fl_colormap);
static FL_EXPORT Fl_X* set_xid(Fl_Window*, Window); static FL_EXPORT Fl_X* set_xid(Fl_Window*, Window);
// kludges to get around protection: // kludges to get around protection:
FL_EXPORT void flush() {w->flush();} FL_EXPORT void flush() {w->flush();}
static FL_EXPORT void x(Fl_Window* w, int X) {w->x(X);} static FL_EXPORT void x(Fl_Window* wi, int X) {wi->x(X);}
static FL_EXPORT void y(Fl_Window* w, int Y) {w->y(Y);} static FL_EXPORT void y(Fl_Window* wi, int Y) {wi->y(Y);}
}; };
// convert xid <-> Fl_Window: // convert xid <-> Fl_Window:
@ -138,5 +138,5 @@ extern FL_EXPORT int fl_parse_color(const char* p, uchar& r, uchar& g, uchar& b)
#endif #endif
// //
// End of "$Id: x.H,v 1.10.2.8.2.9 2002/04/15 12:19:01 easysw Exp $". // End of "$Id: x.H,v 1.10.2.8.2.10 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,7 +1,7 @@
dnl -*- sh -*- dnl -*- sh -*-
dnl the "configure" script is made from this by running GNU "autoconf" dnl the "configure" script is made from this by running GNU "autoconf"
dnl dnl
dnl "$Id: configure.in,v 1.33.2.31.2.82 2002/08/05 17:50:21 easysw Exp $" dnl "$Id: configure.in,v 1.33.2.31.2.83 2002/08/09 01:09:47 easysw Exp $"
dnl dnl
dnl Configuration script for the Fast Light Tool Kit (FLTK). dnl Configuration script for the Fast Light Tool Kit (FLTK).
dnl dnl
@ -615,7 +615,7 @@ if test -n "$GCC"; then
CXX="$CC" CXX="$CC"
# Show all warnings when compiling... # Show all warnings when compiling...
OPTIM="-Wall $OPTIM" OPTIM="-Wall -Wshadow -Wconversion -Winline $OPTIM"
# Set the default compiler optimizations... # Set the default compiler optimizations...
if test -z "$DEBUGFLAG"; then if test -z "$DEBUGFLAG"; then
@ -782,5 +782,5 @@ dnl Make sure the fltk-config script is executable...
chmod +x fltk-config chmod +x fltk-config
dnl dnl
dnl End of "$Id: configure.in,v 1.33.2.31.2.82 2002/08/05 17:50:21 easysw Exp $". dnl End of "$Id: configure.in,v 1.33.2.31.2.83 2002/08/09 01:09:47 easysw Exp $".
dnl dnl

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl.cxx,v 1.24.2.41.2.43 2002/07/23 15:07:33 easysw Exp $" // "$Id: Fl.cxx,v 1.24.2.41.2.44 2002/08/09 01:09:48 easysw Exp $"
// //
// Main event handling code for the Fast Light Tool Kit (FLTK). // Main event handling code for the Fast Light Tool Kit (FLTK).
// //
@ -73,10 +73,10 @@ Fl::version() {
// the given rectangle. // the given rectangle.
// //
int Fl::event_inside(int x,int y,int w,int h) /*const*/ { int Fl::event_inside(int xx,int yy,int ww,int hh) /*const*/ {
int mx = e_x - x; int mx = e_x - xx;
int my = e_y - y; int my = e_y - yy;
return (mx >= 0 && mx < w && my >= 0 && my < h); return (mx >= 0 && mx < ww && my >= 0 && my < hh);
} }
int Fl::event_inside(const Fl_Widget *o) /*const*/ { int Fl::event_inside(const Fl_Widget *o) /*const*/ {
@ -135,19 +135,19 @@ static void elapse_timeouts() {
// time interval: // time interval:
static double missed_timeout_by; static double missed_timeout_by;
void Fl::add_timeout(double time, Fl_Timeout_Handler cb, void *arg) { void Fl::add_timeout(double time, Fl_Timeout_Handler cb, void *argp) {
elapse_timeouts(); elapse_timeouts();
repeat_timeout(time, cb, arg); repeat_timeout(time, cb, argp);
} }
void Fl::repeat_timeout(double time, Fl_Timeout_Handler cb, void *arg) { void Fl::repeat_timeout(double time, Fl_Timeout_Handler cb, void *argp) {
time += missed_timeout_by; if (time < -.05) time = 0; time += missed_timeout_by; if (time < -.05) time = 0;
Timeout* t = free_timeout; Timeout* t = free_timeout;
if (t) free_timeout = t->next; if (t) free_timeout = t->next;
else t = new Timeout; else t = new Timeout;
t->time = time; t->time = time;
t->cb = cb; t->cb = cb;
t->arg = arg; t->arg = argp;
// insert-sort the new timeout: // insert-sort the new timeout:
Timeout** p = &first_timeout; Timeout** p = &first_timeout;
while (*p && (*p)->time <= time) p = &((*p)->next); while (*p && (*p)->time <= time) p = &((*p)->next);
@ -155,18 +155,18 @@ void Fl::repeat_timeout(double time, Fl_Timeout_Handler cb, void *arg) {
*p = t; *p = t;
} }
int Fl::has_timeout(Fl_Timeout_Handler cb, void *arg) { int Fl::has_timeout(Fl_Timeout_Handler cb, void *argp) {
for (Timeout* t = first_timeout; t; t = t->next) for (Timeout* t = first_timeout; t; t = t->next)
if (t->cb == cb && t->arg == arg) return 1; if (t->cb == cb && t->arg == argp) return 1;
return 0; return 0;
} }
void Fl::remove_timeout(Fl_Timeout_Handler cb, void *arg) { void Fl::remove_timeout(Fl_Timeout_Handler cb, void *argp) {
// This version removes all matching timeouts, not just the first one. // This version removes all matching timeouts, not just the first one.
// This may change in the future. // This may change in the future.
for (Timeout** p = &first_timeout; *p;) { for (Timeout** p = &first_timeout; *p;) {
Timeout* t = *p; Timeout* t = *p;
if (t->cb == cb && (t->arg == arg || !arg)) { if (t->cb == cb && (t->arg == argp || !argp)) {
*p = t->next; *p = t->next;
t->next = free_timeout; t->next = free_timeout;
free_timeout = t; free_timeout = t;
@ -191,21 +191,21 @@ struct Check {
}; };
static Check* first_check, *next_check, *free_check; static Check* first_check, *next_check, *free_check;
void Fl::add_check(Fl_Timeout_Handler cb, void *arg) { void Fl::add_check(Fl_Timeout_Handler cb, void *argp) {
Check* t = free_check; Check* t = free_check;
if (t) free_check = t->next; if (t) free_check = t->next;
else t = new Check; else t = new Check;
t->cb = cb; t->cb = cb;
t->arg = arg; t->arg = argp;
t->next = first_check; t->next = first_check;
if (next_check == first_check) next_check = t; if (next_check == first_check) next_check = t;
first_check = t; first_check = t;
} }
void Fl::remove_check(Fl_Timeout_Handler cb, void *arg) { void Fl::remove_check(Fl_Timeout_Handler cb, void *argp) {
for (Check** p = &first_check; *p;) { for (Check** p = &first_check; *p;) {
Check* t = *p; Check* t = *p;
if (t->cb == cb && t->arg == arg) { if (t->cb == cb && t->arg == argp) {
if (next_check == t) next_check = t->next; if (next_check == t) next_check = t->next;
*p = t->next; *p = t->next;
t->next = free_check; t->next = free_check;
@ -215,7 +215,7 @@ void Fl::remove_check(Fl_Timeout_Handler cb, void *arg) {
} }
} }
} }
//////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////
// wait/run/check/ready: // wait/run/check/ready:
@ -235,12 +235,12 @@ double Fl::wait(double time_to_wait) {
missed_timeout_by = t->time; missed_timeout_by = t->time;
// We must remove timeout from array before doing the callback: // We must remove timeout from array before doing the callback:
void (*cb)(void*) = t->cb; void (*cb)(void*) = t->cb;
void *arg = t->arg; void *argp = t->arg;
first_timeout = t->next; first_timeout = t->next;
t->next = free_timeout; t->next = free_timeout;
free_timeout = t; free_timeout = t;
// Now it is safe for the callback to do add_timeout: // Now it is safe for the callback to do add_timeout:
cb(arg); cb(argp);
} }
} else { } else {
reset_clock = 1; // we are not going to check the clock reset_clock = 1; // we are not going to check the clock
@ -249,9 +249,9 @@ double Fl::wait(double time_to_wait) {
// from inside them without causing an infinite loop: // from inside them without causing an infinite loop:
if (next_check == first_check) { if (next_check == first_check) {
while (next_check) { while (next_check) {
Check* check = next_check; Check* checkp = next_check;
next_check = check->next; next_check = checkp->next;
(check->cb)(check->arg); (checkp->cb)(checkp->arg);
} }
next_check = first_check; next_check = first_check;
} }
@ -329,13 +329,13 @@ Fl_Window* fl_find(Window xid) {
} }
Fl_Window* Fl::first_window() { Fl_Window* Fl::first_window() {
Fl_X* x = Fl_X::first; Fl_X* i = Fl_X::first;
return x ? x->w : 0; return i ? i->w : 0;
} }
Fl_Window* Fl::next_window(const Fl_Window* w) { Fl_Window* Fl::next_window(const Fl_Window* window) {
Fl_X* x = Fl_X::i(w)->next; Fl_X* i = Fl_X::i(window)->next;
return x ? x->w : 0; return i ? i->w : 0;
} }
void Fl::first_window(Fl_Window* window) { void Fl::first_window(Fl_Window* window) {
@ -344,19 +344,19 @@ void Fl::first_window(Fl_Window* window) {
} }
void Fl::redraw() { void Fl::redraw() {
for (Fl_X* x = Fl_X::first; x; x = x->next) x->w->redraw(); for (Fl_X* i = Fl_X::first; i; i = i->next) i->w->redraw();
} }
void Fl::flush() { void Fl::flush() {
if (damage()) { if (damage()) {
damage_ = 0; damage_ = 0;
for (Fl_X* x = Fl_X::first; x; x = x->next) { for (Fl_X* i = Fl_X::first; i; i = i->next) {
if (x->wait_for_expose) {damage_ = 1; continue;} if (i->wait_for_expose) {damage_ = 1; continue;}
Fl_Window* w = x->w; Fl_Window* wi = i->w;
if (!w->visible_r()) continue; if (!wi->visible_r()) continue;
if (w->damage()) {x->flush(); w->clear_damage();} if (wi->damage()) {i->flush(); wi->clear_damage();}
// destroy damage regions for windows that don't use them: // destroy damage regions for windows that don't use them:
if (x->region) {XDestroyRegion(x->region); x->region = 0;} if (i->region) {XDestroyRegion(i->region); i->region = 0;}
} }
} }
@ -383,18 +383,18 @@ struct handler_link {
static handler_link *handlers = 0; static handler_link *handlers = 0;
void Fl::add_handler(int (*h)(int)) { void Fl::add_handler(int (*ha)(int)) {
handler_link *l = new handler_link; handler_link *l = new handler_link;
l->handle = h; l->handle = ha;
l->next = handlers; l->next = handlers;
handlers = l; handlers = l;
} }
void Fl::remove_handler(int (*h)(int)) { void Fl::remove_handler(int (*ha)(int)) {
handler_link *l, *p; handler_link *l, *p;
// Search for the handler in the list... // Search for the handler in the list...
for (l = handlers, p = 0; l && l->handle != h; p = l, l = l->next); for (l = handlers, p = 0; l && l->handle != ha; p = l, l = l->next);
if (l) { if (l) {
// Found it, so remove it from the list... // Found it, so remove it from the list...
@ -408,9 +408,9 @@ void Fl::remove_handler(int (*h)(int)) {
int (*fl_local_grab)(int); // used by fl_dnd.cxx int (*fl_local_grab)(int); // used by fl_dnd.cxx
static int send_handlers(int event) { static int send_handlers(int e) {
for (const handler_link *h = handlers; h; h = h->next) for (const handler_link *hl = handlers; hl; hl = hl->next)
if (h->handle(event)) return 1; if (hl->handle(e)) return 1;
return 0; return 0;
} }
@ -550,18 +550,18 @@ static int send(int event, Fl_Widget* to, Fl_Window* window) {
return ret; return ret;
} }
int Fl::handle(int event, Fl_Window* window) int Fl::handle(int e, Fl_Window* window)
{ {
e_number = event; e_number = e;
if (fl_local_grab) return fl_local_grab(event); if (fl_local_grab) return fl_local_grab(e);
Fl_Widget* w = window; Fl_Widget* wi = window;
switch (event) { switch (e) {
case FL_CLOSE: case FL_CLOSE:
if (grab() || modal() && window != modal()) return 0; if (grab() || modal() && window != modal()) return 0;
w->do_callback(); wi->do_callback();
return 1; return 1;
case FL_SHOW: case FL_SHOW:
@ -574,10 +574,10 @@ int Fl::handle(int event, Fl_Window* window)
case FL_PUSH: case FL_PUSH:
Fl_Tooltip::enter((Fl_Widget*)0); Fl_Tooltip::enter((Fl_Widget*)0);
if (grab()) w = grab(); if (grab()) wi = grab();
else if (modal() && w != modal()) return 0; else if (modal() && wi != modal()) return 0;
pushed_ = w; pushed_ = wi;
if (send(event, w, window)) return 1; if (send(e, wi, window)) return 1;
// raise windows that are clicked on: // raise windows that are clicked on:
window->show(); window->show();
return 1; return 1;
@ -594,32 +594,32 @@ int Fl::handle(int event, Fl_Window* window)
return 1; return 1;
case FL_DND_RELEASE: case FL_DND_RELEASE:
w = belowmouse(); wi = belowmouse();
break; break;
case FL_MOVE: case FL_MOVE:
case FL_DRAG: case FL_DRAG:
fl_xmousewin = window; // this should already be set, but just in case. fl_xmousewin = window; // this should already be set, but just in case.
if (pushed()) { if (pushed()) {
w = pushed(); wi = pushed();
if (grab()) w = grab(); if (grab()) wi = grab();
e_number = event = FL_DRAG; e_number = e = FL_DRAG;
break; break;
} }
if (modal() && w != modal()) w = 0; if (modal() && wi != modal()) wi = 0;
if (grab()) w = grab(); if (grab()) wi = grab();
{Fl_Widget* pbm = belowmouse(); {Fl_Widget* pbm = belowmouse();
int ret = (w && send(event, w, window)); int ret = (wi && send(e, wi, window));
if (pbm != belowmouse()) Fl_Tooltip::enter(belowmouse()); if (pbm != belowmouse()) Fl_Tooltip::enter(belowmouse());
return ret;} return ret;}
case FL_RELEASE: { case FL_RELEASE: {
if (pushed()) { if (pushed()) {
w = pushed(); wi = pushed();
pushed_ = 0; // must be zero before callback is done! pushed_ = 0; // must be zero before callback is done!
} }
if (grab()) w = grab(); if (grab()) wi = grab();
int r = send(event, w, window); int r = send(e, wi, window);
fl_fix_focus(); fl_fix_focus();
return r;} return r;}
@ -636,8 +636,8 @@ int Fl::handle(int event, Fl_Window* window)
fl_xfocus = window; // this should not happen! But maybe it does: fl_xfocus = window; // this should not happen! But maybe it does:
// Try it as keystroke, sending it to focus and all parents: // Try it as keystroke, sending it to focus and all parents:
for (w = grab() ? grab() : focus(); w; w = w->parent()) for (wi = grab() ? grab() : focus(); wi; wi = wi->parent())
if (send(FL_KEYBOARD, w, window)) return 1; if (send(FL_KEYBOARD, wi, window)) return 1;
// recursive call to try shortcut: // recursive call to try shortcut:
if (handle(FL_SHORTCUT, window)) return 1; if (handle(FL_SHORTCUT, window)) return 1;
@ -647,22 +647,22 @@ int Fl::handle(int event, Fl_Window* window)
{char* c = (char*)event_text(); // cast away const {char* c = (char*)event_text(); // cast away const
if (!isalpha(*c)) return 0; if (!isalpha(*c)) return 0;
*c = isupper(*c) ? tolower(*c) : toupper(*c);} *c = isupper(*c) ? tolower(*c) : toupper(*c);}
e_number = event = FL_SHORTCUT; e_number = e = FL_SHORTCUT;
case FL_SHORTCUT: case FL_SHORTCUT:
if (grab()) {w = grab(); break;} // send it to grab window if (grab()) {wi = grab(); break;} // send it to grab window
// Try it as shortcut, sending to mouse widget and all parents: // Try it as shortcut, sending to mouse widget and all parents:
w = belowmouse(); if (!w) {w = modal(); if (!w) w = window;} wi = belowmouse(); if (!wi) {wi = modal(); if (!wi) wi = window;}
for (; w; w = w->parent()) if (send(FL_SHORTCUT, w, window)) return 1; for (; wi; wi = wi->parent()) if (send(FL_SHORTCUT, wi, window)) return 1;
// try using add_handle() functions: // try using add_handle() functions:
if (send_handlers(FL_SHORTCUT)) return 1; if (send_handlers(FL_SHORTCUT)) return 1;
// make Escape key close windows: // make Escape key close windows:
if (event_key()==FL_Escape) { if (event_key()==FL_Escape) {
w = modal(); if (!w) w = window; wi = modal(); if (!wi) wi = window;
w->do_callback(); wi->do_callback();
return 1; return 1;
} }
@ -682,17 +682,17 @@ int Fl::handle(int event, Fl_Window* window)
fl_xfocus = window; // this should not happen! But maybe it does: fl_xfocus = window; // this should not happen! But maybe it does:
// Try it as keystroke, sending it to focus and all parents: // Try it as keystroke, sending it to focus and all parents:
for (w = grab() ? grab() : focus(); w; w = w->parent()) for (wi = grab() ? grab() : focus(); wi; wi = wi->parent())
if (send(FL_MOUSEWHEEL, w, window)) return 1; if (send(FL_MOUSEWHEEL, wi, window)) return 1;
default: default:
break; break;
} }
if (w && send(event, w, window)) { if (wi && send(e, wi, window)) {
dnd_flag = 0; dnd_flag = 0;
return 1; return 1;
} }
dnd_flag = 0; dnd_flag = 0;
return send_handlers(event); return send_handlers(e);
} }
//////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////
@ -708,10 +708,10 @@ void Fl_Window::hide() {
if (!shown()) return; if (!shown()) return;
// remove from the list of windows: // remove from the list of windows:
Fl_X* x = i; Fl_X* ip = i;
Fl_X** pp = &Fl_X::first; Fl_X** pp = &Fl_X::first;
for (; *pp != x; pp = &(*pp)->next) if (!*pp) return; for (; *pp != ip; pp = &(*pp)->next) if (!*pp) return;
*pp = x->next; *pp = ip->next;
#ifdef __APPLE__ #ifdef __APPLE__
// remove all childwindow links // remove all childwindow links
@ -725,20 +725,20 @@ void Fl_Window::hide() {
i = 0; i = 0;
// recursively remove any subwindows: // recursively remove any subwindows:
for (Fl_X *w = Fl_X::first; w;) { for (Fl_X *wi = Fl_X::first; wi;) {
Fl_Window* W = w->w; Fl_Window* W = wi->w;
if (W->window() == this) { if (W->window() == this) {
W->hide(); W->hide();
W->set_visible(); W->set_visible();
w = Fl_X::first; wi = Fl_X::first;
} else w = w->next; } else wi = wi->next;
} }
if (this == Fl::modal_) { // we are closing the modal window, find next one: if (this == Fl::modal_) { // we are closing the modal window, find next one:
Fl_Window* w; Fl_Window* W;
for (w = Fl::first_window(); w; w = Fl::next_window(w)) for (W = Fl::first_window(); W; W = Fl::next_window(W))
if (w->modal()) break; if (W->modal()) break;
Fl::modal_ = w; Fl::modal_ = W;
} }
// Make sure no events are sent to this window: // Make sure no events are sent to this window:
@ -746,31 +746,31 @@ void Fl_Window::hide() {
handle(FL_HIDE); handle(FL_HIDE);
#ifdef WIN32 #ifdef WIN32
if (x->private_dc) ReleaseDC(x->xid,x->private_dc); if (ip->private_dc) ReleaseDC(ip->xid,ip->private_dc);
if (x->xid == fl_window && fl_gc) { if (ip->xid == fl_window && fl_gc) {
ReleaseDC(fl_window, fl_gc); ReleaseDC(fl_window, fl_gc);
fl_window = (HWND)-1; fl_window = (HWND)-1;
fl_gc = 0; fl_gc = 0;
} }
#elif defined(__APPLE__) #elif defined(__APPLE__)
if ( x->xid == fl_window ) if ( ip->xid == fl_window )
fl_window = 0; fl_window = 0;
#else #else
if (x->region) XDestroyRegion(x->region); if (ip->region) XDestroyRegion(ip->region);
#endif #endif
#ifdef __APPLE__ #ifdef __APPLE__
if ( !parent() ) // don't destroy shared windows! if ( !parent() ) // don't destroy shared windows!
{ {
//+ RemoveTrackingHandler( dndTrackingHandler, x->xid ); //+ RemoveTrackingHandler( dndTrackingHandler, ip->xid );
//+ RemoveReceiveHandler( dndReceiveHandler, x->xid ); //+ RemoveReceiveHandler( dndReceiveHandler, ip->xid );
XDestroyWindow(fl_display, x->xid); XDestroyWindow(fl_display, ip->xid);
} }
#else #else
# if USE_XFT # if USE_XFT
fl_destroy_xft_draw(x->xid); fl_destroy_xft_draw(ip->xid);
# endif # endif
XDestroyWindow(fl_display, x->xid); XDestroyWindow(fl_display, ip->xid);
#endif #endif
#ifdef WIN32 #ifdef WIN32
@ -778,7 +778,7 @@ void Fl_Window::hide() {
if (non_modal() && Fl::first_window() && Fl::first_window()->shown()) if (non_modal() && Fl::first_window() && Fl::first_window()->shown())
Fl::first_window()->show(); Fl::first_window()->show();
#endif #endif
delete x; delete ip;
// Hide any visible tooltips... // Hide any visible tooltips...
//Fl_Tooltip::enter(0); //Fl_Tooltip::enter(0);
@ -796,9 +796,9 @@ Fl_Window::~Fl_Window() {
// Fl_Window::show() or Fl_Window::hide() is called, or in response to // Fl_Window::show() or Fl_Window::hide() is called, or in response to
// iconize/deiconize events from the system. // iconize/deiconize events from the system.
int Fl_Window::handle(int event) int Fl_Window::handle(int ev)
{ {
if (parent()) switch (event) { if (parent()) switch (ev) {
case FL_SHOW: case FL_SHOW:
if (!shown()) show(); if (!shown()) show();
else XMapWindow(fl_display, fl_xid(this)); // extra map calls are harmless else XMapWindow(fl_display, fl_xid(this)); // extra map calls are harmless
@ -821,7 +821,7 @@ int Fl_Window::handle(int event)
break; break;
} }
return Fl_Group::handle(event); return Fl_Group::handle(ev);
} }
//////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////
@ -862,58 +862,58 @@ void Fl_Widget::redraw() {
label_.measure(W, H); label_.measure(W, H);
if (align() & FL_ALIGN_BOTTOM) { if (align() & FL_ALIGN_BOTTOM) {
window()->damage(FL_DAMAGE_ALL, x(), y() + h(), w(), H); window()->damage(FL_DAMAGE_EXPOSE, x(), y() + h(), w(), H);
} else if (align() & FL_ALIGN_TOP) { } else if (align() & FL_ALIGN_TOP) {
window()->damage(FL_DAMAGE_ALL, x(), y() - H, w(), H); window()->damage(FL_DAMAGE_EXPOSE, x(), y() - H, w(), H);
} else if (align() & FL_ALIGN_LEFT) { } else if (align() & FL_ALIGN_LEFT) {
window()->damage(FL_DAMAGE_ALL, x() - W, y(), W, h()); window()->damage(FL_DAMAGE_EXPOSE, x() - W, y(), W, h());
} else if (align() & FL_ALIGN_RIGHT) { } else if (align() & FL_ALIGN_RIGHT) {
window()->damage(FL_DAMAGE_ALL, x() + w(), y(), W, h()); window()->damage(FL_DAMAGE_EXPOSE, x() + w(), y(), W, h());
} }
} }
} }
} }
void Fl_Widget::damage(uchar flags) { void Fl_Widget::damage(uchar fl) {
if (type() < FL_WINDOW) { if (type() < FL_WINDOW) {
// damage only the rectangle covered by a child widget: // damage only the rectangle covered by a child widget:
damage(flags, x(), y(), w(), h()); damage(fl, x(), y(), w(), h());
} else { } else {
// damage entire window by deleting the region: // damage entire window by deleting the region:
Fl_X* i = Fl_X::i((Fl_Window*)this); Fl_X* i = Fl_X::i((Fl_Window*)this);
if (!i) return; // window not mapped, so ignore it if (!i) return; // window not mapped, so ignore it
if (i->region) {XDestroyRegion(i->region); i->region = 0;} if (i->region) {XDestroyRegion(i->region); i->region = 0;}
damage_ |= flags; damage_ |= fl;
Fl::damage(FL_DAMAGE_CHILD); Fl::damage(FL_DAMAGE_CHILD);
} }
} }
void Fl_Widget::damage(uchar flags, int X, int Y, int W, int H) { void Fl_Widget::damage(uchar fl, int X, int Y, int W, int H) {
Fl_Widget* window = this; Fl_Widget* wi = this;
// mark all parent widgets between this and window with FL_DAMAGE_CHILD: // mark all parent widgets between this and window with FL_DAMAGE_CHILD:
while (window->type() < FL_WINDOW) { while (wi->type() < FL_WINDOW) {
window->damage_ |= flags; wi->damage_ |= fl;
window = window->parent(); wi = wi->parent();
if (!window) return; if (!wi) return;
flags = FL_DAMAGE_CHILD; fl = FL_DAMAGE_CHILD;
} }
Fl_X* i = Fl_X::i((Fl_Window*)window); Fl_X* i = Fl_X::i((Fl_Window*)wi);
if (!i) return; // window not mapped, so ignore it if (!i) return; // window not mapped, so ignore it
if (X<=0 && Y<=0 && W>=window->w() && H>=window->h()) { if (X<=0 && Y<=0 && W>=wi->w() && H>=wi->h()) {
// if damage covers entire window delete region: // if damage covers entire window delete region:
window->damage(flags); wi->damage(fl);
return; return;
} }
// clip the damage to the window and quit if none: // clip the damage to the window and quit if none:
if (X < 0) {W += X; X = 0;} if (X < 0) {W += X; X = 0;}
if (Y < 0) {H += Y; Y = 0;} if (Y < 0) {H += Y; Y = 0;}
if (W > window->w()-X) W = window->w()-X; if (W > wi->w()-X) W = wi->w()-X;
if (H > window->h()-Y) H = window->h()-Y; if (H > wi->h()-Y) H = wi->h()-Y;
if (W <= 0 || H <= 0) return; if (W <= 0 || H <= 0) return;
if (window->damage()) { if (wi->damage()) {
// if we already have damage we must merge with existing region: // if we already have damage we must merge with existing region:
if (i->region) { if (i->region) {
#ifdef WIN32 #ifdef WIN32
@ -931,12 +931,12 @@ void Fl_Widget::damage(uchar flags, int X, int Y, int W, int H) {
XUnionRectWithRegion(&R, i->region, i->region); XUnionRectWithRegion(&R, i->region, i->region);
#endif #endif
} }
window->damage_ |= flags; wi->damage_ |= fl;
} else { } else {
// create a new region: // create a new region:
if (i->region) XDestroyRegion(i->region); if (i->region) XDestroyRegion(i->region);
i->region = XRectangleRegion(X,Y,W,H); i->region = XRectangleRegion(X,Y,W,H);
window->damage_ = flags; wi->damage_ = fl;
} }
Fl::damage(FL_DAMAGE_CHILD); Fl::damage(FL_DAMAGE_CHILD);
} }
@ -949,5 +949,5 @@ void Fl_Window::flush() {
} }
// //
// End of "$Id: Fl.cxx,v 1.24.2.41.2.43 2002/07/23 15:07:33 easysw Exp $". // End of "$Id: Fl.cxx,v 1.24.2.41.2.44 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Adjuster.cxx,v 1.5.2.3.2.7 2002/05/24 14:19:19 easysw Exp $" // "$Id: Fl_Adjuster.cxx,v 1.5.2.3.2.8 2002/08/09 01:09:48 easysw Exp $"
// //
// Adjuster widget for the Fast Light Tool Kit (FLTK). // Adjuster widget for the Fast Light Tool Kit (FLTK).
// //
@ -155,8 +155,8 @@ int Fl_Adjuster::handle(int event) {
return 0; return 0;
} }
Fl_Adjuster::Fl_Adjuster(int x, int y, int w, int h, const char* l) Fl_Adjuster::Fl_Adjuster(int X, int Y, int W, int H, const char* l)
: Fl_Valuator(x, y, w, h, l) { : Fl_Valuator(X, Y, W, H, l) {
box(FL_UP_BOX); box(FL_UP_BOX);
step(1, 10000); step(1, 10000);
selection_color(FL_BLACK); selection_color(FL_BLACK);
@ -165,5 +165,5 @@ Fl_Adjuster::Fl_Adjuster(int x, int y, int w, int h, const char* l)
} }
// //
// End of "$Id: Fl_Adjuster.cxx,v 1.5.2.3.2.7 2002/05/24 14:19:19 easysw Exp $". // End of "$Id: Fl_Adjuster.cxx,v 1.5.2.3.2.8 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_BMP_Image.cxx,v 1.1.2.8 2002/07/26 14:22:02 easysw Exp $" // "$Id: Fl_BMP_Image.cxx,v 1.1.2.9 2002/08/09 01:09:48 easysw Exp $"
// //
// Fl_BMP_Image routines. // Fl_BMP_Image routines.
// //
@ -72,7 +72,7 @@ Fl_BMP_Image::Fl_BMP_Image(const char *bmp) // I - File to read
colors_used, // Number of colors used colors_used, // Number of colors used
x, y, // Looping vars x, y, // Looping vars
color, // Color of RLE pixel color, // Color of RLE pixel
count, // Number of times to repeat repcount, // Number of times to repeat
temp, // Temporary color temp, // Temporary color
align; // Alignment bytes align; // Alignment bytes
long offbits; // Offset to image data long offbits; // Offset to image data
@ -111,7 +111,7 @@ Fl_BMP_Image::Fl_BMP_Image(const char *bmp) // I - File to read
compression = BI_RGB; compression = BI_RGB;
colors_used = 0; colors_used = 0;
count = info_size - 12; repcount = info_size - 12;
} else { } else {
// New BMP header... // New BMP header...
w(read_long(fp)); w(read_long(fp));
@ -125,16 +125,16 @@ Fl_BMP_Image::Fl_BMP_Image(const char *bmp) // I - File to read
colors_used = read_dword(fp); colors_used = read_dword(fp);
read_dword(fp); read_dword(fp);
count = info_size - 40; repcount = info_size - 40;
} }
// printf("w() = %d, h() = %d, depth = %d, compression = %d, colors_used = %d, count = %d\n", // printf("w() = %d, h() = %d, depth = %d, compression = %d, colors_used = %d, repcount = %d\n",
// w(), h(), depth, compression, colors_used, count); // w(), h(), depth, compression, colors_used, repcount);
// Skip remaining header bytes... // Skip remaining header bytes...
while (count > 0) { while (repcount > 0) {
getc(fp); getc(fp);
count --; repcount --;
} }
// Check header data... // Check header data...
@ -147,9 +147,9 @@ Fl_BMP_Image::Fl_BMP_Image(const char *bmp) // I - File to read
if (colors_used == 0 && depth <= 8) if (colors_used == 0 && depth <= 8)
colors_used = 1 << depth; colors_used = 1 << depth;
for (count = 0; count < colors_used; count ++) { for (repcount = 0; repcount < colors_used; repcount ++) {
// Read BGR color... // Read BGR color...
fread(colormap[count], 1, 3, fp); fread(colormap[repcount], 1, 3, fp);
// Skip pad byte for new BMP files... // Skip pad byte for new BMP files...
if (info_size > 12) getc(fp); if (info_size > 12) getc(fp);
@ -164,7 +164,7 @@ Fl_BMP_Image::Fl_BMP_Image(const char *bmp) // I - File to read
// Read the image data... // Read the image data...
color = 0; color = 0;
count = 0; repcount = 0;
align = 0; align = 0;
byte = 0; byte = 0;
temp = 0; temp = 0;
@ -202,10 +202,10 @@ Fl_BMP_Image::Fl_BMP_Image(const char *bmp) // I - File to read
case 4 : // 16-color case 4 : // 16-color
for (x = w(), bit = 0xf0; x > 0; x --) { for (x = w(), bit = 0xf0; x > 0; x --) {
// Get a new count as needed... // Get a new repcount as needed...
if (count == 0) { if (repcount == 0) {
if (compression != BI_RLE4) { if (compression != BI_RLE4) {
count = 2; repcount = 2;
color = -1; color = -1;
} else { } else {
while (align > 0) { while (align > 0) {
@ -213,22 +213,22 @@ Fl_BMP_Image::Fl_BMP_Image(const char *bmp) // I - File to read
getc(fp); getc(fp);
} }
if ((count = getc(fp)) == 0) { if ((repcount = getc(fp)) == 0) {
if ((count = getc(fp)) == 0) { if ((repcount = getc(fp)) == 0) {
// End of line... // End of line...
x ++; x ++;
continue; continue;
} else if (count == 1) { } else if (repcount == 1) {
// End of image... // End of image...
break; break;
} else if (count == 2) { } else if (repcount == 2) {
// Delta... // Delta...
count = getc(fp) * getc(fp) * w(); repcount = getc(fp) * getc(fp) * w();
color = 0; color = 0;
} else { } else {
// Absolute... // Absolute...
color = -1; color = -1;
align = ((4 - (count & 3)) / 2) & 1; align = ((4 - (repcount & 3)) / 2) & 1;
} }
} else { } else {
color = getc(fp); color = getc(fp);
@ -237,7 +237,7 @@ Fl_BMP_Image::Fl_BMP_Image(const char *bmp) // I - File to read
} }
// Get a new color as needed... // Get a new color as needed...
count --; repcount --;
// Get the next color byte as needed... // Get the next color byte as needed...
if (color < 0) color = getc(fp); if (color < 0) color = getc(fp);
@ -269,34 +269,34 @@ Fl_BMP_Image::Fl_BMP_Image(const char *bmp) // I - File to read
case 8 : // 256-color case 8 : // 256-color
for (x = w(); x > 0; x --) { for (x = w(); x > 0; x --) {
// Get a new count as needed... // Get a new repcount as needed...
if (compression != BI_RLE8) { if (compression != BI_RLE8) {
count = 1; repcount = 1;
color = -1; color = -1;
} }
if (count == 0) { if (repcount == 0) {
while (align > 0) { while (align > 0) {
align --; align --;
getc(fp); getc(fp);
} }
if ((count = getc(fp)) == 0) { if ((repcount = getc(fp)) == 0) {
if ((count = getc(fp)) == 0) { if ((repcount = getc(fp)) == 0) {
// End of line... // End of line...
x ++; x ++;
continue; continue;
} else if (count == 1) { } else if (repcount == 1) {
// End of image... // End of image...
break; break;
} else if (count == 2) { } else if (repcount == 2) {
// Delta... // Delta...
count = getc(fp) * getc(fp) * w(); repcount = getc(fp) * getc(fp) * w();
color = 0; color = 0;
} else { } else {
// Absolute... // Absolute...
color = -1; color = -1;
align = (2 - (count & 1)) & 1; align = (2 - (repcount & 1)) & 1;
} }
} else { } else {
color = getc(fp); color = getc(fp);
@ -307,7 +307,7 @@ Fl_BMP_Image::Fl_BMP_Image(const char *bmp) // I - File to read
if (color < 0) temp = getc(fp); if (color < 0) temp = getc(fp);
else temp = color; else temp = color;
count --; repcount --;
// Copy the color value... // Copy the color value...
*ptr++ = colormap[temp][2]; *ptr++ = colormap[temp][2];
@ -393,5 +393,5 @@ read_long(FILE *fp) { // I - File to read from
// //
// End of "$Id: Fl_BMP_Image.cxx,v 1.1.2.8 2002/07/26 14:22:02 easysw Exp $". // End of "$Id: Fl_BMP_Image.cxx,v 1.1.2.9 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Bitmap.cxx,v 1.5.2.4.2.16 2002/08/05 17:50:24 easysw Exp $" // "$Id: Fl_Bitmap.cxx,v 1.5.2.4.2.17 2002/08/09 01:09:48 easysw Exp $"
// //
// Bitmap drawing routines for the Fast Light Tool Kit (FLTK). // Bitmap drawing routines for the Fast Light Tool Kit (FLTK).
// //
@ -395,8 +395,8 @@ void Fl_Bitmap::uncache() {
} }
} }
void Fl_Bitmap::label(Fl_Widget* w) { void Fl_Bitmap::label(Fl_Widget* widget) {
w->image(this); widget->image(this);
} }
void Fl_Bitmap::label(Fl_Menu_Item* m) { void Fl_Bitmap::label(Fl_Menu_Item* m) {
@ -473,5 +473,5 @@ Fl_Image *Fl_Bitmap::copy(int W, int H) {
// //
// End of "$Id: Fl_Bitmap.cxx,v 1.5.2.4.2.16 2002/08/05 17:50:24 easysw Exp $". // End of "$Id: Fl_Bitmap.cxx,v 1.5.2.4.2.17 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Browser.cxx,v 1.9.2.12.2.5 2002/04/11 11:52:41 easysw Exp $" // "$Id: Fl_Browser.cxx,v 1.9.2.12.2.6 2002/08/09 01:09:48 easysw Exp $"
// //
// Browser widget for the Fast Light Tool Kit (FLTK). // Browser widget for the Fast Light Tool Kit (FLTK).
// //
@ -161,13 +161,13 @@ void Fl_Browser::insert(int line, FL_BLINE* t) {
redraw_line(t); redraw_line(t);
} }
void Fl_Browser::insert(int line, const char* newtext, void* data) { void Fl_Browser::insert(int line, const char* newtext, void* d) {
int l = strlen(newtext); int l = strlen(newtext);
FL_BLINE* t = (FL_BLINE*)malloc(sizeof(FL_BLINE)+l); FL_BLINE* t = (FL_BLINE*)malloc(sizeof(FL_BLINE)+l);
t->length = l; t->length = l;
t->flags = 0; t->flags = 0;
strcpy(t->txt, newtext); strcpy(t->txt, newtext);
t->data = data; t->data = d;
insert(line, t); insert(line, t);
} }
@ -198,9 +198,9 @@ void Fl_Browser::text(int line, const char* newtext) {
redraw_line(t); redraw_line(t);
} }
void Fl_Browser::data(int line, void* data) { void Fl_Browser::data(int line, void* d) {
if (line < 1 || line > lines) return; if (line < 1 || line > lines) return;
find_line(line)->data = data; find_line(line)->data = d;
} }
int Fl_Browser::item_height(void* lv) const { int Fl_Browser::item_height(void* lv) const {
@ -212,27 +212,27 @@ int Fl_Browser::item_height(void* lv) const {
if (!l->txt[0]) { if (!l->txt[0]) {
// For blank lines set the height to exactly 1 line! // For blank lines set the height to exactly 1 line!
fl_font(textfont(), textsize()); fl_font(textfont(), textsize());
int h = fl_height(); int hh = fl_height();
if (h > hmax) hmax = h; if (hh > hmax) hmax = hh;
} }
else { else {
// do each column separately as they may all set different fonts: // do each column separately as they may all set different fonts:
for (char* str = l->txt; *str; str++) { for (char* str = l->txt; *str; str++) {
Fl_Font font = textfont(); // default font Fl_Font font = textfont(); // default font
int size = textsize(); // default size int tsize = textsize(); // default size
while (*str==format_char()) { while (*str==format_char()) {
str++; str++;
switch (*str++) { switch (*str++) {
case 'l': case 'L': size = 24; break; case 'l': case 'L': tsize = 24; break;
case 'm': case 'M': size = 18; break; case 'm': case 'M': tsize = 18; break;
case 's': size = 11; break; case 's': tsize = 11; break;
case 'b': font = (Fl_Font)(font|FL_BOLD); break; case 'b': font = (Fl_Font)(font|FL_BOLD); break;
case 'i': font = (Fl_Font)(font|FL_ITALIC); break; case 'i': font = (Fl_Font)(font|FL_ITALIC); break;
case 'f': case 't': font = FL_COURIER; break; case 'f': case 't': font = FL_COURIER; break;
case 'B': case 'B':
case 'C': strtol(str, &str, 10); break;// skip a color number case 'C': strtol(str, &str, 10); break;// skip a color number
case 'F': font = (Fl_Font)strtol(str,&str,10); break; case 'F': font = (Fl_Font)strtol(str,&str,10); break;
case 'S': size = strtol(str,&str,10); break; case 'S': tsize = strtol(str,&str,10); break;
case 0: case '@': str--; case 0: case '@': str--;
case '.': goto END_FORMAT; case '.': goto END_FORMAT;
} }
@ -241,8 +241,8 @@ int Fl_Browser::item_height(void* lv) const {
char* ptr = str; char* ptr = str;
for(;*str && (*str!=column_char()); str++) ; for(;*str && (*str!=column_char()); str++) ;
if (ptr < str) { if (ptr < str) {
fl_font(font, size); int h = fl_height(); fl_font(font, tsize); int hh = fl_height();
if (h > hmax) hmax = h; if (hh > hmax) hmax = hh;
} }
if (!*str) str --; if (!*str) str --;
} }
@ -254,34 +254,34 @@ int Fl_Browser::item_height(void* lv) const {
int Fl_Browser::item_width(void* v) const { int Fl_Browser::item_width(void* v) const {
char* str = ((FL_BLINE*)v)->txt; char* str = ((FL_BLINE*)v)->txt;
const int* i = column_widths(); const int* i = column_widths();
int w = 0; int ww = 0;
while (*i) { // add up all tab-seperated fields while (*i) { // add up all tab-seperated fields
char* e; char* e;
for (e = str; *e && *e != column_char(); e++); for (e = str; *e && *e != column_char(); e++);
if (!*e) break; // last one occupied by text if (!*e) break; // last one occupied by text
str = e+1; str = e+1;
w += *i++; ww += *i++;
} }
// OK, we gotta parse the string and find the string width... // OK, we gotta parse the string and find the string width...
int size = textsize(); int tsize = textsize();
Fl_Font font = textfont(); Fl_Font font = textfont();
int done = 0; int done = 0;
while (*str == format_char_ && str[1] && str[1] != format_char_) { while (*str == format_char_ && str[1] && str[1] != format_char_) {
str ++; str ++;
switch (*str++) { switch (*str++) {
case 'l': case 'L': size = 24; break; case 'l': case 'L': tsize = 24; break;
case 'm': case 'M': size = 18; break; case 'm': case 'M': tsize = 18; break;
case 's': size = 11; break; case 's': tsize = 11; break;
case 'b': font = (Fl_Font)(font|FL_BOLD); break; case 'b': font = (Fl_Font)(font|FL_BOLD); break;
case 'i': font = (Fl_Font)(font|FL_ITALIC); break; case 'i': font = (Fl_Font)(font|FL_ITALIC); break;
case 'f': case 't': font = FL_COURIER; break; case 'f': case 't': font = FL_COURIER; break;
case 'B': case 'B':
case 'C': strtol(str, &str, 10); break;// skip a color number case 'C': strtol(str, &str, 10); break;// skip a color number
case 'F': font = (Fl_Font)strtol(str, &str, 10); break; case 'F': font = (Fl_Font)strtol(str, &str, 10); break;
case 'S': size = strtol(str, &str, 10); break; case 'S': tsize = strtol(str, &str, 10); break;
case '.': case '.':
done = 1; done = 1;
case '@': case '@':
@ -296,8 +296,8 @@ int Fl_Browser::item_width(void* v) const {
if (*str == format_char_ && str[1]) if (*str == format_char_ && str[1])
str ++; str ++;
fl_font(font, size); fl_font(font, tsize);
return w + int(fl_width(str)) + 6; return ww + int(fl_width(str)) + 6;
} }
int Fl_Browser::full_height() const { int Fl_Browser::full_height() const {
@ -308,36 +308,36 @@ int Fl_Browser::incr_height() const {
return textsize()+2; return textsize()+2;
} }
void Fl_Browser::item_draw(void* v, int x, int y, int w, int h) const { void Fl_Browser::item_draw(void* v, int X, int Y, int W, int H) const {
char* str = ((FL_BLINE*)v)->txt; char* str = ((FL_BLINE*)v)->txt;
const int* i = column_widths(); const int* i = column_widths();
while (w > 6) { // do each tab-seperated field while (W > 6) { // do each tab-seperated field
int w1 = w; // width for this field int w1 = W; // width for this field
char* e = 0; // pointer to end of field or null if none char* e = 0; // pointer to end of field or null if none
if (*i) { // find end of field and temporarily replace with 0 if (*i) { // find end of field and temporarily replace with 0
for (e = str; *e && *e != column_char(); e++); for (e = str; *e && *e != column_char(); e++);
if (*e) {*e = 0; w1 = *i++;} else e = 0; if (*e) {*e = 0; w1 = *i++;} else e = 0;
} }
int size = textsize(); int tsize = textsize();
Fl_Font font = textfont(); Fl_Font font = textfont();
Fl_Color lcol = textcolor(); Fl_Color lcol = textcolor();
Fl_Align align = FL_ALIGN_LEFT; Fl_Align talign = FL_ALIGN_LEFT;
// check for all the @-lines recognized by XForms: // check for all the @-lines recognized by XForms:
while (*str == format_char() && *++str && *str != format_char()) { while (*str == format_char() && *++str && *str != format_char()) {
switch (*str++) { switch (*str++) {
case 'l': case 'L': size = 24; break; case 'l': case 'L': tsize = 24; break;
case 'm': case 'M': size = 18; break; case 'm': case 'M': tsize = 18; break;
case 's': size = 11; break; case 's': tsize = 11; break;
case 'b': font = (Fl_Font)(font|FL_BOLD); break; case 'b': font = (Fl_Font)(font|FL_BOLD); break;
case 'i': font = (Fl_Font)(font|FL_ITALIC); break; case 'i': font = (Fl_Font)(font|FL_ITALIC); break;
case 'f': case 't': font = FL_COURIER; break; case 'f': case 't': font = FL_COURIER; break;
case 'c': align = FL_ALIGN_CENTER; break; case 'c': talign = FL_ALIGN_CENTER; break;
case 'r': align = FL_ALIGN_RIGHT; break; case 'r': talign = FL_ALIGN_RIGHT; break;
case 'B': case 'B':
if (!(((FL_BLINE*)v)->flags & SELECTED)) { if (!(((FL_BLINE*)v)->flags & SELECTED)) {
fl_color((Fl_Color)strtol(str, &str, 10)); fl_color((Fl_Color)strtol(str, &str, 10));
fl_rectf(x, y, w1, h); fl_rectf(X, Y, w1, H);
} else strtol(str, &str, 10); } else strtol(str, &str, 10);
break; break;
case 'C': case 'C':
@ -350,18 +350,18 @@ void Fl_Browser::item_draw(void* v, int x, int y, int w, int h) const {
lcol = FL_INACTIVE_COLOR; lcol = FL_INACTIVE_COLOR;
break; break;
case 'S': case 'S':
size = strtol(str, &str, 10); tsize = strtol(str, &str, 10);
break; break;
case '-': case '-':
fl_color(FL_DARK3); fl_color(FL_DARK3);
fl_line(x+3, y+h/2, x+w1-3, y+h/2); fl_line(X+3, Y+H/2, X+w1-3, Y+H/2);
fl_color(FL_LIGHT3); fl_color(FL_LIGHT3);
fl_line(x+3, y+h/2+1, x+w1-3, y+h/2+1); fl_line(X+3, Y+H/2+1, X+w1-3, Y+H/2+1);
break; break;
case 'u': case 'u':
case '_': case '_':
fl_color(lcol); fl_color(lcol);
fl_line(x+3, y+h-1, x+w1-3, y+h-1); fl_line(X+3, Y+H-1, X+w1-3, Y+H-1);
break; break;
case '.': case '.':
goto BREAK; goto BREAK;
@ -370,24 +370,24 @@ void Fl_Browser::item_draw(void* v, int x, int y, int w, int h) const {
} }
} }
BREAK: BREAK:
fl_font(font, size); fl_font(font, tsize);
if (((FL_BLINE*)v)->flags & SELECTED) if (((FL_BLINE*)v)->flags & SELECTED)
lcol = fl_contrast(lcol, selection_color()); lcol = fl_contrast(lcol, selection_color());
if (!active_r()) lcol = fl_inactive(lcol); if (!active_r()) lcol = fl_inactive(lcol);
fl_color(lcol); fl_color(lcol);
fl_draw(str, x+3, y, w1-6, h, e ? Fl_Align(align|FL_ALIGN_CLIP) : align, 0, 0); fl_draw(str, X+3, Y, w1-6, H, e ? Fl_Align(talign|FL_ALIGN_CLIP) : talign, 0, 0);
if (!e) break; // no more fields... if (!e) break; // no more fields...
*e = column_char(); // put the seperator back *e = column_char(); // put the seperator back
x += w1; X += w1;
w -= w1; W -= w1;
str = e+1; str = e+1;
} }
} }
static const int no_columns[1] = {0}; static const int no_columns[1] = {0};
Fl_Browser::Fl_Browser(int x, int y, int w, int h, const char*l) Fl_Browser::Fl_Browser(int X, int Y, int W, int H, const char*l)
: Fl_Browser_(x, y, w, h, l) { : Fl_Browser_(X, Y, W, H, l) {
column_widths_ = no_columns; column_widths_ = no_columns;
lines = 0; lines = 0;
full_height_ = 0; full_height_ = 0;
@ -427,9 +427,9 @@ int Fl_Browser::topline() const {
void Fl_Browser::clear() { void Fl_Browser::clear() {
for (FL_BLINE* l = first; l;) { for (FL_BLINE* l = first; l;) {
FL_BLINE* h = l->next; FL_BLINE* n = l->next;
free(l); free(l);
l = h; l = n;
} }
full_height_ = 0; full_height_ = 0;
first = 0; first = 0;
@ -437,8 +437,8 @@ void Fl_Browser::clear() {
new_list(); new_list();
} }
void Fl_Browser::add(const char* newtext, void* data) { void Fl_Browser::add(const char* newtext, void* d) {
insert(lines+1, newtext, data); insert(lines+1, newtext, d);
//Fl_Browser_::display(last); //Fl_Browser_::display(last);
} }
@ -452,9 +452,9 @@ void* Fl_Browser::data(int line) const {
return find_line(line)->data; return find_line(line)->data;
} }
int Fl_Browser::select(int line, int value) { int Fl_Browser::select(int line, int v) {
if (line < 1 || line > lines) return 0; if (line < 1 || line > lines) return 0;
return Fl_Browser_::select(find_line(line), value); return Fl_Browser_::select(find_line(line), v);
} }
int Fl_Browser::selected(int line) const { int Fl_Browser::selected(int line) const {
@ -480,9 +480,9 @@ void Fl_Browser::hide(int line) {
} }
} }
void Fl_Browser::display(int line, int value) { void Fl_Browser::display(int line, int v) {
if (line < 1 || line > lines) return; if (line < 1 || line > lines) return;
if (value) show(line); else hide(line); if (v) show(line); else hide(line);
} }
int Fl_Browser::visible(int line) const { int Fl_Browser::visible(int line) const {
@ -495,5 +495,5 @@ int Fl_Browser::value() const {
} }
// //
// End of "$Id: Fl_Browser.cxx,v 1.9.2.12.2.5 2002/04/11 11:52:41 easysw Exp $". // End of "$Id: Fl_Browser.cxx,v 1.9.2.12.2.6 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Browser_.cxx,v 1.10.2.16.2.13 2002/07/18 15:43:48 easysw Exp $" // "$Id: Fl_Browser_.cxx,v 1.10.2.16.2.14 2002/08/09 01:09:48 easysw Exp $"
// //
// Base Browser widget class for the Fast Light Tool Kit (FLTK). // Base Browser widget class for the Fast Light Tool Kit (FLTK).
// //
@ -119,9 +119,9 @@ void Fl_Browser_::update_top() {
if (position_ != real_position_) { if (position_ != real_position_) {
void* l; void* l;
int ly; int ly;
int y = position_; int yy = position_;
// start from either head or current position, whichever is closer: // start from either head or current position, whichever is closer:
if (!top_ || y <= (real_position_/2)) { if (!top_ || yy <= (real_position_/2)) {
l = item_first(); l = item_first();
ly = 0; ly = 0;
} else { } else {
@ -133,35 +133,35 @@ void Fl_Browser_::update_top() {
offset_ = 0; offset_ = 0;
real_position_ = 0; real_position_ = 0;
} else { } else {
int h = item_quick_height(l); int hh = item_quick_height(l);
// step through list until we find line containing this point: // step through list until we find line containing this point:
while (ly > y) { while (ly > yy) {
void* l1 = item_prev(l); void* l1 = item_prev(l);
if (!l1) {ly = 0; break;} // hit the top if (!l1) {ly = 0; break;} // hit the top
l = l1; l = l1;
h = item_quick_height(l); hh = item_quick_height(l);
ly -= h; ly -= hh;
} }
while ((ly+h) <= y) { while ((ly+hh) <= yy) {
void* l1 = item_next(l); void* l1 = item_next(l);
if (!l1) {y = ly+h-1; break;} if (!l1) {yy = ly+hh-1; break;}
l = l1; l = l1;
ly += h; ly += hh;
h = item_quick_height(l); hh = item_quick_height(l);
} }
// top item must *really* be visible, use slow height: // top item must *really* be visible, use slow height:
for (;;) { for (;;) {
h = item_height(l); hh = item_height(l);
if ((ly+h) > y) break; // it is big enough to see if ((ly+hh) > yy) break; // it is big enough to see
// go up to top of previous item: // go up to top of previous item:
void* l1 = item_prev(l); void* l1 = item_prev(l);
if (!l1) {ly = y = 0; break;} // hit the top if (!l1) {ly = yy = 0; break;} // hit the top
l = l1; y = position_ = ly = ly-item_quick_height(l); l = l1; yy = position_ = ly = ly-item_quick_height(l);
} }
// use it: // use it:
top_ = l; top_ = l;
offset_ = y-ly; offset_ = yy-ly;
real_position_ = y; real_position_ = yy;
} }
damage(FL_DAMAGE_SCROLL); damage(FL_DAMAGE_SCROLL);
} }
@ -169,26 +169,26 @@ void Fl_Browser_::update_top() {
// Change position(), top() will update when update_top() is called // Change position(), top() will update when update_top() is called
// (probably by draw() or handle()): // (probably by draw() or handle()):
void Fl_Browser_::position(int y) { void Fl_Browser_::position(int yy) {
if (y < 0) y = 0; if (yy < 0) yy = 0;
if (y == position_) return; if (yy == position_) return;
position_ = y; position_ = yy;
if (y != real_position_) redraw_lines(); if (yy != real_position_) redraw_lines();
} }
void Fl_Browser_::hposition(int x) { void Fl_Browser_::hposition(int xx) {
if (x < 0) x = 0; if (xx < 0) xx = 0;
if (x == hposition_) return; if (xx == hposition_) return;
hposition_ = x; hposition_ = xx;
if (x != real_hposition_) redraw_lines(); if (xx != real_hposition_) redraw_lines();
} }
// Tell whether item is currently displayed: // Tell whether item is currently displayed:
int Fl_Browser_::displayed(void* x) const { int Fl_Browser_::displayed(void* p) const {
int X, Y, W, H; bbox(X, Y, W, H); int X, Y, W, H; bbox(X, Y, W, H);
int yy = H+offset_; int yy = H+offset_;
for (void* l = top_; l && yy > 0; l = item_next(l)) { for (void* l = top_; l && yy > 0; l = item_next(l)) {
if (l == x) return 1; if (l == p) return 1;
yy -= item_height(l); yy -= item_height(l);
} }
return 0; return 0;
@ -196,11 +196,11 @@ int Fl_Browser_::displayed(void* x) const {
// Ensure this item is displayed: // Ensure this item is displayed:
// Messy because we have no idea if it is before top or after bottom: // Messy because we have no idea if it is before top or after bottom:
void Fl_Browser_::display(void* x) { void Fl_Browser_::display(void* p) {
// First special case - want to display first item in the list? // First special case - want to display first item in the list?
update_top(); update_top();
if (x == item_first()) {position(0); return;} if (p == item_first()) {position(0); return;}
int X, Y, W, H, Yp; bbox(X, Y, W, H); int X, Y, W, H, Yp; bbox(X, Y, W, H);
void* l = top_; void* l = top_;
@ -208,11 +208,11 @@ void Fl_Browser_::display(void* x) {
int h1; int h1;
// 2nd special case - want to display item already displayed at top of browser? // 2nd special case - want to display item already displayed at top of browser?
if (l == x) {position(real_position_+Y); return;} // scroll up a bit if (l == p) {position(real_position_+Y); return;} // scroll up a bit
// 3rd special case - want to display item just above top of browser? // 3rd special case - want to display item just above top of browser?
void* lp = item_prev(l); void* lp = item_prev(l);
if (lp == x) {position(real_position_+Y-item_quick_height(lp)); return;} if (lp == p) {position(real_position_+Y-item_quick_height(lp)); return;}
#ifdef DISPLAY_SEARCH_BOTH_WAYS_AT_ONCE #ifdef DISPLAY_SEARCH_BOTH_WAYS_AT_ONCE
// search for item. We search both up and down the list at the same time, // search for item. We search both up and down the list at the same time,
@ -221,7 +221,7 @@ void Fl_Browser_::display(void* x) {
while (l || lp) { while (l || lp) {
if (l) { if (l) {
h1 = item_quick_height(l); h1 = item_quick_height(l);
if (l == x) { if (l == p) {
if (Y <= H) { // it is visible or right at bottom if (Y <= H) { // it is visible or right at bottom
Y = Y+h1-H; // find where bottom edge is Y = Y+h1-H; // find where bottom edge is
if (Y > 0) position(real_position_+Y); // scroll down a bit if (Y > 0) position(real_position_+Y); // scroll down a bit
@ -236,7 +236,7 @@ void Fl_Browser_::display(void* x) {
if (lp) { if (lp) {
h1 = item_quick_height(lp); h1 = item_quick_height(lp);
Yp -= h1; Yp -= h1;
if (lp == x) { if (lp == p) {
if ((Yp + h1) >= 0) position(real_position_+Yp); if ((Yp + h1) >= 0) position(real_position_+Yp);
else position(real_position_+Yp-(H-h1)/2); else position(real_position_+Yp-(H-h1)/2);
return; return;
@ -250,7 +250,7 @@ void Fl_Browser_::display(void* x) {
l = top_; l = top_;
for (; l; l = item_next(l)) { for (; l; l = item_next(l)) {
h1 = item_quick_height(l); h1 = item_quick_height(l);
if (l == x) { if (l == p) {
if (Y <= H) { // it is visible or right at bottom if (Y <= H) { // it is visible or right at bottom
Y = Y+h1-H; // find where bottom edge is Y = Y+h1-H; // find where bottom edge is
if (Y > 0) position(real_position_+Y); // scroll down a bit if (Y > 0) position(real_position_+Y); // scroll down a bit
@ -267,7 +267,7 @@ void Fl_Browser_::display(void* x) {
for (; l; l = item_prev(l)) { for (; l; l = item_prev(l)) {
h1 = item_quick_height(l); h1 = item_quick_height(l);
Y -= h1; Y -= h1;
if (l == x) { if (l == p) {
if ((Y + h1) >= 0) position(real_position_+Y); if ((Y + h1) >= 0) position(real_position_+Y);
else position(real_position_+Y-(H-h1)/2); else position(real_position_+Y-(H-h1)/2);
return; return;
@ -363,8 +363,8 @@ J1:
if (l == selection_ && Fl::focus() == this) { if (l == selection_ && Fl::focus() == this) {
draw_focus(FL_NO_BOX, X, yy+Y+1, W, hh); draw_focus(FL_NO_BOX, X, yy+Y+1, W, hh);
} }
int w = item_width(l); int ww = item_width(l);
if (w > max_width) {max_width = w; max_width_item = l;} if (ww > max_width) {max_width = ww; max_width_item = l;}
} }
yy += hh; yy += hh;
} }
@ -650,7 +650,7 @@ int Fl_Browser_::handle(int event) {
position(p); position(p);
} else if (my > (Y+H) && my > py) { } else if (my > (Y+H) && my > py) {
int p = real_position_+my-(Y+H); int p = real_position_+my-(Y+H);
int h = full_height()-H; if (p > h) p = h; int hh = full_height()-H; if (p > hh) p = hh;
if (p<0) p = 0; if (p<0) p = 0;
position(p); position(p);
} }
@ -701,8 +701,8 @@ int Fl_Browser_::handle(int event) {
return 0; return 0;
} }
Fl_Browser_::Fl_Browser_(int x, int y, int w, int h, const char* l) Fl_Browser_::Fl_Browser_(int X, int Y, int W, int H, const char* l)
: Fl_Group(x, y, w, h, l), : Fl_Group(X, Y, W, H, l),
scrollbar(0, 0, 0, 0, 0), // they will be resized by draw() scrollbar(0, 0, 0, 0, 0), // they will be resized by draw()
hscrollbar(0, 0, 0, 0, 0) hscrollbar(0, 0, 0, 0, 0)
{ {
@ -755,5 +755,5 @@ void Fl_Browser_::item_select(void*, int) {}
int Fl_Browser_::item_selected(void* l) const {return l==selection_;} int Fl_Browser_::item_selected(void* l) const {return l==selection_;}
// //
// End of "$Id: Fl_Browser_.cxx,v 1.10.2.16.2.13 2002/07/18 15:43:48 easysw Exp $". // End of "$Id: Fl_Browser_.cxx,v 1.10.2.16.2.14 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Button.cxx,v 1.4.2.6.2.15 2002/06/02 17:52:36 easysw Exp $" // "$Id: Fl_Button.cxx,v 1.4.2.6.2.16 2002/08/09 01:09:48 easysw Exp $"
// //
// Button widget for the Fast Light Tool Kit (FLTK). // Button widget for the Fast Light Tool Kit (FLTK).
// //
@ -135,8 +135,8 @@ int Fl_Button::handle(int event) {
} }
} }
Fl_Button::Fl_Button(int x,int y,int w,int h, const char *l) Fl_Button::Fl_Button(int X, int Y, int W, int H, const char *l)
: Fl_Widget(x,y,w,h,l) { : Fl_Widget(X,Y,W,H,l) {
box(FL_UP_BOX); box(FL_UP_BOX);
down_box(FL_NO_BOX); down_box(FL_NO_BOX);
value_ = oldval = 0; value_ = oldval = 0;
@ -145,5 +145,5 @@ Fl_Button::Fl_Button(int x,int y,int w,int h, const char *l)
} }
// //
// End of "$Id: Fl_Button.cxx,v 1.4.2.6.2.15 2002/06/02 17:52:36 easysw Exp $". // End of "$Id: Fl_Button.cxx,v 1.4.2.6.2.16 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Chart.cxx,v 1.5.2.6.2.8 2002/06/09 18:18:50 spitzak Exp $" // "$Id: Fl_Chart.cxx,v 1.5.2.6.2.9 2002/08/09 01:09:48 easysw Exp $"
// //
// Forms-compatible chart widget for the Fast Light Tool Kit (FLTK). // Forms-compatible chart widget for the Fast Light Tool Kit (FLTK).
// //
@ -63,11 +63,11 @@ static void draw_barchart(int x,int y,int w,int h,
int i; int i;
/* Draw the bars */ /* Draw the bars */
for (i=0; i<numb; i++) { for (i=0; i<numb; i++) {
int h = (int)rint(entries[i].val*incr); int hh = (int)rint(entries[i].val*incr);
if (h < 0) if (hh < 0)
fl_rectbound(x+i*bwidth,zeroh,bwidth+1,-h+1, (Fl_Color)entries[i].col); fl_rectbound(x+i*bwidth,zeroh,bwidth+1,-hh+1, (Fl_Color)entries[i].col);
else if (h > 0) else if (hh > 0)
fl_rectbound(x+i*bwidth,zeroh-h,bwidth+1,h+1,(Fl_Color)entries[i].col); fl_rectbound(x+i*bwidth,zeroh-hh,bwidth+1,hh+1,(Fl_Color)entries[i].col);
} }
/* Draw the labels */ /* Draw the labels */
fl_color(textcolor); fl_color(textcolor);
@ -109,11 +109,11 @@ static void draw_horbarchart(int x,int y,int w,int h,
if (min == 0.0 && max == 0.0) return; /* Nothing else to draw */ if (min == 0.0 && max == 0.0) return; /* Nothing else to draw */
/* Draw the bars */ /* Draw the bars */
for (i=0; i<numb; i++) { for (i=0; i<numb; i++) {
int w = (int)rint(entries[i].val*incr); int ww = (int)rint(entries[i].val*incr);
if (w > 0) if (ww > 0)
fl_rectbound(zeroh,y+i*bwidth,w+1,bwidth+1, (Fl_Color)entries[i].col); fl_rectbound(zeroh,y+i*bwidth,ww+1,bwidth+1, (Fl_Color)entries[i].col);
else if (w < 0) else if (ww < 0)
fl_rectbound(zeroh+w,y+i*bwidth,-w+1,bwidth+1,(Fl_Color)entries[i].col); fl_rectbound(zeroh+w,y+i*bwidth,-ww+1,bwidth+1,(Fl_Color)entries[i].col);
} }
/* Draw the labels */ /* Draw the labels */
fl_color(textcolor); fl_color(textcolor);
@ -141,26 +141,26 @@ static void draw_linechart(int type, int x,int y,int w,int h,
for (i=0; i<numb; i++) { for (i=0; i<numb; i++) {
int x0 = x + (int)rint((i-.5)*bwidth); int x0 = x + (int)rint((i-.5)*bwidth);
int x1 = x + (int)rint((i+.5)*bwidth); int x1 = x + (int)rint((i+.5)*bwidth);
int y0 = i ? zeroh - (int)rint(entries[i-1].val*incr) : 0; int yy0 = i ? zeroh - (int)rint(entries[i-1].val*incr) : 0;
int y1 = zeroh - (int)rint(entries[i].val*incr); int yy1 = zeroh - (int)rint(entries[i].val*incr);
if (type == FL_SPIKE_CHART) { if (type == FL_SPIKE_CHART) {
fl_color((Fl_Color)entries[i].col); fl_color((Fl_Color)entries[i].col);
fl_line(x1, zeroh, x1, y1); fl_line(x1, zeroh, x1, yy1);
} else if (type == FL_LINE_CHART && i != 0) { } else if (type == FL_LINE_CHART && i != 0) {
fl_color((Fl_Color)entries[i-1].col); fl_color((Fl_Color)entries[i-1].col);
fl_line(x0,y0,x1,y1); fl_line(x0,yy0,x1,yy1);
} else if (type == FL_FILLED_CHART && i != 0) { } else if (type == FL_FILLED_CHART && i != 0) {
fl_color((Fl_Color)entries[i-1].col); fl_color((Fl_Color)entries[i-1].col);
if ((entries[i-1].val>0.0)!=(entries[i].val>0.0)) { if ((entries[i-1].val>0.0)!=(entries[i].val>0.0)) {
double ttt = entries[i-1].val/(entries[i-1].val-entries[i].val); double ttt = entries[i-1].val/(entries[i-1].val-entries[i].val);
int xt = x + (int)rint((i-.5+ttt)*bwidth); int xt = x + (int)rint((i-.5+ttt)*bwidth);
fl_polygon(x0,zeroh, x0,y0, xt,zeroh); fl_polygon(x0,zeroh, x0,yy0, xt,zeroh);
fl_polygon(xt,zeroh, x1,y1, x1,zeroh); fl_polygon(xt,zeroh, x1,yy1, x1,zeroh);
} else { } else {
fl_polygon(x0,zeroh, x0,y0, x1,y1, x1,zeroh); fl_polygon(x0,zeroh, x0,yy0, x1,yy1, x1,zeroh);
} }
fl_color(textcolor); fl_color(textcolor);
fl_line(x0,y0,x1,y1); fl_line(x0,yy0,x1,yy1);
} }
} }
/* Draw base line */ /* Draw base line */
@ -283,8 +283,8 @@ void Fl_Chart::draw() {
#define FL_CHART_LCOL FL_LCOL #define FL_CHART_LCOL FL_LCOL
#define FL_CHART_ALIGN FL_ALIGN_BOTTOM #define FL_CHART_ALIGN FL_ALIGN_BOTTOM
Fl_Chart::Fl_Chart(int x,int y,int w,int h,const char *l) : Fl_Chart::Fl_Chart(int X, int Y, int W, int H,const char *l) :
Fl_Widget(x,y,w,h,l) { Fl_Widget(X,Y,W,H,l) {
box(FL_BORDER_BOX); box(FL_BORDER_BOX);
align(FL_ALIGN_BOTTOM); align(FL_ALIGN_BOTTOM);
numb = 0; numb = 0;
@ -325,36 +325,36 @@ void Fl_Chart::add(double val, const char *str, unsigned col) {
redraw(); redraw();
} }
void Fl_Chart::insert(int index, double val, const char *str, unsigned col) { void Fl_Chart::insert(int ind, double val, const char *str, unsigned col) {
int i; int i;
if (index < 1 || index > numb+1) return; if (ind < 1 || ind > numb+1) return;
/* Allocate more entries if required */ /* Allocate more entries if required */
if (numb >= sizenumb) { if (numb >= sizenumb) {
sizenumb += FL_CHART_MAX; sizenumb += FL_CHART_MAX;
entries = (FL_CHART_ENTRY *)realloc(entries, sizeof(FL_CHART_ENTRY) * (sizenumb + 1)); entries = (FL_CHART_ENTRY *)realloc(entries, sizeof(FL_CHART_ENTRY) * (sizenumb + 1));
} }
// Shift entries as needed // Shift entries as needed
for (i=numb; i >= index; i--) entries[i] = entries[i-1]; for (i=numb; i >= ind; i--) entries[i] = entries[i-1];
if (numb < maxnumb || maxnumb == 0) numb++; if (numb < maxnumb || maxnumb == 0) numb++;
/* Fill in the new entry */ /* Fill in the new entry */
entries[index-1].val = float(val); entries[ind-1].val = float(val);
entries[index-1].col = col; entries[ind-1].col = col;
if (str) { if (str) {
strlcpy(entries[index-1].str,str,FL_CHART_LABEL_MAX+1); strlcpy(entries[ind-1].str,str,FL_CHART_LABEL_MAX+1);
} else { } else {
entries[index-1].str[0] = 0; entries[ind-1].str[0] = 0;
} }
redraw(); redraw();
} }
void Fl_Chart::replace(int index,double val, const char *str, unsigned col) { void Fl_Chart::replace(int ind,double val, const char *str, unsigned col) {
if (index < 1 || index > numb) return; if (ind < 1 || ind > numb) return;
entries[index-1].val = float(val); entries[ind-1].val = float(val);
entries[index-1].col = col; entries[ind-1].col = col;
if (str) { if (str) {
strlcpy(entries[index-1].str,str,FL_CHART_LABEL_MAX+1); strlcpy(entries[ind-1].str,str,FL_CHART_LABEL_MAX+1);
} else { } else {
entries[index-1].str[0] = 0; entries[ind-1].str[0] = 0;
} }
redraw(); redraw();
} }
@ -380,5 +380,5 @@ void Fl_Chart::maxsize(int m) {
} }
// //
// End of "$Id: Fl_Chart.cxx,v 1.5.2.6.2.8 2002/06/09 18:18:50 spitzak Exp $". // End of "$Id: Fl_Chart.cxx,v 1.5.2.6.2.9 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Check_Browser.cxx,v 1.1.2.4 2002/04/11 11:52:41 easysw Exp $" // "$Id: Fl_Check_Browser.cxx,v 1.1.2.5 2002/08/09 01:09:48 easysw Exp $"
// //
// Fl_Check_Browser header file for the Fast Light Tool Kit (FLTK). // Fl_Check_Browser header file for the Fast Light Tool Kit (FLTK).
// //
@ -82,8 +82,8 @@ int Fl_Check_Browser::lineno(cb_item *p0) const {
return 0; return 0;
} }
Fl_Check_Browser::Fl_Check_Browser(int x, int y, int w, int h, const char *l) Fl_Check_Browser::Fl_Check_Browser(int X, int Y, int W, int H, const char *l)
: Fl_Browser_(x, y, w, h, l) { : Fl_Browser_(X, Y, W, H, l) {
type(FL_SELECT_BROWSER); type(FL_SELECT_BROWSER);
when(FL_WHEN_NEVER); when(FL_WHEN_NEVER);
first = last = 0; first = last = 0;
@ -114,27 +114,27 @@ int Fl_Check_Browser::item_width(void *v) const {
return int(fl_width(((cb_item *)v)->text)) + CHECK_SIZE + 8; return int(fl_width(((cb_item *)v)->text)) + CHECK_SIZE + 8;
} }
void Fl_Check_Browser::item_draw(void *v, int x, int y, int, int) const { void Fl_Check_Browser::item_draw(void *v, int X, int Y, int, int) const {
cb_item *i = (cb_item *)v; cb_item *i = (cb_item *)v;
char *s = i->text; char *s = i->text;
int size = textsize(); int tsize = textsize();
Fl_Color col = textcolor(); Fl_Color col = textcolor();
int cy = y + (size + 1 - CHECK_SIZE) / 2; int cy = Y + (tsize + 1 - CHECK_SIZE) / 2;
x += 2; X += 2;
fl_color(FL_BLACK); fl_color(FL_BLACK);
fl_loop(x, cy, x, cy + CHECK_SIZE, fl_loop(X, cy, X, cy + CHECK_SIZE,
x + CHECK_SIZE, cy + CHECK_SIZE, x + CHECK_SIZE, cy); X + CHECK_SIZE, cy + CHECK_SIZE, X + CHECK_SIZE, cy);
if (i->checked) { if (i->checked) {
fl_line(x, cy, x + CHECK_SIZE, cy + CHECK_SIZE); fl_line(X, cy, X + CHECK_SIZE, cy + CHECK_SIZE);
fl_line(x, cy + CHECK_SIZE, x + CHECK_SIZE, cy); fl_line(X, cy + CHECK_SIZE, X + CHECK_SIZE, cy);
} }
fl_font(textfont(), size); fl_font(textfont(), tsize);
if (i->selected) { if (i->selected) {
col = fl_contrast(col, selection_color()); col = fl_contrast(col, selection_color());
} }
fl_color(col); fl_color(col);
fl_draw(s, x + CHECK_SIZE + 8, y + size - 1); fl_draw(s, X + CHECK_SIZE + 8, Y + tsize - 1);
} }
void Fl_Check_Browser::item_select(void *v, int state) { void Fl_Check_Browser::item_select(void *v, int state) {
@ -259,5 +259,5 @@ void Fl_Check_Browser::check_none() {
// //
// End of "$Id: Fl_Check_Browser.cxx,v 1.1.2.4 2002/04/11 11:52:41 easysw Exp $". // End of "$Id: Fl_Check_Browser.cxx,v 1.1.2.5 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Check_Button.cxx,v 1.4.2.3.2.3 2002/01/01 15:11:30 easysw Exp $" // "$Id: Fl_Check_Button.cxx,v 1.4.2.3.2.4 2002/08/09 01:09:48 easysw Exp $"
// //
// Check button widget for the Fast Light Tool Kit (FLTK). // Check button widget for the Fast Light Tool Kit (FLTK).
// //
@ -30,8 +30,8 @@
// diamond is smaller than the widget size and can be surchecked by // diamond is smaller than the widget size and can be surchecked by
// another box type, for compatability with Forms. // another box type, for compatability with Forms.
Fl_Check_Button::Fl_Check_Button(int x, int y, int w, int h, const char *l) Fl_Check_Button::Fl_Check_Button(int X, int Y, int W, int H, const char *l)
: Fl_Light_Button(x, y, w, h, l) { : Fl_Light_Button(X, Y, W, H, l) {
box(FL_NO_BOX); box(FL_NO_BOX);
down_box(FL_DOWN_BOX); down_box(FL_DOWN_BOX);
selection_color(FL_BLACK); selection_color(FL_BLACK);

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Choice.cxx,v 1.10.2.5.2.10 2002/07/09 17:18:45 easysw Exp $" // "$Id: Fl_Choice.cxx,v 1.10.2.5.2.11 2002/08/09 01:09:48 easysw Exp $"
// //
// Choice widget for the Fast Light Tool Kit (FLTK). // Choice widget for the Fast Light Tool Kit (FLTK).
// //
@ -74,8 +74,8 @@ void Fl_Choice::draw() {
draw_label(); draw_label();
} }
Fl_Choice::Fl_Choice(int x,int y,int w,int h, const char *l) Fl_Choice::Fl_Choice(int X, int Y, int W, int H, const char *l)
: Fl_Menu_(x,y,w,h,l) { : Fl_Menu_(X,Y,W,H,l) {
align(FL_ALIGN_LEFT); align(FL_ALIGN_LEFT);
when(FL_WHEN_RELEASE); when(FL_WHEN_RELEASE);
textfont(FL_HELVETICA); textfont(FL_HELVETICA);
@ -129,5 +129,5 @@ int Fl_Choice::handle(int e) {
} }
// //
// End of "$Id: Fl_Choice.cxx,v 1.10.2.5.2.10 2002/07/09 17:18:45 easysw Exp $". // End of "$Id: Fl_Choice.cxx,v 1.10.2.5.2.11 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Clock.cxx,v 1.8.2.4.2.1 2002/01/01 15:11:30 easysw Exp $" // "$Id: Fl_Clock.cxx,v 1.8.2.4.2.2 2002/08/09 01:09:48 easysw Exp $"
// //
// Clock widget for the Fast Light Tool Kit (FLTK). // Clock widget for the Fast Light Tool Kit (FLTK).
// //
@ -68,11 +68,11 @@ static void rect(double x, double y, double w, double h) {
fl_end_polygon(); fl_end_polygon();
} }
void Fl_Clock_Output::draw(int x, int y, int w, int h) { void Fl_Clock_Output::draw(int X, int Y, int W, int H) {
draw_box(box(), x, y, w, h, type()==FL_ROUND_CLOCK ? FL_GRAY : color()); draw_box(box(), X, Y, W, H, type()==FL_ROUND_CLOCK ? FL_GRAY : color());
fl_push_matrix(); fl_push_matrix();
fl_translate(x+w/2.0-.5, y+h/2.0-.5); fl_translate(X+W/2.0-.5, Y+H/2.0-.5);
fl_scale((w-1)/28.0, (h-1)/28.0); fl_scale((W-1)/28.0, (H-1)/28.0);
if (type() == FL_ROUND_CLOCK) { if (type() == FL_ROUND_CLOCK) {
fl_color(color()); fl_color(color());
fl_begin_polygon(); fl_circle(0,0,14); fl_end_polygon(); fl_begin_polygon(); fl_circle(0,0,14); fl_end_polygon();
@ -104,9 +104,9 @@ void Fl_Clock_Output::draw() {
draw_label(); draw_label();
} }
void Fl_Clock_Output::value(int h, int m, int s) { void Fl_Clock_Output::value(int H, int m, int s) {
if (h!=hour_ || m!=minute_ || s!=second_) { if (H!=hour_ || m!=minute_ || s!=second_) {
hour_ = h; minute_ = m; second_ = s; hour_ = H; minute_ = m; second_ = s;
damage(FL_DAMAGE_CHILD); damage(FL_DAMAGE_CHILD);
} }
} }
@ -117,8 +117,8 @@ void Fl_Clock_Output::value(ulong v) {
value(timeofday->tm_hour, timeofday->tm_min, timeofday->tm_sec); value(timeofday->tm_hour, timeofday->tm_min, timeofday->tm_sec);
} }
Fl_Clock_Output::Fl_Clock_Output(int x, int y, int w, int h, const char *l) Fl_Clock_Output::Fl_Clock_Output(int X, int Y, int W, int H, const char *l)
: Fl_Widget(x, y, w, h, l) { : Fl_Widget(X, Y, W, H, l) {
box(FL_UP_BOX); box(FL_UP_BOX);
selection_color(fl_gray_ramp(5)); selection_color(fl_gray_ramp(5));
align(FL_ALIGN_BOTTOM); align(FL_ALIGN_BOTTOM);
@ -130,11 +130,11 @@ Fl_Clock_Output::Fl_Clock_Output(int x, int y, int w, int h, const char *l)
//////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////
Fl_Clock::Fl_Clock(int x, int y, int w, int h, const char *l) Fl_Clock::Fl_Clock(int X, int Y, int W, int H, const char *l)
: Fl_Clock_Output(x, y, w, h, l) {} : Fl_Clock_Output(X, Y, W, H, l) {}
Fl_Clock::Fl_Clock(uchar t, int x, int y, int w, int h, const char *l) Fl_Clock::Fl_Clock(uchar t, int X, int Y, int W, int H, const char *l)
: Fl_Clock_Output(x, y, w, h, l) { : Fl_Clock_Output(X, Y, W, H, l) {
type(t); type(t);
box(t==FL_ROUND_CLOCK ? FL_NO_BOX : FL_UP_BOX); box(t==FL_ROUND_CLOCK ? FL_NO_BOX : FL_UP_BOX);
} }
@ -170,5 +170,5 @@ Fl_Clock::~Fl_Clock() {
} }
// //
// End of "$Id: Fl_Clock.cxx,v 1.8.2.4.2.1 2002/01/01 15:11:30 easysw Exp $". // End of "$Id: Fl_Clock.cxx,v 1.8.2.4.2.2 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Color_Chooser.cxx,v 1.7.2.4.2.4 2002/04/11 10:46:19 easysw Exp $" // "$Id: Fl_Color_Chooser.cxx,v 1.7.2.4.2.5 2002/08/09 01:09:48 easysw Exp $"
// //
// Color chooser for the Fast Light Tool Kit (FLTK). // Color chooser for the Fast Light Tool Kit (FLTK).
// //
@ -46,9 +46,9 @@
#define UPDATE_HUE_BOX 1 #define UPDATE_HUE_BOX 1
void Fl_Color_Chooser::hsv2rgb( void Fl_Color_Chooser::hsv2rgb(
double H, double S, double V, double& r, double& g, double& b) { double H, double S, double V, double& R, double& G, double& B) {
if (S < 5.0e-6) { if (S < 5.0e-6) {
r = g = b = V; R = G = B = V;
} else { } else {
int i = (int)H; int i = (int)H;
double f = H - (float)i; double f = H - (float)i;
@ -56,27 +56,27 @@ void Fl_Color_Chooser::hsv2rgb(
double p2 = V*(1.0-S*f); double p2 = V*(1.0-S*f);
double p3 = V*(1.0-S*(1.0-f)); double p3 = V*(1.0-S*(1.0-f));
switch (i) { switch (i) {
case 0: r = V; g = p3; b = p1; break; case 0: R = V; G = p3; B = p1; break;
case 1: r = p2; g = V; b = p1; break; case 1: R = p2; G = V; B = p1; break;
case 2: r = p1; g = V; b = p3; break; case 2: R = p1; G = V; B = p3; break;
case 3: r = p1; g = p2; b = V; break; case 3: R = p1; G = p2; B = V; break;
case 4: r = p3; g = p1; b = V; break; case 4: R = p3; G = p1; B = V; break;
case 5: r = V; g = p1; b = p2; break; case 5: R = V; G = p1; B = p2; break;
} }
} }
} }
void Fl_Color_Chooser::rgb2hsv( void Fl_Color_Chooser::rgb2hsv(
double r, double g, double b, double& H, double& S, double& V) { double R, double G, double B, double& H, double& S, double& V) {
double maxv = r > g ? r : g; if (b > maxv) maxv = b; double maxv = R > G ? R : G; if (B > maxv) maxv = B;
V = maxv; V = maxv;
if (maxv>0) { if (maxv>0) {
double minv = r < g ? r : g; if (b < minv) minv = b; double minv = R < G ? R : G; if (B < minv) minv = B;
S = 1.0 - double(minv)/maxv; S = 1.0 - double(minv)/maxv;
if (maxv > minv) { if (maxv > minv) {
if (maxv == r) {H = (g-b)/double(maxv-minv); if (H<0) H += 6.0;} if (maxv == R) {H = (G-B)/double(maxv-minv); if (H<0) H += 6.0;}
else if (maxv == g) H = 2.0+(b-r)/double(maxv-minv); else if (maxv == G) H = 2.0+(B-R)/double(maxv-minv);
else H = 4.0+(r-g)/double(maxv-minv); else H = 4.0+(R-G)/double(maxv-minv);
} }
} }
} }
@ -117,13 +117,13 @@ void Fl_Color_Chooser::set_valuators() {
} }
} }
int Fl_Color_Chooser::rgb(double r, double g, double b) { int Fl_Color_Chooser::rgb(double R, double G, double B) {
if (r == r_ && g == g_ && b == b_) return 0; if (R == r_ && G == g_ && B == b_) return 0;
r_ = r; g_ = g; b_ = b; r_ = R; g_ = G; b_ = B;
double ph = hue_; double ph = hue_;
double ps = saturation_; double ps = saturation_;
double pv = value_; double pv = value_;
rgb2hsv(r,g,b,hue_,saturation_,value_); rgb2hsv(R,G,B,hue_,saturation_,value_);
set_valuators(); set_valuators();
if (value_ != pv) { if (value_ != pv) {
#ifdef UPDATE_HUE_BOX #ifdef UPDATE_HUE_BOX
@ -137,15 +137,15 @@ int Fl_Color_Chooser::rgb(double r, double g, double b) {
return 1; return 1;
} }
int Fl_Color_Chooser::hsv(double h, double s, double v) { int Fl_Color_Chooser::hsv(double H, double S, double V) {
h = fmod(h,6.0); if (h < 0.0) h += 6.0; H = fmod(H,6.0); if (H < 0.0) H += 6.0;
if (s < 0.0) s = 0.0; else if (s > 1.0) s = 1.0; if (S < 0.0) S = 0.0; else if (S > 1.0) S = 1.0;
if (v < 0.0) v = 0.0; else if (v > 1.0) v = 1.0; if (V < 0.0) V = 0.0; else if (V > 1.0) V = 1.0;
if (h == hue_ && s == saturation_ && v == value_) return 0; if (H == hue_ && S == saturation_ && V == value_) return 0;
double ph = hue_; double ph = hue_;
double ps = saturation_; double ps = saturation_;
double pv = value_; double pv = value_;
hue_ = h; saturation_ = s; value_ = v; hue_ = H; saturation_ = S; value_ = V;
if (value_ != pv) { if (value_ != pv) {
#ifdef UPDATE_HUE_BOX #ifdef UPDATE_HUE_BOX
huebox.damage(FL_DAMAGE_SCROLL); huebox.damage(FL_DAMAGE_SCROLL);
@ -155,7 +155,7 @@ int Fl_Color_Chooser::hsv(double h, double s, double v) {
huebox.damage(FL_DAMAGE_EXPOSE); huebox.damage(FL_DAMAGE_EXPOSE);
valuebox.damage(FL_DAMAGE_SCROLL); valuebox.damage(FL_DAMAGE_SCROLL);
} }
hsv2rgb(h,s,v,r_,g_,b_); hsv2rgb(H,S,V,r_,g_,b_);
set_valuators(); set_valuators();
return 1; return 1;
} }
@ -272,11 +272,11 @@ int Flcc_HueBox::handle_key(int key) {
void Flcc_HueBox::draw() { void Flcc_HueBox::draw() {
if (damage()&FL_DAMAGE_ALL) draw_box(); if (damage()&FL_DAMAGE_ALL) draw_box();
int x1 = x()+Fl::box_dx(box()); int x1 = x()+Fl::box_dx(box());
int y1 = y()+Fl::box_dy(box()); int yy1 = y()+Fl::box_dy(box());
int w1 = w()-Fl::box_dw(box()); int w1 = w()-Fl::box_dw(box());
int h1 = h()-Fl::box_dh(box()); int h1 = h()-Fl::box_dh(box());
if (damage() == FL_DAMAGE_EXPOSE) fl_clip(x1+px,y1+py,6,6); if (damage() == FL_DAMAGE_EXPOSE) fl_clip(x1+px,yy1+py,6,6);
fl_draw_image(generate_image, this, x1, y1, w1, h1); fl_draw_image(generate_image, this, x1, yy1, w1, h1);
if (damage() == FL_DAMAGE_EXPOSE) fl_pop_clip(); if (damage() == FL_DAMAGE_EXPOSE) fl_pop_clip();
Fl_Color_Chooser* c = (Fl_Color_Chooser*)parent(); Fl_Color_Chooser* c = (Fl_Color_Chooser*)parent();
#ifdef CIRCLE #ifdef CIRCLE
@ -289,7 +289,7 @@ void Flcc_HueBox::draw() {
if (X < 0) X = 0; else if (X > w1-6) X = w1-6; if (X < 0) X = 0; else if (X > w1-6) X = w1-6;
if (Y < 0) Y = 0; else if (Y > h1-6) Y = h1-6; if (Y < 0) Y = 0; else if (Y > h1-6) Y = h1-6;
// fl_color(c->value()>.75 ? FL_BLACK : FL_WHITE); // fl_color(c->value()>.75 ? FL_BLACK : FL_WHITE);
draw_box(FL_UP_BOX,x1+X,y1+Y,6,6,Fl::focus() == this ? FL_FOREGROUND_COLOR : FL_GRAY); draw_box(FL_UP_BOX,x1+X,yy1+Y,6,6,Fl::focus() == this ? FL_FOREGROUND_COLOR : FL_GRAY);
px = X; py = Y; px = X; py = Y;
} }
@ -342,15 +342,15 @@ void Flcc_ValueBox::draw() {
Fl_Color_Chooser* c = (Fl_Color_Chooser*)parent(); Fl_Color_Chooser* c = (Fl_Color_Chooser*)parent();
c->hsv2rgb(c->hue(),c->saturation(),1.0,tr,tg,tb); c->hsv2rgb(c->hue(),c->saturation(),1.0,tr,tg,tb);
int x1 = x()+Fl::box_dx(box()); int x1 = x()+Fl::box_dx(box());
int y1 = y()+Fl::box_dy(box()); int yy1 = y()+Fl::box_dy(box());
int w1 = w()-Fl::box_dw(box()); int w1 = w()-Fl::box_dw(box());
int h1 = h()-Fl::box_dh(box()); int h1 = h()-Fl::box_dh(box());
if (damage() == FL_DAMAGE_EXPOSE) fl_clip(x1,y1+py,w1,6); if (damage() == FL_DAMAGE_EXPOSE) fl_clip(x1,yy1+py,w1,6);
fl_draw_image(generate_vimage, this, x1, y1, w1, h1); fl_draw_image(generate_vimage, this, x1, yy1, w1, h1);
if (damage() == FL_DAMAGE_EXPOSE) fl_pop_clip(); if (damage() == FL_DAMAGE_EXPOSE) fl_pop_clip();
int Y = int((1-c->value()) * (h1-6)); int Y = int((1-c->value()) * (h1-6));
if (Y < 0) Y = 0; else if (Y > h1-6) Y = h1-6; if (Y < 0) Y = 0; else if (Y > h1-6) Y = h1-6;
draw_box(FL_UP_BOX,x1,y1+Y,w1,6,Fl::focus() == this ? FL_FOREGROUND_COLOR : FL_GRAY); draw_box(FL_UP_BOX,x1,yy1+Y,w1,6,Fl::focus() == this ? FL_FOREGROUND_COLOR : FL_GRAY);
py = Y; py = Y;
} }
@ -383,19 +383,19 @@ int Flcc_ValueBox::handle_key(int key) {
void Fl_Color_Chooser::rgb_cb(Fl_Widget* o, void*) { void Fl_Color_Chooser::rgb_cb(Fl_Widget* o, void*) {
Fl_Color_Chooser* c = (Fl_Color_Chooser*)(o->parent()); Fl_Color_Chooser* c = (Fl_Color_Chooser*)(o->parent());
double r = c->rvalue.value(); double R = c->rvalue.value();
double g = c->gvalue.value(); double G = c->gvalue.value();
double b = c->bvalue.value(); double B = c->bvalue.value();
if (c->mode() == M_HSV) { if (c->mode() == M_HSV) {
if (c->hsv(r,g,b)) c->do_callback(); if (c->hsv(R,G,B)) c->do_callback();
return; return;
} }
if (c->mode() != M_RGB) { if (c->mode() != M_RGB) {
r = r/255; R = R/255;
g = g/255; G = G/255;
b = b/255; B = B/255;
} }
if (c->rgb(r,g,b)) c->do_callback(); if (c->rgb(R,G,B)) c->do_callback();
} }
void Fl_Color_Chooser::mode_cb(Fl_Widget* o, void*) { void Fl_Color_Chooser::mode_cb(Fl_Widget* o, void*) {
@ -521,5 +521,5 @@ int fl_color_chooser(const char* name, uchar& r, uchar& g, uchar& b) {
} }
// //
// End of "$Id: Fl_Color_Chooser.cxx,v 1.7.2.4.2.4 2002/04/11 10:46:19 easysw Exp $". // End of "$Id: Fl_Color_Chooser.cxx,v 1.7.2.4.2.5 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Counter.cxx,v 1.8.2.3.2.9 2002/05/24 14:19:19 easysw Exp $" // "$Id: Fl_Counter.cxx,v 1.8.2.3.2.10 2002/08/09 01:09:48 easysw Exp $"
// //
// Counter widget for the Fast Light Tool Kit (FLTK). // Counter widget for the Fast Light Tool Kit (FLTK).
// //
@ -173,8 +173,8 @@ Fl_Counter::~Fl_Counter() {
Fl::remove_timeout(repeat_callback, this); Fl::remove_timeout(repeat_callback, this);
} }
Fl_Counter::Fl_Counter(int x, int y, int w, int h, const char* l) Fl_Counter::Fl_Counter(int X, int Y, int W, int H, const char* l)
: Fl_Valuator(x, y, w, h, l) { : Fl_Valuator(X, Y, W, H, l) {
box(FL_UP_BOX); box(FL_UP_BOX);
selection_color(FL_INACTIVE_COLOR); // was FL_BLUE selection_color(FL_INACTIVE_COLOR); // was FL_BLUE
align(FL_ALIGN_BOTTOM); align(FL_ALIGN_BOTTOM);
@ -188,5 +188,5 @@ Fl_Counter::Fl_Counter(int x, int y, int w, int h, const char* l)
} }
// //
// End of "$Id: Fl_Counter.cxx,v 1.8.2.3.2.9 2002/05/24 14:19:19 easysw Exp $". // End of "$Id: Fl_Counter.cxx,v 1.8.2.3.2.10 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Dial.cxx,v 1.12.2.3.2.3 2002/05/12 11:12:56 easysw Exp $" // "$Id: Fl_Dial.cxx,v 1.12.2.3.2.4 2002/08/09 01:09:48 easysw Exp $"
// //
// Circular dial widget for the Fast Light Tool Kit (FLTK). // Circular dial widget for the Fast Light Tool Kit (FLTK).
// //
@ -31,34 +31,34 @@
// All angles are measured with 0 to the right and counter-clockwise // All angles are measured with 0 to the right and counter-clockwise
void Fl_Dial::draw(int x, int y, int w, int h) { void Fl_Dial::draw(int X, int Y, int W, int H) {
if (damage()&FL_DAMAGE_ALL) draw_box(box(), x, y, w, h, color()); if (damage()&FL_DAMAGE_ALL) draw_box(box(), X, Y, W, H, color());
x += Fl::box_dx(box()); X += Fl::box_dx(box());
y += Fl::box_dy(box()); Y += Fl::box_dy(box());
w -= Fl::box_dw(box()); W -= Fl::box_dw(box());
h -= Fl::box_dh(box()); H -= Fl::box_dh(box());
double angle = (a2-a1)*(value()-minimum())/(maximum()-minimum()) + a1; double angle = (a2-a1)*(value()-minimum())/(maximum()-minimum()) + a1;
if (type() == FL_FILL_DIAL) { if (type() == FL_FILL_DIAL) {
// foo: draw this nicely in certain round box types // foo: draw this nicely in certain round box types
int foo = (box() > _FL_ROUND_UP_BOX && Fl::box_dx(box())); int foo = (box() > _FL_ROUND_UP_BOX && Fl::box_dx(box()));
if (foo) {x--; y--; w+=2; h+=2;} if (foo) {X--; Y--; W+=2; H+=2;}
fl_color(color()); fl_color(color());
fl_pie(x, y, w-1, h-1, 270-a1, angle > a1 ? 360+270-angle : 270-360-angle); fl_pie(X, Y, W-1, H-1, 270-a1, angle > a1 ? 360+270-angle : 270-360-angle);
fl_color(selection_color()); fl_color(selection_color());
fl_pie(x, y, w-1, h-1, 270-angle, 270-a1); fl_pie(X, Y, W-1, H-1, 270-angle, 270-a1);
if (foo) { if (foo) {
fl_color(FL_FOREGROUND_COLOR); fl_color(FL_FOREGROUND_COLOR);
fl_arc(x, y, w, h, 0, 360); fl_arc(X, Y, W, H, 0, 360);
} }
return; return;
} }
if (!(damage()&FL_DAMAGE_ALL)) { if (!(damage()&FL_DAMAGE_ALL)) {
fl_color(color()); fl_color(color());
fl_pie(x+1, y+1, w-2, h-2, 0, 360); fl_pie(X+1, Y+1, W-2, H-2, 0, 360);
} }
fl_push_matrix(); fl_push_matrix();
fl_translate(x+w/2-.5, y+h/2-.5); fl_translate(X+W/2-.5, Y+H/2-.5);
fl_scale(w-1, h-1); fl_scale(W-1, H-1);
fl_rotate(45-angle); fl_rotate(45-angle);
fl_color(selection_color()); fl_color(selection_color());
if (type()) { // FL_LINE_DIAL if (type()) { // FL_LINE_DIAL
@ -88,13 +88,13 @@ void Fl_Dial::draw() {
draw_label(); draw_label();
} }
int Fl_Dial::handle(int event, int x, int y, int w, int h) { int Fl_Dial::handle(int event, int X, int Y, int W, int H) {
switch (event) { switch (event) {
case FL_PUSH: case FL_PUSH:
handle_push(); handle_push();
case FL_DRAG: { case FL_DRAG: {
int mx = Fl::event_x()-x-w/2; int mx = Fl::event_x()-X-W/2;
int my = Fl::event_y()-y-h/2; int my = Fl::event_y()-Y-H/2;
if (!mx && !my) return 1; if (!mx && !my) return 1;
double angle = 270-atan2((float)-my, (float)mx)*180/M_PI; double angle = 270-atan2((float)-my, (float)mx)*180/M_PI;
double oldangle = (a2-a1)*(value()-minimum())/(maximum()-minimum()) + a1; double oldangle = (a2-a1)*(value()-minimum())/(maximum()-minimum()) + a1;
@ -125,8 +125,8 @@ int Fl_Dial::handle(int e) {
return handle(e, x(), y(), w(), h()); return handle(e, x(), y(), w(), h());
} }
Fl_Dial::Fl_Dial(int x, int y, int w, int h, const char* l) Fl_Dial::Fl_Dial(int X, int Y, int W, int H, const char* l)
: Fl_Valuator(x, y, w, h, l) { : Fl_Valuator(X, Y, W, H, l) {
box(FL_OVAL_BOX); box(FL_OVAL_BOX);
selection_color(FL_INACTIVE_COLOR); // was 37 selection_color(FL_INACTIVE_COLOR); // was 37
a1 = 45; a1 = 45;
@ -134,5 +134,5 @@ Fl_Dial::Fl_Dial(int x, int y, int w, int h, const char* l)
} }
// //
// End of "$Id: Fl_Dial.cxx,v 1.12.2.3.2.3 2002/05/12 11:12:56 easysw Exp $". // End of "$Id: Fl_Dial.cxx,v 1.12.2.3.2.4 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_File_Browser.cxx,v 1.1.2.20 2002/07/17 15:23:58 easysw Exp $" // "$Id: Fl_File_Browser.cxx,v 1.1.2.21 2002/08/09 01:09:48 easysw Exp $"
// //
// Fl_File_Browser routines. // Fl_File_Browser routines.
// //
@ -115,7 +115,7 @@ int // O - Height in pixels
Fl_File_Browser::item_height(void *p) const // I - List item data Fl_File_Browser::item_height(void *p) const // I - List item data
{ {
FL_BLINE *line; // Pointer to line FL_BLINE *line; // Pointer to line
char *text; // Pointer into text char *t; // Pointer into text
int height; // Width of line int height; // Width of line
int textheight; // Height of text int textheight; // Height of text
@ -131,8 +131,8 @@ Fl_File_Browser::item_height(void *p) const // I - List item data
line = (FL_BLINE *)p; line = (FL_BLINE *)p;
if (line != NULL) if (line != NULL)
for (text = line->txt; *text != '\0'; text ++) for (t = line->txt; *t != '\0'; t ++)
if (*text == '\n') if (*t == '\n')
height += textheight; height += textheight;
// If we have enabled icons then add space for them... // If we have enabled icons then add space for them...
@ -156,7 +156,7 @@ Fl_File_Browser::item_width(void *p) const // I - List item data
{ {
int i; // Looping var int i; // Looping var
FL_BLINE *line; // Pointer to line FL_BLINE *line; // Pointer to line
char *text, // Pointer into text char *t, // Pointer into text
*ptr, // Pointer into fragment *ptr, // Pointer into fragment
fragment[10240]; // Fragment of text fragment[10240]; // Fragment of text
int width, // Width of line int width, // Width of line
@ -185,8 +185,8 @@ Fl_File_Browser::item_width(void *p) const // I - List item data
tempwidth = 0; tempwidth = 0;
column = 0; column = 0;
for (text = line->txt, ptr = fragment; *text != '\0'; text ++) for (t = line->txt, ptr = fragment; *t != '\0'; t ++)
if (*text == '\n') if (*t == '\n')
{ {
// Newline - nul terminate this fragment and get the width... // Newline - nul terminate this fragment and get the width...
*ptr = '\0'; *ptr = '\0';
@ -202,7 +202,7 @@ Fl_File_Browser::item_width(void *p) const // I - List item data
tempwidth = 0; tempwidth = 0;
column = 0; column = 0;
} }
else if (*text == column_char()) else if (*t == column_char())
{ {
// Advance to the next column... // Advance to the next column...
column ++; column ++;
@ -220,7 +220,7 @@ Fl_File_Browser::item_width(void *p) const // I - List item data
ptr = fragment; ptr = fragment;
} }
else else
*ptr++ = *text; *ptr++ = *t;
if (ptr > fragment) if (ptr > fragment)
{ {
@ -253,15 +253,15 @@ Fl_File_Browser::item_width(void *p) const // I - List item data
void void
Fl_File_Browser::item_draw(void *p, // I - List item data Fl_File_Browser::item_draw(void *p, // I - List item data
int x, // I - Upper-lefthand X coordinate int X, // I - Upper-lefthand X coordinate
int y, // I - Upper-lefthand Y coordinate int Y, // I - Upper-lefthand Y coordinate
int w, // I - Width of item int W, // I - Width of item
int h) const// I - Height of item int H) const// I - Height of item
{ {
int i; // Looping var int i; // Looping var
FL_BLINE *line; // Pointer to line FL_BLINE *line; // Pointer to line
Fl_Color c; // Text color Fl_Color c; // Text color
char *text, // Pointer into text char *t, // Pointer into text
*ptr, // Pointer into fragment *ptr, // Pointer into fragment
fragment[10240]; // Fragment of text fragment[10240]; // Fragment of text
int width, // Width of line int width, // Width of line
@ -288,31 +288,31 @@ Fl_File_Browser::item_draw(void *p, // I - List item data
if (Fl_File_Icon::first() == NULL) if (Fl_File_Icon::first() == NULL)
{ {
// No icons, just draw the text... // No icons, just draw the text...
x ++; X ++;
w -= 2; W -= 2;
} }
else else
{ {
// Draw the icon if it is set... // Draw the icon if it is set...
if (line->data) if (line->data)
((Fl_File_Icon *)line->data)->draw(x, y, iconsize_, iconsize_, ((Fl_File_Icon *)line->data)->draw(X, Y, iconsize_, iconsize_,
(line->flags & SELECTED) ? FL_YELLOW : (line->flags & SELECTED) ? FL_YELLOW :
FL_LIGHT2, FL_LIGHT2,
active_r()); active_r());
// Draw the text offset to the right... // Draw the text offset to the right...
x += iconsize_ + 9; X += iconsize_ + 9;
w -= iconsize_ - 10; W -= iconsize_ - 10;
// Center the text vertically... // Center the text vertically...
height = fl_height(); height = fl_height();
for (text = line->txt; *text != '\0'; text ++) for (t = line->txt; *t != '\0'; t ++)
if (*text == '\n') if (*t == '\n')
height += fl_height(); height += fl_height();
if (height < iconsize_) if (height < iconsize_)
y += (iconsize_ - height) / 2; Y += (iconsize_ - height) / 2;
} }
// Draw the text... // Draw the text...
@ -326,27 +326,27 @@ Fl_File_Browser::item_draw(void *p, // I - List item data
else else
fl_color(fl_inactive(c)); fl_color(fl_inactive(c));
for (text = line->txt, ptr = fragment; *text != '\0'; text ++) for (t = line->txt, ptr = fragment; *t != '\0'; t ++)
if (*text == '\n') if (*t == '\n')
{ {
// Newline - nul terminate this fragment and draw it... // Newline - nul terminate this fragment and draw it...
*ptr = '\0'; *ptr = '\0';
fl_draw(fragment, x + width, y, w - width, fl_height(), fl_draw(fragment, X + width, Y, W - width, fl_height(),
(Fl_Align)(FL_ALIGN_LEFT | FL_ALIGN_CLIP), 0, 0); (Fl_Align)(FL_ALIGN_LEFT | FL_ALIGN_CLIP), 0, 0);
// Point back to the start of the fragment... // Point back to the start of the fragment...
ptr = fragment; ptr = fragment;
width = 0; width = 0;
y += fl_height(); Y += fl_height();
column = 0; column = 0;
} }
else if (*text == column_char()) else if (*t == column_char())
{ {
// Tab - nul terminate this fragment and draw it... // Tab - nul terminate this fragment and draw it...
*ptr = '\0'; *ptr = '\0';
int cW = w - width; // Clip width... int cW = W - width; // Clip width...
if (columns) if (columns)
{ {
@ -357,7 +357,7 @@ Fl_File_Browser::item_draw(void *p, // I - List item data
cW = columns[i]; cW = columns[i];
} }
fl_draw(fragment, x + width, y, cW, fl_height(), fl_draw(fragment, X + width, Y, cW, fl_height(),
(Fl_Align)(FL_ALIGN_LEFT | FL_ALIGN_CLIP), 0, 0); (Fl_Align)(FL_ALIGN_LEFT | FL_ALIGN_CLIP), 0, 0);
// Advance to the next column... // Advance to the next column...
@ -373,14 +373,14 @@ Fl_File_Browser::item_draw(void *p, // I - List item data
ptr = fragment; ptr = fragment;
} }
else else
*ptr++ = *text; *ptr++ = *t;
if (ptr > fragment) if (ptr > fragment)
{ {
// Nul terminate this fragment and draw it... // Nul terminate this fragment and draw it...
*ptr = '\0'; *ptr = '\0';
fl_draw(fragment, x + width, y, w - width, fl_height(), fl_draw(fragment, X + width, Y, W - width, fl_height(),
(Fl_Align)(FL_ALIGN_LEFT | FL_ALIGN_CLIP), 0, 0); (Fl_Align)(FL_ALIGN_LEFT | FL_ALIGN_CLIP), 0, 0);
} }
} }
@ -390,12 +390,12 @@ Fl_File_Browser::item_draw(void *p, // I - List item data
// 'Fl_File_Browser::Fl_File_Browser()' - Create a Fl_File_Browser widget. // 'Fl_File_Browser::Fl_File_Browser()' - Create a Fl_File_Browser widget.
// //
Fl_File_Browser::Fl_File_Browser(int x, // I - Upper-lefthand X coordinate Fl_File_Browser::Fl_File_Browser(int X, // I - Upper-lefthand X coordinate
int y, // I - Upper-lefthand Y coordinate int Y, // I - Upper-lefthand Y coordinate
int w, // I - Width in pixels int W, // I - Width in pixels
int h, // I - Height in pixels int H, // I - Height in pixels
const char *l) // I - Label text const char *l) // I - Label text
: Fl_Browser(x, y, w, h, l) : Fl_Browser(X, Y, W, H, l)
{ {
// Initialize the filter pattern, current directory, and icon size... // Initialize the filter pattern, current directory, and icon size...
pattern_ = "*"; pattern_ = "*";
@ -645,5 +645,5 @@ Fl_File_Browser::filter(const char *pattern) // I - Pattern string
// //
// End of "$Id: Fl_File_Browser.cxx,v 1.1.2.20 2002/07/17 15:23:58 easysw Exp $". // End of "$Id: Fl_File_Browser.cxx,v 1.1.2.21 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_File_Chooser2.cxx,v 1.1.2.22 2002/08/05 17:50:25 easysw Exp $" // "$Id: Fl_File_Chooser2.cxx,v 1.1.2.23 2002/08/09 01:09:48 easysw Exp $"
// //
// More Fl_File_Chooser routines. // More Fl_File_Chooser routines.
// //
@ -110,7 +110,7 @@ int // O - Number of selected files
Fl_File_Chooser::count() Fl_File_Chooser::count()
{ {
int i; // Looping var int i; // Looping var
int count; // Number of selected files int fcount; // Number of selected files
const char *filename; // Filename in input field or list const char *filename; // Filename in input field or list
char pathname[1024]; // Full path to file char pathname[1024]; // Full path to file
@ -126,7 +126,7 @@ Fl_File_Chooser::count()
return (strcmp(filename, directory_) != 0); return (strcmp(filename, directory_) != 0);
} }
for (i = 1, count = 0; i <= fileList->size(); i ++) for (i = 1, fcount = 0; i <= fileList->size(); i ++)
if (fileList->selected(i)) if (fileList->selected(i))
{ {
// See if this file is a directory... // See if this file is a directory...
@ -137,10 +137,10 @@ Fl_File_Chooser::count()
strlcpy(pathname, filename, sizeof(pathname)); strlcpy(pathname, filename, sizeof(pathname));
if (!fl_filename_isdir(pathname)) if (!fl_filename_isdir(pathname))
count ++; fcount ++;
} }
return (count); return (fcount);
} }
@ -209,19 +209,19 @@ Fl_File_Chooser::directory(const char *d)// I - Directory to change to
void void
Fl_File_Chooser::favoritesButtonCB() Fl_File_Chooser::favoritesButtonCB()
{ {
int value; // Current selection int v; // Current selection
char pathname[1024], // Pathname char pathname[1024], // Pathname
menuname[2048]; // Menu name menuname[2048]; // Menu name
value = favoritesButton->value(); v = favoritesButton->value();
if (!value) { if (!v) {
// Add current directory to favorites... // Add current directory to favorites...
if (getenv("HOME")) value = favoritesButton->size() - 5; if (getenv("HOME")) v = favoritesButton->size() - 5;
else value = favoritesButton->size() - 4; else v = favoritesButton->size() - 4;
sprintf(menuname, "favorite%02d", value); sprintf(menuname, "favorite%02d", v);
prefs_.set(menuname, directory_); prefs_.set(menuname, directory_);
@ -231,14 +231,14 @@ Fl_File_Chooser::favoritesButtonCB()
if (favoritesButton->size() > 104) { if (favoritesButton->size() > 104) {
((Fl_Menu_Item *)favoritesButton->menu())[0].deactivate(); ((Fl_Menu_Item *)favoritesButton->menu())[0].deactivate();
} }
} else if (value == 1) { } else if (v == 1) {
// Manage favorites... // Manage favorites...
favoritesCB(0); favoritesCB(0);
} else if (value == 2) { } else if (v == 2) {
// Filesystems/My Computer // Filesystems/My Computer
directory(""); directory("");
} else { } else {
unquote_pathname(pathname, favoritesButton->text(value), sizeof(pathname)); unquote_pathname(pathname, favoritesButton->text(v), sizeof(pathname));
directory(pathname); directory(pathname);
} }
} }
@ -986,7 +986,7 @@ const char * // O - Filename or NULL
Fl_File_Chooser::value(int f) // I - File number Fl_File_Chooser::value(int f) // I - File number
{ {
int i; // Looping var int i; // Looping var
int count; // Number of selected files int fcount; // Number of selected files
const char *name; // Current filename const char *name; // Current filename
char *slash; // Trailing slash, if any char *slash; // Trailing slash, if any
static char pathname[1024]; // Filename + directory static char pathname[1024]; // Filename + directory
@ -1006,7 +1006,7 @@ Fl_File_Chooser::value(int f) // I - File number
} else return name; } else return name;
} }
for (i = 1, count = 0; i <= fileList->size(); i ++) for (i = 1, fcount = 0; i <= fileList->size(); i ++)
if (fileList->selected(i)) { if (fileList->selected(i)) {
// See if this file is a directory... // See if this file is a directory...
name = fileList->text(i); name = fileList->text(i);
@ -1019,8 +1019,8 @@ Fl_File_Chooser::value(int f) // I - File number
if (!fl_filename_isdir(pathname)) { if (!fl_filename_isdir(pathname)) {
// Nope, see if this this is "the one"... // Nope, see if this this is "the one"...
count ++; fcount ++;
if (count == f) return (pathname); if (fcount == f) return (pathname);
} }
} }
@ -1036,7 +1036,7 @@ void
Fl_File_Chooser::value(const char *filename) // I - Filename + directory Fl_File_Chooser::value(const char *filename) // I - Filename + directory
{ {
int i, // Looping var int i, // Looping var
count; // Number of items in list fcount; // Number of items in list
char *slash; // Directory separator char *slash; // Directory separator
char pathname[1024]; // Local copy of filename char pathname[1024]; // Local copy of filename
@ -1081,12 +1081,12 @@ Fl_File_Chooser::value(const char *filename) // I - Filename + directory
okButton->activate(); okButton->activate();
// Then find the file in the file list and select it... // Then find the file in the file list and select it...
count = fileList->size(); fcount = fileList->size();
fileList->deselect(0); fileList->deselect(0);
fileList->redraw(); fileList->redraw();
for (i = 1; i <= count; i ++) for (i = 1; i <= fcount; i ++)
#if defined(WIN32) || defined(__EMX__) #if defined(WIN32) || defined(__EMX__)
if (strcasecmp(fileList->text(i), slash) == 0) { if (strcasecmp(fileList->text(i), slash) == 0) {
#else #else
@ -1143,5 +1143,5 @@ unquote_pathname(char *dst, // O - Destination string
// //
// End of "$Id: Fl_File_Chooser2.cxx,v 1.1.2.22 2002/08/05 17:50:25 easysw Exp $". // End of "$Id: Fl_File_Chooser2.cxx,v 1.1.2.23 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_File_Icon2.cxx,v 1.1.2.15 2002/06/28 21:04:36 easysw Exp $" // "$Id: Fl_File_Icon2.cxx,v 1.1.2.16 2002/08/09 01:09:48 easysw Exp $"
// //
// Fl_File_Icon system icon routines. // Fl_File_Icon system icon routines.
// //
@ -777,9 +777,7 @@ load_kde_icons(const char *directory) // I - Directory to load
{ {
if (entries[i]->d_name[0] != '.') if (entries[i]->d_name[0] != '.')
{ {
strcpy(full, directory); snprintf(full, sizeof(full), "%s/%s", directory, entries[i]->d_name);
strcat(full,"/");
strcat(full, entries[i]->d_name);
if (fl_filename_isdir(full)) if (fl_filename_isdir(full))
load_kde_icons(full); load_kde_icons(full);
@ -820,11 +818,11 @@ load_kde_mimelnk(const char *filename)
while (fgets(tmp, sizeof(tmp), fp)) while (fgets(tmp, sizeof(tmp), fp))
{ {
if ((val = get_kde_val(tmp, "Icon")) != NULL) if ((val = get_kde_val(tmp, "Icon")) != NULL)
strcpy(iconfilename, val); strlcpy(iconfilename, val, sizeof(iconfilename));
else if ((val = get_kde_val(tmp, "MimeType")) != NULL) else if ((val = get_kde_val(tmp, "MimeType")) != NULL)
strcpy(mimetype, val); strlcpy(mimetype, val, sizeof(mimetype));
else if ((val = get_kde_val(tmp, "Patterns")) != NULL) else if ((val = get_kde_val(tmp, "Patterns")) != NULL)
strcpy(pattern, val); strlcpy(pattern, val, sizeof(pattern));
} }
fclose(fp); fclose(fp);
@ -902,7 +900,7 @@ kde_to_fltk_pattern(const char *kdepattern)
pattern = (char *)malloc(strlen(kdepattern) + 3); pattern = (char *)malloc(strlen(kdepattern) + 3);
strcpy(pattern, "{"); strcpy(pattern, "{");
strcat(pattern, kdepattern); strcpy(pattern + 1, kdepattern);
if (pattern[strlen(pattern) - 1] == ';') if (pattern[strlen(pattern) - 1] == ';')
pattern[strlen(pattern) - 1] = '\0'; pattern[strlen(pattern) - 1] = '\0';
@ -944,5 +942,5 @@ get_kde_val(char *str,
// //
// End of "$Id: Fl_File_Icon2.cxx,v 1.1.2.15 2002/06/28 21:04:36 easysw Exp $". // End of "$Id: Fl_File_Icon2.cxx,v 1.1.2.16 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_File_Input.cxx,v 1.1.2.5 2002/07/30 18:40:50 easysw Exp $" // "$Id: Fl_File_Input.cxx,v 1.1.2.6 2002/08/09 01:09:48 easysw Exp $"
// //
// File_Input header file for the Fast Light Tool Kit (FLTK). // File_Input header file for the Fast Light Tool Kit (FLTK).
// //
@ -49,8 +49,8 @@
// 'Fl_File_Input::Fl_File_Input()' - Create a Fl_File_Input widget. // 'Fl_File_Input::Fl_File_Input()' - Create a Fl_File_Input widget.
// //
Fl_File_Input::Fl_File_Input(int x, int y, int w, int h, const char *l) Fl_File_Input::Fl_File_Input(int X, int Y, int W, int H, const char *l)
: Fl_Input(x, y, w, h, l) { : Fl_Input(X, Y, W, H, l) {
buttons_[0] = 0; buttons_[0] = 0;
errorcolor_ = FL_RED; errorcolor_ = FL_RED;
ok_entry_ = 1; ok_entry_ = 1;
@ -270,5 +270,5 @@ Fl_File_Input::handle_button(int event) // I - Event
// //
// End of "$Id: Fl_File_Input.cxx,v 1.1.2.5 2002/07/30 18:40:50 easysw Exp $". // End of "$Id: Fl_File_Input.cxx,v 1.1.2.6 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Font.H,v 1.6.2.3.2.2 2002/03/06 18:11:01 easysw Exp $" // "$Id: Fl_Font.H,v 1.6.2.3.2.3 2002/08/09 01:09:48 easysw Exp $"
// //
// Font definitions for the Fast Light Tool Kit (FLTK). // Font definitions for the Fast Light Tool Kit (FLTK).
// //
@ -75,6 +75,7 @@ extern FL_EXPORT Fl_FontSize *fl_fontsize; // the currently selected one
struct Fl_Fontdesc { struct Fl_Fontdesc {
const char *name; const char *name;
char fontname[128]; // "Pretty" font name
Fl_FontSize *first; // linked list of sizes of this style Fl_FontSize *first; // linked list of sizes of this style
# ifndef WIN32 # ifndef WIN32
char **xlist; // matched X font names char **xlist; // matched X font names
@ -93,5 +94,5 @@ FL_EXPORT char *fl_find_fontsize(char *name);
#endif #endif
// //
// End of "$Id: Fl_Font.H,v 1.6.2.3.2.2 2002/03/06 18:11:01 easysw Exp $". // End of "$Id: Fl_Font.H,v 1.6.2.3.2.3 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Group.cxx,v 1.8.2.8.2.17 2002/07/30 18:40:50 easysw Exp $" // "$Id: Fl_Group.cxx,v 1.8.2.8.2.18 2002/08/09 01:09:48 easysw Exp $"
// //
// Group widget for the Fast Light Tool Kit (FLTK). // Group widget for the Fast Light Tool Kit (FLTK).
// //
@ -484,35 +484,35 @@ void Fl_Group::resize(int X, int Y, int W, int H) {
for (int i=children_; i--;) { for (int i=children_; i--;) {
Fl_Widget* o = *a++; Fl_Widget* o = *a++;
#if 1 #if 1
int X = *p++; int XX = *p++;
if (X >= IR) X += dw; if (XX >= IR) XX += dw;
else if (X > IX) X = IX+((X-IX)*(IR+dw-IX)+(IR-IX)/2)/(IR-IX); else if (XX > IX) XX = IX+((XX-IX)*(IR+dw-IX)+(IR-IX)/2)/(IR-IX);
int R = *p++; int R = *p++;
if (R >= IR) R += dw; if (R >= IR) R += dw;
else if (R > IX) R = IX+((R-IX)*(IR+dw-IX)+(IR-IX)/2)/(IR-IX); else if (R > IX) R = IX+((R-IX)*(IR+dw-IX)+(IR-IX)/2)/(IR-IX);
int Y = *p++; int YY = *p++;
if (Y >= IB) Y += dh; if (YY >= IB) YY += dh;
else if (Y > IY) Y = IY+((Y-IY)*(IB+dh-IY)+(IB-IY)/2)/(IB-IY); else if (YY > IY) YY = IY+((YY-IY)*(IB+dh-IY)+(IB-IY)/2)/(IB-IY);
int B = *p++; int B = *p++;
if (B >= IB) B += dh; if (B >= IB) B += dh;
else if (B > IY) B = IY+((B-IY)*(IB+dh-IY)+(IB-IY)/2)/(IB-IY); else if (B > IY) B = IY+((B-IY)*(IB+dh-IY)+(IB-IY)/2)/(IB-IY);
#else // much simpler code from Francois Ostiguy: #else // much simpler code from Francois Ostiguy:
int X = *p++; int XX = *p++;
if (X >= IR) X += dw; if (XX >= IR) XX += dw;
else if (X > IX) X = X + dw * (X-IX)/(IR-IX); else if (XX > IX) XX += dw * (XX-IX)/(IR-IX);
int R = *p++; int R = *p++;
if (R >= IR) R += dw; if (R >= IR) R += dw;
else if (R > IX) R = R + dw * (R-IX)/(IR-IX); else if (R > IX) R = R + dw * (R-IX)/(IR-IX);
int Y = *p++; int YY = *p++;
if (Y >= IB) Y += dh; if (YY >= IB) YY += dh;
else if (Y > IY) Y = Y + dh*(Y-IY)/(IB-IY); else if (YY > IY) YY = YY + dh*(YY-IY)/(IB-IY);
int B = *p++; int B = *p++;
if (B >= IB) B += dh; if (B >= IB) B += dh;
else if (B > IY) B = B + dh*(B-IY)/(IB-IY); else if (B > IY) B = B + dh*(B-IY)/(IB-IY);
#endif #endif
o->resize(X+dx, Y+dy, R-X, B-Y); o->resize(XX+dx, YY+dy, R-XX, B-YY);
} }
} }
@ -535,57 +535,57 @@ void Fl_Group::draw() {
} }
// Draw a child only if it needs it: // Draw a child only if it needs it:
void Fl_Group::update_child(Fl_Widget& w) const { void Fl_Group::update_child(Fl_Widget& widget) const {
if (w.damage() && w.visible() && w.type() < FL_WINDOW && if (widget.damage() && widget.visible() && widget.type() < FL_WINDOW &&
fl_not_clipped(w.x(), w.y(), w.w(), w.h())) { fl_not_clipped(widget.x(), widget.y(), widget.w(), widget.h())) {
w.draw(); widget.draw();
w.clear_damage(); widget.clear_damage();
} }
} }
// Force a child to redraw: // Force a child to redraw:
void Fl_Group::draw_child(Fl_Widget& w) const { void Fl_Group::draw_child(Fl_Widget& widget) const {
if (w.visible() && w.type() < FL_WINDOW && if (widget.visible() && widget.type() < FL_WINDOW &&
fl_not_clipped(w.x(), w.y(), w.w(), w.h())) { fl_not_clipped(widget.x(), widget.y(), widget.w(), widget.h())) {
w.clear_damage(FL_DAMAGE_ALL); widget.clear_damage(FL_DAMAGE_ALL);
w.draw(); widget.draw();
w.clear_damage(); widget.clear_damage();
} }
} }
extern char fl_draw_shortcut; extern char fl_draw_shortcut;
// Parents normally call this to draw outside labels: // Parents normally call this to draw outside labels:
void Fl_Group::draw_outside_label(const Fl_Widget& w) const { void Fl_Group::draw_outside_label(const Fl_Widget& widget) const {
if (!w.visible()) return; if (!widget.visible()) return;
// skip any labels that are inside the widget: // skip any labels that are inside the widget:
if (!(w.align()&15) || (w.align() & FL_ALIGN_INSIDE)) return; if (!(widget.align()&15) || (widget.align() & FL_ALIGN_INSIDE)) return;
// invent a box that is outside the widget: // invent a box that is outside the widget:
int align = w.align(); int a = widget.align();
int X = w.x(); int X = widget.x();
int Y = w.y(); int Y = widget.y();
int W = w.w(); int W = widget.w();
int H = w.h(); int H = widget.h();
if (align & FL_ALIGN_TOP) { if (a & FL_ALIGN_TOP) {
align ^= (FL_ALIGN_BOTTOM|FL_ALIGN_TOP); a ^= (FL_ALIGN_BOTTOM|FL_ALIGN_TOP);
Y = y(); Y = y();
H = w.y()-Y; H = widget.y()-Y;
} else if (align & FL_ALIGN_BOTTOM) { } else if (a & FL_ALIGN_BOTTOM) {
align ^= (FL_ALIGN_BOTTOM|FL_ALIGN_TOP); a ^= (FL_ALIGN_BOTTOM|FL_ALIGN_TOP);
Y = Y+H; Y = Y+H;
H = y()+h()-Y; H = y()+h()-Y;
} else if (align & FL_ALIGN_LEFT) { } else if (a & FL_ALIGN_LEFT) {
align ^= (FL_ALIGN_LEFT|FL_ALIGN_RIGHT); a ^= (FL_ALIGN_LEFT|FL_ALIGN_RIGHT);
X = x(); X = x();
W = w.x()-X-3; W = widget.x()-X-3;
} else if (align & FL_ALIGN_RIGHT) { } else if (a & FL_ALIGN_RIGHT) {
align ^= (FL_ALIGN_LEFT|FL_ALIGN_RIGHT); a ^= (FL_ALIGN_LEFT|FL_ALIGN_RIGHT);
X = X+W+3; X = X+W+3;
W = x()+this->w()-X; W = x()+this->w()-X;
} }
w.draw_label(X,Y,W,H,(Fl_Align)align); widget.draw_label(X,Y,W,H,(Fl_Align)a);
} }
// //
// End of "$Id: Fl_Group.cxx,v 1.8.2.8.2.17 2002/07/30 18:40:50 easysw Exp $". // End of "$Id: Fl_Group.cxx,v 1.8.2.8.2.18 2002/08/09 01:09:48 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Help_View.cxx,v 1.1.2.37 2002/07/18 15:27:21 easysw Exp $" // "$Id: Fl_Help_View.cxx,v 1.1.2.38 2002/08/09 01:09:49 easysw Exp $"
// //
// Fl_Help_View widget routines. // Fl_Help_View widget routines.
// //
@ -322,7 +322,7 @@ Fl_Help_View::draw()
attr[1024]; // Attribute buffer attr[1024]; // Attribute buffer
int xx, yy, ww, hh; // Current positions and sizes int xx, yy, ww, hh; // Current positions and sizes
int line; // Current line int line; // Current line
unsigned char font, size; // Current font and size unsigned char font, fsize; // Current font and size
int head, pre, // Flags for text int head, pre, // Flags for text
needspace; // Do we need whitespace? needspace; // Do we need whitespace?
Fl_Boxtype b = box() ? box() : FL_DOWN_BOX; Fl_Boxtype b = box() ? box() : FL_DOWN_BOX;
@ -371,7 +371,7 @@ Fl_Help_View::draw()
head = 0; head = 0;
needspace = 0; needspace = 0;
initfont(font, size); initfont(font, fsize);
for (ptr = block->start, s = buf; ptr < block->end;) for (ptr = block->start, s = buf; ptr < block->end;)
{ {
@ -399,8 +399,8 @@ Fl_Help_View::draw()
fl_draw(buf, xx + x() - leftline_, yy + y()); fl_draw(buf, xx + x() - leftline_, yy + y());
xx += ww; xx += ww;
if ((size + 2) > hh) if ((fsize + 2) > hh)
hh = size + 2; hh = fsize + 2;
needspace = 0; needspace = 0;
} }
@ -419,7 +419,7 @@ Fl_Help_View::draw()
line ++; line ++;
xx = block->line[line]; xx = block->line[line];
yy += hh; yy += hh;
hh = size + 2; hh = fsize + 2;
} }
else if (*ptr == '\t') else if (*ptr == '\t')
{ {
@ -430,8 +430,8 @@ Fl_Help_View::draw()
else else
*s++ = ' '; *s++ = ' ';
if ((size + 2) > hh) if ((fsize + 2) > hh)
hh = size + 2; hh = fsize + 2;
ptr ++; ptr ++;
} }
@ -514,28 +514,28 @@ Fl_Help_View::draw()
{ {
if (tolower(buf[0]) == 'h') if (tolower(buf[0]) == 'h')
{ {
font = FL_HELVETICA_BOLD; font = FL_HELVETICA_BOLD;
size = textsize_ + '7' - buf[1]; fsize = textsize_ + '7' - buf[1];
} }
else if (strcasecmp(buf, "DT") == 0) else if (strcasecmp(buf, "DT") == 0)
{ {
font = textfont_ | FL_ITALIC; font = textfont_ | FL_ITALIC;
size = textsize_; fsize = textsize_;
} }
else if (strcasecmp(buf, "PRE") == 0) else if (strcasecmp(buf, "PRE") == 0)
{ {
font = FL_COURIER; font = FL_COURIER;
size = textsize_; fsize = textsize_;
pre = 1; pre = 1;
} }
if (strcasecmp(buf, "LI") == 0) if (strcasecmp(buf, "LI") == 0)
{ {
fl_font(FL_SYMBOL, size); fl_font(FL_SYMBOL, fsize);
fl_draw("\267", xx - size + x() - leftline_, yy + y()); fl_draw("\267", xx - fsize + x() - leftline_, yy + y());
} }
pushfont(font, size); pushfont(font, fsize);
} }
else if (strcasecmp(buf, "A") == 0 && else if (strcasecmp(buf, "A") == 0 &&
get_attr(attrs, "HREF", attr, sizeof(attr)) != NULL) get_attr(attrs, "HREF", attr, sizeof(attr)) != NULL)
@ -544,21 +544,21 @@ Fl_Help_View::draw()
fl_color(textcolor_); fl_color(textcolor_);
else if (strcasecmp(buf, "B") == 0 || else if (strcasecmp(buf, "B") == 0 ||
strcasecmp(buf, "STRONG") == 0) strcasecmp(buf, "STRONG") == 0)
pushfont(font |= FL_BOLD, size); pushfont(font |= FL_BOLD, fsize);
else if (strcasecmp(buf, "TD") == 0 || else if (strcasecmp(buf, "TD") == 0 ||
strcasecmp(buf, "TH") == 0) strcasecmp(buf, "TH") == 0)
{ {
int tx, ty, tw, th; int tx, ty, tw, th;
if (tolower(buf[1]) == 'h') if (tolower(buf[1]) == 'h')
pushfont(font |= FL_BOLD, size); pushfont(font |= FL_BOLD, fsize);
else else
pushfont(font = textfont_, size); pushfont(font = textfont_, fsize);
tx = block->x - 4 - leftline_; tx = block->x - 4 - leftline_;
ty = block->y - topline_ - size - 3; ty = block->y - topline_ - fsize - 3;
tw = block->w - block->x + 7; tw = block->w - block->x + 7;
th = block->h + size - 5; th = block->h + fsize - 5;
if (tx < 0) if (tx < 0)
{ {
@ -587,14 +587,14 @@ Fl_Help_View::draw()
} }
else if (strcasecmp(buf, "I") == 0 || else if (strcasecmp(buf, "I") == 0 ||
strcasecmp(buf, "EM") == 0) strcasecmp(buf, "EM") == 0)
pushfont(font |= FL_ITALIC, size); pushfont(font |= FL_ITALIC, fsize);
else if (strcasecmp(buf, "CODE") == 0 || else if (strcasecmp(buf, "CODE") == 0 ||
strcasecmp(buf, "TT") == 0) strcasecmp(buf, "TT") == 0)
pushfont(font = FL_COURIER, size); pushfont(font = FL_COURIER, fsize);
else if (strcasecmp(buf, "KBD") == 0) else if (strcasecmp(buf, "KBD") == 0)
pushfont(font = FL_COURIER_BOLD, size); pushfont(font = FL_COURIER_BOLD, fsize);
else if (strcasecmp(buf, "VAR") == 0) else if (strcasecmp(buf, "VAR") == 0)
pushfont(font = FL_COURIER_ITALIC, size); pushfont(font = FL_COURIER_ITALIC, fsize);
else if (strcasecmp(buf, "/HEAD") == 0) else if (strcasecmp(buf, "/HEAD") == 0)
head = 0; head = 0;
else if (strcasecmp(buf, "/H1") == 0 || else if (strcasecmp(buf, "/H1") == 0 ||
@ -611,10 +611,10 @@ Fl_Help_View::draw()
strcasecmp(buf, "/TT") == 0 || strcasecmp(buf, "/TT") == 0 ||
strcasecmp(buf, "/KBD") == 0 || strcasecmp(buf, "/KBD") == 0 ||
strcasecmp(buf, "/VAR") == 0) strcasecmp(buf, "/VAR") == 0)
popfont(font, size); popfont(font, fsize);
else if (strcasecmp(buf, "/PRE") == 0) else if (strcasecmp(buf, "/PRE") == 0)
{ {
popfont(font, size); popfont(font, fsize);
pre = 0; pre = 0;
} }
else if (strcasecmp(buf, "IMG") == 0) else if (strcasecmp(buf, "IMG") == 0)
@ -678,7 +678,7 @@ Fl_Help_View::draw()
line ++; line ++;
xx = block->line[line]; xx = block->line[line];
yy += hh; yy += hh;
hh = size + 2; hh = fsize + 2;
needspace = 0; needspace = 0;
ptr ++; ptr ++;
@ -713,15 +713,15 @@ Fl_Help_View::draw()
ptr = strchr(ptr, ';') + 1; ptr = strchr(ptr, ';') + 1;
} }
if ((size + 2) > hh) if ((fsize + 2) > hh)
hh = size + 2; hh = fsize + 2;
} }
else else
{ {
*s++ = *ptr++; *s++ = *ptr++;
if ((size + 2) > hh) if ((fsize + 2) > hh)
hh = size + 2; hh = fsize + 2;
} }
} }
@ -774,13 +774,13 @@ Fl_Help_View::format()
attr[1024], // Attribute buffer attr[1024], // Attribute buffer
wattr[1024], // Width attribute buffer wattr[1024], // Width attribute buffer
hattr[1024], // Height attribute buffer hattr[1024], // Height attribute buffer
link[1024]; // Link destination linkdest[1024]; // Link destination
int xx, yy, ww, hh; // Size of current text fragment int xx, yy, ww, hh; // Size of current text fragment
int line; // Current line in block int line; // Current line in block
int links; // Links for current line int links; // Links for current line
unsigned char font, size; // Current font and size unsigned char font, fsize; // Current font and size
unsigned char border; // Draw border? unsigned char border; // Draw border?
int align, // Current alignment int talign, // Current alignment
newalign, // New alignment newalign, // New alignment
head, // In the <HEAD> section? head, // In the <HEAD> section?
pre, // <PRE> text? pre, // <PRE> text?
@ -816,24 +816,24 @@ Fl_Help_View::format()
return; return;
// Setup for formatting... // Setup for formatting...
initfont(font, size); initfont(font, fsize);
line = 0; line = 0;
links = 0; links = 0;
xx = 4; xx = 4;
yy = size + 2; yy = fsize + 2;
ww = 0; ww = 0;
column = 0; column = 0;
border = 0; border = 0;
hh = 0; hh = 0;
block = add_block(value_, xx, yy, hsize_, 0); block = add_block(value_, xx, yy, hsize_, 0);
row = 0; row = 0;
head = 0; head = 0;
pre = 0; pre = 0;
align = LEFT; talign = LEFT;
newalign = LEFT; newalign = LEFT;
needspace = 0; needspace = 0;
link[0] = '\0'; linkdest[0] = '\0';
for (ptr = value_, s = buf; *ptr;) for (ptr = value_, s = buf; *ptr;)
{ {
@ -867,24 +867,24 @@ Fl_Help_View::format()
hh = 0; hh = 0;
} }
if (link[0]) if (linkdest[0])
add_link(link, xx, yy - size, ww, size); add_link(linkdest, xx, yy - fsize, ww, fsize);
xx += ww; xx += ww;
if ((size + 2) > hh) if ((fsize + 2) > hh)
hh = size + 2; hh = fsize + 2;
needspace = 0; needspace = 0;
} }
else if (pre) else if (pre)
{ {
// Add a link as needed... // Add a link as needed...
if (link[0]) if (linkdest[0])
add_link(link, xx, yy - hh, ww, hh); add_link(linkdest, xx, yy - hh, ww, hh);
xx += ww; xx += ww;
if ((size + 2) > hh) if ((fsize + 2) > hh)
hh = size + 2; hh = fsize + 2;
// Handle preformatted text... // Handle preformatted text...
while (isspace(*ptr)) while (isspace(*ptr))
@ -897,13 +897,13 @@ Fl_Help_View::format()
xx = block->x; xx = block->x;
yy += hh; yy += hh;
block->h += hh; block->h += hh;
hh = size + 2; hh = fsize + 2;
} }
else else
xx += (int)fl_width(' '); xx += (int)fl_width(' ');
if ((size + 2) > hh) if ((fsize + 2) > hh)
hh = size + 2; hh = fsize + 2;
ptr ++; ptr ++;
} }
@ -965,13 +965,13 @@ Fl_Help_View::format()
else if (strcasecmp(buf, "A") == 0) else if (strcasecmp(buf, "A") == 0)
{ {
if (get_attr(attrs, "NAME", attr, sizeof(attr)) != NULL) if (get_attr(attrs, "NAME", attr, sizeof(attr)) != NULL)
add_target(attr, yy - size - 2); add_target(attr, yy - fsize - 2);
if (get_attr(attrs, "HREF", attr, sizeof(attr)) != NULL) if (get_attr(attrs, "HREF", attr, sizeof(attr)) != NULL)
strlcpy(link, attr, sizeof(link)); strlcpy(linkdest, attr, sizeof(linkdest));
} }
else if (strcasecmp(buf, "/A") == 0) else if (strcasecmp(buf, "/A") == 0)
link[0] = '\0'; linkdest[0] = '\0';
else if (strcasecmp(buf, "BODY") == 0) else if (strcasecmp(buf, "BODY") == 0)
{ {
bgcolor_ = get_color(get_attr(attrs, "BGCOLOR", attr, sizeof(attr)), bgcolor_ = get_color(get_attr(attrs, "BGCOLOR", attr, sizeof(attr)),
@ -1016,8 +1016,8 @@ Fl_Help_View::format()
strcasecmp(buf, "OL") == 0 || strcasecmp(buf, "OL") == 0 ||
strcasecmp(buf, "DL") == 0) strcasecmp(buf, "DL") == 0)
{ {
block->h += size + 2; block->h += fsize + 2;
xx += 4 * size; xx += 4 * fsize;
} }
else if (strcasecmp(buf, "TABLE") == 0) else if (strcasecmp(buf, "TABLE") == 0)
{ {
@ -1028,7 +1028,7 @@ Fl_Help_View::format()
tc = rc = get_color(get_attr(attrs, "BGCOLOR", attr, sizeof(attr)), bgcolor_); tc = rc = get_color(get_attr(attrs, "BGCOLOR", attr, sizeof(attr)), bgcolor_);
block->h += size + 2; block->h += fsize + 2;
format_table(&table_width, columns, start); format_table(&table_width, columns, start);
@ -1043,27 +1043,27 @@ Fl_Help_View::format()
if (tolower(buf[0]) == 'h' && isdigit(buf[1])) if (tolower(buf[0]) == 'h' && isdigit(buf[1]))
{ {
font = FL_HELVETICA_BOLD; font = FL_HELVETICA_BOLD;
size = textsize_ + '7' - buf[1]; fsize = textsize_ + '7' - buf[1];
} }
else if (strcasecmp(buf, "DT") == 0) else if (strcasecmp(buf, "DT") == 0)
{ {
font = textfont_ | FL_ITALIC; font = textfont_ | FL_ITALIC;
size = textsize_; fsize = textsize_;
} }
else if (strcasecmp(buf, "PRE") == 0) else if (strcasecmp(buf, "PRE") == 0)
{ {
font = FL_COURIER; font = FL_COURIER;
size = textsize_; fsize = textsize_;
pre = 1; pre = 1;
} }
else else
{ {
font = textfont_; font = textfont_;
size = textsize_; fsize = textsize_;
} }
pushfont(font, size); pushfont(font, fsize);
yy = block->y + block->h; yy = block->y + block->h;
hh = 0; hh = 0;
@ -1072,11 +1072,11 @@ Fl_Help_View::format()
strcasecmp(buf, "DD") == 0 || strcasecmp(buf, "DD") == 0 ||
strcasecmp(buf, "DT") == 0 || strcasecmp(buf, "DT") == 0 ||
strcasecmp(buf, "P") == 0) strcasecmp(buf, "P") == 0)
yy += size + 2; yy += fsize + 2;
else if (strcasecmp(buf, "HR") == 0) else if (strcasecmp(buf, "HR") == 0)
{ {
hh += 2 * size; hh += 2 * fsize;
yy += size; yy += fsize;
} }
if (row) if (row)
@ -1088,9 +1088,9 @@ Fl_Help_View::format()
line = 0; line = 0;
if (strcasecmp(buf, "CENTER") == 0) if (strcasecmp(buf, "CENTER") == 0)
newalign = align = CENTER; newalign = talign = CENTER;
else else
newalign = get_align(attrs, align); newalign = get_align(attrs, talign);
} }
else if (strcasecmp(buf, "/CENTER") == 0 || else if (strcasecmp(buf, "/CENTER") == 0 ||
strcasecmp(buf, "/P") == 0 || strcasecmp(buf, "/P") == 0 ||
@ -1114,20 +1114,20 @@ Fl_Help_View::format()
strcasecmp(buf, "/OL") == 0 || strcasecmp(buf, "/OL") == 0 ||
strcasecmp(buf, "/DL") == 0) strcasecmp(buf, "/DL") == 0)
{ {
xx -= 4 * size; xx -= 4 * fsize;
block->h += size + 2; block->h += fsize + 2;
} }
else if (strcasecmp(buf, "/TABLE") == 0) else if (strcasecmp(buf, "/TABLE") == 0)
block->h += size + 2; block->h += fsize + 2;
else if (strcasecmp(buf, "/PRE") == 0) else if (strcasecmp(buf, "/PRE") == 0)
{ {
pre = 0; pre = 0;
hh = 0; hh = 0;
} }
else if (strcasecmp(buf, "/CENTER") == 0) else if (strcasecmp(buf, "/CENTER") == 0)
align = LEFT; talign = LEFT;
popfont(font, size); popfont(font, fsize);
while (isspace(*ptr)) while (isspace(*ptr))
ptr ++; ptr ++;
@ -1136,7 +1136,7 @@ Fl_Help_View::format()
yy += hh; yy += hh;
if (tolower(buf[2]) == 'l') if (tolower(buf[2]) == 'l')
yy += size + 2; yy += fsize + 2;
if (row) if (row)
block = add_block(ptr, xx, yy, block->w, 0); block = add_block(ptr, xx, yy, block->w, 0);
@ -1146,7 +1146,7 @@ Fl_Help_View::format()
needspace = 0; needspace = 0;
hh = 0; hh = 0;
line = 0; line = 0;
newalign = align; newalign = talign;
} }
else if (strcasecmp(buf, "TR") == 0) else if (strcasecmp(buf, "TR") == 0)
{ {
@ -1233,9 +1233,9 @@ Fl_Help_View::format()
else else
font = textfont_; font = textfont_;
size = textsize_; fsize = textsize_;
xx = blocks_[row].x + size + 3; xx = blocks_[row].x + fsize + 3;
for (i = 0; i < column; i ++) for (i = 0; i < column; i ++)
xx += columns[i] + 6; xx += columns[i] + 6;
@ -1253,7 +1253,7 @@ Fl_Help_View::format()
block --; block --;
} }
pushfont(font, size); pushfont(font, fsize);
yy = blocks_[row].y; yy = blocks_[row].y;
hh = 0; hh = 0;
@ -1272,21 +1272,21 @@ Fl_Help_View::format()
else if ((strcasecmp(buf, "/TD") == 0 || else if ((strcasecmp(buf, "/TD") == 0 ||
strcasecmp(buf, "/TH") == 0) && row) strcasecmp(buf, "/TH") == 0) && row)
{ {
popfont(font, size); popfont(font, fsize);
} }
else if (strcasecmp(buf, "B") == 0 || else if (strcasecmp(buf, "B") == 0 ||
strcasecmp(buf, "STRONG") == 0) strcasecmp(buf, "STRONG") == 0)
pushfont(font |= FL_BOLD, size); pushfont(font |= FL_BOLD, fsize);
else if (strcasecmp(buf, "I") == 0 || else if (strcasecmp(buf, "I") == 0 ||
strcasecmp(buf, "EM") == 0) strcasecmp(buf, "EM") == 0)
pushfont(font |= FL_ITALIC, size); pushfont(font |= FL_ITALIC, fsize);
else if (strcasecmp(buf, "CODE") == 0 || else if (strcasecmp(buf, "CODE") == 0 ||
strcasecmp(buf, "TT") == 0) strcasecmp(buf, "TT") == 0)
pushfont(font = FL_COURIER, size); pushfont(font = FL_COURIER, fsize);
else if (strcasecmp(buf, "KBD") == 0) else if (strcasecmp(buf, "KBD") == 0)
pushfont(font = FL_COURIER_BOLD, size); pushfont(font = FL_COURIER_BOLD, fsize);
else if (strcasecmp(buf, "VAR") == 0) else if (strcasecmp(buf, "VAR") == 0)
pushfont(font = FL_COURIER_ITALIC, size); pushfont(font = FL_COURIER_ITALIC, fsize);
else if (strcasecmp(buf, "/B") == 0 || else if (strcasecmp(buf, "/B") == 0 ||
strcasecmp(buf, "/STRONG") == 0 || strcasecmp(buf, "/STRONG") == 0 ||
strcasecmp(buf, "/I") == 0 || strcasecmp(buf, "/I") == 0 ||
@ -1295,7 +1295,7 @@ Fl_Help_View::format()
strcasecmp(buf, "/TT") == 0 || strcasecmp(buf, "/TT") == 0 ||
strcasecmp(buf, "/KBD") == 0 || strcasecmp(buf, "/KBD") == 0 ||
strcasecmp(buf, "/VAR") == 0) strcasecmp(buf, "/VAR") == 0)
popfont(font, size); popfont(font, fsize);
else if (strcasecmp(buf, "IMG") == 0) else if (strcasecmp(buf, "IMG") == 0)
{ {
Fl_Shared_Image *img = 0; Fl_Shared_Image *img = 0;
@ -1334,8 +1334,8 @@ Fl_Help_View::format()
hh = 0; hh = 0;
} }
if (link[0]) if (linkdest[0])
add_link(link, xx, yy - height, ww, height); add_link(linkdest, xx, yy - height, ww, height);
xx += ww; xx += ww;
if ((height + 2) > hh) if ((height + 2) > hh)
@ -1346,8 +1346,8 @@ Fl_Help_View::format()
} }
else if (*ptr == '\n' && pre) else if (*ptr == '\n' && pre)
{ {
if (link[0]) if (linkdest[0])
add_link(link, xx, yy - hh, ww, hh); add_link(linkdest, xx, yy - hh, ww, hh);
if (xx > hsize_) { if (xx > hsize_) {
hsize_ = xx; hsize_ = xx;
@ -1381,8 +1381,8 @@ Fl_Help_View::format()
ptr = strchr(ptr, ';') + 1; ptr = strchr(ptr, ';') + 1;
} }
if ((size + 2) > hh) if ((fsize + 2) > hh)
hh = size + 2; hh = fsize + 2;
} }
else else
{ {
@ -1391,8 +1391,8 @@ Fl_Help_View::format()
else else
ptr ++; ptr ++;
if ((size + 2) > hh) if ((fsize + 2) > hh)
hh = size + 2; hh = fsize + 2;
} }
} }
@ -1422,12 +1422,12 @@ Fl_Help_View::format()
hh = 0; hh = 0;
} }
if (link[0]) if (linkdest[0])
add_link(link, xx, yy - size, ww, size); add_link(linkdest, xx, yy - fsize, ww, fsize);
xx += ww; xx += ww;
if ((size + 2) > hh) if ((fsize + 2) > hh)
hh = size + 2; hh = fsize + 2;
needspace = 0; needspace = 0;
} }
@ -1493,7 +1493,7 @@ Fl_Help_View::format_table(int *table_width, // O - Total table width
*attrs, // Pointer to attributes *attrs, // Pointer to attributes
*start; // Start of element *start; // Start of element
int minwidths[MAX_COLUMNS]; // Minimum widths for each column int minwidths[MAX_COLUMNS]; // Minimum widths for each column
unsigned char font, size; // Current font and size unsigned char font, fsize; // Current font and size
// Clear widths... // Clear widths...
@ -1584,33 +1584,33 @@ Fl_Help_View::format_table(int *table_width, // O - Total table width
if (tolower(buf[0]) == 'h' && isdigit(buf[1])) if (tolower(buf[0]) == 'h' && isdigit(buf[1]))
{ {
font = FL_HELVETICA_BOLD; font = FL_HELVETICA_BOLD;
size = textsize_ + '7' - buf[1]; fsize = textsize_ + '7' - buf[1];
} }
else if (strcasecmp(buf, "DT") == 0) else if (strcasecmp(buf, "DT") == 0)
{ {
font = textfont_ | FL_ITALIC; font = textfont_ | FL_ITALIC;
size = textsize_; fsize = textsize_;
} }
else if (strcasecmp(buf, "PRE") == 0) else if (strcasecmp(buf, "PRE") == 0)
{ {
font = FL_COURIER; font = FL_COURIER;
size = textsize_; fsize = textsize_;
pre = 1; pre = 1;
} }
else if (strcasecmp(buf, "LI") == 0) else if (strcasecmp(buf, "LI") == 0)
{ {
width += 4 * size; width += 4 * fsize;
font = textfont_; font = textfont_;
size = textsize_; fsize = textsize_;
} }
else else
{ {
font = textfont_; font = textfont_;
size = textsize_; fsize = textsize_;
} }
pushfont(font, size); pushfont(font, fsize);
} }
else if (strcasecmp(buf, "/CENTER") == 0 || else if (strcasecmp(buf, "/CENTER") == 0 ||
strcasecmp(buf, "/P") == 0 || strcasecmp(buf, "/P") == 0 ||
@ -1628,7 +1628,7 @@ Fl_Help_View::format_table(int *table_width, // O - Total table width
width = 0; width = 0;
needspace = 0; needspace = 0;
popfont(font, size); popfont(font, fsize);
} }
else if (strcasecmp(buf, "TR") == 0 || strcasecmp(buf, "/TR") == 0 || else if (strcasecmp(buf, "TR") == 0 || strcasecmp(buf, "/TR") == 0 ||
strcasecmp(buf, "/TABLE") == 0) strcasecmp(buf, "/TABLE") == 0)
@ -1703,9 +1703,9 @@ Fl_Help_View::format_table(int *table_width, // O - Total table width
else else
font = textfont_; font = textfont_;
size = textsize_; fsize = textsize_;
pushfont(font, size); pushfont(font, fsize);
if (get_attr(attrs, "WIDTH", attr, sizeof(attr)) != NULL) if (get_attr(attrs, "WIDTH", attr, sizeof(attr)) != NULL)
max_width = get_length(attr); max_width = get_length(attr);
@ -1718,21 +1718,21 @@ Fl_Help_View::format_table(int *table_width, // O - Total table width
strcasecmp(buf, "/TH") == 0) strcasecmp(buf, "/TH") == 0)
{ {
incell = 0; incell = 0;
popfont(font, size); popfont(font, fsize);
} }
else if (strcasecmp(buf, "B") == 0 || else if (strcasecmp(buf, "B") == 0 ||
strcasecmp(buf, "STRONG") == 0) strcasecmp(buf, "STRONG") == 0)
pushfont(font |= FL_BOLD, size); pushfont(font |= FL_BOLD, fsize);
else if (strcasecmp(buf, "I") == 0 || else if (strcasecmp(buf, "I") == 0 ||
strcasecmp(buf, "EM") == 0) strcasecmp(buf, "EM") == 0)
pushfont(font |= FL_ITALIC, size); pushfont(font |= FL_ITALIC, fsize);
else if (strcasecmp(buf, "CODE") == 0 || else if (strcasecmp(buf, "CODE") == 0 ||
strcasecmp(buf, "TT") == 0) strcasecmp(buf, "TT") == 0)
pushfont(font = FL_COURIER, size); pushfont(font = FL_COURIER, fsize);
else if (strcasecmp(buf, "KBD") == 0) else if (strcasecmp(buf, "KBD") == 0)
pushfont(font = FL_COURIER_BOLD, size); pushfont(font = FL_COURIER_BOLD, fsize);
else if (strcasecmp(buf, "VAR") == 0) else if (strcasecmp(buf, "VAR") == 0)
pushfont(font = FL_COURIER_ITALIC, size); pushfont(font = FL_COURIER_ITALIC, fsize);
else if (strcasecmp(buf, "/B") == 0 || else if (strcasecmp(buf, "/B") == 0 ||
strcasecmp(buf, "/STRONG") == 0 || strcasecmp(buf, "/STRONG") == 0 ||
strcasecmp(buf, "/I") == 0 || strcasecmp(buf, "/I") == 0 ||
@ -1741,7 +1741,7 @@ Fl_Help_View::format_table(int *table_width, // O - Total table width
strcasecmp(buf, "/TT") == 0 || strcasecmp(buf, "/TT") == 0 ||
strcasecmp(buf, "/KBD") == 0 || strcasecmp(buf, "/KBD") == 0 ||
strcasecmp(buf, "/VAR") == 0) strcasecmp(buf, "/VAR") == 0)
popfont(font, size); popfont(font, fsize);
else if (strcasecmp(buf, "IMG") == 0 && incell) else if (strcasecmp(buf, "IMG") == 0 && incell)
{ {
Fl_Shared_Image *img = 0; Fl_Shared_Image *img = 0;
@ -1873,7 +1873,7 @@ Fl_Help_View::format_table(int *table_width, // O - Total table width
int // O - Alignment int // O - Alignment
Fl_Help_View::get_align(const char *p, // I - Pointer to start of attrs Fl_Help_View::get_align(const char *p, // I - Pointer to start of attrs
int a) // I - Default alignment int a) // I - Default alignment
{ {
char buf[255]; // Alignment value char buf[255]; // Alignment value
@ -2042,18 +2042,24 @@ Fl_Help_View::get_image(const char *name, int W, int H) {
// See if the image can be found... // See if the image can be found...
if (strchr(directory_, ':') != NULL && strchr(name, ':') == NULL) { if (strchr(directory_, ':') != NULL && strchr(name, ':') == NULL) {
if (name[0] == '/') { if (name[0] == '/') {
strcpy(temp, directory_); strlcpy(temp, directory_, sizeof(temp));
if ((tempptr = strrchr(strchr(directory_, ':') + 3, '/')) != NULL) strcpy(tempptr, name);
else strcat(temp, name); if ((tempptr = strrchr(strchr(directory_, ':') + 3, '/')) != NULL) {
} else sprintf(temp, "%s/%s", directory_, name); strlcpy(tempptr, name, sizeof(temp) - (tempptr - temp));
} else {
strlcat(temp, name, sizeof(temp));
}
} else {
snprintf(temp, sizeof(temp), "%s/%s", directory_, name);
}
if (link_) localname = (*link_)(this, temp); if (link_) localname = (*link_)(this, temp);
else localname = temp; else localname = temp;
} else if (name[0] != '/' && strchr(name, ':') == NULL) { } else if (name[0] != '/' && strchr(name, ':') == NULL) {
if (directory_[0]) sprintf(temp, "%s/%s", directory_, name); if (directory_[0]) snprintf(temp, sizeof(temp), "%s/%s", directory_, name);
else { else {
getcwd(dir, sizeof(dir)); getcwd(dir, sizeof(dir));
sprintf(temp, "file:%s/%s", dir, name); snprintf(temp, sizeof(temp), "file:%s/%s", dir, name);
} }
if (link_) localname = (*link_)(this, temp); if (link_) localname = (*link_)(this, temp);
@ -2103,7 +2109,7 @@ Fl_Help_View::handle(int event) // I - Event to handle
{ {
int i; // Looping var int i; // Looping var
int xx, yy; // Adjusted mouse position int xx, yy; // Adjusted mouse position
Fl_Help_Link *link; // Current link Fl_Help_Link *linkp; // Current link
char target[32]; // Current target char target[32]; // Current target
@ -2126,9 +2132,9 @@ Fl_Help_View::handle(int event) // I - Event to handle
} }
// Handle mouse clicks on links... // Handle mouse clicks on links...
for (i = nlinks_, link = links_; i > 0; i --, link ++) for (i = nlinks_, linkp = links_; i > 0; i --, linkp ++)
if (xx >= link->x && xx < link->w && if (xx >= linkp->x && xx < linkp->w &&
yy >= link->y && yy < link->h) yy >= linkp->y && yy < linkp->h)
break; break;
if (!i) if (!i)
@ -2145,11 +2151,11 @@ Fl_Help_View::handle(int event) // I - Event to handle
{ {
fl_cursor(FL_CURSOR_DEFAULT); fl_cursor(FL_CURSOR_DEFAULT);
strlcpy(target, link->name, sizeof(target)); strlcpy(target, linkp->name, sizeof(target));
set_changed(); set_changed();
if (strcmp(link->filename, filename_) != 0 && link->filename[0]) if (strcmp(linkp->filename, filename_) != 0 && linkp->filename[0])
{ {
char dir[1024]; // Current directory char dir[1024]; // Current directory
char temp[1024], // Temporary filename char temp[1024], // Temporary filename
@ -2157,34 +2163,35 @@ Fl_Help_View::handle(int event) // I - Event to handle
if (strchr(directory_, ':') != NULL && if (strchr(directory_, ':') != NULL &&
strchr(link->filename, ':') == NULL) strchr(linkp->filename, ':') == NULL)
{ {
if (link->filename[0] == '/') if (linkp->filename[0] == '/')
{ {
strcpy(temp, directory_); strlcpy(temp, directory_, sizeof(temp));
if ((tempptr = strrchr(strchr(directory_, ':') + 3, '/')) != NULL) if ((tempptr = strrchr(strchr(directory_, ':') + 3, '/')) != NULL)
strcpy(tempptr, link->filename); strlcpy(tempptr, linkp->filename, sizeof(temp));
else else
strcat(temp, link->filename); strlcat(temp, linkp->filename, sizeof(temp));
} }
else else
sprintf(temp, "%s/%s", directory_, link->filename); snprintf(temp, sizeof(temp), "%s/%s", directory_, linkp->filename);
} }
else if (link->filename[0] != '/' && strchr(link->filename, ':') == NULL) else if (linkp->filename[0] != '/' && strchr(linkp->filename, ':') == NULL)
{ {
if (directory_[0]) if (directory_[0])
sprintf(temp, "%s/%s", directory_, link->filename); snprintf(temp, sizeof(temp), "%s/%s", directory_, linkp->filename);
else else
{ {
getcwd(dir, sizeof(dir)); getcwd(dir, sizeof(dir));
sprintf(temp, "file:%s/%s", dir, link->filename); snprintf(temp, sizeof(temp), "file:%s/%s", dir, linkp->filename);
} }
} }
else else
strcpy(temp, link->filename); strlcpy(temp, linkp->filename, sizeof(temp));
if (link->name[0]) if (linkp->name[0])
sprintf(temp + strlen(temp), "#%s", link->name); snprintf(temp + strlen(temp), sizeof(temp) - strlen(temp), "#%s",
linkp->name);
load(temp); load(temp);
} }
@ -2641,5 +2648,5 @@ hscrollbar_callback(Fl_Widget *s, void *)
// //
// End of "$Id: Fl_Help_View.cxx,v 1.1.2.37 2002/07/18 15:27:21 easysw Exp $". // End of "$Id: Fl_Help_View.cxx,v 1.1.2.38 2002/08/09 01:09:49 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Image.cxx,v 1.5.2.3.2.22 2002/08/05 17:50:25 easysw Exp $" // "$Id: Fl_Image.cxx,v 1.5.2.3.2.23 2002/08/09 01:09:49 easysw Exp $"
// //
// Image drawing code for the Fast Light Tool Kit (FLTK). // Image drawing code for the Fast Light Tool Kit (FLTK).
// //
@ -67,8 +67,8 @@ void Fl_Image::color_average(Fl_Color, float) {
void Fl_Image::desaturate() { void Fl_Image::desaturate() {
} }
void Fl_Image::label(Fl_Widget* w) { void Fl_Image::label(Fl_Widget* widget) {
w->image(this); widget->image(this);
} }
void Fl_Image::label(Fl_Menu_Item* m) { void Fl_Image::label(Fl_Menu_Item* m) {
@ -380,8 +380,8 @@ void Fl_RGB_Image::draw(int XP, int YP, int WP, int HP, int cx, int cy) {
#endif #endif
} }
void Fl_RGB_Image::label(Fl_Widget* w) { void Fl_RGB_Image::label(Fl_Widget* widget) {
w->image(this); widget->image(this);
} }
void Fl_RGB_Image::label(Fl_Menu_Item* m) { void Fl_RGB_Image::label(Fl_Menu_Item* m) {
@ -391,5 +391,5 @@ void Fl_RGB_Image::label(Fl_Menu_Item* m) {
// //
// End of "$Id: Fl_Image.cxx,v 1.5.2.3.2.22 2002/08/05 17:50:25 easysw Exp $". // End of "$Id: Fl_Image.cxx,v 1.5.2.3.2.23 2002/08/09 01:09:49 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Input.cxx,v 1.10.2.15.2.12 2002/07/20 05:56:44 easysw Exp $" // "$Id: Fl_Input.cxx,v 1.10.2.15.2.13 2002/08/09 01:09:49 easysw Exp $"
// //
// Input widget for the Fast Light Tool Kit (FLTK). // Input widget for the Fast Light Tool Kit (FLTK).
// //
@ -388,10 +388,10 @@ int Fl_Input::handle(int event) {
w()-Fl::box_dw(b), h()-Fl::box_dh(b)); w()-Fl::box_dw(b), h()-Fl::box_dh(b));
} }
Fl_Input::Fl_Input(int x, int y, int w, int h, const char *l) Fl_Input::Fl_Input(int X, int Y, int W, int H, const char *l)
: Fl_Input_(x, y, w, h, l) { : Fl_Input_(X, Y, W, H, l) {
} }
// //
// End of "$Id: Fl_Input.cxx,v 1.10.2.15.2.12 2002/07/20 05:56:44 easysw Exp $". // End of "$Id: Fl_Input.cxx,v 1.10.2.15.2.13 2002/08/09 01:09:49 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Input_.cxx,v 1.21.2.11.2.19 2002/07/30 18:40:50 easysw Exp $" // "$Id: Fl_Input_.cxx,v 1.21.2.11.2.20 2002/08/09 01:09:49 easysw Exp $"
// //
// Common input widget routines for the Fast Light Tool Kit (FLTK). // Common input widget routines for the Fast Light Tool Kit (FLTK).
// //
@ -749,8 +749,8 @@ int Fl_Input_::handletext(int event, int X, int Y, int W, int H) {
/*------------------------------*/ /*------------------------------*/
Fl_Input_::Fl_Input_(int x, int y, int w, int h, const char* l) Fl_Input_::Fl_Input_(int X, int Y, int W, int H, const char* l)
: Fl_Widget(x, y, w, h, l) { : Fl_Widget(X, Y, W, H, l) {
box(FL_DOWN_BOX); box(FL_DOWN_BOX);
color(FL_BACKGROUND2_COLOR, FL_SELECTION_COLOR); color(FL_BACKGROUND2_COLOR, FL_SELECTION_COLOR);
align(FL_ALIGN_LEFT); align(FL_ALIGN_LEFT);
@ -848,5 +848,5 @@ Fl_Input_::~Fl_Input_() {
} }
// //
// End of "$Id: Fl_Input_.cxx,v 1.21.2.11.2.19 2002/07/30 18:40:50 easysw Exp $". // End of "$Id: Fl_Input_.cxx,v 1.21.2.11.2.20 2002/08/09 01:09:49 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Light_Button.cxx,v 1.4.2.3.2.19 2002/07/24 12:16:57 easysw Exp $" // "$Id: Fl_Light_Button.cxx,v 1.4.2.3.2.20 2002/08/09 01:09:49 easysw Exp $"
// //
// Lighted button widget for the Fast Light Tool Kit (FLTK). // Lighted button widget for the Fast Light Tool Kit (FLTK).
// //
@ -134,13 +134,13 @@ int Fl_Light_Button::handle(int event) {
} }
} }
Fl_Light_Button::Fl_Light_Button(int x, int y, int w, int h, const char* l) Fl_Light_Button::Fl_Light_Button(int X, int Y, int W, int H, const char* l)
: Fl_Button(x, y, w, h, l) { : Fl_Button(X, Y, W, H, l) {
type(FL_TOGGLE_BUTTON); type(FL_TOGGLE_BUTTON);
selection_color(FL_YELLOW); selection_color(FL_YELLOW);
align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
} }
// //
// End of "$Id: Fl_Light_Button.cxx,v 1.4.2.3.2.19 2002/07/24 12:16:57 easysw Exp $". // End of "$Id: Fl_Light_Button.cxx,v 1.4.2.3.2.20 2002/08/09 01:09:49 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Menu.cxx,v 1.18.2.12.2.16 2002/07/24 12:16:57 easysw Exp $" // "$Id: Fl_Menu.cxx,v 1.18.2.12.2.17 2002/08/09 01:09:49 easysw Exp $"
// //
// Menu code for the Fast Light Tool Kit (FLTK). // Menu code for the Fast Light Tool Kit (FLTK).
// //
@ -266,8 +266,8 @@ menuwindow::menuwindow(const Fl_Menu_Item* m, int X, int Y, int Wp, int Hp,
if (t) Wtitle = t->measure(&Htitle, button) + 12; if (t) Wtitle = t->measure(&Htitle, button) + 12;
int W = 0; int W = 0;
if (m) for (; m->text; m = m->next()) { if (m) for (; m->text; m = m->next()) {
int h; int w1 = m->measure(&h, button); int hh; int w1 = m->measure(&hh, button);
if (h+LEADING>itemheight) itemheight = h+LEADING; if (hh+LEADING>itemheight) itemheight = hh+LEADING;
if (m->flags&(FL_SUBMENU|FL_SUBMENU_POINTER)) w1 += 14; if (m->flags&(FL_SUBMENU|FL_SUBMENU_POINTER)) w1 += 14;
if (w1 > W) W = w1; if (w1 > W) W = w1;
if (m->shortcut_) { if (m->shortcut_) {
@ -324,42 +324,41 @@ void menuwindow::autoscroll(int n) {
//////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////
void menuwindow::drawentry(const Fl_Menu_Item* m, int n, int erase) { void menuwindow::drawentry(const Fl_Menu_Item* m, int n, int eraseit) {
if (!m) return; // this happens if -1 is selected item and redrawn if (!m) return; // this happens if -1 is selected item and redrawn
int BW = Fl::box_dx(box()); int BW = Fl::box_dx(box());
int x = BW; int xx = BW;
int W = this->w(); int W = w();
int w = W-2*BW-1; int ww = W-2*BW-1;
int y = BW+1+n*itemheight; int yy = BW+1+n*itemheight;
int h = itemheight - LEADING; int hh = itemheight - LEADING;
if (erase && n != selected) { if (eraseit && n != selected) {
fl_color(button && !Fl::scheme() ? button->color() : FL_GRAY); fl_color(button && !Fl::scheme() ? button->color() : FL_GRAY);
fl_rectf(x+1, y-(LEADING-2)/2, w-2, h+(LEADING-2)); fl_rectf(xx+1, yy-(LEADING-2)/2, ww-2, hh+(LEADING-2));
} }
m->draw(x, y, w, h, button, n==selected); m->draw(xx, yy, ww, hh, button, n==selected);
// the shortcuts and arrows assumme fl_color() was left set by draw(): // the shortcuts and arrows assumme fl_color() was left set by draw():
if (m->submenu()) { if (m->submenu()) {
int sz = (h-5)&-2; int sz = (hh-5)&-2;
int y1 = y+(h-sz)/2; int y1 = yy+(hh-sz)/2;
int x1 = x+w-sz-3; int x1 = xx+ww-sz-3;
fl_polygon(x1, y1, x1, y1+sz, x1+sz, y1+sz/2); fl_polygon(x1, y1, x1, y1+sz, x1+sz, y1+sz/2);
} else if (m->shortcut_) { } else if (m->shortcut_) {
Fl_Font f = button ? button->textfont() : FL_HELVETICA; Fl_Font f = button ? button->textfont() : FL_HELVETICA;
fl_font(f, button ? button->textsize() : FL_NORMAL_SIZE); fl_font(f, button ? button->textsize() : FL_NORMAL_SIZE);
fl_draw(fl_shortcut_label(m->shortcut_), x, y, w-3, h, FL_ALIGN_RIGHT); fl_draw(fl_shortcut_label(m->shortcut_), xx, yy, ww-3, hh, FL_ALIGN_RIGHT);
} }
if (m->flags & FL_MENU_DIVIDER) { if (m->flags & FL_MENU_DIVIDER) {
fl_color(FL_DARK3); fl_color(FL_DARK3);
fl_xyline(BW-1, y+h+(LEADING-2)/2, W-2*BW+2); fl_xyline(BW-1, yy+hh+(LEADING-2)/2, W-2*BW+2);
fl_color(FL_LIGHT3); fl_color(FL_LIGHT3);
fl_xyline(BW-1, y+h+((LEADING-2)/2+1), W-2*BW+2); fl_xyline(BW-1, yy+hh+((LEADING-2)/2+1), W-2*BW+2);
} }
} }
void menutitle::draw() { void menutitle::draw() {
@ -367,7 +366,6 @@ void menutitle::draw() {
} }
void menuwindow::draw() { void menuwindow::draw() {
if (damage() != FL_DAMAGE_CHILD) { // complete redraw if (damage() != FL_DAMAGE_CHILD) { // complete redraw
fl_draw_box(box(), 0, 0, w(), h(), color()); fl_draw_box(box(), 0, 0, w(), h(), color());
if (menu) { if (menu) {
@ -395,12 +393,12 @@ int menuwindow::find_selected(int mx, int my) {
my -= y(); my -= y();
if (my < 0 || my >= h()) return -1; if (my < 0 || my >= h()) return -1;
if (!itemheight) { // menubar if (!itemheight) { // menubar
int x = 3; int n = 0; int xx = 3; int n = 0;
const Fl_Menu_Item* m = menu; const Fl_Menu_Item* m = menu;
for (; ; m = m->next(), n++) { for (; ; m = m->next(), n++) {
if (!m->text) return -1; if (!m->text) return -1;
x += m->measure(0, button) + 16; xx += m->measure(0, button) + 16;
if (x > mx) break; if (xx > mx) break;
} }
return n; return n;
} }
@ -413,9 +411,9 @@ int menuwindow::find_selected(int mx, int my) {
// return horizontal position for item n in a menubar: // return horizontal position for item n in a menubar:
int menuwindow::titlex(int n) { int menuwindow::titlex(int n) {
const Fl_Menu_Item* m; const Fl_Menu_Item* m;
int x = 3; int xx = 3;
for (m=menu; n--; m = m->next()) x += m->measure(0, button) + 16; for (m=menu; n--; m = m->next()) xx += m->measure(0, button) + 16;
return x; return xx;
} }
//////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////
@ -458,16 +456,16 @@ static inline void setitem(const Fl_Menu_Item* i, int m, int n) {
} }
static void setitem(int m, int n) { static void setitem(int m, int n) {
menustate &p = *(::p); menustate &pp = *p;
p.current_item = (n >= 0) ? p.p[m]->menu->next(n) : 0; pp.current_item = (n >= 0) ? pp.p[m]->menu->next(n) : 0;
p.menu_number = m; pp.menu_number = m;
p.item_number = n; pp.item_number = n;
} }
static int forward(int menu) { // go to next item in menu menu if possible static int forward(int menu) { // go to next item in menu menu if possible
menustate &p = *(::p); menustate &pp = *p;
menuwindow &m = *(p.p[menu]); menuwindow &m = *(pp.p[menu]);
int item = (menu == p.menu_number) ? p.item_number : m.selected; int item = (menu == pp.menu_number) ? pp.item_number : m.selected;
while (++item < m.numitems) { while (++item < m.numitems) {
const Fl_Menu_Item* m1 = m.menu->next(item); const Fl_Menu_Item* m1 = m.menu->next(item);
if (m1->activevisible()) {setitem(m1, menu, item); return 1;} if (m1->activevisible()) {setitem(m1, menu, item); return 1;}
@ -476,9 +474,9 @@ static int forward(int menu) { // go to next item in menu menu if possible
} }
static int backward(int menu) { // previous item in menu menu if possible static int backward(int menu) { // previous item in menu menu if possible
menustate &p = *(::p); menustate &pp = *p;
menuwindow &m = *(p.p[menu]); menuwindow &m = *(pp.p[menu]);
int item = (menu == p.menu_number) ? p.item_number : m.selected; int item = (menu == pp.menu_number) ? pp.item_number : m.selected;
if (item < 0) item = m.numitems; if (item < 0) item = m.numitems;
while (--item >= 0) { while (--item >= 0) {
const Fl_Menu_Item* m1 = m.menu->next(item); const Fl_Menu_Item* m1 = m.menu->next(item);
@ -488,7 +486,7 @@ static int backward(int menu) { // previous item in menu menu if possible
} }
int menuwindow::handle(int e) { int menuwindow::handle(int e) {
menustate &p = *(::p); menustate &pp = *p;
switch (e) { switch (e) {
case FL_KEYBOARD: case FL_KEYBOARD:
switch (Fl::event_key()) { switch (Fl::event_key()) {
@ -497,44 +495,44 @@ int menuwindow::handle(int e) {
case FL_BackSpace: case FL_BackSpace:
case 0xFE20: // backtab case 0xFE20: // backtab
BACKTAB: BACKTAB:
if (!backward(p.menu_number)) {p.item_number = -1;backward(p.menu_number);} if (!backward(pp.menu_number)) {pp.item_number = -1;backward(pp.menu_number);}
return 1; return 1;
case FL_Up: case FL_Up:
if (p.menubar && p.menu_number == 0) ; if (pp.menubar && pp.menu_number == 0) ;
else if (backward(p.menu_number)); else if (backward(pp.menu_number));
else if (p.menubar && p.menu_number==1) setitem(0, p.p[0]->selected); else if (pp.menubar && pp.menu_number==1) setitem(0, pp.p[0]->selected);
return 1; return 1;
case FL_Down: case FL_Down:
if (p.menu_number || !p.menubar) forward(p.menu_number); if (pp.menu_number || !pp.menubar) forward(pp.menu_number);
else if (p.menu_number < p.nummenus-1) forward(p.menu_number+1); else if (pp.menu_number < pp.nummenus-1) forward(pp.menu_number+1);
return 1; return 1;
case FL_Right: case FL_Right:
if (p.menubar && (p.menu_number<=0 || p.menu_number==1 && p.nummenus==2)) if (pp.menubar && (pp.menu_number<=0 || pp.menu_number==1 && pp.nummenus==2))
forward(0); forward(0);
else if (p.menu_number < p.nummenus-1) forward(p.menu_number+1); else if (pp.menu_number < pp.nummenus-1) forward(pp.menu_number+1);
return 1; return 1;
case FL_Left: case FL_Left:
if (p.menubar && p.menu_number<=1) backward(0); if (pp.menubar && pp.menu_number<=1) backward(0);
else if (p.menu_number>0) else if (pp.menu_number>0)
setitem(p.menu_number-1, p.p[p.menu_number-1]->selected); setitem(pp.menu_number-1, pp.p[pp.menu_number-1]->selected);
return 1; return 1;
case FL_Enter: case FL_Enter:
case ' ': case ' ':
p.state = DONE_STATE; pp.state = DONE_STATE;
return 1; return 1;
case FL_Escape: case FL_Escape:
setitem(0, -1, 0); setitem(0, -1, 0);
p.state = DONE_STATE; pp.state = DONE_STATE;
return 1; return 1;
} }
break; break;
case FL_SHORTCUT: { case FL_SHORTCUT: {
for (int mymenu = p.nummenus; mymenu--;) { for (int mymenu = pp.nummenus; mymenu--;) {
menuwindow &mw = *(p.p[mymenu]); menuwindow &mw = *(pp.p[mymenu]);
int item; const Fl_Menu_Item* m = mw.menu->find_shortcut(&item); int item; const Fl_Menu_Item* m = mw.menu->find_shortcut(&item);
if (m) { if (m) {
setitem(m, mymenu, item); setitem(m, mymenu, item);
if (!m->submenu()) p.state = DONE_STATE; if (!m->submenu()) pp.state = DONE_STATE;
return 1; return 1;
} }
}} break; }} break;
@ -545,36 +543,36 @@ int menuwindow::handle(int e) {
int mx = Fl::event_x_root(); int mx = Fl::event_x_root();
int my = Fl::event_y_root(); int my = Fl::event_y_root();
int item=0; int mymenu; int item=0; int mymenu;
for (mymenu = p.nummenus-1; ; mymenu--) { for (mymenu = pp.nummenus-1; ; mymenu--) {
item = p.p[mymenu]->find_selected(mx, my); item = pp.p[mymenu]->find_selected(mx, my);
if (item >= 0) break; if (item >= 0) break;
if (mymenu <= 0) break; if (mymenu <= 0) break;
} }
setitem(mymenu, item); setitem(mymenu, item);
if (e == FL_PUSH) { if (e == FL_PUSH) {
if (p.current_item && p.current_item->submenu() // this is a menu title if (pp.current_item && pp.current_item->submenu() // this is a menu title
&& item != p.p[mymenu]->selected // and it is not already on && item != pp.p[mymenu]->selected // and it is not already on
&& !p.current_item->callback_) // and it does not have a callback && !pp.current_item->callback_) // and it does not have a callback
p.state = MENU_PUSH_STATE; pp.state = MENU_PUSH_STATE;
else else
p.state = PUSH_STATE; pp.state = PUSH_STATE;
}} return 1; }} return 1;
case FL_RELEASE: case FL_RELEASE:
// do nothing if they try to pick inactive items // do nothing if they try to pick inactive items
if (p.current_item && !p.current_item->activevisible()) return 1; if (pp.current_item && !pp.current_item->activevisible()) return 1;
// Mouse must either be held down/dragged some, or this must be // Mouse must either be held down/dragged some, or this must be
// the second click (not the one that popped up the menu): // the second click (not the one that popped up the menu):
if (!Fl::event_is_click() || p.state == PUSH_STATE || if (!Fl::event_is_click() || pp.state == PUSH_STATE ||
p.menubar && p.current_item && !p.current_item->submenu() // button pp.menubar && pp.current_item && !pp.current_item->submenu() // button
) { ) {
#if 0 // makes the check/radio items leave the menu up #if 0 // makes the check/radio items leave the menu up
const Fl_Menu_Item* m = p.current_item; const Fl_Menu_Item* m = pp.current_item;
if (m && button && (m->flags & (FL_MENU_TOGGLE|FL_MENU_RADIO))) { if (m && button && (m->flags & (FL_MENU_TOGGLE|FL_MENU_RADIO))) {
((Fl_Menu_*)button)->picked(m); ((Fl_Menu_*)button)->picked(m);
p.p[p.menu_number]->redraw(); pp.p[pp.menu_number]->redraw();
} else } else
#endif #endif
p.state = DONE_STATE; pp.state = DONE_STATE;
} }
return 1; return 1;
} }
@ -602,11 +600,11 @@ const Fl_Menu_Item* Fl_Menu_Item::pulldown(
} }
menuwindow mw(this, X, Y, W, H, initial_item, t, menubar); menuwindow mw(this, X, Y, W, H, initial_item, t, menubar);
Fl::grab(mw); Fl::grab(mw);
menustate p; ::p = &p; menustate pp; p = &pp;
p.p[0] = &mw; pp.p[0] = &mw;
p.nummenus = 1; pp.nummenus = 1;
p.menubar = menubar; pp.menubar = menubar;
p.state = INITIAL_STATE; pp.state = INITIAL_STATE;
menuwindow* fakemenu = 0; // kludge for buttons in menubar menuwindow* fakemenu = 0; // kludge for buttons in menubar
@ -616,50 +614,50 @@ const Fl_Menu_Item* Fl_Menu_Item::pulldown(
goto STARTUP; goto STARTUP;
} }
p.current_item = 0; p.menu_number = 0; p.item_number = -1; pp.current_item = 0; pp.menu_number = 0; pp.item_number = -1;
if (menubar) mw.handle(FL_DRAG); // find the initial menu if (menubar) mw.handle(FL_DRAG); // find the initial menu
initial_item = p.current_item; initial_item = pp.current_item;
if (initial_item) goto STARTUP; if (initial_item) goto STARTUP;
// the main loop, runs until p.state goes to DONE_STATE: // the main loop, runs until p.state goes to DONE_STATE:
for (;;) { for (;;) {
// make sure all the menus are shown: // make sure all the menus are shown:
{for (int k = menubar; k < p.nummenus; k++) {for (int k = menubar; k < pp.nummenus; k++)
if (!p.p[k]->shown()) { if (!pp.p[k]->shown()) {
if (p.p[k]->title) p.p[k]->title->show(); if (pp.p[k]->title) pp.p[k]->title->show();
p.p[k]->show(); pp.p[k]->show();
} }
} }
// get events: // get events:
{const Fl_Menu_Item* oldi = p.current_item; {const Fl_Menu_Item* oldi = pp.current_item;
Fl::wait(); Fl::wait();
if (p.state == DONE_STATE) break; // done. if (pp.state == DONE_STATE) break; // done.
if (p.current_item == oldi) continue;} if (pp.current_item == oldi) continue;}
// only do rest if item changes: // only do rest if item changes:
delete fakemenu; fakemenu = 0; // turn off "menubar button" delete fakemenu; fakemenu = 0; // turn off "menubar button"
if (!p.current_item) { // pointing at nothing if (!pp.current_item) { // pointing at nothing
// turn off selection in deepest menu, but don't erase other menus: // turn off selection in deepest menu, but don't erase other menus:
p.p[p.nummenus-1]->set_selected(-1); pp.p[pp.nummenus-1]->set_selected(-1);
continue; continue;
} }
delete fakemenu; fakemenu = 0; delete fakemenu; fakemenu = 0;
initial_item = 0; // stop the startup code initial_item = 0; // stop the startup code
p.p[p.menu_number]->autoscroll(p.item_number); pp.p[pp.menu_number]->autoscroll(pp.item_number);
STARTUP: STARTUP:
menuwindow& cw = *p.p[p.menu_number]; menuwindow& cw = *pp.p[pp.menu_number];
const Fl_Menu_Item* m = p.current_item; const Fl_Menu_Item* m = pp.current_item;
if (!m->activevisible()) { // pointing at inactive item if (!m->activevisible()) { // pointing at inactive item
cw.set_selected(-1); cw.set_selected(-1);
initial_item = 0; // turn off startup code initial_item = 0; // turn off startup code
continue; continue;
} }
cw.set_selected(p.item_number); cw.set_selected(pp.item_number);
if (m==initial_item) initial_item=0; // stop the startup code if item found if (m==initial_item) initial_item=0; // stop the startup code if item found
if (m->submenu()) { if (m->submenu()) {
@ -669,57 +667,57 @@ const Fl_Menu_Item* Fl_Menu_Item::pulldown(
else menutable = (Fl_Menu_Item*)(m)->user_data_; else menutable = (Fl_Menu_Item*)(m)->user_data_;
// figure out where new menu goes: // figure out where new menu goes:
int nX, nY; int nX, nY;
if (!p.menu_number && p.menubar) { // menu off a menubar: if (!pp.menu_number && pp.menubar) { // menu off a menubar:
nX = cw.x() + cw.titlex(p.item_number); nX = cw.x() + cw.titlex(pp.item_number);
nY = cw.y() + cw.h(); nY = cw.y() + cw.h();
initial_item = 0; initial_item = 0;
} else { } else {
nX = cw.x() + cw.w(); nX = cw.x() + cw.w();
nY = cw.y() + p.item_number * cw.itemheight; nY = cw.y() + pp.item_number * cw.itemheight;
title = 0; title = 0;
} }
if (initial_item) { // bring up submenu containing initial item: if (initial_item) { // bring up submenu containing initial item:
menuwindow* n = new menuwindow(menutable,X,Y,W,H,initial_item,title); menuwindow* n = new menuwindow(menutable,X,Y,W,H,initial_item,title);
p.p[p.nummenus++] = n; pp.p[pp.nummenus++] = n;
// move all earlier menus to line up with this new one: // move all earlier menus to line up with this new one:
if (n->selected>=0) { if (n->selected>=0) {
int dy = n->y()-nY; int dy = n->y()-nY;
int dx = n->x()-nX; int dx = n->x()-nX;
for (int menu = 0; menu <= p.menu_number; menu++) { for (int menu = 0; menu <= pp.menu_number; menu++) {
menuwindow* t = p.p[menu]; menuwindow* tt = pp.p[menu];
int nx = t->x()+dx; if (nx < 0) {nx = 0; dx = -t->x();} int nx = tt->x()+dx; if (nx < 0) {nx = 0; dx = -tt->x();}
int ny = t->y()+dy; if (ny < 0) {ny = 0; dy = -t->y();} int ny = tt->y()+dy; if (ny < 0) {ny = 0; dy = -tt->y();}
t->position(nx, ny); tt->position(nx, ny);
} }
setitem(p.nummenus-1, n->selected); setitem(pp.nummenus-1, n->selected);
goto STARTUP; goto STARTUP;
} }
} else if (p.nummenus > p.menu_number+1 && } else if (pp.nummenus > pp.menu_number+1 &&
p.p[p.menu_number+1]->menu == menutable) { pp.p[pp.menu_number+1]->menu == menutable) {
// the menu is already up: // the menu is already up:
while (p.nummenus > p.menu_number+2) delete p.p[--p.nummenus]; while (pp.nummenus > pp.menu_number+2) delete pp.p[--pp.nummenus];
p.p[p.nummenus-1]->set_selected(-1); pp.p[pp.nummenus-1]->set_selected(-1);
} else { } else {
// delete all the old menus and create new one: // delete all the old menus and create new one:
while (p.nummenus > p.menu_number+1) delete p.p[--p.nummenus]; while (pp.nummenus > pp.menu_number+1) delete pp.p[--pp.nummenus];
p.p[p.nummenus++]= new menuwindow(menutable, nX, nY, pp.p[pp.nummenus++]= new menuwindow(menutable, nX, nY,
title?1:0, 0, 0, title, 0, menubar); title?1:0, 0, 0, title, 0, menubar);
} }
} else { // !m->submenu(): } else { // !m->submenu():
while (p.nummenus > p.menu_number+1) delete p.p[--p.nummenus]; while (pp.nummenus > pp.menu_number+1) delete pp.p[--pp.nummenus];
if (!p.menu_number && p.menubar) { if (!pp.menu_number && pp.menubar) {
// kludge so "menubar buttons" turn "on" by using menu title: // kludge so "menubar buttons" turn "on" by using menu title:
fakemenu = new menuwindow(0, fakemenu = new menuwindow(0,
cw.x()+cw.titlex(p.item_number), cw.x()+cw.titlex(pp.item_number),
cw.y()+cw.h(), 0, 0, cw.y()+cw.h(), 0, 0,
0, m, 0, 1); 0, m, 0, 1);
fakemenu->title->show(); fakemenu->title->show();
} }
} }
} }
const Fl_Menu_Item* m = p.current_item; const Fl_Menu_Item* m = pp.current_item;
delete fakemenu; delete fakemenu;
while (p.nummenus>1) delete p.p[--p.nummenus]; while (pp.nummenus>1) delete pp.p[--pp.nummenus];
mw.hide(); mw.hide();
Fl::release(); Fl::release();
return m; return m;
@ -730,12 +728,12 @@ Fl_Menu_Item::popup(
int X, int Y, int X, int Y,
const char* title, const char* title,
const Fl_Menu_Item* picked, const Fl_Menu_Item* picked,
const Fl_Menu_* button const Fl_Menu_* but
) const ) const
{ {
static Fl_Menu_Item dummy; // static so it is all zeros static Fl_Menu_Item dummy; // static so it is all zeros
dummy.text = title; dummy.text = title;
return pulldown(X, Y, 0, 0, picked, button, title ? &dummy : 0); return pulldown(X, Y, 0, 0, picked, but, title ? &dummy : 0);
} }
// Search only the top level menu for a shortcut. Either &x in the // Search only the top level menu for a shortcut. Either &x in the
@ -776,5 +774,5 @@ const Fl_Menu_Item* Fl_Menu_Item::test_shortcut() const {
} }
// //
// End of "$Id: Fl_Menu.cxx,v 1.18.2.12.2.16 2002/07/24 12:16:57 easysw Exp $". // End of "$Id: Fl_Menu.cxx,v 1.18.2.12.2.17 2002/08/09 01:09:49 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Menu_.cxx,v 1.7.2.8.2.3 2002/04/11 11:52:41 easysw Exp $" // "$Id: Fl_Menu_.cxx,v 1.7.2.8.2.4 2002/08/09 01:09:49 easysw Exp $"
// //
// Common menu code for the Fast Light Tool Kit (FLTK). // Common menu code for the Fast Light Tool Kit (FLTK).
// //
@ -112,43 +112,21 @@ void Fl_Menu_::menu(const Fl_Menu_Item* m) {
value_ = menu_ = (Fl_Menu_Item*)m; value_ = menu_ = (Fl_Menu_Item*)m;
} }
#if 1
// this version is ok with new Fl_Menu_add code with fl_menu_array_owner: // this version is ok with new Fl_Menu_add code with fl_menu_array_owner:
void Fl_Menu_::copy(const Fl_Menu_Item* m, void* user_data) { void Fl_Menu_::copy(const Fl_Menu_Item* m, void* ud) {
int n = m->size(); int n = m->size();
Fl_Menu_Item* newMenu = new Fl_Menu_Item[n]; Fl_Menu_Item* newMenu = new Fl_Menu_Item[n];
memcpy(newMenu, m, n*sizeof(Fl_Menu_Item)); memcpy(newMenu, m, n*sizeof(Fl_Menu_Item));
menu(newMenu); menu(newMenu);
alloc = 1; // make destructor free array, but not strings alloc = 1; // make destructor free array, but not strings
// for convienence, provide way to change all the user data pointers: // for convienence, provide way to change all the user data pointers:
if (user_data) for (; n--;) { if (ud) for (; n--;) {
if (newMenu->callback_) newMenu->user_data_ = user_data; if (newMenu->callback_) newMenu->user_data_ = ud;
newMenu++; newMenu++;
} }
} }
#else
// This is Guillaume Nodet's fixed version for the older Fl_Menu_add
// that enlarged the array at powers of 2:
void Fl_Menu_::copy(const Fl_Menu_Item* m, void* user_data) {
int i, s = m->size(), n=s;
for (i=0; n; n>>=1, i++);
n = 1 << i;
Fl_Menu_Item* newMenu = new Fl_Menu_Item[n];
memcpy(newMenu, m, s*sizeof(Fl_Menu_Item));
memset(newMenu+s, 0, (n-s)*sizeof(Fl_Menu_Item));
menu(newMenu);
alloc = 1; // make destructor free it
// for convienence, provide way to change all the user data pointers:
if (user_data) for (; s--;) {
if (newMenu->callback_) newMenu->user_data_ = user_data;
newMenu++;
}
}
#endif
Fl_Menu_::~Fl_Menu_() { Fl_Menu_::~Fl_Menu_() {
clear(); clear();
} }
@ -172,5 +150,5 @@ void Fl_Menu_::clear() {
} }
// //
// End of "$Id: Fl_Menu_.cxx,v 1.7.2.8.2.3 2002/04/11 11:52:41 easysw Exp $". // End of "$Id: Fl_Menu_.cxx,v 1.7.2.8.2.4 2002/08/09 01:09:49 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Menu_add.cxx,v 1.9.2.13.2.3 2002/06/06 14:04:53 easysw Exp $" // "$Id: Fl_Menu_add.cxx,v 1.9.2.13.2.4 2002/08/09 01:09:49 easysw Exp $"
// //
// Menu utilities for the Fast Light Tool Kit (FLTK). // Menu utilities for the Fast Light Tool Kit (FLTK).
// //
@ -99,7 +99,7 @@ static int compare(const char* a, const char* b) {
// now add submenu titles directly by setting SUBMENU in the flags): // now add submenu titles directly by setting SUBMENU in the flags):
int Fl_Menu_Item::add( int Fl_Menu_Item::add(
const char *mytext, const char *mytext,
int shortcut, int sc,
Fl_Callback *cb, Fl_Callback *cb,
void *data, void *data,
int myflags int myflags
@ -110,7 +110,7 @@ int Fl_Menu_Item::add(
char *q; char *q;
char buf[1024]; char buf[1024];
int size = array==local_array ? local_array_size : array->size(); int msize = array==local_array ? local_array_size : array->size();
int flags1 = 0; int flags1 = 0;
const char* item; const char* item;
@ -138,10 +138,10 @@ int Fl_Menu_Item::add(
if (!m->text) { /* create a new menu */ if (!m->text) { /* create a new menu */
int n = m-array; int n = m-array;
array = insert(array, size, n, item, FL_SUBMENU|flags1); array = insert(array, msize, n, item, FL_SUBMENU|flags1);
size++; msize++;
array = insert(array, size, n+1, 0, 0); array = insert(array, msize, n+1, 0, 0);
size++; msize++;
m = array+n; m = array+n;
} }
m++; /* go into the submenu */ m++; /* go into the submenu */
@ -154,22 +154,22 @@ int Fl_Menu_Item::add(
if (!m->text) { /* add a new menu item */ if (!m->text) { /* add a new menu item */
int n = m-array; int n = m-array;
array = insert(array, size, n, item, myflags|flags1); array = insert(array, msize, n, item, myflags|flags1);
size++; msize++;
if (myflags & FL_SUBMENU) { // add submenu delimiter if (myflags & FL_SUBMENU) { // add submenu delimiter
array = insert(array, size, n+1, 0, 0); array = insert(array, msize, n+1, 0, 0);
size++; msize++;
} }
m = array+n; m = array+n;
} }
/* fill it in */ /* fill it in */
m->shortcut_ = shortcut; m->shortcut_ = sc;
m->callback_ = cb; m->callback_ = cb;
m->user_data_ = data; m->user_data_ = data;
m->flags = myflags|flags1; m->flags = myflags|flags1;
if (array == local_array) local_array_size = size; if (array == local_array) local_array_size = msize;
return m-array; return m-array;
} }
@ -222,14 +222,14 @@ int Fl_Menu_::add(const char *str) {
char buf[128]; char buf[128];
int r = 0; int r = 0;
while (*str) { while (*str) {
int shortcut = 0; int sc = 0;
char *c; char *c;
for (c = buf; *str && *str != '|'; str++) { for (c = buf; *str && *str != '|'; str++) {
if (*str == '\t') {*c++ = 0; shortcut = fl_old_shortcut(str);} if (*str == '\t') {*c++ = 0; sc = fl_old_shortcut(str);}
else *c++ = *str; else *c++ = *str;
} }
*c = 0; *c = 0;
r = add(buf, shortcut, 0, 0, 0); r = add(buf, sc, 0, 0, 0);
if (*str) str++; if (*str) str++;
} }
return r; return r;
@ -262,5 +262,5 @@ void Fl_Menu_::remove(int i) {
} }
// //
// End of "$Id: Fl_Menu_add.cxx,v 1.9.2.13.2.3 2002/06/06 14:04:53 easysw Exp $". // End of "$Id: Fl_Menu_add.cxx,v 1.9.2.13.2.4 2002/08/09 01:09:49 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Pack.cxx,v 1.6.2.4.2.2 2002/01/01 15:11:31 easysw Exp $" // "$Id: Fl_Pack.cxx,v 1.6.2.4.2.3 2002/08/09 01:09:49 easysw Exp $"
// //
// Packing widget for the Fast Light Tool Kit (FLTK). // Packing widget for the Fast Light Tool Kit (FLTK).
// //
@ -32,8 +32,8 @@
#include <FL/Fl_Pack.H> #include <FL/Fl_Pack.H>
#include <FL/fl_draw.H> #include <FL/fl_draw.H>
Fl_Pack::Fl_Pack(int x,int y,int w ,int h,const char *l) Fl_Pack::Fl_Pack(int X, int Y, int W, int H,const char *l)
: Fl_Group(x, y, w, h, l) { : Fl_Group(X, Y, W, H, l) {
resizable(0); resizable(0);
spacing_ = 0; spacing_ = 0;
// type(VERTICAL); // already set like this // type(VERTICAL); // already set like this
@ -132,5 +132,5 @@ void Fl_Pack::draw() {
} }
// //
// End of "$Id: Fl_Pack.cxx,v 1.6.2.4.2.2 2002/01/01 15:11:31 easysw Exp $". // End of "$Id: Fl_Pack.cxx,v 1.6.2.4.2.3 2002/08/09 01:09:49 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Pixmap.cxx,v 1.9.2.4.2.20 2002/08/05 17:50:25 easysw Exp $" // "$Id: Fl_Pixmap.cxx,v 1.9.2.4.2.21 2002/08/09 01:09:49 easysw Exp $"
// //
// Pixmap drawing code for the Fast Light Tool Kit (FLTK). // Pixmap drawing code for the Fast Light Tool Kit (FLTK).
// //
@ -162,8 +162,8 @@ void Fl_Pixmap::uncache() {
} }
} }
void Fl_Pixmap::label(Fl_Widget* w) { void Fl_Pixmap::label(Fl_Widget* widget) {
w->image(this); widget->image(this);
} }
void Fl_Pixmap::label(Fl_Menu_Item* m) { void Fl_Pixmap::label(Fl_Menu_Item* m) {
@ -460,5 +460,5 @@ void Fl_Pixmap::desaturate() {
} }
// //
// End of "$Id: Fl_Pixmap.cxx,v 1.9.2.4.2.20 2002/08/05 17:50:25 easysw Exp $". // End of "$Id: Fl_Pixmap.cxx,v 1.9.2.4.2.21 2002/08/09 01:09:49 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Positioner.cxx,v 1.4.2.3.2.1 2002/01/01 15:11:31 easysw Exp $" // "$Id: Fl_Positioner.cxx,v 1.4.2.3.2.2 2002/08/09 01:09:49 easysw Exp $"
// //
// Positioner widget for the Fast Light Tool Kit (FLTK). // Positioner widget for the Fast Light Tool Kit (FLTK).
// //
@ -36,14 +36,14 @@ static double flinear(double val, double smin, double smax, double gmin, double
else return gmin + (gmax - gmin) * (val - smin) / (smax - smin); else return gmin + (gmax - gmin) * (val - smin) / (smax - smin);
} }
void Fl_Positioner::draw(int x, int y, int w, int h) { void Fl_Positioner::draw(int X, int Y, int W, int H) {
int x1 = x + 4; int x1 = X + 4;
int y1 = y + 4; int y1 = Y + 4;
int w1 = w - 2 * 4; int w1 = W - 2 * 4;
int h1 = h - 2 * 4; int h1 = H - 2 * 4;
int xx = int(flinear(xvalue(), xmin, xmax, x1, x1+w1-1)+.5); int xx = int(flinear(xvalue(), xmin, xmax, x1, x1+w1-1)+.5);
int yy = int(flinear(yvalue(), ymin, ymax, y1, y1+h1-1)+.5); int yy = int(flinear(yvalue(), ymin, ymax, y1, y1+h1-1)+.5);
draw_box(box(), x, y, w, h, color()); draw_box(box(), X, Y, W, H, color());
fl_color(selection_color()); fl_color(selection_color());
fl_xyline(x1, yy, x1+w1); fl_xyline(x1, yy, x1+w1);
fl_yxline(xx, y1, y1+h1); fl_yxline(xx, y1, y1+h1);
@ -70,24 +70,24 @@ int Fl_Positioner::yvalue(double Y) {
return(value(xvalue_, Y)); return(value(xvalue_, Y));
} }
int Fl_Positioner::handle(int event, int x, int y, int w, int h) { int Fl_Positioner::handle(int event, int X, int Y, int W, int H) {
switch (event) { switch (event) {
case FL_PUSH: case FL_PUSH:
case FL_DRAG: case FL_DRAG:
case FL_RELEASE: { case FL_RELEASE: {
double x1 = x + 4; double x1 = X + 4;
double y1 = y + 4; double y1 = Y + 4;
double w1 = w - 2 * 4; double w1 = W - 2 * 4;
double h1 = h - 2 * 4; double h1 = H - 2 * 4;
double X = flinear(Fl::event_x(), x1, x1+w1-1.0, xmin, xmax); double xx = flinear(Fl::event_x(), x1, x1+w1-1.0, xmin, xmax);
if (xstep_) X = int(X/xstep_+0.5) * xstep_; if (xstep_) xx = int(xx/xstep_+0.5) * xstep_;
if (X < xmin) X = xmin; if (xx < xmin) xx = xmin;
if (X > xmax) X = xmax; if (xx > xmax) xx = xmax;
double Y = flinear(Fl::event_y(), y1, y1+h1-1.0, ymin, ymax); double yy = flinear(Fl::event_y(), y1, y1+h1-1.0, ymin, ymax);
if (ystep_) Y = int(Y/ystep_+0.5) * ystep_; if (ystep_) yy = int(yy/ystep_+0.5) * ystep_;
if (Y < ymin) Y = ymin; if (yy < ymin) yy = ymin;
if (Y > ymax) Y = ymax; if (yy > ymax) yy = ymax;
if (value(X, Y)) set_changed();} if (value(xx, yy)) set_changed();}
if (!(when() & FL_WHEN_CHANGED || if (!(when() & FL_WHEN_CHANGED ||
when() & FL_WHEN_RELEASE && event == FL_RELEASE)) return 1; when() & FL_WHEN_RELEASE && event == FL_RELEASE)) return 1;
if (changed() || when()&FL_WHEN_NOT_CHANGED) { if (changed() || when()&FL_WHEN_NOT_CHANGED) {
@ -102,8 +102,8 @@ int Fl_Positioner::handle(int e) {
return handle(e, x(), y(), w(), h()); return handle(e, x(), y(), w(), h());
} }
Fl_Positioner::Fl_Positioner(int x, int y, int w, int h, const char* l) Fl_Positioner::Fl_Positioner(int X, int Y, int W, int H, const char* l)
: Fl_Widget(x, y, w, h, l) { : Fl_Widget(X, Y, W, H, l) {
box(FL_DOWN_BOX); box(FL_DOWN_BOX);
selection_color(FL_RED); selection_color(FL_RED);
align(FL_ALIGN_BOTTOM); align(FL_ALIGN_BOTTOM);
@ -129,5 +129,5 @@ void Fl_Positioner::ybounds(double a, double b) {
} }
// //
// End of "$Id: Fl_Positioner.cxx,v 1.4.2.3.2.1 2002/01/01 15:11:31 easysw Exp $". // End of "$Id: Fl_Positioner.cxx,v 1.4.2.3.2.2 2002/08/09 01:09:49 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Preferences.cxx,v 1.1.2.17 2002/07/01 20:14:08 easysw Exp $" // "$Id: Fl_Preferences.cxx,v 1.1.2.18 2002/08/09 01:09:49 easysw Exp $"
// //
// Preferences methods for the Fast Light Tool Kit (FLTK). // Preferences methods for the Fast Light Tool Kit (FLTK).
// //
@ -392,9 +392,9 @@ char Fl_Preferences::get( const char *key, void *data, const void *defaultValue,
const char *v = node->get( key ); const char *v = node->get( key );
if ( v ) if ( v )
{ {
int size; int dsize;
void *w = decodeHex( v, size ); void *w = decodeHex( v, dsize );
memmove( data, w, size>maxSize?maxSize:size ); memmove( data, w, dsize>maxSize?maxSize:dsize );
free( w ); free( w );
return 1; return 1;
} }
@ -414,8 +414,8 @@ char Fl_Preferences::get( const char *key, void *&data, const void *defaultValue
const char *v = node->get( key ); const char *v = node->get( key );
if ( v ) if ( v )
{ {
int size; int dsize;
data = decodeHex( v, size ); data = decodeHex( v, dsize );
return 1; return 1;
} }
if ( defaultValue ) if ( defaultValue )
@ -432,11 +432,11 @@ char Fl_Preferences::get( const char *key, void *&data, const void *defaultValue
/** /**
* set an entry (name/value pair) * set an entry (name/value pair)
*/ */
char Fl_Preferences::set( const char *key, const void *data, int size ) char Fl_Preferences::set( const char *key, const void *data, int dsize )
{ {
char *buffer = (char*)malloc( size*2+1 ), *d = buffer;; char *buffer = (char*)malloc( dsize*2+1 ), *d = buffer;;
unsigned char *s = (unsigned char*)data; unsigned char *s = (unsigned char*)data;
for ( ; size>0; size-- ) for ( ; dsize>0; dsize-- )
{ {
static char lu[] = "0123456789abcdef"; static char lu[] = "0123456789abcdef";
unsigned char v = *s++; unsigned char v = *s++;
@ -889,7 +889,9 @@ void Fl_Preferences::Node::set( const char *name, const char *value )
// create or set a value (or annotation) from a single line in the file buffer // create or set a value (or annotation) from a single line in the file buffer
void Fl_Preferences::Node::set( const char *line ) void Fl_Preferences::Node::set( const char *line )
{ {
char dirty = dirty_; // hmm. If we assume that we always read yhis file in the beginning, we can handle the dirty flag 'quick and dirty' // hmm. If we assume that we always read this file in the beginning,
// we can handle the dirty flag 'quick and dirty'
char dirt = dirty_;
if ( line[0]==';' || line[0]==0 || line[0]=='#' ) if ( line[0]==';' || line[0]==0 || line[0]=='#' )
{ {
set( line, 0 ); set( line, 0 );
@ -905,7 +907,7 @@ void Fl_Preferences::Node::set( const char *line )
else else
set( line, "" ); set( line, "" );
} }
dirty_ = dirty; dirty_ = dirt;
} }
// add more data to an existing entry // add more data to an existing entry
@ -1052,5 +1054,5 @@ char Fl_Preferences::Node::remove()
// //
// End of "$Id: Fl_Preferences.cxx,v 1.1.2.17 2002/07/01 20:14:08 easysw Exp $". // End of "$Id: Fl_Preferences.cxx,v 1.1.2.18 2002/08/09 01:09:49 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Progress.cxx,v 1.1.2.5 2002/04/11 10:46:19 easysw Exp $" // "$Id: Fl_Progress.cxx,v 1.1.2.6 2002/08/09 01:09:49 easysw Exp $"
// //
// Progress bar widget routines. // Progress bar widget routines.
// //
@ -92,8 +92,8 @@ void Fl_Progress::draw()
// 'Fl_Progress::Fl_Progress()' - Construct a Fl_Progress widget. // 'Fl_Progress::Fl_Progress()' - Construct a Fl_Progress widget.
// //
Fl_Progress::Fl_Progress(int x, int y, int w, int h, const char* l) Fl_Progress::Fl_Progress(int X, int Y, int W, int H, const char* l)
: Fl_Widget(x, y, w, h, l) : Fl_Widget(X, Y, W, H, l)
{ {
align(FL_ALIGN_INSIDE); align(FL_ALIGN_INSIDE);
box(FL_DOWN_BOX); box(FL_DOWN_BOX);
@ -105,5 +105,5 @@ Fl_Progress::Fl_Progress(int x, int y, int w, int h, const char* l)
// //
// End of "$Id: Fl_Progress.cxx,v 1.1.2.5 2002/04/11 10:46:19 easysw Exp $". // End of "$Id: Fl_Progress.cxx,v 1.1.2.6 2002/08/09 01:09:49 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Shared_Image.cxx,v 1.23.2.15 2002/07/14 21:25:39 easysw Exp $" // "$Id: Fl_Shared_Image.cxx,v 1.23.2.16 2002/08/09 01:09:49 easysw Exp $"
// //
// Shared image code for the Fast Light Tool Kit (FLTK). // Shared image code for the Fast Light Tool Kit (FLTK).
// //
@ -29,11 +29,6 @@
#include <FL/Fl.H> #include <FL/Fl.H>
#include <FL/Fl_Shared_Image.H> #include <FL/Fl_Shared_Image.H>
#include <FL/Fl_BMP_Image.H>
#include <FL/Fl_GIF_Image.H>
#include <FL/Fl_JPEG_Image.H>
#include <FL/Fl_PNG_Image.H>
#include <FL/Fl_PNM_Image.H>
#include <FL/Fl_XBM_Image.H> #include <FL/Fl_XBM_Image.H>
#include <FL/Fl_XPM_Image.H> #include <FL/Fl_XPM_Image.H>
@ -234,14 +229,7 @@ Fl_Shared_Image::reload() {
} }
// Load the image as appropriate... // Load the image as appropriate...
if (memcmp(header, "GIF87a", 6) == 0 || if (memcmp(header, "#define", 7) == 0) // XBM file
memcmp(header, "GIF89a", 6) == 0)
img = new Fl_GIF_Image(name_);
else if (memcmp(header, "BM", 2) == 0) // BMP file
img = new Fl_BMP_Image(name_);
else if (header[0] == 'P' && header[1] >= '1' && header[1] <= '6') // Portable anymap
img = new Fl_PNM_Image(name_);
else if (memcmp(header, "#define", 7) == 0) // XBM file
img = new Fl_XBM_Image(name_); img = new Fl_XBM_Image(name_);
else if (memcmp(header, "/* XPM */", 9) == 0) // XPM file else if (memcmp(header, "/* XPM */", 9) == 0) // XPM file
img = new Fl_XPM_Image(name_); img = new Fl_XPM_Image(name_);
@ -467,5 +455,5 @@ Fl_Shared_Image::remove_handler(Fl_Shared_Handler f) {
// //
// End of "$Id: Fl_Shared_Image.cxx,v 1.23.2.15 2002/07/14 21:25:39 easysw Exp $". // End of "$Id: Fl_Shared_Image.cxx,v 1.23.2.16 2002/08/09 01:09:49 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Text_Buffer.cxx,v 1.9.2.9 2002/08/05 17:50:25 easysw Exp $" // "$Id: Fl_Text_Buffer.cxx,v 1.9.2.10 2002/08/09 01:09:49 easysw Exp $"
// //
// Copyright 2001-2002 by Bill Spitzak and others. // Copyright 2001-2002 by Bill Spitzak and others.
// Original code Copyright Mark Edel. Permission to distribute under // Original code Copyright Mark Edel. Permission to distribute under
@ -1967,7 +1967,7 @@ int Fl_Text_Buffer::findchar_forward( int startPos, char searchChar,
int *foundPos ) { int *foundPos ) {
int pos, gapLen = mGapEnd - mGapStart; int pos, gapLen = mGapEnd - mGapStart;
if (pos < 0 || pos >= mLength) { if (startPos < 0 || startPos >= mLength) {
*foundPos = mLength; *foundPos = mLength;
return 0; return 0;
} }
@ -2003,11 +2003,11 @@ int Fl_Text_Buffer::findchar_backward( int startPos, char searchChar,
int *foundPos ) { int *foundPos ) {
int pos, gapLen = mGapEnd - mGapStart; int pos, gapLen = mGapEnd - mGapStart;
if ( startPos == 0 ) { if ( startPos <= 0 || startPos >= mLength ) {
*foundPos = 0; *foundPos = 0;
return 0; return 0;
} }
pos = startPos == 0 ? 0 : startPos - 1; pos = startPos - 1;
while ( pos >= mGapStart ) { while ( pos >= mGapStart ) {
if ( mBuf[ pos + gapLen ] == searchChar ) { if ( mBuf[ pos + gapLen ] == searchChar ) {
*foundPos = pos; *foundPos = pos;
@ -2289,5 +2289,5 @@ Fl_Text_Buffer::outputfile(const char *file, int start, int end, int buflen) {
// //
// End of "$Id: Fl_Text_Buffer.cxx,v 1.9.2.9 2002/08/05 17:50:25 easysw Exp $". // End of "$Id: Fl_Text_Buffer.cxx,v 1.9.2.10 2002/08/09 01:09:49 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
# #
# "$Id: Makefile,v 1.18.2.14.2.46 2002/07/14 17:03:31 easysw Exp $" # "$Id: Makefile,v 1.18.2.14.2.47 2002/08/09 01:09:49 easysw Exp $"
# #
# Library makefile for the Fast Light Tool Kit (FLTK). # Library makefile for the Fast Light Tool Kit (FLTK).
# #
@ -27,7 +27,6 @@ CPPFILES = \
Fl.cxx \ Fl.cxx \
Fl_Adjuster.cxx \ Fl_Adjuster.cxx \
Fl_Bitmap.cxx \ Fl_Bitmap.cxx \
Fl_BMP_Image.cxx \
Fl_Browser.cxx \ Fl_Browser.cxx \
Fl_Browser_.cxx \ Fl_Browser_.cxx \
Fl_Browser_load.cxx \ Fl_Browser_load.cxx \
@ -47,7 +46,6 @@ CPPFILES = \
Fl_File_Chooser2.cxx \ Fl_File_Chooser2.cxx \
Fl_File_Icon.cxx \ Fl_File_Icon.cxx \
Fl_File_Input.cxx \ Fl_File_Input.cxx \
Fl_GIF_Image.cxx \
Fl_Group.cxx \ Fl_Group.cxx \
Fl_Help_Dialog.cxx \ Fl_Help_Dialog.cxx \
Fl_Help_View.cxx \ Fl_Help_View.cxx \
@ -66,7 +64,6 @@ CPPFILES = \
Fl_Overlay_Window.cxx \ Fl_Overlay_Window.cxx \
Fl_Pack.cxx \ Fl_Pack.cxx \
Fl_Pixmap.cxx \ Fl_Pixmap.cxx \
Fl_PNM_Image.cxx \
Fl_Positioner.cxx \ Fl_Positioner.cxx \
Fl_Preferences.cxx \ Fl_Preferences.cxx \
Fl_Progress.cxx \ Fl_Progress.cxx \
@ -170,9 +167,12 @@ GLCPPFILES = \
IMGCPPFILES = \ IMGCPPFILES = \
fl_images_core.cxx \ fl_images_core.cxx \
Fl_BMP_Image.cxx \
Fl_File_Icon2.cxx \ Fl_File_Icon2.cxx \
Fl_GIF_Image.cxx \
Fl_JPEG_Image.cxx \ Fl_JPEG_Image.cxx \
Fl_PNG_Image.cxx Fl_PNG_Image.cxx \
Fl_PNM_Image.cxx
CFILES = fl_call_main.c flstring.c scandir.c numericsort.c vsnprintf.c CFILES = fl_call_main.c flstring.c scandir.c numericsort.c vsnprintf.c
@ -565,5 +565,5 @@ uninstall:
# #
# End of "$Id: Makefile,v 1.18.2.14.2.46 2002/07/14 17:03:31 easysw Exp $". # End of "$Id: Makefile,v 1.18.2.14.2.47 2002/08/09 01:09:49 easysw Exp $".
# #

View File

@ -1,5 +1,5 @@
// //
// "$Id: fl_images_core.cxx,v 1.1.2.2 2002/06/29 00:10:04 matthiaswm Exp $" // "$Id: fl_images_core.cxx,v 1.1.2.3 2002/08/09 01:09:49 easysw Exp $"
// //
// FLTK images library core. // FLTK images library core.
// //
@ -33,8 +33,11 @@
// //
#include <FL/Fl_Shared_Image.H> #include <FL/Fl_Shared_Image.H>
#include <FL/Fl_BMP_Image.H>
#include <FL/Fl_GIF_Image.H>
#include <FL/Fl_JPEG_Image.H> #include <FL/Fl_JPEG_Image.H>
#include <FL/Fl_PNG_Image.H> #include <FL/Fl_PNG_Image.H>
#include <FL/Fl_PNM_Image.H>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include "flstring.h" #include "flstring.h"
@ -65,20 +68,28 @@ Fl_Image * // O - Image, if found
fl_check_images(const char *name, // I - Filename fl_check_images(const char *name, // I - Filename
uchar *header, // I - Header data from file uchar *header, // I - Header data from file
int headerlen) { // I - Amount of data int headerlen) { // I - Amount of data
if (memcmp(header, "GIF87a", 6) == 0 ||
memcmp(header, "GIF89a", 6) == 0) // GIF file
return new Fl_GIF_Image(name);
if (memcmp(header, "BM", 2) == 0) // BMP file
return new Fl_BMP_Image(name);
if (header[0] == 'P' && header[1] >= '1' && header[1] <= '6')
// Portable anymap
return new Fl_PNM_Image(name);
#ifdef HAVE_LIBPNG #ifdef HAVE_LIBPNG
if (memcmp(header, "\211PNG", 4) == 0) // PNG header if (memcmp(header, "\211PNG", 4) == 0)// PNG file
return new Fl_PNG_Image(name); return new Fl_PNG_Image(name);
#else
header = header; name = name; headerlen = headerlen; // avoid warnings
#endif // HAVE_LIBPNG #endif // HAVE_LIBPNG
#ifdef HAVE_LIBJPEG #ifdef HAVE_LIBJPEG
if (memcmp(header, "\377\330\377", 3) == 0 && // Start-of-Image if (memcmp(header, "\377\330\377", 3) == 0 &&
header[3] >= 0xe0 && header[3] <= 0xef) // Start-of-Image
// APPn header[3] >= 0xe0 && header[3] <= 0xef)
// APPn for JPEG file
return new Fl_JPEG_Image(name); return new Fl_JPEG_Image(name);
#else
header = header; name = name; headerlen = headerlen; // avoid warnings
#endif // HAVE_LIBJPEG #endif // HAVE_LIBJPEG
return 0; return 0;
@ -86,5 +97,5 @@ fl_check_images(const char *name, // I - Filename
// //
// End of "$Id: fl_images_core.cxx,v 1.1.2.2 2002/06/29 00:10:04 matthiaswm Exp $". // End of "$Id: fl_images_core.cxx,v 1.1.2.3 2002/08/09 01:09:49 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: fl_set_fonts_mac.cxx,v 1.1.2.6 2002/05/16 12:47:43 easysw Exp $" // "$Id: fl_set_fonts_mac.cxx,v 1.1.2.7 2002/08/09 01:09:49 easysw Exp $"
// //
// MacOS font utilities for the Fast Light Tool Kit (FLTK). // MacOS font utilities for the Fast Light Tool Kit (FLTK).
// //
@ -30,22 +30,24 @@
// turn a stored font name into a pretty name: // turn a stored font name into a pretty name:
const char* Fl::get_font_name(Fl_Font fnum, int* ap) { const char* Fl::get_font_name(Fl_Font fnum, int* ap) {
const char* p = fl_fonts[fnum].name; Fl_Fontdesc *f = fl_fonts + fnum;
if (!p || !*p) {if (ap) *ap = 0; return "";} if (!f->fontname[0]) {
int type; const char* p = f->name;
switch (*p) { if (!p || !*p) {if (ap) *ap = 0; return "";}
case 'B': type = FL_BOLD; break; int type;
case 'I': type = FL_ITALIC; break; switch (*p) {
case 'P': type = FL_BOLD | FL_ITALIC; break; case 'B': type = FL_BOLD; break;
default: type = 0; break; case 'I': type = FL_ITALIC; break;
case 'P': type = FL_BOLD | FL_ITALIC; break;
default: type = 0; break;
}
if (ap) *ap = type;
if (!type) return p+1;
strlcpy(f->fontname, p+1, sizeof(f->fontname));
if (type & FL_BOLD) strlcat(f->fontname, " bold", sizeof(f->fontname));
if (type & FL_ITALIC) strlcat(f->fontname, " italic", sizeof(f->fontname));
} }
if (ap) *ap = type; return f->fontname;
if (!type) return p+1;
static char *buffer; if (!buffer) buffer = new char[128];
strcpy(buffer, p+1);
if (type & FL_BOLD) strcat(buffer, " bold");
if (type & FL_ITALIC) strcat(buffer, " italic");
return buffer;
} }
static int fl_free_font = FL_FREE_FONT; static int fl_free_font = FL_FREE_FONT;
@ -154,5 +156,5 @@ int Fl::get_font_sizes(Fl_Font fnum, int*& sizep) {
} }
// //
// End of "$Id: fl_set_fonts_mac.cxx,v 1.1.2.6 2002/05/16 12:47:43 easysw Exp $". // End of "$Id: fl_set_fonts_mac.cxx,v 1.1.2.7 2002/08/09 01:09:49 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: fl_set_fonts_win32.cxx,v 1.5.2.5.2.7 2002/06/29 00:10:04 matthiaswm Exp $" // "$Id: fl_set_fonts_win32.cxx,v 1.5.2.5.2.8 2002/08/09 01:09:49 easysw Exp $"
// //
// WIN32 font utilities for the Fast Light Tool Kit (FLTK). // WIN32 font utilities for the Fast Light Tool Kit (FLTK).
// //
@ -30,22 +30,24 @@
// turn a stored font name into a pretty name: // turn a stored font name into a pretty name:
const char* Fl::get_font_name(Fl_Font fnum, int* ap) { const char* Fl::get_font_name(Fl_Font fnum, int* ap) {
const char* p = fl_fonts[fnum].name; Fl_Fontdesc *f = fl_fonts + fnum;
if (!p || !*p) {if (ap) *ap = 0; return "";} if (!f->fontname[0]) {
int type; const char* p = f->name;
switch (*p) { if (!p || !*p) {if (ap) *ap = 0; return "";}
case 'B': type = FL_BOLD; break; int type;
case 'I': type = FL_ITALIC; break; switch (*p) {
case 'P': type = FL_BOLD | FL_ITALIC; break; case 'B': type = FL_BOLD; break;
default: type = 0; break; case 'I': type = FL_ITALIC; break;
case 'P': type = FL_BOLD | FL_ITALIC; break;
default: type = 0; break;
}
if (ap) *ap = type;
if (!type) return p+1;
strlcpy(f->fontname, p+1, sizeof(f->fontname));
if (type & FL_BOLD) strlcat(f->fontname, " bold", sizeof(f->fontname));
if (type & FL_ITALIC) strlcat(f->fontname, " italic", sizeof(f->fontname));
} }
if (ap) *ap = type; return f->fontname;
if (!type) return p+1;
static char *buffer; if (!buffer) buffer = new char[128];
strcpy(buffer, p+1);
if (type & FL_BOLD) strcat(buffer, " bold");
if (type & FL_ITALIC) strcat(buffer, " italic");
return buffer;
} }
static int fl_free_font = FL_FREE_FONT; static int fl_free_font = FL_FREE_FONT;
@ -135,5 +137,5 @@ Fl::get_font_sizes(Fl_Font fnum, int*& sizep) {
// //
// End of "$Id: fl_set_fonts_win32.cxx,v 1.5.2.5.2.7 2002/06/29 00:10:04 matthiaswm Exp $". // End of "$Id: fl_set_fonts_win32.cxx,v 1.5.2.5.2.8 2002/08/09 01:09:49 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: fl_set_fonts_x.cxx,v 1.1.2.3 2002/05/16 12:47:43 easysw Exp $" // "$Id: fl_set_fonts_x.cxx,v 1.1.2.4 2002/08/09 01:09:49 easysw Exp $"
// //
// X11 font utilities for the Fast Light Tool Kit (FLTK). // X11 font utilities for the Fast Light Tool Kit (FLTK).
// //
@ -81,69 +81,81 @@ static int use_registry(const char *p) {
// turn a stored (with *'s) X font name into a pretty name: // turn a stored (with *'s) X font name into a pretty name:
const char* Fl::get_font_name(Fl_Font fnum, int* ap) { const char* Fl::get_font_name(Fl_Font fnum, int* ap) {
const char* p = fl_fonts[fnum].name; Fl_Fontdesc *f = fl_fonts + fnum;
if (!p) { if (!f->fontname[0]) {
if (ap) *ap = 0; const char* p = f->name;
return ""; if (!p) {
} if (ap) *ap = 0;
static char *buffer; if (!buffer) buffer = new char[128]; return "";
char *o = buffer;
if (*p != '-') { // non-standard font, just replace * with spaces:
if (ap) {
int type = 0;
if (strstr(p,"bold")) type = FL_BOLD;
if (strstr(p,"ital")) type |= FL_ITALIC;
*ap = type;
} }
for (;*p; p++) { char *o = f->fontname;
if (*p == '*' || *p == ' ' || *p == '-') {
do p++; while (*p == '*' || *p == ' ' || *p == '-'); if (*p != '-') { // non-standard font, just replace * with spaces:
if (!*p) break; if (ap) {
*o++ = ' '; int type = 0;
if (strstr(p,"bold")) type = FL_BOLD;
if (strstr(p,"ital")) type |= FL_ITALIC;
*ap = type;
} }
*o++ = *p; for (;*p; p++) {
if (*p == '*' || *p == ' ' || *p == '-') {
do p++; while (*p == '*' || *p == ' ' || *p == '-');
if (!*p) break;
if (o < (f->fontname + sizeof(f->fontname) - 1)) *o++ = ' ';
}
if (o < (f->fontname + sizeof(f->fontname) - 1)) *o++ = *p;
}
*o = 0;
return f->fontname;
} }
*o = 0;
return buffer;
}
// get the family: // get the family:
const char *x = fl_font_word(p,2); if (*x) x++; if (*x=='*') x++; const char *x = fl_font_word(p,2); if (*x) x++; if (*x=='*') x++;
if (!*x) { if (!*x) {
if (ap) *ap = 0; if (ap) *ap = 0;
return p; return p;
} }
const char *e = fl_font_word(x,1); const char *e = fl_font_word(x,1);
// MRS: we want strncpy here, not strlcpy... if ((e - x) < (sizeof(f->fontname) - 1)) {
strncpy(o,x,e-x);
o += e-x;
// collect all the attribute words:
int type = 0;
for (int n = 3; n <= 6; n++) {
// get the next word:
if (*e) e++; x = e; e = fl_font_word(x,1);
int t = attribute(n,x);
if (t < 0) {
*o++ = ' ';
// MRS: we want strncpy here, not strlcpy... // MRS: we want strncpy here, not strlcpy...
strncpy(o,x,e-x); strncpy(o,x,e-x);
o += e-x; o += e-x;
} else type |= t; } else {
strlcpy(f->fontname,x,sizeof(f->fontname));
return f->fontname;
}
// collect all the attribute words:
int type = 0;
for (int n = 3; n <= 6; n++) {
// get the next word:
if (*e) e++; x = e; e = fl_font_word(x,1);
int t = attribute(n,x);
if (t < 0) {
if (o < (f->fontname + sizeof(f->fontname) - 1) *o++ = ' ';
if ((e - x) < (sizeof(f->fontname) - (o - f->fontname) - 1)) {
// MRS: we want strncpy here, not strlcpy...
strncpy(o,x,e-x);
o += e-x;
} else {
strlcpy(o,x,sizeof(f->fontname) - (o - f->fontname) - 1);
return f->fontname;
}
} else type |= t;
}
// skip over the '*' for the size and get the registry-encoding:
x = fl_font_word(e,2);
if (*x) {x++; *o++ = '('; while (*x) *o++ = *x++; *o++ = ')';}
*o = 0;
if (type & FL_BOLD) strlcat(f->fontname, " bold", sizeof(f->fontname));
if (type & FL_ITALIC) strlcat(f->fontname, " italic", sizeof(f->fontname));
if (ap) *ap = type;
} }
// skip over the '*' for the size and get the registry-encoding: return f->fontname;
x = fl_font_word(e,2);
if (*x) {x++; *o++ = '('; while (*x) *o++ = *x++; *o++ = ')';}
*o = 0;
if (type & FL_BOLD) {strcpy(o, " bold"); o += 5;}
if (type & FL_ITALIC) {strcpy(o, " italic"); o += 7;}
if (ap) *ap = type;
return buffer;
} }
extern "C" { extern "C" {
@ -330,5 +342,5 @@ int Fl::get_font_sizes(Fl_Font fnum, int*& sizep) {
} }
// //
// End of "$Id: fl_set_fonts_x.cxx,v 1.1.2.3 2002/05/16 12:47:43 easysw Exp $". // End of "$Id: fl_set_fonts_x.cxx,v 1.1.2.4 2002/08/09 01:09:49 easysw Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: fl_set_fonts_xft.cxx,v 1.1.2.1 2002/03/06 18:11:01 easysw Exp $" // "$Id: fl_set_fonts_xft.cxx,v 1.1.2.2 2002/08/09 01:09:49 easysw Exp $"
// //
// More font utilities for the Fast Light Tool Kit (FLTK). // More font utilities for the Fast Light Tool Kit (FLTK).
// //
@ -32,21 +32,23 @@
// turn a stored font name into a pretty name: // turn a stored font name into a pretty name:
const char* Fl::get_font_name(Fl_Font fnum, int* ap) { const char* Fl::get_font_name(Fl_Font fnum, int* ap) {
const char* p = fl_fonts[fnum].name; Fl_Fontdesc *f = fl_fonts + fnum;
int type; if (!f->fontname[0]) {
switch (p[0]) { const char* p = f->name;
case 'B': type = FL_BOLD; break; int type;
case 'I': type = FL_ITALIC; break; switch (p[0]) {
case 'P': type = FL_BOLD | FL_ITALIC; break; case 'B': type = FL_BOLD; break;
default: type = 0; break; case 'I': type = FL_ITALIC; break;
case 'P': type = FL_BOLD | FL_ITALIC; break;
default: type = 0; break;
}
if (ap) {*ap = type; return p+1;}
if (!type) {return p+1;}
strlcpy(f->fontname, p+1, sizeof(f->fontname));
if (type & FL_BOLD) strlcat(f->fontname, " bold", sizeof(f->fontname));
if (type & FL_ITALIC) strlcat(f->fontname, " italic", sizeof(f->fontname));
} }
if (ap) {*ap = type; return p+1;} return f->fontname;
if (!type) {return p+1;}
static char *buffer = new char[128];
strcpy(buffer, p+1);
if (type & FL_BOLD) strcat(buffer, " bold");
if (type & FL_ITALIC) strcat(buffer, " italic");
return buffer;
} }
#if 0 #if 0
@ -116,5 +118,5 @@ int Fl::get_font_sizes(Fl_Font fnum, int*& sizep) {
} }
// //
// End of "$Id: fl_set_fonts_xft.cxx,v 1.1.2.1 2002/03/06 18:11:01 easysw Exp $". // End of "$Id: fl_set_fonts_xft.cxx,v 1.1.2.2 2002/08/09 01:09:49 easysw Exp $".
// //