VTK/Examples/Developers/PassInputTypeAlgorithm
From KitwarePublic
< VTK | Examples | Developers
Contents |
FilterExample.cxx
#include <vtkSmartPointer.h> #include <vtkPoints.h> #include <vtkPolyData.h> #include "vtkTestFilter.h" int main(int, char *[]) { vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New(); points->InsertNextPoint(0.0, 0.0, 0.0); points->InsertNextPoint(0.0, 0.0, 1.0); vtkSmartPointer<vtkPolyData> inputPolydata = vtkSmartPointer<vtkPolyData>::New(); inputPolydata->SetPoints(points); std::cout << "Input points: " << inputPolydata->GetNumberOfPoints() <<std:: endl; vtkSmartPointer<vtkTestFilter> filter = vtkSmartPointer<vtkTestFilter>::New(); filter->SetInput(inputPolydata); filter->Update(); vtkPolyData* outputPolydata = vtkPolyData::SafeDownCast(filter->GetOutput()); std::cout << "Output points: " << outputPolydata->GetNumberOfPoints() << std::endl; return EXIT_SUCCESS; }
vtkTestFilter.h
// .NAME vtkTestFilter // .SECTION Description // vtkTestFilter #ifndef __vtkTestFilter_h #define __vtkTestFilter_h #include "vtkPassInputTypeAlgorithm.h" class vtkTestFilter : public vtkPassInputTypeAlgorithm { public: vtkTypeMacro(vtkTestFilter,vtkPassInputTypeAlgorithm); void PrintSelf(ostream& os, vtkIndent indent); static vtkTestFilter *New(); protected: vtkTestFilter(){} ~vtkTestFilter(){} int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *); private: vtkTestFilter(const vtkTestFilter&); // Not implemented. void operator=(const vtkTestFilter&); // Not implemented. }; #endif
vtkTestFilter.cxx
#include "vtkTestFilter.h" #include "vtkObjectFactory.h" #include "vtkStreamingDemandDrivenPipeline.h" #include "vtkInformationVector.h" #include "vtkInformation.h" #include "vtkDataObject.h" #include "vtkSmartPointer.h" #include "vtkPolyData.h" vtkStandardNewMacro(vtkTestFilter); int vtkTestFilter::RequestData(vtkInformation *vtkNotUsed(request), vtkInformationVector **inputVector, vtkInformationVector *outputVector) { // Get the info objects vtkInformation *inInfo = inputVector[0]->GetInformationObject(0); vtkInformation *outInfo = outputVector->GetInformationObject(0); // Get the input and ouptut vtkPolyData *input = vtkPolyData::SafeDownCast( inInfo->Get(vtkDataObject::DATA_OBJECT())); vtkPolyData *output = vtkPolyData::SafeDownCast( outInfo->Get(vtkDataObject::DATA_OBJECT())); input->GetPoints()->InsertNextPoint(1.0, 1.0, 1.0); output->ShallowCopy(input); return 1; } //---------------------------------------------------------------------------- void vtkTestFilter::PrintSelf(ostream& os, vtkIndent indent) { this->Superclass::PrintSelf(os,indent); }
CMakeLists.txt
cmake_minimum_required(VERSION 2.6) PROJECT(vtkPolyDataAlgorithmDemo) FIND_PACKAGE(VTK REQUIRED) INCLUDE(${VTK_USE_FILE}) ADD_EXECUTABLE(FilterExample FilterExample.cxx vtkTestFilter.cxx) TARGET_LINK_LIBRARIES(FilterExample vtkHybrid)