You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

137 lines
5.6 KiB
Python

4 weeks ago
""":mod:`wand.cdefs.core` --- MagickCore definitions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. versionadded:: 0.5.0
"""
from ctypes import (POINTER, c_bool, c_char_p, c_int, c_size_t, c_ulonglong,
c_void_p)
from wand.cdefs.wandtypes import c_ssize_t
__all__ = ('load', 'load_with_version')
def load(libmagick):
"""Define MagickCore methods.
We'll only define the bare-minimum methods to support the MagickWand
library.
.. seealso::
#include <magick/MagickCore.h>
// Or
#include <MagickCore/MagickCore.h>
:param libmagick: the loaded ``MagickCore`` library.
:type libmagick: :class:`ctypes.CDLL`
.. versionadded:: 0.5.0
"""
libmagick.AcquireExceptionInfo.argtypes = []
libmagick.AcquireExceptionInfo.restype = c_void_p
libmagick.AcquireImageInfo.argtypes = []
libmagick.AcquireImageInfo.restype = c_void_p
libmagick.CloneImageInfo.argtypes = [c_void_p]
libmagick.CloneImageInfo.restype = c_void_p
libmagick.CloneImages.argtypes = [c_void_p, c_char_p, c_void_p]
libmagick.CloneImages.restype = c_void_p
libmagick.DestroyExceptionInfo.argtypes = [c_void_p]
libmagick.DestroyExceptionInfo.restype = c_void_p
libmagick.DestroyImage.argtypes = [c_void_p]
libmagick.DestroyImage.restype = c_void_p
libmagick.DestroyImageInfo.argtypes = [c_void_p]
libmagick.DestroyImageInfo.restype = c_void_p
libmagick.DestroyString.argtypes = [c_void_p]
libmagick.DestroyString.restype = c_void_p
try:
libmagick.GetGeometry.argtypes = [c_char_p,
POINTER(c_ssize_t),
POINTER(c_ssize_t),
POINTER(c_size_t),
POINTER(c_size_t)]
libmagick.GetGeometry.restype = c_int
except AttributeError:
libmagick.GetGeometry = None
libmagick.GetMagickCopyright.argtypes = []
libmagick.GetMagickCopyright.restype = c_char_p
try:
libmagick.GetMagickDelegates.argtypes = []
libmagick.GetMagickDelegates.restype = c_char_p
except AttributeError:
libmagick.GetMagickDelegates = None
libmagick.GetMagickFeatures.argtypes = []
libmagick.GetMagickFeatures.restype = c_char_p
try:
libmagick.GetMagickLicense.argtypes = []
libmagick.GetMagickLicense.restype = c_char_p
except AttributeError:
pass
libmagick.GetMagickPackageName.argtypes = []
libmagick.GetMagickPackageName.restype = c_char_p
libmagick.GetMagickQuantumDepth.argtypes = [POINTER(c_size_t)]
libmagick.GetMagickQuantumDepth.restype = c_char_p
libmagick.GetMagickQuantumRange.argtypes = [POINTER(c_size_t)]
libmagick.GetMagickQuantumRange.restype = c_char_p
libmagick.GetMagickReleaseDate.argtypes = []
libmagick.GetMagickReleaseDate.restype = c_char_p
libmagick.GetMagickResource.argtypes = [c_int]
libmagick.GetMagickResource.restype = c_ulonglong
libmagick.GetMagickResourceLimit.argtypes = [c_int]
libmagick.GetMagickResourceLimit.restype = c_ulonglong
libmagick.GetMagickVersion.argtypes = [POINTER(c_size_t)]
libmagick.GetMagickVersion.restype = c_char_p
try:
libmagick.GetPageGeometry.argtypes = [c_char_p]
libmagick.GetPageGeometry.restype = c_void_p
except AttributeError:
libmagick.GetPageGeometry = None
libmagick.GetNextImageInList.argtypes = [c_void_p]
libmagick.GetNextImageInList.restype = c_void_p
libmagick.MagickToMime.argtypes = [c_char_p]
libmagick.MagickToMime.restype = c_void_p
try:
libmagick.ParseAbsoluteGeometry.argtypes = [c_char_p, c_void_p]
libmagick.ParseAbsoluteGeometry.restype = c_int
except AttributeError:
libmagick.ParseAbsoluteGeometry = None
try:
libmagick.ParseChannelOption.argtypes = [c_char_p]
libmagick.ParseChannelOption.restypes = c_ssize_t
except AttributeError:
libmagick.ParseChannelOption = None
try:
libmagick.ParseGeometry.argtypes = [c_char_p, c_void_p]
libmagick.ParseGeometry.restype = c_int
libmagick.ParseMetaGeometry.argtypes = [c_char_p,
POINTER(c_ssize_t),
POINTER(c_ssize_t),
POINTER(c_size_t),
POINTER(c_size_t)]
libmagick.ParseMetaGeometry.restype = c_int
except AttributeError:
libmagick.ParseGeometry = None
libmagick.ParseMetaGeometry = None
libmagick.SetImageOption.argtypes = [c_void_p, c_char_p, c_char_p]
libmagick.SetImageOption.restype = c_bool
libmagick.SetMagickResourceLimit.argtypes = [c_int, c_ulonglong]
libmagick.SetMagickResourceLimit.restype = c_int
libmagick.SyncImageSettings.argtypes = [c_void_p, c_void_p, c_void_p]
libmagick.SyncImageSettings.restype = c_bool
def load_with_version(libmagick, IM_VERSION):
if IM_VERSION < 0x700:
libmagick.AcquireKernelBuiltIn.argtypes = [c_int, c_void_p]
libmagick.AcquireKernelBuiltIn.restype = c_void_p
libmagick.AcquireKernelInfo.argtypes = [c_char_p]
libmagick.AcquireKernelInfo.restype = c_void_p
else:
libmagick.AcquireKernelBuiltIn.argtypes = [c_int, c_void_p,
c_void_p]
libmagick.AcquireKernelBuiltIn.restype = c_void_p
libmagick.AcquireKernelInfo.argtypes = [c_char_p, c_void_p]
libmagick.AcquireKernelInfo.restype = c_void_p
libmagick.DestroyKernelInfo.argtypes = [c_void_p]
libmagick.DestroyKernelInfo.restype = c_void_p