30db5da0309f1b6258043b26a459e13a2072bf2f
[occt.git] / samples / mfc / standard / 09_Animation / src / AnimationView3D.h
1 // AnimationView.h : interface of the CAnimationView3D class
2 //
3 /////////////////////////////////////////////////////////////////////////////
4
5 #if !defined(AFX_ANIMATIONVIEW3D_H__79840E88_1001_11D2_B8C1_0000F87A77C1_3D_INCLUDED_)
6 #define AFX_ANIMATIONVIEW3D_H__79840E88_1001_11D2_B8C1_0000F87A77C1_3D_INCLUDED_
7
8 #if _MSC_VER >= 1000
9 #pragma once
10 #endif // _MSC_VER >= 1000
11
12 #include "AnimationDoc.h"
13 #include "..\..\Common\res\OCC_Resource.h"
14
15 #include <AIS_AnimationTimer.hxx>
16 #include <AIS_ViewController.hxx>
17
18 class AIS_RubberBand;
19
20 enum View3D_CurrentAction { 
21   CurrentAction3d_Nothing,
22   CurrentAction3d_DynamicZooming,
23   CurrentAction3d_WindowZooming,
24   CurrentAction3d_DynamicPanning,
25   CurrentAction3d_GlobalPanning,
26   CurrentAction3d_DynamicRotation,
27   CurrentAction3d_Fly,
28   CurrentAction3d_Turn
29 };
30
31 class CAnimationView3D : public CView, public AIS_ViewController
32 {
33 protected: // create from serialization only
34         CAnimationView3D();
35         DECLARE_DYNCREATE(CAnimationView3D)
36
37 // Attributes
38 public:
39         CAnimationDoc* GetDocument();
40
41 // Operations
42 public:
43
44 // Overrides
45         // ClassWizard generated virtual function overrides
46         //{{AFX_VIRTUAL(CAnimationView3D)
47         public:
48         void FitAll() {   if ( !myView.IsNull() ) myView->FitAll();  myView->ZFitAll(); };
49         virtual void OnDraw(CDC* pDC);  // overridden to draw this view
50         virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
51         virtual void OnInitialUpdate(); // CasCade
52         protected:
53
54         //}}AFX_VIRTUAL
55
56 // Implementation
57 public:
58         virtual ~CAnimationView3D();
59 #ifdef _DEBUG
60         virtual void AssertValid() const;
61         virtual void Dump(CDumpContext& dc) const;
62 #endif
63
64 protected:
65         double m_dAngle;
66         BOOL m_bShift;
67
68 // Generated message map functions
69 protected:
70         //{{AFX_MSG(CAnimationView3D)
71         afx_msg void OnBUTTONAxo();
72         afx_msg void OnBUTTONBack();
73         afx_msg void OnBUTTONBottom();
74         afx_msg void OnBUTTONFront();
75         afx_msg void OnBUTTONHlrOff();
76         afx_msg void OnBUTTONHlrOn();
77         afx_msg void OnBUTTONLeft();
78         afx_msg void OnBUTTONPan();
79         afx_msg void OnBUTTONPanGlo();
80         afx_msg void OnBUTTONReset();
81         afx_msg void OnBUTTONRight();
82         afx_msg void OnBUTTONRot();
83         afx_msg void OnBUTTONTop();
84         afx_msg void OnBUTTONZoomAll();
85     afx_msg void OnFileExportImage();
86         afx_msg void OnSize(UINT nType, int cx, int cy);
87         afx_msg void OnBUTTONZoomProg();
88         afx_msg void OnBUTTONZoomWin();
89         afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint point);
90         afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
91         afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
92         afx_msg void OnMButtonDown(UINT nFlags, CPoint point);
93         afx_msg void OnMButtonUp(UINT nFlags, CPoint point);
94         afx_msg void OnMouseMove(UINT nFlags, CPoint point);
95         afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
96         afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
97         afx_msg void OnUpdateBUTTONHlrOff(CCmdUI* pCmdUI);
98         afx_msg void OnUpdateBUTTONHlrOn(CCmdUI* pCmdUI);
99         afx_msg void OnUpdateBUTTONPanGlo(CCmdUI* pCmdUI);
100         afx_msg void OnUpdateBUTTONPan(CCmdUI* pCmdUI);
101         afx_msg void OnUpdateBUTTONZoomProg(CCmdUI* pCmdUI);
102         afx_msg void OnUpdateBUTTONZoomWin(CCmdUI* pCmdUI);
103         afx_msg void OnUpdateBUTTONRot(CCmdUI* pCmdUI);
104
105         afx_msg void OnChangeBackground();
106
107         afx_msg void OnBUTTONFly();
108         afx_msg void OnBUTTONTurn();
109         afx_msg void OnUpdateBUTTONFly(CCmdUI* pCmdUI);
110         afx_msg void OnUpdateBUTTONTurn(CCmdUI* pCmdUI);
111         //}}AFX_MSG
112         
113 public :
114         afx_msg void OnStop();
115         afx_msg void OnRestart();
116 protected:
117
118         DECLARE_MESSAGE_MAP()
119 private:
120         Handle(V3d_View)     myView;
121 public:
122         Handle(V3d_View)&    GetView() { return myView;};
123
124   //! Request view redrawing.
125   void update3dView();
126
127   //! Flush events and redraw view.
128   void redraw3dView();
129
130 protected:
131
132   //! Handle view redraw.
133   virtual void handleViewRedraw (const Handle(AIS_InteractiveContext)& theCtx,
134                                  const Handle(V3d_View)& theView) Standard_OVERRIDE;
135
136 protected:
137
138   //! Setup mouse gestures.
139   void defineMouseGestures();
140
141   //! Get current action.
142   View3D_CurrentAction getCurrentAction() const { return myCurrentMode; }
143
144   //! Set current action.
145   void setCurrentAction (View3D_CurrentAction theAction)
146   {
147     myCurrentMode = theAction;
148     defineMouseGestures();
149   }
150
151 private:
152   AIS_AnimationTimer   myAnimTimer;
153   AIS_MouseGestureMap  myDefaultGestures;
154   Graphic3d_Vec2i      myClickPos;
155   Standard_Real        myCurZoom;
156   Standard_Boolean     myHlrModeIsOn;
157   Standard_Boolean     myIsTurnStarted;
158   unsigned int         myUpdateRequests; //!< counter for unhandled update requests
159
160   View3D_CurrentAction myCurrentMode;
161 };
162
163 #ifndef _DEBUG  // debug version in AnimationView.cpp
164 inline CAnimationDoc* CAnimationView3D::GetDocument()
165    { return (CAnimationDoc*)m_pDocument; }
166 #endif
167
168 /////////////////////////////////////////////////////////////////////////////
169
170 //{{AFX_INSERT_LOCATION}}
171 // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
172
173 #endif // !defined(AFX_ANIMATIONVIEW3D_H__79840E88_1001_11D2_B8C1_0000F87A77C1_3D_INCLUDED_)