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.
 
 
 
 
 
 

178 lines
6.8 KiB

/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkGlyphSource2D.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 vtkGlyphSource2D - create 2D glyphs represented by vtkPolyData
// .SECTION Description
// vtkGlyphSource2D can generate a family of 2D glyphs each of which lies
// in the x-y plane (i.e., the z-coordinate is zero). The class is a helper
// class to be used with vtkGlyph2D and vtkXYPlotActor.
//
// To use this class, specify the glyph type to use and its
// attributes. Attributes include its position (i.e., center point), scale,
// color, and whether the symbol is filled or not (a polygon or closed line
// sequence). You can also put a short line through the glyph running from -x
// to +x (the glyph looks like it's on a line), or a cross.
#ifndef __vtkGlyphSource2D_h
#define __vtkGlyphSource2D_h
#include "vtkPolyDataAlgorithm.h"
#define VTK_NO_GLYPH 0
#define VTK_VERTEX_GLYPH 1
#define VTK_DASH_GLYPH 2
#define VTK_CROSS_GLYPH 3
#define VTK_THICKCROSS_GLYPH 4
#define VTK_TRIANGLE_GLYPH 5
#define VTK_SQUARE_GLYPH 6
#define VTK_CIRCLE_GLYPH 7
#define VTK_DIAMOND_GLYPH 8
#define VTK_ARROW_GLYPH 9
#define VTK_THICKARROW_GLYPH 10
#define VTK_HOOKEDARROW_GLYPH 11
class vtkPoints;
class vtkUnsignedCharArray;
class vtkCellArray;
class VTK_GRAPHICS_EXPORT vtkGlyphSource2D : public vtkPolyDataAlgorithm
{
public:
vtkTypeRevisionMacro(vtkGlyphSource2D,vtkPolyDataAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Construct a vertex glyph centered at the origin, scale 1.0, white in
// color, filled, with line segment passing through the point.
static vtkGlyphSource2D *New();
// Description:
// Set the center of the glyph. By default the center is (0,0,0).
vtkSetVector3Macro(Center,double);
vtkGetVectorMacro(Center,double,3);
// Description:
// Set the scale of the glyph. Note that the glyphs are designed
// to fit in the (1,1) rectangle.
vtkSetClampMacro(Scale,double,0.0,VTK_DOUBLE_MAX);
vtkGetMacro(Scale,double);
// Description:
// Set the scale of optional portions of the glyph (e.g., the
// dash and cross is DashOn() and CrossOn()).
vtkSetClampMacro(Scale2,double,0.0,VTK_DOUBLE_MAX);
vtkGetMacro(Scale2,double);
// Description:
// Set the color of the glyph. The default color is white.
vtkSetVector3Macro(Color,double);
vtkGetVectorMacro(Color,double,3);
// Description:
// Specify whether the glyph is filled (a polygon) or not (a
// closed polygon defined by line segments). This only applies
// to 2D closed glyphs.
vtkSetMacro(Filled,int);
vtkGetMacro(Filled,int);
vtkBooleanMacro(Filled,int);
// Description:
// Specify whether a short line segment is drawn through the
// glyph. (This is in addition to the glyph. If the glyph type
// is set to "Dash" there is no need to enable this flag.)
vtkSetMacro(Dash,int);
vtkGetMacro(Dash,int);
vtkBooleanMacro(Dash,int);
// Description:
// Specify whether a cross is drawn as part of the glyph. (This
// is in addition to the glyph. If the glyph type is set to
// "Cross" there is no need to enable this flag.)
vtkSetMacro(Cross,int);
vtkGetMacro(Cross,int);
vtkBooleanMacro(Cross,int);
// Description:
// Specify an angle (in degrees) to rotate the glyph around
// the z-axis. Using this ivar, it is possible to generate
// rotated glyphs (e.g., crosses, arrows, etc.)
vtkSetMacro(RotationAngle,double);
vtkGetMacro(RotationAngle,double);
// Description:
// Specify the type of glyph to generate.
vtkSetClampMacro(GlyphType,int,VTK_NO_GLYPH,VTK_HOOKEDARROW_GLYPH);
vtkGetMacro(GlyphType,int);
void SetGlyphTypeToNone() {this->SetGlyphType(VTK_NO_GLYPH);}
void SetGlyphTypeToVertex() {this->SetGlyphType(VTK_VERTEX_GLYPH);}
void SetGlyphTypeToDash() {this->SetGlyphType(VTK_DASH_GLYPH);}
void SetGlyphTypeToCross() {this->SetGlyphType(VTK_CROSS_GLYPH);}
void SetGlyphTypeToThickCross() {this->SetGlyphType(VTK_THICKCROSS_GLYPH);}
void SetGlyphTypeToTriangle() {this->SetGlyphType(VTK_TRIANGLE_GLYPH);}
void SetGlyphTypeToSquare() {this->SetGlyphType(VTK_SQUARE_GLYPH);}
void SetGlyphTypeToCircle() {this->SetGlyphType(VTK_CIRCLE_GLYPH);}
void SetGlyphTypeToDiamond() {this->SetGlyphType(VTK_DIAMOND_GLYPH);}
void SetGlyphTypeToArrow() {this->SetGlyphType(VTK_ARROW_GLYPH);}
void SetGlyphTypeToThickArrow() {this->SetGlyphType(VTK_THICKARROW_GLYPH);}
void SetGlyphTypeToHookedArrow() {this->SetGlyphType(VTK_HOOKEDARROW_GLYPH);}
protected:
vtkGlyphSource2D();
~vtkGlyphSource2D() {};
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
double Center[3];
double Scale;
double Scale2;
double Color[3];
int Filled;
int Dash;
int Cross;
int GlyphType;
double RotationAngle;
void TransformGlyph(vtkPoints *pts);
void ConvertColor();
unsigned char RGB[3];
void CreateVertex(vtkPoints *pts, vtkCellArray *verts,
vtkUnsignedCharArray *colors);
void CreateDash(vtkPoints *pts, vtkCellArray *lines,
vtkCellArray *polys, vtkUnsignedCharArray *colors, double scale);
void CreateCross(vtkPoints *pts, vtkCellArray *lines,
vtkCellArray *polys, vtkUnsignedCharArray *colors, double scale);
void CreateThickCross(vtkPoints *pts, vtkCellArray *lines,
vtkCellArray *polys, vtkUnsignedCharArray *colors);
void CreateTriangle(vtkPoints *pts, vtkCellArray *lines,
vtkCellArray *polys, vtkUnsignedCharArray *colors);
void CreateSquare(vtkPoints *pts, vtkCellArray *lines,
vtkCellArray *polys, vtkUnsignedCharArray *colors);
void CreateCircle(vtkPoints *pts, vtkCellArray *lines,
vtkCellArray *polys, vtkUnsignedCharArray *colors);
void CreateDiamond(vtkPoints *pts, vtkCellArray *lines,
vtkCellArray *polys, vtkUnsignedCharArray *colors);
void CreateArrow(vtkPoints *pts, vtkCellArray *lines,
vtkCellArray *polys, vtkUnsignedCharArray *colors);
void CreateThickArrow(vtkPoints *pts, vtkCellArray *lines,
vtkCellArray *polys, vtkUnsignedCharArray *colors);
void CreateHookedArrow(vtkPoints *pts, vtkCellArray *lines,
vtkCellArray *polys, vtkUnsignedCharArray *colors);
private:
vtkGlyphSource2D(const vtkGlyphSource2D&); // Not implemented.
void operator=(const vtkGlyphSource2D&); // Not implemented.
};
#endif