⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dcvr.h

📁 转化为DIB位图再显示出来的dicom文件C++代码
💻 H
字号:
/* * *  Copyright (C) 1994-2005, OFFIS * *  This software and supporting documentation were developed by * *    Kuratorium OFFIS e.V. *    Healthcare Information and Communication Systems *    Escherweg 2 *    D-26121 Oldenburg, Germany * *  THIS SOFTWARE IS MADE AVAILABLE,  AS IS,  AND OFFIS MAKES NO  WARRANTY *  REGARDING  THE  SOFTWARE,  ITS  PERFORMANCE,  ITS  MERCHANTABILITY  OR *  FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES  OR *  ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY AND *  PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * *  Module:  dcmdata * *  Author:  Gerd Ehlers, Andreas Barth, Andrew Hewett * *  Purpose: Definition of the DcmVR class for Value Representation * *  Last Update:      $Author: meichel $ *  Update Date:      $Date: 2005/12/08 16:28:50 $ *  Source File:      $Source: /share/dicom/cvs-depot/dcmtk/dcmdata/include/dcmtk/dcmdata/dcvr.h,v $ *  CVS/RCS Revision: $Revision: 1.24 $ *  Status:           $State: Exp $ * *  CVS/RCS Log at end of file * */#ifndef DCMVR_H#define DCMVR_H 1#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */#include "dcmtk/dcmdata/dctypes.h"#include "dcmtk/ofstd/ofglobal.h"#define INCLUDE_CSTDLIB#include "dcmtk/ofstd/ofstdinc.h"/** Global flag to enable/disable the generation of VR=UN */extern OFGlobal<OFBool> dcmEnableUnknownVRGeneration; /* default OFTrue *//** Global flag to enable/disable the generation of VR=UT */extern OFGlobal<OFBool> dcmEnableUnlimitedTextVRGeneration; /* default OFTrue *//** Global flag to enable/disable the automatic re-conversion of defined *  length UN elements read in an explicit VR transfer syntax, if the real *  VR is defined in the data dictionary. */extern OFGlobal<OFBool> dcmEnableUnknownVRConversion; /* default OFFalse *//*** VR Enumerations.** NB: The order of entries has to conform to the order in DcmVRDict (see dcmvr.cc)!**     If not an error message is reported and the program aborts (only in DEBUG mode).*/enum DcmEVR{    EVR_AE,    EVR_AS,    EVR_AT,    EVR_CS,    EVR_DA,    EVR_DS,    EVR_DT,    EVR_FL,    EVR_FD,    EVR_IS,    EVR_LO,    EVR_LT,    EVR_OB,    EVR_OF,    EVR_OW,    EVR_PN,    EVR_SH,    EVR_SL,    EVR_SQ,    EVR_SS,    EVR_ST,    EVR_TM,    EVR_UI,    EVR_UL,    EVR_US,    EVR_UT,    EVR_ox,  /* OB or OW depending on context */    EVR_xs,  /* SS or US depending on context */    EVR_lt,  /* US, SS or OW depending on context, used for LUT Data (thus the name) */    EVR_na,  /* na="not applicable", for data which has no VR */    EVR_up,  /* up="unsigned pointer", used internally for DICOMDIR support */    EVR_item,        /* used internally */    EVR_metainfo,    /* used internally */    EVR_dataset,     /* used internally */    EVR_fileFormat,  /* used internally */    EVR_dicomDir,    /* used internally */    EVR_dirRecord,   /* used internally */    EVR_pixelSQ,     /* used internally */    EVR_pixelItem,   /* used internally */    EVR_UNKNOWN,     /* used internally */    EVR_UN,          /* Unknown value representation - defined in supplement 14 */    EVR_PixelData,   /* used internally */    EVR_OverlayData, /* used internally */    EVR_UNKNOWN2B    /* like EVR_UNKNOWN but without extended length property in explicit VR */};/** a class representing a DICOM Value Representation */class DcmVR{public:    /// default constructor    DcmVR()    : vr(EVR_UNKNOWN)    {    }    /** constructor      *  @param evr enumerated VR value     */    DcmVR(DcmEVR evr)    : vr(EVR_UNKNOWN)    {       // the set method is safeguarded against incorrect passing of integer values      setVR(evr);    }    /** constructor      *  @param vrName symbolic name of value representation     */    DcmVR(const char* vrName)     : vr(EVR_UNKNOWN)    {       setVR(vrName);    }    /// copy constructor    DcmVR(const DcmVR& avr)     : vr(avr.vr)    {    }    /** assign new VR value     *  @param evr enumerated VR value     */    void setVR(DcmEVR evr);    /** assign new VR value by name     *  @param vrName symbolic name of value representation     */    void setVR(const char* vrName);    /** assign new VR value     *  @param avr VR value     */    void setVR(const DcmVR& avr) { vr = avr.vr; }    /** copy assignment operator     *  @param arg vr to assign from     */    DcmVR& operator=(const DcmVR& arg)    {      vr = arg.vr;      return *this;    }    /** get enumerated VR managed by this object     *  @return enumerated VR     */    DcmEVR getEVR() const { return vr; }    /** get enumerated standard VR managed by this object.     *  If this object manages a non-standard, internal VR such as EVR_ox,     *  this method returns the enumerated VR to which the internal VR will     *  be mapped when writing the DICOM object.     *  @return enumerated VR     */    DcmEVR getValidEVR() const;    /** get symbolic VR name for this object     *  @return VR name string, never NULL     */    const char* getVRName() const ;    /** get symbolic standard VR name for this object     *  If this object manages a non-standard, internal VR such as EVR_ox,     *  this method returns the name of the VR to which the internal VR will     *  be mapped when writing the DICOM object.     *  @return VR name string, never NULL     */    const char* getValidVRName() const;    /** compute the size for non-empty values of this VR.     *  For fixed size VRs such as OW, US, SL, the method returns the size     *  of each value, in bytes.  For variable length VRs (strings), it returns 1.     *  For internal VRs it returns 0.     *  @return size of values of this VR     */    size_t getValueWidth() const;    /** returns true if VR is a standard DICOM VR      *  @return true if VR is a standard DICOM VR      */    OFBool isStandard() const;    /** returns true if VR is for internal use only     *  @return true if VR is for internal use only     */    OFBool isForInternalUseOnly() const;    /** returns true if VR represents a string     *  @return true if VR represents a string     */    OFBool isaString() const;    /** returns true if VR uses an extended length encoding for explicit transfer syntaxes     *  @return true if VR uses an extended length encoding for explicit transfer syntaxes     */    OFBool usesExtendedLengthEncoding() const;    /** check if VRs are equivalent     *  VRs are considered equivalent if equal or if one of them is an internal VR     *  and the other one is a possible standard VR to which the internal one maps.     *  @param avr VR to compare with     *  @return true if VRs are equivalent, false otherwise     */    OFBool isEquivalent(const DcmVR& avr) const;    /* minimum and maximum length of a value with this VR    ** (in bytes assuming single byte characters)    */    /** return minimum length of a value with this VR (in bytes), assuming single byte characters     *  @return minimum length of a value     */    Uint32 getMinValueLength() const;    /** return maximum length of a value with this VR (in bytes), assuming single byte characters     *  @return maximum length of a value     */    Uint32 getMaxValueLength() const;private:    /// the enumerated VR value    DcmEVR vr;};#endif /* !DCMVR_H *//* * CVS/RCS Log: * $Log: dcvr.h,v $ * Revision 1.24  2005/12/08 16:28:50  meichel * Changed include path schema for all DCMTK header files * * Revision 1.23  2005/11/15 18:28:02  meichel * Added new global flag dcmEnableUnknownVRConversion that enables the automatic *   re-conversion of defined length UN elements read in an explicit VR transfer *   syntax, if the real VR is defined in the data dictionary. Default is OFFalse, *   i.e. to retain the previous behavior. * * Revision 1.22  2005/11/15 16:59:24  meichel * Added new pseudo VR type EVR_lt that is used for LUT Data when read in *   implicit VR, which may be US, SS or OW. DCMTK always treats EVR_lt like OW. * * Revision 1.21  2003/06/12 13:31:46  joergr * Fixed inconsistent API documentation reported by Doxygen. * * Revision 1.20  2003/03/21 13:06:46  meichel * Minor code purifications for warnings reported by MSVC in Level 4 * * Revision 1.19  2002/12/06 12:20:19  joergr * Added support for new value representation Other Float String (OF). * * Revision 1.18  2002/11/27 12:07:24  meichel * Adapted module dcmdata to use of new header file ofstdinc.h * * Revision 1.17  2001/06/01 15:48:47  meichel * Updated copyright header * * Revision 1.16  2000/04/14 15:42:56  meichel * Global VR generation flags are now derived from OFGlobal and, thus, *   safe for use in multi-thread applications. * * Revision 1.15  2000/03/08 16:26:21  meichel * Updated copyright header. * * Revision 1.14  2000/02/29 11:48:38  meichel * Removed support for VS value representation. This was proposed in CP 101 *   but never became part of the standard. * * Revision 1.13  2000/02/23 15:11:42  meichel * Corrected macro for Borland C++ Builder 4 workaround. * * Revision 1.12  2000/02/01 10:12:03  meichel * Avoiding to include <stdlib.h> as extern "C" on Borland C++ Builder 4, *   workaround for bug in compiler header files. * * Revision 1.11  1999/06/10 10:44:51  meichel * Replaced some #if statements by more robust #ifdef * * Revision 1.10  1999/03/31 09:24:54  meichel * Updated copyright header in module dcmdata * * */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -