import abc import six @six.add_metaclass(abc.ABCMeta) class Platform(object): """Base class for all OpenGL platforms. Parameters ---------- viewport_width : int The width of the main viewport, in pixels. viewport_height : int The height of the main viewport, in pixels """ def __init__(self, viewport_width, viewport_height): self.viewport_width = viewport_width self.viewport_height = viewport_height @property def viewport_width(self): """int : The width of the main viewport, in pixels. """ return self._viewport_width @viewport_width.setter def viewport_width(self, value): self._viewport_width = value @property def viewport_height(self): """int : The height of the main viewport, in pixels. """ return self._viewport_height @viewport_height.setter def viewport_height(self, value): self._viewport_height = value @abc.abstractmethod def init_context(self): """Create an OpenGL context. """ pass @abc.abstractmethod def make_current(self): """Make the OpenGL context current. """ pass @abc.abstractmethod def make_uncurrent(self): """Make the OpenGL context uncurrent. """ pass @abc.abstractmethod def delete_context(self): """Delete the OpenGL context. """ pass @abc.abstractmethod def supports_framebuffers(self): """Returns True if the method supports framebuffer rendering. """ pass def __del__(self): try: self.delete_context() except Exception: pass