Issue #15: Fix returned pointer with caca types.tags/v0.99.beta20
| @@ -21,12 +21,16 @@ from caca import _lib, utf8_to_utf32, utf32_to_utf8 | |||
| from caca import _PYTHON3, _str_to_bytes, _bytes_to_str | |||
| from caca.font import _Font | |||
| class _CanvasStruct(ctypes.Structure): | |||
| pass | |||
| class _Canvas(object): | |||
| """ Model for Canvas objects. | |||
| """ | |||
| def __init__(self): | |||
| self._cv = 0 | |||
| self._cv = None | |||
| def from_param(self): | |||
| """ Required by ctypes module to call object as parameter of | |||
| @@ -38,7 +42,7 @@ class _Canvas(object): | |||
| return "<CacaCanvas %dx%d>" % (self.get_width(), self.get_height()) | |||
| def __del__(self): | |||
| if self._cv > 0 and _lib is not None: | |||
| if self._cv and _lib is not None: | |||
| self._free() | |||
| def _free(self): | |||
| @@ -61,6 +65,7 @@ class Canvas(_Canvas): | |||
| pointer -- pointer to libcaca canvas | |||
| """ | |||
| _lib.caca_create_canvas.argtypes = [ctypes.c_int, ctypes.c_int] | |||
| _lib.caca_create_canvas.restype = ctypes.POINTER(_CanvasStruct) | |||
| if pointer is None: | |||
| try: | |||
| @@ -19,6 +19,11 @@ import ctypes | |||
| from caca import _lib, _PYTHON3, _str_to_bytes | |||
| from caca.canvas import _Canvas, Canvas | |||
| class _DisplayStruct(ctypes.Structure): | |||
| pass | |||
| class _Display(object): | |||
| """ Model for Display objects. | |||
| """ | |||
| @@ -32,7 +37,7 @@ class _Display(object): | |||
| return "<CacaDisplay>" | |||
| def __del__(self): | |||
| if self._dp > 0 and _lib is not None: | |||
| if self._dp and _lib is not None: | |||
| self._free() | |||
| def _free(self): | |||
| @@ -57,11 +62,15 @@ class Display(_Display): | |||
| if driver is None: | |||
| _lib.caca_create_display.argtypes = [_Canvas] | |||
| _lib.caca_create_display.restype = ctypes.POINTER(_DisplayStruct) | |||
| self._dp = _lib.caca_create_display(cv) | |||
| else: | |||
| _lib.caca_create_display_with_driver.argtypes = [ | |||
| _Canvas, ctypes.c_char_p | |||
| ] | |||
| _lib.caca_create_display_with_driver.restype = ctypes.POINTER( | |||
| _DisplayStruct | |||
| ) | |||
| if _PYTHON3 and isinstance(driver, str): | |||
| driver = _str_to_bytes(driver) | |||
| @@ -197,9 +206,11 @@ class Display(_Display): | |||
| return _lib.caca_get_mouse_y(self) | |||
| class DisplayError(Exception): | |||
| pass | |||
| class Event(ctypes.Structure): | |||
| """ Object to store libcaca event. | |||
| """ | |||
| @@ -19,11 +19,15 @@ import ctypes | |||
| from caca import _lib | |||
| from caca.canvas import _Canvas | |||
| class _DitherStruct(ctypes.Structure): | |||
| pass | |||
| class _Dither(object): | |||
| """ Model for Dither object. | |||
| """ | |||
| def __init__(self): | |||
| self._dither = 0 | |||
| self._dither = None | |||
| def from_param(self): | |||
| """ Required by ctypes module to call object as parameter of | |||
| @@ -32,7 +36,7 @@ class _Dither(object): | |||
| return self._dither | |||
| def __del__(self): | |||
| if self._dither > 0: | |||
| if self._dither: | |||
| self._free() | |||
| def __str__(self): | |||
| @@ -66,6 +70,7 @@ class Dither(_Dither): | |||
| ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.c_int, | |||
| ctypes.c_uint, ctypes.c_uint, ctypes.c_uint, ctypes.c_uint, | |||
| ] | |||
| _lib.caca_create_dither.restype = ctypes.POINTER(_DitherStruct) | |||
| self._dither = _lib.caca_create_dither(bpp, width, height, pitch, | |||
| rmask, gmask, bmask, amask) | |||
| @@ -19,11 +19,15 @@ import errno | |||
| from caca import _lib, _PYTHON3, _str_to_bytes | |||
| class _FontStruct(ctypes.Structure): | |||
| pass | |||
| class _Font(object): | |||
| """ Model for Font object. | |||
| """ | |||
| def __init__(self): | |||
| self._font = 0 | |||
| self._font = None | |||
| def from_param(self): | |||
| """ Required by ctypes module to call object as parameter of | |||
| @@ -33,7 +37,7 @@ class _Font(object): | |||
| def __del__(self): | |||
| if hasattr(self, "_font"): | |||
| if self._font > 0: | |||
| if self._font: | |||
| self._free() | |||
| def __str__(self): | |||
| @@ -62,7 +66,7 @@ class Font(_Font): | |||
| else: | |||
| raise FontError("Unsupported method") | |||
| _lib.caca_load_font.restype = ctypes.c_int | |||
| _lib.caca_load_font.restype = ctypes.POINTER(_FontStruct) | |||
| if _PYTHON3: | |||
| font = _str_to_bytes(font) | |||