Commit | Line | Data |
---|---|---|
b311480e | 1 | // Created on: 2011-09-20 |
2 | // Created by: Sergey ZERCHANINOV | |
973c2be1 | 3 | // Copyright (c) 2011-2014 OPEN CASCADE SAS |
b311480e | 4 | // |
973c2be1 | 5 | // This file is part of Open CASCADE Technology software library. |
b311480e | 6 | // |
d5f74e42 | 7 | // This library is free software; you can redistribute it and/or modify it under |
8 | // the terms of the GNU Lesser General Public License version 2.1 as published | |
973c2be1 | 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. | |
b311480e | 12 | // |
973c2be1 | 13 | // Alternatively, this file may be used under the terms of Open CASCADE |
14 | // commercial license or contractual agreement. | |
b311480e | 15 | |
2166f0fa SK |
16 | #ifndef _OpenGl_Window_Header |
17 | #define _OpenGl_Window_Header | |
18 | ||
c357e426 | 19 | #include <Aspect_RenderingContext.hxx> |
20 | #include <Aspect_Window.hxx> | |
3695b8c2 | 21 | #include <OpenGl_GlCore11.hxx> |
58655684 | 22 | #include <OpenGl_Caps.hxx> |
3695b8c2 | 23 | #include <MMgt_TShared.hxx> |
2166f0fa | 24 | |
a2e4f780 | 25 | #if defined(__APPLE__) |
26 | #import <TargetConditionals.h> | |
27 | #endif | |
28 | ||
29 | #if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE | |
30 | #ifdef __OBJC__ | |
31 | @class UIView; | |
32 | #else | |
33 | struct UIView; | |
34 | #endif | |
35 | #endif | |
36 | ||
c04c30b3 | 37 | class OpenGl_Context; |
38 | class OpenGl_GraphicDriver; | |
39 | ||
40 | class OpenGl_Window; | |
41 | DEFINE_STANDARD_HANDLE(OpenGl_Window,MMgt_TShared) | |
42 | ||
2166f0fa SK |
43 | //! This class represents low-level wrapper over window with GL context. |
44 | //! The window itself should be provided to constructor. | |
45 | class OpenGl_Window : public MMgt_TShared | |
46 | { | |
47 | public: | |
48 | ||
49 | //! Main constructor - prepare GL context for specified window. | |
62e1beed | 50 | Standard_EXPORT OpenGl_Window (const Handle(OpenGl_GraphicDriver)& theDriver, |
c357e426 | 51 | const Handle(Aspect_Window)& thePlatformWindow, |
62e1beed | 52 | Aspect_RenderingContext theGContext, |
53 | const Handle(OpenGl_Caps)& theCaps, | |
54 | const Handle(OpenGl_Context)& theShareCtx); | |
2166f0fa SK |
55 | |
56 | //! Destructor | |
62e1beed | 57 | Standard_EXPORT virtual ~OpenGl_Window(); |
2166f0fa SK |
58 | |
59 | //! Resizes the window. | |
c357e426 | 60 | Standard_EXPORT virtual void Resize(); |
2166f0fa | 61 | |
c357e426 | 62 | Handle(Aspect_Window) PlatformWindow() { return myPlatformWindow; } |
2166f0fa | 63 | |
2166f0fa SK |
64 | Standard_Integer Width() const { return myWidth; } |
65 | Standard_Integer Height() const { return myHeight; } | |
2166f0fa SK |
66 | |
67 | const Handle(OpenGl_Context)& GetGlContext() const { return myGlContext; } | |
68 | ||
2166f0fa | 69 | //! Activates GL context and setup viewport. |
62e1beed | 70 | Standard_EXPORT void Init(); |
2166f0fa SK |
71 | |
72 | //! Makes GL context for this window active in current thread | |
62e1beed | 73 | Standard_EXPORT virtual Standard_Boolean Activate(); |
2166f0fa | 74 | |
c357e426 | 75 | //! Sets swap interval for this window according to the context's settings. |
76 | Standard_EXPORT void SetSwapInterval(); | |
2166f0fa | 77 | |
2166f0fa SK |
78 | protected: |
79 | ||
2166f0fa | 80 | Handle(OpenGl_Context) myGlContext; |
2166f0fa | 81 | Standard_Boolean myOwnGContext; //!< set to TRUE if GL context was not created by this class |
c357e426 | 82 | Handle(Aspect_Window) myPlatformWindow; //!< software platform window wrapper |
a2e4f780 | 83 | #if defined(__APPLE__) |
84 | #if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE | |
85 | UIView* myUIView; | |
86 | #endif | |
87 | Standard_Integer myWidthPt; //!< window width in logical units | |
88 | Standard_Integer myHeightPt; //!< window height in logical units | |
89 | #endif | |
90 | Standard_Integer myWidth; //!< window width in pixels | |
91 | Standard_Integer myHeight; //!< window height in pixels | |
2166f0fa | 92 | |
f978241f | 93 | Standard_Integer mySwapInterval;//!< last assigned swap interval (VSync) for this window |
94 | ||
2166f0fa SK |
95 | public: |
96 | ||
92efcf78 | 97 | DEFINE_STANDARD_RTTIEXT(OpenGl_Window,MMgt_TShared) // Type definition |
1c35b92f | 98 | DEFINE_STANDARD_ALLOC |
2166f0fa SK |
99 | |
100 | }; | |
101 | ||
102 | #endif //_OpenGl_Window_Header |