1 // File: OpenGl_GraphicDriver_8.cxx
2 // Created: 20 October 2011
3 // Author: Sergey ZERCHANINOV
4 // Copyright: OPEN CASCADE 2011
6 #include <OpenGl_GraphicDriver.hxx>
8 #include <OpenGl_CView.hxx>
9 #include <OpenGl_Structure.hxx>
11 static Handle(OpenGl_Workspace) myImmediateWS;
13 /*----------------------------------------------------------------------*/
15 Standard_Boolean OpenGl_GraphicDriver::BeginAddMode (const Graphic3d_CView& ACView)
17 if (ACView.ViewId == -1)
18 return Standard_False;
20 const OpenGl_CView *aCView = (const OpenGl_CView *)ACView.ptrView;
21 if (aCView && aCView->WS->BeginAddMode())
23 myImmediateWS = aCView->WS;
27 return Standard_False;
30 void OpenGl_GraphicDriver::EndAddMode (void)
32 if (!myImmediateWS.IsNull())
34 myImmediateWS->EndAddMode();
35 myImmediateWS.Nullify();
39 Standard_Boolean OpenGl_GraphicDriver::BeginImmediatMode (const Graphic3d_CView& ACView, const Aspect_CLayer2d& ACUnderLayer, const Aspect_CLayer2d& ACOverLayer, const Standard_Boolean DoubleBuffer, const Standard_Boolean RetainMode)
41 if (ACView.ViewId == -1)
42 return Standard_False;
44 const OpenGl_CView *aCView = (const OpenGl_CView *)ACView.ptrView;
45 if (aCView && aCView->WS->BeginImmediatMode(ACView, DoubleBuffer, RetainMode))
47 myImmediateWS = aCView->WS;
51 return Standard_False;
54 void OpenGl_GraphicDriver::BeginPolyline ()
56 if (!myImmediateWS.IsNull())
57 myImmediateWS->BeginPolyline();
60 void OpenGl_GraphicDriver::ClearImmediatMode (const Graphic3d_CView& ACView, const Standard_Boolean aFlush)
62 const OpenGl_CView *aCView = (const OpenGl_CView *)ACView.ptrView;
64 aCView->WS->ClearImmediatMode(ACView,aFlush);
67 void OpenGl_GraphicDriver::Draw (const Standard_ShortReal X, const Standard_ShortReal Y, const Standard_ShortReal Z)
69 if (!myImmediateWS.IsNull())
70 myImmediateWS->Draw(X,Y,Z);
73 void OpenGl_GraphicDriver::DrawStructure (const Graphic3d_CStructure& ACStructure)
75 OpenGl_Structure *astructure = (OpenGl_Structure *)ACStructure.ptrStructure;
79 if (!myImmediateWS.IsNull())
80 myImmediateWS->DrawStructure(astructure);
83 void OpenGl_GraphicDriver::EndImmediatMode (const Standard_Integer Synchronize)
85 if (!myImmediateWS.IsNull())
87 myImmediateWS->EndImmediatMode();
88 myImmediateWS.Nullify();
92 void OpenGl_GraphicDriver::EndPolyline ()
94 if (!myImmediateWS.IsNull())
95 myImmediateWS->EndPolyline();
98 void OpenGl_GraphicDriver::Move (const Standard_ShortReal X, const Standard_ShortReal Y, const Standard_ShortReal Z)
100 if (!myImmediateWS.IsNull())
101 myImmediateWS->Move(X,Y,Z);
104 void OpenGl_GraphicDriver::SetLineColor (const Standard_ShortReal R, const Standard_ShortReal G, const Standard_ShortReal B)
106 if (!myImmediateWS.IsNull())
107 myImmediateWS->SetLineColor(R,G,B);
110 void OpenGl_GraphicDriver::SetLineType (const Standard_Integer Type)
112 if (!myImmediateWS.IsNull())
113 myImmediateWS->SetLineType(Type);
116 void OpenGl_GraphicDriver::SetLineWidth (const Standard_ShortReal Width)
118 if (!myImmediateWS.IsNull())
119 myImmediateWS->SetLineWidth(Width);
122 void OpenGl_GraphicDriver::SetMinMax (const Standard_ShortReal X1, const Standard_ShortReal Y1, const Standard_ShortReal Z1, const Standard_ShortReal X2, const Standard_ShortReal Y2, const Standard_ShortReal Z2)
124 if (!myImmediateWS.IsNull())
125 myImmediateWS->SetMinMax(X1,Y1,Z1,X2,Y2,Z2);
128 void OpenGl_GraphicDriver::Transform (const TColStd_Array2OfReal& AMatrix, const Graphic3d_TypeOfComposition AType)
130 if (!myImmediateWS.IsNull())
131 myImmediateWS->Transform(AMatrix,AType);