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

📄 dibaslut.h

📁 转化为DIB位图再显示出来的dicom文件C++代码
💻 H
字号:
/* * *  Copyright (C) 1996-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:  dcmimgle * *  Author:  Joerg Riesmeier * *  Purpose: DicomBaseLUT (Header) * *  Last Update:      $Author: meichel $ *  Update Date:      $Date: 2005/12/08 16:47:32 $ *  CVS/RCS Revision: $Revision: 1.16 $ *  Status:           $State: Exp $ * *  CVS/RCS Log at end of file * */#ifndef DIBASLUT_H#define DIBASLUT_H#include "dcmtk/config/osconfig.h"#include "dcmtk/ofstd/ofstring.h"#include "dcmtk/ofstd/ofcast.h"#include "dcmtk/dcmimgle/diutils.h"/*---------------------* *  macro definitions  * *---------------------*/#define MIN_TABLE_ENTRY_SIZE 8#define MAX_TABLE_ENTRY_SIZE 16#define MAX_TABLE_ENTRY_COUNT 65536/*---------------------* *  class declaration  * *---------------------*//** Base class to handle look-up tables */class DiBaseLUT{ public:    /** constructor     *     ** @param  count  number of LUT entries     *  @param  bits   number of bits per entry     */    DiBaseLUT(const Uint32 count = 0,              const Uint16 bits = 0);    /** destructor     */    virtual ~DiBaseLUT();    /** get number of LUT entries     *     ** @return number of LUT entries     */    inline Uint32 getCount() const    {        return Count;    }    /** get number of bits per entry     *     ** @return number of bits per entry     */    inline Uint16 getBits() const    {        return Bits;    }    /** get index of first LUT entry.     *  First input value mapped (FIV) in LUT descriptor is US -> 16 bit unsigned.     *  ... or the previous pixel transformation requires an unsigned LUT input value.     *     ** #param  dummy (used to distinguish between signed and unsigned methods)     *     ** @return index of first LUT entry     */    inline Uint32 getFirstEntry(const Uint32 = 0) const    {        return FirstEntry;    }    /** get index of first LUT entry.     *  First input value mapped (FIV) in LUT descriptor is SS -> 16 bit signed.     *  ... or the previous pixel transformation requires a signed LUT input value.     *     ** #param  dummy (used to distinguish between signed and unsigned methods)     *     ** @return index of first LUT entry     */    inline Sint32 getFirstEntry(const Sint32) const    {        return OFstatic_cast(Sint16, FirstEntry);    }    /** get index of last LUT entry.     *  FIV in LUT descriptor is US -> 16 bit unsigned.     *  ... or the previous pixel transformation requires an unsigned LUT input value.     *     ** #param  dummy (used to distinguish between signed and unsigned methods)     *     ** @return index of last LUT entry     */    inline Uint32 getLastEntry(const Uint32 = 0) const    {        return FirstEntry + Count - 1;    }    /** get index of last LUT entry.     *  FIV in LUT descriptor is SS -> 16 bit signed.     *  ... or the previous pixel transformation requires a signed LUT input value.     *     ** #param  dummy (used to distinguish between signed and unsigned methods)     *     ** @return index of first LUT entry     */    inline Sint32 getLastEntry(const Sint32) const    {        return OFstatic_cast(Sint32, OFstatic_cast(Sint16, FirstEntry)) + Count - 1;    }    /** get value of specified LUT entry     *     ** @param  pos  position in the LUT to be returned     *     ** @return value of specified LUT entry     */    inline Uint16 getValue(const Uint16 pos) const    {        return Data[pos];    }    /** get value of specified LUT entry.     *  FIV in LUT descriptor is US -> 16 bit unsigned.     *  ... or the previous pixel transformation requires an unsigned LUT input value.     *     ** @param  pos  position in the LUT to be returned     *     ** @return value of specified LUT entry     */    inline Uint16 getValue(const Uint32 pos) const    {        return Data[pos - FirstEntry];    }    /** get value of specified LUT entry.     *  FIV in LUT descriptor is SS -> 16 bit signed.     *  ... or the previous pixel transformation requires a signed LUT input value.     *     ** @param  pos  position in the LUT to be returned     *     ** @return value of specified LUT entry     */    inline Uint16 getValue(const Sint32 pos) const    {        return Data[pos - OFstatic_cast(Sint32, OFstatic_cast(Sint16, FirstEntry))];    }    /** get value of first LUT entry.     *     ** @return value of first LUT entry     */    inline Uint16 getFirstValue() const    {        return Data[0];    }    /** get value of last LUT entry.     *     ** @return value of last LUT entry     */    inline Uint16 getLastValue() const    {        return Data[Count - 1];    }    /** get pointer to LUT data     *     ** @return pointer to LUT data     */    inline const Uint16 *getData() const    {        return Data;    }    /** get minimum value of the LUT.     *     ** @return minimum value of the LUT     */    inline Uint16 getMinValue() const    {        return MinValue;    }    /** get maximum value of the LUT.     *     ** @return maximum value of the LUT     */    inline Uint16 getMaxValue() const    {        return MaxValue;    }    /** get absolute value range of the LUT entries.     *  The maximum value which could be stored with the specified bit depth is calculated.     *     ** @return absolute range of LUT entries     */    inline Uint32 getAbsMaxRange() const    {        return DicomImageClass::maxval(Bits, 0);    }    /** check whether LUT is valid     *     ** @return status, true if valid, false otherwise     */    inline int isValid() const    {        return Valid;    }    /** get LUT explanation string     *     ** @return LUT explanation string if successful, NULL otherwise     */    inline const char *getExplanation() const    {        return (Explanation.empty()) ? OFstatic_cast(const char *, NULL) : Explanation.c_str();    }    /** compares current LUT with specified LUT     *     ** @param  lut  LUT to be compared with the current one     *     ** @return OFTrue if LUTs are equal, OFFalse otherwise     */    virtual OFBool operator==(const DiBaseLUT &lut); protected:    /** constructor     *     ** @param  buffer  pointer to array with LUT entries     *  @param  count   number of LUT entries     *  @param  bits    number of bits per entry     */    DiBaseLUT(Uint16 *buffer,              const Uint32 count = 0,              const Uint16 bits = 0);    /** compares current LUT with specified LUT     *     ** @param  lut  LUT to be compared with the current one     *     ** @return true if LUTs are not equal (1 = invalid LUT,     *                                      2 = descriptor differs,     *                                      3 = data differs)     *          false (0) otherwise     */    int compare(const DiBaseLUT *lut);    /// number of LUT entries    Uint32 Count;    /// first input value mapped (FIV)    Uint16 FirstEntry;    /// number of bits per entry    Uint16 Bits;    /// minimum LUT value    Uint16 MinValue;    /// maximum LUT value    Uint16 MaxValue;    /// status code, indicating whether LUT is valid    int Valid;    /// LUT explanation string    OFString Explanation;    /// pointer to lookup table data    const Uint16 *Data;    /// pointer to data buffer (will be deleted in the destructor)    Uint16 *DataBuffer; private: // --- declarations to avoid compiler warnings    DiBaseLUT(const DiBaseLUT &);    DiBaseLUT &operator=(const DiBaseLUT &);};#endif/* * * CVS/RCS Log: * $Log: dibaslut.h,v $ * Revision 1.16  2005/12/08 16:47:32  meichel * Changed include path schema for all DCMTK header files * * Revision 1.15  2003/12/08 18:40:32  joergr * Adapted type casts to new-style typecast operators defined in ofcast.h. * Removed leading underscore characters from preprocessor symbols (reserved * symbols). Updated CVS header. * * Revision 1.14  2003/06/12 15:08:34  joergr * Fixed inconsistent API documentation reported by Doxygen. * * Revision 1.13  2001/06/01 15:49:39  meichel * Updated copyright header * * Revision 1.12  2000/03/08 16:24:13  meichel * Updated copyright header. * * Revision 1.11  2000/03/06 18:17:59  joergr * Moved get-method to base class and made method virtual to avoid hiding of * methods (reported by Sun CC 4.2). * * Revision 1.10  1999/10/20 10:34:43  joergr * Enhanced method invertTable to distinguish between copy of LUT data and * original (referenced) LUT data. * * Revision 1.9  1999/09/30 11:37:08  joergr * Added methods to compare two lookup tables. * * Revision 1.8  1999/09/17 12:07:23  joergr * Added/changed/completed DOC++ style comments in the header files. * * Revision 1.7  1999/09/08 15:19:24  joergr * Completed implementation of setting inverse presentation LUT as needed * e.g. for DICOM print (invert 8->12 bits PLUT). * * Revision 1.6  1999/07/23 13:51:44  joergr * Changed comments/formatting. * * Revision 1.5  1999/05/03 11:09:27  joergr * Minor code purifications to keep Sun CC 2.0.1 quiet. * * Revision 1.4  1999/03/24 17:19:58  joergr * Added/Modified comments and formatting. * * Revision 1.3  1999/03/03 11:46:26  joergr * Added method to invert lookup table data (used for presentation state LUTs). * * Revision 1.2  1999/02/11 15:42:49  joergr * Removed unnecessary include statement. * * Revision 1.1  1999/02/03 17:45:38  joergr * Added base class for look-up tables (moved main functionality of class * DiLookupTable to DiBaseLUT). * * */

⌨️ 快捷键说明

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