Public Member Functions | |
DcmQuantFloydSteinberg () | |
constructor | |
~DcmQuantFloydSteinberg () | |
destructor | |
OFCondition | initialize (unsigned long cols) |
initializes the Floyd-Steinberg error vectors for an image with the given number of columns. | |
void | adjust (DcmQuantPixel &px, long col, long maxval) |
uses the Floyd-Steinberg error vectors to adjust the color of the current image pixel. | |
void | propagate (const DcmQuantPixel &px, const DcmQuantPixel &mapped, long col) |
propagates the Floyd-Steinberg error terms for one pixel. | |
void | startRow (long &col, long &limitcol) |
starts error diffusion for a new row. | |
void | finishRow () |
finishes error diffusion for one image row. | |
void | nextCol (long &col) const |
increases or decreases the column number depending on the direction flag. | |
Private Member Functions | |
void | cleanup () |
frees all memory allocated by the error vectors | |
DcmQuantFloydSteinberg (const DcmQuantFloydSteinberg &src) | |
private undefined copy constructor | |
DcmQuantFloydSteinberg & | operator= (const DcmQuantFloydSteinberg &src) |
private undefined copy assignment operator | |
Private Attributes | |
long * | thisrerr |
current red error vector. Points to an array of (columns + 2) entries. | |
long * | nextrerr |
red error vector for next row. Points to an array of (columns + 2) entries. | |
long * | thisgerr |
current green error vector. Points to an array of (columns + 2) entries. | |
long * | nextgerr |
green error vector for next row. Points to an array of (columns + 2) entries. | |
long * | thisberr |
current blue error vector. Points to an array of (columns + 2) entries. | |
long * | nextberr |
blue error vector for next row. Points to an array of (columns + 2) entries. | |
long * | temperr |
temporary pointer used for swapping error vectors | |
int | fs_direction |
boolean flag indicating in which direction (left to right/right to left) the FS distribution should be done. | |
unsigned long | columns |
number of columns in image |
It is used during the color quantization of an image.
Definition at line 48 of file diqtfs.h.
OFCondition DcmQuantFloydSteinberg::initialize | ( | unsigned long | cols | ) |
initializes the Floyd-Steinberg error vectors for an image with the given number of columns.
cols | number of columns in image |
void DcmQuantFloydSteinberg::adjust | ( | DcmQuantPixel & | px, | |
long | col, | |||
long | maxval | |||
) | [inline] |
uses the Floyd-Steinberg error vectors to adjust the color of the current image pixel.
px | the original image pixel is passed in this parameter. Upon return, the pixel value contains the new value after error diffusion. | |
col | column in which the current pixel is located, must be [0..columns-1] | |
maxval | maximum value for each color component. |
Definition at line 71 of file diqtfs.h.
References DcmQuantPixel::assign(), DcmQuantPixel::getBlue(), DcmQuantPixel::getGreen(), DcmQuantPixel::getRed(), thisberr, thisgerr, and thisrerr.
void DcmQuantFloydSteinberg::propagate | ( | const DcmQuantPixel & | px, | |
const DcmQuantPixel & | mapped, | |||
long | col | |||
) | [inline] |
propagates the Floyd-Steinberg error terms for one pixel.
px | color value the current image pixel should have (after adjustment) | |
mapped | color value (selected from the color LUT) the current image pixel really uses | |
col | column in which the current pixel is located, must be [0..columns-1] |
Definition at line 90 of file diqtfs.h.
References fs_direction, DcmQuantPixel::getBlue(), DcmQuantPixel::getGreen(), DcmQuantPixel::getRed(), nextberr, nextgerr, nextrerr, thisberr, thisgerr, and thisrerr.
void DcmQuantFloydSteinberg::startRow | ( | long & | col, | |
long & | limitcol | |||
) | [inline] |
starts error diffusion for a new row.
The error vectors for the next image row are initialized to zero. The initial and last column of the current row are determined
col | initial column for the current row returned in this parameter | |
limitcol | limit column (one past the last valid column) for the current row returned in this parameter. May become negative. |
Definition at line 140 of file diqtfs.h.
References columns, fs_direction, nextberr, nextgerr, and nextrerr.
void DcmQuantFloydSteinberg::finishRow | ( | ) | [inline] |
void DcmQuantFloydSteinberg::nextCol | ( | long & | col | ) | const [inline] |
increases or decreases the column number depending on the direction flag.
col | column number, may become negative |
Definition at line 179 of file diqtfs.h.
References fs_direction.
int DcmQuantFloydSteinberg::fs_direction [private] |
boolean flag indicating in which direction (left to right/right to left) the FS distribution should be done.
Flag is inverted after each row.
Definition at line 219 of file diqtfs.h.
Referenced by finishRow(), nextCol(), propagate(), and startRow().