summaryrefslogtreecommitdiff
path: root/silx/gui/_glutils/gl.py
diff options
context:
space:
mode:
Diffstat (limited to 'silx/gui/_glutils/gl.py')
-rw-r--r--silx/gui/_glutils/gl.py168
1 files changed, 0 insertions, 168 deletions
diff --git a/silx/gui/_glutils/gl.py b/silx/gui/_glutils/gl.py
deleted file mode 100644
index 608d9ce..0000000
--- a/silx/gui/_glutils/gl.py
+++ /dev/null
@@ -1,168 +0,0 @@
-# coding: utf-8
-# /*##########################################################################
-#
-# Copyright (c) 2014-2017 European Synchrotron Radiation Facility
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-# ###########################################################################*/
-"""This module loads PyOpenGL and provides a namespace for OpenGL."""
-
-__authors__ = ["T. Vincent"]
-__license__ = "MIT"
-__date__ = "25/07/2016"
-
-
-from contextlib import contextmanager as _contextmanager
-from ctypes import c_uint
-import logging
-
-_logger = logging.getLogger(__name__)
-
-import OpenGL
-# Set the following to true for debugging
-if _logger.getEffectiveLevel() <= logging.DEBUG:
- _logger.debug('Enabling PyOpenGL debug flags')
- OpenGL.ERROR_LOGGING = True
- OpenGL.ERROR_CHECKING = True
- OpenGL.ERROR_ON_COPY = True
-else:
- OpenGL.ERROR_LOGGING = False
- OpenGL.ERROR_CHECKING = False
- OpenGL.ERROR_ON_COPY = False
-
-import OpenGL.GL as _GL
-from OpenGL.GL import * # noqa
-
-# Extentions core in OpenGL 3
-from OpenGL.GL.ARB import framebuffer_object as _FBO
-from OpenGL.GL.ARB.framebuffer_object import * # noqa
-from OpenGL.GL.ARB.texture_rg import GL_R32F, GL_R16F # noqa
-from OpenGL.GL.ARB.texture_rg import GL_R16, GL_R8 # noqa
-
-# PyOpenGL 3.0.1 does not define it
-try:
- GLchar
-except NameError:
- from ctypes import c_char
- GLchar = c_char
-
-
-def testGL():
- """Test if required OpenGL version and extensions are available.
-
- This MUST be run with an active OpenGL context.
- """
- version = glGetString(GL_VERSION).split()[0] # get version number
- major, minor = int(version[0]), int(version[2])
- if major < 2 or (major == 2 and minor < 1):
- raise RuntimeError(
- "Requires at least OpenGL version 2.1, running with %s" % version)
-
- from OpenGL.GL.ARB.framebuffer_object import glInitFramebufferObjectARB
- from OpenGL.GL.ARB.texture_rg import glInitTextureRgARB
-
- if not glInitFramebufferObjectARB():
- raise RuntimeError(
- "OpenGL GL_ARB_framebuffer_object extension required !")
-
- if not glInitTextureRgARB():
- raise RuntimeError("OpenGL GL_ARB_texture_rg extension required !")
-
-
-# Additional setup
-if hasattr(glget, 'addGLGetConstant'):
- glget.addGLGetConstant(GL_FRAMEBUFFER_BINDING, (1,))
-
-
-@_contextmanager
-def enabled(capacity, enable=True):
- """Context manager enabling an OpenGL capacity.
-
- This is not checking the current state of the capacity.
-
- :param capacity: The OpenGL capacity enum to enable/disable
- :param bool enable:
- True (default) to enable during context, False to disable
- """
- if bool(enable) == glGetBoolean(capacity):
- # Already in the right state: noop
- yield
- elif enable:
- glEnable(capacity)
- yield
- glDisable(capacity)
- else:
- glDisable(capacity)
- yield
- glEnable(capacity)
-
-
-def disabled(capacity, disable=True):
- """Context manager disabling an OpenGL capacity.
-
- This is not checking the current state of the capacity.
-
- :param capacity: The OpenGL capacity enum to disable/enable
- :param bool disable:
- True (default) to disable during context, False to enable
- """
- return enabled(capacity, not disable)
-
-
-# Additional OpenGL wrapping
-
-def glGetActiveAttrib(program, index):
- """Wrap PyOpenGL glGetActiveAttrib"""
- bufsize = glGetProgramiv(program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH)
- length = GLsizei()
- size = GLint()
- type_ = GLenum()
- name = (GLchar * bufsize)()
-
- _GL.glGetActiveAttrib(program, index, bufsize, length, size, type_, name)
- return name.value, size.value, type_.value
-
-
-def glDeleteRenderbuffers(buffers):
- if not hasattr(buffers, '__len__'): # Support single int argument
- buffers = [buffers]
- length = len(buffers)
- _FBO.glDeleteRenderbuffers(length, (c_uint * length)(*buffers))
-
-
-def glDeleteFramebuffers(buffers):
- if not hasattr(buffers, '__len__'): # Support single int argument
- buffers = [buffers]
- length = len(buffers)
- _FBO.glDeleteFramebuffers(length, (c_uint * length)(*buffers))
-
-
-def glDeleteBuffers(buffers):
- if not hasattr(buffers, '__len__'): # Support single int argument
- buffers = [buffers]
- length = len(buffers)
- _GL.glDeleteBuffers(length, (c_uint * length)(*buffers))
-
-
-def glDeleteTextures(textures):
- if not hasattr(textures, '__len__'): # Support single int argument
- textures = [textures]
- length = len(textures)
- _GL.glDeleteTextures((c_uint * length)(*textures))