Difference between revisions of "VTK/Examples/Cxx/Developers/PolyDataAlgorithmReader"
From KitwarePublic
Jump to navigationJump to searchDaviddoria (talk | contribs) m (→CMakeLists.txt) |
Daviddoria (talk | contribs) |
||
Line 31: | Line 31: | ||
{ | { | ||
public: | public: | ||
− | + | vtkTypeMacro(vtkTestReader,vtkPolyDataAlgorithm); | |
void PrintSelf(ostream& os, vtkIndent indent); | void PrintSelf(ostream& os, vtkIndent indent); | ||
Revision as of 09:33, 21 August 2010
This example demonstrates a reader that takes nothing as input and produces a vtkPolyData as output.
ReaderExample.cxx
#include <vtkSmartPointer.h>
#include <vtkPolyData.h>
#include "vtkTestReader.h"
int main (int, char *[])
{
vtkSmartPointer<vtkTestReader> reader =
vtkSmartPointer<vtkTestReader>::New();
reader->Update();
vtkPolyData* polydata = reader->GetOutput();
polydata->Print(std::cout);
return EXIT_SUCCESS;
}
vtkTestReader.h
#ifndef __vtkTestReader_h
#define __vtkTestReader_h
#include "vtkPolyDataAlgorithm.h"
class vtkTestReader : public vtkPolyDataAlgorithm
{
public:
vtkTypeMacro(vtkTestReader,vtkPolyDataAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent);
static vtkTestReader *New();
protected:
vtkTestReader();
~vtkTestReader();
int FillOutputPortInformation( int port, vtkInformation* info );
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
private:
vtkTestReader(const vtkTestReader&); // Not implemented.
void operator=(const vtkTestReader&); // Not implemented.
char* FileName;
};
#endif
vtkTestReader.cxx
#include "vtkTestReader.h"
#include "vtkObjectFactory.h"
#include "vtkStreamingDemandDrivenPipeline.h"
#include "vtkInformationVector.h"
#include "vtkInformation.h"
#include "vtkDataObject.h"
#include "vtkSmartPointer.h"
vtkCxxRevisionMacro(vtkTestReader, "$Revision: 1.70 $");
vtkStandardNewMacro(vtkTestReader);
vtkTestReader::vtkTestReader()
{
this->FileName = NULL;
this->SetNumberOfInputPorts(0);
this->SetNumberOfOutputPorts(1);
}
vtkTestReader::~vtkTestReader()
{
}
int vtkTestReader::FillOutputPortInformation( int port, vtkInformation* info )
{
if ( port == 0 )
{
info->Set(vtkDataObject::DATA_TYPE_NAME(), "vtkPolyData" );
return 1;
}
return 0;
}
int vtkTestReader::RequestData(
vtkInformation *vtkNotUsed(request),
vtkInformationVector **vtkNotUsed(inputVector),
vtkInformationVector *outputVector)
{
// get the info object
vtkInformation *outInfo = outputVector->GetInformationObject(0);
// get the ouptut
vtkPolyData *output = vtkPolyData::SafeDownCast(
outInfo->Get(vtkDataObject::DATA_OBJECT()));
vtkSmartPointer<vtkPolyData> polydata = vtkSmartPointer<vtkPolyData>::New();
vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
points->InsertNextPoint(0.0, 0.0, 0.0);
polydata->SetPoints(points);
//output = polydata; //doesn't work
output->ShallowCopy(polydata);
return 1;
}
//----------------------------------------------------------------------------
void vtkTestReader::PrintSelf(ostream& os, vtkIndent indent)
{
this->Superclass::PrintSelf(os,indent);
os << indent << "File Name: "
<< (this->FileName ? this->FileName : "(none)") << "\n";
}
CMakeLists.txt
cmake_minimum_required(VERSION 2.6)
PROJECT(vtkPolyDataAlgorithmDemo)
FIND_PACKAGE(VTK REQUIRED)
INCLUDE(${VTK_USE_FILE})
ADD_EXECUTABLE(ReaderExample ReaderExample.cxx vtkTestReader.cxx)
TARGET_LINK_LIBRARIES(ReaderExample vtkHybrid)