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.
213 lines
6.9 KiB
213 lines
6.9 KiB
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: $RCSfile: vtkAnnotatedCubeActor.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 vtkAnnotatedCubeActor - a 3D cube with face labels
|
|
// .SECTION Description
|
|
// vtkAnnotatedCubeActor is a hybrid 3D actor used to represent an anatomical
|
|
// orientation marker in a scene. The class consists of a 3D unit cube centered
|
|
// on the origin with each face labelled in correspondance to a particular
|
|
// coordinate direction. For example, with Cartesian directions, the user
|
|
// defined text labels could be: +X, -X, +Y, -Y, +Z, -Z, while for anatomical
|
|
// directions: A, P, L, R, S, I. Text is automatically centered on each cube
|
|
// face and is not restriceted to single characters. In addition to or in
|
|
// replace of a solid text label representation, the outline edges of the labels
|
|
// can be displayed. The individual properties of the cube, face labels
|
|
// and text outlines can be manipulated as can their visibility.
|
|
|
|
// .SECTION Caveats
|
|
// vtkAnnotatedCubeActor is primarily intended for use with
|
|
// vtkOrientationMarkerWidget. The cube face text is generated by vtkVectorText
|
|
// and therefore the font attributes are restricted.
|
|
|
|
// .SECTION See Also
|
|
// vtkAxesActor vtkOrientationMarkerWidget vtkVectorText
|
|
|
|
#ifndef __vtkAnnotatedCubeActor_h
|
|
#define __vtkAnnotatedCubeActor_h
|
|
|
|
#include "vtkProp3D.h"
|
|
|
|
class vtkActor;
|
|
class vtkAppendPolyData;
|
|
class vtkCubeSource;
|
|
class vtkFeatureEdges;
|
|
class vtkPropCollection;
|
|
class vtkProperty;
|
|
class vtkRenderer;
|
|
class vtkTransform;
|
|
class vtkTransformFilter;
|
|
class vtkVectorText;
|
|
|
|
class VTK_HYBRID_EXPORT vtkAnnotatedCubeActor : public vtkProp3D
|
|
{
|
|
public:
|
|
static vtkAnnotatedCubeActor *New();
|
|
vtkTypeRevisionMacro(vtkAnnotatedCubeActor,vtkProp3D);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
|
|
// Description:
|
|
// For some exporters and other other operations we must be
|
|
// able to collect all the actors or volumes. These methods
|
|
// are used in that process.
|
|
virtual void GetActors(vtkPropCollection *);
|
|
|
|
// Description:
|
|
// Support the standard render methods.
|
|
virtual int RenderOpaqueGeometry(vtkViewport *viewport);
|
|
virtual int RenderTranslucentGeometry(vtkViewport *viewport);
|
|
|
|
// Description:
|
|
// Shallow copy of an axes actor. Overloads the virtual vtkProp method.
|
|
void ShallowCopy(vtkProp *prop);
|
|
|
|
// Description:
|
|
// Release any graphics resources that are being consumed by this actor.
|
|
// The parameter window could be used to determine which graphic
|
|
// resources to release.
|
|
void ReleaseGraphicsResources(vtkWindow *);
|
|
|
|
// Description:
|
|
// Get the bounds for this Actor as (Xmin,Xmax,Ymin,Ymax,Zmin,Zmax). (The
|
|
// method GetBounds(double bounds[6]) is available from the superclass.)
|
|
void GetBounds(double bounds[6]);
|
|
double *GetBounds();
|
|
|
|
// Description:
|
|
// Get the actors mtime plus consider its properties and texture if set.
|
|
unsigned long int GetMTime();
|
|
|
|
// Description:
|
|
// Return the mtime of anything that would cause the rendered image to
|
|
// appear differently. Usually this involves checking the mtime of the
|
|
// prop plus anything else it depends on such as properties, textures
|
|
// etc.
|
|
virtual unsigned long GetRedrawMTime();
|
|
|
|
// Description:
|
|
// Set/Get the scale factor for the face text
|
|
void SetFaceTextScale(double);
|
|
vtkGetMacro(FaceTextScale, double);
|
|
|
|
// Description:
|
|
// Get the individual face text properties.
|
|
vtkProperty *GetXPlusFaceProperty();
|
|
vtkProperty *GetXMinusFaceProperty();
|
|
vtkProperty *GetYPlusFaceProperty();
|
|
vtkProperty *GetYMinusFaceProperty();
|
|
vtkProperty *GetZPlusFaceProperty();
|
|
vtkProperty *GetZMinusFaceProperty();
|
|
|
|
// Description:
|
|
// Get the cube properties.
|
|
vtkProperty *GetCubeProperty();
|
|
|
|
// Description:
|
|
// Get the text edges properties.
|
|
vtkProperty *GetTextEdgesProperty();
|
|
|
|
// Description:
|
|
// Set/get the face text.
|
|
vtkSetStringMacro( XPlusFaceText );
|
|
vtkGetStringMacro( XPlusFaceText );
|
|
vtkSetStringMacro( XMinusFaceText );
|
|
vtkGetStringMacro( XMinusFaceText );
|
|
vtkSetStringMacro( YPlusFaceText );
|
|
vtkGetStringMacro( YPlusFaceText );
|
|
vtkSetStringMacro( YMinusFaceText );
|
|
vtkGetStringMacro( YMinusFaceText );
|
|
vtkSetStringMacro( ZPlusFaceText );
|
|
vtkGetStringMacro( ZPlusFaceText );
|
|
vtkSetStringMacro( ZMinusFaceText );
|
|
vtkGetStringMacro( ZMinusFaceText );
|
|
|
|
// Description:
|
|
// Enable/disable drawing the vector text edges.
|
|
vtkSetMacro(TextEdges, int);
|
|
vtkGetMacro(TextEdges, int);
|
|
vtkBooleanMacro(TextEdges, int);
|
|
|
|
// Description:
|
|
// Enable/disable drawing the cube.
|
|
vtkSetMacro(Cube, int);
|
|
vtkGetMacro(Cube, int);
|
|
vtkBooleanMacro(Cube, int);
|
|
|
|
// Description:
|
|
// Enable/disable drawing the vector text.
|
|
vtkSetMacro(FaceText, int);
|
|
vtkGetMacro(FaceText, int);
|
|
vtkBooleanMacro(FaceText, int);
|
|
|
|
// Description:
|
|
// Augment individual face text orientations.
|
|
vtkSetMacro(XFaceTextRotation,double);
|
|
vtkGetMacro(XFaceTextRotation,double);
|
|
vtkSetMacro(YFaceTextRotation,double);
|
|
vtkGetMacro(YFaceTextRotation,double);
|
|
vtkSetMacro(ZFaceTextRotation,double);
|
|
vtkGetMacro(ZFaceTextRotation,double);
|
|
|
|
protected:
|
|
vtkAnnotatedCubeActor();
|
|
~vtkAnnotatedCubeActor();
|
|
|
|
vtkCubeSource *CubeSource;
|
|
vtkActor *CubeActor;
|
|
int Cube;
|
|
|
|
vtkAppendPolyData *AppendTextEdges;
|
|
vtkFeatureEdges *ExtractTextEdges;
|
|
vtkActor *TextEdgesActor;
|
|
int TextEdges;
|
|
|
|
void UpdateProps();
|
|
|
|
char *XPlusFaceText;
|
|
char *XMinusFaceText;
|
|
char *YPlusFaceText;
|
|
char *YMinusFaceText;
|
|
char *ZPlusFaceText;
|
|
char *ZMinusFaceText;
|
|
|
|
double FaceTextScale;
|
|
int FaceText;
|
|
|
|
double XFaceTextRotation;
|
|
double YFaceTextRotation;
|
|
double ZFaceTextRotation;
|
|
|
|
vtkVectorText *XPlusFaceVectorText;
|
|
vtkVectorText *XMinusFaceVectorText;
|
|
vtkVectorText *YPlusFaceVectorText;
|
|
vtkVectorText *YMinusFaceVectorText;
|
|
vtkVectorText *ZPlusFaceVectorText;
|
|
vtkVectorText *ZMinusFaceVectorText;
|
|
|
|
vtkActor *XPlusFaceActor;
|
|
vtkActor *XMinusFaceActor;
|
|
vtkActor *YPlusFaceActor;
|
|
vtkActor *YMinusFaceActor;
|
|
vtkActor *ZPlusFaceActor;
|
|
vtkActor *ZMinusFaceActor;
|
|
|
|
vtkTransformFilter *TransformFilter;
|
|
vtkTransform *Transform;
|
|
|
|
private:
|
|
vtkAnnotatedCubeActor(const vtkAnnotatedCubeActor&); // Not implemented.
|
|
void operator=(const vtkAnnotatedCubeActor&); // Not implemented.
|
|
};
|
|
|
|
#endif
|
|
|
|
|