VTK  9.0.1
vtkAbstractWidget.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkAbstractWidget.h,v
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 =========================================================================*/
55 #ifndef vtkAbstractWidget_h
56 #define vtkAbstractWidget_h
57 
58 #include "vtkInteractionWidgetsModule.h" // For export macro
59 #include "vtkInteractorObserver.h"
60 
64 
65 class VTKINTERACTIONWIDGETS_EXPORT vtkAbstractWidget : public vtkInteractorObserver
66 {
67 public:
69 
73  void PrintSelf(ostream& os, vtkIndent indent) override;
75 
83  void SetEnabled(int) override;
84 
86 
92  vtkSetClampMacro(ProcessEvents, vtkTypeBool, 0, 1);
93  vtkGetMacro(ProcessEvents, vtkTypeBool);
94  vtkBooleanMacro(ProcessEvents, vtkTypeBool);
96 
101  vtkWidgetEventTranslator* GetEventTranslator() { return this->EventTranslator; }
102 
109  virtual void CreateDefaultRepresentation() = 0;
110 
117  void Render();
118 
125  void SetParent(vtkAbstractWidget* parent) { this->Parent = parent; }
126  vtkGetObjectMacro(Parent, vtkAbstractWidget);
127 
129 
136  {
137  this->CreateDefaultRepresentation();
138  return this->WidgetRep;
139  }
141 
143 
150  vtkSetMacro(ManagesCursor, vtkTypeBool);
151  vtkGetMacro(ManagesCursor, vtkTypeBool);
152  vtkBooleanMacro(ManagesCursor, vtkTypeBool);
154 
160  void SetPriority(float) override;
161 
162 protected:
164  ~vtkAbstractWidget() override;
165 
166  // Handles the events; centralized here for all widgets.
167  static void ProcessEventsHandler(
168  vtkObject* object, unsigned long event, void* clientdata, void* calldata);
169 
170  // The representation for the widget. This is typically called by the
171  // SetRepresentation() methods particular to each widget (i.e. subclasses
172  // of this class). This method does the actual work; the SetRepresentation()
173  // methods constrain the type that can be set.
174  void SetWidgetRepresentation(vtkWidgetRepresentation* r);
176 
177  // helper methods for cursor management
179  virtual void SetCursor(int vtkNotUsed(state)) {}
180 
181  // For translating and invoking events
184 
185  // The parent, if any, for this widget
187 
188  // Call data which can be retrieved by the widget. This data is set
189  // by ProcessEvents() if call data is provided during a callback
190  // sequence.
191  void* CallData;
192 
193  // Flag indicating if the widget should handle interaction events.
194  // On by default.
196 
197 private:
198  vtkAbstractWidget(const vtkAbstractWidget&) = delete;
199  void operator=(const vtkAbstractWidget&) = delete;
200 };
201 
202 #endif
virtual void SetCursor(int vtkNotUsed(state))
vtkTypeBool ProcessEvents
abstract base class for most VTK objects
Definition: vtkObject.h:62
vtkWidgetCallbackMapper * CallbackMapper
map VTK events into widget events
virtual void SetEnabled(int)
Methods for turning the interactor observer on and off, and determining its state.
vtkWidgetEventTranslator * GetEventTranslator()
Get the event translator.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
abstract class defines interface between the widget and widget representation classes ...
an abstract superclass for classes observing events invoked by vtkRenderWindowInteractor ...
vtkWidgetRepresentation * WidgetRep
int vtkTypeBool
Definition: vtkABI.h:69
virtual void SetPriority(float)
Set/Get the priority at which events are processed.
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkTypeBool ManagesCursor
define the API for widget / widget representation
map widget events into callbacks
void SetParent(vtkAbstractWidget *parent)
Specifying a parent to this widget is used when creating composite widgets.
vtkAbstractWidget * Parent
vtkWidgetRepresentation * GetRepresentation()
Return an instance of vtkWidgetRepresentation used to represent this widget in the scene...
vtkWidgetEventTranslator * EventTranslator