[vtkusers] VTK Examples and C++

Nick Arini nick.arini at amersham.com
Tue Jun 15 09:41:29 EDT 2004


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>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20040615/469f7543/attachment.htm>


More information about the vtkusers mailing list