about summary refs log tree commit diff
path: root/generator
diff options
context:
space:
mode:
authorgiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2018-05-17 03:49:14 +0000
committergiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2018-05-17 03:49:14 +0000
commit6cfb2c211b2f70f58191a7cf65904a40653e8c3a (patch)
treee695789c0e65be3e64e3d3284689ec2175ddfe95 /generator
parent2586375176ead0dc29e5e9e151b3dae01afca8f4 (diff)
downloadnetpbm-mirror-6cfb2c211b2f70f58191a7cf65904a40653e8c3a.tar.gz
netpbm-mirror-6cfb2c211b2f70f58191a7cf65904a40653e8c3a.tar.xz
netpbm-mirror-6cfb2c211b2f70f58191a7cf65904a40653e8c3a.zip
Fix bug in previous commit
git-svn-id: http://svn.code.sf.net/p/netpbm/code/trunk@3255 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'generator')
-rw-r--r--generator/pgmramp.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/generator/pgmramp.c b/generator/pgmramp.c
index 92bba142..db32b9f0 100644
--- a/generator/pgmramp.c
+++ b/generator/pgmramp.c
@@ -111,12 +111,23 @@ parseCommandLine(int argc, char ** argv,
 
 
 
+static int
+diffu(unsigned int const subtrahend,
+      unsigned int const subtractor) {
+
+    return (int)subtrahend - (int)subtractor;
+
+    /* (Not the conventional terminology, but better) */
+}
+
+
+
 int
 main(int argc, char *argv[]) {
 
     struct cmdlineInfo cmdline;
     gray *grayrow;
-    int rowso2, colso2;
+    unsigned int rowso2, colso2;
     unsigned int row;
 
     pgm_init( &argc, argv );
@@ -149,15 +160,15 @@ main(int argc, char *argv[]) {
                         MAX((float) cmdline.cols + cmdline.rows-2, 1);
                 break;
             case RT_RECT: {
-                float const r = fabs((float)(rowso2 - row)) / rowso2;
-                float const c = fabs((float)(colso2 - col)) / colso2;
+                float const r = fabs((float)diffu(rowso2, row)) / rowso2;
+                float const c = fabs((float)diffu(colso2, col)) / colso2;
                 grayrow[col] =
                     cmdline.maxval - (r + c) / 2.0 * cmdline.maxval;
             } break;
 
             case RT_ELLIP: {
-                float const r = fabs((float)(rowso2 - row)) / rowso2;
-                float const c = fabs((float)(colso2 - col)) / colso2;
+                float const r = fabs((float)diffu(rowso2, row)) / rowso2;
+                float const c = fabs((float)diffu(colso2, col)) / colso2;
                 float const v = MAX(0.0f, MIN(1.0f, SQR(r) + SQR(c)));
 
                 grayrow[col] = cmdline.maxval - v * cmdline.maxval;