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
- 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
flagged as protected.
- 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).
//
@ -69,7 +69,7 @@ public: // should be private!
static int compose_state;
static int visible_focus_;
static int dnd_text_ops_;
static void damage(int x) {damage_ = x;}
static void damage(int d) {damage_ = d;}
static void (*idle)();
@ -237,7 +237,7 @@ public:
static int event_button2() {return e_state&FL_BUTTON2;}
static int event_button3() {return e_state&FL_BUTTON3;}
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);}
// Visible focus methods...
@ -258,5 +258,5 @@ public:
#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).
//
@ -41,13 +41,13 @@ protected:
FL_EXPORT int handle(int);
FL_EXPORT void value_damage();
public:
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 Fl_Adjuster(int X,int Y,int W,int H,const char *l=0);
FL_EXPORT void soft(int s) {soft_ = s;}
FL_EXPORT int soft() const {return soft_;}
};
#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).
//
@ -34,10 +34,10 @@ class Fl_Box : public Fl_Widget {
protected:
FL_EXPORT void draw();
public:
FL_EXPORT Fl_Box(int x, int y, int w, int h, const char *l=0)
: 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_Widget(x,y,w,h,l) {box(b);}
FL_EXPORT Fl_Box(int X, int Y, int W, int H, const char *l=0)
: 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_Widget(X,Y,W,H,l) {box(b);}
virtual FL_EXPORT int handle(int);
};
@ -45,5 +45,5 @@ public:
#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).
//
@ -65,7 +65,7 @@ public:
FL_EXPORT void replace(int,const char *);
FL_EXPORT void remove(int);
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;}
const Fl_Menu_Item *mvalue() const {return value_;}
@ -93,5 +93,5 @@ public:
#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).
//
@ -33,12 +33,12 @@ protected:
FL_EXPORT void draw();
public:
FL_EXPORT int handle(int);
Fl_Menu_Bar(int x,int y,int w,int h,const char *l=0)
: Fl_Menu_(x,y,w,h,l) {}
Fl_Menu_Bar(int X, int Y, int W, int H,const char *l=0)
: Fl_Menu_(X,Y,W,H,l) {}
};
#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).
//
@ -50,10 +50,10 @@ class FL_EXPORT Fl_Pixmap : public Fl_Image {
Fl_Offscreen id; // for internal use
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(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 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(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(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();}
virtual ~Fl_Pixmap();
virtual Fl_Image *copy(int W, int H);
Fl_Image *copy() { return copy(w(), h()); }
@ -69,5 +69,5 @@ class FL_EXPORT Fl_Pixmap : public Fl_Image {
#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).
//
@ -32,12 +32,12 @@ protected:
FL_EXPORT void draw();
public:
FL_EXPORT int handle(int);
Fl_Return_Button(int x,int y,int w,int h,const char *l=0)
: Fl_Button(x,y,w,h,l) {}
Fl_Return_Button(int X, int Y, int W, int H,const char *l=0)
: Fl_Button(X,Y,W,H,l) {}
};
#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).
//
@ -43,8 +43,8 @@ public:
FL_EXPORT int handle(int);
int value() {return int(Fl_Slider::value());}
int value(int position, int size, int top, int total) {
return scrollvalue(position, size, top, total);
int value(int p, int s, int top, int total) {
return scrollvalue(p, s, top, total);
}
int linesize() const {return linesize_;}
void linesize(int i) {linesize_ = i;}
@ -54,5 +54,5 @@ public:
#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).
//
@ -42,7 +42,7 @@ public:
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);
void soft(char x) {soft_ = x;}
void soft(char s) {soft_ = s;}
char soft() const {return soft_;}
Fl_Font textfont() const {return input.textfont();}
@ -59,5 +59,5 @@ public:
#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).
//
@ -103,7 +103,7 @@ public:
FL_EXPORT virtual void draw() = 0;
FL_EXPORT virtual int handle(int);
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_;}
void type(uchar t) {type_ = t;}
@ -195,7 +195,7 @@ public:
FL_EXPORT void damage(uchar c);
FL_EXPORT void damage(uchar c,int,int,int,int);
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 ;
@ -212,5 +212,5 @@ public:
#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).
//
@ -114,15 +114,15 @@ public:
char wait_for_expose;
char backbuffer_bad; // used for XDBE
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 sendxjunk();
static FL_EXPORT void make_xid(Fl_Window*,XVisualInfo* =fl_visual, Colormap=fl_colormap);
static FL_EXPORT Fl_X* set_xid(Fl_Window*, Window);
// kludges to get around protection:
FL_EXPORT void flush() {w->flush();}
static FL_EXPORT void x(Fl_Window* w, int X) {w->x(X);}
static FL_EXPORT void y(Fl_Window* w, int Y) {w->y(Y);}
static FL_EXPORT void x(Fl_Window* wi, int X) {wi->x(X);}
static FL_EXPORT void y(Fl_Window* wi, int Y) {wi->y(Y);}
};
// 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
//
// 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 the "configure" script is made from this by running GNU "autoconf"
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 Configuration script for the Fast Light Tool Kit (FLTK).
dnl
@ -615,7 +615,7 @@ if test -n "$GCC"; then
CXX="$CC"
# Show all warnings when compiling...
OPTIM="-Wall $OPTIM"
OPTIM="-Wall -Wshadow -Wconversion -Winline $OPTIM"
# Set the default compiler optimizations...
if test -z "$DEBUGFLAG"; then
@ -782,5 +782,5 @@ dnl Make sure the fltk-config script is executable...
chmod +x fltk-config
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

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).
//
@ -73,10 +73,10 @@ Fl::version() {
// the given rectangle.
//
int Fl::event_inside(int x,int y,int w,int h) /*const*/ {
int mx = e_x - x;
int my = e_y - y;
return (mx >= 0 && mx < w && my >= 0 && my < h);
int Fl::event_inside(int xx,int yy,int ww,int hh) /*const*/ {
int mx = e_x - xx;
int my = e_y - yy;
return (mx >= 0 && mx < ww && my >= 0 && my < hh);
}
int Fl::event_inside(const Fl_Widget *o) /*const*/ {
@ -135,19 +135,19 @@ static void elapse_timeouts() {
// time interval:
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();
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;
Timeout* t = free_timeout;
if (t) free_timeout = t->next;
else t = new Timeout;
t->time = time;
t->cb = cb;
t->arg = arg;
t->arg = argp;
// insert-sort the new timeout:
Timeout** p = &first_timeout;
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;
}
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)
if (t->cb == cb && t->arg == arg) return 1;
if (t->cb == cb && t->arg == argp) return 1;
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 may change in the future.
for (Timeout** p = &first_timeout; *p;) {
Timeout* t = *p;
if (t->cb == cb && (t->arg == arg || !arg)) {
if (t->cb == cb && (t->arg == argp || !argp)) {
*p = t->next;
t->next = free_timeout;
free_timeout = t;
@ -191,21 +191,21 @@ struct 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;
if (t) free_check = t->next;
else t = new Check;
t->cb = cb;
t->arg = arg;
t->arg = argp;
t->next = first_check;
if (next_check == first_check) next_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;) {
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;
*p = t->next;
t->next = free_check;
@ -215,7 +215,7 @@ void Fl::remove_check(Fl_Timeout_Handler cb, void *arg) {
}
}
}
////////////////////////////////////////////////////////////////
// wait/run/check/ready:
@ -235,12 +235,12 @@ double Fl::wait(double time_to_wait) {
missed_timeout_by = t->time;
// We must remove timeout from array before doing the callback:
void (*cb)(void*) = t->cb;
void *arg = t->arg;
void *argp = t->arg;
first_timeout = t->next;
t->next = free_timeout;
free_timeout = t;
// Now it is safe for the callback to do add_timeout:
cb(arg);
cb(argp);
}
} else {
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:
if (next_check == first_check) {
while (next_check) {
Check* check = next_check;
next_check = check->next;
(check->cb)(check->arg);
Check* checkp = next_check;
next_check = checkp->next;
(checkp->cb)(checkp->arg);
}
next_check = first_check;
}
@ -329,13 +329,13 @@ Fl_Window* fl_find(Window xid) {
}
Fl_Window* Fl::first_window() {
Fl_X* x = Fl_X::first;
return x ? x->w : 0;
Fl_X* i = Fl_X::first;
return i ? i->w : 0;
}
Fl_Window* Fl::next_window(const Fl_Window* w) {
Fl_X* x = Fl_X::i(w)->next;
return x ? x->w : 0;
Fl_Window* Fl::next_window(const Fl_Window* window) {
Fl_X* i = Fl_X::i(window)->next;
return i ? i->w : 0;
}
void Fl::first_window(Fl_Window* window) {
@ -344,19 +344,19 @@ void Fl::first_window(Fl_Window* window) {
}
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() {
if (damage()) {
damage_ = 0;
for (Fl_X* x = Fl_X::first; x; x = x->next) {
if (x->wait_for_expose) {damage_ = 1; continue;}
Fl_Window* w = x->w;
if (!w->visible_r()) continue;
if (w->damage()) {x->flush(); w->clear_damage();}
for (Fl_X* i = Fl_X::first; i; i = i->next) {
if (i->wait_for_expose) {damage_ = 1; continue;}
Fl_Window* wi = i->w;
if (!wi->visible_r()) continue;
if (wi->damage()) {i->flush(); wi->clear_damage();}
// 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;
void Fl::add_handler(int (*h)(int)) {
void Fl::add_handler(int (*ha)(int)) {
handler_link *l = new handler_link;
l->handle = h;
l->handle = ha;
l->next = handlers;
handlers = l;
}
void Fl::remove_handler(int (*h)(int)) {
void Fl::remove_handler(int (*ha)(int)) {
handler_link *l, *p;
// 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) {
// 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
static int send_handlers(int event) {
for (const handler_link *h = handlers; h; h = h->next)
if (h->handle(event)) return 1;
static int send_handlers(int e) {
for (const handler_link *hl = handlers; hl; hl = hl->next)
if (hl->handle(e)) return 1;
return 0;
}
@ -550,18 +550,18 @@ static int send(int event, Fl_Widget* to, Fl_Window* window) {
return ret;
}
int Fl::handle(int event, Fl_Window* window)
int Fl::handle(int e, Fl_Window* window)
{
e_number = event;
if (fl_local_grab) return fl_local_grab(event);
e_number = e;
if (fl_local_grab) return fl_local_grab(e);
Fl_Widget* w = window;
Fl_Widget* wi = window;
switch (event) {
switch (e) {
case FL_CLOSE:
if (grab() || modal() && window != modal()) return 0;
w->do_callback();
wi->do_callback();
return 1;
case FL_SHOW:
@ -574,10 +574,10 @@ int Fl::handle(int event, Fl_Window* window)
case FL_PUSH:
Fl_Tooltip::enter((Fl_Widget*)0);
if (grab()) w = grab();
else if (modal() && w != modal()) return 0;
pushed_ = w;
if (send(event, w, window)) return 1;
if (grab()) wi = grab();
else if (modal() && wi != modal()) return 0;
pushed_ = wi;
if (send(e, wi, window)) return 1;
// raise windows that are clicked on:
window->show();
return 1;
@ -594,32 +594,32 @@ int Fl::handle(int event, Fl_Window* window)
return 1;
case FL_DND_RELEASE:
w = belowmouse();
wi = belowmouse();
break;
case FL_MOVE:
case FL_DRAG:
fl_xmousewin = window; // this should already be set, but just in case.
if (pushed()) {
w = pushed();
if (grab()) w = grab();
e_number = event = FL_DRAG;
wi = pushed();
if (grab()) wi = grab();
e_number = e = FL_DRAG;
break;
}
if (modal() && w != modal()) w = 0;
if (grab()) w = grab();
if (modal() && wi != modal()) wi = 0;
if (grab()) wi = grab();
{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());
return ret;}
case FL_RELEASE: {
if (pushed()) {
w = pushed();
wi = pushed();
pushed_ = 0; // must be zero before callback is done!
}
if (grab()) w = grab();
int r = send(event, w, window);
if (grab()) wi = grab();
int r = send(e, wi, window);
fl_fix_focus();
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:
// Try it as keystroke, sending it to focus and all parents:
for (w = grab() ? grab() : focus(); w; w = w->parent())
if (send(FL_KEYBOARD, w, window)) return 1;
for (wi = grab() ? grab() : focus(); wi; wi = wi->parent())
if (send(FL_KEYBOARD, wi, window)) return 1;
// recursive call to try shortcut:
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
if (!isalpha(*c)) return 0;
*c = isupper(*c) ? tolower(*c) : toupper(*c);}
e_number = event = FL_SHORTCUT;
e_number = e = 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:
w = belowmouse(); if (!w) {w = modal(); if (!w) w = window;}
for (; w; w = w->parent()) if (send(FL_SHORTCUT, w, window)) return 1;
wi = belowmouse(); if (!wi) {wi = modal(); if (!wi) wi = window;}
for (; wi; wi = wi->parent()) if (send(FL_SHORTCUT, wi, window)) return 1;
// try using add_handle() functions:
if (send_handlers(FL_SHORTCUT)) return 1;
// make Escape key close windows:
if (event_key()==FL_Escape) {
w = modal(); if (!w) w = window;
w->do_callback();
wi = modal(); if (!wi) wi = window;
wi->do_callback();
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:
// Try it as keystroke, sending it to focus and all parents:
for (w = grab() ? grab() : focus(); w; w = w->parent())
if (send(FL_MOUSEWHEEL, w, window)) return 1;
for (wi = grab() ? grab() : focus(); wi; wi = wi->parent())
if (send(FL_MOUSEWHEEL, wi, window)) return 1;
default:
break;
}
if (w && send(event, w, window)) {
if (wi && send(e, wi, window)) {
dnd_flag = 0;
return 1;
}
dnd_flag = 0;
return send_handlers(event);
return send_handlers(e);
}
////////////////////////////////////////////////////////////////
@ -708,10 +708,10 @@ void Fl_Window::hide() {
if (!shown()) return;
// remove from the list of windows:
Fl_X* x = i;
Fl_X* ip = i;
Fl_X** pp = &Fl_X::first;
for (; *pp != x; pp = &(*pp)->next) if (!*pp) return;
*pp = x->next;
for (; *pp != ip; pp = &(*pp)->next) if (!*pp) return;
*pp = ip->next;
#ifdef __APPLE__
// remove all childwindow links
@ -725,20 +725,20 @@ void Fl_Window::hide() {
i = 0;
// recursively remove any subwindows:
for (Fl_X *w = Fl_X::first; w;) {
Fl_Window* W = w->w;
for (Fl_X *wi = Fl_X::first; wi;) {
Fl_Window* W = wi->w;
if (W->window() == this) {
W->hide();
W->set_visible();
w = Fl_X::first;
} else w = w->next;
wi = Fl_X::first;
} else wi = wi->next;
}
if (this == Fl::modal_) { // we are closing the modal window, find next one:
Fl_Window* w;
for (w = Fl::first_window(); w; w = Fl::next_window(w))
if (w->modal()) break;
Fl::modal_ = w;
Fl_Window* W;
for (W = Fl::first_window(); W; W = Fl::next_window(W))
if (W->modal()) break;
Fl::modal_ = W;
}
// Make sure no events are sent to this window:
@ -746,31 +746,31 @@ void Fl_Window::hide() {
handle(FL_HIDE);
#ifdef WIN32
if (x->private_dc) ReleaseDC(x->xid,x->private_dc);
if (x->xid == fl_window && fl_gc) {
if (ip->private_dc) ReleaseDC(ip->xid,ip->private_dc);
if (ip->xid == fl_window && fl_gc) {
ReleaseDC(fl_window, fl_gc);
fl_window = (HWND)-1;
fl_gc = 0;
}
#elif defined(__APPLE__)
if ( x->xid == fl_window )
if ( ip->xid == fl_window )
fl_window = 0;
#else
if (x->region) XDestroyRegion(x->region);
if (ip->region) XDestroyRegion(ip->region);
#endif
#ifdef __APPLE__
if ( !parent() ) // don't destroy shared windows!
{
//+ RemoveTrackingHandler( dndTrackingHandler, x->xid );
//+ RemoveReceiveHandler( dndReceiveHandler, x->xid );
XDestroyWindow(fl_display, x->xid);
//+ RemoveTrackingHandler( dndTrackingHandler, ip->xid );
//+ RemoveReceiveHandler( dndReceiveHandler, ip->xid );
XDestroyWindow(fl_display, ip->xid);
}
#else
# if USE_XFT
fl_destroy_xft_draw(x->xid);
fl_destroy_xft_draw(ip->xid);
# endif
XDestroyWindow(fl_display, x->xid);
XDestroyWindow(fl_display, ip->xid);
#endif
#ifdef WIN32
@ -778,7 +778,7 @@ void Fl_Window::hide() {
if (non_modal() && Fl::first_window() && Fl::first_window()->shown())
Fl::first_window()->show();
#endif
delete x;
delete ip;
// Hide any visible tooltips...
//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
// 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:
if (!shown()) show();
else XMapWindow(fl_display, fl_xid(this)); // extra map calls are harmless
@ -821,7 +821,7 @@ int Fl_Window::handle(int event)
break;
}
return Fl_Group::handle(event);
return Fl_Group::handle(ev);
}
////////////////////////////////////////////////////////////////
@ -862,58 +862,58 @@ void Fl_Widget::redraw() {
label_.measure(W, H);
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) {
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) {
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) {
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) {
// damage only the rectangle covered by a child widget:
damage(flags, x(), y(), w(), h());
damage(fl, x(), y(), w(), h());
} else {
// damage entire window by deleting the region:
Fl_X* i = Fl_X::i((Fl_Window*)this);
if (!i) return; // window not mapped, so ignore it
if (i->region) {XDestroyRegion(i->region); i->region = 0;}
damage_ |= flags;
damage_ |= fl;
Fl::damage(FL_DAMAGE_CHILD);
}
}
void Fl_Widget::damage(uchar flags, int X, int Y, int W, int H) {
Fl_Widget* window = this;
void Fl_Widget::damage(uchar fl, int X, int Y, int W, int H) {
Fl_Widget* wi = this;
// mark all parent widgets between this and window with FL_DAMAGE_CHILD:
while (window->type() < FL_WINDOW) {
window->damage_ |= flags;
window = window->parent();
if (!window) return;
flags = FL_DAMAGE_CHILD;
while (wi->type() < FL_WINDOW) {
wi->damage_ |= fl;
wi = wi->parent();
if (!wi) return;
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 (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:
window->damage(flags);
wi->damage(fl);
return;
}
// clip the damage to the window and quit if none:
if (X < 0) {W += X; X = 0;}
if (Y < 0) {H += Y; Y = 0;}
if (W > window->w()-X) W = window->w()-X;
if (H > window->h()-Y) H = window->h()-Y;
if (W > wi->w()-X) W = wi->w()-X;
if (H > wi->h()-Y) H = wi->h()-Y;
if (W <= 0 || H <= 0) return;
if (window->damage()) {
if (wi->damage()) {
// if we already have damage we must merge with existing region:
if (i->region) {
#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);
#endif
}
window->damage_ |= flags;
wi->damage_ |= fl;
} else {
// create a new region:
if (i->region) XDestroyRegion(i->region);
i->region = XRectangleRegion(X,Y,W,H);
window->damage_ = flags;
wi->damage_ = fl;
}
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).
//
@ -155,8 +155,8 @@ int Fl_Adjuster::handle(int event) {
return 0;
}
Fl_Adjuster::Fl_Adjuster(int x, int y, int w, int h, const char* l)
: Fl_Valuator(x, y, w, h, l) {
Fl_Adjuster::Fl_Adjuster(int X, int Y, int W, int H, const char* l)
: Fl_Valuator(X, Y, W, H, l) {
box(FL_UP_BOX);
step(1, 10000);
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.
//
@ -72,7 +72,7 @@ Fl_BMP_Image::Fl_BMP_Image(const char *bmp) // I - File to read
colors_used, // Number of colors used
x, y, // Looping vars
color, // Color of RLE pixel
count, // Number of times to repeat
repcount, // Number of times to repeat
temp, // Temporary color
align; // Alignment bytes
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;
colors_used = 0;
count = info_size - 12;
repcount = info_size - 12;
} else {
// New BMP header...
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);
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",
// w(), h(), depth, compression, colors_used, count);
// printf("w() = %d, h() = %d, depth = %d, compression = %d, colors_used = %d, repcount = %d\n",
// w(), h(), depth, compression, colors_used, repcount);
// Skip remaining header bytes...
while (count > 0) {
while (repcount > 0) {
getc(fp);
count --;
repcount --;
}
// 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)
colors_used = 1 << depth;
for (count = 0; count < colors_used; count ++) {
for (repcount = 0; repcount < colors_used; repcount ++) {
// Read BGR color...
fread(colormap[count], 1, 3, fp);
fread(colormap[repcount], 1, 3, fp);
// Skip pad byte for new BMP files...
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...
color = 0;
count = 0;
repcount = 0;
align = 0;
byte = 0;
temp = 0;
@ -202,10 +202,10 @@ Fl_BMP_Image::Fl_BMP_Image(const char *bmp) // I - File to read
case 4 : // 16-color
for (x = w(), bit = 0xf0; x > 0; x --) {
// Get a new count as needed...
if (count == 0) {
// Get a new repcount as needed...
if (repcount == 0) {
if (compression != BI_RLE4) {
count = 2;
repcount = 2;
color = -1;
} else {
while (align > 0) {
@ -213,22 +213,22 @@ Fl_BMP_Image::Fl_BMP_Image(const char *bmp) // I - File to read
getc(fp);
}
if ((count = getc(fp)) == 0) {
if ((count = getc(fp)) == 0) {
if ((repcount = getc(fp)) == 0) {
if ((repcount = getc(fp)) == 0) {
// End of line...
x ++;
continue;
} else if (count == 1) {
} else if (repcount == 1) {
// End of image...
break;
} else if (count == 2) {
} else if (repcount == 2) {
// Delta...
count = getc(fp) * getc(fp) * w();
repcount = getc(fp) * getc(fp) * w();
color = 0;
} else {
// Absolute...
color = -1;
align = ((4 - (count & 3)) / 2) & 1;
align = ((4 - (repcount & 3)) / 2) & 1;
}
} else {
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...
count --;
repcount --;
// Get the next color byte as needed...
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
for (x = w(); x > 0; x --) {
// Get a new count as needed...
// Get a new repcount as needed...
if (compression != BI_RLE8) {
count = 1;
repcount = 1;
color = -1;
}
if (count == 0) {
if (repcount == 0) {
while (align > 0) {
align --;
getc(fp);
}
if ((count = getc(fp)) == 0) {
if ((count = getc(fp)) == 0) {
if ((repcount = getc(fp)) == 0) {
if ((repcount = getc(fp)) == 0) {
// End of line...
x ++;
continue;
} else if (count == 1) {
} else if (repcount == 1) {
// End of image...
break;
} else if (count == 2) {
} else if (repcount == 2) {
// Delta...
count = getc(fp) * getc(fp) * w();
repcount = getc(fp) * getc(fp) * w();
color = 0;
} else {
// Absolute...
color = -1;
align = (2 - (count & 1)) & 1;
align = (2 - (repcount & 1)) & 1;
}
} else {
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);
else temp = color;
count --;
repcount --;
// Copy the color value...
*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).
//
@ -395,8 +395,8 @@ void Fl_Bitmap::uncache() {
}
}
void Fl_Bitmap::label(Fl_Widget* w) {
w->image(this);
void Fl_Bitmap::label(Fl_Widget* widget) {
widget->image(this);
}
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).
//
@ -161,13 +161,13 @@ void Fl_Browser::insert(int line, FL_BLINE* 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);
FL_BLINE* t = (FL_BLINE*)malloc(sizeof(FL_BLINE)+l);
t->length = l;
t->flags = 0;
strcpy(t->txt, newtext);
t->data = data;
t->data = d;
insert(line, t);
}
@ -198,9 +198,9 @@ void Fl_Browser::text(int line, const char* newtext) {
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;
find_line(line)->data = data;
find_line(line)->data = d;
}
int Fl_Browser::item_height(void* lv) const {
@ -212,27 +212,27 @@ int Fl_Browser::item_height(void* lv) const {
if (!l->txt[0]) {
// For blank lines set the height to exactly 1 line!
fl_font(textfont(), textsize());
int h = fl_height();
if (h > hmax) hmax = h;
int hh = fl_height();
if (hh > hmax) hmax = hh;
}
else {
// do each column separately as they may all set different fonts:
for (char* str = l->txt; *str; str++) {
Fl_Font font = textfont(); // default font
int size = textsize(); // default size
int tsize = textsize(); // default size
while (*str==format_char()) {
str++;
switch (*str++) {
case 'l': case 'L': size = 24; break;
case 'm': case 'M': size = 18; break;
case 's': size = 11; break;
case 'l': case 'L': tsize = 24; break;
case 'm': case 'M': tsize = 18; break;
case 's': tsize = 11; break;
case 'b': font = (Fl_Font)(font|FL_BOLD); break;
case 'i': font = (Fl_Font)(font|FL_ITALIC); break;
case 'f': case 't': font = FL_COURIER; break;
case 'B':
case 'C': strtol(str, &str, 10); break;// skip a color number
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 '.': goto END_FORMAT;
}
@ -241,8 +241,8 @@ int Fl_Browser::item_height(void* lv) const {
char* ptr = str;
for(;*str && (*str!=column_char()); str++) ;
if (ptr < str) {
fl_font(font, size); int h = fl_height();
if (h > hmax) hmax = h;
fl_font(font, tsize); int hh = fl_height();
if (hh > hmax) hmax = hh;
}
if (!*str) str --;
}
@ -254,34 +254,34 @@ int Fl_Browser::item_height(void* lv) const {
int Fl_Browser::item_width(void* v) const {
char* str = ((FL_BLINE*)v)->txt;
const int* i = column_widths();
int w = 0;
int ww = 0;
while (*i) { // add up all tab-seperated fields
char* e;
for (e = str; *e && *e != column_char(); e++);
if (!*e) break; // last one occupied by text
str = e+1;
w += *i++;
ww += *i++;
}
// OK, we gotta parse the string and find the string width...
int size = textsize();
int tsize = textsize();
Fl_Font font = textfont();
int done = 0;
while (*str == format_char_ && str[1] && str[1] != format_char_) {
str ++;
switch (*str++) {
case 'l': case 'L': size = 24; break;
case 'm': case 'M': size = 18; break;
case 's': size = 11; break;
case 'l': case 'L': tsize = 24; break;
case 'm': case 'M': tsize = 18; break;
case 's': tsize = 11; break;
case 'b': font = (Fl_Font)(font|FL_BOLD); break;
case 'i': font = (Fl_Font)(font|FL_ITALIC); break;
case 'f': case 't': font = FL_COURIER; break;
case 'B':
case 'C': strtol(str, &str, 10); break;// skip a color number
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 '.':
done = 1;
case '@':
@ -296,8 +296,8 @@ int Fl_Browser::item_width(void* v) const {
if (*str == format_char_ && str[1])
str ++;
fl_font(font, size);
return w + int(fl_width(str)) + 6;
fl_font(font, tsize);
return ww + int(fl_width(str)) + 6;
}
int Fl_Browser::full_height() const {
@ -308,36 +308,36 @@ int Fl_Browser::incr_height() const {
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;
const int* i = column_widths();
while (w > 6) { // do each tab-seperated field
int w1 = w; // width for this field
while (W > 6) { // do each tab-seperated field
int w1 = W; // width for this field
char* e = 0; // pointer to end of field or null if none
if (*i) { // find end of field and temporarily replace with 0
for (e = str; *e && *e != column_char(); e++);
if (*e) {*e = 0; w1 = *i++;} else e = 0;
}
int size = textsize();
int tsize = textsize();
Fl_Font font = textfont();
Fl_Color lcol = textcolor();
Fl_Align align = FL_ALIGN_LEFT;
Fl_Align talign = FL_ALIGN_LEFT;
// check for all the @-lines recognized by XForms:
while (*str == format_char() && *++str && *str != format_char()) {
switch (*str++) {
case 'l': case 'L': size = 24; break;
case 'm': case 'M': size = 18; break;
case 's': size = 11; break;
case 'l': case 'L': tsize = 24; break;
case 'm': case 'M': tsize = 18; break;
case 's': tsize = 11; break;
case 'b': font = (Fl_Font)(font|FL_BOLD); break;
case 'i': font = (Fl_Font)(font|FL_ITALIC); break;
case 'f': case 't': font = FL_COURIER; break;
case 'c': align = FL_ALIGN_CENTER; break;
case 'r': align = FL_ALIGN_RIGHT; break;
case 'c': talign = FL_ALIGN_CENTER; break;
case 'r': talign = FL_ALIGN_RIGHT; break;
case 'B':
if (!(((FL_BLINE*)v)->flags & SELECTED)) {
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);
break;
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;
break;
case 'S':
size = strtol(str, &str, 10);
tsize = strtol(str, &str, 10);
break;
case '-':
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_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;
case 'u':
case '_':
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;
case '.':
goto BREAK;
@ -370,24 +370,24 @@ void Fl_Browser::item_draw(void* v, int x, int y, int w, int h) const {
}
}
BREAK:
fl_font(font, size);
fl_font(font, tsize);
if (((FL_BLINE*)v)->flags & SELECTED)
lcol = fl_contrast(lcol, selection_color());
if (!active_r()) lcol = fl_inactive(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...
*e = column_char(); // put the seperator back
x += w1;
w -= w1;
X += w1;
W -= w1;
str = e+1;
}
}
static const int no_columns[1] = {0};
Fl_Browser::Fl_Browser(int x, int y, int w, int h, const char*l)
: Fl_Browser_(x, y, w, h, l) {
Fl_Browser::Fl_Browser(int X, int Y, int W, int H, const char*l)
: Fl_Browser_(X, Y, W, H, l) {
column_widths_ = no_columns;
lines = 0;
full_height_ = 0;
@ -427,9 +427,9 @@ int Fl_Browser::topline() const {
void Fl_Browser::clear() {
for (FL_BLINE* l = first; l;) {
FL_BLINE* h = l->next;
FL_BLINE* n = l->next;
free(l);
l = h;
l = n;
}
full_height_ = 0;
first = 0;
@ -437,8 +437,8 @@ void Fl_Browser::clear() {
new_list();
}
void Fl_Browser::add(const char* newtext, void* data) {
insert(lines+1, newtext, data);
void Fl_Browser::add(const char* newtext, void* d) {
insert(lines+1, newtext, d);
//Fl_Browser_::display(last);
}
@ -452,9 +452,9 @@ void* Fl_Browser::data(int line) const {
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;
return Fl_Browser_::select(find_line(line), value);
return Fl_Browser_::select(find_line(line), v);
}
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 (value) show(line); else hide(line);
if (v) show(line); else hide(line);
}
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).
//
@ -119,9 +119,9 @@ void Fl_Browser_::update_top() {
if (position_ != real_position_) {
void* l;
int ly;
int y = position_;
int yy = position_;
// 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();
ly = 0;
} else {
@ -133,35 +133,35 @@ void Fl_Browser_::update_top() {
offset_ = 0;
real_position_ = 0;
} else {
int h = item_quick_height(l);
int hh = item_quick_height(l);
// step through list until we find line containing this point:
while (ly > y) {
while (ly > yy) {
void* l1 = item_prev(l);
if (!l1) {ly = 0; break;} // hit the top
l = l1;
h = item_quick_height(l);
ly -= h;
l = l1;
hh = item_quick_height(l);
ly -= hh;
}
while ((ly+h) <= y) {
while ((ly+hh) <= yy) {
void* l1 = item_next(l);
if (!l1) {y = ly+h-1; break;}
if (!l1) {yy = ly+hh-1; break;}
l = l1;
ly += h;
h = item_quick_height(l);
ly += hh;
hh = item_quick_height(l);
}
// top item must *really* be visible, use slow height:
for (;;) {
h = item_height(l);
if ((ly+h) > y) break; // it is big enough to see
hh = item_height(l);
if ((ly+hh) > yy) break; // it is big enough to see
// go up to top of previous item:
void* l1 = item_prev(l);
if (!l1) {ly = y = 0; break;} // hit the top
l = l1; y = position_ = ly = ly-item_quick_height(l);
if (!l1) {ly = yy = 0; break;} // hit the top
l = l1; yy = position_ = ly = ly-item_quick_height(l);
}
// use it:
top_ = l;
offset_ = y-ly;
real_position_ = y;
offset_ = yy-ly;
real_position_ = yy;
}
damage(FL_DAMAGE_SCROLL);
}
@ -169,26 +169,26 @@ void Fl_Browser_::update_top() {
// Change position(), top() will update when update_top() is called
// (probably by draw() or handle()):
void Fl_Browser_::position(int y) {
if (y < 0) y = 0;
if (y == position_) return;
position_ = y;
if (y != real_position_) redraw_lines();
void Fl_Browser_::position(int yy) {
if (yy < 0) yy = 0;
if (yy == position_) return;
position_ = yy;
if (yy != real_position_) redraw_lines();
}
void Fl_Browser_::hposition(int x) {
if (x < 0) x = 0;
if (x == hposition_) return;
hposition_ = x;
if (x != real_hposition_) redraw_lines();
void Fl_Browser_::hposition(int xx) {
if (xx < 0) xx = 0;
if (xx == hposition_) return;
hposition_ = xx;
if (xx != real_hposition_) redraw_lines();
}
// 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 yy = H+offset_;
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);
}
return 0;
@ -196,11 +196,11 @@ int Fl_Browser_::displayed(void* x) const {
// Ensure this item is displayed:
// 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?
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);
void* l = top_;
@ -208,11 +208,11 @@ void Fl_Browser_::display(void* x) {
int h1;
// 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?
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
// 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) {
if (l) {
h1 = item_quick_height(l);
if (l == x) {
if (l == p) {
if (Y <= H) { // it is visible or right at bottom
Y = Y+h1-H; // find where bottom edge is
if (Y > 0) position(real_position_+Y); // scroll down a bit
@ -236,7 +236,7 @@ void Fl_Browser_::display(void* x) {
if (lp) {
h1 = item_quick_height(lp);
Yp -= h1;
if (lp == x) {
if (lp == p) {
if ((Yp + h1) >= 0) position(real_position_+Yp);
else position(real_position_+Yp-(H-h1)/2);
return;
@ -250,7 +250,7 @@ void Fl_Browser_::display(void* x) {
l = top_;
for (; l; l = item_next(l)) {
h1 = item_quick_height(l);
if (l == x) {
if (l == p) {
if (Y <= H) { // it is visible or right at bottom
Y = Y+h1-H; // find where bottom edge is
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)) {
h1 = item_quick_height(l);
Y -= h1;
if (l == x) {
if (l == p) {
if ((Y + h1) >= 0) position(real_position_+Y);
else position(real_position_+Y-(H-h1)/2);
return;
@ -363,8 +363,8 @@ J1:
if (l == selection_ && Fl::focus() == this) {
draw_focus(FL_NO_BOX, X, yy+Y+1, W, hh);
}
int w = item_width(l);
if (w > max_width) {max_width = w; max_width_item = l;}
int ww = item_width(l);
if (ww > max_width) {max_width = ww; max_width_item = l;}
}
yy += hh;
}
@ -650,7 +650,7 @@ int Fl_Browser_::handle(int event) {
position(p);
} else if (my > (Y+H) && my > py) {
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;
position(p);
}
@ -701,8 +701,8 @@ int Fl_Browser_::handle(int event) {
return 0;
}
Fl_Browser_::Fl_Browser_(int x, int y, int w, int h, const char* l)
: Fl_Group(x, y, w, h, l),
Fl_Browser_::Fl_Browser_(int X, int Y, int W, int H, const char* l)
: Fl_Group(X, Y, W, H, l),
scrollbar(0, 0, 0, 0, 0), // they will be resized by draw()
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_;}
//
// 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).
//
@ -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_Widget(x,y,w,h,l) {
Fl_Button::Fl_Button(int X, int Y, int W, int H, const char *l)
: Fl_Widget(X,Y,W,H,l) {
box(FL_UP_BOX);
down_box(FL_NO_BOX);
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).
//
@ -63,11 +63,11 @@ static void draw_barchart(int x,int y,int w,int h,
int i;
/* Draw the bars */
for (i=0; i<numb; i++) {
int h = (int)rint(entries[i].val*incr);
if (h < 0)
fl_rectbound(x+i*bwidth,zeroh,bwidth+1,-h+1, (Fl_Color)entries[i].col);
else if (h > 0)
fl_rectbound(x+i*bwidth,zeroh-h,bwidth+1,h+1,(Fl_Color)entries[i].col);
int hh = (int)rint(entries[i].val*incr);
if (hh < 0)
fl_rectbound(x+i*bwidth,zeroh,bwidth+1,-hh+1, (Fl_Color)entries[i].col);
else if (hh > 0)
fl_rectbound(x+i*bwidth,zeroh-hh,bwidth+1,hh+1,(Fl_Color)entries[i].col);
}
/* Draw the labels */
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 */
/* Draw the bars */
for (i=0; i<numb; i++) {
int w = (int)rint(entries[i].val*incr);
if (w > 0)
fl_rectbound(zeroh,y+i*bwidth,w+1,bwidth+1, (Fl_Color)entries[i].col);
else if (w < 0)
fl_rectbound(zeroh+w,y+i*bwidth,-w+1,bwidth+1,(Fl_Color)entries[i].col);
int ww = (int)rint(entries[i].val*incr);
if (ww > 0)
fl_rectbound(zeroh,y+i*bwidth,ww+1,bwidth+1, (Fl_Color)entries[i].col);
else if (ww < 0)
fl_rectbound(zeroh+w,y+i*bwidth,-ww+1,bwidth+1,(Fl_Color)entries[i].col);
}
/* Draw the labels */
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++) {
int x0 = 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 y1 = zeroh - (int)rint(entries[i].val*incr);
int yy0 = i ? zeroh - (int)rint(entries[i-1].val*incr) : 0;
int yy1 = zeroh - (int)rint(entries[i].val*incr);
if (type == FL_SPIKE_CHART) {
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) {
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) {
fl_color((Fl_Color)entries[i-1].col);
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);
int xt = x + (int)rint((i-.5+ttt)*bwidth);
fl_polygon(x0,zeroh, x0,y0, xt,zeroh);
fl_polygon(xt,zeroh, x1,y1, x1,zeroh);
fl_polygon(x0,zeroh, x0,yy0, xt,zeroh);
fl_polygon(xt,zeroh, x1,yy1, x1,zeroh);
} 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_line(x0,y0,x1,y1);
fl_line(x0,yy0,x1,yy1);
}
}
/* Draw base line */
@ -283,8 +283,8 @@ void Fl_Chart::draw() {
#define FL_CHART_LCOL FL_LCOL
#define FL_CHART_ALIGN FL_ALIGN_BOTTOM
Fl_Chart::Fl_Chart(int x,int y,int w,int h,const char *l) :
Fl_Widget(x,y,w,h,l) {
Fl_Chart::Fl_Chart(int X, int Y, int W, int H,const char *l) :
Fl_Widget(X,Y,W,H,l) {
box(FL_BORDER_BOX);
align(FL_ALIGN_BOTTOM);
numb = 0;
@ -325,36 +325,36 @@ void Fl_Chart::add(double val, const char *str, unsigned col) {
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;
if (index < 1 || index > numb+1) return;
if (ind < 1 || ind > numb+1) return;
/* Allocate more entries if required */
if (numb >= sizenumb) {
sizenumb += FL_CHART_MAX;
entries = (FL_CHART_ENTRY *)realloc(entries, sizeof(FL_CHART_ENTRY) * (sizenumb + 1));
}
// 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++;
/* Fill in the new entry */
entries[index-1].val = float(val);
entries[index-1].col = col;
entries[ind-1].val = float(val);
entries[ind-1].col = col;
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 {
entries[index-1].str[0] = 0;
entries[ind-1].str[0] = 0;
}
redraw();
}
void Fl_Chart::replace(int index,double val, const char *str, unsigned col) {
if (index < 1 || index > numb) return;
entries[index-1].val = float(val);
entries[index-1].col = col;
void Fl_Chart::replace(int ind,double val, const char *str, unsigned col) {
if (ind < 1 || ind > numb) return;
entries[ind-1].val = float(val);
entries[ind-1].col = col;
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 {
entries[index-1].str[0] = 0;
entries[ind-1].str[0] = 0;
}
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).
//
@ -82,8 +82,8 @@ int Fl_Check_Browser::lineno(cb_item *p0) const {
return 0;
}
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_Check_Browser::Fl_Check_Browser(int X, int Y, int W, int H, const char *l)
: Fl_Browser_(X, Y, W, H, l) {
type(FL_SELECT_BROWSER);
when(FL_WHEN_NEVER);
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;
}
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;
char *s = i->text;
int size = textsize();
int tsize = textsize();
Fl_Color col = textcolor();
int cy = y + (size + 1 - CHECK_SIZE) / 2;
x += 2;
int cy = Y + (tsize + 1 - CHECK_SIZE) / 2;
X += 2;
fl_color(FL_BLACK);
fl_loop(x, cy, x, cy + CHECK_SIZE,
x + CHECK_SIZE, cy + CHECK_SIZE, x + CHECK_SIZE, cy);
fl_loop(X, cy, X, cy + CHECK_SIZE,
X + CHECK_SIZE, cy + CHECK_SIZE, X + CHECK_SIZE, cy);
if (i->checked) {
fl_line(x, cy, x + CHECK_SIZE, cy + CHECK_SIZE);
fl_line(x, cy + CHECK_SIZE, x + CHECK_SIZE, cy);
fl_line(X, cy, X + CHECK_SIZE, cy + CHECK_SIZE);
fl_line(X, cy + CHECK_SIZE, X + CHECK_SIZE, cy);
}
fl_font(textfont(), size);
fl_font(textfont(), tsize);
if (i->selected) {
col = fl_contrast(col, selection_color());
}
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) {
@ -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).
//
@ -30,8 +30,8 @@
// diamond is smaller than the widget size and can be surchecked by
// 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_Light_Button(x, y, w, h, 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) {
box(FL_NO_BOX);
down_box(FL_DOWN_BOX);
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).
//
@ -74,8 +74,8 @@ void Fl_Choice::draw() {
draw_label();
}
Fl_Choice::Fl_Choice(int x,int y,int w,int h, const char *l)
: Fl_Menu_(x,y,w,h,l) {
Fl_Choice::Fl_Choice(int X, int Y, int W, int H, const char *l)
: Fl_Menu_(X,Y,W,H,l) {
align(FL_ALIGN_LEFT);
when(FL_WHEN_RELEASE);
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).
//
@ -68,11 +68,11 @@ static void rect(double x, double y, double w, double h) {
fl_end_polygon();
}
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());
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());
fl_push_matrix();
fl_translate(x+w/2.0-.5, y+h/2.0-.5);
fl_scale((w-1)/28.0, (h-1)/28.0);
fl_translate(X+W/2.0-.5, Y+H/2.0-.5);
fl_scale((W-1)/28.0, (H-1)/28.0);
if (type() == FL_ROUND_CLOCK) {
fl_color(color());
fl_begin_polygon(); fl_circle(0,0,14); fl_end_polygon();
@ -104,9 +104,9 @@ void Fl_Clock_Output::draw() {
draw_label();
}
void Fl_Clock_Output::value(int h, int m, int s) {
if (h!=hour_ || m!=minute_ || s!=second_) {
hour_ = h; minute_ = m; second_ = s;
void Fl_Clock_Output::value(int H, int m, int s) {
if (H!=hour_ || m!=minute_ || s!=second_) {
hour_ = H; minute_ = m; second_ = s;
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);
}
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_Clock_Output::Fl_Clock_Output(int X, int Y, int W, int H, const char *l)
: Fl_Widget(X, Y, W, H, l) {
box(FL_UP_BOX);
selection_color(fl_gray_ramp(5));
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_Output(x, y, w, h, 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::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::Fl_Clock(uchar t, int X, int Y, int W, int H, const char *l)
: Fl_Clock_Output(X, Y, W, H, l) {
type(t);
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).
//
@ -46,9 +46,9 @@
#define UPDATE_HUE_BOX 1
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) {
r = g = b = V;
R = G = B = V;
} else {
int i = (int)H;
double f = H - (float)i;
@ -56,27 +56,27 @@ void Fl_Color_Chooser::hsv2rgb(
double p2 = V*(1.0-S*f);
double p3 = V*(1.0-S*(1.0-f));
switch (i) {
case 0: r = V; g = p3; b = p1; break;
case 1: r = p2; g = V; b = p1; break;
case 2: r = p1; g = V; b = p3; break;
case 3: r = p1; g = p2; b = V; break;
case 4: r = p3; g = p1; b = V; break;
case 5: r = V; g = p1; b = p2; break;
case 0: R = V; G = p3; B = p1; break;
case 1: R = p2; G = V; B = p1; break;
case 2: R = p1; G = V; B = p3; break;
case 3: R = p1; G = p2; B = V; break;
case 4: R = p3; G = p1; B = V; break;
case 5: R = V; G = p1; B = p2; break;
}
}
}
void Fl_Color_Chooser::rgb2hsv(
double r, double g, double b, double& H, double& S, double& V) {
double maxv = r > g ? r : g; if (b > maxv) maxv = b;
double R, double G, double B, double& H, double& S, double& V) {
double maxv = R > G ? R : G; if (B > maxv) maxv = B;
V = maxv;
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;
if (maxv > minv) {
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 H = 4.0+(r-g)/double(maxv-minv);
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 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) {
if (r == r_ && g == g_ && b == b_) return 0;
r_ = r; g_ = g; b_ = b;
int Fl_Color_Chooser::rgb(double R, double G, double B) {
if (R == r_ && G == g_ && B == b_) return 0;
r_ = R; g_ = G; b_ = B;
double ph = hue_;
double ps = saturation_;
double pv = value_;
rgb2hsv(r,g,b,hue_,saturation_,value_);
rgb2hsv(R,G,B,hue_,saturation_,value_);
set_valuators();
if (value_ != pv) {
#ifdef UPDATE_HUE_BOX
@ -137,15 +137,15 @@ int Fl_Color_Chooser::rgb(double r, double g, double b) {
return 1;
}
int Fl_Color_Chooser::hsv(double h, double s, double v) {
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 (v < 0.0) v = 0.0; else if (v > 1.0) v = 1.0;
if (h == hue_ && s == saturation_ && v == value_) return 0;
int Fl_Color_Chooser::hsv(double H, double S, double V) {
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 (V < 0.0) V = 0.0; else if (V > 1.0) V = 1.0;
if (H == hue_ && S == saturation_ && V == value_) return 0;
double ph = hue_;
double ps = saturation_;
double pv = value_;
hue_ = h; saturation_ = s; value_ = v;
hue_ = H; saturation_ = S; value_ = V;
if (value_ != pv) {
#ifdef UPDATE_HUE_BOX
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);
valuebox.damage(FL_DAMAGE_SCROLL);
}
hsv2rgb(h,s,v,r_,g_,b_);
hsv2rgb(H,S,V,r_,g_,b_);
set_valuators();
return 1;
}
@ -272,11 +272,11 @@ int Flcc_HueBox::handle_key(int key) {
void Flcc_HueBox::draw() {
if (damage()&FL_DAMAGE_ALL) draw_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 h1 = h()-Fl::box_dh(box());
if (damage() == FL_DAMAGE_EXPOSE) fl_clip(x1+px,y1+py,6,6);
fl_draw_image(generate_image, this, x1, y1, w1, h1);
if (damage() == FL_DAMAGE_EXPOSE) fl_clip(x1+px,yy1+py,6,6);
fl_draw_image(generate_image, this, x1, yy1, w1, h1);
if (damage() == FL_DAMAGE_EXPOSE) fl_pop_clip();
Fl_Color_Chooser* c = (Fl_Color_Chooser*)parent();
#ifdef CIRCLE
@ -289,7 +289,7 @@ void Flcc_HueBox::draw() {
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;
// 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;
}
@ -342,15 +342,15 @@ void Flcc_ValueBox::draw() {
Fl_Color_Chooser* c = (Fl_Color_Chooser*)parent();
c->hsv2rgb(c->hue(),c->saturation(),1.0,tr,tg,tb);
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 h1 = h()-Fl::box_dh(box());
if (damage() == FL_DAMAGE_EXPOSE) fl_clip(x1,y1+py,w1,6);
fl_draw_image(generate_vimage, this, x1, y1, w1, h1);
if (damage() == FL_DAMAGE_EXPOSE) fl_clip(x1,yy1+py,w1,6);
fl_draw_image(generate_vimage, this, x1, yy1, w1, h1);
if (damage() == FL_DAMAGE_EXPOSE) fl_pop_clip();
int Y = int((1-c->value()) * (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;
}
@ -383,19 +383,19 @@ int Flcc_ValueBox::handle_key(int key) {
void Fl_Color_Chooser::rgb_cb(Fl_Widget* o, void*) {
Fl_Color_Chooser* c = (Fl_Color_Chooser*)(o->parent());
double r = c->rvalue.value();
double g = c->gvalue.value();
double b = c->bvalue.value();
double R = c->rvalue.value();
double G = c->gvalue.value();
double B = c->bvalue.value();
if (c->mode() == M_HSV) {
if (c->hsv(r,g,b)) c->do_callback();
if (c->hsv(R,G,B)) c->do_callback();
return;
}
if (c->mode() != M_RGB) {
r = r/255;
g = g/255;
b = b/255;
R = R/255;
G = G/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*) {
@ -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).
//
@ -173,8 +173,8 @@ Fl_Counter::~Fl_Counter() {
Fl::remove_timeout(repeat_callback, this);
}
Fl_Counter::Fl_Counter(int x, int y, int w, int h, const char* l)
: Fl_Valuator(x, y, w, h, l) {
Fl_Counter::Fl_Counter(int X, int Y, int W, int H, const char* l)
: Fl_Valuator(X, Y, W, H, l) {
box(FL_UP_BOX);
selection_color(FL_INACTIVE_COLOR); // was FL_BLUE
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).
//
@ -31,34 +31,34 @@
// All angles are measured with 0 to the right and counter-clockwise
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());
x += Fl::box_dx(box());
y += Fl::box_dy(box());
w -= Fl::box_dw(box());
h -= Fl::box_dh(box());
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());
X += Fl::box_dx(box());
Y += Fl::box_dy(box());
W -= Fl::box_dw(box());
H -= Fl::box_dh(box());
double angle = (a2-a1)*(value()-minimum())/(maximum()-minimum()) + a1;
if (type() == FL_FILL_DIAL) {
// foo: draw this nicely in certain round box types
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_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_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) {
fl_color(FL_FOREGROUND_COLOR);
fl_arc(x, y, w, h, 0, 360);
fl_arc(X, Y, W, H, 0, 360);
}
return;
}
if (!(damage()&FL_DAMAGE_ALL)) {
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_translate(x+w/2-.5, y+h/2-.5);
fl_scale(w-1, h-1);
fl_translate(X+W/2-.5, Y+H/2-.5);
fl_scale(W-1, H-1);
fl_rotate(45-angle);
fl_color(selection_color());
if (type()) { // FL_LINE_DIAL
@ -88,13 +88,13 @@ void Fl_Dial::draw() {
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) {
case FL_PUSH:
handle_push();
case FL_DRAG: {
int mx = Fl::event_x()-x-w/2;
int my = Fl::event_y()-y-h/2;
int mx = Fl::event_x()-X-W/2;
int my = Fl::event_y()-Y-H/2;
if (!mx && !my) return 1;
double angle = 270-atan2((float)-my, (float)mx)*180/M_PI;
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());
}
Fl_Dial::Fl_Dial(int x, int y, int w, int h, const char* l)
: Fl_Valuator(x, y, w, h, l) {
Fl_Dial::Fl_Dial(int X, int Y, int W, int H, const char* l)
: Fl_Valuator(X, Y, W, H, l) {
box(FL_OVAL_BOX);
selection_color(FL_INACTIVE_COLOR); // was 37
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.
//
@ -115,7 +115,7 @@ int // O - Height in pixels
Fl_File_Browser::item_height(void *p) const // I - List item data
{
FL_BLINE *line; // Pointer to line
char *text; // Pointer into text
char *t; // Pointer into text
int height; // Width of line
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;
if (line != NULL)
for (text = line->txt; *text != '\0'; text ++)
if (*text == '\n')
for (t = line->txt; *t != '\0'; t ++)
if (*t == '\n')
height += textheight;
// 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
FL_BLINE *line; // Pointer to line
char *text, // Pointer into text
char *t, // Pointer into text
*ptr, // Pointer into fragment
fragment[10240]; // Fragment of text
int width, // Width of line
@ -185,8 +185,8 @@ Fl_File_Browser::item_width(void *p) const // I - List item data
tempwidth = 0;
column = 0;
for (text = line->txt, ptr = fragment; *text != '\0'; text ++)
if (*text == '\n')
for (t = line->txt, ptr = fragment; *t != '\0'; t ++)
if (*t == '\n')
{
// Newline - nul terminate this fragment and get the width...
*ptr = '\0';
@ -202,7 +202,7 @@ Fl_File_Browser::item_width(void *p) const // I - List item data
tempwidth = 0;
column = 0;
}
else if (*text == column_char())
else if (*t == column_char())
{
// Advance to the next column...
column ++;
@ -220,7 +220,7 @@ Fl_File_Browser::item_width(void *p) const // I - List item data
ptr = fragment;
}
else
*ptr++ = *text;
*ptr++ = *t;
if (ptr > fragment)
{
@ -253,15 +253,15 @@ Fl_File_Browser::item_width(void *p) const // I - List item data
void
Fl_File_Browser::item_draw(void *p, // I - List item data
int x, // I - Upper-lefthand X coordinate
int y, // I - Upper-lefthand Y coordinate
int w, // I - Width of item
int h) const// I - Height of item
int X, // I - Upper-lefthand X coordinate
int Y, // I - Upper-lefthand Y coordinate
int W, // I - Width of item
int H) const// I - Height of item
{
int i; // Looping var
FL_BLINE *line; // Pointer to line
Fl_Color c; // Text color
char *text, // Pointer into text
char *t, // Pointer into text
*ptr, // Pointer into fragment
fragment[10240]; // Fragment of text
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)
{
// No icons, just draw the text...
x ++;
w -= 2;
X ++;
W -= 2;
}
else
{
// Draw the icon if it is set...
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 :
FL_LIGHT2,
active_r());
// Draw the text offset to the right...
x += iconsize_ + 9;
w -= iconsize_ - 10;
X += iconsize_ + 9;
W -= iconsize_ - 10;
// Center the text vertically...
height = fl_height();
for (text = line->txt; *text != '\0'; text ++)
if (*text == '\n')
for (t = line->txt; *t != '\0'; t ++)
if (*t == '\n')
height += fl_height();
if (height < iconsize_)
y += (iconsize_ - height) / 2;
Y += (iconsize_ - height) / 2;
}
// Draw the text...
@ -326,27 +326,27 @@ Fl_File_Browser::item_draw(void *p, // I - List item data
else
fl_color(fl_inactive(c));
for (text = line->txt, ptr = fragment; *text != '\0'; text ++)
if (*text == '\n')
for (t = line->txt, ptr = fragment; *t != '\0'; t ++)
if (*t == '\n')
{
// Newline - nul terminate this fragment and draw it...
*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);
// Point back to the start of the fragment...
ptr = fragment;
width = 0;
y += fl_height();
Y += fl_height();
column = 0;
}
else if (*text == column_char())
else if (*t == column_char())
{
// Tab - nul terminate this fragment and draw it...
*ptr = '\0';
int cW = w - width; // Clip width...
int cW = W - width; // Clip width...
if (columns)
{
@ -357,7 +357,7 @@ Fl_File_Browser::item_draw(void *p, // I - List item data
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);
// Advance to the next column...
@ -373,14 +373,14 @@ Fl_File_Browser::item_draw(void *p, // I - List item data
ptr = fragment;
}
else
*ptr++ = *text;
*ptr++ = *t;
if (ptr > fragment)
{
// Nul terminate this fragment and draw it...
*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);
}
}
@ -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(int x, // I - Upper-lefthand X coordinate
int y, // I - Upper-lefthand Y coordinate
int w, // I - Width in pixels
int h, // I - Height in pixels
Fl_File_Browser::Fl_File_Browser(int X, // I - Upper-lefthand X coordinate
int Y, // I - Upper-lefthand Y coordinate
int W, // I - Width in pixels
int H, // I - Height in pixels
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...
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.
//
@ -110,7 +110,7 @@ int // O - Number of selected files
Fl_File_Chooser::count()
{
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
char pathname[1024]; // Full path to file
@ -126,7 +126,7 @@ Fl_File_Chooser::count()
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))
{
// See if this file is a directory...
@ -137,10 +137,10 @@ Fl_File_Chooser::count()
strlcpy(pathname, filename, sizeof(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
Fl_File_Chooser::favoritesButtonCB()
{
int value; // Current selection
int v; // Current selection
char pathname[1024], // Pathname
menuname[2048]; // Menu name
value = favoritesButton->value();
v = favoritesButton->value();
if (!value) {
if (!v) {
// Add current directory to favorites...
if (getenv("HOME")) value = favoritesButton->size() - 5;
else value = favoritesButton->size() - 4;
if (getenv("HOME")) v = favoritesButton->size() - 5;
else v = favoritesButton->size() - 4;
sprintf(menuname, "favorite%02d", value);
sprintf(menuname, "favorite%02d", v);
prefs_.set(menuname, directory_);
@ -231,14 +231,14 @@ Fl_File_Chooser::favoritesButtonCB()
if (favoritesButton->size() > 104) {
((Fl_Menu_Item *)favoritesButton->menu())[0].deactivate();
}
} else if (value == 1) {
} else if (v == 1) {
// Manage favorites...
favoritesCB(0);
} else if (value == 2) {
} else if (v == 2) {
// Filesystems/My Computer
directory("");
} else {
unquote_pathname(pathname, favoritesButton->text(value), sizeof(pathname));
unquote_pathname(pathname, favoritesButton->text(v), sizeof(pathname));
directory(pathname);
}
}
@ -986,7 +986,7 @@ const char * // O - Filename or NULL
Fl_File_Chooser::value(int f) // I - File number
{
int i; // Looping var
int count; // Number of selected files
int fcount; // Number of selected files
const char *name; // Current filename
char *slash; // Trailing slash, if any
static char pathname[1024]; // Filename + directory
@ -1006,7 +1006,7 @@ Fl_File_Chooser::value(int f) // I - File number
} 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)) {
// See if this file is a directory...
name = fileList->text(i);
@ -1019,8 +1019,8 @@ Fl_File_Chooser::value(int f) // I - File number
if (!fl_filename_isdir(pathname)) {
// Nope, see if this this is "the one"...
count ++;
if (count == f) return (pathname);
fcount ++;
if (fcount == f) return (pathname);
}
}
@ -1036,7 +1036,7 @@ void
Fl_File_Chooser::value(const char *filename) // I - Filename + directory
{
int i, // Looping var
count; // Number of items in list
fcount; // Number of items in list
char *slash; // Directory separator
char pathname[1024]; // Local copy of filename
@ -1081,12 +1081,12 @@ Fl_File_Chooser::value(const char *filename) // I - Filename + directory
okButton->activate();
// Then find the file in the file list and select it...
count = fileList->size();
fcount = fileList->size();
fileList->deselect(0);
fileList->redraw();
for (i = 1; i <= count; i ++)
for (i = 1; i <= fcount; i ++)
#if defined(WIN32) || defined(__EMX__)
if (strcasecmp(fileList->text(i), slash) == 0) {
#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.
//
@ -777,9 +777,7 @@ load_kde_icons(const char *directory) // I - Directory to load
{
if (entries[i]->d_name[0] != '.')
{
strcpy(full, directory);
strcat(full,"/");
strcat(full, entries[i]->d_name);
snprintf(full, sizeof(full), "%s/%s", directory, entries[i]->d_name);
if (fl_filename_isdir(full))
load_kde_icons(full);
@ -820,11 +818,11 @@ load_kde_mimelnk(const char *filename)
while (fgets(tmp, sizeof(tmp), fp))
{
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)
strcpy(mimetype, val);
strlcpy(mimetype, val, sizeof(mimetype));
else if ((val = get_kde_val(tmp, "Patterns")) != NULL)
strcpy(pattern, val);
strlcpy(pattern, val, sizeof(pattern));
}
fclose(fp);
@ -902,7 +900,7 @@ kde_to_fltk_pattern(const char *kdepattern)
pattern = (char *)malloc(strlen(kdepattern) + 3);
strcpy(pattern, "{");
strcat(pattern, kdepattern);
strcpy(pattern + 1, kdepattern);
if (pattern[strlen(pattern) - 1] == ';')
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).
//
@ -49,8 +49,8 @@
// '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_Input(x, y, w, h, 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) {
buttons_[0] = 0;
errorcolor_ = FL_RED;
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).
//
@ -75,6 +75,7 @@ extern FL_EXPORT Fl_FontSize *fl_fontsize; // the currently selected one
struct Fl_Fontdesc {
const char *name;
char fontname[128]; // "Pretty" font name
Fl_FontSize *first; // linked list of sizes of this style
# ifndef WIN32
char **xlist; // matched X font names
@ -93,5 +94,5 @@ FL_EXPORT char *fl_find_fontsize(char *name);
#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).
//
@ -484,35 +484,35 @@ void Fl_Group::resize(int X, int Y, int W, int H) {
for (int i=children_; i--;) {
Fl_Widget* o = *a++;
#if 1
int X = *p++;
if (X >= IR) X += dw;
else if (X > IX) X = IX+((X-IX)*(IR+dw-IX)+(IR-IX)/2)/(IR-IX);
int XX = *p++;
if (XX >= IR) XX += dw;
else if (XX > IX) XX = IX+((XX-IX)*(IR+dw-IX)+(IR-IX)/2)/(IR-IX);
int R = *p++;
if (R >= IR) R += dw;
else if (R > IX) R = IX+((R-IX)*(IR+dw-IX)+(IR-IX)/2)/(IR-IX);
int Y = *p++;
if (Y >= IB) Y += dh;
else if (Y > IY) Y = IY+((Y-IY)*(IB+dh-IY)+(IB-IY)/2)/(IB-IY);
int YY = *p++;
if (YY >= IB) YY += dh;
else if (YY > IY) YY = IY+((YY-IY)*(IB+dh-IY)+(IB-IY)/2)/(IB-IY);
int B = *p++;
if (B >= IB) B += dh;
else if (B > IY) B = IY+((B-IY)*(IB+dh-IY)+(IB-IY)/2)/(IB-IY);
#else // much simpler code from Francois Ostiguy:
int X = *p++;
if (X >= IR) X += dw;
else if (X > IX) X = X + dw * (X-IX)/(IR-IX);
int XX = *p++;
if (XX >= IR) XX += dw;
else if (XX > IX) XX += dw * (XX-IX)/(IR-IX);
int R = *p++;
if (R >= IR) R += dw;
else if (R > IX) R = R + dw * (R-IX)/(IR-IX);
int Y = *p++;
if (Y >= IB) Y += dh;
else if (Y > IY) Y = Y + dh*(Y-IY)/(IB-IY);
int YY = *p++;
if (YY >= IB) YY += dh;
else if (YY > IY) YY = YY + dh*(YY-IY)/(IB-IY);
int B = *p++;
if (B >= IB) B += dh;
else if (B > IY) B = B + dh*(B-IY)/(IB-IY);
#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:
void Fl_Group::update_child(Fl_Widget& w) const {
if (w.damage() && w.visible() && w.type() < FL_WINDOW &&
fl_not_clipped(w.x(), w.y(), w.w(), w.h())) {
w.draw();
w.clear_damage();
void Fl_Group::update_child(Fl_Widget& widget) const {
if (widget.damage() && widget.visible() && widget.type() < FL_WINDOW &&
fl_not_clipped(widget.x(), widget.y(), widget.w(), widget.h())) {
widget.draw();
widget.clear_damage();
}
}
// Force a child to redraw:
void Fl_Group::draw_child(Fl_Widget& w) const {
if (w.visible() && w.type() < FL_WINDOW &&
fl_not_clipped(w.x(), w.y(), w.w(), w.h())) {
w.clear_damage(FL_DAMAGE_ALL);
w.draw();
w.clear_damage();
void Fl_Group::draw_child(Fl_Widget& widget) const {
if (widget.visible() && widget.type() < FL_WINDOW &&
fl_not_clipped(widget.x(), widget.y(), widget.w(), widget.h())) {
widget.clear_damage(FL_DAMAGE_ALL);
widget.draw();
widget.clear_damage();
}
}
extern char fl_draw_shortcut;
// Parents normally call this to draw outside labels:
void Fl_Group::draw_outside_label(const Fl_Widget& w) const {
if (!w.visible()) return;
void Fl_Group::draw_outside_label(const Fl_Widget& widget) const {
if (!widget.visible()) return;
// 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:
int align = w.align();
int X = w.x();
int Y = w.y();
int W = w.w();
int H = w.h();
if (align & FL_ALIGN_TOP) {
align ^= (FL_ALIGN_BOTTOM|FL_ALIGN_TOP);
int a = widget.align();
int X = widget.x();
int Y = widget.y();
int W = widget.w();
int H = widget.h();
if (a & FL_ALIGN_TOP) {
a ^= (FL_ALIGN_BOTTOM|FL_ALIGN_TOP);
Y = y();
H = w.y()-Y;
} else if (align & FL_ALIGN_BOTTOM) {
align ^= (FL_ALIGN_BOTTOM|FL_ALIGN_TOP);
H = widget.y()-Y;
} else if (a & FL_ALIGN_BOTTOM) {
a ^= (FL_ALIGN_BOTTOM|FL_ALIGN_TOP);
Y = Y+H;
H = y()+h()-Y;
} else if (align & FL_ALIGN_LEFT) {
align ^= (FL_ALIGN_LEFT|FL_ALIGN_RIGHT);
} else if (a & FL_ALIGN_LEFT) {
a ^= (FL_ALIGN_LEFT|FL_ALIGN_RIGHT);
X = x();
W = w.x()-X-3;
} else if (align & FL_ALIGN_RIGHT) {
align ^= (FL_ALIGN_LEFT|FL_ALIGN_RIGHT);
W = widget.x()-X-3;
} else if (a & FL_ALIGN_RIGHT) {
a ^= (FL_ALIGN_LEFT|FL_ALIGN_RIGHT);
X = X+W+3;
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.
//
@ -322,7 +322,7 @@ Fl_Help_View::draw()
attr[1024]; // Attribute buffer
int xx, yy, ww, hh; // Current positions and sizes
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
needspace; // Do we need whitespace?
Fl_Boxtype b = box() ? box() : FL_DOWN_BOX;
@ -371,7 +371,7 @@ Fl_Help_View::draw()
head = 0;
needspace = 0;
initfont(font, size);
initfont(font, fsize);
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());
xx += ww;
if ((size + 2) > hh)
hh = size + 2;
if ((fsize + 2) > hh)
hh = fsize + 2;
needspace = 0;
}
@ -419,7 +419,7 @@ Fl_Help_View::draw()
line ++;
xx = block->line[line];
yy += hh;
hh = size + 2;
hh = fsize + 2;
}
else if (*ptr == '\t')
{
@ -430,8 +430,8 @@ Fl_Help_View::draw()
else
*s++ = ' ';
if ((size + 2) > hh)
hh = size + 2;
if ((fsize + 2) > hh)
hh = fsize + 2;
ptr ++;
}
@ -514,28 +514,28 @@ Fl_Help_View::draw()
{
if (tolower(buf[0]) == 'h')
{
font = FL_HELVETICA_BOLD;
size = textsize_ + '7' - buf[1];
font = FL_HELVETICA_BOLD;
fsize = textsize_ + '7' - buf[1];
}
else if (strcasecmp(buf, "DT") == 0)
{
font = textfont_ | FL_ITALIC;
size = textsize_;
font = textfont_ | FL_ITALIC;
fsize = textsize_;
}
else if (strcasecmp(buf, "PRE") == 0)
{
font = FL_COURIER;
size = textsize_;
pre = 1;
font = FL_COURIER;
fsize = textsize_;
pre = 1;
}
if (strcasecmp(buf, "LI") == 0)
{
fl_font(FL_SYMBOL, size);
fl_draw("\267", xx - size + x() - leftline_, yy + y());
fl_font(FL_SYMBOL, fsize);
fl_draw("\267", xx - fsize + x() - leftline_, yy + y());
}
pushfont(font, size);
pushfont(font, fsize);
}
else if (strcasecmp(buf, "A") == 0 &&
get_attr(attrs, "HREF", attr, sizeof(attr)) != NULL)
@ -544,21 +544,21 @@ Fl_Help_View::draw()
fl_color(textcolor_);
else if (strcasecmp(buf, "B") == 0 ||
strcasecmp(buf, "STRONG") == 0)
pushfont(font |= FL_BOLD, size);
pushfont(font |= FL_BOLD, fsize);
else if (strcasecmp(buf, "TD") == 0 ||
strcasecmp(buf, "TH") == 0)
{
int tx, ty, tw, th;
if (tolower(buf[1]) == 'h')
pushfont(font |= FL_BOLD, size);
pushfont(font |= FL_BOLD, fsize);
else
pushfont(font = textfont_, size);
pushfont(font = textfont_, fsize);
tx = block->x - 4 - leftline_;
ty = block->y - topline_ - size - 3;
ty = block->y - topline_ - fsize - 3;
tw = block->w - block->x + 7;
th = block->h + size - 5;
th = block->h + fsize - 5;
if (tx < 0)
{
@ -587,14 +587,14 @@ Fl_Help_View::draw()
}
else if (strcasecmp(buf, "I") == 0 ||
strcasecmp(buf, "EM") == 0)
pushfont(font |= FL_ITALIC, size);
pushfont(font |= FL_ITALIC, fsize);
else if (strcasecmp(buf, "CODE") == 0 ||
strcasecmp(buf, "TT") == 0)
pushfont(font = FL_COURIER, size);
pushfont(font = FL_COURIER, fsize);
else if (strcasecmp(buf, "KBD") == 0)
pushfont(font = FL_COURIER_BOLD, size);
pushfont(font = FL_COURIER_BOLD, fsize);
else if (strcasecmp(buf, "VAR") == 0)
pushfont(font = FL_COURIER_ITALIC, size);
pushfont(font = FL_COURIER_ITALIC, fsize);
else if (strcasecmp(buf, "/HEAD") == 0)
head = 0;
else if (strcasecmp(buf, "/H1") == 0 ||
@ -611,10 +611,10 @@ Fl_Help_View::draw()
strcasecmp(buf, "/TT") == 0 ||
strcasecmp(buf, "/KBD") == 0 ||
strcasecmp(buf, "/VAR") == 0)
popfont(font, size);
popfont(font, fsize);
else if (strcasecmp(buf, "/PRE") == 0)
{
popfont(font, size);
popfont(font, fsize);
pre = 0;
}
else if (strcasecmp(buf, "IMG") == 0)
@ -678,7 +678,7 @@ Fl_Help_View::draw()
line ++;
xx = block->line[line];
yy += hh;
hh = size + 2;
hh = fsize + 2;
needspace = 0;
ptr ++;
@ -713,15 +713,15 @@ Fl_Help_View::draw()
ptr = strchr(ptr, ';') + 1;
}
if ((size + 2) > hh)
hh = size + 2;
if ((fsize + 2) > hh)
hh = fsize + 2;
}
else
{
*s++ = *ptr++;
if ((size + 2) > hh)
hh = size + 2;
if ((fsize + 2) > hh)
hh = fsize + 2;
}
}
@ -774,13 +774,13 @@ Fl_Help_View::format()
attr[1024], // Attribute buffer
wattr[1024], // Width 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 line; // Current line in block
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?
int align, // Current alignment
int talign, // Current alignment
newalign, // New alignment
head, // In the <HEAD> section?
pre, // <PRE> text?
@ -816,24 +816,24 @@ Fl_Help_View::format()
return;
// Setup for formatting...
initfont(font, size);
initfont(font, fsize);
line = 0;
links = 0;
xx = 4;
yy = size + 2;
ww = 0;
column = 0;
border = 0;
hh = 0;
block = add_block(value_, xx, yy, hsize_, 0);
row = 0;
head = 0;
pre = 0;
align = LEFT;
newalign = LEFT;
needspace = 0;
link[0] = '\0';
line = 0;
links = 0;
xx = 4;
yy = fsize + 2;
ww = 0;
column = 0;
border = 0;
hh = 0;
block = add_block(value_, xx, yy, hsize_, 0);
row = 0;
head = 0;
pre = 0;
talign = LEFT;
newalign = LEFT;
needspace = 0;
linkdest[0] = '\0';
for (ptr = value_, s = buf; *ptr;)
{
@ -867,24 +867,24 @@ Fl_Help_View::format()
hh = 0;
}
if (link[0])
add_link(link, xx, yy - size, ww, size);
if (linkdest[0])
add_link(linkdest, xx, yy - fsize, ww, fsize);
xx += ww;
if ((size + 2) > hh)
hh = size + 2;
if ((fsize + 2) > hh)
hh = fsize + 2;
needspace = 0;
}
else if (pre)
{
// Add a link as needed...
if (link[0])
add_link(link, xx, yy - hh, ww, hh);
if (linkdest[0])
add_link(linkdest, xx, yy - hh, ww, hh);
xx += ww;
if ((size + 2) > hh)
hh = size + 2;
if ((fsize + 2) > hh)
hh = fsize + 2;
// Handle preformatted text...
while (isspace(*ptr))
@ -897,13 +897,13 @@ Fl_Help_View::format()
xx = block->x;
yy += hh;
block->h += hh;
hh = size + 2;
hh = fsize + 2;
}
else
xx += (int)fl_width(' ');
if ((size + 2) > hh)
hh = size + 2;
if ((fsize + 2) > hh)
hh = fsize + 2;
ptr ++;
}
@ -965,13 +965,13 @@ Fl_Help_View::format()
else if (strcasecmp(buf, "A") == 0)
{
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)
strlcpy(link, attr, sizeof(link));
strlcpy(linkdest, attr, sizeof(linkdest));
}
else if (strcasecmp(buf, "/A") == 0)
link[0] = '\0';
linkdest[0] = '\0';
else if (strcasecmp(buf, "BODY") == 0)
{
bgcolor_ = get_color(get_attr(attrs, "BGCOLOR", attr, sizeof(attr)),
@ -1016,8 +1016,8 @@ Fl_Help_View::format()
strcasecmp(buf, "OL") == 0 ||
strcasecmp(buf, "DL") == 0)
{
block->h += size + 2;
xx += 4 * size;
block->h += fsize + 2;
xx += 4 * fsize;
}
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_);
block->h += size + 2;
block->h += fsize + 2;
format_table(&table_width, columns, start);
@ -1043,27 +1043,27 @@ Fl_Help_View::format()
if (tolower(buf[0]) == 'h' && isdigit(buf[1]))
{
font = FL_HELVETICA_BOLD;
size = textsize_ + '7' - buf[1];
font = FL_HELVETICA_BOLD;
fsize = textsize_ + '7' - buf[1];
}
else if (strcasecmp(buf, "DT") == 0)
{
font = textfont_ | FL_ITALIC;
size = textsize_;
font = textfont_ | FL_ITALIC;
fsize = textsize_;
}
else if (strcasecmp(buf, "PRE") == 0)
{
font = FL_COURIER;
size = textsize_;
pre = 1;
font = FL_COURIER;
fsize = textsize_;
pre = 1;
}
else
{
font = textfont_;
size = textsize_;
font = textfont_;
fsize = textsize_;
}
pushfont(font, size);
pushfont(font, fsize);
yy = block->y + block->h;
hh = 0;
@ -1072,11 +1072,11 @@ Fl_Help_View::format()
strcasecmp(buf, "DD") == 0 ||
strcasecmp(buf, "DT") == 0 ||
strcasecmp(buf, "P") == 0)
yy += size + 2;
yy += fsize + 2;
else if (strcasecmp(buf, "HR") == 0)
{
hh += 2 * size;
yy += size;
hh += 2 * fsize;
yy += fsize;
}
if (row)
@ -1088,9 +1088,9 @@ Fl_Help_View::format()
line = 0;
if (strcasecmp(buf, "CENTER") == 0)
newalign = align = CENTER;
newalign = talign = CENTER;
else
newalign = get_align(attrs, align);
newalign = get_align(attrs, talign);
}
else if (strcasecmp(buf, "/CENTER") == 0 ||
strcasecmp(buf, "/P") == 0 ||
@ -1114,20 +1114,20 @@ Fl_Help_View::format()
strcasecmp(buf, "/OL") == 0 ||
strcasecmp(buf, "/DL") == 0)
{
xx -= 4 * size;
block->h += size + 2;
xx -= 4 * fsize;
block->h += fsize + 2;
}
else if (strcasecmp(buf, "/TABLE") == 0)
block->h += size + 2;
block->h += fsize + 2;
else if (strcasecmp(buf, "/PRE") == 0)
{
pre = 0;
hh = 0;
}
else if (strcasecmp(buf, "/CENTER") == 0)
align = LEFT;
talign = LEFT;
popfont(font, size);
popfont(font, fsize);
while (isspace(*ptr))
ptr ++;
@ -1136,7 +1136,7 @@ Fl_Help_View::format()
yy += hh;
if (tolower(buf[2]) == 'l')
yy += size + 2;
yy += fsize + 2;
if (row)
block = add_block(ptr, xx, yy, block->w, 0);
@ -1146,7 +1146,7 @@ Fl_Help_View::format()
needspace = 0;
hh = 0;
line = 0;
newalign = align;
newalign = talign;
}
else if (strcasecmp(buf, "TR") == 0)
{
@ -1233,9 +1233,9 @@ Fl_Help_View::format()
else
font = textfont_;
size = textsize_;
fsize = textsize_;
xx = blocks_[row].x + size + 3;
xx = blocks_[row].x + fsize + 3;
for (i = 0; i < column; i ++)
xx += columns[i] + 6;
@ -1253,7 +1253,7 @@ Fl_Help_View::format()
block --;
}
pushfont(font, size);
pushfont(font, fsize);
yy = blocks_[row].y;
hh = 0;
@ -1272,21 +1272,21 @@ Fl_Help_View::format()
else if ((strcasecmp(buf, "/TD") == 0 ||
strcasecmp(buf, "/TH") == 0) && row)
{
popfont(font, size);
popfont(font, fsize);
}
else if (strcasecmp(buf, "B") == 0 ||
strcasecmp(buf, "STRONG") == 0)
pushfont(font |= FL_BOLD, size);
pushfont(font |= FL_BOLD, fsize);
else if (strcasecmp(buf, "I") == 0 ||
strcasecmp(buf, "EM") == 0)
pushfont(font |= FL_ITALIC, size);
pushfont(font |= FL_ITALIC, fsize);
else if (strcasecmp(buf, "CODE") == 0 ||
strcasecmp(buf, "TT") == 0)
pushfont(font = FL_COURIER, size);
pushfont(font = FL_COURIER, fsize);
else if (strcasecmp(buf, "KBD") == 0)
pushfont(font = FL_COURIER_BOLD, size);
pushfont(font = FL_COURIER_BOLD, fsize);
else if (strcasecmp(buf, "VAR") == 0)
pushfont(font = FL_COURIER_ITALIC, size);
pushfont(font = FL_COURIER_ITALIC, fsize);
else if (strcasecmp(buf, "/B") == 0 ||
strcasecmp(buf, "/STRONG") == 0 ||
strcasecmp(buf, "/I") == 0 ||
@ -1295,7 +1295,7 @@ Fl_Help_View::format()
strcasecmp(buf, "/TT") == 0 ||
strcasecmp(buf, "/KBD") == 0 ||
strcasecmp(buf, "/VAR") == 0)
popfont(font, size);
popfont(font, fsize);
else if (strcasecmp(buf, "IMG") == 0)
{
Fl_Shared_Image *img = 0;
@ -1334,8 +1334,8 @@ Fl_Help_View::format()
hh = 0;
}
if (link[0])
add_link(link, xx, yy - height, ww, height);
if (linkdest[0])
add_link(linkdest, xx, yy - height, ww, height);
xx += ww;
if ((height + 2) > hh)
@ -1346,8 +1346,8 @@ Fl_Help_View::format()
}
else if (*ptr == '\n' && pre)
{
if (link[0])
add_link(link, xx, yy - hh, ww, hh);
if (linkdest[0])
add_link(linkdest, xx, yy - hh, ww, hh);
if (xx > hsize_) {
hsize_ = xx;
@ -1381,8 +1381,8 @@ Fl_Help_View::format()
ptr = strchr(ptr, ';') + 1;
}
if ((size + 2) > hh)
hh = size + 2;
if ((fsize + 2) > hh)
hh = fsize + 2;
}
else
{
@ -1391,8 +1391,8 @@ Fl_Help_View::format()
else
ptr ++;
if ((size + 2) > hh)
hh = size + 2;
if ((fsize + 2) > hh)
hh = fsize + 2;
}
}
@ -1422,12 +1422,12 @@ Fl_Help_View::format()
hh = 0;
}
if (link[0])
add_link(link, xx, yy - size, ww, size);
if (linkdest[0])
add_link(linkdest, xx, yy - fsize, ww, fsize);
xx += ww;
if ((size + 2) > hh)
hh = size + 2;
if ((fsize + 2) > hh)
hh = fsize + 2;
needspace = 0;
}
@ -1493,7 +1493,7 @@ Fl_Help_View::format_table(int *table_width, // O - Total table width
*attrs, // Pointer to attributes
*start; // Start of element
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...
@ -1584,33 +1584,33 @@ Fl_Help_View::format_table(int *table_width, // O - Total table width
if (tolower(buf[0]) == 'h' && isdigit(buf[1]))
{
font = FL_HELVETICA_BOLD;
size = textsize_ + '7' - buf[1];
font = FL_HELVETICA_BOLD;
fsize = textsize_ + '7' - buf[1];
}
else if (strcasecmp(buf, "DT") == 0)
{
font = textfont_ | FL_ITALIC;
size = textsize_;
font = textfont_ | FL_ITALIC;
fsize = textsize_;
}
else if (strcasecmp(buf, "PRE") == 0)
{
font = FL_COURIER;
size = textsize_;
pre = 1;
font = FL_COURIER;
fsize = textsize_;
pre = 1;
}
else if (strcasecmp(buf, "LI") == 0)
{
width += 4 * size;
font = textfont_;
size = textsize_;
width += 4 * fsize;
font = textfont_;
fsize = textsize_;
}
else
{
font = textfont_;
size = textsize_;
font = textfont_;
fsize = textsize_;
}
pushfont(font, size);
pushfont(font, fsize);
}
else if (strcasecmp(buf, "/CENTER") == 0 ||
strcasecmp(buf, "/P") == 0 ||
@ -1628,7 +1628,7 @@ Fl_Help_View::format_table(int *table_width, // O - Total table width
width = 0;
needspace = 0;
popfont(font, size);
popfont(font, fsize);
}
else if (strcasecmp(buf, "TR") == 0 || strcasecmp(buf, "/TR") == 0 ||
strcasecmp(buf, "/TABLE") == 0)
@ -1703,9 +1703,9 @@ Fl_Help_View::format_table(int *table_width, // O - Total table width
else
font = textfont_;
size = textsize_;
fsize = textsize_;
pushfont(font, size);
pushfont(font, fsize);
if (get_attr(attrs, "WIDTH", attr, sizeof(attr)) != NULL)
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)
{
incell = 0;
popfont(font, size);
popfont(font, fsize);
}
else if (strcasecmp(buf, "B") == 0 ||
strcasecmp(buf, "STRONG") == 0)
pushfont(font |= FL_BOLD, size);
pushfont(font |= FL_BOLD, fsize);
else if (strcasecmp(buf, "I") == 0 ||
strcasecmp(buf, "EM") == 0)
pushfont(font |= FL_ITALIC, size);
pushfont(font |= FL_ITALIC, fsize);
else if (strcasecmp(buf, "CODE") == 0 ||
strcasecmp(buf, "TT") == 0)
pushfont(font = FL_COURIER, size);
pushfont(font = FL_COURIER, fsize);
else if (strcasecmp(buf, "KBD") == 0)
pushfont(font = FL_COURIER_BOLD, size);
pushfont(font = FL_COURIER_BOLD, fsize);
else if (strcasecmp(buf, "VAR") == 0)
pushfont(font = FL_COURIER_ITALIC, size);
pushfont(font = FL_COURIER_ITALIC, fsize);
else if (strcasecmp(buf, "/B") == 0 ||
strcasecmp(buf, "/STRONG") == 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, "/KBD") == 0 ||
strcasecmp(buf, "/VAR") == 0)
popfont(font, size);
popfont(font, fsize);
else if (strcasecmp(buf, "IMG") == 0 && incell)
{
Fl_Shared_Image *img = 0;
@ -1873,7 +1873,7 @@ Fl_Help_View::format_table(int *table_width, // O - Total table width
int // O - Alignment
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
@ -2042,18 +2042,24 @@ Fl_Help_View::get_image(const char *name, int W, int H) {
// See if the image can be found...
if (strchr(directory_, ':') != NULL && strchr(name, ':') == NULL) {
if (name[0] == '/') {
strcpy(temp, directory_);
if ((tempptr = strrchr(strchr(directory_, ':') + 3, '/')) != NULL) strcpy(tempptr, name);
else strcat(temp, name);
} else sprintf(temp, "%s/%s", directory_, name);
strlcpy(temp, directory_, sizeof(temp));
if ((tempptr = strrchr(strchr(directory_, ':') + 3, '/')) != NULL) {
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);
else localname = temp;
} 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 {
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);
@ -2103,7 +2109,7 @@ Fl_Help_View::handle(int event) // I - Event to handle
{
int i; // Looping var
int xx, yy; // Adjusted mouse position
Fl_Help_Link *link; // Current link
Fl_Help_Link *linkp; // Current link
char target[32]; // Current target
@ -2126,9 +2132,9 @@ Fl_Help_View::handle(int event) // I - Event to handle
}
// Handle mouse clicks on links...
for (i = nlinks_, link = links_; i > 0; i --, link ++)
if (xx >= link->x && xx < link->w &&
yy >= link->y && yy < link->h)
for (i = nlinks_, linkp = links_; i > 0; i --, linkp ++)
if (xx >= linkp->x && xx < linkp->w &&
yy >= linkp->y && yy < linkp->h)
break;
if (!i)
@ -2145,11 +2151,11 @@ Fl_Help_View::handle(int event) // I - Event to handle
{
fl_cursor(FL_CURSOR_DEFAULT);
strlcpy(target, link->name, sizeof(target));
strlcpy(target, linkp->name, sizeof(target));
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 temp[1024], // Temporary filename
@ -2157,34 +2163,35 @@ Fl_Help_View::handle(int event) // I - Event to handle
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)
strcpy(tempptr, link->filename);
strlcpy(tempptr, linkp->filename, sizeof(temp));
else
strcat(temp, link->filename);
strlcat(temp, linkp->filename, sizeof(temp));
}
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])
sprintf(temp, "%s/%s", directory_, link->filename);
snprintf(temp, sizeof(temp), "%s/%s", directory_, linkp->filename);
else
{
getcwd(dir, sizeof(dir));
sprintf(temp, "file:%s/%s", dir, link->filename);
snprintf(temp, sizeof(temp), "file:%s/%s", dir, linkp->filename);
}
}
else
strcpy(temp, link->filename);
strlcpy(temp, linkp->filename, sizeof(temp));
if (link->name[0])
sprintf(temp + strlen(temp), "#%s", link->name);
if (linkp->name[0])
snprintf(temp + strlen(temp), sizeof(temp) - strlen(temp), "#%s",
linkp->name);
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).
//
@ -67,8 +67,8 @@ void Fl_Image::color_average(Fl_Color, float) {
void Fl_Image::desaturate() {
}
void Fl_Image::label(Fl_Widget* w) {
w->image(this);
void Fl_Image::label(Fl_Widget* widget) {
widget->image(this);
}
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
}
void Fl_RGB_Image::label(Fl_Widget* w) {
w->image(this);
void Fl_RGB_Image::label(Fl_Widget* widget) {
widget->image(this);
}
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).
//
@ -388,10 +388,10 @@ int Fl_Input::handle(int event) {
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_(x, y, w, h, l) {
Fl_Input::Fl_Input(int X, int Y, int W, int H, const char *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).
//
@ -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_Widget(x, y, w, h, l) {
Fl_Input_::Fl_Input_(int X, int Y, int W, int H, const char* l)
: Fl_Widget(X, Y, W, H, l) {
box(FL_DOWN_BOX);
color(FL_BACKGROUND2_COLOR, FL_SELECTION_COLOR);
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).
//
@ -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_Button(x, y, w, h, 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) {
type(FL_TOGGLE_BUTTON);
selection_color(FL_YELLOW);
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).
//
@ -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;
int W = 0;
if (m) for (; m->text; m = m->next()) {
int h; int w1 = m->measure(&h, button);
if (h+LEADING>itemheight) itemheight = h+LEADING;
int hh; int w1 = m->measure(&hh, button);
if (hh+LEADING>itemheight) itemheight = hh+LEADING;
if (m->flags&(FL_SUBMENU|FL_SUBMENU_POINTER)) w1 += 14;
if (w1 > W) W = w1;
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
int BW = Fl::box_dx(box());
int x = BW;
int W = this->w();
int w = W-2*BW-1;
int y = BW+1+n*itemheight;
int h = itemheight - LEADING;
int xx = BW;
int W = w();
int ww = W-2*BW-1;
int yy = BW+1+n*itemheight;
int hh = itemheight - LEADING;
if (erase && n != selected) {
if (eraseit && n != selected) {
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():
if (m->submenu()) {
int sz = (h-5)&-2;
int y1 = y+(h-sz)/2;
int x1 = x+w-sz-3;
int sz = (hh-5)&-2;
int y1 = yy+(hh-sz)/2;
int x1 = xx+ww-sz-3;
fl_polygon(x1, y1, x1, y1+sz, x1+sz, y1+sz/2);
} else if (m->shortcut_) {
Fl_Font f = button ? button->textfont() : FL_HELVETICA;
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) {
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_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() {
@ -367,7 +366,6 @@ void menutitle::draw() {
}
void menuwindow::draw() {
if (damage() != FL_DAMAGE_CHILD) { // complete redraw
fl_draw_box(box(), 0, 0, w(), h(), color());
if (menu) {
@ -395,12 +393,12 @@ int menuwindow::find_selected(int mx, int my) {
my -= y();
if (my < 0 || my >= h()) return -1;
if (!itemheight) { // menubar
int x = 3; int n = 0;
int xx = 3; int n = 0;
const Fl_Menu_Item* m = menu;
for (; ; m = m->next(), n++) {
if (!m->text) return -1;
x += m->measure(0, button) + 16;
if (x > mx) break;
xx += m->measure(0, button) + 16;
if (xx > mx) break;
}
return n;
}
@ -413,9 +411,9 @@ int menuwindow::find_selected(int mx, int my) {
// return horizontal position for item n in a menubar:
int menuwindow::titlex(int n) {
const Fl_Menu_Item* m;
int x = 3;
for (m=menu; n--; m = m->next()) x += m->measure(0, button) + 16;
return x;
int xx = 3;
for (m=menu; n--; m = m->next()) xx += m->measure(0, button) + 16;
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) {
menustate &p = *(::p);
p.current_item = (n >= 0) ? p.p[m]->menu->next(n) : 0;
p.menu_number = m;
p.item_number = n;
menustate &pp = *p;
pp.current_item = (n >= 0) ? pp.p[m]->menu->next(n) : 0;
pp.menu_number = m;
pp.item_number = n;
}
static int forward(int menu) { // go to next item in menu menu if possible
menustate &p = *(::p);
menuwindow &m = *(p.p[menu]);
int item = (menu == p.menu_number) ? p.item_number : m.selected;
menustate &pp = *p;
menuwindow &m = *(pp.p[menu]);
int item = (menu == pp.menu_number) ? pp.item_number : m.selected;
while (++item < m.numitems) {
const Fl_Menu_Item* m1 = m.menu->next(item);
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
menustate &p = *(::p);
menuwindow &m = *(p.p[menu]);
int item = (menu == p.menu_number) ? p.item_number : m.selected;
menustate &pp = *p;
menuwindow &m = *(pp.p[menu]);
int item = (menu == pp.menu_number) ? pp.item_number : m.selected;
if (item < 0) item = m.numitems;
while (--item >= 0) {
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) {
menustate &p = *(::p);
menustate &pp = *p;
switch (e) {
case FL_KEYBOARD:
switch (Fl::event_key()) {
@ -497,44 +495,44 @@ int menuwindow::handle(int e) {
case FL_BackSpace:
case 0xFE20: // 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;
case FL_Up:
if (p.menubar && p.menu_number == 0) ;
else if (backward(p.menu_number));
else if (p.menubar && p.menu_number==1) setitem(0, p.p[0]->selected);
if (pp.menubar && pp.menu_number == 0) ;
else if (backward(pp.menu_number));
else if (pp.menubar && pp.menu_number==1) setitem(0, pp.p[0]->selected);
return 1;
case FL_Down:
if (p.menu_number || !p.menubar) forward(p.menu_number);
else if (p.menu_number < p.nummenus-1) forward(p.menu_number+1);
if (pp.menu_number || !pp.menubar) forward(pp.menu_number);
else if (pp.menu_number < pp.nummenus-1) forward(pp.menu_number+1);
return 1;
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);
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;
case FL_Left:
if (p.menubar && p.menu_number<=1) backward(0);
else if (p.menu_number>0)
setitem(p.menu_number-1, p.p[p.menu_number-1]->selected);
if (pp.menubar && pp.menu_number<=1) backward(0);
else if (pp.menu_number>0)
setitem(pp.menu_number-1, pp.p[pp.menu_number-1]->selected);
return 1;
case FL_Enter:
case ' ':
p.state = DONE_STATE;
pp.state = DONE_STATE;
return 1;
case FL_Escape:
setitem(0, -1, 0);
p.state = DONE_STATE;
pp.state = DONE_STATE;
return 1;
}
break;
case FL_SHORTCUT: {
for (int mymenu = p.nummenus; mymenu--;) {
menuwindow &mw = *(p.p[mymenu]);
for (int mymenu = pp.nummenus; mymenu--;) {
menuwindow &mw = *(pp.p[mymenu]);
int item; const Fl_Menu_Item* m = mw.menu->find_shortcut(&item);
if (m) {
setitem(m, mymenu, item);
if (!m->submenu()) p.state = DONE_STATE;
if (!m->submenu()) pp.state = DONE_STATE;
return 1;
}
}} break;
@ -545,36 +543,36 @@ int menuwindow::handle(int e) {
int mx = Fl::event_x_root();
int my = Fl::event_y_root();
int item=0; int mymenu;
for (mymenu = p.nummenus-1; ; mymenu--) {
item = p.p[mymenu]->find_selected(mx, my);
for (mymenu = pp.nummenus-1; ; mymenu--) {
item = pp.p[mymenu]->find_selected(mx, my);
if (item >= 0) break;
if (mymenu <= 0) break;
}
setitem(mymenu, item);
if (e == FL_PUSH) {
if (p.current_item && p.current_item->submenu() // this is a menu title
&& item != p.p[mymenu]->selected // and it is not already on
&& !p.current_item->callback_) // and it does not have a callback
p.state = MENU_PUSH_STATE;
if (pp.current_item && pp.current_item->submenu() // this is a menu title
&& item != pp.p[mymenu]->selected // and it is not already on
&& !pp.current_item->callback_) // and it does not have a callback
pp.state = MENU_PUSH_STATE;
else
p.state = PUSH_STATE;
pp.state = PUSH_STATE;
}} return 1;
case FL_RELEASE:
// 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
// the second click (not the one that popped up the menu):
if (!Fl::event_is_click() || p.state == PUSH_STATE ||
p.menubar && p.current_item && !p.current_item->submenu() // button
if (!Fl::event_is_click() || pp.state == PUSH_STATE ||
pp.menubar && pp.current_item && !pp.current_item->submenu() // button
) {
#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))) {
((Fl_Menu_*)button)->picked(m);
p.p[p.menu_number]->redraw();
pp.p[pp.menu_number]->redraw();
} else
#endif
p.state = DONE_STATE;
pp.state = DONE_STATE;
}
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);
Fl::grab(mw);
menustate p; ::p = &p;
p.p[0] = &mw;
p.nummenus = 1;
p.menubar = menubar;
p.state = INITIAL_STATE;
menustate pp; p = &pp;
pp.p[0] = &mw;
pp.nummenus = 1;
pp.menubar = menubar;
pp.state = INITIAL_STATE;
menuwindow* fakemenu = 0; // kludge for buttons in menubar
@ -616,50 +614,50 @@ const Fl_Menu_Item* Fl_Menu_Item::pulldown(
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
initial_item = p.current_item;
initial_item = pp.current_item;
if (initial_item) goto STARTUP;
// the main loop, runs until p.state goes to DONE_STATE:
for (;;) {
// make sure all the menus are shown:
{for (int k = menubar; k < p.nummenus; k++)
if (!p.p[k]->shown()) {
if (p.p[k]->title) p.p[k]->title->show();
p.p[k]->show();
{for (int k = menubar; k < pp.nummenus; k++)
if (!pp.p[k]->shown()) {
if (pp.p[k]->title) pp.p[k]->title->show();
pp.p[k]->show();
}
}
// get events:
{const Fl_Menu_Item* oldi = p.current_item;
{const Fl_Menu_Item* oldi = pp.current_item;
Fl::wait();
if (p.state == DONE_STATE) break; // done.
if (p.current_item == oldi) continue;}
if (pp.state == DONE_STATE) break; // done.
if (pp.current_item == oldi) continue;}
// only do rest if item changes:
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:
p.p[p.nummenus-1]->set_selected(-1);
pp.p[pp.nummenus-1]->set_selected(-1);
continue;
}
delete fakemenu; fakemenu = 0;
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:
menuwindow& cw = *p.p[p.menu_number];
const Fl_Menu_Item* m = p.current_item;
menuwindow& cw = *pp.p[pp.menu_number];
const Fl_Menu_Item* m = pp.current_item;
if (!m->activevisible()) { // pointing at inactive item
cw.set_selected(-1);
initial_item = 0; // turn off startup code
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->submenu()) {
@ -669,57 +667,57 @@ const Fl_Menu_Item* Fl_Menu_Item::pulldown(
else menutable = (Fl_Menu_Item*)(m)->user_data_;
// figure out where new menu goes:
int nX, nY;
if (!p.menu_number && p.menubar) { // menu off a menubar:
nX = cw.x() + cw.titlex(p.item_number);
if (!pp.menu_number && pp.menubar) { // menu off a menubar:
nX = cw.x() + cw.titlex(pp.item_number);
nY = cw.y() + cw.h();
initial_item = 0;
} else {
nX = cw.x() + cw.w();
nY = cw.y() + p.item_number * cw.itemheight;
nY = cw.y() + pp.item_number * cw.itemheight;
title = 0;
}
if (initial_item) { // bring up submenu containing initial item:
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:
if (n->selected>=0) {
int dy = n->y()-nY;
int dx = n->x()-nX;
for (int menu = 0; menu <= p.menu_number; menu++) {
menuwindow* t = p.p[menu];
int nx = t->x()+dx; if (nx < 0) {nx = 0; dx = -t->x();}
int ny = t->y()+dy; if (ny < 0) {ny = 0; dy = -t->y();}
t->position(nx, ny);
for (int menu = 0; menu <= pp.menu_number; menu++) {
menuwindow* tt = pp.p[menu];
int nx = tt->x()+dx; if (nx < 0) {nx = 0; dx = -tt->x();}
int ny = tt->y()+dy; if (ny < 0) {ny = 0; dy = -tt->y();}
tt->position(nx, ny);
}
setitem(p.nummenus-1, n->selected);
setitem(pp.nummenus-1, n->selected);
goto STARTUP;
}
} else if (p.nummenus > p.menu_number+1 &&
p.p[p.menu_number+1]->menu == menutable) {
} else if (pp.nummenus > pp.menu_number+1 &&
pp.p[pp.menu_number+1]->menu == menutable) {
// the menu is already up:
while (p.nummenus > p.menu_number+2) delete p.p[--p.nummenus];
p.p[p.nummenus-1]->set_selected(-1);
while (pp.nummenus > pp.menu_number+2) delete pp.p[--pp.nummenus];
pp.p[pp.nummenus-1]->set_selected(-1);
} else {
// delete all the old menus and create new one:
while (p.nummenus > p.menu_number+1) delete p.p[--p.nummenus];
p.p[p.nummenus++]= new menuwindow(menutable, nX, nY,
while (pp.nummenus > pp.menu_number+1) delete pp.p[--pp.nummenus];
pp.p[pp.nummenus++]= new menuwindow(menutable, nX, nY,
title?1:0, 0, 0, title, 0, menubar);
}
} else { // !m->submenu():
while (p.nummenus > p.menu_number+1) delete p.p[--p.nummenus];
if (!p.menu_number && p.menubar) {
while (pp.nummenus > pp.menu_number+1) delete pp.p[--pp.nummenus];
if (!pp.menu_number && pp.menubar) {
// kludge so "menubar buttons" turn "on" by using menu title:
fakemenu = new menuwindow(0,
cw.x()+cw.titlex(p.item_number),
cw.x()+cw.titlex(pp.item_number),
cw.y()+cw.h(), 0, 0,
0, m, 0, 1);
fakemenu->title->show();
}
}
}
const Fl_Menu_Item* m = p.current_item;
const Fl_Menu_Item* m = pp.current_item;
delete fakemenu;
while (p.nummenus>1) delete p.p[--p.nummenus];
while (pp.nummenus>1) delete pp.p[--pp.nummenus];
mw.hide();
Fl::release();
return m;
@ -730,12 +728,12 @@ Fl_Menu_Item::popup(
int X, int Y,
const char* title,
const Fl_Menu_Item* picked,
const Fl_Menu_* button
const Fl_Menu_* but
) const
{
static Fl_Menu_Item dummy; // static so it is all zeros
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
@ -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).
//
@ -112,43 +112,21 @@ void Fl_Menu_::menu(const 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:
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();
Fl_Menu_Item* newMenu = new Fl_Menu_Item[n];
memcpy(newMenu, m, n*sizeof(Fl_Menu_Item));
menu(newMenu);
alloc = 1; // make destructor free array, but not strings
// for convienence, provide way to change all the user data pointers:
if (user_data) for (; n--;) {
if (newMenu->callback_) newMenu->user_data_ = user_data;
if (ud) for (; n--;) {
if (newMenu->callback_) newMenu->user_data_ = ud;
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_() {
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).
//
@ -99,7 +99,7 @@ static int compare(const char* a, const char* b) {
// now add submenu titles directly by setting SUBMENU in the flags):
int Fl_Menu_Item::add(
const char *mytext,
int shortcut,
int sc,
Fl_Callback *cb,
void *data,
int myflags
@ -110,7 +110,7 @@ int Fl_Menu_Item::add(
char *q;
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;
const char* item;
@ -138,10 +138,10 @@ int Fl_Menu_Item::add(
if (!m->text) { /* create a new menu */
int n = m-array;
array = insert(array, size, n, item, FL_SUBMENU|flags1);
size++;
array = insert(array, size, n+1, 0, 0);
size++;
array = insert(array, msize, n, item, FL_SUBMENU|flags1);
msize++;
array = insert(array, msize, n+1, 0, 0);
msize++;
m = array+n;
}
m++; /* go into the submenu */
@ -154,22 +154,22 @@ int Fl_Menu_Item::add(
if (!m->text) { /* add a new menu item */
int n = m-array;
array = insert(array, size, n, item, myflags|flags1);
size++;
array = insert(array, msize, n, item, myflags|flags1);
msize++;
if (myflags & FL_SUBMENU) { // add submenu delimiter
array = insert(array, size, n+1, 0, 0);
size++;
array = insert(array, msize, n+1, 0, 0);
msize++;
}
m = array+n;
}
/* fill it in */
m->shortcut_ = shortcut;
m->shortcut_ = sc;
m->callback_ = cb;
m->user_data_ = data;
m->flags = myflags|flags1;
if (array == local_array) local_array_size = size;
if (array == local_array) local_array_size = msize;
return m-array;
}
@ -222,14 +222,14 @@ int Fl_Menu_::add(const char *str) {
char buf[128];
int r = 0;
while (*str) {
int shortcut = 0;
int sc = 0;
char *c;
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;
}
*c = 0;
r = add(buf, shortcut, 0, 0, 0);
r = add(buf, sc, 0, 0, 0);
if (*str) str++;
}
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).
//
@ -32,8 +32,8 @@
#include <FL/Fl_Pack.H>
#include <FL/fl_draw.H>
Fl_Pack::Fl_Pack(int x,int y,int w ,int h,const char *l)
: Fl_Group(x, y, w, h, l) {
Fl_Pack::Fl_Pack(int X, int Y, int W, int H,const char *l)
: Fl_Group(X, Y, W, H, l) {
resizable(0);
spacing_ = 0;
// 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).
//
@ -162,8 +162,8 @@ void Fl_Pixmap::uncache() {
}
}
void Fl_Pixmap::label(Fl_Widget* w) {
w->image(this);
void Fl_Pixmap::label(Fl_Widget* widget) {
widget->image(this);
}
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).
//
@ -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);
}
void Fl_Positioner::draw(int x, int y, int w, int h) {
int x1 = x + 4;
int y1 = y + 4;
int w1 = w - 2 * 4;
int h1 = h - 2 * 4;
void Fl_Positioner::draw(int X, int Y, int W, int H) {
int x1 = X + 4;
int y1 = Y + 4;
int w1 = W - 2 * 4;
int h1 = H - 2 * 4;
int xx = int(flinear(xvalue(), xmin, xmax, x1, x1+w1-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_xyline(x1, yy, x1+w1);
fl_yxline(xx, y1, y1+h1);
@ -70,24 +70,24 @@ int Fl_Positioner::yvalue(double 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) {
case FL_PUSH:
case FL_DRAG:
case FL_RELEASE: {
double x1 = x + 4;
double y1 = y + 4;
double w1 = w - 2 * 4;
double h1 = h - 2 * 4;
double X = flinear(Fl::event_x(), x1, x1+w1-1.0, xmin, xmax);
if (xstep_) X = int(X/xstep_+0.5) * xstep_;
if (X < xmin) X = xmin;
if (X > xmax) X = xmax;
double Y = flinear(Fl::event_y(), y1, y1+h1-1.0, ymin, ymax);
if (ystep_) Y = int(Y/ystep_+0.5) * ystep_;
if (Y < ymin) Y = ymin;
if (Y > ymax) Y = ymax;
if (value(X, Y)) set_changed();}
double x1 = X + 4;
double y1 = Y + 4;
double w1 = W - 2 * 4;
double h1 = H - 2 * 4;
double xx = flinear(Fl::event_x(), x1, x1+w1-1.0, xmin, xmax);
if (xstep_) xx = int(xx/xstep_+0.5) * xstep_;
if (xx < xmin) xx = xmin;
if (xx > xmax) xx = xmax;
double yy = flinear(Fl::event_y(), y1, y1+h1-1.0, ymin, ymax);
if (ystep_) yy = int(yy/ystep_+0.5) * ystep_;
if (yy < ymin) yy = ymin;
if (yy > ymax) yy = ymax;
if (value(xx, yy)) set_changed();}
if (!(when() & FL_WHEN_CHANGED ||
when() & FL_WHEN_RELEASE && event == FL_RELEASE)) return 1;
if (changed() || when()&FL_WHEN_NOT_CHANGED) {
@ -102,8 +102,8 @@ int Fl_Positioner::handle(int e) {
return handle(e, x(), y(), w(), h());
}
Fl_Positioner::Fl_Positioner(int x, int y, int w, int h, const char* l)
: Fl_Widget(x, y, w, h, l) {
Fl_Positioner::Fl_Positioner(int X, int Y, int W, int H, const char* l)
: Fl_Widget(X, Y, W, H, l) {
box(FL_DOWN_BOX);
selection_color(FL_RED);
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).
//
@ -392,9 +392,9 @@ char Fl_Preferences::get( const char *key, void *data, const void *defaultValue,
const char *v = node->get( key );
if ( v )
{
int size;
void *w = decodeHex( v, size );
memmove( data, w, size>maxSize?maxSize:size );
int dsize;
void *w = decodeHex( v, dsize );
memmove( data, w, dsize>maxSize?maxSize:dsize );
free( w );
return 1;
}
@ -414,8 +414,8 @@ char Fl_Preferences::get( const char *key, void *&data, const void *defaultValue
const char *v = node->get( key );
if ( v )
{
int size;
data = decodeHex( v, size );
int dsize;
data = decodeHex( v, dsize );
return 1;
}
if ( defaultValue )
@ -432,11 +432,11 @@ char Fl_Preferences::get( const char *key, void *&data, const void *defaultValue
/**
* 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;
for ( ; size>0; size-- )
for ( ; dsize>0; dsize-- )
{
static char lu[] = "0123456789abcdef";
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
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]=='#' )
{
set( line, 0 );
@ -905,7 +907,7 @@ void Fl_Preferences::Node::set( const char *line )
else
set( line, "" );
}
dirty_ = dirty;
dirty_ = dirt;
}
// 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.
//
@ -92,8 +92,8 @@ void Fl_Progress::draw()
// '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_Widget(x, y, w, h, l)
Fl_Progress::Fl_Progress(int X, int Y, int W, int H, const char* l)
: Fl_Widget(X, Y, W, H, l)
{
align(FL_ALIGN_INSIDE);
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).
//
@ -29,11 +29,6 @@
#include <FL/Fl.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_XPM_Image.H>
@ -234,14 +229,7 @@ Fl_Shared_Image::reload() {
}
// Load the image as appropriate...
if (memcmp(header, "GIF87a", 6) == 0 ||
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
if (memcmp(header, "#define", 7) == 0) // XBM file
img = new Fl_XBM_Image(name_);
else if (memcmp(header, "/* XPM */", 9) == 0) // XPM file
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.
// 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 pos, gapLen = mGapEnd - mGapStart;
if (pos < 0 || pos >= mLength) {
if (startPos < 0 || startPos >= mLength) {
*foundPos = mLength;
return 0;
}
@ -2003,11 +2003,11 @@ int Fl_Text_Buffer::findchar_backward( int startPos, char searchChar,
int *foundPos ) {
int pos, gapLen = mGapEnd - mGapStart;
if ( startPos == 0 ) {
if ( startPos <= 0 || startPos >= mLength ) {
*foundPos = 0;
return 0;
}
pos = startPos == 0 ? 0 : startPos - 1;
pos = startPos - 1;
while ( pos >= mGapStart ) {
if ( mBuf[ pos + gapLen ] == searchChar ) {
*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).
#
@ -27,7 +27,6 @@ CPPFILES = \
Fl.cxx \
Fl_Adjuster.cxx \
Fl_Bitmap.cxx \
Fl_BMP_Image.cxx \
Fl_Browser.cxx \
Fl_Browser_.cxx \
Fl_Browser_load.cxx \
@ -47,7 +46,6 @@ CPPFILES = \
Fl_File_Chooser2.cxx \
Fl_File_Icon.cxx \
Fl_File_Input.cxx \
Fl_GIF_Image.cxx \
Fl_Group.cxx \
Fl_Help_Dialog.cxx \
Fl_Help_View.cxx \
@ -66,7 +64,6 @@ CPPFILES = \
Fl_Overlay_Window.cxx \
Fl_Pack.cxx \
Fl_Pixmap.cxx \
Fl_PNM_Image.cxx \
Fl_Positioner.cxx \
Fl_Preferences.cxx \
Fl_Progress.cxx \
@ -170,9 +167,12 @@ GLCPPFILES = \
IMGCPPFILES = \
fl_images_core.cxx \
Fl_BMP_Image.cxx \
Fl_File_Icon2.cxx \
Fl_GIF_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
@ -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.
//
@ -33,8 +33,11 @@
//
#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 <stdio.h>
#include <stdlib.h>
#include "flstring.h"
@ -65,20 +68,28 @@ Fl_Image * // O - Image, if found
fl_check_images(const char *name, // I - Filename
uchar *header, // I - Header data from file
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
if (memcmp(header, "\211PNG", 4) == 0) // PNG header
if (memcmp(header, "\211PNG", 4) == 0)// PNG file
return new Fl_PNG_Image(name);
#else
header = header; name = name; headerlen = headerlen; // avoid warnings
#endif // HAVE_LIBPNG
#ifdef HAVE_LIBJPEG
if (memcmp(header, "\377\330\377", 3) == 0 && // Start-of-Image
header[3] >= 0xe0 && header[3] <= 0xef)
// APPn
if (memcmp(header, "\377\330\377", 3) == 0 &&
// Start-of-Image
header[3] >= 0xe0 && header[3] <= 0xef)
// APPn for JPEG file
return new Fl_JPEG_Image(name);
#else
header = header; name = name; headerlen = headerlen; // avoid warnings
#endif // HAVE_LIBJPEG
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).
//
@ -30,22 +30,24 @@
// turn a stored font name into a pretty name:
const char* Fl::get_font_name(Fl_Font fnum, int* ap) {
const char* p = fl_fonts[fnum].name;
if (!p || !*p) {if (ap) *ap = 0; return "";}
int type;
switch (*p) {
case 'B': type = FL_BOLD; break;
case 'I': type = FL_ITALIC; break;
case 'P': type = FL_BOLD | FL_ITALIC; break;
default: type = 0; break;
Fl_Fontdesc *f = fl_fonts + fnum;
if (!f->fontname[0]) {
const char* p = f->name;
if (!p || !*p) {if (ap) *ap = 0; return "";}
int type;
switch (*p) {
case 'B': type = FL_BOLD; 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;
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;
return f->fontname;
}
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).
//
@ -30,22 +30,24 @@
// turn a stored font name into a pretty name:
const char* Fl::get_font_name(Fl_Font fnum, int* ap) {
const char* p = fl_fonts[fnum].name;
if (!p || !*p) {if (ap) *ap = 0; return "";}
int type;
switch (*p) {
case 'B': type = FL_BOLD; break;
case 'I': type = FL_ITALIC; break;
case 'P': type = FL_BOLD | FL_ITALIC; break;
default: type = 0; break;
Fl_Fontdesc *f = fl_fonts + fnum;
if (!f->fontname[0]) {
const char* p = f->name;
if (!p || !*p) {if (ap) *ap = 0; return "";}
int type;
switch (*p) {
case 'B': type = FL_BOLD; 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;
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;
return f->fontname;
}
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).
//
@ -81,69 +81,81 @@ static int use_registry(const char *p) {
// 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* p = fl_fonts[fnum].name;
if (!p) {
if (ap) *ap = 0;
return "";
}
static char *buffer; if (!buffer) buffer = new char[128];
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;
Fl_Fontdesc *f = fl_fonts + fnum;
if (!f->fontname[0]) {
const char* p = f->name;
if (!p) {
if (ap) *ap = 0;
return "";
}
for (;*p; p++) {
if (*p == '*' || *p == ' ' || *p == '-') {
do p++; while (*p == '*' || *p == ' ' || *p == '-');
if (!*p) break;
*o++ = ' ';
char *o = f->fontname;
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;
}
*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:
const char *x = fl_font_word(p,2); if (*x) x++; if (*x=='*') x++;
if (!*x) {
if (ap) *ap = 0;
return p;
}
const char *e = fl_font_word(x,1);
// MRS: we want strncpy here, not strlcpy...
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++ = ' ';
// get the family:
const char *x = fl_font_word(p,2); if (*x) x++; if (*x=='*') x++;
if (!*x) {
if (ap) *ap = 0;
return p;
}
const char *e = fl_font_word(x,1);
if ((e - x) < (sizeof(f->fontname) - 1)) {
// MRS: we want strncpy here, not strlcpy...
strncpy(o,x,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:
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;
return f->fontname;
}
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).
//
@ -32,21 +32,23 @@
// turn a stored font name into a pretty name:
const char* Fl::get_font_name(Fl_Font fnum, int* ap) {
const char* p = fl_fonts[fnum].name;
int type;
switch (p[0]) {
case 'B': type = FL_BOLD; break;
case 'I': type = FL_ITALIC; break;
case 'P': type = FL_BOLD | FL_ITALIC; break;
default: type = 0; break;
Fl_Fontdesc *f = fl_fonts + fnum;
if (!f->fontname[0]) {
const char* p = f->name;
int type;
switch (p[0]) {
case 'B': type = FL_BOLD; 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;}
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;
return f->fontname;
}
#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 $".
//