ソースを参照

Merge pull request #16 from alxf/issue-#15

Issue #15: Fix returned pointer with caca types.
tags/v0.99.beta20
alxf 8年前
コミット
0e2362461d
4個のファイルの変更33行の追加8行の削除
  1. +7
    -2
      python/caca/canvas.py
  2. +12
    -1
      python/caca/display.py
  3. +7
    -2
      python/caca/dither.py
  4. +7
    -3
      python/caca/font.py

+ 7
- 2
python/caca/canvas.py ファイルの表示

@@ -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 import _PYTHON3, _str_to_bytes, _bytes_to_str
from caca.font import _Font from caca.font import _Font



class _CanvasStruct(ctypes.Structure):
pass

class _Canvas(object): class _Canvas(object):
""" Model for Canvas objects. """ Model for Canvas objects.
""" """


def __init__(self): def __init__(self):
self._cv = 0
self._cv = None


def from_param(self): def from_param(self):
""" Required by ctypes module to call object as parameter of """ 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()) return "<CacaCanvas %dx%d>" % (self.get_width(), self.get_height())


def __del__(self): def __del__(self):
if self._cv > 0 and _lib is not None:
if self._cv and _lib is not None:
self._free() self._free()


def _free(self): def _free(self):
@@ -61,6 +65,7 @@ class Canvas(_Canvas):
pointer -- pointer to libcaca canvas pointer -- pointer to libcaca canvas
""" """
_lib.caca_create_canvas.argtypes = [ctypes.c_int, ctypes.c_int] _lib.caca_create_canvas.argtypes = [ctypes.c_int, ctypes.c_int]
_lib.caca_create_canvas.restype = ctypes.POINTER(_CanvasStruct)


if pointer is None: if pointer is None:
try: try:


+ 12
- 1
python/caca/display.py ファイルの表示

@@ -19,6 +19,11 @@ import ctypes
from caca import _lib, _PYTHON3, _str_to_bytes from caca import _lib, _PYTHON3, _str_to_bytes
from caca.canvas import _Canvas, Canvas from caca.canvas import _Canvas, Canvas



class _DisplayStruct(ctypes.Structure):
pass


class _Display(object): class _Display(object):
""" Model for Display objects. """ Model for Display objects.
""" """
@@ -32,7 +37,7 @@ class _Display(object):
return "<CacaDisplay>" return "<CacaDisplay>"


def __del__(self): def __del__(self):
if self._dp > 0 and _lib is not None:
if self._dp and _lib is not None:
self._free() self._free()


def _free(self): def _free(self):
@@ -57,11 +62,15 @@ class Display(_Display):


if driver is None: if driver is None:
_lib.caca_create_display.argtypes = [_Canvas] _lib.caca_create_display.argtypes = [_Canvas]
_lib.caca_create_display.restype = ctypes.POINTER(_DisplayStruct)
self._dp = _lib.caca_create_display(cv) self._dp = _lib.caca_create_display(cv)
else: else:
_lib.caca_create_display_with_driver.argtypes = [ _lib.caca_create_display_with_driver.argtypes = [
_Canvas, ctypes.c_char_p _Canvas, ctypes.c_char_p
] ]
_lib.caca_create_display_with_driver.restype = ctypes.POINTER(
_DisplayStruct
)
if _PYTHON3 and isinstance(driver, str): if _PYTHON3 and isinstance(driver, str):
driver = _str_to_bytes(driver) driver = _str_to_bytes(driver)


@@ -197,9 +206,11 @@ class Display(_Display):


return _lib.caca_get_mouse_y(self) return _lib.caca_get_mouse_y(self)



class DisplayError(Exception): class DisplayError(Exception):
pass pass



class Event(ctypes.Structure): class Event(ctypes.Structure):
""" Object to store libcaca event. """ Object to store libcaca event.
""" """


+ 7
- 2
python/caca/dither.py ファイルの表示

@@ -19,11 +19,15 @@ import ctypes
from caca import _lib from caca import _lib
from caca.canvas import _Canvas from caca.canvas import _Canvas



class _DitherStruct(ctypes.Structure):
pass

class _Dither(object): class _Dither(object):
""" Model for Dither object. """ Model for Dither object.
""" """
def __init__(self): def __init__(self):
self._dither = 0
self._dither = None


def from_param(self): def from_param(self):
""" Required by ctypes module to call object as parameter of """ Required by ctypes module to call object as parameter of
@@ -32,7 +36,7 @@ class _Dither(object):
return self._dither return self._dither


def __del__(self): def __del__(self):
if self._dither > 0:
if self._dither:
self._free() self._free()


def __str__(self): def __str__(self):
@@ -66,6 +70,7 @@ class Dither(_Dither):
ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.c_int,
ctypes.c_uint, ctypes.c_uint, ctypes.c_uint, ctypes.c_uint, 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, self._dither = _lib.caca_create_dither(bpp, width, height, pitch,
rmask, gmask, bmask, amask) rmask, gmask, bmask, amask)


+ 7
- 3
python/caca/font.py ファイルの表示

@@ -19,11 +19,15 @@ import errno


from caca import _lib, _PYTHON3, _str_to_bytes from caca import _lib, _PYTHON3, _str_to_bytes



class _FontStruct(ctypes.Structure):
pass

class _Font(object): class _Font(object):
""" Model for Font object. """ Model for Font object.
""" """
def __init__(self): def __init__(self):
self._font = 0
self._font = None


def from_param(self): def from_param(self):
""" Required by ctypes module to call object as parameter of """ Required by ctypes module to call object as parameter of
@@ -33,7 +37,7 @@ class _Font(object):


def __del__(self): def __del__(self):
if hasattr(self, "_font"): if hasattr(self, "_font"):
if self._font > 0:
if self._font:
self._free() self._free()


def __str__(self): def __str__(self):
@@ -62,7 +66,7 @@ class Font(_Font):
else: else:
raise FontError("Unsupported method") raise FontError("Unsupported method")


_lib.caca_load_font.restype = ctypes.c_int
_lib.caca_load_font.restype = ctypes.POINTER(_FontStruct)


if _PYTHON3: if _PYTHON3:
font = _str_to_bytes(font) font = _str_to_bytes(font)


読み込み中…
キャンセル
保存