VTK  9.4.20241218
vtkHDRReader.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
123#ifndef vtkHDRReader_h
124#define vtkHDRReader_h
125
126#include "vtkIOImageModule.h" // For export macro
127#include "vtkImageReader.h"
128#include <string> // for std::string
129#include <vector> // for std::vector
130
131VTK_ABI_NAMESPACE_BEGIN
132class VTKIOIMAGE_EXPORT vtkHDRReader : public vtkImageReader
133{
134public:
135 static vtkHDRReader* New();
137
138 void PrintSelf(ostream& os, vtkIndent indent) override;
139
141 {
142 FORMAT_32BIT_RLE_RGBE = 0,
143 FORMAT_32BIT_RLE_XYZE
144 };
145
147
150 vtkGetMacro(Format, int);
152
154
158 vtkGetMacro(Gamma, double);
160
162
166 vtkGetMacro(Exposure, double);
168
170
174 vtkGetMacro(PixelAspect, double);
176
180 int CanReadFile(VTK_FILEPATH const char* fname) override;
181
187 const char* GetFileExtensions() override { return ".hdr .pic"; }
188
192 const char* GetDescriptiveName() override { return "Radiance HDR"; }
193
194protected:
196 ~vtkHDRReader() override;
197
198 std::string ProgramType;
200 double Gamma;
201 double Exposure;
203
207 bool FlippedX = false;
208
212 bool SwappedAxis = false;
213
214 void ExecuteInformation() override;
216 bool HDRReaderUpdateSlice(float* outPtr, int* outExt);
217 void HDRReaderUpdate(vtkImageData* data, float* outPtr);
218
223 bool HasError(istream* is);
224
225 int GetWidth() const;
226 int GetHeight() const;
227
233
234 void ConvertAllDataFromRGBToXYZ(float* outPtr, int size);
235
236 void FillOutPtrRLE(int* outExt, float*& outPtr, std::vector<unsigned char>& lineBuffer);
237 void FillOutPtrNoRLE(int* outExt, float*& outPtr, std::vector<unsigned char>& lineBuffer);
238
243 bool ReadAllFileNoRLE(istream* is, float* outPtr, int decrPtr, int* outExt);
244
249 bool ReadLineRLE(istream* is, unsigned char* lineBufferPtr);
250
254 void RGBE2Float(unsigned char rgbe[4], float& r, float& g, float& b);
255
261 static void XYZ2RGB(const float convertMatrix[3][3], float& r, float& g, float& b);
262
263private:
264 vtkHDRReader(const vtkHDRReader&) = delete;
265 void operator=(const vtkHDRReader&) = delete;
266};
267VTK_ABI_NAMESPACE_END
268#endif
general representation of visualization data
read Radiance HDR files
int CanReadFile(VTK_FILEPATH const char *fname) override
Is the given file a HDR file?
const char * GetDescriptiveName() override
Return a descriptive name for the file format that might be useful in a GUI.
FormatType Format
~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
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.
static vtkHDRReader * New()
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)
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)
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
const char * GetFileExtensions() override
Get the file extensions for this format.
std::string ProgramType
bool HasError(istream *is)
If the stream has an error, close the file and return true.
topologically and geometrically regular array of data
Superclass of transformable binary file readers.
a simple class to control print indentation
Definition vtkIndent.h:108
Store vtkAlgorithm input/output information.
#define VTK_FILEPATH