You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
147 lines
4.4 KiB
C++
147 lines
4.4 KiB
C++
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: vtkCaptionRepresentation.h
|
|
|
|
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.
|
|
|
|
=========================================================================*/
|
|
/**
|
|
* @class vtkCaptionRepresentation
|
|
* @brief represents vtkCaptionWidget in the scene
|
|
*
|
|
* This class represents vtkCaptionWidget. A caption is defined by some text
|
|
* with a leader (e.g., arrow) that points from the text to a point in the
|
|
* scene. The caption is defined by an instance of vtkCaptionActor2D. It uses
|
|
* the event bindings of its superclass (vtkBorderWidget) to control the
|
|
* placement of the text, and adds the ability to move the attachment point
|
|
* around. In addition, when the caption text is selected, the widget emits a
|
|
* ActivateEvent that observers can watch for. This is useful for opening GUI
|
|
* dialogoues to adjust font characteristics, etc. (Please see the superclass
|
|
* for a description of event bindings.)
|
|
*
|
|
* Note that this widget extends the behavior of its superclass
|
|
* vtkBorderRepresentation.
|
|
*
|
|
* @sa
|
|
* vtkCaptionWidget vtkBorderWidget vtkBorderRepresentation vtkCaptionActor
|
|
*/
|
|
|
|
#ifndef vtkCaptionRepresentation_h
|
|
#define vtkCaptionRepresentation_h
|
|
|
|
#include "vtkBorderRepresentation.h"
|
|
#include "vtkInteractionWidgetsModule.h" // For export macro
|
|
|
|
class vtkRenderer;
|
|
class vtkCaptionActor2D;
|
|
class vtkConeSource;
|
|
class vtkPointHandleRepresentation3D;
|
|
|
|
class VTKINTERACTIONWIDGETS_EXPORT vtkCaptionRepresentation : public vtkBorderRepresentation
|
|
{
|
|
public:
|
|
/**
|
|
* Instantiate this class.
|
|
*/
|
|
static vtkCaptionRepresentation* New();
|
|
|
|
//@{
|
|
/**
|
|
* Standard VTK class methods.
|
|
*/
|
|
vtkTypeMacro(vtkCaptionRepresentation, vtkBorderRepresentation);
|
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Specify the position of the anchor (i.e., the point that the caption is anchored to).
|
|
* Note that the position should be specified in world coordinates.
|
|
*/
|
|
void SetAnchorPosition(double pos[3]);
|
|
void GetAnchorPosition(double pos[3]);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Specify the vtkCaptionActor2D to manage. If not specified, then one
|
|
* is automatically created.
|
|
*/
|
|
void SetCaptionActor2D(vtkCaptionActor2D* captionActor);
|
|
vtkGetObjectMacro(CaptionActor2D, vtkCaptionActor2D);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Set and get the instances of vtkPointHandleRepresention3D used to implement this
|
|
* representation. Normally default representations are created, but you can
|
|
* specify the ones you want to use.
|
|
*/
|
|
void SetAnchorRepresentation(vtkPointHandleRepresentation3D*);
|
|
vtkGetObjectMacro(AnchorRepresentation, vtkPointHandleRepresentation3D);
|
|
//@}
|
|
|
|
/**
|
|
* Satisfy the superclasses API.
|
|
*/
|
|
void BuildRepresentation() override;
|
|
void GetSize(double size[2]) override
|
|
{
|
|
size[0] = 2.0;
|
|
size[1] = 2.0;
|
|
}
|
|
|
|
//@{
|
|
/**
|
|
* These methods are necessary to make this representation behave as
|
|
* a vtkProp.
|
|
*/
|
|
void GetActors2D(vtkPropCollection*) override;
|
|
void ReleaseGraphicsResources(vtkWindow*) override;
|
|
int RenderOverlay(vtkViewport*) override;
|
|
int RenderOpaqueGeometry(vtkViewport*) override;
|
|
int RenderTranslucentPolygonalGeometry(vtkViewport*) override;
|
|
vtkTypeBool HasTranslucentPolygonalGeometry() override;
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Set/Get the factor that controls the overall size of the fonts
|
|
* of the caption when the text actor's ScaledText is OFF
|
|
*/
|
|
vtkSetClampMacro(FontFactor, double, 0.1, 10.0);
|
|
vtkGetMacro(FontFactor, double);
|
|
//@}
|
|
|
|
protected:
|
|
vtkCaptionRepresentation();
|
|
~vtkCaptionRepresentation() override;
|
|
|
|
// the text to manage
|
|
vtkCaptionActor2D* CaptionActor2D;
|
|
vtkConeSource* CaptionGlyph;
|
|
|
|
int PointWidgetState;
|
|
int DisplayAttachmentPoint[2];
|
|
double FontFactor;
|
|
|
|
// Internal representation for the anchor
|
|
vtkPointHandleRepresentation3D* AnchorRepresentation;
|
|
|
|
// Check and adjust boundaries according to the size of the caption text
|
|
virtual void AdjustCaptionBoundary();
|
|
|
|
private:
|
|
vtkCaptionRepresentation(const vtkCaptionRepresentation&) = delete;
|
|
void operator=(const vtkCaptionRepresentation&) = delete;
|
|
};
|
|
|
|
#endif
|