GDCM 2.2.1

- Main Page
- Related Pages
- Namespaces
- Classes
- Files
- Examples

- File List
- File Members

gdcmImageCodec.h
Go to the documentation of this file.
1 /*=========================================================================
2
3 Program: GDCM (Grassroots DICOM). A DICOM library
4
5 Copyright (c) 2006-2011 Mathieu Malaterre
6 All rights reserved.
7 See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details.
8
9 This software is distributed WITHOUT ANY WARRANTY; without even
10 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11 PURPOSE. See the above copyright notice for more information.
12
13 =========================================================================*/
14 #ifndef GDCMIMAGECODEC_H
15 #define GDCMIMAGECODEC_H
16
17 #include "gdcmCodec.h"
18 #include "gdcmPhotometricInterpretation.h"
19 #include "gdcmLookupTable.h"
20 #include "gdcmSmartPointer.h"
21 #include "gdcmPixelFormat.h"
22
23 namespace gdcm
24 {
25
30 class GDCM_EXPORT ImageCodec : public Codec
31 {
32 friend class ImageChangePhotometricInterpretation;
33 public:
34 ImageCodec();
35 ~ImageCodec();
36 bool CanCode(TransferSyntax const &) const { return false; }
37 bool CanDecode(TransferSyntax const &) const { return false; }
38 bool Decode(DataElement const &is_, DataElement &os);
39 bool IsLossy() const;
40 void SetLossyFlag(bool l);
41 bool GetLossyFlag() const;
42
43 virtual bool GetHeaderInfo(std::istream &is_, TransferSyntax &ts);
44
45 protected:
46 bool DecodeByStreams(std::istream &is_, std::ostream &os);
47 virtual bool IsValid(PhotometricInterpretation const &pi);
48 public:
49
50 unsigned int GetPlanarConfiguration() const
51 {
52 return PlanarConfiguration;
53 }
54 void SetPlanarConfiguration(unsigned int pc)
55 {
56 assert( pc == 0 || pc == 1 );
57 PlanarConfiguration = pc;
58 }
59
60 PixelFormat &GetPixelFormat()
61 {
62 return PF;
63 }
64 const PixelFormat &GetPixelFormat() const
65 {
66 return PF;
67 }
68 virtual void SetPixelFormat(PixelFormat const &pf)
69 {
70 PF = pf;
71 }
72 const PhotometricInterpretation &GetPhotometricInterpretation() const;
73 void SetPhotometricInterpretation(PhotometricInterpretation const &pi);
74
75 bool GetNeedByteSwap() const
76 {
77 return NeedByteSwap;
78 }
79 void SetNeedByteSwap(bool b)
80 {
81 NeedByteSwap = b;
82 }
83 void SetNeedOverlayCleanup(bool b)
84 {
85 NeedOverlayCleanup = b;
86 }
87 void SetLUT(LookupTable const &lut)
88 {
89 LUT = SmartPointer<LookupTable>( const_cast< LookupTable*>(&lut) );
90 }
91 const LookupTable &GetLUT() const
92 {
93 return *LUT;
94 }
95
96 void SetDimensions(const unsigned int d[3]);
97 void SetDimensions(const std::vector<unsigned int> & d);
98 const unsigned int *GetDimensions() const { return Dimensions; }
99 void SetNumberOfDimensions(unsigned int dim);
100 unsigned int GetNumberOfDimensions() const;
101
102 protected:
103 bool RequestPlanarConfiguration;
104 bool RequestPaddedCompositePixelCode;
105 //private:
106 unsigned int PlanarConfiguration;
107 PhotometricInterpretation PI;
108 PixelFormat PF;
109 bool NeedByteSwap;
110 bool NeedOverlayCleanup;
111
112 typedef SmartPointer<LookupTable> LUTPtr;
113 LUTPtr LUT;
114 unsigned int Dimensions[3]; // FIXME
115 unsigned int NumberOfDimensions;
116 bool LossyFlag;
117
118 bool DoOverlayCleanup(std::istream &is_, std::ostream &os);
119 bool DoByteSwap(std::istream &is_, std::ostream &os);
120 bool DoYBR(std::istream &is_, std::ostream &os);
121 bool DoPlanarConfiguration(std::istream &is_, std::ostream &os);
122 bool DoSimpleCopy(std::istream &is_, std::ostream &os);
123 bool DoPaddedCompositePixelCode(std::istream &is_, std::ostream &os);
124 bool DoInvertMonochrome(std::istream &is_, std::ostream &os);
125
126 //template <typename T>
127 //bool DoInvertPlanarConfiguration(T *output, const T *input, uint32_t length);
128 };
129
130 } // end namespace gdcm
131
132 #endif //GDCMIMAGECODEC_H