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 __DVPSSV_H__
00035 #define __DVPSSV_H__
00036
00037 #include "dcmtk/config/osconfig.h"
00038 #include "dcmtk/ofstd/ofstring.h"
00039 #include "dcmtk/dcmdata/dctk.h"
00040 #include "dcmtk/dcmpstat/dvpsril.h"
00041 #include "dcmtk/dcmpstat/dvpstyp.h"
00042
00043 class DVPSReferencedSeries_PList;
00044
00048 class DVPSSoftcopyVOI
00049 {
00050 public:
00052 DVPSSoftcopyVOI();
00053
00055 DVPSSoftcopyVOI(const DVPSSoftcopyVOI& copy);
00056
00061 DVPSSoftcopyVOI *clone() { return new DVPSSoftcopyVOI(*this); }
00062
00064 virtual ~DVPSSoftcopyVOI();
00065
00075 OFCondition read(DcmItem &dset);
00076
00083 OFCondition write(DcmItem &dset);
00084
00090 OFBool isApplicable(const char *instanceUID, unsigned long frame);
00091
00098 OFBool matchesApplicability(const char *instanceUID, unsigned long frame, DVPSObjectApplicability applicability);
00099
00110 OFCondition addImageReference(
00111 const char *sopclassUID,
00112 const char *instanceUID,
00113 unsigned long frame,
00114 DVPSObjectApplicability applicability);
00115
00130 void removeImageReference(
00131 DVPSReferencedSeries_PList& allReferences,
00132 const char *instanceUID,
00133 unsigned long frame,
00134 unsigned long numberOfFrames,
00135 DVPSObjectApplicability applicability);
00136
00139 void clearImageReferences() { referencedImageList.clear(); }
00140
00144 OFBool imageReferencesEmpty() { if (referencedImageList.size()==0) return OFTrue; else return OFFalse; }
00145
00149 OFBool haveLUT() { return useLUT; }
00150
00155 const char *getCurrentVOIDescription();
00156
00162 OFCondition getCurrentWindowWidth(double &w);
00163
00169 OFCondition getCurrentWindowCenter(double &c);
00170
00175 DcmUnsignedShort& getLUTDescriptor() { return voiLUTDescriptor; }
00176
00181 DcmUnsignedShort& getLUTData() { return voiLUTData; }
00182
00189 OFCondition setVOIWindow(double wCenter, double wWidth, const char *description=NULL);
00190
00198 OFCondition setVOILUT(
00199 DcmUnsignedShort& lutDescriptor,
00200 DcmUnsignedShort& lutData,
00201 DcmLongString& lutExplanation);
00202
00208 void setLog(OFConsole *stream, OFBool verbMode, OFBool dbgMode);
00209
00210 private:
00212 DVPSSoftcopyVOI& operator=(const DVPSSoftcopyVOI&);
00213
00214
00215
00216
00217
00218
00220 DVPSReferencedImage_PList referencedImageList;
00222 OFBool useLUT;
00224 DcmUnsignedShort voiLUTDescriptor;
00226 DcmLongString voiLUTExplanation;
00228 DcmUnsignedShort voiLUTData;
00230 DcmDecimalString windowCenter;
00232 DcmDecimalString windowWidth;
00234 DcmLongString windowCenterWidthExplanation;
00235
00238 OFConsole *logstream;
00239
00242 OFBool verboseMode;
00243
00246 OFBool debugMode;
00247
00248
00249 };
00250
00251 #endif
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275