VTK  9.7.20260712
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
124#ifndef vtkHDRReader_h
125#define vtkHDRReader_h
126
127#include "vtkIOImageModule.h" // For export macro
128#include "vtkImageReader.h"
129#include <string> // for std::string
130#include <vector> // for std::vector
131
132VTK_ABI_NAMESPACE_BEGIN
133class VTKIOIMAGE_EXPORT vtkHDRReader : public vtkImageReader
134{
135public:
136 static vtkHDRReader* New();
138
139 void PrintSelf(ostream& os, vtkIndent indent) override;
140
146
148
151 vtkGetMacro(Format, int);
153
155
159 vtkGetMacro(Gamma, double);
161
163
167 vtkGetMacro(Exposure, double);
169
171
175 vtkGetMacro(PixelAspect, double);
177
179
184 int CanReadFile(VTK_FILEPATH const char* fname) override;
185 int CanReadFile(vtkResourceStream* stream) override;
187
193 const char* GetFileExtensions() override { return ".hdr .pic"; }
194
198 const char* GetDescriptiveName() override { return "Radiance HDR"; }
199
200protected:
202 ~vtkHDRReader() override;
203
204 std::string ProgramType;
206 double Gamma;
207 double Exposure;
209
213 bool FlippedX = false;
214
218 bool SwappedAxis = false;
219
220 void ExecuteInformation() override;
222 bool HDRReaderUpdateSlice(float* outPtr, int* outExt);
223 void HDRReaderUpdate(vtkImageData* data, float* outPtr);
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
242 void RGBE2Float(unsigned char rgbe[4], float& r, float& g, float& b);
243
249 static void XYZ2RGB(const float convertMatrix[3][3], double gamma, float& r, float& g, float& b);
250
251private:
252 vtkHDRReader(const vtkHDRReader&) = delete;
253 void operator=(const vtkHDRReader&) = delete;
254
259 bool ReadAllFileNoRLE(vtkResourceStream* stream, float* outPtr, int decrPtr, int* outExt);
260
265 bool ReadLineRLE(vtkResourceStream* stream, unsigned char* lineBufferPtr);
266
267 // Internal ExecuteInformation() validation flag
268 bool Validated = false;
269};
270VTK_ABI_NAMESPACE_END
271#endif
general representation of visualization data
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)
bool FlippedX
If true, the X axis has been flipped.
int CanReadFile(vtkResourceStream *stream) override
Return 1 if, after a quick check of file header, it looks like the provided file or stream can be rea...
int CanReadFile(const char *fname) override
Return 1 if, after a quick check of file header, it looks like the provided file or stream can be rea...
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.
static vtkHDRReader * New()
static void XYZ2RGB(const float convertMatrix[3][3], double gamma, float &r, float &g, float &b)
Conversion from xyz to rgb float using the 3x3 convert matrix.
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)
bool SwappedAxis
If true, the Y axis is the X, and the height and width has been swapped.
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
topologically and geometrically regular array of data
a simple class to control print indentation
Definition vtkIndent.h:108
Store vtkAlgorithm input/output information.
Abstract class used for custom streams.
#define VTK_FILEPATH