#! /usr/bin/env ruby
# -*- coding: UTF-8 -*-
#
require 'efl/native'
require 'efl/native/ethumb'
#
module Efl
    #
    module EthumbClient
        #
        FCT_PREFIX = 'ethumb_client_' unless const_defined? :FCT_PREFIX
        #
        def self.method_missing meth, *args, &block
            sym = Efl::MethodResolver.resolve self, meth, FCT_PREFIX
            self.send sym, *args, &block
        end
        #
    end
    #
    module Native
        #
        ffi_lib 'ethumb_client'
        #
        # TYPEDEFS
        # typedef struct _Ethumb_Client Ethumb_Client;
        typedef :pointer, :ethumb_client
        # typedef struct _Ethumb_Exists Ethumb_Exists;
        typedef :pointer, :ethumb_exists
        # typedef struct _Ethumb_Client_Async Ethumb_Client_Async;
        typedef :pointer, :ethumb_client_async
        #
        # CALLBACKS
        # typedef void (*Ethumb_Client_Connect_Cb) (void *data, Ethumb_Client *client, Eina_Bool success);
        callback :ethumb_client_connect_cb, [ :pointer, :ethumb_client, :bool ], :void
        # typedef void (*Ethumb_Client_Die_Cb) (void *data, Ethumb_Client *client);
        callback :ethumb_client_die_cb, [ :pointer, :ethumb_client ], :void
        # typedef 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);
        callback :ethumb_client_generate_cb, [ :pointer, :ethumb_client, :int, :string, :string, :string, :string, :bool ], :void
        # typedef void (*Ethumb_Client_Thumb_Exists_Cb) (void *data, Ethumb_Client *client, Ethumb_Exists *thread, Eina_Bool exists);
        callback :ethumb_client_thumb_exists_cb, [ :pointer, :ethumb_client, :ethumb_exists, :bool ], :void
        # typedef void (*Ethumb_Client_Generate_Cancel_Cb) (void *data, Eina_Bool success);
        callback :ethumb_client_generate_cancel_cb, [ :pointer, :bool ], :void
        # typedef void (*Ethumb_Client_Async_Done_Cb) (Ethumb_Client *ethumbd, const char *thumb_path, const char *thumb_key, void *data);
        callback :ethumb_client_async_done_cb, [ :ethumb_client, :string, :string, :pointer ], :void
        # typedef void (*Ethumb_Client_Async_Error_Cb) (Ethumb_Client *ethumbd, void *data);
        callback :ethumb_client_async_error_cb, [ :ethumb_client, :pointer ], :void
        #
        # FUNCTIONS
        fcts = [
        # EAPI int ethumb_client_init(void);
        [ :ethumb_client_init, [  ], :int ],
        # EAPI int ethumb_client_shutdown(void);
        [ :ethumb_client_shutdown, [  ], :int ],
        # EAPI Ethumb_Client * ethumb_client_connect(Ethumb_Client_Connect_Cb connect_cb, const void *data, Eina_Free_Cb free_data);
        [ :ethumb_client_connect, [ :ethumb_client_connect_cb, :pointer, :eina_free_cb ], :ethumb_client ],
        # EAPI void ethumb_client_disconnect(Ethumb_Client *client);
        [ :ethumb_client_disconnect, [ :ethumb_client ], :void ],
        # EAPI void ethumb_client_on_server_die_callback_set(Ethumb_Client *client, Ethumb_Client_Die_Cb server_die_cb, const void *data, Eina_Free_Cb free_data);
        [ :ethumb_client_on_server_die_callback_set, [ :ethumb_client, :ethumb_client_die_cb, :pointer, :eina_free_cb ], :void ],
        # EAPI void ethumb_client_fdo_set(Ethumb_Client *client, Ethumb_Thumb_FDO_Size s);
        [ :ethumb_client_fdo_set, [ :ethumb_client, :ethumb_thumb_fdo_size ], :void ],
        # EAPI void ethumb_client_size_set(Ethumb_Client *client, int tw, int th);
        [ :ethumb_client_size_set, [ :ethumb_client, :int, :int ], :void ],
        # EAPI void ethumb_client_size_get(const Ethumb_Client *client, int *tw, int *th);
        [ :ethumb_client_size_get, [ :ethumb_client, :pointer, :pointer ], :void ],
        # EAPI void ethumb_client_format_set(Ethumb_Client *client, Ethumb_Thumb_Format f);
        [ :ethumb_client_format_set, [ :ethumb_client, :ethumb_thumb_format ], :void ],
        # EAPI Ethumb_Thumb_Format ethumb_client_format_get(const Ethumb_Client *client);
        [ :ethumb_client_format_get, [ :ethumb_client ], :ethumb_thumb_format ],
        # EAPI void ethumb_client_aspect_set(Ethumb_Client *client, Ethumb_Thumb_Aspect a);
        [ :ethumb_client_aspect_set, [ :ethumb_client, :ethumb_thumb_aspect ], :void ],
        # EAPI Ethumb_Thumb_Aspect ethumb_client_aspect_get(const Ethumb_Client *client);
        [ :ethumb_client_aspect_get, [ :ethumb_client ], :ethumb_thumb_aspect ],
        # EAPI void ethumb_client_orientation_set(Ethumb_Client *client, Ethumb_Thumb_Orientation o);
        [ :ethumb_client_orientation_set, [ :ethumb_client, :ethumb_thumb_orientation ], :void ],
        # EAPI Ethumb_Thumb_Orientation ethumb_client_orientation_get(const Ethumb_Client *client);
        [ :ethumb_client_orientation_get, [ :ethumb_client ], :ethumb_thumb_orientation ],
        # EAPI void ethumb_client_crop_align_set(Ethumb_Client *client, float x, float y);
        [ :ethumb_client_crop_align_set, [ :ethumb_client, :float, :float ], :void ],
        # EAPI void ethumb_client_crop_align_get(const Ethumb_Client *client, float *x, float *y);
        [ :ethumb_client_crop_align_get, [ :ethumb_client, :pointer, :pointer ], :void ],
        # EAPI void ethumb_client_quality_set(Ethumb_Client *client, int quality);
        [ :ethumb_client_quality_set, [ :ethumb_client, :int ], :void ],
        # EAPI int ethumb_client_quality_get(const Ethumb_Client *client);
        [ :ethumb_client_quality_get, [ :ethumb_client ], :int ],
        # EAPI void ethumb_client_compress_set(Ethumb_Client *client, int compress);
        [ :ethumb_client_compress_set, [ :ethumb_client, :int ], :void ],
        # EAPI int ethumb_client_compress_get(const Ethumb_Client *client);
        [ :ethumb_client_compress_get, [ :ethumb_client ], :int ],
        # EAPI Eina_Bool ethumb_client_frame_set(Ethumb_Client *client, const char *file, const char *group, const char *swallow);
        [ :ethumb_client_frame_set, [ :ethumb_client, :string, :string, :string ], :bool ],
        # EAPI void ethumb_client_dir_path_set(Ethumb_Client *client, const char *path);
        [ :ethumb_client_dir_path_set, [ :ethumb_client, :string ], :void ],
        # EAPI const char * ethumb_client_dir_path_get(const Ethumb_Client *client);
        [ :ethumb_client_dir_path_get, [ :ethumb_client ], :string ],
        # EAPI void ethumb_client_category_set(Ethumb_Client *client, const char *category);
        [ :ethumb_client_category_set, [ :ethumb_client, :string ], :void ],
        # EAPI const char * ethumb_client_category_get(const Ethumb_Client *client);
        [ :ethumb_client_category_get, [ :ethumb_client ], :string ],
        # EAPI void ethumb_client_video_time_set(Ethumb_Client *client, float time);
        [ :ethumb_client_video_time_set, [ :ethumb_client, :float ], :void ],
        # EAPI void ethumb_client_video_start_set(Ethumb_Client *client, float start);
        [ :ethumb_client_video_start_set, [ :ethumb_client, :float ], :void ],
        # EAPI void ethumb_client_video_interval_set(Ethumb_Client *client, float interval);
        [ :ethumb_client_video_interval_set, [ :ethumb_client, :float ], :void ],
        # EAPI void ethumb_client_video_ntimes_set(Ethumb_Client *client, unsigned int ntimes);
        [ :ethumb_client_video_ntimes_set, [ :ethumb_client, :uint ], :void ],
        # EAPI void ethumb_client_video_fps_set(Ethumb_Client *client, unsigned int fps);
        [ :ethumb_client_video_fps_set, [ :ethumb_client, :uint ], :void ],
        # EAPI void ethumb_client_document_page_set(Ethumb_Client *client, unsigned int page);
        [ :ethumb_client_document_page_set, [ :ethumb_client, :uint ], :void ],
        # EAPI void ethumb_client_ethumb_setup(Ethumb_Client *client);
        [ :ethumb_client_ethumb_setup, [ :ethumb_client ], :void ],
        # EAPI void ethumb_client_thumb_path_set(Ethumb_Client *client, const char *path, const char *key);
        [ :ethumb_client_thumb_path_set, [ :ethumb_client, :string, :string ], :void ],
        # EAPI void ethumb_client_thumb_path_get(Ethumb_Client *client, const char **path, const char **key);
        [ :ethumb_client_thumb_path_get, [ :ethumb_client, :pointer, :pointer ], :void ],
        # EAPI Eina_Bool ethumb_client_file_set(Ethumb_Client *client, const char *path, const char *key);
        [ :ethumb_client_file_set, [ :ethumb_client, :string, :string ], :bool ],
        # EAPI void ethumb_client_file_get(Ethumb_Client *client, const char **path, const char **key);
        [ :ethumb_client_file_get, [ :ethumb_client, :pointer, :pointer ], :void ],
        # EAPI void ethumb_client_file_free(Ethumb_Client *client);
        [ :ethumb_client_file_free, [ :ethumb_client ], :void ],
        # EAPI Ethumb_Exists *ethumb_client_thumb_exists(Ethumb_Client *client, Ethumb_Client_Thumb_Exists_Cb exists_cb, const void *data);
        [ :ethumb_client_thumb_exists, [ :ethumb_client, :ethumb_client_thumb_exists_cb, :pointer ], :ethumb_exists ],
        # EAPI void ethumb_client_thumb_exists_cancel(Ethumb_Exists *exists);
        [ :ethumb_client_thumb_exists_cancel, [ :ethumb_exists ], :void ],
        # EAPI Eina_Bool ethumb_client_thumb_exists_check(Ethumb_Exists *exists);
        [ :ethumb_client_thumb_exists_check, [ :ethumb_exists ], :bool ],
        # EAPI int ethumb_client_generate(Ethumb_Client *client, Ethumb_Client_Generate_Cb generated_cb, const void *data, Eina_Free_Cb free_data);
        [ :ethumb_client_generate, [ :ethumb_client, :ethumb_client_generate_cb, :pointer, :eina_free_cb ], :int ],
        # EAPI void ethumb_client_generate_cancel(Ethumb_Client *client, int id, Ethumb_Client_Generate_Cancel_Cb cancel_cb, const void *data, Eina_Free_Cb free_data);
        [ :ethumb_client_generate_cancel, [ :ethumb_client, :int, :ethumb_client_generate_cancel_cb, :pointer, :eina_free_cb ], :void ],
        # EAPI void ethumb_client_generate_cancel_all(Ethumb_Client *client);
        [ :ethumb_client_generate_cancel_all, [ :ethumb_client ], :void ],
        # EAPI Ethumb_Client_Async *ethumb_client_thumb_async_get(Ethumb_Client *client, Ethumb_Client_Async_Done_Cb done, Ethumb_Client_Async_Error_Cb error, const void *data);
        [ :ethumb_client_thumb_async_get, [ :ethumb_client, :ethumb_client_async_done_cb, :ethumb_client_async_error_cb, :pointer ],
            :ethumb_client_async ],
        # EAPI void ethumb_client_thumb_async_cancel(Ethumb_Client *client, Ethumb_Client_Async *request);
        [ :ethumb_client_thumb_async_cancel, [ :ethumb_client, :ethumb_client_async ], :void ],
        ]
        #
        attach_fcts fcts
        #
    end
end
#
# EOF