VTK  9.2.5
vtkHDRReader.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkHDRReader.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
135 #ifndef vtkHDRReader_h
136 #define vtkHDRReader_h
137 
138 #include "vtkIOImageModule.h" // For export macro
139 #include "vtkImageReader.h"
140 #include <string> // for std::string
141 #include <vector> // for std::vector
142 
143 class VTKIOIMAGE_EXPORT vtkHDRReader : public vtkImageReader
144 {
145 public:
146  static vtkHDRReader* New();
147  vtkTypeMacro(vtkHDRReader, vtkImageReader);
148 
149  void PrintSelf(ostream& os, vtkIndent indent) override;
150 
152  {
153  FORMAT_32BIT_RLE_RGBE = 0,
154  FORMAT_32BIT_RLE_XYZE
155  };
156 
158 
161  vtkGetMacro(Format, int);
163 
165 
169  vtkGetMacro(Gamma, double);
171 
173 
177  vtkGetMacro(Exposure, double);
179 
181 
185  vtkGetMacro(PixelAspect, double);
187 
191  int CanReadFile(VTK_FILEPATH const char* fname) override;
192 
198  const char* GetFileExtensions() override { return ".hdr .pic"; }
199 
203  const char* GetDescriptiveName() override { return "Radiance HDR"; }
204 
205 protected:
207  ~vtkHDRReader() override;
208 
211  double Gamma;
212  double Exposure;
213  double PixelAspect;
214 
218  bool FlippedX = false;
219 
223  bool SwappedAxis = false;
224 
225  void ExecuteInformation() override;
227  bool HDRReaderUpdateSlice(float* outPtr, int* outExt);
228  void HDRReaderUpdate(vtkImageData* data, float* outPtr);
229 
234  bool HasError(istream* is);
235 
236  int GetWidth() const;
237  int GetHeight() const;
238 
244 
245  void ConvertAllDataFromRGBToXYZ(float* outPtr, int size);
246 
247  void FillOutPtrRLE(int* outExt, float*& outPtr, std::vector<unsigned char>& lineBuffer);
248  void FillOutPtrNoRLE(int* outExt, float*& outPtr, std::vector<unsigned char>& lineBuffer);
249 
254  bool ReadAllFileNoRLE(istream* is, float* outPtr, int decrPtr, int* outExt);
255 
260  bool ReadLineRLE(istream* is, unsigned char* lineBufferPtr);
261 
265  void RGBE2Float(unsigned char rgbe[4], float& r, float& g, float& b);
266 
272  static void XYZ2RGB(const float convertMatrix[3][3], float& r, float& g, float& b);
273 
274 private:
275  vtkHDRReader(const vtkHDRReader&) = delete;
276  void operator=(const vtkHDRReader&) = delete;
277 };
278 #endif
general representation of visualization data
read Radiance HDR files
Definition: vtkHDRReader.h:144
int CanReadFile(VTK_FILEPATH const char *fname) override
Is the given file a HDR file?
FormatType Format
Definition: vtkHDRReader.h:210
const char * GetDescriptiveName() override
Return a descriptive name for the file format that might be useful in a GUI.
Definition: vtkHDRReader.h:203
~vtkHDRReader() override
void FillOutPtrNoRLE(int *outExt, float *&outPtr, std::vector< unsigned char > &lineBuffer)
static void XYZ2RGB(const float convertMatrix[3][3], float &r, float &g, float &b)
Conversion from xyz to rgb float using the 3x3 convert matrix.
void FillOutPtrRLE(int *outExt, float *&outPtr, std::vector< unsigned char > &lineBuffer)
void ConvertAllDataFromRGBToXYZ(float *outPtr, int size)
double PixelAspect
Definition: vtkHDRReader.h:213
void ExecuteDataWithInformation(vtkDataObject *out, vtkInformation *outInfo) override
This is a convenience method that is implemented in many subclasses instead of RequestData.
bool ReadLineRLE(istream *is, unsigned char *lineBufferPtr)
Read a line of the file from is into lineBuffer with RLE encoding.
bool ReadAllFileNoRLE(istream *is, float *outPtr, int decrPtr, int *outExt)
Read the file from is into outPtr with no RLE encoding.
bool HDRReaderUpdateSlice(float *outPtr, int *outExt)
static vtkHDRReader * New()
void RGBE2Float(unsigned char rgbe[4], float &r, float &g, float &b)
Standard conversion from rgbe to float pixels.
void HDRReaderUpdate(vtkImageData *data, float *outPtr)
const char * GetFileExtensions() override
Get the file extensions for this format.
Definition: vtkHDRReader.h:198
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int GetWidth() const
void ExecuteInformation() override
bool ReadHeaderData()
Read the header data and fill attributes of HDRReader, as well as DataExtent.
int GetHeight() const
std::string ProgramType
Definition: vtkHDRReader.h:209
double Exposure
Definition: vtkHDRReader.h:212
bool HasError(istream *is)
If the stream has an error, close the file and return true.
topologically and geometrically regular array of data
Definition: vtkImageData.h:163
Superclass of transformable binary file readers.
a simple class to control print indentation
Definition: vtkIndent.h:119
Store vtkAlgorithm input/output information.
@ size
Definition: vtkX3D.h:259
@ data
Definition: vtkX3D.h:321
@ string
Definition: vtkX3D.h:496
#define VTK_FILEPATH