0024858: Convert class V3d_ListOfTransient to non-CDL
[occt.git] / src / OpenGl / OpenGl_Display.cxx
index a7614a0..ba3c8a0 100644 (file)
@@ -1,33 +1,28 @@
 // Created on: 2011-09-20
 // Created by: Sergey ZERCHANINOV
-// Copyright (c) 2011-2012 OPEN CASCADE SAS
+// Copyright (c) 2011-2014 OPEN CASCADE SAS
 //
-// The content of this file is subject to the Open CASCADE Technology Public
-// License Version 6.5 (the "License"). You may not use the content of this file
-// except in compliance with the License. Please obtain a copy of the License
-// at http://www.opencascade.org and read it completely before using this file.
+// This file is part of Open CASCADE Technology software library.
 //
-// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
-// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
 //
-// The Original Code and all software distributed under the License is
-// distributed on an "AS IS" basis, without warranty of any kind, and the
-// Initial Developer hereby disclaims all such warranties, including without
-// limitation, any warranties of merchantability, fitness for a particular
-// purpose or non-infringement. Please see the License for the specific terms
-// and conditions governing the rights and limitations under the License.
-
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
 
 #include <OpenGl_GlCore11.hxx>
 
 #include <OpenGl_Display.hxx>
+#include <OpenGl_Context.hxx>
+#include <OpenGl_Light.hxx>
 
 #include <OSD_Environment.hxx>
 #include <TCollection_AsciiString.hxx>
 #include <Aspect_GraphicDeviceDefinitionError.hxx>
 
-#include <OpenGl_Light.hxx>
-
 #if (!defined(_WIN32) && !defined(__WIN32__) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX)))
   #include <X11/Xlib.h> // XOpenDisplay()
 #endif
@@ -35,8 +30,6 @@
 IMPLEMENT_STANDARD_HANDLE(OpenGl_Display,MMgt_TShared)
 IMPLEMENT_STANDARD_RTTIEXT(OpenGl_Display,MMgt_TShared)
 
-Handle(OpenGl_Display) openglDisplay;
-
 namespace
 {
   #if (defined(_WIN32) || defined(__WIN32__)) || (defined(__APPLE__) && !defined(MACOSX_USE_GLX))
@@ -57,7 +50,6 @@ OpenGl_Display::OpenGl_Display (const Handle(Aspect_DisplayConnection)& theDispl
   myDBuffer(Standard_True),
   myDither(Standard_True),
   myBackDither(Standard_False),
-  myWalkthrough(Standard_False),
   mySymPerspective(Standard_False),
   myOffsetFactor(1.F),
   myOffsetUnits(0.F),
@@ -78,41 +70,29 @@ OpenGl_Display::OpenGl_Display (const Handle(Aspect_DisplayConnection)& theDispl
 
 OpenGl_Display::~OpenGl_Display ()
 {
-  // Delete line styles
-  if (myLinestyleBase)
-  {
-    glDeleteLists((GLuint)myLinestyleBase,5);
-    myLinestyleBase = 0;
-  }
-  // Delete surface patterns
-  if (myPatternBase)
-  {
-    glDeleteLists((GLuint)myPatternBase,TEL_HS_USER_DEF_START);
-    myPatternBase = 0;
-  }
-
+  ReleaseAttributes (NULL);
   myDisplay = NULL;
 }
 
-/*----------------------------------------------------------------------*/
-
-Handle(OpenGl_Window) OpenGl_Display::GetWindow (const Aspect_Drawable AParent) const
+void OpenGl_Display::ReleaseAttributes (const OpenGl_Context* theGlCtx)
 {
-  Handle(OpenGl_Window) aWindow;
-  if ( myMapOfWindows.IsBound( AParent ) )
+  // Delete line styles
+  if (myLinestyleBase != 0)
   {
-    aWindow = myMapOfWindows.Find( AParent );
+    if (theGlCtx->IsValid())
+    {
+      glDeleteLists ((GLuint )myLinestyleBase, 5);
+    }
+    myLinestyleBase = 0;
   }
-  return aWindow;
-}
-
-/*----------------------------------------------------------------------*/
-
-void OpenGl_Display::SetWindow (const Aspect_Drawable AParent, const Handle(OpenGl_Window) &AWindow)
-{
-  if ( !myMapOfWindows.IsBound( AParent ) )
+  // Delete surface patterns
+  if (myPatternBase != 0)
   {
-    myMapOfWindows.Bind( AParent, AWindow );
+    if (theGlCtx->IsValid())
+    {
+      glDeleteLists ((GLuint )myPatternBase, TEL_HS_USER_DEF_START);
+    }
+    myPatternBase = 0;
   }
 }
 
@@ -157,9 +137,6 @@ void OpenGl_Display::Init()
   if (getenv("CALL_OPENGL_NO_BACKDITHER") != NULL)
     myBackDither = Standard_False;
 
-  if (getenv("CSF_WALKTHROUGH") != NULL)
-    myWalkthrough = Standard_True;
-
   /* OCC18942: Test if symmetric perspective projection should be turned on */
   if (getenv("CSF_SYM_PERSPECTIVE") != NULL)
     mySymPerspective = Standard_True;