GDCM  2.4.5
gdcmRLECodec.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 GDCMRLECODEC_H
15 #define GDCMRLECODEC_H
16 
17 #include "gdcmImageCodec.h"
18 
19 namespace gdcm
20 {
21 
22 class Fragment;
23 class RLEInternals;
37 {
38 friend class ImageRegionReader;
39 public:
40  RLECodec();
41  ~RLECodec();
42  bool CanCode(TransferSyntax const &ts) const;
43  bool CanDecode(TransferSyntax const &ts) const;
44  bool Decode(DataElement const &is, DataElement &os);
45  unsigned long GetBufferLength() const { return BufferLength; }
46  void SetBufferLength(unsigned long l) { BufferLength = l; }
47 
48  bool Code(DataElement const &in, DataElement &out);
49  bool GetHeaderInfo(std::istream &is, TransferSyntax &ts);
50  virtual ImageCodec * Clone() const;
51 
52 protected:
53  bool DecodeExtent(
54  char *buffer,
55  unsigned int XMin, unsigned int XMax,
56  unsigned int YMin, unsigned int YMax,
57  unsigned int ZMin, unsigned int ZMax,
58  std::istream & is
59  );
60 
61  bool DecodeByStreams(std::istream &is, std::ostream &os);
62 public:
63 
64  void SetLength(unsigned long l)
65  {
66  Length = l;
67  }
68 
69 protected:
70  bool StartEncode( std::ostream & );
71  bool IsRowEncoder();
72  bool IsFrameEncoder();
73  bool AppendRowEncode( std::ostream & out, const char * data, size_t datalen );
74  bool AppendFrameEncode( std::ostream & out, const char * data, size_t datalen );
75  bool StopEncode( std::ostream & );
76 
77 private:
78  bool DecodeByStreamsCommon(std::istream &is, std::ostream &os);
79  RLEInternals *Internals;
80  unsigned long Length;
81  unsigned long BufferLength;
82  size_t DecodeFragment(Fragment const & frag, char *buffer, unsigned long llen);
83 };
84 
85 } // end namespace gdcm
86 
87 #endif //GDCMRLECODEC_H
void SetLength(unsigned long l)
Definition: gdcmRLECodec.h:64
Class to do RLE.
Definition: gdcmRLECodec.h:36
unsigned long GetBufferLength() const
Definition: gdcmRLECodec.h:45
void SetBufferLength(unsigned long l)
Definition: gdcmRLECodec.h:46
#define GDCM_EXPORT
Definition: gdcmWin32.h:34
Class to represent a Fragment.
Definition: gdcmFragment.h:43
ImageCodec.
Definition: gdcmImageCodec.h:30
Class to represent a Data Element either Implicit or Explicit.
Definition: gdcmDataElement.h:58
Class to manipulate Transfer Syntax.
Definition: gdcmTransferSyntax.h:39
ImageRegionReader.
Definition: gdcmImageRegionReader.h:29
Definition: gdcmASN1.h:20

Generated on Fri Sep 25 2015 17:58:24 for GDCM by doxygen 1.8.9.1
SourceForge.net Logo