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.

87 lines
2.8 KiB
C

/*=========================================================================
Program: Visualization Toolkit
Module: vtkImageReader2Factory.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 vtkImageReader2Factory
* @brief Superclass of binary file readers.
*
* vtkImageReader2Factory: This class is used to create a vtkImageReader2
* object given a path name to a file. It calls CanReadFile on all
* available readers until one of them returns true. The available reader
* list comes from three places. In the InitializeReaders function of this
* class, built-in VTK classes are added to the list, users can call
* RegisterReader, or users can create a vtkObjectFactory that has
* CreateObject method that returns a new vtkImageReader2 sub class when
* given the string "vtkImageReaderObject". This way applications can be
* extended with new readers via a plugin dll or by calling RegisterReader.
* Of course all of the readers that are part of the vtk release are made
* automatically available.
*
* @sa
* vtkImageReader2
*/
#ifndef vtkImageReader2Factory_h
#define vtkImageReader2Factory_h
#include "vtkIOImageModule.h" // For export macro
#include "vtkObject.h"
class vtkImageReader2;
class vtkImageReader2Collection;
class vtkImageReader2FactoryCleanup;
class VTKIOIMAGE_EXPORT vtkImageReader2Factory : public vtkObject
{
public:
static vtkImageReader2Factory* New();
vtkTypeMacro(vtkImageReader2Factory, vtkObject);
void PrintSelf(ostream& os, vtkIndent indent) override;
/**
* registered readers will be queried in CreateImageReader2 to
* see if they can load a given file.
*/
static void RegisterReader(vtkImageReader2* r);
/**
* open the image file, it is the callers responsibility to call
* Delete on the returned object. If no reader is found, null
* is returned.
*/
VTK_NEWINSTANCE
static vtkImageReader2* CreateImageReader2(const char* path);
/**
* The caller must allocate the vtkImageReader2Collection and pass in the
* pointer to this method.
*/
static void GetRegisteredReaders(vtkImageReader2Collection*);
protected:
vtkImageReader2Factory();
~vtkImageReader2Factory() override;
static void InitializeReaders();
private:
static vtkImageReader2Collection* AvailableReaders;
vtkImageReader2Factory(const vtkImageReader2Factory&) = delete;
void operator=(const vtkImageReader2Factory&) = delete;
friend class vtkImageReader2FactoryCleanup;
};
#endif