about summary refs log tree commit diff
path: root/editor/ppmspread.c
diff options
context:
space:
mode:
authorgiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2009-03-29 22:19:36 +0000
committergiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2009-03-29 22:19:36 +0000
commitac138b159f6a208dd964a8147cb39a2571092008 (patch)
tree5a4dfa10a5923670c9e160e96a29967f9aa76700 /editor/ppmspread.c
parent56fbd619bbac49a77ec0b48f06e6ed7bfb84468a (diff)
downloadnetpbm-mirror-ac138b159f6a208dd964a8147cb39a2571092008.tar.gz
netpbm-mirror-ac138b159f6a208dd964a8147cb39a2571092008.tar.xz
netpbm-mirror-ac138b159f6a208dd964a8147cb39a2571092008.zip
Release 10.46.00
git-svn-id: http://svn.code.sf.net/p/netpbm/code/advanced@869 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'editor/ppmspread.c')
-rw-r--r--editor/ppmspread.c117
1 files changed, 0 insertions, 117 deletions
diff --git a/editor/ppmspread.c b/editor/ppmspread.c
deleted file mode 100644
index 6753f4fe..00000000
--- a/editor/ppmspread.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/*********************************************************************/
-/* ppmspread -  randomly displace a PPM's pixels by a certain amount */
-/* Frank Neumann, October 1993                                       */
-/* V1.1 16.11.1993                                                   */
-/*                                                                   */
-/* version history:                                                  */
-/* V1.0 12.10.1993    first version                                  */
-/* V1.1 16.11.1993    Rewritten to be NetPBM.programming conforming  */
-/*********************************************************************/
-
-#include <string.h>
-
-#include "ppm.h"
-
-
-
-int
-main(int    argc,
-     char * argv[]) {
-
-    FILE * ifP;
-    int argn, rows, cols;
-    unsigned int row;
-    pixel ** destarray, ** srcarray;
-    pixel * pP;
-    pixel * pP2;
-    pixval maxval;
-    pixval r1, g1, b1;
-    int amount;
-    const char * const usage = "amount [ppmfile]\n        amount: # of pixels to displace a pixel by at most\n";
-
-    /* parse in 'default' parameters */
-    ppm_init(&argc, argv);
-
-    argn = 1;
-
-    /* parse in amount & seed */
-    if (argn == argc)
-        pm_usage(usage);
-    if (sscanf(argv[argn], "%d", &amount) != 1)
-        pm_usage(usage);
-    if (amount < 0)
-        pm_error("amount should be a positive number");
-    ++argn;
-
-    /* parse in filename (if present, stdin otherwise) */
-    if (argn != argc)
-    {
-        ifP = pm_openr(argv[argn]);
-        ++argn;
-    }
-    else
-        ifP = stdin;
-
-    if (argn != argc)
-        pm_usage(usage);
-
-    srcarray = ppm_readppm(ifP, &cols, &rows, &maxval);
-
-    destarray = ppm_allocarray(cols, rows);
-
-    /* clear out the buffer */
-    for (row = 0; row < rows; ++row)
-        memset(destarray[row], 0, cols * sizeof(pixel));
-
-    srand(pm_randseed());
-
-    /* start displacing pixels */
-    for (row = 0; row < rows; ++row) {
-        unsigned int col;
-        pP = &srcarray[row][0];
-
-        for (col = 0; col < cols; ++col) {
-            int const xdis = (rand() % (amount+1)) - ((amount+1) / 2);
-            int const ydis = (rand() % (amount+1)) - ((amount+1) / 2);
-
-            int const xnew = col + xdis;
-            int const ynew = row + ydis;
-
-            /* only set the displaced pixel if it's within the bounds
-               of the image
-            */
-            if (xnew >= 0 && xnew < cols && ynew >= 0 && ynew < rows) {
-                /* displacing a pixel is accomplished by swapping it
-                   with another pixel in its vicinity - so, first
-                   store other pixel's RGB
-                */
-                pP2 = &srcarray[ynew][xnew];
-                r1 = PPM_GETR(*pP2);
-                g1 = PPM_GETG(*pP2);
-                b1 = PPM_GETB(*pP2);
-                /* set second pixel to new value */
-                pP2 = &destarray[ynew][xnew];
-                PPM_ASSIGN(*pP2, PPM_GETR(*pP), PPM_GETG(*pP), PPM_GETB(*pP));
-                
-                /* now, set first pixel to (old) value of second */
-                pP2 = &destarray[row][col];
-                PPM_ASSIGN(*pP2, r1, g1, b1);
-            } else {
-                /* displaced pixel is out of bounds; leave the old
-                   pixel there
-                */
-                pP2 = &destarray[row][col];
-                PPM_ASSIGN(*pP2, PPM_GETR(*pP), PPM_GETG(*pP), PPM_GETB(*pP));
-            }
-            ++pP;
-        }
-    }
-
-    ppm_writeppm(stdout, destarray, cols, rows, maxval, 0);
-
-    pm_close(ifP);
-    ppm_freearray(srcarray, rows);
-    ppm_freearray(destarray, rows);
-
-    return 0;
-}