VTK  9.2.6
vtkLightRepresentation.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkLightRepresentation.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
31 #ifndef vtkLightRepresentation_h
32 #define vtkLightRepresentation_h
33 
34 #include "vtkInteractionWidgetsModule.h" // For export macro
35 #include "vtkNew.h" // Needed for vtkNew
37 
38 class vtkActor;
39 class vtkBox;
40 class vtkCellPicker;
41 class vtkConeSource;
42 class vtkLineSource;
44 class vtkPolyDataMapper;
45 class vtkProperty;
46 class vtkSphereSource;
47 
48 class VTKINTERACTIONWIDGETS_EXPORT vtkLightRepresentation : public vtkWidgetRepresentation
49 {
50 public:
51  static vtkLightRepresentation* New();
53  void PrintSelf(ostream& os, vtkIndent indent) override;
54 
56 
59  vtkSetMacro(Positional, bool);
60  vtkGetMacro(Positional, bool);
61  vtkBooleanMacro(Positional, bool);
63 
65 
68  void SetLightPosition(double pos[3]);
69  vtkGetVector3Macro(LightPosition, double);
71 
73 
76  void SetFocalPoint(double pos[3]);
77  vtkGetVector3Macro(FocalPoint, double);
79 
81 
85  void SetConeAngle(double angle);
86  vtkGetMacro(ConeAngle, double);
88 
90 
93  void SetLightColor(double* color);
94  double* GetLightColor() VTK_SIZEHINT(3);
96 
100  enum
101  {
102  Outside = 0,
106  ScalingConeAngle
107  };
108 
110 
119  vtkSetClampMacro(InteractionState, int, Outside, ScalingConeAngle);
121 
123 
126  vtkGetObjectMacro(Property, vtkProperty);
128 
130 
133  void BuildRepresentation() override;
134  int ComputeInteractionState(int X, int Y, int modify = 0) override;
135  void StartWidgetInteraction(double eventPosition[2]) override;
136  void WidgetInteraction(double eventPosition[2]) override;
137  double* GetBounds() override;
139 
141 
144  void ReleaseGraphicsResources(vtkWindow* w) override;
145  int RenderOpaqueGeometry(vtkViewport* viewport) override;
146  int RenderTranslucentPolygonalGeometry(vtkViewport* viewport) override;
148 
149 protected:
151  ~vtkLightRepresentation() override;
152 
153  virtual void SizeHandles();
154  virtual void UpdateSources();
155  virtual void ScaleConeAngle(double* pickPoint, double* lastPickPoint);
156 
160  double LastScalingDistance2 = -1;
161  double LastEventPosition[3] = { 0, 0, 0 };
162 
163  // the Sphere
168 
169  // the Cone
174 
175  // the Line
180 
181  double LightPosition[3] = { 0, 0, 1 };
182  double FocalPoint[3] = { 0, 0, 0 };
183  double ConeAngle = 30;
184  bool Positional = false;
185 
186 private:
188  void operator=(const vtkLightRepresentation&) = delete;
189 };
190 
191 #endif
represent a vtkLight
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methods for instances of this class.
vtkNew< vtkProperty > Property
vtkNew< vtkPolyDataMapper > ConeMapper
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:51
virtual int ComputeInteractionState(int X, int Y, int modify=0)
represent the position of a point in 3D space
abstract specification for Viewports
Definition: vtkViewport.h:55
represent surface properties of a geometric object
Definition: vtkProperty.h:67
virtual void StartWidgetInteraction(double eventPos[2])
vtkNew< vtkConeSource > Cone
generate polygonal cone
Definition: vtkConeSource.h:44
abstract class defines interface between the widget and widget representation classes ...
virtual void BuildRepresentation()=0
Subclasses of vtkWidgetRepresentation must implement these methods.
double * GetBounds() override
Methods to make this class behave as a vtkProp.
window superclass for vtkRenderWindow
Definition: vtkWindow.h:38
vtkNew< vtkLineSource > Line
create a polygonal sphere centered at the origin
int RenderTranslucentPolygonalGeometry(vtkViewport *vtkNotUsed(viewport)) override
a simple class to control print indentation
Definition: vtkIndent.h:39
void ReleaseGraphicsResources(vtkWindow *) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Release any graphics resources that are being...
virtual void WidgetInteraction(double newEventPos[2])
int RenderOpaqueGeometry(vtkViewport *vtkNotUsed(viewport)) override
#define VTK_SIZEHINT(...)
vtkNew< vtkCellPicker > SpherePicker
create a line defined by two end points
Definition: vtkLineSource.h:63
map vtkPolyData to graphics primitives
ray-cast cell picker for all kinds of Prop3Ds
Definition: vtkCellPicker.h:72
vtkNew< vtkCellPicker > LinePicker
vtkNew< vtkCellPicker > ConePicker
vtkNew< vtkSphereSource > Sphere
vtkNew< vtkPolyDataMapper > SphereMapper
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
implicit function for a bounding box
Definition: vtkBox.h:41
vtkNew< vtkPolyDataMapper > LineMapper
vtkNew< vtkActor > SphereActor