diff options
| author | Michael R Sweet <michael.r.sweet@gmail.com> | 2001-12-19 18:15:34 +0000 |
|---|---|---|
| committer | Michael R Sweet <michael.r.sweet@gmail.com> | 2001-12-19 18:15:34 +0000 |
| commit | 329b4127f6801d04ca0cdfadaf60f1265e8268c6 (patch) | |
| tree | f7bcaf1fc7d2a37782c66b5e0d87e910e53ca156 /src/Fl_Image.cxx | |
| parent | 9f601ccb7356adc26bf375de9744e39cdf531b25 (diff) | |
Multiple bug fixes from Sebastien:
- Fl_GIF_Image and Fl_PNG_Image didn't close the file before
calling Fl::error().
- Fl_Help_View didn't clear the line array in Fl_Help_Block,
and Fl_Help_Block::font and ::size were not used.
- Fl_Shared_Image::get() didn't return NULL if the image
could not be loaded.
- Switched to more efficient code for
Fl_Tiled_Image::color_average() and ::desaturate().
- Don't delete children in Fl_Text_Display since the group
will do it.
- Fixes to filename_isdir(), filename_absolute(), and
filename_relative().
- Was using numbers instead of define constants for some
OpenGL stuff under WIN32.
- Wasn't exporting threading functions under WIN32.
- The Fl_Widget destructor now removes from the parent to
avoid a Purify error since the old widget would be
referenced by the parent when it was destroyed; this has
no apparent performance impact since Fl_Group::clear()
sets children_ to 0, making Fl_Group::remove() very
fast...
- WIN32 font enumeration datatype fixes...
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@1878 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl_Image.cxx')
| -rw-r--r-- | src/Fl_Image.cxx | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/Fl_Image.cxx b/src/Fl_Image.cxx index 7fc8857a5..e431e9157 100644 --- a/src/Fl_Image.cxx +++ b/src/Fl_Image.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Image.cxx,v 1.5.2.3.2.11 2001/11/27 17:44:06 easysw Exp $" +// "$Id: Fl_Image.cxx,v 1.5.2.3.2.12 2001/12/19 18:15:34 easysw Exp $" // // Image drawing code for the Fast Light Tool Kit (FLTK). // @@ -73,8 +73,12 @@ Fl_RGB_Image::~Fl_RGB_Image() { } Fl_Image *Fl_RGB_Image::copy(int W, int H) { - // Optimize the simple copy where the width and height are the same... - if (W == w() && H == h()) return new Fl_RGB_Image(array, w(), h(), d(), ld()); + // Optimize the simple copy where the width and height are the same, + // or when we are copying an empty image... + if ((W == w() && H == h()) || + !w() || !h() || !d() || !array) { + return new Fl_RGB_Image(array, w(), h(), d(), ld()); + } // OK, need to resize the image data; allocate memory and Fl_RGB_Image *new_image; // New RGB image @@ -128,6 +132,9 @@ Fl_Image *Fl_RGB_Image::copy(int W, int H) { } void Fl_RGB_Image::color_average(Fl_Color c, float i) { + // Don't average an empty image... + if (!w() || !h() || !d() || !array) return; + // Delete any existing pixmap/mask objects... if (id) { fl_delete_offscreen(id); @@ -191,6 +198,9 @@ void Fl_RGB_Image::color_average(Fl_Color c, float i) { } void Fl_RGB_Image::desaturate() { + // Don't desaturate an empty image... + if (!w() || !h() || !d() || !array) return; + // Can only desaturate color images... if (d() < 3) return; @@ -234,7 +244,8 @@ void Fl_RGB_Image::desaturate() { } void Fl_RGB_Image::draw(int XP, int YP, int WP, int HP, int cx, int cy) { - if (!array) { + // Don't draw an empty image... + if (!d() || !array) { draw_empty(XP, YP); return; } @@ -367,5 +378,5 @@ void Fl_RGB_Image::label(Fl_Menu_Item* m) { // -// End of "$Id: Fl_Image.cxx,v 1.5.2.3.2.11 2001/11/27 17:44:06 easysw Exp $". +// End of "$Id: Fl_Image.cxx,v 1.5.2.3.2.12 2001/12/19 18:15:34 easysw Exp $". // |
