dcmimgle/include/dcmtk/dcmimgle/dimoimg.h

00001 /*
00002  *
00003  *  Copyright (C) 1996-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:  dcmimgle
00015  *
00016  *  Author:  Joerg Riesmeier
00017  *
00018  *  Purpose: DicomMonochromeImage (Header)
00019  *
00020  *  Last Update:      $Author: joergr $
00021  *  Update Date:      $Date: 2010-10-14 13:16:26 $
00022  *  CVS/RCS Revision: $Revision: 1.57 $
00023  *  Status:           $State: Exp $
00024  *
00025  *  CVS/RCS Log at end of file
00026  *
00027  */
00028 
00029 
00030 #ifndef DIMOIMG_H
00031 #define DIMOIMG_H
00032 
00033 #include "dcmtk/config/osconfig.h"
00034 
00035 #include "dcmtk/ofstd/ofcast.h"
00036 
00037 #include "dcmtk/dcmimgle/diimage.h"
00038 #include "dcmtk/dcmimgle/dimopx.h"
00039 #include "dcmtk/dcmimgle/dimoopx.h"
00040 #include "dcmtk/dcmimgle/didispfn.h"
00041 
00042 
00043 /*------------------------*
00044  *  forward declarations  *
00045  *------------------------*/
00046 
00047 class DiColorImage;
00048 
00049 
00050 /*---------------------*
00051  *  class declaration  *
00052  *---------------------*/
00053 
00056 class DiMonoImage
00057   : public DiImage
00058 {
00059 
00060  public:
00061 
00067     DiMonoImage(const DiDocument *docu,
00068                 const EI_Status status);
00069 
00077     DiMonoImage(const DiDocument *docu,
00078                 const EI_Status status,
00079                 const double slope,
00080                 const double intercept);
00081 
00090     DiMonoImage(const DiDocument *docu,
00091                 const EI_Status status,
00092                 const DcmUnsignedShort &data,
00093                 const DcmUnsignedShort &descriptor,
00094                 const DcmLongString *explanation);
00095 
00098     virtual ~DiMonoImage();
00099 
00106     virtual int processNextFrames(const unsigned long fcount);
00107 
00119     int getMinMaxValues(double &min,
00120                         double &max,
00121                         const int mode) const;
00122 
00127     DiDisplayFunction *getDisplayFunction() const
00128     {
00129         return DisplayFunction;
00130     }
00131 
00138     int setDisplayFunction(DiDisplayFunction *display);
00139 
00147     int setNoDisplayFunction();
00148 
00156     int setNoVoiTransformation();
00157 
00164     inline int deleteDisplayLUT(const int bits)
00165     {
00166         return (DisplayFunction != NULL) ? DisplayFunction->deleteLookupTable(bits) : 0;
00167     }
00168 
00175     inline int isValueUnused(const unsigned long value)
00176     {
00177         return (OutputData != NULL) ? OutputData->isUnused(value) : 0;
00178     }
00179 
00191     int convertPValueToDDL(const Uint16 pvalue,
00192                            Uint16 &ddl,
00193                            const int bits);
00194 
00204     int setMinMaxWindow(const int idx = 1);
00205 
00220     int setRoiWindow(const unsigned long left_pos,
00221                      const unsigned long top_pos,
00222                      const unsigned long width,
00223                      const unsigned long height,
00224                      const unsigned long frame);
00225 
00233     int setHistogramWindow(const double thresh);
00234 
00242     int setWindow(const unsigned long pos = 0);
00243 
00255     int setWindow(const double center,
00256                   const double width,
00257                   const char *explanation = NULL);
00258 
00266     int getWindow(double &center,
00267                   double &width);
00268 
00273     inline unsigned long getWindowCount() const
00274     {
00275         return WindowCount;
00276     }
00277 
00283     EF_VoiLutFunction getVoiLutFunction() const;
00284 
00294     int setVoiLutFunction(const EF_VoiLutFunction function);
00295 
00306     int setVoiLut(const DcmUnsignedShort &data,
00307                   const DcmUnsignedShort &descriptor,
00308                   const DcmLongString *explanation,
00309                   const EL_BitsPerTableEntry descripMode = ELM_UseValue);
00310 
00319     int setVoiLut(const unsigned long pos,
00320                   const EL_BitsPerTableEntry descripMode = ELM_UseValue);
00321 
00326     inline unsigned long getVoiLutCount() const
00327     {
00328         return VoiLutCount;
00329     }
00330 
00335     inline const char *getVoiTransformationExplanation() const
00336     {
00337         return VoiExplanation.c_str();
00338     }
00339 
00347     const char *getVoiWindowExplanation(const unsigned long pos,
00348                                         OFString &explanation) const;
00349 
00357     const char *getVoiLutExplanation(const unsigned long pos,
00358                                      OFString &explanation) const;
00359 
00364     inline const char *getModalityLutExplanation() const
00365     {
00366         return (InterData != NULL) ? InterData->getModalityLutExplanation() : OFstatic_cast(const char *, NULL);
00367     }
00368 
00380      int setHardcopyParameters(const unsigned int min,
00381                                const unsigned int max,
00382                                const unsigned int reflect,
00383                                const unsigned int illumin);
00384 
00391     ES_PresentationLut getPresentationLutShape() const;
00392 
00404     int setPresentationLutShape(const ES_PresentationLut shape);
00405 
00416     int setPresentationLut(const DcmUnsignedShort &data,
00417                            const DcmUnsignedShort &descriptor,
00418                            const DcmLongString *explanation = NULL,
00419                            const EL_BitsPerTableEntry descripMode = ELM_UseValue);
00420 
00431     int setInversePresentationLut(const DcmUnsignedShort &data,
00432                                   const DcmUnsignedShort &descriptor,
00433                                   const EL_BitsPerTableEntry descripMode = ELM_UseValue);
00434 
00439     inline const char *getPresentationLutExplanation() const
00440     {
00441         return (PresLutData != NULL) ? PresLutData->getExplanation() : OFstatic_cast(const char *, NULL);
00442     }
00443 
00460     int addOverlay(const unsigned int group,
00461                    const signed int left_pos,
00462                    const signed int top_pos,
00463                    const unsigned int columns,
00464                    const unsigned int rows,
00465                    const DcmOverlayData &data,
00466                    const DcmLongString &label,
00467                    const DcmLongString &description,
00468                    const EM_Overlay mode);
00469 
00474     int removeAllOverlays();
00475 
00482     inline DiOverlay *getOverlayPtr(const unsigned int idx)
00483     {
00484         return (idx < 2) ? Overlays[idx] : OFstatic_cast(DiOverlay *, NULL);
00485     }
00486 
00491     inline DiMonoImage *getMonoImagePtr()
00492     {
00493         return this;
00494     }
00495 
00505     int flip(const int horz,
00506              const int vert);
00507 
00516     int rotate(const int degree);
00517 
00528     virtual int getBits(const int bits = 0) const
00529     {
00530         return (((bits < 1) || (bits > MAX_BITS)) && (bits != MI_PastelColor)) ? BitsPerSample : bits;
00531     }
00532 
00539     virtual unsigned long getOutputDataSize(const int bits = 0) const;
00540 
00550     virtual const void *getOutputData(const unsigned long frame,
00551                                       const int bits,
00552                                       const int planar = 0) = 0;
00553 
00565     virtual int getOutputData(void *buffer,
00566                               const unsigned long size,
00567                               const unsigned long frame,
00568                               const int bits,
00569                               const int planar = 0) = 0;
00570 
00578     const void *getOutputPlane(const int dummy) const;
00579 
00583     void deleteOutputData();
00584 
00602     const void *getOverlayData(const unsigned long frame,
00603                                const unsigned int plane,
00604                                unsigned int &left_pos,
00605                                unsigned int &top_pos,
00606                                unsigned int &width,
00607                                unsigned int &height,
00608                                EM_Overlay &mode,
00609                                const unsigned int idx,
00610                                const int bits = 8,
00611                                const Uint16 fore = 0xff,
00612                                const Uint16 back = 0x0);
00613 
00628     const void *getFullOverlayData(const unsigned long frame,
00629                                    const unsigned int plane,
00630                                    unsigned int &width,
00631                                    unsigned int &height,
00632                                    const unsigned int idx,
00633                                    const int bits = 8,
00634                                    const Uint16 fore = 0xff,
00635                                    const Uint16 back = 0x0);
00636 
00640     void deleteOverlayData();
00641 
00658     unsigned long create6xxx3000OverlayData(Uint8 *&buffer,
00659                                             const unsigned int plane,
00660                                             unsigned int &width,
00661                                             unsigned int &height,
00662                                             unsigned long &frames,
00663                                             const unsigned int idx = 0);
00664 
00669     const DiPixel *getInterData() const
00670     {
00671         return InterData;
00672     }
00673 
00678     const DiMonoPixel *getMonoInterData() const
00679     {
00680         return InterData;
00681     }
00682 
00695     unsigned long createDIB(void *&data,
00696                             const unsigned long size,
00697                             const unsigned long frame,
00698                             const int bits,
00699                             const int upsideDown,
00700                             const int padding = 1);
00701 
00711     unsigned long createAWTBitmap(void *&data,
00712                                   const unsigned long frame,
00713                                   const int bits);
00714 
00726     static void *createPackedBitmap(const void *buffer,
00727                                     const unsigned long size,
00728                                     const unsigned long count,
00729                                     const int alloc,
00730                                     const int stored);
00731 
00740     DiImage *createOutputImage(const unsigned long frame,
00741                                const int bits);
00742 
00752     int writeImageToDataset(DcmItem &dataset,
00753                             const int mode,
00754                             const int planar);
00755 
00765     int writePPM(STD_NAMESPACE ostream& stream,
00766                  const unsigned long frame,
00767                  const int bits);
00768 
00778     int writePPM(FILE *stream,
00779                  const unsigned long frame,
00780                  const int bits);
00781 
00790     int writeRawPPM(FILE *stream,
00791                     const unsigned long frame,
00792                     const int bits);
00793 
00802     int writeBMP(FILE *stream,
00803                  const unsigned long frame,
00804                  const int bits);
00805 
00806 
00807  protected:
00808 
00815     DiMonoImage(const DiDocument *image,
00816                 const EI_Status status,
00817                 const char dummy);
00818 
00825     DiMonoImage(const DiMonoImage *image,
00826                 const unsigned long fstart,
00827                 const unsigned long fcount);
00828 
00838     DiMonoImage(const DiColorImage *image,
00839                 const double red,
00840                 const double green,
00841                 const double blue);
00842 
00862     DiMonoImage(const DiMonoImage *image,
00863                 const signed long left_pos,
00864                 const signed long top_pos,
00865                 const Uint16 src_cols,
00866                 const Uint16 src_rows,
00867                 const Uint16 dest_cols,
00868                 const Uint16 dest_rows,
00869                 const int interpolate,
00870                 const int aspect,
00871                 const Uint16 pvalue);
00872 
00879     DiMonoImage(const DiMonoImage *image,
00880                 const int horz,
00881                 const int vert);
00882 
00888     DiMonoImage(const DiMonoImage *image,
00889                 const int degree);
00890 
00899      DiMonoImage(const DiMonoImage *image,
00900                  DiMonoOutputPixel *pixel,
00901                  const unsigned long frame,
00902                  const int stored,
00903                  const int alloc);
00904 
00910     void Init(DiMonoModality *modality,
00911               const OFBool reuse = OFFalse);
00912 
00917     void InitUint8(DiMonoModality *modality);
00918 
00923     void InitSint8(DiMonoModality *modality);
00924 
00929     void InitUint16(DiMonoModality *modality);
00930 
00935     void InitSint16(DiMonoModality *modality);
00936 
00941     void InitUint32(DiMonoModality *modality);
00942 
00947     void InitSint32(DiMonoModality *modality);
00948 
00953     int checkInterData(const int mode = 1);
00954 
00962     virtual void updateImagePixelModuleAttributes(DcmItem &dataset);
00963 
00976     const void *getData(void *buffer,
00977                         const unsigned long size,
00978                         const unsigned long frame,
00979                         int bits,
00980                         const int planar,
00981                         const int negative);
00982 
00994     void getDataUint8(void *buffer,
00995                       DiDisplayFunction *disp,
00996                       const int samples,
00997                       const unsigned long frame,
00998                       const int bits,
00999                       const Uint32 low,
01000                       const Uint32 high);
01001 
01013     void getDataSint8(void *buffer,
01014                       DiDisplayFunction *disp,
01015                       const int samples,
01016                       const unsigned long frame,
01017                       const int bits,
01018                       const Uint32 low,
01019                       const Uint32 high);
01020 
01032     void getDataUint16(void *buffer,
01033                        DiDisplayFunction *disp,
01034                        const int samples,
01035                        const unsigned long frame,
01036                        const int bits,
01037                        const Uint32 low,
01038                        const Uint32 high);
01039 
01051     void getDataSint16(void *buffer,
01052                        DiDisplayFunction *disp,
01053                        const int samples,
01054                        const unsigned long frame,
01055                        const int bits,
01056                        const Uint32 low,
01057                        const Uint32 high);
01058 
01070     void getDataUint32(void *buffer,
01071                        DiDisplayFunction *disp,
01072                        const int samples,
01073                        const unsigned long frame,
01074                        const int bits,
01075                        const Uint32 low,
01076                        const Uint32 high);
01077 
01089     void getDataSint32(void *buffer,
01090                        DiDisplayFunction *disp,
01091                        const int samples,
01092                        const unsigned long frame,
01093                        const int bits,
01094                        const Uint32 low,
01095                        const Uint32 high);
01096 
01105     int createLinODPresentationLut(const unsigned long count, const int bits);
01106 
01108     double WindowCenter;
01110     double WindowWidth;
01112     unsigned long WindowCount;
01114     unsigned long VoiLutCount;
01115 
01117     int ValidWindow;
01118 
01120     OFString VoiExplanation;
01122     EF_VoiLutFunction VoiLutFunction;
01124     ES_PresentationLut PresLutShape;
01125 
01127     unsigned int MinDensity;
01129     unsigned int MaxDensity;
01131     unsigned int Reflection;
01133     unsigned int Illumination;
01134 
01136     DiOverlay *Overlays[2];
01138     DiLookupTable *VoiLutData;
01140     DiLookupTable *PresLutData;
01142     DiMonoPixel *InterData;
01143 
01145     DiDisplayFunction *DisplayFunction;
01146 
01147 
01148  private:
01149 
01151     DiMonoOutputPixel *OutputData;
01153     void *OverlayData;
01154 
01155  // --- declarations to avoid compiler warnings
01156 
01157     DiMonoImage(const DiMonoImage &);
01158     DiMonoImage &operator=(const DiMonoImage &);
01159 };
01160 
01161 
01162 #endif
01163 
01164 
01165 /*
01166  *
01167  * CVS/RCS Log:
01168  * $Log: dimoimg.h,v $
01169  * Revision 1.57  2010-10-14 13:16:26  joergr
01170  * Updated copyright header. Added reference to COPYRIGHT file.
01171  *
01172  * Revision 1.56  2010-10-05 15:24:02  joergr
01173  * Added preliminary support for VOI LUT function. Please note, however, that
01174  * the sigmoid transformation is not yet implemented.
01175  *
01176  * Revision 1.55  2010-07-21 13:08:56  joergr
01177  * Fixed memory leak when using processNextFrames(): DiOverlay object was
01178  * created multiple times.
01179  *
01180  * Revision 1.54  2010-03-01 09:08:47  uli
01181  * Removed some unnecessary include directives in the headers.
01182  *
01183  * Revision 1.53  2009-11-25 16:06:14  joergr
01184  * Adapted code for new approach to access individual frames of a DICOM image.
01185  *
01186  * Revision 1.52  2008-11-18 11:01:28  joergr
01187  * Fixed issue with incorrectly encoded overlay planes (wrong values for
01188  * OverlayBitsAllocated and OverlayBitPosition).
01189  *
01190  * Revision 1.51  2008-05-20 10:03:53  joergr
01191  * Added new bilinear and bicubic scaling algorithms for image magnification.
01192  *
01193  * Revision 1.50  2008-05-13 09:54:40  joergr
01194  * Added new parameter to writeImageToDataset() in order to affect the planar
01195  * configuration of the output image/dataset. Changed behaviour: By default,
01196  * the output now uses the same planar configuration as the "original" image
01197  * (previously: always color-by-plane).
01198  *
01199  * Revision 1.49  2007/03/16 11:56:06  joergr
01200  * Introduced new flag that allows to select how to handle the BitsPerTableEntry
01201  * value in the LUT descriptor (use, ignore or check).
01202  *
01203  * Revision 1.48  2006/08/15 16:30:11  meichel
01204  * Updated the code in module dcmimgle to correctly compile when
01205  *   all standard C++ classes remain in namespace std.
01206  *
01207  * Revision 1.47  2006/07/10 10:52:27  joergr
01208  * Added support for 32-bit BMP images.
01209  *
01210  * Revision 1.46  2005/12/08 16:47:50  meichel
01211  * Changed include path schema for all DCMTK header files
01212  *
01213  * Revision 1.45  2005/03/09 17:33:16  joergr
01214  * Added mode to writeImageToDataset() which allows the value of BitsStored to
01215  * be determined either from 'used' or from 'possible' pixel values.
01216  *
01217  * Revision 1.44  2004/07/20 18:12:16  joergr
01218  * Added API method to "officially" access the internal intermediate pixel data
01219  * representation (e.g. to get Hounsfield Units for CT images).
01220  *
01221  * Revision 1.43  2004/02/06 11:07:50  joergr
01222  * Distinguish more clearly between const and non-const access to pixel data.
01223  *
01224  * Revision 1.42  2003/12/23 10:51:52  joergr
01225  * Updated documentation to get rid of doxygen warnings.
01226  *
01227  * Revision 1.41  2003/12/17 16:17:29  joergr
01228  * Added new compatibility flag that allows to ignore the third value of LUT
01229  * descriptors and to determine the bits per table entry automatically.
01230  *
01231  * Revision 1.40  2003/12/08 18:30:16  joergr
01232  * Adapted type casts to new-style typecast operators defined in ofcast.h.
01233  * Removed leading underscore characters from preprocessor symbols (reserved
01234  * symbols). Updated CVS header.
01235  *
01236  * Revision 1.39  2003/06/12 15:08:34  joergr
01237  * Fixed inconsistent API documentation reported by Doxygen.
01238  *
01239  * Revision 1.38  2003/05/20 09:20:21  joergr
01240  * Added method returning the number of bytes required to store a single
01241  * rendered frame: getOutputDataSize().
01242  *
01243  * Revision 1.37  2002/12/09 13:32:52  joergr
01244  * Renamed parameter/local variable to avoid name clashes with global
01245  * declaration left and/or right (used for as iostream manipulators).
01246  *
01247  * Revision 1.36  2002/08/02 15:03:53  joergr
01248  * Added function to write the current image (not only a selected frame) to a
01249  * DICOM dataset.
01250  *
01251  * Revision 1.35  2002/06/26 17:20:04  joergr
01252  * Removed superfluous "inline" method specifyer (MSVC6 linker reported an
01253  * error).
01254  *
01255  * Revision 1.34  2002/06/26 16:04:44  joergr
01256  * Added support for polarity flag to color images.
01257  * Added new methods to get the explanation string of stored VOI windows and
01258  * LUTs (not only of the currently selected VOI transformation).
01259  *
01260  * Revision 1.33  2002/01/29 17:05:50  joergr
01261  * Added optional flag to the "Windows DIB" methods allowing to switch off the
01262  * scanline padding.
01263  *
01264  * Revision 1.32  2001/11/19 12:55:54  joergr
01265  * Added parameter 'frame' to setRoiWindow().
01266  *
01267  * Revision 1.31  2001/11/09 16:27:34  joergr
01268  * Added support for Window BMP file format.
01269  * Enhanced and renamed createTrueColorDIB() method.
01270  *
01271  * Revision 1.30  2001/09/28 13:06:10  joergr
01272  * Added routines to get the currently active Polarity and PresentationLUTShape.
01273  * Added method setRoiWindow() which automatically calculates a min-max VOI
01274  * window for a specified rectangular region of the image.
01275  * Added method to extract embedded overlay planes from pixel data and store
01276  * them in group (6xxx,3000) format.
01277  *
01278  * Revision 1.29  2001/06/01 15:49:44  meichel
01279  * Updated copyright header
01280  *
01281  * Revision 1.28  2001/05/14 09:49:17  joergr
01282  * Added support for "1 bit output" of overlay planes; useful to extract
01283  * overlay planes from the pixel data and store them separately in the dataset.
01284  *
01285  * Revision 1.27  2000/07/07 13:42:30  joergr
01286  * Added support for LIN OD presentation LUT shape.
01287  *
01288  * Revision 1.26  2000/06/07 14:30:27  joergr
01289  * Added method to set the image polarity (normal, reverse).
01290  *
01291  * Revision 1.25  2000/03/08 16:24:18  meichel
01292  * Updated copyright header.
01293  *
01294  * Revision 1.24  1999/12/09 17:26:24  joergr
01295  * Split source file dimoimg.cc into 4 parts to avoid compiler problems
01296  * with gcc and additional optimization options.
01297  *
01298  * Revision 1.23  1999/10/20 10:33:15  joergr
01299  * Enhanced method getOverlayData to support 12 bit data for print.
01300  *
01301  * Revision 1.22  1999/10/06 13:38:46  joergr
01302  * Corrected creation of PrintBitmap pixel data: VOI windows should be applied
01303  * before clipping to avoid that the region outside the image (border) is also
01304  * windowed (this requires a new method in dcmimgle to create a DicomImage
01305  * with the grayscale transformations already applied).
01306  *
01307  * Revision 1.21  1999/09/17 12:24:47  joergr
01308  * Added/changed/completed DOC++ style comments in the header files.
01309  *
01310  * Revision 1.20  1999/09/10 08:45:18  joergr
01311  * Added support for CIELAB display function.
01312  *
01313  * Revision 1.19  1999/08/25 16:41:52  joergr
01314  * Added new feature: Allow clipping region to be outside the image
01315  * (overlapping).
01316  *
01317  * Revision 1.18  1999/07/23 14:03:05  joergr
01318  * Added dummy method (no implementation yet) to create inverse LUTs.
01319  * Added method to create 12 bit packed bitmap data (used for grayscale print
01320  * storage).
01321  * Added method to return pointer to currently used display function.
01322  *
01323  * Revision 1.17  1999/04/28 17:03:47  joergr
01324  * Added type casts to NULL pointers returned as 'const char *' to avoid
01325  * compiler warnings reported by gcc 2.7.2.1 (Linux).
01326  *
01327  * Revision 1.16  1999/04/28 14:49:54  joergr
01328  * Added experimental support to create grayscale images with more than 256
01329  * shades of gray to be displayed on a consumer monitor (use pastel colors).
01330  *
01331  * Revision 1.15  1999/03/24 17:20:09  joergr
01332  * Added/Modified comments and formatting.
01333  *
01334  * Revision 1.14  1999/03/22 08:51:39  joergr
01335  * Added parameter to specify (transparent) background color for method
01336  * getOverlayData().
01337  *
01338  * Revision 1.13  1999/02/11 16:34:36  joergr
01339  * Added routine to check whether particular grayscale values are unused in
01340  * the output data.
01341  *
01342  * Revision 1.12  1999/02/08 12:39:05  joergr
01343  * Changed implementation of removeAllOverlays().
01344  *
01345  * Revision 1.11  1999/02/05 16:43:13  joergr
01346  * Added optional parameter to method convertPValueToDDL to specify width
01347  * of output data (number of bits).
01348  *
01349  * Revision 1.10  1999/02/03 17:27:58  joergr
01350  * Added support for calibration according to Barten transformation (incl.
01351  * a DISPLAY file describing the monitor characteristic).
01352  *
01353  * Revision 1.9  1999/01/20 15:03:40  joergr
01354  * Added new output method to fill external memory buffer with rendered pixel
01355  * data.
01356  *
01357  * Revision 1.8  1999/01/11 09:35:10  joergr
01358  * Added parameter to method 'getMinMaxValues()' to return absolute minimum
01359  * and maximum values ('possible') in addition to actually 'used' pixel
01360  * values.
01361  *
01362  * Revision 1.7  1998/12/23 13:21:28  joergr
01363  * Changed parameter type (long to int) to avoid warning reported by MSVC5.
01364  *
01365  * Revision 1.6  1998/12/23 12:38:16  joergr
01366  * Corrected some typos and formatting.
01367  *
01368  * Revision 1.4  1998/12/22 14:26:19  joergr
01369  * Added new parameters to method addOverlay().
01370  *
01371  * Revision 1.3  1998/12/16 16:34:06  joergr
01372  * Added explanation string to LUT class (retrieved from dataset).
01373  * Added explanation string for VOI transformations.
01374  * Renamed 'setNoVoiLutTransformation' method ('Voi' instead of 'VOI').
01375  * Removed several methods used for monochrome images only in base class
01376  * 'DiImage'. Introduced mechanism to use the methods directly.
01377  *
01378  * Revision 1.2  1998/12/14 17:20:03  joergr
01379  * Added methods to add and remove additional overlay planes (still untested).
01380  *
01381  * Revision 1.1  1998/11/27 15:20:57  joergr
01382  * Added copyright message.
01383  * Added methods and constructors for flipping and rotating, changed for
01384  * scaling and clipping.
01385  * Added method to directly create java AWT bitmaps.
01386  * Added constructors to use external modality transformations.
01387  * Added methods to support presentation LUTs and shapes.
01388  *
01389  * Revision 1.6  1998/07/01 08:39:22  joergr
01390  * Minor changes to avoid compiler warnings (gcc 2.8.1 with additional
01391  * options), e.g. add copy constructors.
01392  *
01393  * Revision 1.5  1998/05/11 14:53:20  joergr
01394  * Added CVS/RCS header to each file.
01395  *
01396  *
01397  */


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