From fdcdc8fd46547a7cd77010db6b57f9cc9f4f51d1 Mon Sep 17 00:00:00 2001 From: Michael R Sweet <michael.r.sweet@gmail.com> Date: Tue, 11 Dec 2001 16:03:13 +0000 Subject: [PATCH] Multiple fixes from Sebastien. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@1833 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- CHANGES | 15 ++++++++++++++- FL/Fl.H | 6 ++++-- README | 27 +++++++++++++++++---------- documentation/Fl_Tiled_Image.html | 11 +++++++++-- documentation/intro.html | 21 ++++++--------------- src/Fl_Button.cxx | 6 +++--- src/Fl_Chart.cxx | 10 +++++----- src/Fl_File_Chooser.cxx | 20 ++++++++++---------- src/Fl_File_Chooser.fl | 7 ++++--- src/Fl_GIF_Image.cxx | 23 ++++++++++++++++++----- src/Fl_Gl_Window.cxx | 15 +++++++++------ src/Fl_Help_View.cxx | 13 ++++++++----- src/Fl_PNG_Image.cxx | 7 ++++--- src/Fl_PNM_Image.cxx | 11 +++++++++-- src/Fl_Shared_Image.cxx | 6 +++--- src/Fl_Tiled_Image.cxx | 26 ++++++++++++++++---------- src/Fl_XBM_Image.cxx | 24 +++++++++++++++++++----- src/Fl_arg.cxx | 7 ++++--- src/filename_absolute.cxx | 26 ++++++++++---------------- src/filename_expand.cxx | 6 +++--- src/filename_match.cxx | 13 ++++--------- src/fl_font.cxx | 12 +++--------- 22 files changed, 182 insertions(+), 130 deletions(-) diff --git a/CHANGES b/CHANGES index afd2490c1..30ed53225 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,20 @@ CHANGES IN FLTK 1.1.0b7 - More documentation updates... + - Mac OS X support works 95% + - Fl_Button::handle() was calling take_focus() for both + FL_PUSH and FL_DRAG. + - File and memory fixes for Fl_GIF_Image, Fl_PNG_Image, + Fl_PNM_Image, Fl_Shared_Image, Fl_Tiled_Image, and + Fl_XBM_Image. + - filename_match() didn't handle backslashes properly + under WIN32, and didn't use a case-insensitive + comparison under MacOS X. + - The Fl class was missing access methods for the + FL_MOUSEWHEEL event values - Fl::event_dx() and + Fl::event_dy(). + - The default help string didn't include the -nokbd + option. - "make uninstall" didn't uninstall the static OpenGL widget library. - Mac cursor shapes added... @@ -22,7 +36,6 @@ CHANGES IN FLTK 1.1.0b7 loaded. - Some Win32 drivers would draw into wrong buffers after OpenGL mode change - - Mac OS X support works 95% - The file chooser would cause a segfault if you clicked in an empty area of the file list. - Fl_File_Icon::labeltype() would cause a segfault diff --git a/FL/Fl.H b/FL/Fl.H index 0b0c99be4..d9cff0195 100644 --- a/FL/Fl.H +++ b/FL/Fl.H @@ -1,5 +1,5 @@ // -// "$Id: Fl.H,v 1.8.2.11.2.7 2001/12/06 22:16:49 easysw Exp $" +// "$Id: Fl.H,v 1.8.2.11.2.8 2001/12/11 16:03:11 easysw Exp $" // // Main header file for the Fast Light Tool Kit (FLTK). // @@ -128,6 +128,8 @@ public: static FL_EXPORT int event_y() {return e_y;} static FL_EXPORT int event_x_root() {return e_x_root;} static FL_EXPORT int event_y_root() {return e_y_root;} + static FL_EXPORT int event_dx() {return e_dx;} + static FL_EXPORT int event_dy() {return e_dy;} static FL_EXPORT void get_mouse(int &,int &); static FL_EXPORT int event_clicks() {return e_clicks;} static FL_EXPORT void event_clicks(int i) {e_clicks = i;} @@ -231,5 +233,5 @@ public: #endif // !Fl_H // -// End of "$Id: Fl.H,v 1.8.2.11.2.7 2001/12/06 22:16:49 easysw Exp $". +// End of "$Id: Fl.H,v 1.8.2.11.2.8 2001/12/11 16:03:11 easysw Exp $". // diff --git a/README b/README index 743e59723..4a6035efa 100644 --- a/README +++ b/README @@ -5,10 +5,10 @@ WHAT IS FLTK? The Fast Light Tool Kit ("FLTK", pronounced "fulltick") is a LGPL'd C++ graphical user interface toolkit for X (UNIX(r)), - OpenGL(r), and Microsoft(r) Windows(r) NT 4.0, 95, or 98. It - was originally developed by Mr. Bill Spitzak and is - currently maintained by a small group of developers across - the world with a central repository in the US. + OpenGL(r), MacOS(r) X, and Microsoft(r) Windows(r). It was + originally developed by Mr. Bill Spitzak and is currently + maintained by a small group of developers across the world + with a central repository in the US. LICENSING @@ -29,7 +29,7 @@ ON-LINE DOCUMENTATION http://www.fltk.org/documentation.php -BUILDING AND INSTALLING FLTK UNDER UNIX +BUILDING AND INSTALLING FLTK UNDER UNIX AND MacOS X In most cases you can just type "make". This will run configure with the default (no) options and then compile @@ -78,14 +78,20 @@ BUILDING AND INSTALLING FLTK UNDER UNIX BUILDING FLTK UNDER MICROSOFT WINDOWS There are two ways to build FLTK under Microsoft Windows. - The first is to use the 5.0 project files under the + The first is to use the VC++ 6.0 project files under the "visualc" directory. Just open (or double-click on) the "fltk.dsw" file to get the whole shebang. The second method is to use a GNU-based development tool - with the files in the "makefiles" directory. To build using - one of these tools simply copy the appropriate makeinclude - and config files to the main directory and do a make: + with the files in the "makefiles" directory. To build + with the CygWin tools, use the supplied configure script + as specified in the UNIX section above: + + sh configure ...options... + + To build using other tools simply copy the appropriate + makeinclude and config files to the main directory and do a + make: copy makefiles\Makefile.<env> Makefile make @@ -162,7 +168,8 @@ TRADEMARKS Microsoft and Windows are registered trademarks of Microsoft Corportation. UNIX is a registered trademark of the X/Open Group, Inc. OpenGL is a registered trademark of Silicon - Graphics, Inc. + Graphics, Inc. MacOS is a registered trademark of Apple + Computers, Inc. COPYRIGHT diff --git a/documentation/Fl_Tiled_Image.html b/documentation/Fl_Tiled_Image.html index 4175cc780..2d04e4e68 100644 --- a/documentation/Fl_Tiled_Image.html +++ b/documentation/Fl_Tiled_Image.html @@ -22,8 +22,15 @@ <H3>Description</H3> -<P>The <TT>Fl_Tiled_Image</TT> class supports tiling of images over a -specified area.</P> +<P>The <TT>Fl_Tiled_Image</TT> class supports tiling of images +over a specified area. The source (tile) image is <B>not</B> +copied unless you call the <A +HREF="Fl_Image.html#Fl_Image.color_average"><TT>color_average()</TT></A>, +<A +HREF="Fl_Image.html#Fl_Image.desaturate"><TT>desaturate()</TT></A>, +or <A +HREF="Fl_Image.html#Fl_Image.inactive"><TT>inactive()</TT></A> +methods.</P> <H3>Methods</H3> diff --git a/documentation/intro.html b/documentation/intro.html index abdf5a454..7cc70753a 100644 --- a/documentation/intro.html +++ b/documentation/intro.html @@ -5,11 +5,11 @@ <P>The Fast Light Tool Kit ("FLTK", pronounced "fulltick") is a LGPL'd C++ graphical user interface -toolkit for X (UNIX®), OpenGL®, and Microsoft® -Windows®. Work is also underway to support FLTK under MacOS -X. It was originally developed by Mr. Bill Spitzak and is -currently maintained by a small group of developers across the -world with a central repository in the US.</P> +toolkit for X (UNIX®), OpenGL®, MacOS® X, and +Microsoft® Windows®. It was originally developed by Mr. +Bill Spitzak and is currently maintained by a small group of +developers across the world with a central repository in the +US.</P> <H2>History of FLTK</H2> @@ -151,7 +151,7 @@ the toolkit, which was already in use by several people, Bill came up with "FLTK", including a bogus excuse that it stands for "The Fast Light Toolkit".</P> -<H2>Building and Installing FLTK Under UNIX</H2> +<H2>Building and Installing FLTK Under UNIX and MacOS X</H2> <P>In most cases you can just type "make". This will run configure with the default of no options and then compile @@ -294,15 +294,6 @@ copy makefiles\Makefile.os2x Makefile make </PRE></UL> -<H2>Building FLTK Under MacOS X</H2> - -<P>The current version of FLTK requires the XFree86 X server for -Darwin. Follow the instructions for building FLTK under -UNIX.</P> - -<P>Future versions of FLTK will provide a Carbon-based window -interface, so XFree86 will no longer be required.</P> - <H2>Internet Resources</H2> <P>FLTK is available on the 'net in a bunch of locations:</P> diff --git a/src/Fl_Button.cxx b/src/Fl_Button.cxx index 5a013bfa3..4b26865c9 100644 --- a/src/Fl_Button.cxx +++ b/src/Fl_Button.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Button.cxx,v 1.4.2.6.2.5 2001/11/03 19:24:22 easysw Exp $" +// "$Id: Fl_Button.cxx,v 1.4.2.6.2.6 2001/12/11 16:03:11 easysw Exp $" // // Button widget for the Fast Light Tool Kit (FLTK). // @@ -65,8 +65,8 @@ int Fl_Button::handle(int event) { // if ((value_?selection_color():color())==FL_GRAY) redraw(); return 1; case FL_PUSH: - case FL_DRAG: if (Fl::visible_focus()) take_focus(); + case FL_DRAG: if (Fl::event_inside(this)) { if (type() == FL_RADIO_BUTTON) newval = 1; else newval = !oldval; @@ -138,5 +138,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.5 2001/11/03 19:24:22 easysw Exp $". +// End of "$Id: Fl_Button.cxx,v 1.4.2.6.2.6 2001/12/11 16:03:11 easysw Exp $". // diff --git a/src/Fl_Chart.cxx b/src/Fl_Chart.cxx index ebeffef6b..7b50ecd12 100644 --- a/src/Fl_Chart.cxx +++ b/src/Fl_Chart.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Chart.cxx,v 1.5.2.6.2.2 2001/11/22 15:35:01 easysw Exp $" +// "$Id: Fl_Chart.cxx,v 1.5.2.6.2.3 2001/12/11 16:03:12 easysw Exp $" // // Forms-compatible chart widget for the Fast Light Tool Kit (FLTK). // @@ -312,7 +312,7 @@ void Fl_Chart::add(double val, const char *str, unsigned col) { entries[numb].val = float(val); entries[numb].col = col; if (str) { - strncpy(entries[numb].str,str,FL_CHART_LABEL_MAX+1); + strncpy(entries[numb].str,str,FL_CHART_LABEL_MAX); entries[numb].str[FL_CHART_LABEL_MAX] = 0; } else { entries[numb].str[0] = 0; @@ -336,7 +336,7 @@ void Fl_Chart::insert(int index, double val, const char *str, unsigned col) { entries[index-1].val = float(val); entries[index-1].col = col; if (str) { - strncpy(entries[index-1].str,str,FL_CHART_LABEL_MAX+1); + strncpy(entries[index-1].str,str,FL_CHART_LABEL_MAX); entries[index-1].str[FL_CHART_LABEL_MAX] = 0; } else { entries[index-1].str[0] = 0; @@ -349,7 +349,7 @@ void Fl_Chart::replace(int index,double val, const char *str, unsigned col) { entries[index-1].val = float(val); entries[index-1].col = col; if (str) { - strncpy(entries[index-1].str,str,FL_CHART_LABEL_MAX+1); + strncpy(entries[index-1].str,str,FL_CHART_LABEL_MAX); entries[index-1].str[FL_CHART_LABEL_MAX] = 0; } else { entries[index-1].str[0] = 0; @@ -378,5 +378,5 @@ void Fl_Chart::maxsize(int m) { } // -// End of "$Id: Fl_Chart.cxx,v 1.5.2.6.2.2 2001/11/22 15:35:01 easysw Exp $". +// End of "$Id: Fl_Chart.cxx,v 1.5.2.6.2.3 2001/12/11 16:03:12 easysw Exp $". // diff --git a/src/Fl_File_Chooser.cxx b/src/Fl_File_Chooser.cxx index 984b11a8c..9ab24d56b 100644 --- a/src/Fl_File_Chooser.cxx +++ b/src/Fl_File_Chooser.cxx @@ -53,10 +53,10 @@ void Fl_File_Chooser::cb_upButton(Fl_Button* o, void* v) { } #include <FL/Fl_Bitmap.H> -static unsigned char bits_up[] = +static unsigned char idata_up[] = "\0\0x\0\204\0\2\1""1\376y\200\375\200""1\200""1\200""1\200""1\200""1\200\1\ \200\1\200\377\377\0\0"; -static Fl_Bitmap bitmap_up(bits_up, 16, 16); +static Fl_Bitmap image_up(idata_up, 16, 16); inline void Fl_File_Chooser::cb_newButton_i(Fl_Button*, void*) { newdir(); @@ -65,10 +65,10 @@ void Fl_File_Chooser::cb_newButton(Fl_Button* o, void* v) { ((Fl_File_Chooser*)(o->parent()->user_data()))->cb_newButton_i(o,v); } -static unsigned char bits_new[] = +static unsigned char idata_new[] = "\0\0x\0\204\0\2\1\1\376\1\200""1\200""1\200\375\200\375\200""1\200""1\200\1\ \200\1\200\377\377\0\0"; -static Fl_Bitmap bitmap_new(bits_new, 16, 16); +static Fl_Bitmap image_new(idata_new, 16, 16); inline void Fl_File_Chooser::cb_dirMenu_i(Fl_Choice*, void*) { char pathname[1024]; @@ -96,9 +96,9 @@ void Fl_File_Chooser::cb_(Fl_Button* o, void* v) { ((Fl_File_Chooser*)(o->parent()->user_data()))->cb__i(o,v); } -static unsigned char bits_allfiles[] = +static unsigned char idata_allfiles[] = "\374?\4 \4 \4 \204!\244%\304#\364/\364/\304#\244%\204!\4 \4 \4 \374?"; -static Fl_Bitmap bitmap_allfiles(bits_allfiles, 16, 16); +static Fl_Bitmap image_allfiles(idata_allfiles, 16, 16); Fl_File_Chooser::Fl_File_Chooser(const char *d, const char *p, int t, const char *title) { Fl_Window* w; @@ -127,13 +127,13 @@ Fl_File_Chooser::Fl_File_Chooser(const char *d, const char *p, int t, const char } { Fl_Button* o = upButton = new Fl_Button(280, 10, 25, 25); o->tooltip("Show the parent directory."); - o->image(bitmap_up); + o->image(image_up); o->labelsize(8); o->callback((Fl_Callback*)cb_upButton); } { Fl_Button* o = newButton = new Fl_Button(310, 10, 25, 25); o->tooltip("Create a new directory."); - o->image(bitmap_new); + o->image(image_new); o->labelsize(8); o->callback((Fl_Callback*)cb_newButton); } @@ -144,7 +144,7 @@ Fl_File_Chooser::Fl_File_Chooser(const char *d, const char *p, int t, const char } { Fl_Button* o = new Fl_Button(340, 10, 25, 25); o->tooltip("Change the filename filter."); - o->image(bitmap_allfiles); + o->image(image_allfiles); o->labelsize(28); o->labelcolor(4); o->callback((Fl_Callback*)cb_); @@ -154,7 +154,7 @@ Fl_File_Chooser::Fl_File_Chooser(const char *d, const char *p, int t, const char o->set_modal(); o->end(); } - window->size_range(345, 270, 345); + window->size_range(375, 315, 375); fileList->filter(p); type(t); value(d); diff --git a/src/Fl_File_Chooser.fl b/src/Fl_File_Chooser.fl index 16a19fe2c..b92548d44 100644 --- a/src/Fl_File_Chooser.fl +++ b/src/Fl_File_Chooser.fl @@ -84,12 +84,13 @@ if ((f = fl_input("New Filter?", code0 {\#include <FL/fl_ask.H>} } } - code {window->size_range(345, 270, 345); + code {window->size_range(375, 315, 375); fileList->filter(p); type(t); value(d); callback_ = 0; -data_ = 0;} {} +data_ = 0;} {selected + } } decl {void (*callback_)(Fl_File_Chooser*, void *);} {} decl {void *data_;} {} @@ -215,5 +216,5 @@ decl {FL_EXPORT char *fl_dir_chooser(const char *message,const char *fname);} {p decl {FL_EXPORT char *fl_file_chooser(const char *message,const char *pat,const char *fname);} {public } -decl {FL_EXPORT void fl_file_chooser_callback(void (*cb)(const char*));} {selected public +decl {FL_EXPORT void fl_file_chooser_callback(void (*cb)(const char*));} {public } diff --git a/src/Fl_GIF_Image.cxx b/src/Fl_GIF_Image.cxx index 99ba3b6ed..5d6e469de 100644 --- a/src/Fl_GIF_Image.cxx +++ b/src/Fl_GIF_Image.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_GIF_Image.cxx,v 1.1.2.5 2001/11/24 18:07:57 easysw Exp $" +// "$Id: Fl_GIF_Image.cxx,v 1.1.2.6 2001/12/11 16:03:12 easysw Exp $" // // Fl_GIF_Image routines. // @@ -87,9 +87,15 @@ Fl_GIF_Image::Fl_GIF_Image(const char *infname) : Fl_Pixmap((char *const*)0) { } {char b[6]; - if (fread(b,1,6,GifFile)<6) return; /* quit on eof */ + if (fread(b,1,6,GifFile)<6) { + fclose(GifFile); + return; /* quit on eof */ + } if (b[0]!='G' || b[1]!='I' || b[2] != 'F') { - Fl::error("%s is not a GIF file.\n", infname); return;} + Fl::error("%s is not a GIF file.\n", infname); + fclose(GifFile); + return; + } if (b[3]!='8' || b[4]>'9' || b[5]!= 'a') Fl::warning("%s is version %c%c%c.",infname,b[3],b[4],b[5]); } @@ -128,7 +134,11 @@ Fl_GIF_Image::Fl_GIF_Image(const char *infname) : Fl_Pixmap((char *const*)0) { for (;;) { int i = NEXTBYTE; - if (i<0) {Fl::error("%s: unexpected EOF",infname); return;} + if (i<0) { + Fl::error("%s: unexpected EOF",infname); + fclose(GifFile); + return; + } int blocklen; // if (i == 0x3B) return 0; eof code @@ -185,6 +195,7 @@ Fl_GIF_Image::Fl_GIF_Image(const char *infname) : Fl_Pixmap((char *const*)0) { uchar *Image = new uchar[Width*Height]; if (!Image) { Fl::fatal("Insufficient memory for %s.", infname); + fclose(GifFile); return; } @@ -361,9 +372,11 @@ Fl_GIF_Image::Fl_GIF_Image(const char *infname) : Fl_Pixmap((char *const*)0) { alloc_data = 1; delete[] Image; + + fclose(GifFile); } // -// End of "$Id: Fl_GIF_Image.cxx,v 1.1.2.5 2001/11/24 18:07:57 easysw Exp $". +// End of "$Id: Fl_GIF_Image.cxx,v 1.1.2.6 2001/12/11 16:03:12 easysw Exp $". // diff --git a/src/Fl_Gl_Window.cxx b/src/Fl_Gl_Window.cxx index e4a16c81e..9b491cf6d 100644 --- a/src/Fl_Gl_Window.cxx +++ b/src/Fl_Gl_Window.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Gl_Window.cxx,v 1.12.2.22.2.3 2001/12/06 00:17:47 matthiaswm Exp $" +// "$Id: Fl_Gl_Window.cxx,v 1.12.2.22.2.4 2001/12/11 16:03:12 easysw Exp $" // // OpenGL window code for the Fast Light Tool Kit (FLTK). // @@ -339,11 +339,14 @@ Fl_Gl_Window::~Fl_Gl_Window() { void Fl_Gl_Window::init() { end(); // we probably don't want any children box(FL_NO_BOX); - mode_ = FL_RGB | FL_DEPTH | FL_DOUBLE; - alist = 0; + + mode_ = FL_RGB | FL_DEPTH | FL_DOUBLE; + alist = 0; context_ = 0; - g = 0; - overlay = 0; + g = 0; + overlay = 0; + valid_ = 0; + damage1_ = 0; } void Fl_Gl_Window::draw_overlay() {} @@ -351,5 +354,5 @@ void Fl_Gl_Window::draw_overlay() {} #endif // -// End of "$Id: Fl_Gl_Window.cxx,v 1.12.2.22.2.3 2001/12/06 00:17:47 matthiaswm Exp $". +// End of "$Id: Fl_Gl_Window.cxx,v 1.12.2.22.2.4 2001/12/11 16:03:12 easysw Exp $". // diff --git a/src/Fl_Help_View.cxx b/src/Fl_Help_View.cxx index 19b1ba53a..5550768c9 100644 --- a/src/Fl_Help_View.cxx +++ b/src/Fl_Help_View.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Help_View.cxx,v 1.1.2.17 2001/11/30 16:10:08 easysw Exp $" +// "$Id: Fl_Help_View.cxx,v 1.1.2.18 2001/12/11 16:03:12 easysw Exp $" // // Fl_Help_View widget routines. // @@ -162,13 +162,13 @@ Fl_Help_View::add_link(const char *n, // I - Name of link temp->w = xx + ww; temp->h = yy + hh; - strncpy(temp->filename, n, sizeof(temp->filename)); + strncpy(temp->filename, n, sizeof(temp->filename) - 1); temp->filename[sizeof(temp->filename) - 1] = '\0'; if ((target = strrchr(temp->filename, '#')) != NULL) { *target++ = '\0'; - strncpy(temp->name, target, sizeof(temp->name)); + strncpy(temp->name, target, sizeof(temp->name) - 1); temp->name[sizeof(temp->name) - 1] = '\0'; } else @@ -202,7 +202,7 @@ Fl_Help_View::add_target(const char *n, // I - Name of target temp = targets_ + ntargets_; temp->y = yy; - strncpy(temp->name, n, sizeof(temp->name)); + strncpy(temp->name, n, sizeof(temp->name) - 1); temp->name[sizeof(temp->name) - 1] = '\0'; ntargets_ ++; @@ -2042,6 +2042,9 @@ Fl_Help_View::handle(int event) // I - Event to handle yy = Fl::event_y() - y() + topline_; break; + case FL_LEAVE : + fl_cursor(FL_CURSOR_DEFAULT); + default : return (Fl_Group::handle(event)); } @@ -2549,5 +2552,5 @@ hscrollbar_callback(Fl_Widget *s, void *) // -// End of "$Id: Fl_Help_View.cxx,v 1.1.2.17 2001/11/30 16:10:08 easysw Exp $". +// End of "$Id: Fl_Help_View.cxx,v 1.1.2.18 2001/12/11 16:03:12 easysw Exp $". // diff --git a/src/Fl_PNG_Image.cxx b/src/Fl_PNG_Image.cxx index e12cd5c77..4bd420848 100644 --- a/src/Fl_PNG_Image.cxx +++ b/src/Fl_PNG_Image.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_PNG_Image.cxx,v 1.1.2.2 2001/11/23 12:06:36 easysw Exp $" +// "$Id: Fl_PNG_Image.cxx,v 1.1.2.3 2001/12/11 16:03:12 easysw Exp $" // // Fl_PNG_Image routines. // @@ -25,6 +25,7 @@ // // Contents: // +// Fl_PNG_Image::Fl_PNG_Image() - Load a PNG image file. // // @@ -115,7 +116,7 @@ Fl_PNG_Image::Fl_PNG_Image(const char *png) // I - File to read png_read_rows(pp, rows, NULL, h()); // Free memory and return... - delete rows; + delete[] rows; png_read_end(pp, info); # ifdef HAVE_PNG_READ_DESTROY @@ -130,5 +131,5 @@ Fl_PNG_Image::Fl_PNG_Image(const char *png) // I - File to read // -// End of "$Id: Fl_PNG_Image.cxx,v 1.1.2.2 2001/11/23 12:06:36 easysw Exp $". +// End of "$Id: Fl_PNG_Image.cxx,v 1.1.2.3 2001/12/11 16:03:12 easysw Exp $". // diff --git a/src/Fl_PNM_Image.cxx b/src/Fl_PNM_Image.cxx index 13bcb8e49..0f5801f0b 100644 --- a/src/Fl_PNM_Image.cxx +++ b/src/Fl_PNM_Image.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_PNM_Image.cxx,v 1.1.2.2 2001/11/28 18:09:08 easysw Exp $" +// "$Id: Fl_PNM_Image.cxx,v 1.1.2.3 2001/12/11 16:03:12 easysw Exp $" // // Fl_PNM_Image routines. // @@ -24,6 +24,7 @@ // // Contents: // +// Fl_PNM_Image::Fl_PNM_Image() - Load a PNM image... // // @@ -73,6 +74,12 @@ Fl_PNM_Image::Fl_PNM_Image(const char *name) // I - File to read // lineptr = fgets(line, sizeof(line), fp); + if (!lineptr) { + Fl::error("Early end-of-file in PNM file \"%s\"!", name); + fclose(fp); + return; + } + lineptr ++; format = atoi(lineptr); @@ -159,5 +166,5 @@ Fl_PNM_Image::Fl_PNM_Image(const char *name) // I - File to read // -// End of "$Id: Fl_PNM_Image.cxx,v 1.1.2.2 2001/11/28 18:09:08 easysw Exp $". +// End of "$Id: Fl_PNM_Image.cxx,v 1.1.2.3 2001/12/11 16:03:12 easysw Exp $". // diff --git a/src/Fl_Shared_Image.cxx b/src/Fl_Shared_Image.cxx index 8e911fc5a..86d381515 100644 --- a/src/Fl_Shared_Image.cxx +++ b/src/Fl_Shared_Image.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Shared_Image.cxx,v 1.23.2.3 2001/11/29 00:24:43 easysw Exp $" +// "$Id: Fl_Shared_Image.cxx,v 1.23.2.4 2001/12/11 16:03:12 easysw Exp $" // // Shared image code for the Fast Light Tool Kit (FLTK). // @@ -118,7 +118,7 @@ Fl_Shared_Image::add() { temp = new Fl_Shared_Image *[alloc_images_ + 32]; if (alloc_images_) { - memcpy(images_, temp, sizeof(Fl_Shared_Image *)); + memcpy(temp, images_, alloc_images_ * sizeof(Fl_Shared_Image *)); delete[] images_; } @@ -376,5 +376,5 @@ Fl_Shared_Image::get(const char *n, int W, int H) { // -// End of "$Id: Fl_Shared_Image.cxx,v 1.23.2.3 2001/11/29 00:24:43 easysw Exp $". +// End of "$Id: Fl_Shared_Image.cxx,v 1.23.2.4 2001/12/11 16:03:12 easysw Exp $". // diff --git a/src/Fl_Tiled_Image.cxx b/src/Fl_Tiled_Image.cxx index 22cb2b86c..c331265bd 100644 --- a/src/Fl_Tiled_Image.cxx +++ b/src/Fl_Tiled_Image.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Tiled_Image.cxx,v 1.1.2.2 2001/12/06 18:12:35 easysw Exp $" +// "$Id: Fl_Tiled_Image.cxx,v 1.1.2.3 2001/12/11 16:03:12 easysw Exp $" // // Tiled image code for the Fast Light Tool Kit (FLTK). // @@ -74,12 +74,15 @@ Fl_Tiled_Image::copy(int W, // I - New width void Fl_Tiled_Image::color_average(Fl_Color c, // I - Color to blend with float i) { // I - Blend fraction - Fl_Image *temp = image_->copy(); + if (alloc_image_) image_->color_average(c, i); + else { + Fl_Image *temp = image_->copy(); - temp->color_average(c, i); + temp->color_average(c, i); - image_ = temp; - alloc_image_ = 1; + image_ = temp; + alloc_image_ = 1; + } } @@ -89,12 +92,15 @@ Fl_Tiled_Image::color_average(Fl_Color c, // I - Color to blend with void Fl_Tiled_Image::desaturate() { - Fl_Image *temp = image_->copy(); + if (alloc_image_) image_->desaturate(); + else { + Fl_Image *temp = image_->copy(); - temp->desaturate(); + temp->desaturate(); - image_ = temp; - alloc_image_ = 1; + image_ = temp; + alloc_image_ = 1; + } } @@ -133,5 +139,5 @@ Fl_Tiled_Image::draw(int X, // I - Starting X position // -// End of "$Id: Fl_Tiled_Image.cxx,v 1.1.2.2 2001/12/06 18:12:35 easysw Exp $". +// End of "$Id: Fl_Tiled_Image.cxx,v 1.1.2.3 2001/12/11 16:03:12 easysw Exp $". // diff --git a/src/Fl_XBM_Image.cxx b/src/Fl_XBM_Image.cxx index 9eedcad2f..56393e053 100644 --- a/src/Fl_XBM_Image.cxx +++ b/src/Fl_XBM_Image.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_XBM_Image.cxx,v 1.1.2.1 2001/11/24 18:07:57 easysw Exp $" +// "$Id: Fl_XBM_Image.cxx,v 1.1.2.2 2001/12/11 16:03:12 easysw Exp $" // // Fl_XBM_Image routines. // @@ -24,6 +24,7 @@ // // Contents: // +// Fl_XBM_Image::Fl_XBM_Image() - Load an XBM file. // // @@ -37,6 +38,10 @@ #include <stdlib.h> #include <string.h> +// +// 'Fl_XBM_Image::Fl_XBM_Image()' - Load an XBM file. +// + Fl_XBM_Image::Fl_XBM_Image(const char *name) : Fl_Bitmap((const char *)0,0,0) { FILE *f; uchar *data; @@ -49,7 +54,10 @@ Fl_XBM_Image::Fl_XBM_Image(const char *name) : Fl_Bitmap((const char *)0,0,0) { int i; for (i = 0; i<2; i++) { for (;;) { - if (!fgets(buffer,1024,f)) return; + if (!fgets(buffer,1024,f)) { + fclose(f); + return; + } int r = sscanf(buffer,"#define %s %d",junk,&wh[i]); if (r >= 2) break; } @@ -57,7 +65,10 @@ Fl_XBM_Image::Fl_XBM_Image(const char *name) : Fl_Bitmap((const char *)0,0,0) { // skip to data array: for (;;) { - if (!fgets(buffer,1024,f)) return; + if (!fgets(buffer,1024,f)) { + fclose(f); + return; + } if (!strncmp(buffer,"static ",7)) break; } @@ -70,7 +81,10 @@ Fl_XBM_Image::Fl_XBM_Image(const char *name) : Fl_Bitmap((const char *)0,0,0) { // read the data: for (i = 0, data = (uchar *)array; i < n;) { - if (!fgets(buffer,1024,f)) return; + if (!fgets(buffer,1024,f)) { + fclose(f); + return; + } const char *a = buffer; while (*a && i<n) { int t; @@ -84,5 +98,5 @@ Fl_XBM_Image::Fl_XBM_Image(const char *name) : Fl_Bitmap((const char *)0,0,0) { // -// End of "$Id: Fl_XBM_Image.cxx,v 1.1.2.1 2001/11/24 18:07:57 easysw Exp $". +// End of "$Id: Fl_XBM_Image.cxx,v 1.1.2.2 2001/12/11 16:03:12 easysw Exp $". // diff --git a/src/Fl_arg.cxx b/src/Fl_arg.cxx index 0125df1e6..da5e89e5a 100644 --- a/src/Fl_arg.cxx +++ b/src/Fl_arg.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_arg.cxx,v 1.5.2.8.2.3 2001/11/27 17:44:06 easysw Exp $" +// "$Id: Fl_arg.cxx,v 1.5.2.8.2.4 2001/12/11 16:03:12 easysw Exp $" // // Optional argument initialization code for the Fast Light Tool Kit (FLTK). // @@ -211,7 +211,8 @@ static const char * const helpmsg = " -i[conic]\n" " -fg color\n" " -bg color\n" -" -bg2 color"; +" -bg2 color\n" +" -nokbd"; const char * const Fl::help = helpmsg+13; @@ -358,5 +359,5 @@ int XParseGeometry(const char* string, int* x, int* y, #endif // ifdef WIN32 // -// End of "$Id: Fl_arg.cxx,v 1.5.2.8.2.3 2001/11/27 17:44:06 easysw Exp $". +// End of "$Id: Fl_arg.cxx,v 1.5.2.8.2.4 2001/12/11 16:03:12 easysw Exp $". // diff --git a/src/filename_absolute.cxx b/src/filename_absolute.cxx index 8e316294e..2eeca49e3 100644 --- a/src/filename_absolute.cxx +++ b/src/filename_absolute.cxx @@ -1,5 +1,5 @@ // -// "$Id: filename_absolute.cxx,v 1.5.2.4.2.2 2001/11/26 19:41:57 easysw Exp $" +// "$Id: filename_absolute.cxx,v 1.5.2.4.2.3 2001/12/11 16:03:12 easysw Exp $" // // Filename expansion routines for the Fast Light Tool Kit (FLTK). // @@ -110,13 +110,12 @@ int filename_absolute(char *to, int tolen, const char *from) { */ int // O - 0 if no change, 1 if changed -filename_relative(char *to, // O - Relative filename - int tolen, // I - Size of "to" buffer - const char *from) { // I - Absolute filename +filename_relative(char *to, // O - Relative filename + int tolen, // I - Size of "to" buffer + const char *from) { // I - Absolute filename const char *newslash; // Directory separator - char *slash; // Directory separator + const char *slash; // Directory separator char cwd[1024]; // Current directory - char *temp = new char[tolen];// Temporary pathname if (from[0] == '\0' || !isdirsep(*from)) { @@ -131,16 +130,13 @@ filename_relative(char *to, // O - Relative filename return 0; } - strncpy(temp, from, tolen - 1); - temp[tolen - 1] = '\0'; - - for (slash = temp, newslash = cwd; + for (slash = from, newslash = cwd; *slash != '\0' && *newslash != '\0'; slash ++, newslash ++) if (isdirsep(*slash) && isdirsep(*newslash)) continue; else if (*slash != *newslash) break; - while (!isdirsep(*slash) && slash > temp) slash --; + while (!isdirsep(*slash) && slash > from) slash --; if (isdirsep(*slash)) slash ++; @@ -158,10 +154,8 @@ filename_relative(char *to, // O - Relative filename to[0] = '\0'; to[tolen - 1] = '\0'; - while (*newslash != '\0') - { - if (*newslash == '/' || *newslash == '\\') - strncat(to, "../", tolen - 1); + while (*newslash != '\0') { + if (isdirsep(*newslash)) strncat(to, "../", tolen - 1); newslash ++; } @@ -173,5 +167,5 @@ filename_relative(char *to, // O - Relative filename // -// End of "$Id: filename_absolute.cxx,v 1.5.2.4.2.2 2001/11/26 19:41:57 easysw Exp $". +// End of "$Id: filename_absolute.cxx,v 1.5.2.4.2.3 2001/12/11 16:03:12 easysw Exp $". // diff --git a/src/filename_expand.cxx b/src/filename_expand.cxx index 06d76721f..8a08557f3 100644 --- a/src/filename_expand.cxx +++ b/src/filename_expand.cxx @@ -1,5 +1,5 @@ // -// "$Id: filename_expand.cxx,v 1.4.2.4.2.1 2001/11/26 00:15:06 easysw Exp $" +// "$Id: filename_expand.cxx,v 1.4.2.4.2.2 2001/12/11 16:03:13 easysw Exp $" // // Filename expansion routines for the Fast Light Tool Kit (FLTK). // @@ -46,7 +46,7 @@ static inline int isdirsep(char c) {return c=='/' || c=='\\';} int filename_expand(char *to,int tolen, const char *from) { char *temp = new char[tolen]; - strncpy(temp,from, tolen); + strncpy(temp,from, tolen - 1); temp[tolen - 1] = '\0'; char *start = temp; char *end = temp+strlen(temp); @@ -106,5 +106,5 @@ int filename_expand(char *to,int tolen, const char *from) { // -// End of "$Id: filename_expand.cxx,v 1.4.2.4.2.1 2001/11/26 00:15:06 easysw Exp $". +// End of "$Id: filename_expand.cxx,v 1.4.2.4.2.2 2001/12/11 16:03:13 easysw Exp $". // diff --git a/src/filename_match.cxx b/src/filename_match.cxx index a9e6d57a2..69ac82245 100644 --- a/src/filename_match.cxx +++ b/src/filename_match.cxx @@ -1,5 +1,5 @@ // -// "$Id: filename_match.cxx,v 1.5.2.4 2001/01/22 15:13:40 easysw Exp $" +// "$Id: filename_match.cxx,v 1.5.2.4.2.1 2001/12/11 16:03:13 easysw Exp $" // // Pattern matching routines for the Fast Light Tool Kit (FLTK). // @@ -89,25 +89,20 @@ int filename_match(const char *s, const char *p) { case 0: // end of pattern return !*s; -#if defined(WIN32) && !defined(__CYGWIN__) case '\\': // quote next character if (*p) p++; - if (*s++ != *(p-1)) return 0; - break; default: +#if defined(WIN32) || defined(__CYGWIN__) || defined(__APPLE__) if (tolower(*s) != tolower(*(p-1))) return 0; s++; #else - case '\\': // quote next character - if (*p) p++; - default : if (*s++ != *(p-1)) return 0; - break; #endif + break; } } } // -// End of "$Id: filename_match.cxx,v 1.5.2.4 2001/01/22 15:13:40 easysw Exp $". +// End of "$Id: filename_match.cxx,v 1.5.2.4.2.1 2001/12/11 16:03:13 easysw Exp $". // diff --git a/src/fl_font.cxx b/src/fl_font.cxx index e88eaa8ce..c00c674ed 100644 --- a/src/fl_font.cxx +++ b/src/fl_font.cxx @@ -1,5 +1,5 @@ // -// "$Id: fl_font.cxx,v 1.9.2.5.2.1 2001/11/27 17:44:08 easysw Exp $" +// "$Id: fl_font.cxx,v 1.9.2.5.2.2 2001/12/11 16:03:13 easysw Exp $" // // Font selection code for the Fast Light Tool Kit (FLTK). // @@ -38,6 +38,7 @@ # include "Fl_Font.H" # include <ctype.h> +# include <stdio.h> # include <stdlib.h> # include <string.h> @@ -172,14 +173,7 @@ static Fl_FontSize* find(int fnum, int size) { // whoa! A scalable font! Use unless exact match found: int l = c-thisname; memcpy(namebuffer,thisname,l); -#if 1 // this works if you don't want stdio - if (size>=100) namebuffer[l++] = size/100+'0'; - if (size>=10) namebuffer[l++] = (size/10)%10+'0'; - namebuffer[l++] = (size%10)+'0'; -#else - //for some reason, sprintf fails to return the right value under Solaris. l += sprintf(namebuffer+l,"%d",size); -#endif while (*c == '0') c++; strcpy(namebuffer+l,c); name = namebuffer; @@ -295,5 +289,5 @@ void fl_draw(const char* str, int x, int y) { #endif // -// End of "$Id: fl_font.cxx,v 1.9.2.5.2.1 2001/11/27 17:44:08 easysw Exp $". +// End of "$Id: fl_font.cxx,v 1.9.2.5.2.2 2001/12/11 16:03:13 easysw Exp $". // -- GitLab