228 lines
8.4 KiB
C
228 lines
8.4 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: DicomMonochrome1Image (Header)
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
|
||
|
#ifndef DIMO1IMG_H
|
||
|
#define DIMO1IMG_H
|
||
|
|
||
|
#include "dcmtk/config/osconfig.h"
|
||
|
|
||
|
#include "dcmtk/dcmimgle/dimoimg.h"
|
||
|
|
||
|
|
||
|
/*---------------------*
|
||
|
* class declaration *
|
||
|
*---------------------*/
|
||
|
|
||
|
/** Class for MONOCHROME1 images
|
||
|
*/
|
||
|
class DCMTK_DCMIMGLE_EXPORT DiMono1Image
|
||
|
: public DiMonoImage
|
||
|
{
|
||
|
|
||
|
public:
|
||
|
|
||
|
/** constructor
|
||
|
*
|
||
|
** @param docu pointer to dataset (encapsulated)
|
||
|
* @param status current image status
|
||
|
*/
|
||
|
DiMono1Image(const DiDocument *docu,
|
||
|
const EI_Status status);
|
||
|
|
||
|
/** destructor
|
||
|
*/
|
||
|
virtual ~DiMono1Image();
|
||
|
|
||
|
/** get color model of internal pixel representation.
|
||
|
* @return always returns EPI_Monochrome1
|
||
|
*/
|
||
|
virtual EP_Interpretation getInternalColorModel() const
|
||
|
{
|
||
|
return EPI_Monochrome1;
|
||
|
}
|
||
|
|
||
|
/** get pixel data with specified format.
|
||
|
* (memory is handled internally)
|
||
|
*
|
||
|
** @param frame number of frame to be rendered
|
||
|
* @param bits number of bits for the output pixel data (depth)
|
||
|
* @param planar flags, whether the output data (for multi-planar images) should be planar or not
|
||
|
*
|
||
|
** @return untyped pointer to the pixel data if successful, NULL otherwise
|
||
|
*/
|
||
|
virtual const void *getOutputData(const unsigned long frame,
|
||
|
const int bits,
|
||
|
const int planar = 0);
|
||
|
|
||
|
/** get pixel data with specified format.
|
||
|
* (memory is handled externally)
|
||
|
*
|
||
|
** @param buffer untyped pointer to the externally allocated memory buffer
|
||
|
* @param size size of the memory buffer in bytes (will be checked)
|
||
|
* @param frame number of frame to be rendered
|
||
|
* @param bits number of bits for the output pixel data (depth)
|
||
|
* @param planar flags, whether the output data (for multi-planar images) should be planar or not
|
||
|
*
|
||
|
** @return status, true if successful, false otherwise
|
||
|
*/
|
||
|
virtual int getOutputData(void *buffer,
|
||
|
const unsigned long size,
|
||
|
const unsigned long frame,
|
||
|
const int bits,
|
||
|
const int planar = 0);
|
||
|
|
||
|
/** create copy of current image object
|
||
|
*
|
||
|
** @param fstart first frame to be processed
|
||
|
* @param fcount number of frames
|
||
|
*
|
||
|
** @return pointer to new DicomImage object (NULL if an error occurred)
|
||
|
*/
|
||
|
DiImage *createImage(const unsigned long fstart,
|
||
|
const unsigned long fcount) const;
|
||
|
|
||
|
/** create scaled copy of specified (clipping) area of the current image object.
|
||
|
*
|
||
|
** @param left_pos x coordinate of top left corner of area to be scaled
|
||
|
* (referring to image origin, negative values create a border around the image)
|
||
|
* @param top_pos y coordinate of top left corner of area to be scaled
|
||
|
* @param clip_width width of area to be scaled
|
||
|
* @param clip_height height of area to be scaled
|
||
|
* @param scale_width width of scaled image (in pixels)
|
||
|
* @param scale_height height of scaled image (in pixels)
|
||
|
* @param interpolate specifies whether scaling algorithm should use interpolation (if necessary).
|
||
|
* default: no interpolation (0), preferred interpolation algorithm (if applicable):
|
||
|
* 1 = pbmplus algorithm, 2 = c't algorithm, 3 = bilinear magnification,
|
||
|
* 4 = bicubic magnification
|
||
|
* @param aspect specifies whether pixel aspect ratio should be taken into consideration
|
||
|
* (if true, width OR height should be 0, i.e. this component will be calculated
|
||
|
* automatically)
|
||
|
* @param pvalue P-value used for the border outside the image (0..65535)
|
||
|
*
|
||
|
** @return pointer to new DiImage object (NULL if an error occurred)
|
||
|
*/
|
||
|
DiImage *createScale(const signed long left_pos,
|
||
|
const signed long top_pos,
|
||
|
const unsigned long clip_width,
|
||
|
const unsigned long clip_height,
|
||
|
const unsigned long scale_width,
|
||
|
const unsigned long scale_height,
|
||
|
const int interpolate,
|
||
|
const int aspect,
|
||
|
const Uint16 pvalue) const;
|
||
|
|
||
|
/** create a flipped copy of the current image
|
||
|
*
|
||
|
** @param horz flip horizontally if true
|
||
|
* @param vert flip vertically if true
|
||
|
*
|
||
|
** @return pointer to new DiImage object (NULL if an error occurred)
|
||
|
*/
|
||
|
DiImage *createFlip(const int horz,
|
||
|
const int vert) const;
|
||
|
|
||
|
/** create a rotated copy of the current image.
|
||
|
*
|
||
|
** @param degree angle by which the image shall be rotated
|
||
|
*
|
||
|
** @return pointer to new DiImage object (NULL if an error occurred)
|
||
|
*/
|
||
|
DiImage *createRotate(const int degree) const;
|
||
|
|
||
|
/** create monochrome copy of the current image.
|
||
|
* Since the image is already monochrome the effect is the same as with createImage().
|
||
|
*
|
||
|
** @param dummy1 not used
|
||
|
* @param dummy2 not used
|
||
|
* @param dummy3 not used
|
||
|
*
|
||
|
** @return pointer to new DiImage object (NULL if an error occurred)
|
||
|
*/
|
||
|
DiImage *createMono(const double dummy1,
|
||
|
const double dummy2,
|
||
|
const double dummy3) const;
|
||
|
|
||
|
|
||
|
protected:
|
||
|
|
||
|
/** constructor, copy
|
||
|
*
|
||
|
** @param image pointer to reference image
|
||
|
* @param fstart first frame to be processed
|
||
|
* @param fcount number of frames
|
||
|
*/
|
||
|
DiMono1Image(const DiMonoImage *image,
|
||
|
const unsigned long fstart,
|
||
|
const unsigned long fcount);
|
||
|
|
||
|
/** constructor, scale/clip
|
||
|
*
|
||
|
** @param image pointer to reference image
|
||
|
* @param left_pos x coordinate of top left corner of area to be scaled
|
||
|
* (referring to image origin, negative values create a border around the image)
|
||
|
* @param top_pos y coordinate of top left corner of area to be scaled
|
||
|
* @param src_cols width of area to be scaled
|
||
|
* @param src_rows height of area to be scaled
|
||
|
* @param dest_cols width of scaled image (in pixels)
|
||
|
* @param dest_rows height of scaled image (in pixels)
|
||
|
* @param interpolate specifies whether scaling algorithm should use interpolation (if necessary).
|
||
|
* default: no interpolation (0), preferred interpolation algorithm (if applicable):
|
||
|
* 1 = pbmplus algorithm, 2 = c't algorithm, 3 = bilinear magnification,
|
||
|
* 4 = bicubic magnification
|
||
|
* @param aspect specifies whether pixel aspect ratio should be taken into consideration
|
||
|
* (if true, width OR height should be 0, i.e. this component will be calculated
|
||
|
* automatically)
|
||
|
* @param pvalue P-value used for the border outside the image (0..65535)
|
||
|
*/
|
||
|
DiMono1Image(const DiMonoImage *image,
|
||
|
const signed long left_pos,
|
||
|
const signed long top_pos,
|
||
|
const Uint16 src_cols,
|
||
|
const Uint16 src_rows,
|
||
|
const Uint16 dest_cols,
|
||
|
const Uint16 dest_rows,
|
||
|
const int interpolate = 0,
|
||
|
const int aspect = 0,
|
||
|
const Uint16 pvalue = 0);
|
||
|
|
||
|
/** constructor, flip
|
||
|
*
|
||
|
** @param image pointer to reference image
|
||
|
** @param horz flip horizontally if true
|
||
|
* @param vert flip vertically if true
|
||
|
*/
|
||
|
DiMono1Image(const DiMonoImage *image,
|
||
|
const int horz,
|
||
|
const int vert);
|
||
|
|
||
|
/** constructor, rotate
|
||
|
*
|
||
|
** @param image pointer to reference image
|
||
|
* @param degree angle by which the image shall be rotated
|
||
|
*/
|
||
|
DiMono1Image(const DiMonoImage *image,
|
||
|
const int degree);
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif
|