Revamp old and broken EthumbClient module
This was not functional at all, so I broke the API "a bit"
This commit is contained in:
parent
93d2c01002
commit
17df9e69aa
|
@ -0,0 +1,6 @@
|
||||||
|
.. currentmodule:: efl.ethumb_client
|
||||||
|
|
||||||
|
:class:`efl.ethumb_client.EthumbClient` Class
|
||||||
|
=============================================
|
||||||
|
|
||||||
|
.. autoclass:: efl.ethumb_client.EthumbClient
|
|
@ -44,6 +44,7 @@ API Reference
|
||||||
:titlesonly:
|
:titlesonly:
|
||||||
|
|
||||||
module-ethumb.rst
|
module-ethumb.rst
|
||||||
|
module-ethumb_client.rst
|
||||||
|
|
||||||
|
|
||||||
Inheritance diagram
|
Inheritance diagram
|
||||||
|
|
|
@ -1,11 +1,3 @@
|
||||||
diff --git doc/ethumb/ethumb_module.rst doc/ethumb/ethumb_module.rst
|
|
||||||
deleted file mode 100644
|
.. automodule:: efl.ethumb
|
||||||
index a7189f9..0000000
|
:exclude-members: Ethumb
|
||||||
--- doc/ethumb/ethumb_module.rst
|
|
||||||
+++ /dev/null
|
|
||||||
@@ -1,5 +0,0 @@
|
|
||||||
-:mod:`efl.ethumb` Module
|
|
||||||
-========================
|
|
||||||
-
|
|
||||||
-.. automodule:: efl.ethumb
|
|
||||||
- :exclude-members: PyEthumb
|
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
|
||||||
|
.. automodule:: efl.ethumb_client
|
||||||
|
:exclude-members: EthumbClient
|
|
@ -338,7 +338,7 @@ cdef class Ethumb(object):
|
||||||
const char *group
|
const char *group
|
||||||
const char *swallow
|
const char *swallow
|
||||||
ethumb_frame_get(self.obj, &theme, &group, &swallow)
|
ethumb_frame_get(self.obj, &theme, &group, &swallow)
|
||||||
return tuple(_ctouni(theme), _ctouni(group), _ctouni(swallow))
|
return _ctouni(theme), _ctouni(group), _ctouni(swallow)
|
||||||
|
|
||||||
# destination thumb properties
|
# destination thumb properties
|
||||||
property thumb_path:
|
property thumb_path:
|
||||||
|
@ -412,9 +412,7 @@ cdef class Ethumb(object):
|
||||||
<const char *>cat if cat is not None else NULL)
|
<const char *>cat if cat is not None else NULL)
|
||||||
|
|
||||||
def __get__(self):
|
def __get__(self):
|
||||||
cdef const char *cat
|
return _ctouni(ethumb_thumb_category_get(self.obj))
|
||||||
cat = ethumb_thumb_category_get(self.obj)
|
|
||||||
return _ctouni(cat)
|
|
||||||
|
|
||||||
property thumb_fdo:
|
property thumb_fdo:
|
||||||
""" Set a standard FDO thumbnail size
|
""" Set a standard FDO thumbnail size
|
||||||
|
@ -441,11 +439,9 @@ cdef class Ethumb(object):
|
||||||
ethumb_thumb_size_set(self.obj, w, h)
|
ethumb_thumb_size_set(self.obj, w, h)
|
||||||
|
|
||||||
def __get__(self):
|
def __get__(self):
|
||||||
cdef:
|
cdef int w, h
|
||||||
int w
|
|
||||||
int h
|
|
||||||
ethumb_thumb_size_get(self.obj, &w, &h)
|
ethumb_thumb_size_get(self.obj, &w, &h)
|
||||||
return tuple(w, h)
|
return w, h
|
||||||
|
|
||||||
property thumb_format:
|
property thumb_format:
|
||||||
""" The fileformat for the thumbnails.
|
""" The fileformat for the thumbnails.
|
||||||
|
@ -511,7 +507,7 @@ cdef class Ethumb(object):
|
||||||
float x
|
float x
|
||||||
float y
|
float y
|
||||||
ethumb_thumb_crop_align_get(self.obj, &x, &y)
|
ethumb_thumb_crop_align_get(self.obj, &x, &y)
|
||||||
return tuple(x, y)
|
return x, y
|
||||||
|
|
||||||
property thumb_quality:
|
property thumb_quality:
|
||||||
""" The thumbnail compression quality.
|
""" The thumbnail compression quality.
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,110 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# encoding: utf-8
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from efl import ecore
|
||||||
|
from efl import ethumb_client as ethumb
|
||||||
|
|
||||||
|
script_path = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
|
||||||
|
|
||||||
|
# parse command line arguments
|
||||||
|
if len(sys.argv) != 2:
|
||||||
|
print("Python EthumbClient test application.\n\n" \
|
||||||
|
"usage: ethumb_client.py filename\n")
|
||||||
|
exit(1)
|
||||||
|
filename = sys.argv[1]
|
||||||
|
print("Original file: %s\n" % filename)
|
||||||
|
|
||||||
|
|
||||||
|
# setup efl logging (you also need to set EINA_LOG_LEVEL=X)
|
||||||
|
l = logging.getLogger("efl")
|
||||||
|
h = logging.StreamHandler()
|
||||||
|
h.setFormatter(logging.Formatter("EFL %(levelname)s %(message)s"))
|
||||||
|
l.addHandler(h)
|
||||||
|
l.setLevel(logging.DEBUG)
|
||||||
|
|
||||||
|
complete_count = 0
|
||||||
|
|
||||||
|
def generate_cb(client, id, file, key, thumb_path, thumb_key, success, num):
|
||||||
|
global complete_count
|
||||||
|
|
||||||
|
# thumbnail completed
|
||||||
|
if success is True:
|
||||||
|
print("Thumb #%d completed: '%s'" % (num, thumb_path))
|
||||||
|
complete_count += 1
|
||||||
|
if complete_count >= 6:
|
||||||
|
print("\nTest Complete!")
|
||||||
|
ecore.main_loop_quit()
|
||||||
|
else:
|
||||||
|
print(" ERROR! aborting.")
|
||||||
|
ecore.main_loop_quit()
|
||||||
|
|
||||||
|
def connect_cb(client, success):
|
||||||
|
if success is False:
|
||||||
|
print("Connection Failed")
|
||||||
|
ecore.main_loop_quit()
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
print("Connection Successfull")
|
||||||
|
|
||||||
|
# request some thumbnails
|
||||||
|
print("1. Request a standard FDO thumbnail (default)")
|
||||||
|
et.file = filename
|
||||||
|
et.generate(generate_cb, 1)
|
||||||
|
|
||||||
|
print("2. Request a large FDO thumbnail...")
|
||||||
|
et.file = filename
|
||||||
|
et.fdo = ethumb.ETHUMB_THUMB_LARGE
|
||||||
|
et.generate(generate_cb, 2)
|
||||||
|
|
||||||
|
print("3. Request a very large JPEG thumbnail...")
|
||||||
|
et.file = filename
|
||||||
|
et.format = ethumb.ETHUMB_THUMB_JPEG
|
||||||
|
et.size = 512, 512
|
||||||
|
et.generate(generate_cb, 3)
|
||||||
|
|
||||||
|
print("4. Request a cropped thumbnail...")
|
||||||
|
et.file = filename
|
||||||
|
et.aspect = ethumb.ETHUMB_THUMB_CROP
|
||||||
|
et.generate(generate_cb, 4)
|
||||||
|
|
||||||
|
print("5. Request a rotated thumbnail")
|
||||||
|
et.file = filename
|
||||||
|
et.orientation = ethumb.ETHUMB_THUMB_ROTATE_180
|
||||||
|
et.size = 256, 256
|
||||||
|
et.aspect = ethumb.ETHUMB_THUMB_KEEP_ASPECT
|
||||||
|
et.generate(generate_cb, 5)
|
||||||
|
|
||||||
|
print("6. Request a poor quality thumbnail in this folder\n")
|
||||||
|
et.file = filename
|
||||||
|
et.orientation = ethumb.ETHUMB_THUMB_ORIENT_NONE
|
||||||
|
et.thumb_path = os.path.join(script_path, 'big_poor2.jpg')
|
||||||
|
et.format = ethumb.ETHUMB_THUMB_JPEG
|
||||||
|
et.size = 512, 512
|
||||||
|
et.quality = 10
|
||||||
|
et.generate(generate_cb, 6)
|
||||||
|
|
||||||
|
# ...and now wait for the responses
|
||||||
|
|
||||||
|
|
||||||
|
def server_die_cb(client):
|
||||||
|
print("Server die!")
|
||||||
|
ecore.main_loop_quit()
|
||||||
|
|
||||||
|
|
||||||
|
# create a single Ethumb instance
|
||||||
|
et = ethumb.EthumbClient(connect_cb)
|
||||||
|
et.on_server_die_callback_set(server_die_cb)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# enter the ecore the main loop
|
||||||
|
ecore.main_loop_begin()
|
||||||
|
|
||||||
|
# free used resource
|
||||||
|
et.disconnect()
|
||||||
|
|
|
@ -16,17 +16,64 @@
|
||||||
# along with this Python-EFL. If not, see <http://www.gnu.org/licenses/>.
|
# along with this Python-EFL. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from efl.eina cimport Eina_Bool, Eina_Free_Cb
|
from efl.eina cimport Eina_Bool, Eina_Free_Cb
|
||||||
from efl.ethumb cimport Ethumb_Thumb_Orientation
|
|
||||||
|
|
||||||
cdef extern from "Ethumb_Client.h":
|
cdef extern from "Ethumb_Client.h":
|
||||||
|
|
||||||
|
####################################################################
|
||||||
|
# Enums
|
||||||
|
#
|
||||||
|
cpdef enum Ethumb_Thumb_Orientation:
|
||||||
|
ETHUMB_THUMB_ORIENT_NONE
|
||||||
|
ETHUMB_THUMB_ROTATE_90_CW
|
||||||
|
ETHUMB_THUMB_ROTATE_180
|
||||||
|
ETHUMB_THUMB_ROTATE_90_CCW
|
||||||
|
ETHUMB_THUMB_FLIP_HORIZONTAL
|
||||||
|
ETHUMB_THUMB_FLIP_VERTICAL
|
||||||
|
ETHUMB_THUMB_FLIP_TRANSPOSE
|
||||||
|
ETHUMB_THUMB_FLIP_TRANSVERSE
|
||||||
|
ETHUMB_THUMB_ORIENT_ORIGINAL
|
||||||
|
ctypedef enum Ethumb_Thumb_Orientation:
|
||||||
|
pass
|
||||||
|
|
||||||
|
cpdef enum Ethumb_Thumb_FDO_Size:
|
||||||
|
ETHUMB_THUMB_NORMAL
|
||||||
|
ETHUMB_THUMB_LARGE
|
||||||
|
ctypedef enum Ethumb_Thumb_FDO_Size:
|
||||||
|
pass
|
||||||
|
|
||||||
|
cpdef enum Ethumb_Thumb_Format:
|
||||||
|
ETHUMB_THUMB_FDO
|
||||||
|
ETHUMB_THUMB_JPEG
|
||||||
|
ETHUMB_THUMB_EET
|
||||||
|
ctypedef enum Ethumb_Thumb_Format:
|
||||||
|
pass
|
||||||
|
|
||||||
|
cpdef enum Ethumb_Thumb_Aspect:
|
||||||
|
ETHUMB_THUMB_KEEP_ASPECT
|
||||||
|
ETHUMB_THUMB_IGNORE_ASPECT
|
||||||
|
ETHUMB_THUMB_CROP
|
||||||
|
ctypedef enum Ethumb_Thumb_Aspect:
|
||||||
|
pass
|
||||||
|
|
||||||
|
####################################################################
|
||||||
|
# Structs
|
||||||
|
#
|
||||||
ctypedef struct Ethumb_Client
|
ctypedef struct Ethumb_Client
|
||||||
ctypedef struct Ethumb_Exists
|
ctypedef struct Ethumb_Exists
|
||||||
|
|
||||||
|
####################################################################
|
||||||
|
# Other typedefs
|
||||||
|
#
|
||||||
ctypedef void (*Ethumb_Client_Connect_Cb)(void *data, Ethumb_Client *client, Eina_Bool success)
|
ctypedef void (*Ethumb_Client_Connect_Cb)(void *data, Ethumb_Client *client, Eina_Bool success)
|
||||||
ctypedef void (*Ethumb_Client_Die_Cb)(void *data, Ethumb_Client *client)
|
ctypedef void (*Ethumb_Client_Die_Cb)(void *data, Ethumb_Client *client)
|
||||||
ctypedef void (*Ethumb_Client_Generate_Cb)(void *data, Ethumb_Client *client, int id, const char *file, const char *key, const char *thumb_path, const char *thumb_key, Eina_Bool success)
|
ctypedef void (*Ethumb_Client_Generate_Cb)(void *data, Ethumb_Client *client, int id, const char *file, const char *key, const char *thumb_path, const char *thumb_key, Eina_Bool success)
|
||||||
ctypedef void (*Ethumb_Client_Thumb_Exists_Cb)(void *data, Ethumb_Client *client, Ethumb_Exists *thread, Eina_Bool exists)
|
ctypedef void (*Ethumb_Client_Thumb_Exists_Cb)(void *data, Ethumb_Client *client, Ethumb_Exists *thread, Eina_Bool exists)
|
||||||
ctypedef void (*Ethumb_Client_Generate_Cancel_Cb)(void *data, Eina_Bool success)
|
ctypedef void (*Ethumb_Client_Generate_Cancel_Cb)(void *data, Eina_Bool success)
|
||||||
|
|
||||||
|
####################################################################
|
||||||
|
# Functions
|
||||||
|
#
|
||||||
int ethumb_client_init()
|
int ethumb_client_init()
|
||||||
int ethumb_client_shutdown()
|
int ethumb_client_shutdown()
|
||||||
|
|
||||||
|
@ -90,7 +137,8 @@ cdef extern from "Ethumb_Client.h":
|
||||||
|
|
||||||
void ethumb_client_thumb_async_cancel(Ethumb_Client *client, Ethumb_Client_Async *request)
|
void ethumb_client_thumb_async_cancel(Ethumb_Client *client, Ethumb_Client_Async *request)
|
||||||
|
|
||||||
cdef class Client:
|
|
||||||
|
cdef class EthumbClient:
|
||||||
cdef Ethumb_Client *obj
|
cdef Ethumb_Client *obj
|
||||||
cdef object _on_connect_callback
|
cdef object _on_connect_callback
|
||||||
cdef object _on_server_die_callback
|
cdef object _on_server_die_callback
|
||||||
|
|
5
setup.py
5
setup.py
|
@ -351,8 +351,9 @@ if set(("build", "build_ext", "install", "bdist", "sdist")) & set(sys.argv):
|
||||||
extra_link_args=ethumb_libs + eina_libs)
|
extra_link_args=ethumb_libs + eina_libs)
|
||||||
ext_modules.append(ethumb_ext)
|
ext_modules.append(ethumb_ext)
|
||||||
|
|
||||||
ethumb_client_cflags, ethumb_client_libs = pkg_config(
|
# === Ethumb Client ===
|
||||||
'Ethumb_Client', 'ethumb_client', EFL_MIN_VER)
|
ethumb_client_cflags, ethumb_client_libs = pkg_config('Ethumb_Client',
|
||||||
|
'ethumb_client', EFL_MIN_VER)
|
||||||
ethumb_client_ext = Extension("ethumb_client",
|
ethumb_client_ext = Extension("ethumb_client",
|
||||||
["efl/ethumb/efl.ethumb_client" + module_suffix],
|
["efl/ethumb/efl.ethumb_client" + module_suffix],
|
||||||
include_dirs=['include/'],
|
include_dirs=['include/'],
|
||||||
|
|
Loading…
Reference in New Issue