Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

140 lines
5.6 KiB

/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkProgrammableGlyphFilter.h,v $
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 vtkProgrammableGlyphFilter - control the generation and placement of glyphs at input points
// .SECTION Description
// vtkProgrammableGlyphFilter is a filter that allows you to place a glyph at
// each input point in the dataset. In addition, the filter is programmable
// which means the user has control over the generation of the glyph. The
// glyphs can be controlled via the point data attributes (e.g., scalars,
// vectors, etc.) or any other information in the input dataset.
//
// This is the way the filter works. You must define an input dataset which
// at a minimum contains points with associated attribute values. Also, the
// Source instance variable must be set which is of type vtkPolyData. Then,
// for each point in the input, the PointId is set to the current point id,
// and a user-defined function is called (i.e., GlyphMethod). In this method
// you can manipulate the Source data (including changing to a different
// Source object). After the GlyphMethod is called,
// vtkProgrammableGlyphFilter will invoke an Update() on its Source object,
// and then copy its data to the output of the
// vtkProgrammableGlyphFilter. Therefore the output of this filter is of type
// vtkPolyData.
//
// Another option to this filter is the way you color the glyphs. You can use
// the scalar data from the input or the source. The instance variable
// ColorMode controls this behavior.
// .SECTION Caveats
// This filter operates on point data attributes. If you want to use cell
// data attributes, use a filter like vtkCellCenters to generate points at
// the centers of cells, and then use these points.
//
// Note that the data attributes (cell and point) are passed to the output of
// this filter from the Source object. This works well as long as you are not
// changing the class of the Source object during execution. However, if the
// class of the Source object changes, then the potential exists that the
// data attributes might change during execution (e.g., scalars available
// from one source and not the next), possibly fouling up the copying of data
// attributes to the output. In this case, you may have to manually set the
// output's copy flags (e.g., CopyScalarsOn/Off(), CopyVectorsOn/Off(), etc.)
// to control what's being copied.
// .SECTION See Also
// vtkGlyph3D vtkTensorGlyph vtkCellCenters
#ifndef __vtkProgrammableGlyphFilter_h
#define __vtkProgrammableGlyphFilter_h
#define VTK_COLOR_BY_INPUT 0
#define VTK_COLOR_BY_SOURCE 1
#include "vtkPolyDataAlgorithm.h"
class vtkPointData;
class VTK_GRAPHICS_EXPORT vtkProgrammableGlyphFilter : public vtkPolyDataAlgorithm
{
public:
vtkTypeRevisionMacro(vtkProgrammableGlyphFilter,vtkPolyDataAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent);
// Description
// Construct object with NULL GlyphMethod() and no source object. The ColorMode
// is set to color by the input.
static vtkProgrammableGlyphFilter *New();
// Description:
// Set/Get the source to use for this glyph.
// Note: you can change the source during execution of this filter.
void SetSource(vtkPolyData *source);
vtkPolyData *GetSource();
// Description:
// Specify function to be called for each input point.
void SetGlyphMethod(void (*f)(void *), void *arg);
// Description:
// Set the arg delete method. This is used to free user memory that might
// be associated with the GlyphMethod().
void SetGlyphMethodArgDelete(void (*f)(void *));
// Description:
// Get the current point id during processing. Value only valid during the
// Execute() method of this filter. (Meant to be called by the GlyphMethod().)
vtkGetMacro(PointId, vtkIdType);
// Description:
// Get the current point coordinates during processing. Value only valid during the
// Execute() method of this filter. (Meant to be called by the GlyphMethod().)
vtkGetVector3Macro(Point,double);
// Description:
// Get the set of point data attributes for the input. A convenience to the
// programmer to be used in the GlyphMethod(). Only valid during the Execute()
// method of this filter.
vtkGetObjectMacro(PointData,vtkPointData);
// Description:
// Either color by the input or source scalar data.
vtkSetMacro(ColorMode,int);
vtkGetMacro(ColorMode,int);
void SetColorModeToColorByInput()
{this->SetColorMode(VTK_COLOR_BY_INPUT);};
void SetColorModeToColorBySource()
{this->SetColorMode(VTK_COLOR_BY_SOURCE);};
const char *GetColorModeAsString();
protected:
vtkProgrammableGlyphFilter();
~vtkProgrammableGlyphFilter();
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
virtual int FillInputPortInformation(int, vtkInformation *);
double Point[3]; // Coordinates of point
vtkIdType PointId; // Current point id during processing
vtkPointData *PointData;
int ColorMode;
void (*GlyphMethod)(void *); // Support GlyphMethod
void (*GlyphMethodArgDelete)(void *);
void *GlyphMethodArg;
private:
vtkProgrammableGlyphFilter(const vtkProgrammableGlyphFilter&); // Not implemented.
void operator=(const vtkProgrammableGlyphFilter&); // Not implemented.
};
#endif