/usr/include/gdcm-2.6/gdcmImageCodec.h is in libgdcm2-dev 2.6.3-3ubuntu3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 | /*=========================================================================
Program: GDCM (Grassroots DICOM). A DICOM library
Copyright (c) 2006-2011 Mathieu Malaterre
All rights reserved.
See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
#ifndef GDCMIMAGECODEC_H
#define GDCMIMAGECODEC_H
#include "gdcmCodec.h"
#include "gdcmPhotometricInterpretation.h"
#include "gdcmLookupTable.h"
#include "gdcmSmartPointer.h"
#include "gdcmPixelFormat.h"
namespace gdcm
{
/**
* \brief ImageCodec
* \note Main codec, this is a central place for all implementation
*/
class GDCM_EXPORT ImageCodec : public Codec
{
friend class ImageChangePhotometricInterpretation;
public:
ImageCodec();
~ImageCodec();
bool CanCode(TransferSyntax const &) const { return false; }
bool CanDecode(TransferSyntax const &) const { return false; }
bool Decode(DataElement const &is_, DataElement &os);
bool IsLossy() const;
void SetLossyFlag(bool l);
bool GetLossyFlag() const;
virtual bool GetHeaderInfo(std::istream &is_, TransferSyntax &ts);
virtual ImageCodec * Clone() const = 0;
protected:
bool DecodeByStreams(std::istream &is_, std::ostream &os);
virtual bool IsValid(PhotometricInterpretation const &pi);
public:
unsigned int GetPlanarConfiguration() const
{
return PlanarConfiguration;
}
void SetPlanarConfiguration(unsigned int pc)
{
assert( pc == 0 || pc == 1 );
PlanarConfiguration = pc;
}
PixelFormat &GetPixelFormat()
{
return PF;
}
const PixelFormat &GetPixelFormat() const
{
return PF;
}
virtual void SetPixelFormat(PixelFormat const &pf)
{
PF = pf;
}
const PhotometricInterpretation &GetPhotometricInterpretation() const;
void SetPhotometricInterpretation(PhotometricInterpretation const &pi);
bool GetNeedByteSwap() const
{
return NeedByteSwap;
}
void SetNeedByteSwap(bool b)
{
NeedByteSwap = b;
}
void SetNeedOverlayCleanup(bool b)
{
NeedOverlayCleanup = b;
}
void SetLUT(LookupTable const &lut)
{
LUT = SmartPointer<LookupTable>( const_cast<LookupTable*>(&lut) );
}
const LookupTable &GetLUT() const
{
return *LUT;
}
void SetDimensions(const unsigned int d[3]);
void SetDimensions(const std::vector<unsigned int> & d);
const unsigned int *GetDimensions() const { return Dimensions; }
void SetNumberOfDimensions(unsigned int dim);
unsigned int GetNumberOfDimensions() const;
protected:
// Streaming (write) API:
/// This is a high level API to encode in a streaming fashion. Each plugin
/// will handle differently the caching mechanism so that a limited memory is
/// used when compressing dataset.
/// Codec will fall into two categories:
/// - Full row encoder: only a single scanline (row) of data is needed to be loaded at a time;
/// - Full frame encoder (default): a complete frame (row x col) is needed to be loaded at a time
friend class FileChangeTransferSyntax;
virtual bool StartEncode( std::ostream & os );
virtual bool IsRowEncoder();
virtual bool IsFrameEncoder();
virtual bool AppendRowEncode( std::ostream & out, const char * data, size_t datalen );
virtual bool AppendFrameEncode( std::ostream & out, const char * data, size_t datalen );
virtual bool StopEncode( std::ostream & os);
protected:
bool RequestPlanarConfiguration;
bool RequestPaddedCompositePixelCode;
//private:
unsigned int PlanarConfiguration;
PhotometricInterpretation PI;
PixelFormat PF;
bool NeedByteSwap;
bool NeedOverlayCleanup;
typedef SmartPointer<LookupTable> LUTPtr;
LUTPtr LUT;
unsigned int Dimensions[3]; // FIXME
unsigned int NumberOfDimensions;
bool LossyFlag;
bool DoOverlayCleanup(std::istream &is_, std::ostream &os);
bool DoByteSwap(std::istream &is_, std::ostream &os);
bool DoYBR(std::istream &is_, std::ostream &os);
bool DoPlanarConfiguration(std::istream &is_, std::ostream &os);
bool DoSimpleCopy(std::istream &is_, std::ostream &os);
bool DoPaddedCompositePixelCode(std::istream &is_, std::ostream &os);
bool DoInvertMonochrome(std::istream &is_, std::ostream &os);
//template <typename T>
//bool DoInvertPlanarConfiguration(T *output, const T *input, uint32_t length);
};
} // end namespace gdcm
#endif //GDCMIMAGECODEC_H
|