101 lines
2.2 KiB
C
101 lines
2.2 KiB
C
|
/*
|
||
|
*
|
||
|
* Copyright (C) 2002-2011, OFFIS e.V.
|
||
|
* All rights reserved. See COPYRIGHT file for details.
|
||
|
*
|
||
|
* This software and supporting documentation were developed by
|
||
|
*
|
||
|
* OFFIS e.V.
|
||
|
* R&D Division Health
|
||
|
* Escherweg 2
|
||
|
* D-26121 Oldenburg, Germany
|
||
|
*
|
||
|
*
|
||
|
* Module: dcmimage
|
||
|
*
|
||
|
* Author: Marco Eichelberg
|
||
|
*
|
||
|
* Purpose: class DcmQuantIdent
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
|
||
|
#ifndef DIQTID_H
|
||
|
#define DIQTID_H
|
||
|
|
||
|
|
||
|
#include "dcmtk/config/osconfig.h"
|
||
|
|
||
|
|
||
|
class DcmQuantPixel;
|
||
|
|
||
|
|
||
|
/** pseudo error diffusion class implementing an identity transformation.
|
||
|
* This class implements a public API mostly identical to that
|
||
|
* of class DcmQuantFloydSteinberg.
|
||
|
* Since several methods of the error diffusion class are called for each
|
||
|
* single image pixel during conversion of a color image to palette color,
|
||
|
* we do not use virtual methods and a common abstract base class here.
|
||
|
* Instead we implement all methods inline, and use a template to select
|
||
|
* the appropriate class at compile time. With a decent optimizer this
|
||
|
* reduces the overhead for using this class to zero.
|
||
|
*/
|
||
|
class DCMTK_DCMIMAGE_EXPORT DcmQuantIdent
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
/// constructor
|
||
|
DcmQuantIdent(unsigned long cols)
|
||
|
: columns(cols)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
/// destructor
|
||
|
~DcmQuantIdent()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
/// dummy method needed for API compatibility with DcmQuantFloydSteinberg
|
||
|
inline void adjust(DcmQuantPixel&, long, long)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
/// dummy method needed for API compatibility with DcmQuantFloydSteinberg
|
||
|
inline void propagate(const DcmQuantPixel&, const DcmQuantPixel&, long)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
/** starts a new row. The initial and last column of the current row are determined.
|
||
|
* @param col initial column for the current row returned in this parameter
|
||
|
* @param limitcol limit column (one past the last valid column) for the
|
||
|
* current row returned in this parameter.
|
||
|
*/
|
||
|
inline void startRow(long& col, long& limitcol)
|
||
|
{
|
||
|
col = 0;
|
||
|
limitcol = columns;
|
||
|
}
|
||
|
|
||
|
/// dummy method needed for API compatibility with DcmQuantFloydSteinberg
|
||
|
inline void finishRow()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
/** increases the column number
|
||
|
* @param col column number
|
||
|
*/
|
||
|
inline void nextCol(long& col) const
|
||
|
{
|
||
|
++col;
|
||
|
}
|
||
|
|
||
|
private:
|
||
|
|
||
|
/// number of columns in image
|
||
|
unsigned long columns;
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif
|