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 
29 #ifndef vtkContextScene_h
30 #define vtkContextScene_h
31 
32 #include "vtkRenderingContext2DModule.h" // For export macro
33 #include "vtkObject.h"
34 #include "vtkWeakPointer.h" // Needed for weak pointer to the window.
35 #include "vtkVector.h" // For vtkVector return type.
36 
37 class vtkContext2D;
39 class vtkTransform2D;
41 class vtkContextKeyEvent;
44 
45 class vtkAnnotationLink;
46 
47 class vtkRenderer;
49 
50 class VTKRENDERINGCONTEXT2D_EXPORT vtkContextScene : public vtkObject
51 {
52 public:
53  vtkTypeMacro(vtkContextScene, vtkObject);
54  virtual void PrintSelf(ostream &os, vtkIndent indent);
55 
59  static vtkContextScene * New();
60 
64  virtual bool Paint(vtkContext2D *painter);
65 
70  unsigned int AddItem(vtkAbstractContextItem* item);
71 
78 
84  bool RemoveItem(unsigned int index);
85 
91 
95  unsigned int GetNumberOfItems();
96 
100  void ClearItems();
101 
106 
108 
111  vtkGetObjectMacro(AnnotationLink, vtkAnnotationLink);
113 
115 
118  vtkSetVector2Macro(Geometry, int);
120 
122 
125  vtkGetVector2Macro(Geometry, int);
127 
129 
132  vtkSetMacro(UseBufferId, bool);
134 
136 
139  vtkGetMacro(UseBufferId, bool);
141 
145  virtual int GetViewWidth();
146 
150  virtual int GetViewHeight();
151 
156 
161 
163 
168  vtkSetMacro(ScaleTiles, bool);
169  vtkGetMacro(ScaleTiles, bool);
170  vtkBooleanMacro(ScaleTiles, bool);
172 
180 
182 
186  virtual void SetRenderer(vtkRenderer *renderer);
189 
191 
196  void SetDirty(bool isDirty);
197  bool GetDirty()const;
199 
204 
211 
218 
222  virtual void SetTransform(vtkTransform2D *transform);
223 
228 
232  bool HasTransform() { return this->Transform != 0; }
233 
237  enum {
238  SELECTION_NONE = 0,
242  SELECTION_TOGGLE
243  };
244 
245 protected:
248 
252  virtual bool ProcessSelectionEvent(unsigned int rect[5]);
253 
257  virtual bool MouseMoveEvent(const vtkContextMouseEvent &event);
258 
262  virtual bool ButtonPressEvent(const vtkContextMouseEvent &event);
263 
267  virtual bool ButtonReleaseEvent(const vtkContextMouseEvent &event);
268 
272  virtual bool DoubleClickEvent(const vtkContextMouseEvent &event);
273 
277  virtual bool MouseWheelEvent(int delta, const vtkContextMouseEvent &event);
278 
282  virtual bool KeyPressEvent(const vtkContextKeyEvent& keyEvent);
283 
287  virtual bool KeyReleaseEvent(const vtkContextKeyEvent& keyEvent);
288 
293  virtual void PaintIds();
294 
299 
305  vtkIdType GetPickedItem(int x, int y);
306 
312 
317 
319 
320  // Store the chart dimensions - width, height of scene in pixels
321  int Geometry[2];
322 
328 
330 
333  class Private;
334  Private *Storage;
336 
343 
345 
347 
350 
352 
355 
357 
362 
363 private:
364  vtkContextScene(const vtkContextScene &) VTK_DELETE_FUNCTION;
365  void operator=(const vtkContextScene &) VTK_DELETE_FUNCTION;
366 
367  typedef bool (vtkAbstractContextItem::* MouseEvents)(const vtkContextMouseEvent&);
368  bool ProcessItem(vtkAbstractContextItem* cur,
369  const vtkContextMouseEvent& event,
370  MouseEvents eventPtr);
371  void EventCopy(const vtkContextMouseEvent &event);
372 
373 };
374 
375 #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:58
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.
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.
virtual void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
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.
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
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.
virtual vtkRenderer * GetRenderer()
virtual bool ButtonReleaseEvent(const vtkContextMouseEvent &event)
Process a mouse button release event.
a simple class to control print indentation
Definition: vtkIndent.h:40
abstract base class for most VTK objects
Definition: vtkObject.h:60
abstract specification for renderers
Definition: vtkRenderer.h:64
describes linear transformations via a 3x3 matrix
Some derived classes for the different vectors commonly used.
Definition: vtkVector.h:328
Transform
Definition: ADIOSDefs.h:40
@ index
Definition: vtkX3D.h:246
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkBooleanMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
int vtkIdType
Definition: vtkType.h:287