GDCM 3.0.24
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"
19#include "gdcmLookupTable.h"
20#include "gdcmSmartPointer.h"
21#include "gdcmPixelFormat.h"
22
23namespace gdcm
24{
25
31{
33public:
35 ~ImageCodec() override;
36 bool CanCode(TransferSyntax const &) const override { return false; }
37 bool CanDecode(TransferSyntax const &) const override { return false; }
38 bool Decode(DataElement const &is_, DataElement &os) override;
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 virtual ImageCodec * Clone() const = 0;
46
47protected:
48 bool DecodeByStreams(std::istream &is_, std::ostream &os) override;
49 virtual bool IsValid(PhotometricInterpretation const &pi);
50public:
51
52 unsigned int GetPlanarConfiguration() const
53 {
54 return PlanarConfiguration;
55 }
56 void SetPlanarConfiguration(unsigned int pc)
57 {
58 assert( pc == 0 || pc == 1 );
59 PlanarConfiguration = pc;
60 }
61
63 {
64 return PF;
65 }
67 {
68 return PF;
69 }
70 virtual void SetPixelFormat(PixelFormat const &pf)
71 {
72 PF = pf;
73 }
76
77 bool GetNeedByteSwap() const
78 {
79 return NeedByteSwap;
80 }
81 void SetNeedByteSwap(bool b)
82 {
83 NeedByteSwap = b;
84 }
86 {
87 NeedOverlayCleanup = b;
88 }
89 void SetLUT(LookupTable const &lut)
90 {
91 LUT = SmartPointer<LookupTable>( const_cast<LookupTable*>(&lut) );
92 }
93 const LookupTable &GetLUT() const
94 {
95 return *LUT;
96 }
97
98 void SetDimensions(const unsigned int d[3]);
99 void SetDimensions(const std::vector<unsigned int> & d);
100 const unsigned int *GetDimensions() const { return Dimensions; }
101 void SetNumberOfDimensions(unsigned int dim);
102 unsigned int GetNumberOfDimensions() const;
103
104 bool CleanupUnusedBits(char * data, size_t datalen);
105
106protected:
107 // Streaming (write) API:
115 virtual bool StartEncode( std::ostream & os );
116 virtual bool IsRowEncoder();
117 virtual bool IsFrameEncoder();
118 virtual bool AppendRowEncode( std::ostream & out, const char * data, size_t datalen );
119 virtual bool AppendFrameEncode( std::ostream & out, const char * data, size_t datalen );
120 virtual bool StopEncode( std::ostream & os);
121
122protected:
125//private:
131
134 unsigned int Dimensions[3]; // FIXME
135 unsigned int NumberOfDimensions;
137
138 bool DoOverlayCleanup(std::istream &is_, std::ostream &os);
139 bool DoByteSwap(std::istream &is_, std::ostream &os);
140 bool DoYBR(std::istream &is_, std::ostream &os);
141 bool DoYBRFull422(std::istream &is_, std::ostream &os);
142 bool DoPlanarConfiguration(std::istream &is_, std::ostream &os);
143 bool DoSimpleCopy(std::istream &is_, std::ostream &os);
144 bool DoPaddedCompositePixelCode(std::istream &is_, std::ostream &os);
145 bool DoInvertMonochrome(std::istream &is_, std::ostream &os);
146
147 //template <typename T>
148 //bool DoInvertPlanarConfiguration(T *output, const T *input, uint32_t length);
149};
150
151} // end namespace gdcm
152
153#endif //GDCMIMAGECODEC_H
Codec class.
Definition gdcmCodec.h:27
Class to represent a Data Element either Implicit or Explicit.
Definition gdcmDataElement.h:59
FileChangeTransferSyntax.
Definition gdcmFileChangeTransferSyntax.h:40
ImageChangePhotometricInterpretation class.
Definition gdcmImageChangePhotometricInterpretation.h:30
ImageCodec.
Definition gdcmImageCodec.h:31
virtual bool StartEncode(std::ostream &os)
void SetNeedOverlayCleanup(bool b)
Definition gdcmImageCodec.h:85
bool DoPlanarConfiguration(std::istream &is_, std::ostream &os)
virtual bool GetHeaderInfo(std::istream &is_, TransferSyntax &ts)
void SetLossyFlag(bool l)
bool DoOverlayCleanup(std::istream &is_, std::ostream &os)
bool DecodeByStreams(std::istream &is_, std::ostream &os) override
PhotometricInterpretation PI
Definition gdcmImageCodec.h:127
virtual bool IsValid(PhotometricInterpretation const &pi)
SmartPointer< LookupTable > LUTPtr
Definition gdcmImageCodec.h:132
void SetDimensions(const std::vector< unsigned int > &d)
void SetDimensions(const unsigned int d[3])
void SetNumberOfDimensions(unsigned int dim)
PixelFormat PF
Definition gdcmImageCodec.h:128
unsigned int NumberOfDimensions
Definition gdcmImageCodec.h:135
bool RequestPaddedCompositePixelCode
Definition gdcmImageCodec.h:124
const PhotometricInterpretation & GetPhotometricInterpretation() const
bool DoYBR(std::istream &is_, std::ostream &os)
bool GetLossyFlag() const
const unsigned int * GetDimensions() const
Definition gdcmImageCodec.h:100
bool DoInvertMonochrome(std::istream &is_, std::ostream &os)
bool DoYBRFull422(std::istream &is_, std::ostream &os)
const PixelFormat & GetPixelFormat() const
Definition gdcmImageCodec.h:66
virtual bool AppendRowEncode(std::ostream &out, const char *data, size_t datalen)
bool CanCode(TransferSyntax const &) const override
Return whether this coder support this transfer syntax (can code it)
Definition gdcmImageCodec.h:36
unsigned int GetNumberOfDimensions() const
unsigned int PlanarConfiguration
Definition gdcmImageCodec.h:126
void SetPlanarConfiguration(unsigned int pc)
Definition gdcmImageCodec.h:56
virtual void SetPixelFormat(PixelFormat const &pf)
Definition gdcmImageCodec.h:70
virtual bool AppendFrameEncode(std::ostream &out, const char *data, size_t datalen)
bool DoByteSwap(std::istream &is_, std::ostream &os)
bool IsLossy() const
bool RequestPlanarConfiguration
Definition gdcmImageCodec.h:123
bool CleanupUnusedBits(char *data, size_t datalen)
bool DoSimpleCopy(std::istream &is_, std::ostream &os)
virtual bool IsRowEncoder()
unsigned int GetPlanarConfiguration() const
Definition gdcmImageCodec.h:52
bool NeedOverlayCleanup
Definition gdcmImageCodec.h:130
PixelFormat & GetPixelFormat()
Definition gdcmImageCodec.h:62
virtual bool StopEncode(std::ostream &os)
~ImageCodec() override
const LookupTable & GetLUT() const
Definition gdcmImageCodec.h:93
bool NeedByteSwap
Definition gdcmImageCodec.h:129
void SetNeedByteSwap(bool b)
Definition gdcmImageCodec.h:81
virtual ImageCodec * Clone() const =0
bool Decode(DataElement const &is_, DataElement &os) override
Decode.
virtual bool IsFrameEncoder()
void SetLUT(LookupTable const &lut)
Definition gdcmImageCodec.h:89
bool GetNeedByteSwap() const
Definition gdcmImageCodec.h:77
bool LossyFlag
Definition gdcmImageCodec.h:136
bool DoPaddedCompositePixelCode(std::istream &is_, std::ostream &os)
bool CanDecode(TransferSyntax const &) const override
Return whether this decoder support this transfer syntax (can decode it)
Definition gdcmImageCodec.h:37
void SetPhotometricInterpretation(PhotometricInterpretation const &pi)
LUTPtr LUT
Definition gdcmImageCodec.h:133
LookupTable class.
Definition gdcmLookupTable.h:30
Class to represent an PhotometricInterpretation.
Definition gdcmPhotometricInterpretation.h:29
PixelFormat.
Definition gdcmPixelFormat.h:46
Class for Smart Pointer.
Definition gdcmSmartPointer.h:40
Class to manipulate Transfer Syntax.
Definition gdcmTransferSyntax.h:40
#define GDCM_EXPORT
Definition gdcmWin32.h:34
Definition gdcmASN1.h:21