GDCM  2.4.5
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_ns
22 {
23  class StreamImageReader;
54 {
55 public:
56  Reader();
57  virtual ~Reader();
58 
60  virtual bool Read(); // Execute()
61 
64  void SetFileName(const char *filename_native);
65 
67  void SetStream(std::istream &input_stream) {
68  Stream = &input_stream;
69  }
70 
72  const File &GetFile() const { return *F; }
73 
75  File &GetFile() { return *F; }
76 
78  void SetFile(File& file) { F = &file; }
79 
82  bool ReadUpToTag(const Tag & tag, std::set<Tag> const & skiptags = std::set<Tag>() );
83 
85  bool ReadSelectedTags(std::set<Tag> const & tags, bool readvalues = true);
86 
88  bool ReadSelectedPrivateTags(std::set<PrivateTag> const & ptags, bool readvalues = true);
89 
92  bool CanRead() const;
93 
96  size_t GetStreamCurrentPosition() const;
97 
98 protected:
99  bool ReadPreamble();
100  bool ReadMetaInformation();
101  bool ReadDataSet();
102 
104 
105  friend class StreamImageReader; //need to be friended to be able to grab the GetStreamPtr
106 
107  //this function is added for the StreamImageReader, which needs to read
108  //up to the pixel data and then stops right before reading the pixel data.
109  //it's used to get that position, so that reading can continue
110  //apace once the read function is called.
111  //so, this function gets the stream directly, and then allows for position information
112  //from the tellg function, and allows for stream/pointer manip in order
113  //to read the pixel data. Note, of course, that reading pixel elements
114  //will still have to be subject to endianness swaps, if necessary.
115  std::istream* GetStreamPtr() const { return Stream; }
116 
117 private:
118  template <typename T_Caller>
119  bool InternalReadCommon(const T_Caller &caller);
120  TransferSyntax GuessTransferSyntax();
121  std::istream *Stream;
122  std::ifstream *Ifstream;
123 };
124 
131 } // end namespace gdcm_ns
132 
133 
134 #endif //GDCMREADER_H
Reader ala DOM (Document Object Model)
Definition: gdcmReader.h:53
void SetFile(File &file)
Set/Get File.
Definition: gdcmReader.h:78
#define GDCM_EXPORT
Definition: gdcmWin32.h:34
SmartPointer< File > F
Definition: gdcmReader.h:103
File & GetFile()
Set/Get File.
Definition: gdcmReader.h:75
StreamImageReader.
Definition: gdcmStreamImageReader.h:38
Class to manipulate Transfer Syntax.
Definition: gdcmTransferSyntax.h:39
std::istream * GetStreamPtr() const
Definition: gdcmReader.h:115
Class for Smart Pointer.
Definition: gdcmObject.h:26
a DICOM File See PS 3.10 File: A File is an ordered string of zero or more bytes, where the first byt...
Definition: gdcmFile.h:33
const File & GetFile() const
Set/Get File.
Definition: gdcmReader.h:72
Class to represent a DICOM Data Element (Attribute) Tag (Group, Element). Basically an uint32_t which...
Definition: gdcmTag.h:38
void SetStream(std::istream &input_stream)
Set the open-ed stream directly.
Definition: gdcmReader.h:67

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