From ff214db67a11cceb0b8e1813b10d87b467a4de80 Mon Sep 17 00:00:00 2001 From: Albrecht Schlosser Date: Tue, 9 Aug 2016 15:19:46 +0000 Subject: [PATCH] Fix typos, separate local variables of image scaling algorithms. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@11868 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/Fl_Bitmap.cxx | 4 ++-- src/Fl_Image.cxx | 34 ++++++++++++++++++---------------- src/Fl_Pixmap.cxx | 2 +- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/Fl_Bitmap.cxx b/src/Fl_Bitmap.cxx index da64c878e..ef1e7d94b 100644 --- a/src/Fl_Bitmap.cxx +++ b/src/Fl_Bitmap.cxx @@ -243,7 +243,7 @@ void Fl_Bitmap::draw(int XP, int YP, int WP, int HP, int cx, int cy) { fl_graphics_driver->draw(this, XP, YP, WP, HP, cx, cy); } -int Fl_Bitmap::start(int XP, int YP, int WP, int HP, int &cx, int &cy, +int Fl_Bitmap::start(int XP, int YP, int WP, int HP, int &cx, int &cy, int &X, int &Y, int &W, int &H) { if (!array) { @@ -419,7 +419,7 @@ Fl_Image *Fl_Bitmap::copy(int W, int H) { xstep, ystep; // X & Y step increments - // Figure out Bresenheim step/modulus values... + // Figure out Bresenham step/modulus values... xmod = w() % W; xstep = w() / W; ymod = h() % H; diff --git a/src/Fl_Image.cxx b/src/Fl_Image.cxx index 8891c7fb7..3eadfa2b1 100644 --- a/src/Fl_Image.cxx +++ b/src/Fl_Image.cxx @@ -349,31 +349,33 @@ Fl_Image *Fl_RGB_Image::copy(int W, int H) { } if (W <= 0 || H <= 0) return 0; - // OK, need to resize the image data; allocate memory and + // OK, need to resize the image data; allocate memory and create new image uchar *new_ptr; // Pointer into new array const uchar *old_ptr; // Pointer into old array - int c, // Channel number - sy, // Source coordinate - dx, dy, // Destination coordinates - xerr, yerr, // X & Y errors - xmod, ymod, // X & Y moduli - xstep, ystep, // X & Y step increments - line_d; // stride from line to line - - - // Figure out Bresenheim step/modulus values... - xmod = w() % W; - xstep = (w() / W) * d(); - ymod = h() % H; - ystep = h() / H; - line_d = ld() ? ld() : w() * d(); + int dx, dy, // Destination coordinates + line_d; // stride from line to line // Allocate memory for the new image... new_array = new uchar [W * H * d()]; new_image = new Fl_RGB_Image(new_array, W, H, d()); new_image->alloc_array = 1; + line_d = ld() ? ld() : w() * d(); + if (Fl_Image::RGB_scaling() == FL_RGB_SCALING_NEAREST) { + + int c, // Channel number + sy, // Source coordinate + xerr, yerr, // X & Y errors + xmod, ymod, // X & Y moduli + xstep, ystep; // X & Y step increments + + // Figure out Bresenham step/modulus values... + xmod = w() % W; + xstep = (w() / W) * d(); + ymod = h() % H; + ystep = h() / H; + // Scale the image using a nearest-neighbor algorithm... for (dy = H, sy = 0, yerr = H, new_ptr = new_array; dy > 0; dy --) { for (dx = W, xerr = W, old_ptr = array + sy * line_d; dx > 0; dx --) { diff --git a/src/Fl_Pixmap.cxx b/src/Fl_Pixmap.cxx index 30d51d5a9..c75ff4750 100644 --- a/src/Fl_Pixmap.cxx +++ b/src/Fl_Pixmap.cxx @@ -355,7 +355,7 @@ Fl_Image *Fl_Pixmap::copy(int W, int H) { sprintf(new_info, "%d %d %d %d", W, H, ncolors, chars_per_pixel); - // Figure out Bresenheim step/modulus values... + // Figure out Bresenham step/modulus values... xmod = w() % W; xstep = (w() / W) * chars_per_pixel; ymod = h() % H;