mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
164 lines
6.4 KiB
C++
164 lines
6.4 KiB
C++
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: vtkImageAlgorithm.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.
|
|
|
|
=========================================================================*/
|
|
// .NAME vtkImageAlgorithm - Generic algorithm superclass for image algs
|
|
// .SECTION Description
|
|
// vtkImageAlgorithm is a filter superclass that hides much of the
|
|
// pipeline complexity. It handles breaking the pipeline execution
|
|
// into smaller extents so that the vtkImageData limits are observed. It
|
|
// also provides support for multithreading. If you don't need any of this
|
|
// functionality, consider using vtkSimpleImageToImageFilter instead.
|
|
// .SECTION See also
|
|
// vtkSimpleImageToImageFilter
|
|
|
|
#ifndef vtkImageAlgorithm_h
|
|
#define vtkImageAlgorithm_h
|
|
|
|
#include "vtkCommonExecutionModelModule.h" // For export macro
|
|
#include "vtkAlgorithm.h"
|
|
|
|
class vtkDataSet;
|
|
class vtkImageData;
|
|
|
|
class VTKCOMMONEXECUTIONMODEL_EXPORT vtkImageAlgorithm : public vtkAlgorithm
|
|
{
|
|
public:
|
|
vtkTypeMacro(vtkImageAlgorithm,vtkAlgorithm);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
|
|
// Description:
|
|
// Get the output data object for a port on this algorithm.
|
|
vtkImageData* GetOutput();
|
|
vtkImageData* GetOutput(int);
|
|
virtual void SetOutput(vtkDataObject* d);
|
|
|
|
// Description:
|
|
// Process a request from the executive. For vtkImageAlgorithm, the
|
|
// request will be delegated to one of the following methods: RequestData,
|
|
// RequestInformation, or RequestUpdateExtent.
|
|
virtual int ProcessRequest(vtkInformation*,
|
|
vtkInformationVector**,
|
|
vtkInformationVector*);
|
|
|
|
// Description:
|
|
// Assign a data object as input. Note that this method does not
|
|
// establish a pipeline connection. Use SetInputConnection to
|
|
// setup a pipeline connection.
|
|
void SetInputData(vtkDataObject *);
|
|
void SetInputData(int, vtkDataObject*);
|
|
|
|
// Description:
|
|
// Get a data object for one of the input port connections. The use
|
|
// of this method is strongly discouraged, but some filters that were
|
|
// written a long time ago still use this method.
|
|
vtkDataObject *GetInput(int port);
|
|
vtkDataObject *GetInput() { return this->GetInput(0); };
|
|
vtkImageData *GetImageDataInput(int port);
|
|
|
|
// Description:
|
|
// Assign a data object as input. Note that this method does not
|
|
// establish a pipeline connection. Use SetInputConnection to
|
|
// setup a pipeline connection.
|
|
virtual void AddInputData(vtkDataObject *);
|
|
virtual void AddInputData(int, vtkDataObject*);
|
|
|
|
protected:
|
|
vtkImageAlgorithm();
|
|
~vtkImageAlgorithm();
|
|
|
|
// Description:
|
|
// Subclasses can reimplement this method to collect information
|
|
// from their inputs and set information for their outputs.
|
|
virtual int RequestInformation(vtkInformation* request,
|
|
vtkInformationVector** inputVector,
|
|
vtkInformationVector* outputVector);
|
|
|
|
|
|
// Description:
|
|
// Subclasses can reimplement this method to translate the update
|
|
// extent requests from each output port into update extent requests
|
|
// for the input connections.
|
|
virtual int RequestUpdateExtent(vtkInformation*,
|
|
vtkInformationVector**,
|
|
vtkInformationVector*);
|
|
|
|
// Description:
|
|
// Convenience method to copy the scalar type and number of components
|
|
// from the input data to the output data. You will generally want to
|
|
// call this from inside your RequestInformation method, unless you
|
|
// want the output data to have a different scalar type or number of
|
|
// components from the input.
|
|
virtual void CopyInputArrayAttributesToOutput(vtkInformation* request,
|
|
vtkInformationVector** inputVector,
|
|
vtkInformationVector* outputVector);
|
|
|
|
|
|
// Description:
|
|
// This is called in response to a REQUEST_DATA request from the
|
|
// executive. Subclasses should override either this method or the
|
|
// ExecuteDataWithInformation method in order to generate data for
|
|
// their outputs. For images, the output arrays will already be
|
|
// allocated, so all that is necessary is to fill in the voxel values.
|
|
virtual int RequestData(vtkInformation *request,
|
|
vtkInformationVector** inputVector,
|
|
vtkInformationVector* outputVector);
|
|
|
|
// Description:
|
|
// This is a convenience method that is implemented in many subclasses
|
|
// instead of RequestData. It is called by RequestData.
|
|
virtual void ExecuteDataWithInformation(vtkDataObject *output,
|
|
vtkInformation* outInfo);
|
|
|
|
// Description
|
|
// This method is the old style execute method, provided for the sake
|
|
// of backwards compatibility with older filters and readers.
|
|
virtual void ExecuteData(vtkDataObject *output);
|
|
virtual void Execute();
|
|
|
|
// Description:
|
|
// Allocate the output data. This will be called before RequestData,
|
|
// it is not necessary for subclasses to call this method themselves.
|
|
virtual void AllocateOutputData(vtkImageData *out,
|
|
vtkInformation* outInfo,
|
|
int *uExtent);
|
|
virtual vtkImageData *AllocateOutputData(vtkDataObject *out,
|
|
vtkInformation *outInfo);
|
|
|
|
// Description:
|
|
// Copy the other point and cell data. Subclasses will almost never
|
|
// need to reimplement this method.
|
|
virtual void CopyAttributeData(vtkImageData *in, vtkImageData *out,
|
|
vtkInformationVector** inputVector);
|
|
|
|
// Description:
|
|
// These method should be reimplemented by subclasses that have
|
|
// more than a single input or single output.
|
|
// See vtkAlgorithm for more information.
|
|
virtual int FillOutputPortInformation(int port, vtkInformation* info);
|
|
virtual int FillInputPortInformation(int port, vtkInformation* info);
|
|
|
|
private:
|
|
vtkImageAlgorithm(const vtkImageAlgorithm&); // Not implemented.
|
|
void operator=(const vtkImageAlgorithm&); // Not implemented.
|
|
};
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|