diff pytouhou/ui/opengl/backend_sdl.pyx @ 635:80687f258001

Make sdl.Window inherit from gui.Window, so we can swap implementations.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Thu, 14 Apr 2016 21:18:03 +0100
parents
children
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/pytouhou/ui/opengl/backend_sdl.pyx
@@ -0,0 +1,41 @@
+from .backend cimport profile, major, minor, double_buffer, is_legacy
+
+cimport pytouhou.lib.sdl as sdl
+
+
+def create_sdl_window(title, x, y, width, height):
+    '''Create a window (using SDL) and an OpenGL context.'''
+
+    profile_mask = (sdl.GL_CONTEXT_PROFILE_CORE if profile == 'core' else
+                    sdl.GL_CONTEXT_PROFILE_ES if profile == 'es' else
+                    sdl.GL_CONTEXT_PROFILE_COMPATIBILITY)
+
+    sdl.gl_set_attribute(sdl.GL_CONTEXT_PROFILE_MASK, profile_mask)
+    sdl.gl_set_attribute(sdl.GL_CONTEXT_MAJOR_VERSION, major)
+    sdl.gl_set_attribute(sdl.GL_CONTEXT_MINOR_VERSION, minor)
+    sdl.gl_set_attribute(sdl.GL_RED_SIZE, 8)
+    sdl.gl_set_attribute(sdl.GL_GREEN_SIZE, 8)
+    sdl.gl_set_attribute(sdl.GL_BLUE_SIZE, 8)
+    sdl.gl_set_attribute(sdl.GL_DEPTH_SIZE, 24 if is_legacy else 0)
+    if double_buffer >= 0:
+        sdl.gl_set_attribute(sdl.GL_DOUBLEBUFFER, double_buffer)
+
+    flags = sdl.WINDOW_SHOWN | sdl.WINDOW_OPENGL
+
+    # Legacy contexts don’t support our required extensions for scaling.
+    if not is_legacy:
+        flags |= sdl.WINDOW_RESIZABLE
+
+    window = sdl.Window(title, x, y, width, height, flags)
+    #window.create_gl_context()
+
+    #discover_features()
+
+    ## If we can’t use scaling but have previously created a resizable window,
+    ## recreate it unresizable.
+    #if not use_scaled_rendering and flags & sdl.WINDOW_RESIZABLE:
+    #    flags &= ~sdl.WINDOW_RESIZABLE
+    #    window = sdl.Window(title, x, y, width, height, flags)
+    #    window.create_gl_context()
+
+    return window