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 
138 #ifndef vtkContextScene_h
139 #define vtkContextScene_h
140 
141 #include "vtkObject.h"
142 #include "vtkRenderingContext2DModule.h" // For export macro
143 #include "vtkVector.h" // For vtkVector return type.
144 #include "vtkWeakPointer.h" // Needed for weak pointer to the window.
145 
146 class vtkContext2D;
148 class vtkTransform2D;
150 class vtkContextKeyEvent;
153 
154 class vtkAnnotationLink;
155 
156 class vtkRenderer;
158 
159 class VTKRENDERINGCONTEXT2D_EXPORT vtkContextScene : public vtkObject
160 {
161 public:
162  vtkTypeMacro(vtkContextScene, vtkObject);
163  void PrintSelf(ostream& os, vtkIndent indent) override;
164 
168  static vtkContextScene* New();
169 
173  virtual bool Paint(vtkContext2D* painter);
174 
179  unsigned int AddItem(vtkAbstractContextItem* item);
180 
187 
193  bool RemoveItem(unsigned int index);
194 
200 
204  unsigned int GetNumberOfItems();
205 
209  void ClearItems();
210 
215 
217 
220  vtkGetObjectMacro(AnnotationLink, vtkAnnotationLink);
222 
224 
227  vtkSetVector2Macro(Geometry, int);
229 
231 
234  vtkGetVector2Macro(Geometry, int);
236 
238 
241  vtkSetMacro(UseBufferId, bool);
243 
245 
248  vtkGetMacro(UseBufferId, bool);
250 
254  virtual int GetViewWidth();
255 
259  virtual int GetViewHeight();
260 
265 
270 
272 
277  vtkSetMacro(ScaleTiles, bool);
278  vtkGetMacro(ScaleTiles, bool);
279  vtkBooleanMacro(ScaleTiles, bool);
281 
289 
291 
295  virtual void SetRenderer(vtkRenderer* renderer);
298 
300 
305  void SetDirty(bool isDirty);
306  bool GetDirty() const;
308 
313 
320 
327 
331  virtual void SetTransform(vtkTransform2D* transform);
332 
337 
341  bool HasTransform() { return this->Transform != nullptr; }
342 
348  vtkIdType GetPickedItem(int x, int y);
349 
355 
360  {
361  SELECTION_DEFAULT = 0, // selection = newSelection
362  SELECTION_ADDITION, // selection = prevSelection | newSelection
363  SELECTION_SUBTRACTION, // selection = prevSelection & !newSelection
364  SELECTION_TOGGLE // selection = prevSelection ^ newSelection
365  };
366 
367 protected:
369  ~vtkContextScene() override;
370 
374  virtual bool ProcessSelectionEvent(unsigned int rect[5]);
375 
379  virtual bool MouseMoveEvent(const vtkContextMouseEvent& event);
380 
384  virtual bool ButtonPressEvent(const vtkContextMouseEvent& event);
385 
389  virtual bool ButtonReleaseEvent(const vtkContextMouseEvent& event);
390 
394  virtual bool DoubleClickEvent(const vtkContextMouseEvent& event);
395 
399  virtual bool MouseWheelEvent(int delta, const vtkContextMouseEvent& event);
400 
404  virtual bool KeyPressEvent(const vtkContextKeyEvent& keyEvent);
405 
409  virtual bool KeyReleaseEvent(const vtkContextKeyEvent& keyEvent);
410 
415  virtual void PaintIds();
416 
421 
426 
428 
429  // Store the chart dimensions - width, height of scene in pixels
430  int Geometry[2];
431 
437 
439 
442  class Private;
443  Private* Storage;
445 
452 
454 
456 
459 
461 
464 
466 
471 
472 private:
473  vtkContextScene(const vtkContextScene&) = delete;
474  void operator=(const vtkContextScene&) = delete;
475 
476  typedef bool (vtkAbstractContextItem::*MouseEvents)(const vtkContextMouseEvent&);
477  bool ProcessItem(
478  vtkAbstractContextItem* cur, const vtkContextMouseEvent& event, MouseEvents eventPtr);
479  void EventCopy(const vtkContextMouseEvent& event);
480 };
481 
482 #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.
Definition: vtkContext2D.h:77
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.
vtkTransform2D * GetTransform()
Get the transform for the scene.
unsigned int GetNumberOfItems()
Get the number of child items.
vtkAbstractContextBufferId * BufferId
vtkAbstractContextItem * GetItem(unsigned int index)
Get the item at the specified index.
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.
vtkWeakPointer< vtkContext2D > GetLastPainter()
Last painter used.
virtual bool KeyPressEvent(const vtkContextKeyEvent &keyEvent)
Process a key press event.
virtual int GetViewHeight()
Get the height of the view.
vtkAbstractContextBufferId * GetBufferId()
Return buffer id.
bool RemoveItem(unsigned int index)
Remove child item from this item.
vtkWeakPointer< vtkContext2D > LastPainter
vtkVector2i GetLogicalTileScale()
The tile scale of the target vtkRenderWindow.
bool GetDirty() const
Inform the scene that something changed that requires a repaint of the scene.
int GetSceneHeight()
Get the height of the scene.
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.
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).
static vtkContextScene * New()
Creates a 2D Painter object.
vtkTransform2D * Transform
The scene level transform.
virtual bool ButtonPressEvent(const vtkContextMouseEvent &event)
Process a mouse button press event.
vtkAbstractContextItem * GetPickedItem()
Return the item under the mouse.
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.
virtual vtkRenderer * GetRenderer()
This should not be necessary as the context view should take care of rendering.
virtual bool ButtonReleaseEvent(const vtkContextMouseEvent &event)
Process a mouse button release event.
a simple class to control print indentation
Definition: vtkIndent.h:119
abstract base class for most VTK objects
Definition: vtkObject.h:82
abstract specification for renderers
Definition: vtkRenderer.h:182
describes linear transformations via a 3x3 matrix
Some derived classes for the different vectors commonly used.
Definition: vtkVector.h:481
@ Transform
Definition: vtkX3D.h:47
@ index
Definition: vtkX3D.h:252
int vtkIdType
Definition: vtkType.h:332