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 #ifndef DVPSDA_H
00031 #define DVPSDA_H
00032
00033 #include "dcmtk/config/osconfig.h"
00034 #include "dcmtk/dcmdata/dctk.h"
00035 #include "dcmtk/dcmpstat/dvpsril.h"
00036 #include "dcmtk/dcmpstat/dvpstyp.h"
00037
00038 class DVPSReferencedSeries_PList;
00039
00043 class DVPSDisplayedArea
00044 {
00045 public:
00047 DVPSDisplayedArea();
00048
00050 DVPSDisplayedArea(const DVPSDisplayedArea& copy);
00051
00056 DVPSDisplayedArea *clone() { return new DVPSDisplayedArea(*this); }
00057
00059 virtual ~DVPSDisplayedArea();
00060
00070 OFCondition read(DcmItem &dset);
00071
00078 OFCondition write(DcmItem &dset);
00079
00085 OFBool isApplicable(const char *instanceUID, unsigned long frame);
00086
00093 OFBool matchesApplicability(const char *instanceUID, unsigned long frame, DVPSObjectApplicability applicability);
00094
00098 DVPSPresentationSizeMode getPresentationSizeMode();
00099
00105 double getPresentationPixelAspectRatio();
00106
00114 void getDisplayedArea(Sint32& tlhcX, Sint32& tlhcY, Sint32& brhcX, Sint32& brhcY);
00115
00121 OFCondition getPresentationPixelSpacing(double& x, double& y);
00122
00127 OFCondition getPresentationPixelMagnificationRatio(double& magnification);
00128
00139 OFCondition addImageReference(
00140 const char *sopclassUID,
00141 const char *instanceUID,
00142 unsigned long frame,
00143 DVPSObjectApplicability applicability);
00144
00157 void removeImageReference(
00158 DVPSReferencedSeries_PList& allReferences,
00159 const char *instanceUID,
00160 unsigned long frame,
00161 unsigned long numberOfFrames,
00162 DVPSObjectApplicability applicability);
00163
00166 void clearImageReferences() { referencedImageList.clear(); }
00167
00171 OFBool imageReferencesEmpty() { if (referencedImageList.size()==0) return OFTrue; else return OFFalse; }
00172
00177 OFBool canUseTrueSize();
00178
00185 OFCondition setDisplayedAreaPixelSpacing(double spacingX, double spacingY);
00186
00192 OFCondition setDisplayedAreaPixelSpacing(const char *spacing);
00193
00201 OFCondition setDisplayedAreaPixelAspectRatio(double ratio);
00202
00208 OFCondition setDisplayedAreaPixelAspectRatio(const char *ratio);
00209
00220 OFCondition setDisplayedArea(
00221 DVPSPresentationSizeMode sizeMode,
00222 Sint32 tlhcX, Sint32 tlhcY,
00223 Sint32 brhcX, Sint32 brhcY,
00224 double magnification=1.0);
00225
00233 void rotateAndFlip(
00234 DVPSRotationType rotationFrom,
00235 OFBool isFlippedFrom,
00236 DVPSRotationType rotationTo,
00237 OFBool isFlippedTo);
00238
00239 private:
00242 DVPSDisplayedArea& operator=(const DVPSDisplayedArea& source);
00243
00245 void switchHorizontalCorners();
00246
00248 void switchVerticalCorners();
00249
00256 void rotateAndFlipFromOrTo(DVPSRotationType rotation, OFBool isFlipped);
00257
00259 DVPSReferencedImage_PList referencedImageList;
00261 DcmSignedLong displayedAreaTopLeftHandCorner;
00263 DcmSignedLong displayedAreaBottomRightHandCorner;
00265 DcmCodeString presentationSizeMode;
00267 DcmDecimalString presentationPixelSpacing;
00269 DcmIntegerString presentationPixelAspectRatio;
00271 DcmFloatingPointSingle presentationPixelMagnificationRatio;
00272
00273 };
00274
00275 #endif
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313