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

/*=========================================================================
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