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; 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> 23 class Quantity_Color; 24 25 class OCCDemo_Presentation 26 { 27 public: 28 // Construction OCCDemo_Presentation()29 OCCDemo_Presentation() : myIndex(0), myNbSamples(0), FitMode(false){} ~OCCDemo_Presentation()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 SetDocument(CViewer3dDoc * theDoc)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 GetName()42 const CString& GetName() const {return myName;} 43 44 public: 45 // Iteration on samples FirstSample()46 void FirstSample() {myIndex=0;} LastSample()47 void LastSample() {myIndex=myNbSamples-1;} AtFirstSample()48 Standard_Boolean AtFirstSample() const {return myIndex <= 0;} AtLastSample()49 Standard_Boolean AtLastSample() const {return myIndex >= myNbSamples-1;} NextSample()50 void NextSample() {myIndex++;} PrevSample()51 void PrevSample() {myIndex--;} 52 virtual void DoSample() = 0; 53 static void GetViewAt (Standard_Real& theX, Standard_Real& theY, Standard_Real& theZ); 54 static void SetViewAt (const Standard_Real theX, const Standard_Real theY, const Standard_Real theZ); 55 static void GetViewEye (Standard_Real& X, Standard_Real& Y, Standard_Real& Z); 56 static void SetViewEye (Standard_Real X, Standard_Real Y, Standard_Real Z); 57 static Standard_Real GetViewScale(); 58 static void SetViewScale(Standard_Real Coef); 59 static void ResetView(); getDocument()60 CViewer3dDoc* getDocument() { return myDoc; } 61 62 63 // place one-time initialization code in this function Init()64 virtual void Init() {} 65 66 protected: 67 // Methods to call from a derivable class setName(const char * theName)68 void setName (const char* theName) {myName = CString(theName);} 69 Handle(AIS_InteractiveContext) getAISContext() const; 70 Handle(V3d_Viewer) getViewer() const; 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 78 Handle(AIS_InteractiveObject) drawSurface (const Handle(Geom_Surface)& theSurface, 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 84 Handle(AIS_InteractiveObject) drawCurve (const Handle(Geom_Curve)& theCurve, 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 90 Handle(AIS_InteractiveObject) drawCurve (const Handle(Geom2d_Curve)& theCurve, 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 96 Handle(AIS_Point) drawPoint (const gp_Pnt& thePnt, 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 102 Handle(AIS_InteractiveObject) drawVector (const gp_Pnt& thePnt, 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 109 Handle(AIS_Shape) drawShape (const TopoDS_Shape& theShape, 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 116 Handle(AIS_Shape) drawShape (const TopoDS_Shape& theShape, 117 const Graphic3d_NameOfMaterial theMaterial = Graphic3d_NameOfMaterial_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_) 136