summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Fl_BMP_Image.cxx3
-rw-r--r--src/Fl_Shared_Image.cxx6
-rw-r--r--src/Fl_Tiled_Image.cxx8
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;
}