GDCM 2.2.1

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

- File List
- File Members

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;
36 class GDCM_EXPORT RLECodec : public ImageCodec
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