Cloned library of VTK-5.0.0 with extra build files for internal package management.
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.
 
 
 
 
 
 

180 lines
6.7 KiB

/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkActor.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 vtkActor - represents an object (geometry & properties) in a rendered scene
// .SECTION Description
//
// vtkActor is used to represent an entity in a rendering scene. It inherits
// functions related to the actors position, and orientation from
// vtkProp. The actor also has scaling and maintains a reference to the
// defining geometry (i.e., the mapper), rendering properties, and possibly a
// texture map. vtkActor combines these instance variables into one 4x4
// transformation matrix as follows: [x y z 1] = [x y z 1] Translate(-origin)
// Scale(scale) Rot(y) Rot(x) Rot (z) Trans(origin) Trans(position)
// .SECTION See Also
// vtkProperty vtkTexture vtkMapper vtkAssembly vtkFollower vtkLODActor
#ifndef __vtkActor_h
#define __vtkActor_h
#include "vtkProp3D.h"
class vtkRenderer;
class vtkPropCollection;
class vtkActorCollection;
class vtkTexture;
class vtkMapper;
class vtkProperty;
class VTK_RENDERING_EXPORT vtkActor : public vtkProp3D
{
public:
vtkTypeRevisionMacro(vtkActor,vtkProp3D);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Creates an actor with the following defaults: origin(0,0,0)
// position=(0,0,0) scale=(1,1,1) visibility=1 pickable=1 dragable=1
// orientation=(0,0,0). No user defined matrix and no texture map.
static vtkActor *New();
// 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:
// This causes the actor to be rendered. It in turn will render the actor's
// property, texture map and then mapper. If a property hasn't been
// assigned, then the actor will create one automatically. Note that a side
// effect of this method is that the pipeline will be updated.
virtual void Render(vtkRenderer *, vtkMapper *) {};
// Description:
// Shallow copy of an 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:
// Set/Get the property object that controls this actors surface
// properties. This should be an instance of a vtkProperty object. Every
// actor must have a property associated with it. If one isn't specified,
// then one will be generated automatically. Multiple actors can share one
// property object.
void SetProperty(vtkProperty *lut);
vtkProperty *GetProperty();
// Description:
// Create a new property sutible for use with this type of Actor.
// For example, a vtkMesaActor should create a vtkMesaProperty
// in this function. The default is to just call vtkProperty::New.
virtual vtkProperty* MakeProperty();
// Description:
// Set/Get the property object that controls this actors backface surface
// properties. This should be an instance of a vtkProperty object. If one
// isn't specified, then the front face properties will be used. Multiple
// actors can share one property object.
void SetBackfaceProperty(vtkProperty *lut);
vtkProperty *GetBackfaceProperty();
// Description:
// Set/Get the texture object to control rendering texture maps. This will
// be a vtkTexture object. An actor does not need to have an associated
// texture map and multiple actors can share one texture.
virtual void SetTexture(vtkTexture*);
vtkGetObjectMacro(Texture,vtkTexture);
// Description:
// This is the method that is used to connect an actor to the end of a
// visualization pipeline, i.e. the mapper. This should be a subclass
// of vtkMapper. Typically vtkPolyDataMapper and vtkDataSetMapper will
// be used.
virtual void SetMapper(vtkMapper *);
// Description:
// Returns the Mapper that this actor is getting its data from.
vtkGetObjectMacro(Mapper,vtkMapper);
// 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]) {this->vtkProp3D::GetBounds( bounds );};
double *GetBounds();
// Description:
// Apply the current properties to all parts that compose this actor.
// This method is overloaded in vtkAssembly to apply the assemblies'
// properties to all its parts in a recursive manner. Typically the
// use of this method is to set the desired properties in the assembly,
// and then push the properties down to the assemblies parts with
// ApplyProperties().
virtual void ApplyProperties() {return;};
// 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:
// The following methods are for compatibility. The methods will be deprecated
// in the near future. Use vtkProp::GetNextPath() (and related functionality)
// to get the parts in an assembly (or more correctly, the paths in the
// assembly).
virtual void InitPartTraversal();
virtual vtkActor *GetNextPart();
virtual int GetNumberOfParts();
protected:
vtkActor();
~vtkActor();
vtkProperty *Property;
vtkProperty *BackfaceProperty;
vtkTexture *Texture;
vtkMapper *Mapper;
// is this actor opaque
int GetIsOpaque();
// Bounds are cached in an actor - the MapperBounds are also cache to
// help know when the Bounds need to be recomputed.
double MapperBounds[6];
vtkTimeStamp BoundsMTime;
private:
vtkActor(const vtkActor&); // Not implemented.
void operator=(const vtkActor&); // Not implemented.
};
#endif