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.
118 lines
2.8 KiB
C
118 lines
2.8 KiB
C
3 weeks ago
|
/*=========================================================================
|
||
|
|
||
|
Program: Visualization Toolkit
|
||
|
Module: vtkCameraActor.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 vtkCameraActor
|
||
|
* @brief a frustum to represent a camera.
|
||
|
*
|
||
|
* vtkCameraActor is an actor used to represent a camera by its wireframe
|
||
|
* frustum.
|
||
|
*
|
||
|
* @sa
|
||
|
* vtkLight vtkConeSource vtkFrustumSource vtkCameraActor
|
||
|
*/
|
||
|
|
||
|
#ifndef vtkCameraActor_h
|
||
|
#define vtkCameraActor_h
|
||
|
|
||
|
#include "vtkProp3D.h"
|
||
|
#include "vtkRenderingCoreModule.h" // For export macro
|
||
|
|
||
|
class vtkCamera;
|
||
|
class vtkFrustumSource;
|
||
|
class vtkPolyDataMapper;
|
||
|
class vtkActor;
|
||
|
class vtkProperty;
|
||
|
|
||
|
class VTKRENDERINGCORE_EXPORT vtkCameraActor : public vtkProp3D
|
||
|
{
|
||
|
public:
|
||
|
static vtkCameraActor* New();
|
||
|
vtkTypeMacro(vtkCameraActor, vtkProp3D);
|
||
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* The camera to represent. Initial value is NULL.
|
||
|
*/
|
||
|
void SetCamera(vtkCamera* camera);
|
||
|
vtkGetObjectMacro(Camera, vtkCamera);
|
||
|
//@}
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Ratio between the width and the height of the frustum. Initial value is
|
||
|
* 1.0 (square)
|
||
|
*/
|
||
|
vtkSetMacro(WidthByHeightRatio, double);
|
||
|
vtkGetMacro(WidthByHeightRatio, double);
|
||
|
//@}
|
||
|
|
||
|
/**
|
||
|
* Support the standard render methods.
|
||
|
*/
|
||
|
int RenderOpaqueGeometry(vtkViewport* viewport) override;
|
||
|
|
||
|
/**
|
||
|
* Does this prop have some translucent polygonal geometry? No.
|
||
|
*/
|
||
|
vtkTypeBool HasTranslucentPolygonalGeometry() 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;
|
||
|
|
||
|
/**
|
||
|
* Get the bounds for this Actor as (Xmin,Xmax,Ymin,Ymax,Zmin,Zmax).
|
||
|
*/
|
||
|
double* GetBounds() override;
|
||
|
|
||
|
/**
|
||
|
* Get the actors mtime plus consider its properties and texture if set.
|
||
|
*/
|
||
|
vtkMTimeType GetMTime() override;
|
||
|
|
||
|
/**
|
||
|
* Get property of the internal actor.
|
||
|
*/
|
||
|
vtkProperty* GetProperty();
|
||
|
|
||
|
/**
|
||
|
* Set property of the internal actor.
|
||
|
*/
|
||
|
void SetProperty(vtkProperty* p);
|
||
|
|
||
|
protected:
|
||
|
vtkCameraActor();
|
||
|
~vtkCameraActor() override;
|
||
|
|
||
|
void UpdateViewProps();
|
||
|
|
||
|
vtkCamera* Camera;
|
||
|
double WidthByHeightRatio;
|
||
|
|
||
|
vtkFrustumSource* FrustumSource;
|
||
|
vtkPolyDataMapper* FrustumMapper;
|
||
|
vtkActor* FrustumActor;
|
||
|
|
||
|
private:
|
||
|
vtkCameraActor(const vtkCameraActor&) = delete;
|
||
|
void operator=(const vtkCameraActor&) = delete;
|
||
|
};
|
||
|
|
||
|
#endif
|