[vtkusers] VTK Examples and C++
Amy Henderson
amy.henderson at kitware.com
Tue Jun 15 09:51:51 EDT 2004
Hi Nick,
The problem with your C++ code is that you're missing a couple of include
files, specifically vtkPolyData.h and vtkImageData.h. Otherwise your
program doesn't know that vtkPolyData (the output of vtkWarpScalar) is a
subclass of vtkPointSet and that vtkImageData (the output of vtkBMPReader)
is a subclass of vtkDataSet.
- Amy
At 09:41 AM 6/15/2004, Nick Arini wrote:
>Dear VTK Users,
>
>I am learning VTK by example. I am however not at all experienced in Tcl
>or Python. There are not a great many C++ examples in VTK/Examples.
>
>My assumption therefore was that I could read the Tcl code and convert it
>directly to C++. I have for example done that for the Tcl example
>mentioned on pp391 of the VTK book:
>
>Examples/VisualizationAlgorithms/Tcl/imageWarp.tcl
>
>I converted this line for line into what I thought was equivalent C++ code
>(see below), however the objects don't seem to be compatible as C++. The
>compiler errors describing mismatched prototypes is also pasted in below.
>
>What is the difference if any between VTK code written in Tcl (or python)
>and pure C++? (Or what have I done bad?)
>
>Why are there so few C++ examples in VTK/Examples?
>
>Is there any interest in more C++ examples?
>
>
>Best regards and thanks,
>
>Nick
>
>
><begin Tcl>
>
>vtkBMPReader reader
> reader SetFileName $VTK_DATA_ROOT/Data/masonry.bmp
>
>vtkImageLuminance luminance
> luminance SetInput [reader GetOutput]
>
>vtkImageDataGeometryFilter geometry
> geometry SetInput [luminance GetOutput]
>
>vtkWarpScalar warp
> warp SetInput [geometry GetOutput]
> warp SetScaleFactor -0.1
>
>vtkMergeFilter merge
> merge SetGeometry [warp GetOutput]
> merge SetScalars [reader GetOutput]
>
>vtkDataSetMapper mapper
> mapper SetInput [merge GetOutput]
> mapper SetScalarRange 0 255
> mapper ImmediateModeRenderingOff
>
><end Tcl>
>
>
><begin C++>
>
>#include <vtkTIFFReader.h>
>#include <vtkImageLuminance.h>
>#include <vtkImageDataGeometryFilter.h>
>#include <vtkWarpScalar.h>
>#include <vtkMergeFilter.h>
>#include <vtkDataSetMapper.h>
>
>int main( int argc, char * argv[] )
>{
>
> vtkTIFFReader *reader = vtkTIFFReader::New();
> reader->SetFilePrefix("test.tif");
> reader->SetFilePattern("%s");
>
> vtkImageLuminance *luminance = vtkImageLuminance::New();
> luminance->SetInput( reader->GetOutput() );
>
> vtkImageDataGeometryFilter *geometry = vtkImageDataGeometryFilter::New();
> geometry->SetInput( luminance->GetOutput() );
>
> vtkWarpScalar *warp = vtkWarpScalar::New();
> warp->SetInput( geometry->GetOutput() );
> warp->SetScaleFactor( -0.1 );
>
> vtkMergeFilter *merge = vtkMergeFilter::New();
> merge->SetGeometry( warp->GetOutput() );
> merge->SetScalars( reader->GetOutput() );
>
> vtkDataSetMapper *mapper = vtkDataSetMapper::New();
> mapper->SetInput( merge->GetOutput() );
> mapper->SetScalarRange( 0, 255 );
> mapper->ImmediateModeRenderingOff();
>
> return 0;
>}
>
><end C++>
>
>
><begin compiler>
>
>[nicha at localhost Linux_x86]$ make
>Building dependencies cmake.check_depends...
>-- Loading VTK CMake commands
>-- Loading VTK CMake commands - done
>Building object file vtkimage.o...
>/home/nicha/vtkimage/vtkimage.cpp: In function `int main(int, char**)':
>/home/nicha/vtkimage/vtkimage.cpp:38: error: no matching function for call
>to `
> vtkWarpScalar::SetInput(vtkPolyData*)'
>/usr/local/include/vtk/vtkPointSetToPointSetFilter.h:57: error: candidates
>are:
> void vtkPointSetToPointSetFilter::SetInput(vtkPointSet*)
>/home/nicha/vtkimage/vtkimage.cpp:42: error: no matching function for call
>to `
> vtkMergeFilter::SetGeometry(vtkPointSet*)'
>/usr/local/include/vtk/vtkMergeFilter.h:41: error: candidates are: void
> vtkMergeFilter::SetGeometry(vtkDataSet*)
>/home/nicha/vtkimage/vtkimage.cpp:43: error: no matching function for call
>to `
> vtkMergeFilter::SetScalars(vtkImageData*)'
>/usr/local/include/vtk/vtkMergeFilter.h:46: error: candidates are: void
> vtkMergeFilter::SetScalars(vtkDataSet*)
>make[1]: *** [vtkimage.o] Error 1
>make: *** [default_target] Error 2
>
><end compiler>
>_______________________________________________
>This is the private VTK discussion list.
>Please keep messages on-topic. Check the FAQ at:
><http://public.kitware.com/cgi-bin/vtkfaq>
>Follow this link to subscribe/unsubscribe:
>http://www.vtk.org/mailman/listinfo/vtkusers
More information about the vtkusers
mailing list