From e7b9e77ba5ab877eb5f8b56da7fe1bf7b0aac3aa Mon Sep 17 00:00:00 2001 From: Albrecht Schlosser Date: Tue, 9 Aug 2016 15:20:54 +0000 Subject: Fix typos, separate local variables of image scaling algorithms. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11869 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/Fl_Bitmap.cxx | 2 +- src/Fl_Image.cxx | 35 ++++++++++++++++++----------------- src/Fl_Pixmap.cxx | 2 +- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/Fl_Bitmap.cxx b/src/Fl_Bitmap.cxx index 4d637548a..c2f5e22c2 100644 --- a/src/Fl_Bitmap.cxx +++ b/src/Fl_Bitmap.cxx @@ -189,7 +189,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 c048d57c3..2fc389c86 100644 --- a/src/Fl_Image.cxx +++ b/src/Fl_Image.cxx @@ -63,7 +63,6 @@ void Fl_Image::draw(int XP, int YP, int, int, int, int) { draw_empty(XP, YP); } - /** The protected method draw_empty() draws a box with an X in it. It can be used to draw any image that lacks image @@ -324,31 +323,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 1b17aa9f4..68a70f50c 100644 --- a/src/Fl_Pixmap.cxx +++ b/src/Fl_Pixmap.cxx @@ -204,7 +204,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; -- cgit v1.2.3