VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkContextScene.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00015 00028 #ifndef __vtkContextScene_h 00029 #define __vtkContextScene_h 00030 00031 #include "vtkObject.h" 00032 #include "vtkWeakPointer.h" // Needed for weak pointer to the window. 00033 00034 class vtkContext2D; 00035 class vtkAbstractContextItem; 00036 class vtkTransform2D; 00037 class vtkContextMouseEvent; 00038 class vtkContextScenePrivate; 00039 class vtkContextInteractorStyle; 00040 00041 class vtkAnnotationLink; 00042 00043 class vtkRenderer; 00044 class vtkAbstractContextBufferId; 00045 00046 class VTK_CHARTS_EXPORT vtkContextScene : public vtkObject 00047 { 00048 public: 00049 vtkTypeMacro(vtkContextScene, vtkObject); 00050 virtual void PrintSelf(ostream &os, vtkIndent indent); 00051 00053 static vtkContextScene * New(); 00054 00057 virtual bool Paint(vtkContext2D *painter); 00058 00061 unsigned int AddItem(vtkAbstractContextItem* item); 00062 00066 bool RemoveItem(vtkAbstractContextItem* item); 00067 00071 bool RemoveItem(unsigned int index); 00072 00075 vtkAbstractContextItem* GetItem(unsigned int index); 00076 00078 unsigned int GetNumberOfItems(); 00079 00081 void ClearItems(); 00082 00084 virtual void SetAnnotationLink(vtkAnnotationLink *link); 00085 00087 00088 vtkGetObjectMacro(AnnotationLink, vtkAnnotationLink); 00090 00092 00093 vtkSetVector2Macro(Geometry, int); 00095 00097 00098 vtkGetVector2Macro(Geometry, int); 00100 00102 00103 vtkSetMacro(UseBufferId, bool); 00105 00107 00108 vtkGetMacro(UseBufferId, bool); 00110 00112 virtual int GetViewWidth(); 00113 00115 virtual int GetViewHeight(); 00116 00118 int GetSceneWidth(); 00119 00121 int GetSceneHeight(); 00122 00124 00127 vtkSetMacro(ScaleTiles, bool); 00128 vtkGetMacro(ScaleTiles, bool); 00129 vtkBooleanMacro(ScaleTiles, bool); 00131 00134 virtual void SetRenderer(vtkRenderer *renderer); 00135 00137 00140 void SetDirty(bool isDirty); 00141 bool GetDirty()const; 00143 00144 //BTX 00146 void ReleaseGraphicsResources(); 00147 00151 vtkWeakPointer<vtkContext2D> GetLastPainter(); 00152 00156 vtkAbstractContextBufferId *GetBufferId(); 00157 00159 virtual void SetTransform(vtkTransform2D *transform); 00160 00162 vtkTransform2D* GetTransform(); 00163 00165 bool HasTransform() { return this->Transform != 0; } 00166 00167 protected: 00168 vtkContextScene(); 00169 ~vtkContextScene(); 00170 00172 00174 virtual void ProcessEvents(vtkObject* caller, unsigned long eventId, 00175 void* callData); 00177 00179 virtual bool ProcessSelectionEvent(unsigned int rect[5]); 00180 00182 virtual bool MouseMoveEvent(int x, int y); 00183 00185 virtual bool ButtonPressEvent(int button, int x, int y); 00186 00188 virtual bool ButtonReleaseEvent(int button, int x, int y); 00189 00191 virtual bool DoubleClickEvent(int button, int x, int y); 00192 00195 virtual bool MouseWheelEvent(int delta, int x, int y); 00196 00199 virtual void PaintIds(); 00200 00202 void TestBufferIdSupport(); 00203 00207 vtkIdType GetPickedItem(int x, int y); 00208 00211 vtkAbstractContextItem* GetPickedItem(); 00212 00214 void UpdateBufferId(); 00215 00216 vtkAnnotationLink *AnnotationLink; 00217 00218 // Store the chart dimensions - width, height of scene in pixels 00219 int Geometry[2]; 00220 00223 friend class vtkContextInteractorStyle; 00224 00226 00227 class Private; 00228 Private *Storage; 00230 00234 vtkContextScenePrivate* Children; 00235 00236 vtkWeakPointer<vtkContext2D> LastPainter; 00237 00238 vtkWeakPointer<vtkRenderer> Renderer; 00239 00240 vtkAbstractContextBufferId *BufferId; 00241 bool BufferIdDirty; 00242 00243 bool UseBufferId; 00244 00245 bool BufferIdSupportTested; 00246 bool BufferIdSupported; 00247 00248 bool ScaleTiles; 00249 00251 vtkTransform2D* Transform; 00252 00253 private: 00254 vtkContextScene(const vtkContextScene &); // Not implemented. 00255 void operator=(const vtkContextScene &); // Not implemented. 00256 00257 typedef bool (vtkAbstractContextItem::* MouseEvents)(const vtkContextMouseEvent&); 00258 bool ProcessItem(vtkAbstractContextItem* cur, 00259 const vtkContextMouseEvent& event, 00260 MouseEvents eventPtr); 00261 //ETX 00262 }; 00263 00264 #endif //__vtkContextScene_h