DYT/Tool/3rdParty_x64/include/dcmtk/dcmimgle/dimoopx.h

158 lines
3.7 KiB
C
Raw Normal View History

2024-11-22 15:19:31 +00:00
/*
*
* 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: DicomMonoOutputPixel (Header)
*
*/
#ifndef DIMOOPX_H
#define DIMOOPX_H
#include "dcmtk/config/osconfig.h"
#include "dcmtk/dcmimgle/diutils.h"
#include "dcmtk/ofstd/ofstream.h"
/*------------------------*
* forward declarations *
*------------------------*/
class DiMonoPixel;
/*---------------------*
* class declaration *
*---------------------*/
/** Abstract base class to create monochrome output data
*/
class DCMTK_DCMIMGLE_EXPORT DiMonoOutputPixel
{
public:
/** constructor
*
** @param pixel pointer to intermediate pixel representation
* @param size number of pixel per frame
* @param frame frame to be rendered
* @param max maximum output value
*/
DiMonoOutputPixel(const DiMonoPixel *pixel,
const unsigned long size,
const unsigned long frame,
const unsigned long max);
/** destructor
*/
virtual ~DiMonoOutputPixel();
/** get integer representation (abstract)
*
** @return integer representation
*/
virtual EP_Representation getRepresentation() const = 0;
/** get pointer to output pixel data (abstract)
*
** @return pointer to pixel data
*/
virtual const void *getData() const = 0;
/** get pointer to output pixel data (abstract)
*
** @return pointer to pixel data
*/
virtual void *getDataPtr() = 0;
/** remove reference to (internally handled) pixel data (abstract)
*/
virtual void removeDataReference() = 0;
/** get size of one pixel / item in the pixel array (abstract)
*
** @return item size
*/
virtual size_t getItemSize() const = 0;
/** write pixel data of selected frame to PPM/ASCII file (abstract)
*
** @param stream open C++ output stream
*
** @return status, true if successful, false otherwise
*/
virtual int writePPM(STD_NAMESPACE ostream& stream) const = 0;
/** write pixel data of selected frame to PPM/ASCII file (abstract)
*
** @param stream open C file stream
*
** @return status, true if successful, false otherwise
*/
virtual int writePPM(FILE *stream) const = 0;
/** get number of pixel per frame
*
** @return number of pixel per frame
*/
inline unsigned long getCount() const
{
return FrameSize;
}
/** check whether specified pixel value is used in the image.
* Pixel array is examined when this method is called for the first time
* (just-in-time creation / create on demand of the supporting table).
*
** @param value pixel value to be checked
*
** @return true if value is used, false otherwise
*/
int isUnused(const unsigned long value);
protected:
/** examine which pixel values are actually used (abstract)
*/
virtual void determineUsedValues() = 0;
/// number of pixels per frame (intermediate representation)
/*const*/ unsigned long Count;
/// number of pixels per frame (memory buffer size)
const unsigned long FrameSize;
/// array of used pixel values
Uint8 *UsedValues;
/// maximum output value
const unsigned long MaxValue;
private:
// --- declarations to avoid compiler warnings
DiMonoOutputPixel(const DiMonoOutputPixel &);
DiMonoOutputPixel &operator=(const DiMonoOutputPixel &);
};
#endif