7fd59977 |
1 | // OCCDemo_Presentation.h: interface for the OCCDemo_Presentation class. |
2 | // This is a base class for all presentations |
3 | ////////////////////////////////////////////////////////////////////// |
4 | |
5 | #if !defined(AFX_OCCDEMO_PRESENTATION_H__790EED7F_7BA2_11D5_BA4A_0060B0EE18EA__INCLUDED_) |
6 | #define AFX_OCCDEMO_PRESENTATION_H__790EED7F_7BA2_11D5_BA4A_0060B0EE18EA__INCLUDED_ |
7 | |
8 | #if _MSC_VER > 1000 |
9 | #pragma once |
10 | #endif // _MSC_VER > 1000 |
11 | |
12 | #include "Viewer3dDoc.h" |
13 | |
14 | #define WAIT_A_LITTLE WaitForInput(500) |
15 | #define WAIT_A_SECOND WaitForInput(1000) |
16 | |
17 | class CViewer3dDoc; |
9e3ca93a |
18 | #include <AIS_InteractiveObject.hxx> |
19 | #include <AIS_Point.hxx> |
20 | #include <Geom_Surface.hxx> |
21 | #include <Geom_Curve.hxx> |
22 | #include <Geom2d_Curve.hxx> |
7fd59977 |
23 | class Quantity_Color; |
24 | |
25 | class OCCDemo_Presentation |
26 | { |
27 | public: |
28 | // Construction |
29 | OCCDemo_Presentation() : myIndex(0), myNbSamples(0), FitMode(false){} |
30 | virtual ~OCCDemo_Presentation() {} |
31 | |
32 | public: |
33 | static OCCDemo_Presentation* Current; |
34 | // this pointer must be initialized when realize a derivable class; |
35 | // it is used by application to access to a presentation class instance |
36 | |
37 | void SetDocument (CViewer3dDoc* theDoc) {myDoc = theDoc;} |
38 | // document must be set by the user of this class before first use of iterations |
39 | |
40 | public: |
41 | // Titling |
42 | const CString& GetName() const {return myName;} |
43 | |
44 | public: |
45 | // Iteration on samples |
46 | void FirstSample() {myIndex=0;} |
47 | void LastSample() {myIndex=myNbSamples-1;} |
48 | Standard_Boolean AtFirstSample() const {return myIndex <= 0;} |
49 | Standard_Boolean AtLastSample() const {return myIndex >= myNbSamples-1;} |
50 | void NextSample() {myIndex++;} |
51 | void PrevSample() {myIndex--;} |
52 | virtual void DoSample() = 0; |
9764ccbb |
53 | static void GetViewAt (V3d_Coordinate& theX, V3d_Coordinate& theY, V3d_Coordinate& theZ); |
54 | static void SetViewAt (const V3d_Coordinate theX, const V3d_Coordinate theY, const V3d_Coordinate theZ); |
55 | static void GetViewEye (V3d_Coordinate& X, V3d_Coordinate& Y, V3d_Coordinate& Z); |
56 | static void SetViewEye (V3d_Coordinate X, V3d_Coordinate Y, V3d_Coordinate Z); |
7fd59977 |
57 | static Quantity_Factor GetViewScale(); |
58 | static void SetViewScale(Quantity_Factor Coef); |
59 | static void ResetView(); |
60 | CViewer3dDoc* getDocument() { return myDoc; } |
61 | |
62 | |
63 | // place one-time initialization code in this function |
64 | virtual void Init() {} |
65 | |
66 | protected: |
67 | // Methods to call from a derivable class |
68 | void setName (const char* theName) {myName = CString(theName);} |
92efcf78 |
69 | Handle(AIS_InteractiveContext) getAISContext() const; |
70 | Handle(V3d_Viewer) getViewer() const; |
7fd59977 |
71 | // void setResultTitle (const char* theTitle) {myDoc->GetResultDialog()->SetTitle(theTitle);} |
72 | // void setResultText (const char* theText) {myDoc->GetResultDialog()->SetText(theText);} |
73 | Standard_CString GetDataDir(); |
74 | |
75 | Standard_Boolean WaitForInput (unsigned long aMilliSeconds); |
76 | // Waits for a user input or a period of time has been elapsed |
77 | |
92efcf78 |
78 | Handle(AIS_InteractiveObject) drawSurface (const Handle(Geom_Surface)& theSurface, |
7fd59977 |
79 | const Quantity_Color& theColor = Quantity_Color(Quantity_NOC_LEMONCHIFFON3), |
80 | const Standard_Boolean toDisplay = Standard_True); |
81 | // creates a finite face based on the given geometric surface |
82 | // and displays it in the viewer if toDisplay = Standard_True |
83 | |
92efcf78 |
84 | Handle(AIS_InteractiveObject) drawCurve (const Handle(Geom_Curve)& theCurve, |
7fd59977 |
85 | const Quantity_Color& theColor = Quantity_Color(Quantity_NOC_RED), |
86 | const Standard_Boolean toDisplay = Standard_True); |
87 | // creates an ISession_Curve based on the given geometric curve |
88 | // and displays it in the viewer if toDisplay = Standard_True |
89 | |
92efcf78 |
90 | Handle(AIS_InteractiveObject) drawCurve (const Handle(Geom2d_Curve)& theCurve, |
7fd59977 |
91 | const Quantity_Color& theColor = Quantity_Color(Quantity_NOC_RED), |
92 | const Standard_Boolean toDisplay = Standard_True, |
93 | const gp_Ax2& aPosition = gp::XOY()); |
94 | // converts a given curve to 3d using aPosition and calls the previous method |
95 | |
92efcf78 |
96 | Handle(AIS_Point) drawPoint (const gp_Pnt& thePnt, |
7fd59977 |
97 | const Quantity_Color& theColor = Quantity_Color(Quantity_NOC_GREEN), |
98 | const Standard_Boolean toDisplay = Standard_True); |
99 | // creates a presentation of the given point |
100 | // and displays it in the viewer if toDisplay = Standard_True |
101 | |
92efcf78 |
102 | Handle(AIS_InteractiveObject) drawVector (const gp_Pnt& thePnt, |
7fd59977 |
103 | const gp_Vec& theVec, |
104 | const Quantity_Color& theColor = Quantity_Color(Quantity_NOC_YELLOW), |
105 | const Standard_Boolean toDisplay = Standard_True); |
106 | // creates a presentation of the given vector |
107 | // and displays it in the viewer if toDisplay = Standard_True |
108 | |
92efcf78 |
109 | Handle(AIS_Shape) drawShape (const TopoDS_Shape& theShape, |
7fd59977 |
110 | const Quantity_Color& theColor, |
111 | const Standard_Boolean toDisplay = Standard_True); |
112 | // creates a presentation of the given shape |
113 | // with material PLASTIC and a given color |
114 | // and displays it in the viewer if toDisplay = Standard_True |
115 | |
92efcf78 |
116 | Handle(AIS_Shape) drawShape (const TopoDS_Shape& theShape, |
7fd59977 |
117 | const Graphic3d_NameOfMaterial theMaterial = Graphic3d_NOM_BRASS, |
118 | const Standard_Boolean toDisplay = Standard_True); |
119 | // creates a presentation of the given shape with the given material |
120 | // (color is default for a given material) |
121 | // and displays it in the viewer if toDisplay = Standard_True |
122 | |
123 | protected: |
124 | // Fields to use in a derivable class |
125 | BOOL FitMode; |
126 | int myIndex; |
127 | int myNbSamples; |
128 | |
129 | private: |
130 | CViewer3dDoc* myDoc; |
131 | CString myName; |
132 | |
133 | }; |
134 | |
135 | #endif // !defined(AFX_OCCDEMO_PRESENTATION_H__790EED7F_7BA2_11D5_BA4A_0060B0EE18EA__INCLUDED_) |