GDCM  2.2.4
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 
51 protected:
52  bool DecodeExtent(
53  char *buffer,
54  unsigned int XMin, unsigned int XMax,
55  unsigned int YMin, unsigned int YMax,
56  unsigned int ZMin, unsigned int ZMax,
57  std::istream & is
58  );
59 
60  bool DecodeByStreams(std::istream &is, std::ostream &os);
61 public:
62 
63  void SetLength(unsigned long l)
64  {
65  Length = l;
66  }
67 private:
68  bool DecodeByStreamsCommon(std::istream &is, std::ostream &os);
69  RLEInternals *Internals;
70  unsigned long Length;
71  unsigned long BufferLength;
72  size_t DecodeFragment(Fragment const & frag, char *buffer, unsigned long llen);
73 };
74 
75 } // end namespace gdcm
76 
77 #endif //GDCMRLECODEC_H

Generated on Mon Sep 9 2013 14:11:45 for GDCM by doxygen 1.8.4
SourceForge.net Logo