From 59aa9b25d6fe7173719751bf7cdce9fd4b2a4044 Mon Sep 17 00:00:00 2001 From: Albrecht Schlosser Date: Wed, 2 Mar 2016 15:38:18 +0000 Subject: [PATCH] Enable negative 'd' and 'ld' arguments in fl_draw_image() test. This commit defines additional preprocessor macros to enable testing negative d and ld arguments of fl_draw_image(). Documentation (test scenario) has also been improved. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@11269 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- test/unittest_images.cxx | 72 +++++++++++++++++++++++++++++----------- 1 file changed, 53 insertions(+), 19 deletions(-) diff --git a/test/unittest_images.cxx b/test/unittest_images.cxx index 0df74b10a..43e21b6f1 100644 --- a/test/unittest_images.cxx +++ b/test/unittest_images.cxx @@ -3,7 +3,7 @@ // // Unit tests for the Fast Light Tool Kit (FLTK). // -// Copyright 1998-2011 by Bill Spitzak and others. +// Copyright 1998-2016 by Bill Spitzak and others. // // This library is free software. Distribution and use rights are outlined in // the file "COPYING" which should have been included with this file. If this @@ -27,20 +27,36 @@ //------- test the image drawing capabilities of this implementation ---------- // -// Some parameters for fine tuning for developers - their -// default values ought to be: CB=1, DX=0, LX=0, IMG=1 -#define CB (1) // 1 to show the checker board background for alpha images, 0 otherwise -#define DX (0) // additional (undefined (0)) pixels per line, must be >= 0 - // ignored (irrelevant), if LX == 0 (see below) -#define LX (0) // 0 for default: ld() = 0, i.e. ld() defaults (internally) to w()*d() - // +1: ld() = (w() + DX) * d() - // -1 to flip image vertically: ld() = - ((w() + DX) * d()) -#define IMG (1) // 1 to use Fl_RGB_Image for drawing images, - // 0 to use fl_draw_image() instead. - // Note: as of April 2011, only 1 (Fl_RGB_Image) works correctly with alpha - // channel, 0 (fl_draw_image()) ignores the alpha channel (FLTK 1.3.0). - // There are plans to support alpha in fl_draw_image() in FLTK 1.3.x, - // but not in FLTK 1.1.x . +// Parameters for fine tuning for developers. +// Default values: CB=1, DX=0, IMG=1, LX=0, FLIPH=0 + +#define CB (1) // 1 to show the checker board background for alpha images, + // 0 otherwise +#define DX (0) // additional (undefined (0)) pixels per line, must be >= 0 + // ignored (irrelevant), if LX == 0 (see below) +#define IMG (1) // 1 to use Fl_RGB_Image for drawing images with transparency, + // 0 to use fl_draw_image() instead. + // Note: as of Feb 2016, only 1 (Fl_RGB_Image) works with + // alpha channel, 0 (fl_draw_image()) ignores the alpha + // channel (FLTK 1.3.x). + // There are plans to support transparency (alpha channel) + // in fl_draw_image() in FLTK 1.4.0 and/or later. +#define LX (0) // 0 for default: ld() = 0, i.e. ld() defaults (internally) to w()*d() + // +1: ld() = (w() + DX) * d() + // -1 to flip image vertically: ld() = - ((w() + DX) * d()) +#define FLIPH (0) // 1 = Flip image horizontally (only if IMG == 0) + // 0 = Draw image normal, w/o horizontal flipping + +// ---------------------------------------------------------------------- +// Test scenario for fl_draw_image() with pos. and neg. d and ld args: +// ---------------------------------------------------------------------- +// (1) set IMG = 0: normal, but w/o transparency: no checker board +// (2) set LX = -1: images flipped vertically +// (3) set FLIPH = 1: images flipped vertically and horizontally +// (4) set LX = 0: images flipped horizontally +// (5) set FLIPH = 0, IMG = 1: back to default (with transparency) +// ---------------------------------------------------------------------- + class ImageTest : public Fl_Box { public: @@ -71,6 +87,12 @@ public: img_rgb += 127*(128+DX)*3; img_rgba += 127*(128+DX)*4; } + if (FLIPH && !IMG ) { + img_gray += 127; + img_gray_a += 127*2; + img_rgb += 127*3; + img_rgba += 127*4; + } i_g = new Fl_RGB_Image (img_gray ,128,128,1,LX*(128+DX)); i_ga = new Fl_RGB_Image (img_gray_a,128,128,2,LX*(128+DX)*2); i_rgb = new Fl_RGB_Image (img_rgb, 128,128,3,LX*(128+DX)*3); @@ -103,7 +125,10 @@ public: #if IMG i_rgb->draw(xx+1,yy+1); #else - fl_draw_image(img_rgb, xx+1, yy+1, 128, 128, 3, LX*((128+DX)*3)); + if (!FLIPH) + fl_draw_image(img_rgb, xx+1, yy+1, 128, 128, 3, LX*((128+DX)*3)); + else + fl_draw_image(img_rgb, xx+1, yy+1, 128, 128,-3, LX*((128+DX)*3)); #endif fl_draw("RGB", xx+134, yy+64); @@ -119,7 +144,10 @@ public: #if IMG i_rgba->draw(xx+1,yy+1); #else - fl_draw_image(img_rgba, xx+1, yy+1, 128, 128, 4, LX*((128+DX)*4)); + if (!FLIPH) + fl_draw_image(img_rgba, xx+1, yy+1, 128, 128, 4, LX*((128+DX)*4)); + else + fl_draw_image(img_rgba, xx+1, yy+1, 128, 128,-4, LX*((128+DX)*4)); #endif fl_color(FL_BLACK); fl_draw("RGBA", xx+134, yy+64); @@ -130,7 +158,10 @@ public: #if IMG i_g->draw(xx+1,yy+1); #else - fl_draw_image(img_gray, xx+1, yy+1, 128, 128, 1, LX*((128+DX)*1)); + if (!FLIPH) + fl_draw_image(img_gray, xx+1, yy+1, 128, 128, 1, LX*((128+DX)*1)); + else + fl_draw_image(img_gray, xx+1, yy+1, 128, 128,-1, LX*((128+DX)*1)); #endif fl_draw("Gray", xx+134, yy+64); @@ -146,7 +177,10 @@ public: #if IMG i_ga->draw(xx+1,yy+1); #else - fl_draw_image(img_gray_a, xx+1, yy+1, 128, 128, 2, LX*((128+DX)*2)); + if (!FLIPH) + fl_draw_image(img_gray_a, xx+1, yy+1, 128, 128, 2, LX*((128+DX)*2)); + else + fl_draw_image(img_gray_a, xx+1, yy+1, 128, 128,-2, LX*((128+DX)*2)); #endif fl_color(FL_BLACK); fl_draw("Gray+Alpha", xx+134, yy+64); }