VTK
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 
26 #ifndef vtkContextScene_h
27 #define vtkContextScene_h
28 
29 #include "vtkRenderingContext2DModule.h" // For export macro
30 #include "vtkObject.h"
31 #include "vtkWeakPointer.h" // Needed for weak pointer to the window.
32 #include "vtkVector.h" // For vtkVector return type.
33 
34 class vtkContext2D;
36 class vtkTransform2D;
38 class vtkContextKeyEvent;
41 
42 class vtkAnnotationLink;
43 
44 class vtkRenderer;
46 
47 class VTKRENDERINGCONTEXT2D_EXPORT vtkContextScene : public vtkObject
48 {
49 public:
50  vtkTypeMacro(vtkContextScene, vtkObject);
51  void PrintSelf(ostream &os, vtkIndent indent) override;
52 
56  static vtkContextScene * New();
57 
61  virtual bool Paint(vtkContext2D *painter);
62 
67  unsigned int AddItem(vtkAbstractContextItem* item);
68 
74  bool RemoveItem(vtkAbstractContextItem* item);
75 
81  bool RemoveItem(unsigned int index);
82 
87  vtkAbstractContextItem* GetItem(unsigned int index);
88 
92  unsigned int GetNumberOfItems();
93 
97  void ClearItems();
98 
102  virtual void SetAnnotationLink(vtkAnnotationLink *link);
103 
105 
108  vtkGetObjectMacro(AnnotationLink, vtkAnnotationLink);
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 
152  int GetSceneWidth();
153 
157  int GetSceneHeight();
158 
160 
165  vtkSetMacro(ScaleTiles, bool);
166  vtkGetMacro(ScaleTiles, bool);
167  vtkBooleanMacro(ScaleTiles, bool);
169 
176  vtkVector2i GetLogicalTileScale();
177 
179 
183  virtual void SetRenderer(vtkRenderer *renderer);
184  virtual vtkRenderer* GetRenderer();
186 
188 
193  void SetDirty(bool isDirty);
194  bool GetDirty()const;
196 
200  void ReleaseGraphicsResources();
201 
207  vtkWeakPointer<vtkContext2D> GetLastPainter();
208 
214  vtkAbstractContextBufferId *GetBufferId();
215 
219  virtual void SetTransform(vtkTransform2D *transform);
220 
224  vtkTransform2D* GetTransform();
225 
229  bool HasTransform() { return this->Transform != nullptr; }
230 
234  enum {
235  SELECTION_NONE = 0,
239  SELECTION_TOGGLE
240  };
241 
242 protected:
243  vtkContextScene();
244  ~vtkContextScene() override;
245 
249  virtual bool ProcessSelectionEvent(unsigned int rect[5]);
250 
254  virtual bool MouseMoveEvent(const vtkContextMouseEvent &event);
255 
259  virtual bool ButtonPressEvent(const vtkContextMouseEvent &event);
260 
264  virtual bool ButtonReleaseEvent(const vtkContextMouseEvent &event);
265 
269  virtual bool DoubleClickEvent(const vtkContextMouseEvent &event);
270 
274  virtual bool MouseWheelEvent(int delta, const vtkContextMouseEvent &event);
275 
279  virtual bool KeyPressEvent(const vtkContextKeyEvent& keyEvent);
280 
284  virtual bool KeyReleaseEvent(const vtkContextKeyEvent& keyEvent);
285 
290  virtual void PaintIds();
291 
295  void TestBufferIdSupport();
296 
302  vtkIdType GetPickedItem(int x, int y);
303 
308  vtkAbstractContextItem* GetPickedItem();
309 
313  void UpdateBufferId();
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 
360 private:
361  vtkContextScene(const vtkContextScene &) = delete;
362  void operator=(const vtkContextScene &) = delete;
363 
364  typedef bool (vtkAbstractContextItem::* MouseEvents)(const vtkContextMouseEvent&);
365  bool ProcessItem(vtkAbstractContextItem* cur,
366  const vtkContextMouseEvent& event,
367  MouseEvents eventPtr);
368  void EventCopy(const vtkContextMouseEvent &event);
369 
370 };
371 
372 #endif //vtkContextScene_h
vtkContextMouseEvent
data structure to represent mouse events.
Definition: vtkContextMouseEvent.h:34
vtkContextKeyEvent
data structure to represent key events.
Definition: vtkContextKeyEvent.h:34
vtkIdType
int vtkIdType
Definition: vtkType.h:347
vtkAbstractContextItem
base class for items that are part of a vtkContextScene.
Definition: vtkAbstractContextItem.h:40
vtkTransform2D
describes linear transformations via a 3x3 matrix
Definition: vtkTransform2D.h:45
vtkContextScene::BufferId
vtkAbstractContextBufferId * BufferId
Definition: vtkContextScene.h:345
vtkObject::New
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
vtkContextScene::Children
vtkContextScenePrivate * Children
This structure provides a list of children, along with convenience functions to paint the children et...
Definition: vtkContextScene.h:339
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:53
vtkContextScene::BufferIdDirty
bool BufferIdDirty
Definition: vtkContextScene.h:346
vtkVector.h
vtkContext2D
Class for drawing 2D primitives to a graphical context.
Definition: vtkContext2D.h:52
vtkContextScene::SELECTION_DEFAULT
Definition: vtkContextScene.h:236
vtkContextScene::SELECTION_ADDITION
Definition: vtkContextScene.h:237
vtkContextScene::UseBufferId
bool UseBufferId
Definition: vtkContextScene.h:348
vtkAbstractContextBufferId
2D array of ids, used for picking.
Definition: vtkAbstractContextBufferId.h:46
vtkContextScene::BufferIdSupported
bool BufferIdSupported
Definition: vtkContextScene.h:351
vtkContextScene
Provides a 2D scene for vtkContextItem objects.
Definition: vtkContextScene.h:47
vtkContextScene::Transform
vtkTransform2D * Transform
The scene level transform.
Definition: vtkContextScene.h:358
ADIOS::Transform
Transform
Definition: ADIOSDefs.h:40
vtkContextScene::SELECTION_SUBTRACTION
Definition: vtkContextScene.h:238
vtkContextScene::ScaleTiles
bool ScaleTiles
Definition: vtkContextScene.h:353
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkObject::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkWeakPointer.h
vtkContextScene::Storage
Private * Storage
Definition: vtkContextScene.h:330
vtkContextScenePrivate
Private implementation for scene/items.
Definition: vtkContextScenePrivate.h:40
vtkObject.h
vtkContextInteractorStyle
An interactor for chart views.
Definition: vtkContextInteractorStyle.h:36
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:57
vtkContextScene::Renderer
vtkWeakPointer< vtkRenderer > Renderer
Definition: vtkContextScene.h:343
vtkContextScene::AnnotationLink
vtkAnnotationLink * AnnotationLink
Definition: vtkContextScene.h:315
vtkVector2i
Some derived classes for the different vectors commonly used.
Definition: vtkVector.h:405
vtkContextScene::BufferIdSupportTested
bool BufferIdSupportTested
Definition: vtkContextScene.h:350
vtkContextScene::HasTransform
bool HasTransform()
Check whether the scene has a transform.
Definition: vtkContextScene.h:229
vtkX3D::index
Definition: vtkX3D.h:246
vtkContextScene::LastPainter
vtkWeakPointer< vtkContext2D > LastPainter
Definition: vtkContextScene.h:341
vtkWeakPointer< vtkContext2D >