00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00025 #ifndef __vtkContextScene_h
00026 #define __vtkContextScene_h
00027
00028 #include "vtkObject.h"
00029 #include "vtkWeakPointer.h"
00030 #include "vtkVector.h"
00031
00032 class vtkContext2D;
00033 class vtkContextItem;
00034 class vtkTransform2D;
00035 class vtkContextMouseEvent;
00036
00037 class vtkInteractorStyle;
00038 class vtkAnnotationLink;
00039
00040 class vtkRenderer;
00041 class vtkAbstractContextBufferId;
00042
00043 class VTK_CHARTS_EXPORT vtkContextScene : public vtkObject
00044 {
00045 public:
00046 vtkTypeMacro(vtkContextScene, vtkObject);
00047 virtual void PrintSelf(ostream &os, vtkIndent indent);
00048
00050 static vtkContextScene * New();
00051
00054 virtual bool Paint(vtkContext2D *painter);
00055
00057 void AddItem(vtkContextItem *item);
00058
00060 int GetNumberOfItems();
00061
00062
00063 vtkContextItem * GetItem(int index);
00064
00066 virtual void SetAnnotationLink(vtkAnnotationLink *link);
00067
00069
00070 vtkGetObjectMacro(AnnotationLink, vtkAnnotationLink);
00072
00074
00075 vtkSetVector2Macro(Geometry, int);
00077
00079
00080 vtkGetVector2Macro(Geometry, int);
00082
00084
00085 vtkSetMacro(UseBufferId, bool);
00087
00089
00090 vtkGetMacro(UseBufferId, bool);
00092
00094 virtual int GetViewWidth();
00095
00097 virtual int GetViewHeight();
00098
00100 int GetSceneWidth();
00101
00103 int GetSceneHeight();
00104
00106 void SetInteractorStyle(vtkInteractorStyle *interactor);
00107
00110 virtual void SetRenderer(vtkRenderer *renderer);
00111
00115 void SetDirty(bool isDirty);
00116
00117
00119 void ReleaseGraphicsResources();
00120
00124 vtkWeakPointer<vtkContext2D> GetLastPainter();
00125
00129 vtkAbstractContextBufferId *GetBufferId();
00130
00132 virtual void SetTransform(vtkTransform2D *transform);
00133
00135 vtkTransform2D* GetTransform();
00136
00138 bool HasTransform() { return this->Transform != 0; }
00139
00140 protected:
00141 vtkContextScene();
00142 ~vtkContextScene();
00143
00147 void CheckForRepaint();
00148
00150
00152 virtual void ProcessEvents(vtkObject* caller, unsigned long eventId,
00153 void* callData);
00155
00157 virtual void ProcessSelectionEvent(vtkObject* caller, void* callData);
00158
00160 virtual void MouseMoveEvent(int x, int y);
00161
00163 virtual void ButtonPressEvent(int button, int x, int y);
00164
00166 virtual void ButtonReleaseEvent(int button, int x, int y);
00167
00170 virtual void MouseWheelEvent(int delta, int x, int y);
00171
00174 virtual void PaintIds();
00175
00179 vtkIdType GetPickedItem(int x, int y);
00180
00182 void UpdateBufferId();
00183
00184 vtkAnnotationLink *AnnotationLink;
00185
00186
00187 int Geometry[2];
00188
00190
00191 class Command;
00192 friend class Command;
00193 Command *Observer;
00195
00197
00198 class Private;
00199 Private *Storage;
00201
00202 vtkWeakPointer<vtkContext2D> LastPainter;
00203
00204 vtkWeakPointer<vtkRenderer> Renderer;
00205
00206 vtkAbstractContextBufferId *BufferId;
00207 bool BufferIdDirty;
00208
00209 bool UseBufferId;
00210
00212 vtkTransform2D* Transform;
00213
00215 void PerformTransform(vtkTransform2D *transform, vtkContextMouseEvent &mouse);
00216
00217 private:
00218 vtkContextScene(const vtkContextScene &);
00219 void operator=(const vtkContextScene &);
00220
00221 };
00222
00223
00226 class vtkContextMouseEvent
00227 {
00228 public:
00230
00231 enum {
00232 LEFT_BUTTON = 0,
00233 MIDDLE_BUTTON,
00234 RIGHT_BUTTON
00235 };
00237
00239 vtkVector2f Pos;
00240
00242 vtkVector2f ScenePos;
00243
00245 vtkVector2i ScreenPos;
00246
00248 vtkVector2f LastPos;
00249
00251 vtkVector2f LastScenePos;
00252
00254 vtkVector2i LastScreenPos;
00255
00257 int Button;
00258 };
00259
00260
00261 #endif //__vtkContextScene_h