DYT/Tool/3rdParty_x64/include/dcmtk/dcmimgle/diinpx.h
2024-11-22 23:19:31 +08:00

209 lines
4.8 KiB
C++

/*
*
* Copyright (C) 1996-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: dcmimgle
*
* Author: Joerg Riesmeier
*
* Purpose: DicomInputPixel (Header)
*
*/
#ifndef DIINPX_H
#define DIINPX_H
#include "dcmtk/config/osconfig.h"
#include "dcmtk/dcmimgle/diutils.h"
/*---------------------*
* class declaration *
*---------------------*/
/** Abstract base class to convert DICOM pixel stream to intermediate representation
*/
class DCMTK_DCMIMGLE_EXPORT DiInputPixel
{
public:
/** constructor
*
** @param bits number of bits stored for each pixel (depth)
* @param first first frame to be processed
* @param number number of frames to be processed
* @param fsize number of pixels per frame (frame size)
*/
DiInputPixel(const unsigned int bits,
const unsigned long first,
const unsigned long number,
const unsigned long fsize);
/** destructor
*/
virtual ~DiInputPixel();
/** determine minimum and maximum pixel value (abstract)
*
** @return status, true if successful, false otherwise
*/
virtual int determineMinMax() = 0;
/** get pixel representation (abstract).
* Determine which integer type (size and signed/unsigned) is necessary to store
* the pixel data.
*
** @return pixel representation
*/
virtual EP_Representation getRepresentation() const = 0;
/** get pointer to input pixel data (abstract)
*
** @return pointer to input pixel data
*/
virtual const void *getData() const = 0;
/** get pointer to input pixel data (abstract)
*
** @return pointer to input pixel data
*/
virtual void *getDataPtr() = 0;
/** remove reference to (internally handled) pixel data (abstract)
*/
virtual void removeDataReference() = 0;
/** get minimum pixel value (abstract)
*
** @param idx specifies whether to return the global minimum (0) or
* the minimum of the selected pixel range (1, see PixelStart/Range)
*
** @return minimum pixel value
*/
virtual double getMinValue(const int idx) const = 0;
/** get maximum pixel value (abstract)
*
** @param idx specifies whether to return the global maximum (0) or
* the maximum of the selected pixel range (1, see PixelStart/Range)
*
** @return maximum pixel value
*/
virtual double getMaxValue(const int idx) const = 0;
/** get number of bits per pixel
*
** @return number of bits per pixel
*/
inline unsigned int getBits() const
{
return Bits;
}
/** get absolute minimum pixel value
*
** @return absolute minimum pixel value
*/
inline double getAbsMinimum() const
{
return AbsMinimum;
}
/** get absolute maximum pixel value
*
** @return absolute maximum pixel value
*/
inline double getAbsMaximum() const
{
return AbsMaximum;
}
/** get absolute pixel value range
*
** @return absolute pixel value range
*/
inline double getAbsMaxRange() const
{
return AbsMaximum - AbsMinimum + 1;
}
/** get number of pixels stored
*
** @return number of pixels stored
*/
inline unsigned long getCount() const
{
return Count;
}
/** get first pixel to be processed
*
** @return first pixel to be processed
*/
inline unsigned long getPixelStart() const
{
return PixelStart;
}
/** get number of pixels to be processed
*
** @return number of pixels to be processed
*/
inline unsigned long getPixelCount() const
{
return PixelCount;
}
/** get number of pixels computed from the image resolution
*
** @return number of pixels computed
*/
inline unsigned long getComputedCount() const
{
return ComputedCount;
}
protected:
/// number of pixels stored
unsigned long Count;
/// bits per pixel/sample
unsigned int Bits;
/// first frame to be processed
unsigned long FirstFrame;
/// number of frames to be processed
unsigned long NumberOfFrames;
/// number of pixels per frame
unsigned long FrameSize;
/// first pixel to be processed
unsigned long PixelStart;
/// number of pixels to be processed
unsigned long PixelCount;
/// number of pixels computed from the image resolution
unsigned long ComputedCount;
/// absolute minimum (possible) pixel value
double AbsMinimum;
/// absolute maximum (possible) pixel value
double AbsMaximum;
};
#endif