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.
157 lines
5.8 KiB
157 lines
5.8 KiB
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: $RCSfile: vtkLabeledDataMapper.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 vtkLabeledDataMapper - draw text labels at dataset points
|
|
// .SECTION Description
|
|
// vtkLabeledDataMapper is a mapper that renders text at dataset
|
|
// points. Various items can be labeled including point ids, scalars,
|
|
// vectors, normals, texture coordinates, tensors, and field data components.
|
|
//
|
|
// The format with which the label is drawn is specified using a
|
|
// printf style format string. The font attributes of the text can
|
|
// be set through the vtkTextProperty associated to this mapper.
|
|
//
|
|
// By default, all the components of multi-component data such as
|
|
// vectors, normals, texture coordinates, tensors, and multi-component
|
|
// scalars are labeled. However, you can specify a single component if
|
|
// you prefer. (Note: the label format specifies the format to use for
|
|
// a single component. The label is creating by looping over all components
|
|
// and using the label format to render each component.)
|
|
|
|
// .SECTION Caveats
|
|
// Use this filter in combination with vtkSelectVisiblePoints if you want
|
|
// to label only points that are visible. If you want to label cells rather
|
|
// than points, use the filter vtkCellCenters to generate points at the
|
|
// center of the cells. Also, you can use the class vtkIdFilter to
|
|
// generate ids as scalars or field data, which can then be labeled.
|
|
|
|
// .SECTION See Also
|
|
// vtkMapper2D vtkActor2D vtkTextMapper vtkTextProperty vtkSelectVisiblePoints
|
|
// vtkIdFilter vtkCellCenters
|
|
|
|
#ifndef __vtkLabeledDataMapper_h
|
|
#define __vtkLabeledDataMapper_h
|
|
|
|
#include "vtkMapper2D.h"
|
|
|
|
class vtkDataSet;
|
|
class vtkTextMapper;
|
|
class vtkTextProperty;
|
|
|
|
#define VTK_LABEL_IDS 0
|
|
#define VTK_LABEL_SCALARS 1
|
|
#define VTK_LABEL_VECTORS 2
|
|
#define VTK_LABEL_NORMALS 3
|
|
#define VTK_LABEL_TCOORDS 4
|
|
#define VTK_LABEL_TENSORS 5
|
|
#define VTK_LABEL_FIELD_DATA 6
|
|
|
|
class VTK_RENDERING_EXPORT vtkLabeledDataMapper : public vtkMapper2D
|
|
{
|
|
public:
|
|
// Description:
|
|
// Instantiate object with %%-#6.3g label format. By default, point ids
|
|
// are labeled.
|
|
static vtkLabeledDataMapper *New();
|
|
|
|
vtkTypeRevisionMacro(vtkLabeledDataMapper,vtkMapper2D);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
|
|
// Description:
|
|
// Set/Get the format with which to print the labels. The format needs
|
|
// to change depending on what you're trying to print. For example, if
|
|
// you're printing a vector, 3 values are printed, whereas when printing an
|
|
// id only one value is printed. See also the ivar LabeledComponent which
|
|
// can be used to specify the component to print if you want to only print
|
|
// one of several.
|
|
vtkSetStringMacro(LabelFormat);
|
|
vtkGetStringMacro(LabelFormat);
|
|
|
|
// Description:
|
|
// Set/Get the component number to label if the data to print has
|
|
// more than one component. For example, all the components of
|
|
// scalars, vectors, normals, etc. are labeled by default
|
|
// (LabeledComponent=(-1)). However, if this ivar is nonnegative,
|
|
// then only the one component specified is labeled.
|
|
vtkSetMacro(LabeledComponent,int);
|
|
vtkGetMacro(LabeledComponent,int);
|
|
|
|
// Description:
|
|
// Set/Get the field data array to label. This instance variable is
|
|
// only applicable if field data is labeled.
|
|
vtkSetClampMacro(FieldDataArray,int,0,VTK_LARGE_INTEGER);
|
|
vtkGetMacro(FieldDataArray,int);
|
|
|
|
// Description:
|
|
// Set the input dataset to the mapper. This mapper handles any type of data.
|
|
virtual void SetInput(vtkDataSet*);
|
|
vtkDataSet *GetInput();
|
|
|
|
// Description:
|
|
// Specify which data to plot: scalars, vectors, normals, texture coords,
|
|
// tensors, or field data. If the data has more than one component, use
|
|
// the method SetLabeledComponent to control which components to plot.
|
|
vtkSetMacro(LabelMode, int);
|
|
vtkGetMacro(LabelMode, int);
|
|
void SetLabelModeToLabelIds() {this->SetLabelMode(VTK_LABEL_IDS);};
|
|
void SetLabelModeToLabelScalars() {this->SetLabelMode(VTK_LABEL_SCALARS);};
|
|
void SetLabelModeToLabelVectors() {this->SetLabelMode(VTK_LABEL_VECTORS);};
|
|
void SetLabelModeToLabelNormals() {this->SetLabelMode(VTK_LABEL_NORMALS);};
|
|
void SetLabelModeToLabelTCoords() {this->SetLabelMode(VTK_LABEL_TCOORDS);};
|
|
void SetLabelModeToLabelTensors() {this->SetLabelMode(VTK_LABEL_TENSORS);};
|
|
void SetLabelModeToLabelFieldData()
|
|
{this->SetLabelMode(VTK_LABEL_FIELD_DATA);};
|
|
|
|
// Description:
|
|
// Set/Get the text property.
|
|
virtual void SetLabelTextProperty(vtkTextProperty *p);
|
|
vtkGetObjectMacro(LabelTextProperty,vtkTextProperty);
|
|
|
|
// Description:
|
|
// Draw the text to the screen at each input point.
|
|
void RenderOpaqueGeometry(vtkViewport* viewport, vtkActor2D* actor);
|
|
void RenderOverlay(vtkViewport* viewport, vtkActor2D* actor);
|
|
|
|
// Description:
|
|
// Release any graphics resources that are being consumed by this actor.
|
|
virtual void ReleaseGraphicsResources(vtkWindow *);
|
|
|
|
protected:
|
|
vtkLabeledDataMapper();
|
|
~vtkLabeledDataMapper();
|
|
|
|
vtkDataSet *Input;
|
|
vtkTextProperty *LabelTextProperty;
|
|
|
|
char *LabelFormat;
|
|
int LabelMode;
|
|
int LabeledComponent;
|
|
int FieldDataArray;
|
|
|
|
vtkTimeStamp BuildTime;
|
|
|
|
private:
|
|
int NumberOfLabels;
|
|
int NumberOfLabelsAllocated;
|
|
vtkTextMapper **TextMappers;
|
|
|
|
virtual int FillInputPortInformation(int, vtkInformation*);
|
|
|
|
private:
|
|
vtkLabeledDataMapper(const vtkLabeledDataMapper&); // Not implemented.
|
|
void operator=(const vtkLabeledDataMapper&); // Not implemented.
|
|
};
|
|
|
|
#endif
|
|
|
|
|