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

168 lines
5.3 KiB
C++

/*
*
* Copyright (C) 1998-2012, 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: dcmpstat
*
* Author: Marco Eichelberg
*
* Purpose:
* classes: DVPSOverlay
*
*/
#ifndef DVPSOV_H
#define DVPSOV_H
#include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */
#include "dcmtk/dcmdata/dctk.h"
#include "dcmtk/dcmpstat/dpdefine.h"
class DicomImage;
/** an overlay contained in a presentation state (internal use only).
* This class manages the data structures comprising a single overlay
* (one instance of the Overlay Plane Module repeating elements)
* that is contained in a Presentation State object.
*/
class DCMTK_DCMPSTAT_EXPORT DVPSOverlay
{
public:
/// default constructor
DVPSOverlay();
/// copy constructor
DVPSOverlay(const DVPSOverlay& copy);
/** clone method.
* @return a pointer to a new DVPSOverlay object containing
* a copy of this object.
*/
DVPSOverlay *clone() const { return new DVPSOverlay(*this); }
/// destructor
virtual ~DVPSOverlay();
/** reads the specified overlay group from a DICOM dataset.
* The DICOM elements of the Overlay Plane module are copied
* from the dataset to this object. The OverlayData element, which is
* optional in the Overlay Plane Module but required for presentation states,
* must be present.
* The completeness of the overlay plane (presence of all required elements,
* value multiplicity) is checked.
* If this method returns an error code, the object is in undefined state afterwards.
* @param dset the DICOM dataset from which the overlay is to be read
* @param ovGroup the lower byte of the overlay group to be read
* @param asGroup the lower byte of the overlay group to be assigned to the
* overlay plane in the presentation state. Default: identical to ovGroup.
* @return EC_Normal if successful, an error code otherwise.
*/
OFCondition read(DcmItem &dset, Uint8 ovGroup, Uint8 asGroup=0xFF);
/** writes the overlay plane managed by this object to a DICOM dataset.
* Copies of the DICOM element managed by this object are inserted into
* the DICOM dataset.
* @param dset the DICOM dataset to which the overlay is written
* @return EC_Normal if successful, an error code otherwise.
*/
OFCondition write(DcmItem &dset);
/** get group number of overlay repeating group managed by this object.
* @return the lower byte of the overlay group
*/
Uint8 getOverlayGroup() const { return overlayGroup; }
/** sets the group number for the overlay repeating group managed
* by this object.
* @param newGroup lower byte of the repeating group number.
*/
void setOverlayGroup(Uint8 newGroup) { overlayGroup = newGroup; }
/** checks if the overlay is suitable as a bitmap shutter
* for an image with the given image size. Checks overlay type,
* origin and size.
* @param x image width in pixels
* @param y image height in pixels
* @return OFTrue if the specified overlay group matches the image size.
*/
OFBool isSuitableAsShutter(unsigned long x, unsigned long y);
/** gets the overlay label if present.
* If the label string is absent, this method returns NULL.
* @return overlay label
*/
const char *getOverlayLabel();
/** gets the overlay description if present.
* If the label string is absent, this method returns NULL.
* @return overlay description
*/
const char *getOverlayDescription();
/** checks whether this overlay is ROI type.
* @return OFTrue if overlay is ROI, OFFalse if overlay is Graphic.
*/
OFBool isROI();
/** retrieve origin and size values for this overlay
* @param originX horizontal origin returned in this parameter
* @param originY vertical origin returned in this parameter
* @param sizeX horizontal size returned in this parameter
* @param sizeY vertical size returned in this parameter
* @return EC_Normal if successful, an error code otherwise
*/
OFCondition getValues(
Sint16& originX,
Sint16& originY,
Uint16& sizeX,
Uint16& sizeY);
/// return reference to overlay data
DcmOverlayData& getData() { return overlayData; }
/// return reference to overlay label
DcmLongString& getLabel() { return overlayLabel; }
/// return reference to overlay description
DcmLongString& getDescription() { return overlayDescription; }
private:
/// private undefined assignment operator
DVPSOverlay& operator=(const DVPSOverlay&);
/// lower byte of the overlay repeating group managed by this object
Uint8 overlayGroup;
/// VR=US, VM=1, Type=1
DcmUnsignedShort overlayRows;
/// VR=US, VM=1, Type=1
DcmUnsignedShort overlayColumns;
/// VR=CS, VM=1, Type=1
DcmCodeString overlayType;
/// VR=SS, VM=2, Type=1
DcmSignedShort overlayOrigin;
/// VR=US, VM=1, Type=1
DcmUnsignedShort overlayBitsAllocated;
/// VR=US, VM=1, Type=1
DcmUnsignedShort overlayBitPosition;
/// VR=OW, VM=1, Type=1C
DcmOverlayData overlayData;
/// VR=LO, VM=1, Type=3
DcmLongString overlayDescription;
/// VR=LO, VM=1, Type=3
DcmLongString overlayLabel;
};
#endif