OFFIS DCMTK  Version 3.6.0
i2dbmps.h
1 /*
2  *
3  * Copyright (C) 2009-2010, OFFIS e.V.
4  * All rights reserved. See COPYRIGHT file for details.
5  *
6  * This software and supporting documentation were developed by
7  *
8  * OFFIS e.V.
9  * R&D Division Health
10  * Escherweg 2
11  * D-26121 Oldenburg, Germany
12  *
13  *
14  * Module: dcmdata
15  *
16  * Author: Uli Schlachter
17  *
18  * Purpose: Class to extract pixel data and meta information from BMP file
19  *
20  * Last Update: $Author: uli $
21  * Update Date: $Date: 2010-11-15 13:58:43 $
22  * CVS/RCS Revision: $Revision: 1.9 $
23  * Status: $State: Exp $
24  *
25  * CVS/RCS Log at end of file
26  *
27  */
28 
29 #ifndef I2DBMPS_H
30 #define I2DBMPS_H
31 
32 #include "dcmtk/config/osconfig.h"
33 #include "dcmtk/dcmdata/libi2d/i2dimgs.h"
34 #include "dcmtk/ofstd/offile.h"
35 
39 class I2DBmpSource : public I2DImgSource
40 {
41 
42 public:
43 
47  I2DBmpSource();
48 
52  OFString inputFormat() const;
53 
77  OFCondition readPixelData( Uint16& rows,
78  Uint16& cols,
79  Uint16& samplesPerPixel,
80  OFString& photoMetrInt,
81  Uint16& bitsAlloc,
82  Uint16& bitsStored,
83  Uint16& highBit,
84  Uint16& pixelRepr,
85  Uint16& planConf,
86  Uint16& pixAspectH,
87  Uint16& pixAspectV,
88  char*& pixData,
89  Uint32& length,
90  E_TransferSyntax& ts);
91 
101  virtual OFCondition getLossyComprInfo(OFBool& srcEncodingLossy,
102  OFString& /* srcLossyComprMethod */) const
103  {
104  srcEncodingLossy = OFFalse;
105  return EC_Normal;
106  }
107 
111  virtual ~I2DBmpSource();
112 
113 protected:
114 
119  OFCondition openFile(const OFString& filename);
120 
124  void closeFile();
125 
130  OFCondition readFileHeader(Uint32 &offset);
131 
143  OFCondition readBitmapHeader(Uint16 &width /*out*/,
144  Uint16 &height /*out*/,
145  Uint16 &bpp /*out*/,
146  OFBool &isTopDown /*out*/,
147  Uint16 &colors /*out*/);
148 
154  OFCondition readColorPalette(Uint16 colors,
155  Uint32*& palette);
156 
169  OFCondition readBitmapData(const Uint16 width,
170  const Uint16 height,
171  const Uint16 bpp,
172  const OFBool isTopDown,
173  const Uint16 colors,
174  const Uint32* palette,
175  char*& pixData /*out*/,
176  Uint32& length /*out*/);
177 
185  OFCondition parse24_32BppRow(const Uint8 *row,
186  const Uint16 width,
187  const int bpp,
188  char *pixData /*out*/) const;
189 
196  OFCondition parse16BppRow(const Uint8 *row,
197  const Uint16 width,
198  char *pixData /*out*/) const;
199 
209  OFCondition parseIndexedColorRow(const Uint8 *row,
210  const Uint16 width,
211  const int bpp,
212  const Uint16 colors,
213  const Uint32* palette,
214  char *pixData /*out*/) const;
215 
220  int readLong(Sint32& result);
221 
226  int readDWord(Uint32& result);
227 
232  int readWord(Uint16& result);
233 
236 };
237 
238 #endif // #ifndef I2DBMPS_H
239 
240 /*
241  * CVS/RCS Log:
242  * $Log: i2dbmps.h,v $
243  * Revision 1.9 2010-11-15 13:58:43 uli
244  * Fixed some errors in doxygen comments.
245  *
246  * Revision 1.8 2010-10-14 13:15:46 joergr
247  * Updated copyright header. Added reference to COPYRIGHT file.
248  *
249  * Revision 1.7 2010-10-01 10:21:05 uli
250  * Fixed most compiler warnings from -Wall -Wextra -pedantic in dcmdata.
251  *
252  * Revision 1.6 2010-06-01 10:33:53 uli
253  * Added support for indexed-color BMP images (bit depths 1, 4 and 8).
254  *
255  * Revision 1.5 2010-05-25 12:40:06 uli
256  * Added support for 16bpp BMP images to libi2d
257  *
258  * Revision 1.4 2010-05-21 14:43:07 uli
259  * Added support for 32bpp BMP images to libi2d.
260  *
261  * Revision 1.3 2009-11-04 09:58:08 uli
262  * Switched to logging mechanism provided by the "new" oflog module
263  *
264  * Revision 1.2 2009-09-30 08:05:25 uli
265  * Stop including dctk.h in libi2d's header files.
266  *
267  * Revision 1.1 2009-07-16 14:25:28 onken
268  * Added img2dcm input plugin for the BMP graphics format (at the moment only
269  * support for 24 Bit RGB).
270  *
271  *
272  */
273 
this class provides a simple C++ encapsulation layer for stdio FILE pointers.
Definition: offile.h:115
OFFile bmpFile
The BMP file, if opened.
Definition: i2dbmps.h:235
OFCondition readBitmapHeader(Uint16 &width, Uint16 &height, Uint16 &bpp, OFBool &isTopDown, Uint16 &colors)
Reads and checks the BMP bitmap header.
OFCondition openFile(const OFString &filename)
Opens the BMP file specified by the given filename.
int readDWord(Uint32 &result)
Read 4 bytes from the byte stream.
OFCondition readPixelData(Uint16 &rows, Uint16 &cols, Uint16 &samplesPerPixel, OFString &photoMetrInt, Uint16 &bitsAlloc, Uint16 &bitsStored, Uint16 &highBit, Uint16 &pixelRepr, Uint16 &planConf, Uint16 &pixAspectH, Uint16 &pixAspectV, char *&pixData, Uint32 &length, E_TransferSyntax &ts)
Extracts the raw BMP pixel data stream from a BMP file and returns some image information about this ...
OFCondition readColorPalette(Uint16 colors, Uint32 *&palette)
Read the color palette from the file.
virtual OFCondition getLossyComprInfo(OFBool &srcEncodingLossy, OFString &) const
After reading of pixel data, this function can be used for getting information about lossy compressio...
Definition: i2dbmps.h:101
int readLong(Sint32 &result)
Read 4 bytes from the byte stream and interpret it as a signed integer.
void closeFile()
Closes BMP file.
OFCondition readFileHeader(Uint32 &offset)
Reads and checks the BMP file header.
I2DBmpSource()
Constructor, initializes member variables.
OFCondition parse24_32BppRow(const Uint8 *row, const Uint16 width, const int bpp, char *pixData) const
Parse a single 24bpp or 32bpp row of bmp data.
OFCondition parseIndexedColorRow(const Uint8 *row, const Uint16 width, const int bpp, const Uint16 colors, const Uint32 *palette, char *pixData) const
Parse a single 1, 4 or 8bpp row of bmp data.
virtual ~I2DBmpSource()
Destructor, frees some memory.
OFString inputFormat() const
Returns format of input image.
OFCondition parse16BppRow(const Uint8 *row, const Uint16 width, char *pixData) const
Parse a single 16bpp row of bmp data.
int readWord(Uint16 &result)
Read 2 bytes from the byte stream.
a simple string class that implements a subset of std::string.
Definition: ofstring.h:86
OFCondition readBitmapData(const Uint16 width, const Uint16 height, const Uint16 bpp, const OFBool isTopDown, const Uint16 colors, const Uint32 *palette, char *&pixData, Uint32 &length)
Read the bitmap data.
This is a I2DImgSource implementation that can parse BMP files and convert them into DICOM images...
Definition: i2dbmps.h:39
General purpose class for condition codes.
Definition: ofcond.h:305


Generated on Wed Dec 28 2016 for OFFIS DCMTK Version 3.6.0 by Doxygen 1.8.8