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.
		
		
		
		
		
			
		
			
				
					
					
						
							572 lines
						
					
					
						
							17 KiB
						
					
					
				
			
		
		
	
	
							572 lines
						
					
					
						
							17 KiB
						
					
					
				| /*=========================================================================
 | |
| 
 | |
|   Program:   Visualization Toolkit
 | |
|   Module:    $RCSfile: vtkGlyphSource2D.cxx,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.
 | |
| 
 | |
| =========================================================================*/
 | |
| #include "vtkGlyphSource2D.h"
 | |
| 
 | |
| #include "vtkCellArray.h"
 | |
| #include "vtkCellData.h"
 | |
| #include "vtkMath.h"
 | |
| #include "vtkInformation.h"
 | |
| #include "vtkInformationVector.h"
 | |
| #include "vtkObjectFactory.h"
 | |
| #include "vtkPolyData.h"
 | |
| #include "vtkUnsignedCharArray.h"
 | |
| 
 | |
| vtkCxxRevisionMacro(vtkGlyphSource2D, "$Revision: 1.15 $");
 | |
| vtkStandardNewMacro(vtkGlyphSource2D);
 | |
| 
 | |
| //----------------------------------------------------------------------------
 | |
| vtkGlyphSource2D::vtkGlyphSource2D()
 | |
| {
 | |
|   this->Center[0] = 0.0;
 | |
|   this->Center[1] = 0.0;
 | |
|   this->Center[2] = 0.0;
 | |
|   this->Scale = 1.0;
 | |
|   this->Scale2 = 1.5;
 | |
|   this->Color[0] = 1.0;
 | |
|   this->Color[1] = 1.0;
 | |
|   this->Color[2] = 1.0;
 | |
|   this->Filled = 1;
 | |
|   this->Cross = 0;
 | |
|   this->Dash = 0;
 | |
|   this->RotationAngle = 0.0;
 | |
|   this->GlyphType = VTK_VERTEX_GLYPH;
 | |
| 
 | |
|   this->SetNumberOfInputPorts(0);
 | |
| }
 | |
| 
 | |
| //----------------------------------------------------------------------------
 | |
| int vtkGlyphSource2D::RequestData(
 | |
|   vtkInformation *vtkNotUsed(request),
 | |
|   vtkInformationVector **vtkNotUsed(inputVector),
 | |
|   vtkInformationVector *outputVector)
 | |
| {
 | |
|   // get the info object
 | |
|   vtkInformation *outInfo = outputVector->GetInformationObject(0);
 | |
| 
 | |
|   // get the ouptut
 | |
|   vtkPolyData *output = vtkPolyData::SafeDownCast(
 | |
|     outInfo->Get(vtkDataObject::DATA_OBJECT()));
 | |
|   
 | |
|   //Allocate storage
 | |
|   vtkPoints *pts = vtkPoints::New();
 | |
|   pts->Allocate(6,6);
 | |
|   vtkCellArray *verts = vtkCellArray::New();
 | |
|   verts->Allocate(verts->EstimateSize(1,1),1);
 | |
|   vtkCellArray *lines = vtkCellArray::New();
 | |
|   lines->Allocate(lines->EstimateSize(4,2),2);
 | |
|   vtkCellArray *polys = vtkCellArray::New();
 | |
|   polys->Allocate(polys->EstimateSize(1,4),4);
 | |
|   vtkUnsignedCharArray *colors = vtkUnsignedCharArray::New();
 | |
|   colors->SetNumberOfComponents(3);
 | |
|   colors->Allocate(2,2);
 | |
|   
 | |
|   this->ConvertColor();
 | |
| 
 | |
|   //Special options
 | |
|   if ( this->Dash )
 | |
|     {
 | |
|     int filled = this->Filled;
 | |
|     this->Filled = 0;
 | |
|     this->CreateDash(pts,lines,polys,colors,this->Scale2);
 | |
|     this->Filled = filled;
 | |
|     }
 | |
|   if ( this->Cross )
 | |
|     {
 | |
|     int filled = this->Filled;
 | |
|     this->Filled = 0;
 | |
|     this->CreateCross(pts,lines,polys,colors,this->Scale2);
 | |
|     this->Filled = filled;
 | |
|     }
 | |
|   
 | |
|   //Call the right function
 | |
|   switch (this->GlyphType)
 | |
|     {
 | |
|     case VTK_NO_GLYPH:
 | |
|       break;
 | |
|     case VTK_VERTEX_GLYPH:
 | |
|       this->CreateVertex(pts,verts,colors);
 | |
|       break;
 | |
|     case VTK_DASH_GLYPH:
 | |
|       this->CreateDash(pts,lines,polys,colors,this->Scale);
 | |
|       break;
 | |
|     case VTK_CROSS_GLYPH:
 | |
|       this->CreateCross(pts,lines,polys,colors,this->Scale);
 | |
|       break;
 | |
|     case VTK_THICKCROSS_GLYPH:
 | |
|       this->CreateThickCross(pts,lines,polys,colors);
 | |
|       break;
 | |
|     case VTK_TRIANGLE_GLYPH:
 | |
|       this->CreateTriangle(pts,lines,polys,colors);
 | |
|       break;
 | |
|     case VTK_SQUARE_GLYPH:
 | |
|       this->CreateSquare(pts,lines,polys,colors);
 | |
|       break;
 | |
|     case VTK_CIRCLE_GLYPH:
 | |
|       this->CreateCircle(pts,lines,polys,colors);
 | |
|       break;
 | |
|     case VTK_DIAMOND_GLYPH:
 | |
|       this->CreateDiamond(pts,lines,polys,colors);
 | |
|       break;
 | |
|     case VTK_ARROW_GLYPH:
 | |
|       this->CreateArrow(pts,lines,polys,colors);
 | |
|       break;
 | |
|     case VTK_THICKARROW_GLYPH:
 | |
|       this->CreateThickArrow(pts,lines,polys,colors);
 | |
|       break;
 | |
|     case VTK_HOOKEDARROW_GLYPH:
 | |
|       this->CreateHookedArrow(pts,lines,polys,colors);
 | |
|       break;
 | |
|     }
 | |
|   
 | |
|   this->TransformGlyph(pts);
 | |
| 
 | |
|   //Clean up
 | |
|   output->SetPoints(pts);
 | |
|   pts->Delete();
 | |
| 
 | |
|   output->SetVerts(verts);
 | |
|   verts->Delete();
 | |
|   
 | |
|   output->SetLines(lines);
 | |
|   lines->Delete();
 | |
|   
 | |
|   output->SetPolys(polys);
 | |
|   polys->Delete();
 | |
| 
 | |
|   output->GetCellData()->SetScalars(colors);
 | |
|   colors->Delete();
 | |
| 
 | |
|   return 1;
 | |
| }
 | |
| 
 | |
| void vtkGlyphSource2D::ConvertColor()
 | |
| {
 | |
|   this->RGB[0] = (unsigned char) (255.0 * this->Color[0]);
 | |
|   this->RGB[1] = (unsigned char) (255.0 * this->Color[1]);
 | |
|   this->RGB[2] = (unsigned char) (255.0 * this->Color[2]);
 | |
| }
 | |
| 
 | |
| void vtkGlyphSource2D::TransformGlyph(vtkPoints *pts)
 | |
| {
 | |
|   double x[3];
 | |
|   int i;
 | |
|   int numPts=pts->GetNumberOfPoints();
 | |
|   
 | |
|   if ( this->RotationAngle == 0.0 )
 | |
|     {
 | |
|     for (i=0; i<numPts; i++)
 | |
|       {
 | |
|       pts->GetPoint(i,x);
 | |
|       x[0] = this->Center[0] + this->Scale * x[0];
 | |
|       x[1] = this->Center[1] + this->Scale * x[1];
 | |
|       pts->SetPoint(i,x);
 | |
|       }
 | |
|     }
 | |
|   else
 | |
|     {
 | |
|     double angle = this->RotationAngle * vtkMath::DegreesToRadians();
 | |
|     double xt;
 | |
|     for (i=0; i<numPts; i++)
 | |
|       {
 | |
|       pts->GetPoint(i,x);
 | |
|       xt = x[0]*cos(angle) - x[1]*sin(angle);
 | |
|       x[1] = x[0]*sin(angle) + x[1]*cos(angle);
 | |
|       x[0] = xt;
 | |
|       x[0] = this->Center[0] + this->Scale * x[0];
 | |
|       x[1] = this->Center[1] + this->Scale * x[1];
 | |
|       pts->SetPoint(i,x);
 | |
|       }
 | |
|     }
 | |
| }
 | |
| 
 | |
| void vtkGlyphSource2D::CreateVertex(vtkPoints *pts, vtkCellArray *verts,
 | |
|                                     vtkUnsignedCharArray *colors)
 | |
| {
 | |
|   vtkIdType ptIds[1];
 | |
|   ptIds[0] = pts->InsertNextPoint(0.0,0.0,0.0);
 | |
|   verts->InsertNextCell(1,ptIds);
 | |
|   colors->InsertNextValue(this->RGB[0]);
 | |
|   colors->InsertNextValue(this->RGB[1]);
 | |
|   colors->InsertNextValue(this->RGB[2]);
 | |
| }
 | |
| 
 | |
| void vtkGlyphSource2D::CreateCross(vtkPoints *pts, vtkCellArray *lines,
 | |
|                                    vtkCellArray *polys, vtkUnsignedCharArray *colors, 
 | |
|                                    double scale)
 | |
| {
 | |
|   vtkIdType ptIds[4];
 | |
| 
 | |
|   if ( this->Filled )
 | |
|     {
 | |
|     this->CreateThickCross(pts,lines,polys,colors);
 | |
|     }
 | |
|   else
 | |
|     {
 | |
|     ptIds[0] = pts->InsertNextPoint(-0.5*scale, 0.0, 0.0);
 | |
|     ptIds[1] = pts->InsertNextPoint( 0.5*scale, 0.0, 0.0);
 | |
|     lines->InsertNextCell(2,ptIds);
 | |
|     colors->InsertNextValue(this->RGB[0]);
 | |
|     colors->InsertNextValue(this->RGB[1]);
 | |
|     colors->InsertNextValue(this->RGB[2]);
 | |
|     ptIds[0] = pts->InsertNextPoint(0.0, -0.5*scale, 0.0);
 | |
|     ptIds[1] = pts->InsertNextPoint(0.0,  0.5*scale, 0.0);
 | |
|     lines->InsertNextCell(2,ptIds);
 | |
|     colors->InsertNextValue(this->RGB[0]);
 | |
|     colors->InsertNextValue(this->RGB[1]);
 | |
|     colors->InsertNextValue(this->RGB[2]);
 | |
|     }
 | |
| }
 | |
| 
 | |
| void vtkGlyphSource2D::CreateThickCross(vtkPoints *pts, vtkCellArray *lines,
 | |
|                                         vtkCellArray *polys, vtkUnsignedCharArray *colors)
 | |
| {
 | |
|   if ( this->Filled )
 | |
|     {
 | |
|     vtkIdType ptIds[4];
 | |
|     ptIds[0] = pts->InsertNextPoint(-0.5, -0.1, 0.0);
 | |
|     ptIds[1] = pts->InsertNextPoint( 0.5, -0.1, 0.0);
 | |
|     ptIds[2] = pts->InsertNextPoint( 0.5,  0.1, 0.0);
 | |
|     ptIds[3] = pts->InsertNextPoint(-0.5,  0.1, 0.0);
 | |
|     polys->InsertNextCell(4,ptIds);
 | |
|     colors->InsertNextValue(this->RGB[0]);
 | |
|     colors->InsertNextValue(this->RGB[1]);
 | |
|     colors->InsertNextValue(this->RGB[2]);
 | |
|     ptIds[0] = pts->InsertNextPoint(-0.1, -0.5, 0.0);
 | |
|     ptIds[1] = pts->InsertNextPoint( 0.1, -0.5, 0.0);
 | |
|     ptIds[2] = pts->InsertNextPoint( 0.1,  0.5, 0.0);
 | |
|     ptIds[3] = pts->InsertNextPoint(-0.1,  0.5, 0.0);
 | |
|     polys->InsertNextCell(4,ptIds);
 | |
|     colors->InsertNextValue(this->RGB[0]);
 | |
|     colors->InsertNextValue(this->RGB[1]);
 | |
|     colors->InsertNextValue(this->RGB[2]);
 | |
|     }
 | |
|   else
 | |
|     {
 | |
|     vtkIdType ptIds[13];
 | |
|     ptIds[0] = pts->InsertNextPoint(-0.5, -0.1, 0.0);
 | |
|     ptIds[1] = pts->InsertNextPoint(-0.1, -0.1, 0.0);
 | |
|     ptIds[2] = pts->InsertNextPoint(-0.1, -0.5, 0.0);
 | |
|     ptIds[3] = pts->InsertNextPoint( 0.1, -0.5, 0.0);
 | |
|     ptIds[4] = pts->InsertNextPoint( 0.1, -0.1, 0.0);
 | |
|     ptIds[5] = pts->InsertNextPoint( 0.5, -0.1, 0.0);
 | |
|     ptIds[6] = pts->InsertNextPoint( 0.5,  0.1, 0.0);
 | |
|     ptIds[7] = pts->InsertNextPoint( 0.1,  0.1, 0.0);
 | |
|     ptIds[8] = pts->InsertNextPoint( 0.1,  0.5, 0.0);
 | |
|     ptIds[9] = pts->InsertNextPoint(-0.1,  0.5, 0.0);
 | |
|     ptIds[10] = pts->InsertNextPoint(-0.1, 0.1, 0.0);
 | |
|     ptIds[11] = pts->InsertNextPoint(-0.5, 0.1, 0.0);
 | |
|     ptIds[12] = ptIds[0];
 | |
|     lines->InsertNextCell(13,ptIds);
 | |
|     colors->InsertNextValue(this->RGB[0]);
 | |
|     colors->InsertNextValue(this->RGB[1]);
 | |
|     colors->InsertNextValue(this->RGB[2]);
 | |
|     }
 | |
| }
 | |
| 
 | |
| void vtkGlyphSource2D::CreateTriangle(vtkPoints *pts, vtkCellArray *lines,
 | |
|                                       vtkCellArray *polys, vtkUnsignedCharArray *colors)
 | |
| {
 | |
|   vtkIdType ptIds[4];
 | |
| 
 | |
|   ptIds[0] = pts->InsertNextPoint(-0.375, -0.25, 0.0);
 | |
|   ptIds[1] = pts->InsertNextPoint( 0.0,  0.5, 0.0);
 | |
|   ptIds[2] = pts->InsertNextPoint( 0.375, -0.25, 0.0);
 | |
| 
 | |
|   if ( this->Filled )
 | |
|     {
 | |
|     polys->InsertNextCell(3,ptIds);
 | |
|     }
 | |
|   else
 | |
|     {
 | |
|     ptIds[3] = ptIds[0];
 | |
|     lines->InsertNextCell(4,ptIds);
 | |
|     }
 | |
|   colors->InsertNextValue(this->RGB[0]);
 | |
|   colors->InsertNextValue(this->RGB[1]);
 | |
|   colors->InsertNextValue(this->RGB[2]);
 | |
| }
 | |
| 
 | |
| void vtkGlyphSource2D::CreateSquare(vtkPoints *pts, vtkCellArray *lines,
 | |
|                                     vtkCellArray *polys, vtkUnsignedCharArray *colors)
 | |
| {
 | |
|   vtkIdType ptIds[5];
 | |
| 
 | |
|   ptIds[0] = pts->InsertNextPoint(-0.5, -0.5, 0.0);
 | |
|   ptIds[1] = pts->InsertNextPoint( 0.5, -0.5, 0.0);
 | |
|   ptIds[2] = pts->InsertNextPoint( 0.5,  0.5, 0.0);
 | |
|   ptIds[3] = pts->InsertNextPoint(-0.5,  0.5, 0.0);
 | |
| 
 | |
|   if ( this->Filled )
 | |
|     {
 | |
|     polys->InsertNextCell(4,ptIds);
 | |
|     }
 | |
|   else
 | |
|     {
 | |
|     ptIds[4] = ptIds[0];
 | |
|     lines->InsertNextCell(5,ptIds);
 | |
|     }
 | |
|   colors->InsertNextValue(this->RGB[0]);
 | |
|   colors->InsertNextValue(this->RGB[1]);
 | |
|   colors->InsertNextValue(this->RGB[2]);
 | |
| }
 | |
| 
 | |
| void vtkGlyphSource2D::CreateCircle(vtkPoints *pts, vtkCellArray *lines,
 | |
|                                     vtkCellArray *polys, vtkUnsignedCharArray *colors)
 | |
| {
 | |
|   vtkIdType ptIds[9];
 | |
|   double x[3], theta;
 | |
| 
 | |
|   // generate eight points in a circle
 | |
|   x[2] = 0.0;
 | |
|   theta = 2.0 * vtkMath::Pi() / 8.0;
 | |
|   for (int i=0; i<8; i++)
 | |
|     {
 | |
|     x[0] = 0.5 * cos((double)i*theta);
 | |
|     x[1] = 0.5 * sin((double)i*theta);
 | |
|     ptIds[i] = pts->InsertNextPoint(x);
 | |
|     }
 | |
|   
 | |
|   if ( this->Filled )
 | |
|     {
 | |
|     polys->InsertNextCell(8,ptIds);
 | |
|     }
 | |
|   else
 | |
|     {
 | |
|     ptIds[8] = ptIds[0];
 | |
|     lines->InsertNextCell(9,ptIds);
 | |
|     }
 | |
|   colors->InsertNextValue(this->RGB[0]);
 | |
|   colors->InsertNextValue(this->RGB[1]);
 | |
|   colors->InsertNextValue(this->RGB[2]);
 | |
| }
 | |
| 
 | |
| void vtkGlyphSource2D::CreateDiamond(vtkPoints *pts, vtkCellArray *lines,
 | |
|                                      vtkCellArray *polys, vtkUnsignedCharArray *colors)
 | |
| {
 | |
|   vtkIdType ptIds[5];
 | |
| 
 | |
|   ptIds[0] = pts->InsertNextPoint( 0.0, -0.5, 0.0);
 | |
|   ptIds[1] = pts->InsertNextPoint( 0.5,  0.0, 0.0);
 | |
|   ptIds[2] = pts->InsertNextPoint( 0.0,  0.5, 0.0);
 | |
|   ptIds[3] = pts->InsertNextPoint(-0.5,  0.0, 0.0);
 | |
| 
 | |
|   if ( this->Filled )
 | |
|     {
 | |
|     polys->InsertNextCell(4,ptIds);
 | |
|     }
 | |
|   else
 | |
|     {
 | |
|     ptIds[4] = ptIds[0];
 | |
|     lines->InsertNextCell(5,ptIds);
 | |
|     }
 | |
|   colors->InsertNextValue(this->RGB[0]);
 | |
|   colors->InsertNextValue(this->RGB[1]);
 | |
|   colors->InsertNextValue(this->RGB[2]);
 | |
| }
 | |
| 
 | |
| void vtkGlyphSource2D::CreateArrow(vtkPoints *pts, vtkCellArray *lines,
 | |
|                                    vtkCellArray *polys, vtkUnsignedCharArray *colors)
 | |
| {
 | |
|   if ( this->Filled ) //create two convex polygons
 | |
|     {
 | |
|     this->CreateThickArrow(pts,lines,polys,colors);
 | |
|     }
 | |
|   else
 | |
|     {
 | |
|     //stem
 | |
|     vtkIdType ptIds[3];
 | |
|     ptIds[0] = pts->InsertNextPoint( -0.5, 0.0, 0.0);
 | |
|     ptIds[1] = pts->InsertNextPoint(  0.5, 0.0, 0.0);
 | |
|     lines->InsertNextCell(2,ptIds);
 | |
|     colors->InsertNextValue(this->RGB[0]);
 | |
|     colors->InsertNextValue(this->RGB[1]);
 | |
|     colors->InsertNextValue(this->RGB[2]);
 | |
| 
 | |
|     //arrow head
 | |
|     ptIds[0] = pts->InsertNextPoint( 0.2, -0.1, 0.0);
 | |
|     ptIds[1] = pts->InsertNextPoint( 0.5,  0.0, 0.0);
 | |
|     ptIds[2] = pts->InsertNextPoint( 0.2,  0.1, 0.0);
 | |
|     lines->InsertNextCell(3,ptIds);
 | |
|     colors->InsertNextValue(this->RGB[0]);
 | |
|     colors->InsertNextValue(this->RGB[1]);
 | |
|     colors->InsertNextValue(this->RGB[2]);
 | |
|     }
 | |
| }
 | |
| 
 | |
| void vtkGlyphSource2D::CreateThickArrow(vtkPoints *pts, vtkCellArray *lines,
 | |
|                                          vtkCellArray *polys, vtkUnsignedCharArray *colors)
 | |
| {
 | |
|   vtkIdType ptIds[8];
 | |
| 
 | |
|   ptIds[0] = pts->InsertNextPoint( -0.5, -0.1, 0.0);
 | |
|   ptIds[1] = pts->InsertNextPoint(  0.1, -0.1, 0.0);
 | |
|   ptIds[2] = pts->InsertNextPoint(  0.1, -0.2, 0.0);
 | |
|   ptIds[3] = pts->InsertNextPoint(  0.5,  0.0, 0.0);
 | |
|   ptIds[4] = pts->InsertNextPoint(  0.1,  0.2, 0.0);
 | |
|   ptIds[5] = pts->InsertNextPoint(  0.1,  0.1, 0.0);
 | |
|   ptIds[6] = pts->InsertNextPoint( -0.5,  0.1, 0.0);
 | |
| 
 | |
|   if ( this->Filled ) //create two convex polygons
 | |
|     {
 | |
|     polys->InsertNextCell(4);
 | |
|     polys->InsertCellPoint(ptIds[0]);
 | |
|     polys->InsertCellPoint(ptIds[1]);
 | |
|     polys->InsertCellPoint(ptIds[5]);
 | |
|     polys->InsertCellPoint(ptIds[6]);
 | |
|     colors->InsertNextValue(this->RGB[0]);
 | |
|     colors->InsertNextValue(this->RGB[1]);
 | |
|     colors->InsertNextValue(this->RGB[2]);
 | |
| 
 | |
|     polys->InsertNextCell(5,ptIds+1);
 | |
|     colors->InsertNextValue(this->RGB[0]);
 | |
|     colors->InsertNextValue(this->RGB[1]);
 | |
|     colors->InsertNextValue(this->RGB[2]);
 | |
|     }
 | |
|   else
 | |
|     {
 | |
|     ptIds[7] = ptIds[0];
 | |
|     lines->InsertNextCell(8,ptIds);
 | |
|     colors->InsertNextValue(this->RGB[0]);
 | |
|     colors->InsertNextValue(this->RGB[1]);
 | |
|     colors->InsertNextValue(this->RGB[2]);
 | |
|     }
 | |
| }
 | |
| 
 | |
| void vtkGlyphSource2D::CreateHookedArrow(vtkPoints *pts, vtkCellArray *lines,
 | |
|                                          vtkCellArray *polys, vtkUnsignedCharArray *colors)
 | |
| {
 | |
|   if ( this->Filled )
 | |
|     {
 | |
|     //create two convex polygons
 | |
|     vtkIdType ptIds[4];
 | |
|     ptIds[0] = pts->InsertNextPoint( -0.5,   -0.1, 0.0);
 | |
|     ptIds[1] = pts->InsertNextPoint(  0.1,   -0.1, 0.0);
 | |
|     ptIds[2] = pts->InsertNextPoint(  0.1,  0.075, 0.0);
 | |
|     ptIds[3] = pts->InsertNextPoint( -0.5,  0.075, 0.0);
 | |
|     polys->InsertNextCell(4,ptIds);
 | |
|     colors->InsertNextValue(this->RGB[0]);
 | |
|     colors->InsertNextValue(this->RGB[1]);
 | |
|     colors->InsertNextValue(this->RGB[2]);
 | |
| 
 | |
|     ptIds[0] = pts->InsertNextPoint( 0.1, -0.1, 0.0);
 | |
|     ptIds[1] = pts->InsertNextPoint( 0.5, -0.1, 0.0);
 | |
|     ptIds[2] = pts->InsertNextPoint( 0.1,  0.2, 0.0);
 | |
|     polys->InsertNextCell(3,ptIds);
 | |
|     colors->InsertNextValue(this->RGB[0]);
 | |
|     colors->InsertNextValue(this->RGB[1]);
 | |
|     colors->InsertNextValue(this->RGB[2]);
 | |
|     }
 | |
|   else
 | |
|     {
 | |
|     vtkIdType ptIds[3];
 | |
|     ptIds[0] = pts->InsertNextPoint( -0.5, 0.0, 0.0);
 | |
|     ptIds[1] = pts->InsertNextPoint(  0.5, 0.0, 0.0);
 | |
|     ptIds[2] = pts->InsertNextPoint(  0.2, 0.1, 0.0);
 | |
|     lines->InsertNextCell(3,ptIds);
 | |
|     colors->InsertNextValue(this->RGB[0]);
 | |
|     colors->InsertNextValue(this->RGB[1]);
 | |
|     colors->InsertNextValue(this->RGB[2]);
 | |
|     }
 | |
| }
 | |
| 
 | |
| void vtkGlyphSource2D::CreateDash(vtkPoints *pts, vtkCellArray *lines,
 | |
|                                   vtkCellArray *polys, vtkUnsignedCharArray *colors,
 | |
|                                                                   double scale)
 | |
| {
 | |
|   vtkIdType ptIds[5];
 | |
|   ptIds[0] = pts->InsertNextPoint(-0.5, -0.1, 0.0);
 | |
|   ptIds[1] = pts->InsertNextPoint( 0.5, -0.1, 0.0);
 | |
|   ptIds[2] = pts->InsertNextPoint( 0.5,  0.1, 0.0);
 | |
|   ptIds[3] = pts->InsertNextPoint(-0.5,  0.1, 0.0);
 | |
| 
 | |
|   if ( this->Filled )
 | |
|     {
 | |
|     polys->InsertNextCell(4,ptIds);
 | |
|     }
 | |
|   else
 | |
|     {
 | |
|     vtkIdType ptIds2D[2];
 | |
|     ptIds2D[0] = pts->InsertNextPoint(-0.5*scale, 0.0, 0.0);
 | |
|     ptIds2D[1] = pts->InsertNextPoint( 0.5*scale, 0.0, 0.0);
 | |
|     colors->InsertNextValue(this->RGB[0]);
 | |
|     colors->InsertNextValue(this->RGB[1]);
 | |
|     colors->InsertNextValue(this->RGB[2]);
 | |
|     lines->InsertNextCell(2,ptIds2D);
 | |
|     }
 | |
|   colors->InsertNextValue(this->RGB[0]);
 | |
|   colors->InsertNextValue(this->RGB[1]);
 | |
|   colors->InsertNextValue(this->RGB[2]);
 | |
| }
 | |
| 
 | |
| //----------------------------------------------------------------------------
 | |
| void vtkGlyphSource2D::PrintSelf(ostream& os, vtkIndent indent)
 | |
| {
 | |
|   this->Superclass::PrintSelf(os,indent);
 | |
| 
 | |
|   os << indent << "Center: (" << this->Center[0] << ", " 
 | |
|      << this->Center[1] << ", " << this->Center[2] << ")\n";
 | |
| 
 | |
|   os << indent << "Scale: " << this->Scale << "\n";
 | |
|   os << indent << "Scale2: " << this->Scale2 << "\n";
 | |
|   os << indent << "Rotation Angle: " << this->RotationAngle << "\n";
 | |
| 
 | |
|   os << indent << "Color: (" << this->Color[0] << ", " 
 | |
|      << this->Color[1] << ", " << this->Color[2] << ")\n";
 | |
| 
 | |
|   os << indent << "Filled: " << (this->Filled ? "On\n" : "Off\n");
 | |
|   os << indent << "Dash: " << (this->Dash ? "On\n" : "Off\n");
 | |
|   os << indent << "Cross: " << (this->Cross ? "On\n" : "Off\n");
 | |
| 
 | |
|   os << indent << "Glyph Type";
 | |
|   switch (this->GlyphType)
 | |
|     {
 | |
|     case VTK_NO_GLYPH:
 | |
|       os << "No Glyph\n";
 | |
|       break;
 | |
|     case VTK_VERTEX_GLYPH:
 | |
|       os << "Vertex\n";
 | |
|       break;
 | |
|     case VTK_DASH_GLYPH:
 | |
|       os << "Dash\n";
 | |
|       break;
 | |
|     case VTK_CROSS_GLYPH:
 | |
|       os << "Cross\n";
 | |
|       break;
 | |
|     case VTK_THICKCROSS_GLYPH:
 | |
|       os << "Cross\n";
 | |
|       break;
 | |
|     case VTK_TRIANGLE_GLYPH:
 | |
|       os << "Triangle\n";
 | |
|       break;
 | |
|     case VTK_SQUARE_GLYPH:
 | |
|       os << "Square\n";
 | |
|       break;
 | |
|     case VTK_CIRCLE_GLYPH:
 | |
|       os << "Circle\n";
 | |
|       break;
 | |
|     case VTK_DIAMOND_GLYPH:
 | |
|       os << "Diamond\n";
 | |
|       break;
 | |
|     case VTK_ARROW_GLYPH:
 | |
|       os << "Arrow\n";
 | |
|       break;
 | |
|     case VTK_THICKARROW_GLYPH:
 | |
|       os << "Arrow\n";
 | |
|       break;
 | |
|     case VTK_HOOKEDARROW_GLYPH:
 | |
|       os << "Hooked Arrow\n";
 | |
|       break;
 | |
|     }
 | |
| }
 | |
| 
 |