d64d6031fe0019720d601900c486597ded658b3d
[occt.git] / src / OpenGl / OpenGl_GraphicDriver_713.cxx
1 // Created on: 2011-10-20
2 // Created by: Sergey ZERCHANINOV
3 // Copyright (c) 2011-2014 OPEN CASCADE SAS
4 //
5 // This file is part of Open CASCADE Technology software library.
6 //
7 // This library is free software; you can redistribute it and / or modify it
8 // under the terms of the GNU Lesser General Public version 2.1 as published
9 // by the Free Software Foundation, with special exception defined in the file
10 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11 // distribution for complete text of the license and disclaimer of any warranty.
12 //
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
15
16 #include <OpenGl_GraphicDriver.hxx>
17
18 #include <OpenGl_Group.hxx>
19 #include <OpenGl_PrimitiveArray.hxx>
20
21 #include <OpenGl_CView.hxx>
22
23 void OpenGl_GraphicDriver::SetDepthTestEnabled( const Graphic3d_CView& ACView, const Standard_Boolean isEnabled ) const
24 {
25   const OpenGl_CView *aCView = (const OpenGl_CView *)ACView.ptrView;
26   if (aCView)
27     aCView->WS->UseDepthTest() = isEnabled;
28 }
29
30 Standard_Boolean OpenGl_GraphicDriver::IsDepthTestEnabled( const Graphic3d_CView& ACView ) const
31 {
32   const OpenGl_CView *aCView = (const OpenGl_CView *)ACView.ptrView;
33   if (aCView)
34     return aCView->WS->UseDepthTest();
35   return Standard_False;
36 }
37
38 void OpenGl_GraphicDriver::ReadDepths( const Graphic3d_CView& ACView,
39                                       const Standard_Integer x,
40                                       const Standard_Integer y,
41                                       const Standard_Integer width,
42                                       const Standard_Integer height,
43                                       const Standard_Address buffer ) const
44 {
45   const OpenGl_CView *aCView = (const OpenGl_CView *)ACView.ptrView;
46   if (aCView)
47     aCView->WS->ReadDepths(x, y, width, height, (float*) buffer);
48 }
49
50 void OpenGl_GraphicDriver::SetGLLightEnabled( const Graphic3d_CView& ACView, const Standard_Boolean isEnabled ) const
51 {
52   const OpenGl_CView *aCView = (const OpenGl_CView *)ACView.ptrView;
53   if (aCView)
54     aCView->WS->UseGLLight() = isEnabled;
55 }
56
57 Standard_Boolean OpenGl_GraphicDriver::IsGLLightEnabled( const Graphic3d_CView& ACView ) const
58 {
59   const OpenGl_CView *aCView = (const OpenGl_CView *)ACView.ptrView;
60   if (aCView)
61     return aCView->WS->UseGLLight();
62   return Standard_False;
63 }
64
65 void OpenGl_GraphicDriver::PrimitiveArray( const Graphic3d_CGroup& ACGroup,
66                                           const Graphic3d_PrimitiveArray& parray,
67                                           const Standard_Boolean /*EvalMinMax*/ )
68 {
69   if ( ACGroup.ptrGroup && parray )
70   {
71     OpenGl_PrimitiveArray *aparray = new OpenGl_PrimitiveArray( (CALL_DEF_PARRAY *) parray );
72     ((OpenGl_Group *)ACGroup.ptrGroup)->AddElement( TelParray, aparray );
73   }
74 }
75
76 void OpenGl_GraphicDriver::UserDraw (const Graphic3d_CGroup&    theCGroup,
77                                      const Graphic3d_CUserDraw& theUserDraw)
78 {
79   if (theCGroup.ptrGroup != NULL
80    && myUserDrawCallback != NULL)
81   {
82     OpenGl_Element* aUserDraw = myUserDrawCallback(&theUserDraw);
83     if (aUserDraw != NULL)
84     {
85       ((OpenGl_Group* )theCGroup.ptrGroup)->AddElement (TelUserdraw, aUserDraw);
86     }
87   }
88 }