00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef __DVPSDA_H__
00035 #define __DVPSDA_H__
00036
00037 #include "dcmtk/config/osconfig.h"
00038 #include "dcmtk/dcmdata/dctk.h"
00039 #include "dcmtk/dcmpstat/dvpsril.h"
00040 #include "dcmtk/dcmpstat/dvpstyp.h"
00041
00042 class DVPSReferencedSeries_PList;
00043
00047 class DVPSDisplayedArea
00048 {
00049 public:
00051 DVPSDisplayedArea();
00052
00054 DVPSDisplayedArea(const DVPSDisplayedArea& copy);
00055
00060 DVPSDisplayedArea *clone() { return new DVPSDisplayedArea(*this); }
00061
00063 virtual ~DVPSDisplayedArea();
00064
00074 OFCondition read(DcmItem &dset);
00075
00082 OFCondition write(DcmItem &dset);
00083
00089 OFBool isApplicable(const char *instanceUID, unsigned long frame);
00090
00097 OFBool matchesApplicability(const char *instanceUID, unsigned long frame, DVPSObjectApplicability applicability);
00098
00102 DVPSPresentationSizeMode getPresentationSizeMode();
00103
00109 double getPresentationPixelAspectRatio();
00110
00118 void getDisplayedArea(Sint32& tlhcX, Sint32& tlhcY, Sint32& brhcX, Sint32& brhcY);
00119
00125 OFCondition getPresentationPixelSpacing(double& x, double& y);
00126
00131 OFCondition getPresentationPixelMagnificationRatio(double& magnification);
00132
00143 OFCondition addImageReference(
00144 const char *sopclassUID,
00145 const char *instanceUID,
00146 unsigned long frame,
00147 DVPSObjectApplicability applicability);
00148
00161 void removeImageReference(
00162 DVPSReferencedSeries_PList& allReferences,
00163 const char *instanceUID,
00164 unsigned long frame,
00165 unsigned long numberOfFrames,
00166 DVPSObjectApplicability applicability);
00167
00170 void clearImageReferences() { referencedImageList.clear(); }
00171
00175 OFBool imageReferencesEmpty() { if (referencedImageList.size()==0) return OFTrue; else return OFFalse; }
00176
00181 OFBool canUseTrueSize();
00182
00189 OFCondition setDisplayedAreaPixelSpacing(double spacingX, double spacingY);
00190
00196 OFCondition setDisplayedAreaPixelSpacing(const char *spacing);
00197
00205 OFCondition setDisplayedAreaPixelAspectRatio(double ratio);
00206
00212 OFCondition setDisplayedAreaPixelAspectRatio(const char *ratio);
00213
00224 OFCondition setDisplayedArea(
00225 DVPSPresentationSizeMode sizeMode,
00226 Sint32 tlhcX, Sint32 tlhcY,
00227 Sint32 brhcX, Sint32 brhcY,
00228 double magnification=1.0);
00229
00235 void setLog(OFConsole *stream, OFBool verbMode, OFBool dbgMode);
00236
00244 void rotateAndFlip(
00245 DVPSRotationType rotationFrom,
00246 OFBool isFlippedFrom,
00247 DVPSRotationType rotationTo,
00248 OFBool isFlippedTo);
00249
00250 private:
00253 DVPSDisplayedArea& operator=(const DVPSDisplayedArea& source);
00254
00256 void switchHorizontalCorners();
00257
00259 void switchVerticalCorners();
00260
00267 void rotateAndFlipFromOrTo(DVPSRotationType rotation, OFBool isFlipped);
00268
00270 DVPSReferencedImage_PList referencedImageList;
00272 DcmSignedLong displayedAreaTopLeftHandCorner;
00274 DcmSignedLong displayedAreaBottomRightHandCorner;
00276 DcmCodeString presentationSizeMode;
00278 DcmDecimalString presentationPixelSpacing;
00280 DcmIntegerString presentationPixelAspectRatio;
00282 DcmFloatingPointSingle presentationPixelMagnificationRatio;
00283
00286 OFConsole *logstream;
00287
00290 OFBool verboseMode;
00291
00294 OFBool debugMode;
00295
00296 };
00297
00298 #endif
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325
00326
00327