You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
3.1 KiB
C++
108 lines
3.1 KiB
C++
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: vtkPNGReader.h
|
|
|
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notice for more information.
|
|
|
|
=========================================================================*/
|
|
/**
|
|
* @class vtkPNGReader
|
|
* @brief read PNG files
|
|
*
|
|
* vtkPNGReader is a source object that reads PNG files.
|
|
* It should be able to read most any PNG file
|
|
*
|
|
* @sa
|
|
* vtkPNGWriter
|
|
*/
|
|
|
|
#ifndef vtkPNGReader_h
|
|
#define vtkPNGReader_h
|
|
|
|
#include "vtkIOImageModule.h" // For export macro
|
|
#include "vtkImageReader2.h"
|
|
|
|
class VTKIOIMAGE_EXPORT vtkPNGReader : public vtkImageReader2
|
|
{
|
|
public:
|
|
static vtkPNGReader* New();
|
|
vtkTypeMacro(vtkPNGReader, vtkImageReader2);
|
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
|
|
|
/**
|
|
* Is the given file a PNG file?
|
|
*/
|
|
int CanReadFile(const char* fname) override;
|
|
|
|
/**
|
|
* Get the file extensions for this format.
|
|
* Returns a string with a space separated list of extensions in
|
|
* the format .extension
|
|
*/
|
|
const char* GetFileExtensions() override { return ".png"; }
|
|
|
|
/**
|
|
* Return a descriptive name for the file format that might be useful in a GUI.
|
|
*/
|
|
const char* GetDescriptiveName() override { return "PNG"; }
|
|
|
|
/**
|
|
* Given a 'key' for the text chunks, fills in 'beginEndIndex'
|
|
* with the begin and end indexes. Values are stored between
|
|
* [begin, end) indexes.
|
|
*/
|
|
void GetTextChunks(const char* key, int beginEndIndex[2]);
|
|
/**
|
|
* Returns the text key stored at 'index'.
|
|
*/
|
|
const char* GetTextKey(int index);
|
|
/**
|
|
* Returns the text value stored at 'index'. A range of indexes
|
|
* that store values for a certain key can be obtained by calling
|
|
* GetTextChunks.
|
|
*/
|
|
const char* GetTextValue(int index);
|
|
/**
|
|
* Return the number of text chunks in the PNG file.
|
|
* Note that we don't process compressed or international text entries
|
|
*/
|
|
size_t GetNumberOfTextChunks();
|
|
|
|
//@{
|
|
/**
|
|
* Set/Get if data spacing should be calculated from the PNG file.
|
|
* Use default spacing if the PNG file don't have valid pixel per meter parameters.
|
|
* Default is false.
|
|
*/
|
|
vtkSetMacro(ReadSpacingFromFile, bool);
|
|
vtkGetMacro(ReadSpacingFromFile, bool);
|
|
vtkBooleanMacro(ReadSpacingFromFile, bool);
|
|
//@}
|
|
protected:
|
|
vtkPNGReader();
|
|
~vtkPNGReader() override;
|
|
|
|
void ExecuteInformation() override;
|
|
void ExecuteDataWithInformation(vtkDataObject* out, vtkInformation* outInfo) override;
|
|
template <class OT>
|
|
void vtkPNGReaderUpdate(vtkImageData* data, OT* outPtr);
|
|
template <class OT>
|
|
void vtkPNGReaderUpdate2(OT* outPtr, int* outExt, vtkIdType* outInc, long pixSize);
|
|
|
|
private:
|
|
vtkPNGReader(const vtkPNGReader&) = delete;
|
|
void operator=(const vtkPNGReader&) = delete;
|
|
|
|
class vtkInternals;
|
|
vtkInternals* Internals;
|
|
bool ReadSpacingFromFile;
|
|
};
|
|
#endif
|