diff options
author | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2008-12-06 22:21:24 +0000 |
---|---|---|
committer | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2008-12-06 22:21:24 +0000 |
commit | 1fd3aa5b06c64d6a95fe3c1709bbac76261d22e3 (patch) | |
tree | 10f690fc593b395d1cac216bfcba6a3f18829e98 /converter/other/pgmtopbm.c | |
parent | 22b8da87c79b07200492c01ccd98dde8f6a8de2f (diff) | |
download | netpbm-mirror-1fd3aa5b06c64d6a95fe3c1709bbac76261d22e3.tar.gz netpbm-mirror-1fd3aa5b06c64d6a95fe3c1709bbac76261d22e3.tar.xz netpbm-mirror-1fd3aa5b06c64d6a95fe3c1709bbac76261d22e3.zip |
Consolidate two dithers.h into one
git-svn-id: http://svn.code.sf.net/p/netpbm/code/trunk@786 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'converter/other/pgmtopbm.c')
-rw-r--r-- | converter/other/pgmtopbm.c | 44 |
1 files changed, 41 insertions, 3 deletions
diff --git a/converter/other/pgmtopbm.c b/converter/other/pgmtopbm.c index 36b39017..34cc2c91 100644 --- a/converter/other/pgmtopbm.c +++ b/converter/other/pgmtopbm.c @@ -347,6 +347,10 @@ struct converter { +/*============================================================================= + Converter: fs +=============================================================================*/ + unsigned int const fs_scale = 1024; unsigned int const half_fs_scale = 512; @@ -469,6 +473,10 @@ createFsConverter(unsigned int const cols, +/*============================================================================= + Converter: thresh +=============================================================================*/ + struct threshState { gray threshval; }; @@ -522,16 +530,28 @@ createThreshConverter(unsigned int const cols, +/*============================================================================= + Converter: dither8 +=============================================================================*/ + +struct dither8State { + int dither8[16][16]; +}; + + + static void dither8ConvertRow(struct converter * const converterP, unsigned int const row, gray grayrow[], bit bitrow[]) { + struct dither8State * const stateP = converterP->stateP; + unsigned int col; for (col = 0; col < converterP->cols; ++col) - if (grayrow[col] > dither8[row % 16][col % 16]) + if (grayrow[col] > stateP->dither8[row % 16][col % 16]) bitrow[col] = PBM_WHITE; else bitrow[col] = PBM_BLACK; @@ -539,29 +559,47 @@ dither8ConvertRow(struct converter * const converterP, +static void +dither8Destroy(struct converter * const converterP) { + + struct dither8State * const stateP = converterP->stateP; + + free(stateP); +} + + + static struct converter createDither8Converter(unsigned int const cols, gray const maxval) { struct converter converter; + struct dither8State * stateP; unsigned int row; + MALLOCVAR_NOFAIL(stateP); + converter.cols = cols; converter.convertRow = &dither8ConvertRow; - converter.destroy = NULL; + converter.destroy = dither8Destroy; + converter.stateP = stateP; /* Scale dither matrix. */ for (row = 0; row < 16; ++row) { unsigned int col; for (col = 0; col < 16; ++col) - dither8[row][col] = dither8[row][col] * maxval / 256; + stateP->dither8[row][col] = dither8[row][col] * maxval / 256; } return converter; } +/*============================================================================= + Converter: cluster +=============================================================================*/ + struct clusterState { unsigned int radius; int ** clusterMatrix; |