VTK  9.2.6
vtkContextScene.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkContextScene.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=========================================================================*/
15
25
26#ifndef vtkContextScene_h
27#define vtkContextScene_h
28
29#include "vtkObject.h"
30#include "vtkRenderingContext2DModule.h" // For export macro
31#include "vtkVector.h" // For vtkVector return type.
32#include "vtkWeakPointer.h" // Needed for weak pointer to the window.
33
34class vtkContext2D;
36class vtkTransform2D;
41
43
44class vtkRenderer;
46
47class VTKRENDERINGCONTEXT2D_EXPORT vtkContextScene : public vtkObject
48{
49public:
50 vtkTypeMacro(vtkContextScene, vtkObject);
51 void PrintSelf(ostream& os, vtkIndent indent) override;
52
57
61 virtual bool Paint(vtkContext2D* painter);
62
67 unsigned int AddItem(vtkAbstractContextItem* item);
68
75
81 bool RemoveItem(unsigned int index);
82
87 vtkAbstractContextItem* GetItem(unsigned int index);
88
92 unsigned int GetNumberOfItems();
93
97 void ClearItems();
98
103
105
110
112
115 vtkSetVector2Macro(Geometry, int);
117
119
122 vtkGetVector2Macro(Geometry, int);
124
126
129 vtkSetMacro(UseBufferId, bool);
131
133
136 vtkGetMacro(UseBufferId, bool);
138
142 virtual int GetViewWidth();
143
147 virtual int GetViewHeight();
148
153
158
160
165 vtkSetMacro(ScaleTiles, bool);
166 vtkGetMacro(ScaleTiles, bool);
167 vtkBooleanMacro(ScaleTiles, bool);
169
177
179
183 virtual void SetRenderer(vtkRenderer* renderer);
186
188
193 void SetDirty(bool isDirty);
194 bool GetDirty() const;
196
201
208
215
219 virtual void SetTransform(vtkTransform2D* transform);
220
225
229 bool HasTransform() { return this->Transform != nullptr; }
230
237
243
248 {
249 SELECTION_DEFAULT = 0, // selection = newSelection
250 SELECTION_ADDITION, // selection = prevSelection | newSelection
251 SELECTION_SUBTRACTION, // selection = prevSelection & !newSelection
252 SELECTION_TOGGLE // selection = prevSelection ^ newSelection
253 };
254
255protected:
258
262 virtual bool ProcessSelectionEvent(unsigned int rect[5]);
263
267 virtual bool MouseMoveEvent(const vtkContextMouseEvent& event);
268
272 virtual bool ButtonPressEvent(const vtkContextMouseEvent& event);
273
277 virtual bool ButtonReleaseEvent(const vtkContextMouseEvent& event);
278
282 virtual bool DoubleClickEvent(const vtkContextMouseEvent& event);
283
287 virtual bool MouseWheelEvent(int delta, const vtkContextMouseEvent& event);
288
292 virtual bool KeyPressEvent(const vtkContextKeyEvent& keyEvent);
293
297 virtual bool KeyReleaseEvent(const vtkContextKeyEvent& keyEvent);
298
303 virtual void PaintIds();
304
309
314
316
317 // Store the chart dimensions - width, height of scene in pixels
318 int Geometry[2];
319
325
327
330 class Private;
331 Private* Storage;
333
340
342
344
347
349
352
354
359
360private:
361 vtkContextScene(const vtkContextScene&) = delete;
362 void operator=(const vtkContextScene&) = delete;
363
364 typedef bool (vtkAbstractContextItem::*MouseEvents)(const vtkContextMouseEvent&);
365 bool ProcessItem(
366 vtkAbstractContextItem* cur, const vtkContextMouseEvent& event, MouseEvents eventPtr);
367 void EventCopy(const vtkContextMouseEvent& event);
368};
369
370#endif // vtkContextScene_h
2D array of ids, used for picking.
base class for items that are part of a vtkContextScene.
Class for drawing 2D primitives to a graphical context.
An interactor for chart views.
data structure to represent key events.
data structure to represent mouse events.
Private implementation for scene/items.
unsigned int AddItem(vtkAbstractContextItem *item)
Add child items to this item.
~vtkContextScene() override
bool RemoveItem(vtkAbstractContextItem *item)
Remove child item from this item.
virtual void SetTransform(vtkTransform2D *transform)
Set the transform for the scene.
virtual bool MouseWheelEvent(int delta, const vtkContextMouseEvent &event)
Process a mouse wheel event where delta is the movement forward or back.
virtual void SetAnnotationLink(vtkAnnotationLink *link)
Set the vtkAnnotationLink for the chart.
void ClearItems()
Remove all child items from this item.
vtkWeakPointer< vtkRenderer > Renderer
vtkAnnotationLink * AnnotationLink
virtual void PaintIds()
Paint the scene in a special mode to build a cache for picking.
void SetDirty(bool isDirty)
Inform the scene that something changed that requires a repaint of the scene.
unsigned int GetNumberOfItems()
Get the number of child items.
vtkAbstractContextBufferId * BufferId
void UpdateBufferId()
Make sure the buffer id used for picking is up-to-date.
SelectionModifier
Enum of valid selection modes for charts in the scene.
virtual bool KeyPressEvent(const vtkContextKeyEvent &keyEvent)
Process a key press event.
virtual int GetViewHeight()
Get the height of the view.
bool RemoveItem(unsigned int index)
Remove child item from this item.
vtkWeakPointer< vtkContext2D > LastPainter
vtkWeakPointer< vtkContext2D > GetLastPainter()
Last painter used.
vtkVector2i GetLogicalTileScale()
The tile scale of the target vtkRenderWindow.
vtkTransform2D * GetTransform()
Get the transform for the scene.
bool GetDirty() const
Inform the scene that something changed that requires a repaint of the scene.
vtkAbstractContextBufferId * GetBufferId()
Return buffer id.
int GetSceneHeight()
Get the height of the scene.
vtkAbstractContextItem * GetPickedItem()
Return the item under the mouse.
virtual bool Paint(vtkContext2D *painter)
Paint event for the chart, called whenever the chart needs to be drawn.
void ReleaseGraphicsResources()
Release graphics resources hold by the scene.
virtual bool DoubleClickEvent(const vtkContextMouseEvent &event)
Process a mouse button double click event.
virtual void SetRenderer(vtkRenderer *renderer)
This should not be necessary as the context view should take care of rendering.
vtkAbstractContextItem * GetItem(unsigned int index)
Get the item at the specified index.
virtual vtkRenderer * GetRenderer()
This should not be necessary as the context view should take care of rendering.
virtual int GetViewWidth()
Get the width of the view.
void TestBufferIdSupport()
Test if BufferId is supported by the OpenGL context.
vtkContextScenePrivate * Children
This structure provides a list of children, along with convenience functions to paint the children et...
bool HasTransform()
Check whether the scene has a transform.
virtual bool ProcessSelectionEvent(unsigned int rect[5])
Process a rubber band selection event.
int GetSceneWidth()
Get the width of the scene.
virtual bool MouseMoveEvent(const vtkContextMouseEvent &event)
Process a mouse move event.
vtkIdType GetPickedItem(int x, int y)
Return the item id under mouse cursor at position (x,y).
vtkTransform2D * Transform
The scene level transform.
virtual bool ButtonPressEvent(const vtkContextMouseEvent &event)
Process a mouse button press event.
virtual bool KeyReleaseEvent(const vtkContextKeyEvent &keyEvent)
Process a key release event.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
friend class vtkContextInteractorStyle
The vtkContextInteractorStyle class delegates all of the events to the scene, accessing protected API...
static vtkContextScene * New()
Creates a 2D Painter object.
virtual bool ButtonReleaseEvent(const vtkContextMouseEvent &event)
Process a mouse button release event.
a simple class to control print indentation
Definition vtkIndent.h:34
abstract specification for renderers
Definition vtkRenderer.h:67
describes linear transformations via a 3x3 matrix
Some derived classes for the different vectors commonly used.
Definition vtkVector.h:419
a weak reference to a vtkObject.
int vtkIdType
Definition vtkType.h:332