dcmpstat/include/dcmtk/dcmpstat/dvpssv.h

00001 /*
00002  *
00003  *  Copyright (C) 1998-2010, OFFIS e.V.
00004  *  All rights reserved.  See COPYRIGHT file for details.
00005  *
00006  *  This software and supporting documentation were developed by
00007  *
00008  *    OFFIS e.V.
00009  *    R&D Division Health
00010  *    Escherweg 2
00011  *    D-26121 Oldenburg, Germany
00012  *
00013  *
00014  *  Module: dcmpstat
00015  *
00016  *  Author: Marco Eichelberg
00017  *
00018  *  Purpose:
00019  *    classes: DVPSSoftcopyVOI
00020  *
00021  *  Last Update:      $Author: joergr $
00022  *  Update Date:      $Date: 2010-10-14 13:16:36 $
00023  *  CVS/RCS Revision: $Revision: 1.10 $
00024  *  Status:           $State: Exp $
00025  *
00026  *  CVS/RCS Log at end of file
00027  *
00028  */
00029 
00030 #ifndef DVPSSV_H
00031 #define DVPSSV_H
00032 
00033 #include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
00034 #include "dcmtk/dcmdata/dcvrus.h"
00035 #include "dcmtk/dcmdata/dcvrds.h"
00036 #include "dcmtk/dcmdata/dcvrlo.h"
00037 #include "dcmtk/dcmpstat/dvpsril.h"     /* for DVPSReferencedImage_PList */
00038 #include "dcmtk/dcmpstat/dvpstyp.h"     /* for enum types */
00039 
00040 class DVPSReferencedSeries_PList;
00041 
00045 class DVPSSoftcopyVOI
00046 {
00047 public:
00049   DVPSSoftcopyVOI();
00050 
00052   DVPSSoftcopyVOI(const DVPSSoftcopyVOI& copy);
00053 
00058   DVPSSoftcopyVOI *clone() { return new DVPSSoftcopyVOI(*this); }
00059 
00061   virtual ~DVPSSoftcopyVOI();
00062 
00072   OFCondition read(DcmItem &dset);
00073 
00080   OFCondition write(DcmItem &dset);
00081 
00087   OFBool isApplicable(const char *instanceUID, unsigned long frame);
00088 
00095   OFBool matchesApplicability(const char *instanceUID, unsigned long frame, DVPSObjectApplicability applicability);
00096 
00107   OFCondition addImageReference(
00108     const char *sopclassUID,
00109     const char *instanceUID,
00110     unsigned long frame,
00111     DVPSObjectApplicability applicability);
00112 
00127   void removeImageReference(
00128     DVPSReferencedSeries_PList& allReferences,
00129     const char *instanceUID,
00130     unsigned long frame,
00131     unsigned long numberOfFrames,
00132     DVPSObjectApplicability applicability);
00133 
00136   void clearImageReferences() { referencedImageList.clear(); }
00137 
00141   OFBool imageReferencesEmpty() { if (referencedImageList.size()==0) return OFTrue; else return OFFalse; }
00142 
00146   OFBool haveLUT() { return useLUT; }
00147 
00152   const char *getCurrentVOIDescription();
00153 
00159   OFCondition getCurrentWindowWidth(double &w);
00160 
00166   OFCondition getCurrentWindowCenter(double &c);
00167 
00172   DcmUnsignedShort& getLUTDescriptor() { return voiLUTDescriptor; }
00173 
00178   DcmUnsignedShort& getLUTData() { return voiLUTData; }
00179 
00186   OFCondition setVOIWindow(double wCenter, double wWidth, const char *description=NULL);
00187 
00195   OFCondition setVOILUT(
00196     DcmUnsignedShort& lutDescriptor,
00197     DcmUnsignedShort& lutData,
00198     DcmLongString& lutExplanation);
00199 
00200 private:
00202   DVPSSoftcopyVOI& operator=(const DVPSSoftcopyVOI&);
00203 
00204   /* since the VOI LUT sequence in the Softcopy VOI LUT module must
00205    * not contain more than one item, we do not need to manage a list of
00206    * VOI LUT SQ items.
00207    */
00208 
00210   DVPSReferencedImage_PList referencedImageList;
00212   OFBool                   useLUT;
00214   DcmUnsignedShort         voiLUTDescriptor;
00216   DcmLongString            voiLUTExplanation;
00218   DcmUnsignedShort         voiLUTData;
00220   DcmDecimalString         windowCenter;
00222   DcmDecimalString         windowWidth;
00224   DcmLongString            windowCenterWidthExplanation;
00225 
00226 };
00227 
00228 #endif
00229 
00230 /*
00231  *  $Log: dvpssv.h,v $
00232  *  Revision 1.10  2010-10-14 13:16:36  joergr
00233  *  Updated copyright header. Added reference to COPYRIGHT file.
00234  *
00235  *  Revision 1.9  2010-10-07 14:31:36  joergr
00236  *  Removed leading underscore characters from preprocessor symbols (reserved).
00237  *
00238  *  Revision 1.8  2009-11-24 14:12:57  uli
00239  *  Switched to logging mechanism provided by the "new" oflog module.
00240  *
00241  *  Revision 1.7  2009-09-30 10:42:38  uli
00242  *  Make dcmpstat's include headers self-sufficient by including all
00243  *  needed headers directly and stop using dctk.h
00244  *
00245  *  Revision 1.6  2005-12-08 16:04:05  meichel
00246  *  Changed include path schema for all DCMTK header files
00247  *
00248  *  Revision 1.5  2001/09/26 15:36:16  meichel
00249  *  Adapted dcmpstat to class OFCondition
00250  *
00251  *  Revision 1.4  2001/06/01 15:50:22  meichel
00252  *  Updated copyright header
00253  *
00254  *  Revision 1.3  2000/06/02 16:00:52  meichel
00255  *  Adapted all dcmpstat classes to use OFConsole for log and error output
00256  *
00257  *  Revision 1.2  2000/03/08 16:28:57  meichel
00258  *  Updated copyright header.
00259  *
00260  *  Revision 1.1  1999/07/22 16:39:12  meichel
00261  *  Adapted dcmpstat data structures and API to supplement 33 letter ballot text.
00262  *
00263  *
00264  */


Generated on 6 Jan 2011 for OFFIS DCMTK Version 3.6.0 by Doxygen 1.5.1