// 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
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))
myDBuffer(Standard_True),
myDither(Standard_True),
myBackDither(Standard_False),
- myWalkthrough(Standard_False),
mySymPerspective(Standard_False),
myOffsetFactor(1.F),
myOffsetUnits(0.F),
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;
}
}
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;