/*========================================================================= Program: Visualization Toolkit Module: $RCSfile: vtkGraphToGlyphs.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. =========================================================================*/ /*------------------------------------------------------------------------- Copyright 2008 Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains certain rights in this software. -------------------------------------------------------------------------*/ // .NAME vtkGraphToGlyphs - create glyphs for graph vertices // // .SECTION Description // Converts a vtkGraph to a vtkPolyData containing a glyph for each vertex. // This assumes that the points // of the graph have already been filled (perhaps by vtkGraphLayout). // The glyphs will automatically be scaled to be the same size in screen // coordinates. To do this the filter requires a pointer to the renderer // into which the glyphs will be rendered. #ifndef __vtkGraphToGlyphs_h #define __vtkGraphToGlyphs_h #include "vtkPolyDataAlgorithm.h" #include "vtkSmartPointer.h" // for SP ivars class vtkDistanceToCamera; class vtkGraphToPoints; class vtkGlyph3D; class vtkGlyphSource2D; class vtkRenderer; class vtkSphereSource; class VTK_RENDERING_EXPORT vtkGraphToGlyphs : public vtkPolyDataAlgorithm { public: static vtkGraphToGlyphs *New(); vtkTypeRevisionMacro(vtkGraphToGlyphs,vtkPolyDataAlgorithm); void PrintSelf(ostream& os, vtkIndent indent); //BTX enum { VERTEX = 1, DASH, CROSS, THICKCROSS, TRIANGLE, SQUARE, CIRCLE, DIAMOND, SPHERE }; //ETX // Description: // The glyph type, specified as one of the enumerated values in this // class. VERTEX is a special glyph that cannot be scaled, but instead // is rendered as an OpenGL vertex primitive. This may appear as a box // or circle depending on the hardware. vtkSetMacro(GlyphType, int); vtkGetMacro(GlyphType, int); // Description: // Whether to fill the glyph, or to just render the outline. vtkSetMacro(Filled, bool); vtkGetMacro(Filled, bool); vtkBooleanMacro(Filled, bool); // Description: // Set the desired screen size of each glyph. If you are using scaling, // this will be the size of the glyph when rendering an object with // scaling value 1.0. vtkSetMacro(ScreenSize, double); vtkGetMacro(ScreenSize, double); // Description: // The renderer in which the glyphs will be placed. virtual void SetRenderer(vtkRenderer* ren); virtual vtkRenderer* GetRenderer(); // Description: // Whether to use the input array to process in order to scale the // vertices. virtual void SetScaling(bool b); virtual bool GetScaling(); // Description: // The modified time of this filter. virtual unsigned long GetMTime(); protected: vtkGraphToGlyphs(); ~vtkGraphToGlyphs(); // Description: // Convert the vtkGraph into vtkPolyData. int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *); // Description: // Set the input type of the algorithm to vtkGraph. int FillInputPortInformation(int port, vtkInformation* info); //BTX vtkSmartPointer GraphToPoints; vtkSmartPointer GlyphSource; vtkSmartPointer Sphere; vtkSmartPointer Glyph; vtkSmartPointer DistanceToCamera; int GlyphType; bool Filled; double ScreenSize; //ETX private: vtkGraphToGlyphs(const vtkGraphToGlyphs&); // Not implemented. void operator=(const vtkGraphToGlyphs&); // Not implemented. }; #endif