diff options
| -rw-r--r-- | src/Fl_BMP_Image.cxx | 3 | ||||
| -rw-r--r-- | src/Fl_Shared_Image.cxx | 6 | ||||
| -rw-r--r-- | src/Fl_Tiled_Image.cxx | 8 |
3 files changed, 12 insertions, 5 deletions
diff --git a/src/Fl_BMP_Image.cxx b/src/Fl_BMP_Image.cxx index 8b326ede4..de444f99b 100644 --- a/src/Fl_BMP_Image.cxx +++ b/src/Fl_BMP_Image.cxx @@ -103,7 +103,8 @@ Fl_BMP_Image::Fl_BMP_Image(const char *imagename, const unsigned char *data, con : Fl_RGB_Image(0,0,0) { Fl_Image_Reader rdr; - if (rdr.open(imagename, data, length) == -1) { + int retval = (length < 0 ? rdr.open(imagename, data) : rdr.open(imagename, data, (size_t)length)); + if (retval == -1) { ld(ERR_FILE_ACCESS); } else { load_bmp_(rdr); diff --git a/src/Fl_Shared_Image.cxx b/src/Fl_Shared_Image.cxx index 91e093b6f..6c14b9c12 100644 --- a/src/Fl_Shared_Image.cxx +++ b/src/Fl_Shared_Image.cxx @@ -190,10 +190,12 @@ Fl_Shared_Image::add() { void Fl_Shared_Image::update() { if (image_) { - w(image_->w()); - h(image_->h()); + int W = w(), H = h(); + w(image_->data_w()); + h(image_->data_h()); d(image_->d()); data(image_->data(), image_->count()); + if (W && H) scale(W, H, 0, 1); } } diff --git a/src/Fl_Tiled_Image.cxx b/src/Fl_Tiled_Image.cxx index da1ed5531..2ec62e79a 100644 --- a/src/Fl_Tiled_Image.cxx +++ b/src/Fl_Tiled_Image.cxx @@ -92,7 +92,9 @@ void Fl_Tiled_Image::color_average(Fl_Color c, // I - Color to blend with float i) { // I - Blend fraction if (!alloc_image_) { - image_ = image_->copy(); + int W = image_->w(), H = image_->h(); + image_ = image_->copy(image_->data_w(), image_->data_h()); + image_->scale(W, H, 0, 1); alloc_image_ = 1; } @@ -107,7 +109,9 @@ Fl_Tiled_Image::color_average(Fl_Color c, // I - Color to blend with void Fl_Tiled_Image::desaturate() { if (!alloc_image_) { - image_ = image_->copy(); + int W = image_->w(), H = image_->h(); + image_ = image_->copy(image_->data_w(), image_->data_h()); + image_->scale(W, H, 0, 1); alloc_image_ = 1; } |
