📄 diutils.h
字号:
{ {"MONOCHROME1", EPI_Monochrome1}, {"MONOCHROME2", EPI_Monochrome2}, {"PALETTECOLOR", EPI_PaletteColor}, // space deleted to simplify detection {"RGB", EPI_RGB}, {"HSV", EPI_HSV}, {"ARGB", EPI_ARGB}, {"CMYK", EPI_CMYK}, {"YBRFULL", EPI_YBR_Full}, // underscore deleted to simplify detection {"YBRFULL422", EPI_YBR_Full_422}, // underscores deleted to simplify detection {"YBRPARTIAL422", EPI_YBR_Partial_422}, // underscores deleted to simplify detection {NULL, EPI_Unknown}};/*---------------------* * macro definitions * *---------------------*/#define MAX_UINT Uint32#define MAX_SINT Sint32#define MAX_BITS 32#define MAX_BITS_TYPE Uint32#define MAX_RAWPPM_BITS 8#define MAX_INTERPOLATION_BITS 16#define bitsof(expr) (sizeof(expr) << 3)/*----------------------* * class declarations * *----------------------*//** Class comprising several global functions and constants. * introduced to avoid problems with naming convention */class DicomImageClass{ public: /** calculate maximum value which could be stored in the specified number of bits * ** @param mv_bits number of bits * @param mv_pos value subtracted from the maximum value (0 or 1) * ** @return maximum value */ static inline unsigned long maxval(const int mv_bits, const unsigned long mv_pos = 1) { return (mv_bits < MAX_BITS) ? (OFstatic_cast(unsigned long, 1) << mv_bits) - mv_pos : OFstatic_cast(MAX_BITS_TYPE, -1); } /** calculate number of bits which are necessary to store the specified value * ** @param tb_value value to be stored * @param tb_pos value subtracted from the value (0 or 1) before converting * ** @return number of bits */ static inline unsigned int tobits(unsigned long tb_value, const unsigned long tb_pos = 1) { if (tb_value > 0) tb_value -= tb_pos; register unsigned int tb_bits = 0; while (tb_value > 0) { ++tb_bits; tb_value >>= 1; } return tb_bits; } /** calculate number of bits which are necessary to store the specified value range * ** @param minvalue minimum value to be stored * @param maxvalue maximum value to be stored * ** @return number of bits */ static unsigned int rangeToBits(double minvalue, double maxvalue); /** determine integer representation which is necessary to store values in the specified range * ** @param minvalue minimum value to be stored * @param maxvalue maximum value to be stored * ** @return integer representation (enum) */ static EP_Representation determineRepresentation(double minvalue, double maxvalue); /** set the debug level to the specified value * ** @param level debug level to be set */ static void setDebugLevel(const int level) { DebugLevel.set(level); } /** get the current debug level * ** @return current debug level */ static int getDebugLevel() { return DebugLevel.get(); } /** check whether specified debug level is set * ** @param level debug levelto be checked * ** @return true if debug level is set, false (0) otherwise */ static int checkDebugLevel(const int level) { return DebugLevel.get() & level; } /// debug level: display no messages static const int DL_NoMessages; /// debug level: display error messages static const int DL_Errors; /// debug level: display warning messages static const int DL_Warnings; /// debug level: display informational messages static const int DL_Informationals; /// debug level: display debug messages static const int DL_DebugMessages; private: /// debug level defining the verboseness of the image toolkit static OFGlobal<int> DebugLevel;};#endif/* * * CVS/RCS Log: * $Log: diutils.h,v $ * Revision 1.31 2005/12/08 16:48:12 meichel * Changed include path schema for all DCMTK header files * * Revision 1.30 2005/03/09 17:29:42 joergr * Added support for new overlay mode "invert bitmap". * Added new helper function rangeToBits(). * * Revision 1.29 2004/11/29 16:52:22 joergr * Removed email address from CVS log. * * Revision 1.28 2004/11/29 11:15:16 joergr * Introduced new integer type MAX_BITS_TYPE for internal use. * * Revision 1.27 2004/11/25 09:38:43 meichel * Fixed bug in DicomImageClass::maxval affecting 64-bit platforms. * * Revision 1.26 2004/08/03 11:41:50 meichel * Headers libc.h and unistd.h are now included via ofstdinc.h * * Revision 1.25 2003/12/23 15:53:22 joergr * Replaced post-increment/decrement operators by pre-increment/decrement * operators where appropriate (e.g. 'i++' by '++i'). * * Revision 1.24 2003/12/17 16:17:29 joergr * Added new compatibility flag that allows to ignore the third value of LUT * descriptors and to determine the bits per table entry automatically. * * Revision 1.23 2003/12/08 18:49:54 joergr * Adapted type casts to new-style typecast operators defined in ofcast.h. * Removed leading underscore characters from preprocessor symbols (reserved * symbols). Updated copyright header. * * Revision 1.22 2003/05/20 09:19:51 joergr * Added new configuration/compatibility flag that allows to ignore the * modality transform stored in the dataset. * * Revision 1.21 2002/11/27 14:08:08 meichel * Adapted module dcmimgle to use of new header file ofstdinc.h * * Revision 1.20 2002/06/26 16:08:14 joergr * Added configuration flag that enables the DicomImage class to take the * responsibility of an external DICOM dataset (i.e. delete it on destruction). * * Revision 1.19 2001/11/09 16:25:59 joergr * Added support for Window BMP file format. * * Revision 1.18 2001/09/28 13:11:00 joergr * Added new flag (CIF_KeepYCbCrColorModel) which avoids conversion of YCbCr * color models to RGB. * * Revision 1.17 2001/06/01 15:49:52 meichel * Updated copyright header * * Revision 1.16 2000/07/07 13:40:31 joergr * Added support for LIN OD presentation LUT shape. * * Revision 1.15 2000/06/07 14:30:28 joergr * Added method to set the image polarity (normal, reverse). * * Revision 1.14 2000/04/28 12:32:33 joergr * DebugLevel - global for the module - now derived from OFGlobal (MF-safe). * * Revision 1.13 2000/03/08 16:24:25 meichel * Updated copyright header. * * Revision 1.12 2000/02/23 15:12:16 meichel * Corrected macro for Borland C++ Builder 4 workaround. * * Revision 1.11 2000/02/01 10:52:38 meichel * Avoiding to include <stdlib.h> as extern "C" on Borland C++ Builder 4, * workaround for bug in compiler header files. * * Revision 1.10 1999/09/17 13:08:13 joergr * Added/changed/completed DOC++ style comments in the header files. * * Revision 1.9 1999/07/23 14:16:16 joergr * Added flag to avoid color space conversion for color images (not yet * implemented). * * Revision 1.8 1999/04/30 16:33:19 meichel * Now including stdio.h in diutils.h, required on SunOS * * Revision 1.7 1999/04/28 14:55:41 joergr * Added experimental support to create grayscale images with more than 256 * shades of gray to be displayed on a consumer monitor (use pastel colors). * * Revision 1.6 1999/03/24 17:20:28 joergr * Added/Modified comments and formatting. * * Revision 1.5 1999/02/03 17:36:06 joergr * Moved global functions maxval() and determineRepresentation() to class * DicomImageClass (as static methods). * Added BEGIN_EXTERN_C and END_EXTERN_C to some C includes. * * Revision 1.4 1999/01/20 15:13:12 joergr * Added new overlay plane mode for bitmap shutters. * * Revision 1.3 1998/12/23 11:38:08 joergr * Introduced new overlay mode item EMO_Graphic (= EMO_Replace). * * Revision 1.2 1998/12/16 16:40:15 joergr * Some layouting. * * Revision 1.1 1998/11/27 15:51:45 joergr * Added copyright message. * Introduced global debug level for dcmimage module to control error output. * Moved type definitions to diutils.h. * Added methods to support presentation LUTs and shapes. * Introduced configuration flags to adjust behaviour in different cases. * * Revision 1.5 1998/06/25 08:50:10 joergr * Added compatibility mode to support ACR-NEMA images and wrong * palette attribute tags. * * Revision 1.4 1998/05/11 14:53:30 joergr * Added CVS/RCS header to each file. * * */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -