VTK  9.4.20250123
vtkContextScene.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
3
89#ifndef vtkContextScene_h
90#define vtkContextScene_h
91
92#include "vtkObject.h"
93#include "vtkRenderingContext2DModule.h" // For export macro
94#include "vtkVector.h" // For vtkVector return type.
95#include "vtkWeakPointer.h" // Needed for weak pointer to the window.
96#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
97
98VTK_ABI_NAMESPACE_BEGIN
99class vtkContext2D;
101class vtkTransform2D;
106
108
109class vtkRenderer;
111
112class VTKRENDERINGCONTEXT2D_EXPORT VTK_MARSHALAUTO vtkContextScene : public vtkObject
113{
114public:
116 void PrintSelf(ostream& os, vtkIndent indent) override;
117
122
126 virtual bool Paint(vtkContext2D* painter);
127
132 unsigned int AddItem(vtkAbstractContextItem* item);
133
140
146 bool RemoveItem(unsigned int index);
147
152 vtkAbstractContextItem* GetItem(unsigned int index);
153
157 unsigned int GetNumberOfItems();
158
163 void RemoveAllItems() { this->ClearItems(); }
164
169
171
174 vtkGetObjectMacro(AnnotationLink, vtkAnnotationLink);
176
178
181 vtkSetVector2Macro(Origin, int);
182 vtkGetVector2Macro(Origin, int);
184
186
189 vtkSetVector2Macro(Geometry, int);
191
193
196 vtkGetVector2Macro(Geometry, int);
198
200
203 vtkSetMacro(UseBufferId, bool);
205
207
210 vtkGetMacro(UseBufferId, bool);
212
219 virtual int GetViewWidth();
220
227 virtual int GetViewHeight();
228
233 virtual int GetSceneLeft();
234
239 virtual int GetSceneBottom();
240
245
250
252
257 vtkSetMacro(ScaleTiles, bool);
258 vtkGetMacro(ScaleTiles, bool);
259 vtkBooleanMacro(ScaleTiles, bool);
261
269
271
275 virtual void SetRenderer(vtkRenderer* renderer);
278
280
285 void SetDirty(bool isDirty);
286 bool GetDirty() const;
288
293
300
307
311 virtual void SetTransform(vtkTransform2D* transform);
312
317
321 bool HasTransform() { return this->Transform != nullptr; }
322
329
335
340 {
341 SELECTION_DEFAULT = 0, // selection = newSelection
342 SELECTION_ADDITION, // selection = prevSelection | newSelection
343 SELECTION_SUBTRACTION, // selection = prevSelection & !newSelection
344 SELECTION_TOGGLE // selection = prevSelection ^ newSelection
345 };
346
347protected:
350
354 virtual bool ProcessSelectionEvent(unsigned int rect[5]);
355
359 virtual bool MouseMoveEvent(const vtkContextMouseEvent& event);
360
364 virtual bool ButtonPressEvent(const vtkContextMouseEvent& event);
365
369 virtual bool ButtonReleaseEvent(const vtkContextMouseEvent& event);
370
374 virtual bool DoubleClickEvent(const vtkContextMouseEvent& event);
375
379 virtual bool MouseWheelEvent(int delta, const vtkContextMouseEvent& event);
380
384 virtual bool KeyPressEvent(const vtkContextKeyEvent& keyEvent);
385
389 virtual bool KeyReleaseEvent(const vtkContextKeyEvent& keyEvent);
390
395 virtual void PaintIds();
396
401
406
408
409 // Store the chart origin - left, bottom of scene in pixels
410 int Origin[2];
411 // Store the chart dimensions - width, height of scene in pixels
412 int Geometry[2];
413
419
421
424 class Private;
425 Private* Storage;
427
434
436
438
441
443
446
448
453
454private:
455 vtkContextScene(const vtkContextScene&) = delete;
456 void operator=(const vtkContextScene&) = delete;
457
458 typedef bool (vtkAbstractContextItem::*MouseEvents)(const vtkContextMouseEvent&);
459 bool ProcessItem(
460 vtkAbstractContextItem* cur, const vtkContextMouseEvent& event, MouseEvents eventPtr);
461 void EventCopy(const vtkContextMouseEvent& event);
462};
463
464VTK_ABI_NAMESPACE_END
465#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.
Provides a 2D scene for vtkContextItem objects.
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.
virtual int GetSceneLeft()
Get the left of the scene in screen coordinates.
vtkAbstractContextBufferId * BufferId
virtual int GetSceneBottom()
Get the bottom of the scene in screen coordinates.
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 (render window) containing this scene.
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 (render window) containing this scene.
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.
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:108
abstract base class for most VTK objects
Definition vtkObject.h:162
abstract specification for renderers
describes linear transformations via a 3x3 matrix
Some derived classes for the different vectors commonly used.
Definition vtkVector.h:440
a weak reference to a vtkObject.
int vtkIdType
Definition vtkType.h:315
#define VTK_MARSHALAUTO