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.
183 lines
5.1 KiB
C++
183 lines
5.1 KiB
C++
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: vtkActor2D.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 vtkActor2D
|
|
* @brief a actor that draws 2D data
|
|
*
|
|
* vtkActor2D is similar to vtkActor, but it is made to be used with two
|
|
* dimensional images and annotation. vtkActor2D has a position but does not
|
|
* use a transformation matrix like vtkActor (see the superclass vtkProp
|
|
* for information on positioning vtkActor2D). vtkActor2D has a reference to
|
|
* a vtkMapper2D object which does the rendering.
|
|
*
|
|
* @sa
|
|
* vtkProp vtkMapper2D vtkProperty2D
|
|
*/
|
|
|
|
#ifndef vtkActor2D_h
|
|
#define vtkActor2D_h
|
|
|
|
#include "vtkCoordinate.h" // For vtkViewportCoordinateMacro
|
|
#include "vtkProp.h"
|
|
#include "vtkRenderingCoreModule.h" // For export macro
|
|
|
|
class vtkMapper2D;
|
|
class vtkProperty2D;
|
|
|
|
class VTKRENDERINGCORE_EXPORT vtkActor2D : public vtkProp
|
|
{
|
|
public:
|
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
|
vtkTypeMacro(vtkActor2D, vtkProp);
|
|
|
|
/**
|
|
* Creates an actor2D with the following defaults:
|
|
* position (0,0) (coordinate system is viewport);
|
|
* at layer 0.
|
|
*/
|
|
static vtkActor2D* New();
|
|
|
|
//@{
|
|
/**
|
|
* Support the standard render methods.
|
|
*/
|
|
int RenderOverlay(vtkViewport* viewport) override;
|
|
int RenderOpaqueGeometry(vtkViewport* viewport) override;
|
|
int RenderTranslucentPolygonalGeometry(vtkViewport* viewport) override;
|
|
//@}
|
|
|
|
/**
|
|
* Does this prop have some translucent polygonal geometry?
|
|
*/
|
|
vtkTypeBool HasTranslucentPolygonalGeometry() override;
|
|
|
|
//@{
|
|
/**
|
|
* Set/Get the vtkMapper2D which defines the data to be drawn.
|
|
*/
|
|
virtual void SetMapper(vtkMapper2D* mapper);
|
|
vtkGetObjectMacro(Mapper, vtkMapper2D);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Set/Get the layer number in the overlay planes into which to render.
|
|
*/
|
|
vtkSetMacro(LayerNumber, int);
|
|
vtkGetMacro(LayerNumber, int);
|
|
//@}
|
|
|
|
/**
|
|
* Returns this actor's vtkProperty2D. Creates a property if one
|
|
* doesn't already exist.
|
|
*/
|
|
vtkProperty2D* GetProperty();
|
|
|
|
/**
|
|
* Set this vtkProp's vtkProperty2D.
|
|
*/
|
|
virtual void SetProperty(vtkProperty2D*);
|
|
|
|
//@{
|
|
/**
|
|
* Get the PositionCoordinate instance of vtkCoordinate.
|
|
* This is used for for complicated or relative positioning.
|
|
* The position variable controls the lower left corner of the Actor2D
|
|
*/
|
|
vtkViewportCoordinateMacro(Position);
|
|
//@}
|
|
|
|
/**
|
|
* Set the Prop2D's position in display coordinates.
|
|
*/
|
|
void SetDisplayPosition(int, int);
|
|
|
|
//@{
|
|
/**
|
|
* Access the Position2 instance variable. This variable controls
|
|
* the upper right corner of the Actor2D. It is by default
|
|
* relative to Position and in normalized viewport coordinates.
|
|
* Some 2D actor subclasses ignore the position2 variable
|
|
*/
|
|
vtkViewportCoordinateMacro(Position2);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Set/Get the height and width of the Actor2D. The value is expressed
|
|
* as a fraction of the viewport. This really is just another way of
|
|
* setting the Position2 instance variable.
|
|
*/
|
|
void SetWidth(double w);
|
|
double GetWidth();
|
|
void SetHeight(double h);
|
|
double GetHeight();
|
|
//@}
|
|
|
|
/**
|
|
* Return this objects MTime.
|
|
*/
|
|
vtkMTimeType GetMTime() override;
|
|
|
|
/**
|
|
* 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.
|
|
*/
|
|
void GetActors2D(vtkPropCollection* pc) override;
|
|
|
|
/**
|
|
* Shallow copy of this vtkActor2D. Overloads the virtual vtkProp method.
|
|
*/
|
|
void ShallowCopy(vtkProp* prop) override;
|
|
|
|
/**
|
|
* 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*) override;
|
|
|
|
/**
|
|
* Return the actual vtkCoordinate reference that the mapper should use
|
|
* to position the actor. This is used internally by the mappers and should
|
|
* be overridden in specialized subclasses and otherwise ignored.
|
|
*/
|
|
virtual vtkCoordinate* GetActualPositionCoordinate(void) { return this->PositionCoordinate; }
|
|
|
|
/**
|
|
* Return the actual vtkCoordinate reference that the mapper should use
|
|
* to position the actor. This is used internally by the mappers and should
|
|
* be overridden in specialized subclasses and otherwise ignored.
|
|
*/
|
|
virtual vtkCoordinate* GetActualPosition2Coordinate(void) { return this->Position2Coordinate; }
|
|
|
|
protected:
|
|
vtkActor2D();
|
|
~vtkActor2D() override;
|
|
|
|
vtkMapper2D* Mapper;
|
|
int LayerNumber;
|
|
vtkProperty2D* Property;
|
|
vtkCoordinate* PositionCoordinate;
|
|
vtkCoordinate* Position2Coordinate;
|
|
|
|
private:
|
|
vtkActor2D(const vtkActor2D&) = delete;
|
|
void operator=(const vtkActor2D&) = delete;
|
|
};
|
|
|
|
#endif
|