GDCM  2.2.4
gdcmReader.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 GDCMREADER_H
15 #define GDCMREADER_H
16 
17 #include "gdcmFile.h"
18 
19 #include <fstream>
20 
21 namespace gdcm
22 {
23  class StreamImageReader;
54 {
55 public:
56  Reader():F(new File){
57  Stream = NULL;
58  Ifstream = NULL;
59  }
60  virtual ~Reader();
61 
63  virtual bool Read(); // Execute()
64 
67  void SetFileName(const char *filename_native);
68 
70  void SetStream(std::istream &input_stream) {
71  Stream = &input_stream;
72  }
73 
75  const File &GetFile() const { return *F; }
76 
78  File &GetFile() { return *F; }
79 
81  void SetFile(File& file) { F = &file; }
82 
85  bool ReadUpToTag(const Tag & tag, std::set<Tag> const & skiptags = std::set<Tag>() );
86 
88  bool ReadSelectedTags(std::set<Tag> const & tags);
89 
92  bool CanRead() const;
93 
94 protected:
95  bool ReadPreamble();
96  bool ReadMetaInformation();
97  bool ReadDataSet();
98 
100 
101  friend class StreamImageReader; //need to be friended to be able to grab the GetStreamPtr
102 
103  //this function is added for the StreamImageReader, which needs to read
104  //up to the pixel data and then stops right before reading the pixel data.
105  //it's used to get that position, so that reading can continue
106  //apace once the read function is called.
107  //so, this function gets the stream directly, and then allows for position information
108  //from the tellg function, and allows for stream/pointer manip in order
109  //to read the pixel data. Note, of course, that reading pixel elements
110  //will still have to be subject to endianness swaps, if necessary.
111  std::istream* GetStreamPtr() const { return Stream; }
112 
113 private:
114  template <typename T_Caller>
115  bool InternalReadCommon(const T_Caller &caller);
116  TransferSyntax GuessTransferSyntax();
117  std::istream *Stream;
118  std::ifstream *Ifstream;
119 };
120 
127 } // end namespace gdcm
128 
129 
130 #endif //GDCMREADER_H

Generated on Mon Nov 4 2013 10:59:16 for GDCM by doxygen 1.8.4
SourceForge.net Logo