diff options
author | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2013-09-28 22:24:33 +0000 |
---|---|---|
committer | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2013-09-28 22:24:33 +0000 |
commit | 2730bca5129bf0304d7860c49925f159e61473da (patch) | |
tree | bc10b0b5f2bb1968ea19b0ea912132d96adf6e75 /analyzer | |
parent | ee7ca90d04b4427ae7a9c940dbc2243f0746d04d (diff) | |
download | netpbm-mirror-2730bca5129bf0304d7860c49925f159e61473da.tar.gz netpbm-mirror-2730bca5129bf0304d7860c49925f159e61473da.tar.xz netpbm-mirror-2730bca5129bf0304d7860c49925f159e61473da.zip |
Promote Development to make Release 10.64.00
git-svn-id: http://svn.code.sf.net/p/netpbm/code/advanced@2006 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'analyzer')
-rw-r--r-- | analyzer/pamsharpness.c | 18 | ||||
-rw-r--r-- | analyzer/pamtilt.c | 2 | ||||
-rw-r--r-- | analyzer/ppmhist.c | 52 |
3 files changed, 57 insertions, 15 deletions
diff --git a/analyzer/pamsharpness.c b/analyzer/pamsharpness.c index 7a9acc6b..c5a97763 100644 --- a/analyzer/pamsharpness.c +++ b/analyzer/pamsharpness.c @@ -21,8 +21,9 @@ #include <math.h> #include "pm_c_util.h" -#include "pam.h" +#include "mallocvar.h" #include "shhopt.h" +#include "pam.h" struct cmdlineInfo { /* All the information the user supplied in the command line, @@ -35,8 +36,8 @@ struct cmdlineInfo { static void -parseCommandLine ( int argc, char ** argv, - struct cmdlineInfo *cmdlineP ) { +parseCommandLine(int argc, char ** argv, + struct cmdlineInfo *cmdlineP) { /*---------------------------------------------------------------------------- parse program command line described in Unix standard form by argc and argv. Return the information in the options as *cmdlineP. @@ -47,7 +48,7 @@ parseCommandLine ( int argc, char ** argv, Note that the strings we return are stored in the storage that was passed to us as the argv array. We also trash *argv. -----------------------------------------------------------------------------*/ - optEntry *option_def = malloc(100*sizeof(optEntry)); + optEntry * option_def; /* Instructions to pm_optParseOptions3 on how to parse our options. */ optStruct3 opt; @@ -56,6 +57,8 @@ parseCommandLine ( int argc, char ** argv, unsigned int contextSpec; + MALLOCARRAY_NOFAIL(option_def, 100); + option_def_index = 0; /* incremented by OPTENT3 */ OPTENT3(0, "context", OPT_UINT, &cmdlineP->context, &contextSpec, 0 ); @@ -80,6 +83,8 @@ parseCommandLine ( int argc, char ** argv, cmdlineP->inputFilespec = "-"; else cmdlineP->inputFilespec = argv[1]; + + free(option_def); } @@ -89,13 +94,13 @@ computeSharpness(struct pam * const inpamP, tuplen ** const tuplenarray, double * const sharpnessP) { - int row; + unsigned int row; double totsharp; totsharp = 0.0; for (row = 1; row < inpamP->height-1; ++row) { - int col; + unsigned int col; for (col = 1; col < inpamP->width-1; ++col) { int dy; for (dy = -1; dy <= 1; ++dy) { @@ -150,5 +155,6 @@ main(int argc, char **argv) { pnm_freepamarrayn(tuplenarray, &inpam); pm_close(ifP); + return 0; } diff --git a/analyzer/pamtilt.c b/analyzer/pamtilt.c index 8fa34791..e6a1b133 100644 --- a/analyzer/pamtilt.c +++ b/analyzer/pamtilt.c @@ -313,7 +313,7 @@ scoreAngle(const struct pam * const pamP, -----------------------------------------------------------------------------*/ float const radians = (float)angle/360 * 2 * M_PI; float const dy = hstep * tan(radians); - /* How much a line sinks due to the tilt when we move one sample + /* How much a line sinks because of the tilt when we move one sample ('hstep' columns of the image) to the right. */ if (fabs(dy * hsamples) > pamP->height) { diff --git a/analyzer/ppmhist.c b/analyzer/ppmhist.c index 78e6d82a..2f6c9348 100644 --- a/analyzer/ppmhist.c +++ b/analyzer/ppmhist.c @@ -101,24 +101,60 @@ parseCommandLine(int argc, const char ** argv, static int -countcompare(const void *ch1, const void *ch2) { - return ((colorhist_vector)ch2)->value - ((colorhist_vector)ch1)->value; +cmpUint(unsigned int const a, + unsigned int const b) { +/*---------------------------------------------------------------------------- + Return 1 if 'a' > 'b'; -1 if 'a' is < 'b'; 0 if 'a' == 'b'. + + I.e. what a libc qsort() comparison function returns. +-----------------------------------------------------------------------------*/ + return a > b ? 1 : a < b ? -1 : 0; } + +#ifndef LITERAL_FN_DEF_MATCH +static qsort_comparison_fn countcompare; +#endif + + static int -rgbcompare(const void * arg1, const void * arg2) { +countcompare(const void * const a, + const void * const b) { +/*---------------------------------------------------------------------------- + This is a 'qsort' collation function. +-----------------------------------------------------------------------------*/ + const struct colorhist_item * const histItem1P = a; + const struct colorhist_item * const histItem2P = b; - colorhist_vector const ch1 = (colorhist_vector) arg1; - colorhist_vector const ch2 = (colorhist_vector) arg2; + return cmpUint(histItem2P->value, histItem1P->value); +} + + + +#ifndef LITERAL_FN_DEF_MATCH +static qsort_comparison_fn rgbcompare; +#endif + +static int +rgbcompare(const void * const a, + const void * const b) { +/*---------------------------------------------------------------------------- + This is a 'qsort' collation function. +-----------------------------------------------------------------------------*/ + const struct colorhist_item * const histItem1P = a; + const struct colorhist_item * const histItem2P = b; int retval; - retval = (PPM_GETR(ch1->color) - PPM_GETR(ch2->color)); + retval = cmpUint(PPM_GETR(histItem1P->color), + PPM_GETR(histItem2P->color)); if (retval == 0) { - retval = (PPM_GETG(ch1->color) - PPM_GETG(ch2->color)); + retval = cmpUint(PPM_GETG(histItem1P->color), + PPM_GETG(histItem2P->color)); if (retval == 0) - retval = (PPM_GETB(ch1->color) - PPM_GETB(ch2->color)); + retval = cmpUint(PPM_GETB(histItem1P->color), + PPM_GETB(histItem2P->color)); } return retval; } |