📄 diovpln.h
字号:
/* * * Copyright (C) 1996-2005, OFFIS * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND OFFIS MAKES NO WARRANTY * REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY OR * FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES OR * ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY AND * PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Module: dcmimgle * * Author: Joerg Riesmeier * * Purpose: DicomOverlayPlane (Header) - Multiframe Overlays UNTESTED ! * * Last Update: $Author: meichel $ * Update Date: $Date: 2005/12/08 16:48:03 $ * CVS/RCS Revision: $Revision: 1.26 $ * Status: $State: Exp $ * * CVS/RCS Log at end of file * */#ifndef DIOVPLN_H#define DIOVPLN_H#include "dcmtk/config/osconfig.h"#include "dcmtk/dcmdata/dctypes.h"#include "dcmtk/ofstd/ofstring.h"#include "dcmtk/ofstd/ofstream.h"#include "dcmtk/ofstd/ofcast.h"#include "dcmtk/dcmimgle/diutils.h"#define INCLUDE_CSTDDEF#include "dcmtk/ofstd/ofstdinc.h"/*------------------------* * forward declarations * *------------------------*/class DcmOverlayData;class DcmLongString;class DiDocument;/*---------------------* * class declaration * *---------------------*//** Class to handle a single overlay plane */class DiOverlayPlane{ public: /** constructor * ** @param docu pointer to dataset (encapsulated) * @param group group number of the overlay plane * @param alloc value for bits allocated of the surrounding image */ DiOverlayPlane(const DiDocument *docu, const unsigned int group, Uint16 alloc); /** constructor, additional * ** @param group group number of the overlay plane * @param left_pos x-coordinate of the plane origin * @param top_pos y-coordinate of the plane origin * @param columns width of the overlay plane * @param rows height of the overlay plane * @param data element containing the plane data * @param label element containing the plane label * @param description element containing the plane description * @param mode overlay plane mode */ DiOverlayPlane(const unsigned int group, const Sint16 left_pos, const Sint16 top_pos, const Uint16 columns, const Uint16 rows, const DcmOverlayData &data, const DcmLongString &label, const DcmLongString &description, const EM_Overlay mode); /** constructor, copy * ** @param plane reference overlay plane to be copied * @param bit position of the plane bit * @param data pointer to buffer for plane data * @param temp temporary buffer used to extract plane information * @param width width of the array where the plane is stored * @param height height of the array where the plane is stored * @param columns width of the overlay plane * @param rows height of the overlay plane */ DiOverlayPlane(DiOverlayPlane *plane, const unsigned int bit, Uint16 *data, Uint16 *temp, const Uint16 width, const Uint16 height, const Uint16 columns, const Uint16 rows); /** destructor */ ~DiOverlayPlane(); /** get x-coordinate of overlay plane origin * ** @param left_pos offset to be subtracted from the actual value (optional) * ** @return x-coordinate of overlay plane origin */ inline Sint16 getLeft(const Sint32 left_pos = 0) const { return OFstatic_cast(Sint16, OFstatic_cast(Sint32, Left) - left_pos); } /** get y-coordinate of overlay plane origin * ** @param top_pos offset to be subtracted from the actual value (optional) * ** @return y-coordinate of overlay plane origin */ inline Sint16 getTop(const Sint32 top_pos = 0) const { return OFstatic_cast(Sint16, OFstatic_cast(Sint32, Top) - top_pos); } /** get width of overlay plane * ** @return width of overlay plane */ inline Uint16 getWidth() const { return Width; } /** get height of overlay plane * ** @return height of overlay plane */ inline Uint16 getHeight() const { return Height; } /** get right border of overlay plane origin * ** @param left_pos offset to be subtracted from the actual value (optional). * ** @return right border of overlay plane origin. Negative values are set to 0. */ inline Uint16 getRight(const Sint32 left_pos = 0) const { return (OFstatic_cast(Sint32, Left) + OFstatic_cast(Sint32, Width) - left_pos > 0) ? OFstatic_cast(Uint16, OFstatic_cast(Sint32, Left) + OFstatic_cast(Sint32, Width) - left_pos) : 0; } /** get bottom border of overlay plane origin * ** @param top_pos offset to be subtracted from the actual value (optional). * ** @return bottom border of overlay plane origin. Negative values are set to 0. */ inline Uint16 getBottom(const Sint32 top_pos = 0) const { return (OFstatic_cast(Sint32, Top) + OFstatic_cast(Sint32, Height) - top_pos > 0) ? OFstatic_cast(Uint16, OFstatic_cast(Sint32, Top) + OFstatic_cast(Sint32, Height) - top_pos) : 0; } /** check whether overlay plane is valid * ** @return true if plane is valid, false otherwise */ inline int isValid() const { return Valid; } /** check whether overlay plane is visible * ** @return true if plane is visible, false otherwise */ inline int isVisible() const { return Visible; } /** make overlay plane visible */ inline void show() { Visible = 1; } /** make overlay plane invisible */ inline void hide() { Visible = 0; } /** move overlay plane to a new place * ** @param left_pos x-coordinate of the new plane origin (maybe negative) * @param top_pos y-coordinate of the new plane origin (maybe negative) */ inline void place(const signed int left_pos, const signed int top_pos) { Left = left_pos; Top = top_pos; } /** set scaling factor in x- and y-direction * ** @param xfactor scaling factor in x-direction * @param yfactor scaling factor in y-direction */ void setScaling(const double xfactor, const double yfactor); /** set flipping * ** @param horz flip horizontally if true * @param vert flip vertically if true * @param columns width of surrounding image (incl. origin offset) * @param rows height of surrounding image (incl. origin offset) */ void setFlipping(const int horz, const int vert, const signed long columns, const signed long rows); /** set rotation * ** @param degree angle by which the plane should be rotated * @param left_pos x-coordinate of the origin for all overlay planes * @param top_pos y-coordinate of the origin for all overlay planes * @param columns width of surrounding image (already rotated) * @param rows height of surrounding image (already rotated) */ void setRotation(const int degree, const signed long left_pos, const signed long top_pos, const Uint16 columns, const Uint16 rows); /** make overlay plane visible and set parameters * ** @param fore foreground color of the plane (in percent: 0.0-1.0) * @param thresh threshold value for 'threshold replace' (0.0-1.0) * @param mode new overlay plane mode (EMO_Default for stored mode) */ void show(const double fore, const double thresh, const EM_Overlay mode); /** make overlay plane visible and set p-value. * Only applicable for bitmap shutters. * ** @param pvalue p-value to be used for the overlay plane (0..65535) * ** @return status, true if successful, false otherwise */ int show(const Uint16 pvalue); /** get number of frames * ** @return number of frames */ inline unsigned long getNumberOfFrames() const { return NumberOfFrames; } /** get foreground color of the plane * ** @return foreground color (in percent: 0.0-1.0) */ inline double getForeground() const { return Foreground; } /** get threshold value of the plane * ** @return threshold value (in percent: 0.0-1.0) */ inline double getThreshold() const { return Threshold; } /** get p-value of the plane. * Only valid for bitmap shutters. * ** @return p-value (0..65535) */ inline Uint16 getPValue() const { return PValue; } /** get overlay plane mode * ** @return overlay plane mode */ inline EM_Overlay getMode() const { return Mode; } /** check whether overlay plane is embedded in the pixel data * ** @return true if plane is embedded, false otherwise
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -