diff options
| author | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2022-06-20 12:49:38 +0200 |
|---|---|---|
| committer | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2022-06-20 12:49:38 +0200 |
| commit | e698af035a8d9363ac6d212a8e986e1f4fdac969 (patch) | |
| tree | 8b1d03c65220a09219c614b18eea10014536cae2 /src | |
| parent | 02870242eea8b729b3dbd6d23eb77372f61c6318 (diff) | |
Fix issue #427 - 2nd part
Fix Fl_Tiled_Image made from scaled source image.
Fix Fl_Shared_Image::update() to allow scaled source image.
Correct handling of default value (-1) of 3rd argument of 3-argument Fl_BMP_Image constructor.
Diffstat (limited to 'src')
| -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; } |
