From 798a915297c4272a4d895e200ceb8590b0b587f4 Mon Sep 17 00:00:00 2001 From: Sung-jae Park Date: Fri, 1 May 2015 16:10:23 +0900 Subject: [PATCH] Clean up all [model] Redwood,Kiran,B3(Wearable) [binary_type] AP [customer] Docomo/Orange/ATT/Open [issue#] N/A [problem] [cause] [solution] [team] HomeTF [request] [horizontal_expansion] Change-Id: Ib5cb175bf55aa8c265ff5f5ec446b3367d0ad348 --- CMakeLists.txt | 43 - LICENSE | 206 ---- include/abi.h | 41 - include/debug.h | 20 - include/script_port.h | 60 - packaging/libwidget_edje.manifest | 5 - packaging/libwidget_edje.spec | 58 - src/abi.c | 432 -------- src/script_port.c | 2194 ------------------------------------- 9 files changed, 3059 deletions(-) delete mode 100644 CMakeLists.txt delete mode 100644 LICENSE delete mode 100644 include/abi.h delete mode 100644 include/debug.h delete mode 100644 include/script_port.h delete mode 100644 packaging/libwidget_edje.manifest delete mode 100644 packaging/libwidget_edje.spec delete mode 100644 src/abi.c delete mode 100644 src/script_port.c diff --git a/CMakeLists.txt b/CMakeLists.txt deleted file mode 100644 index 38a1a46..0000000 --- a/CMakeLists.txt +++ /dev/null @@ -1,43 +0,0 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) -PROJECT(widget_edje C) - -INCLUDE(FindPkgConfig) -pkg_check_modules(live_edje REQUIRED - eina - evas - edje - dlog - eet - ecore - vconf - widget_service - elementary - capi-system-system-settings - efl-assist -) - -FOREACH (flag ${live_edje_CFLAGS}) - SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") -ENDFOREACH(flag) - -SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden") - -INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include) - -ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"") -ADD_DEFINITIONS("-DPATH_MAX=256") -ADD_DEFINITIONS("-DPACKAGE=\"${PROJECT_NAME}\"") - -ADD_DEFINITIONS("${EXTRA_CFLAGS} -g -Wall -Werror") -ADD_DEFINITIONS("-DNDEBUG") -ADD_DEFINITIONS("-D_USE_ECORE_TIME_GET") -ADD_DEFINITIONS("-DLOG_TAG=\"WIDGET_EDJE\"") - -ADD_LIBRARY(${PROJECT_NAME} SHARED - src/script_port.c - src/abi.c -) -TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${live_edje_LDFLAGS} "-ldl") - -INSTALL(TARGETS ${PROJECT_NAME} DESTINATION "/usr/share/data-provider-master/plugin-script") -INSTALL(FILES ${CMAKE_SOURCE_DIR}/LICENSE DESTINATION /usr/share/license RENAME "lib${PROJECT_NAME}") diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 571fe79..0000000 --- a/LICENSE +++ /dev/null @@ -1,206 +0,0 @@ -Flora License - -Version 1.1, April, 2013 - -http://floralicense.org/license/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, -and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by -the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and -all other entities that control, are controlled by, or are -under common control with that entity. For the purposes of -this definition, "control" means (i) the power, direct or indirect, -to cause the direction or management of such entity, -whether by contract or otherwise, or (ii) ownership of fifty percent (50%) -or more of the outstanding shares, or (iii) beneficial ownership of -such entity. - -"You" (or "Your") shall mean an individual or Legal Entity -exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, -including but not limited to software source code, documentation source, -and configuration files. - -"Object" form shall mean any form resulting from mechanical -transformation or translation of a Source form, including but -not limited to compiled object code, generated documentation, -and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, -made available under the License, as indicated by a copyright notice -that is included in or attached to the work (an example is provided -in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, -that is based on (or derived from) the Work and for which the editorial -revisions, annotations, elaborations, or other modifications represent, -as a whole, an original work of authorship. For the purposes of this License, -Derivative Works shall not include works that remain separable from, -or merely link (or bind by name) to the interfaces of, the Work and -Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original -version of the Work and any modifications or additions to that Work or -Derivative Works thereof, that is intentionally submitted to Licensor -for inclusion in the Work by the copyright owner or by an individual or -Legal Entity authorized to submit on behalf of the copyright owner. -For the purposes of this definition, "submitted" means any form of -electronic, verbal, or written communication sent to the Licensor or -its representatives, including but not limited to communication on -electronic mailing lists, source code control systems, and issue -tracking systems that are managed by, or on behalf of, the Licensor -for the purpose of discussing and improving the Work, but excluding -communication that is conspicuously marked or otherwise designated -in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity -on behalf of whom a Contribution has been received by Licensor and -subsequently incorporated within the Work. - -"Tizen Certified Platform" shall mean a software platform that complies -with the standards set forth in the Tizen Compliance Specification -and passes the Tizen Compliance Tests as defined from time to time -by the Tizen Technical Steering Group and certified by the Tizen -Association or its designated agent. - -2. Grant of Copyright License. Subject to the terms and conditions of -this License, each Contributor hereby grants to You a perpetual, -worldwide, non-exclusive, no-charge, royalty-free, irrevocable -copyright license to reproduce, prepare Derivative Works of, -publicly display, publicly perform, sublicense, and distribute the -Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of -this License, each Contributor hereby grants to You a perpetual, -worldwide, non-exclusive, no-charge, royalty-free, irrevocable -(except as stated in this section) patent license to make, have made, -use, offer to sell, sell, import, and otherwise transfer the Work -solely as incorporated into a Tizen Certified Platform, where such -license applies only to those patent claims licensable by such -Contributor that are necessarily infringed by their Contribution(s) -alone or by combination of their Contribution(s) with the Work solely -as incorporated into a Tizen Certified Platform to which such -Contribution(s) was submitted. If You institute patent litigation -against any entity (including a cross-claim or counterclaim -in a lawsuit) alleging that the Work or a Contribution incorporated -within the Work constitutes direct or contributory patent infringement, -then any patent licenses granted to You under this License for that -Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the -Work or Derivative Works thereof pursuant to the copyright license -above, in any medium, with or without modifications, and in Source or -Object form, provided that You meet the following conditions: - - 1. You must give any other recipients of the Work or Derivative Works - a copy of this License; and - 2. You must cause any modified files to carry prominent notices stating - that You changed the files; and - 3. You must retain, in the Source form of any Derivative Works that - You distribute, all copyright, patent, trademark, and attribution - notices from the Source form of the Work, excluding those notices - that do not pertain to any part of the Derivative Works; and - 4. If the Work includes a "NOTICE" text file as part of its distribution, - then any Derivative Works that You distribute must include a readable - copy of the attribution notices contained within such NOTICE file, - excluding those notices that do not pertain to any part of - the Derivative Works, in at least one of the following places: - within a NOTICE text file distributed as part of the Derivative Works; - within the Source form or documentation, if provided along with the - Derivative Works; or, within a display generated by the Derivative Works, - if and wherever such third-party notices normally appear. - The contents of the NOTICE file are for informational purposes only - and do not modify the License. You may add Your own attribution notices - within Derivative Works that You distribute, alongside or as an addendum - to the NOTICE text from the Work, provided that such additional attribution - notices cannot be construed as modifying the License. You may add Your own - copyright statement to Your modifications and may provide additional or - different license terms and conditions for use, reproduction, or - distribution of Your modifications, or for any such Derivative Works - as a whole, provided Your use, reproduction, and distribution of - the Work otherwise complies with the conditions stated in this License - and your own copyright statement or terms and conditions do not conflict - the conditions stated in the License including section 3. - -5. Submission of Contributions. Unless You explicitly state otherwise, -any Contribution intentionally submitted for inclusion in the Work -by You to the Licensor shall be under the terms and conditions of -this License, without any additional terms or conditions. -Notwithstanding the above, nothing herein shall supersede or modify -the terms of any separate license agreement you may have executed -with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade -names, trademarks, service marks, or product names of the Licensor, -except as required for reasonable and customary use in describing the -origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or -agreed to in writing, Licensor provides the Work (and each -Contributor provides its Contributions) on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -implied, including, without limitation, any warranties or conditions -of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A -PARTICULAR PURPOSE. You are solely responsible for determining the -appropriateness of using or redistributing the Work and assume any -risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, -whether in tort (including negligence), contract, or otherwise, -unless required by applicable law (such as deliberate and grossly -negligent acts) or agreed to in writing, shall any Contributor be -liable to You for damages, including any direct, indirect, special, -incidental, or consequential damages of any character arising as a -result of this License or out of the use or inability to use the -Work (including but not limited to damages for loss of goodwill, -work stoppage, computer failure or malfunction, or any and all -other commercial damages or losses), even if such Contributor -has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing -the Work or Derivative Works thereof, You may choose to offer, -and charge a fee for, acceptance of support, warranty, indemnity, -or other liability obligations and/or rights consistent with this -License. However, in accepting such obligations, You may act only -on Your own behalf and on Your sole responsibility, not on behalf -of any other Contributor, and only if You agree to indemnify, -defend, and hold each Contributor harmless for any liability -incurred by, or claims asserted against, such Contributor by reason -of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Flora License to your work - -To apply the Flora License to your work, attach the following -boilerplate notice, with the fields enclosed by brackets "[]" -replaced with your own identifying information. (Don't include -the brackets!) The text should be enclosed in the appropriate -comment syntax for the file format. We also recommend that a -file or class name and description of purpose be included on the -same "printed page" as the copyright notice for easier -identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Flora License, Version 1.1 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://floralicense.org/license/ - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - diff --git a/include/abi.h b/include/abi.h deleted file mode 100644 index ebed704..0000000 --- a/include/abi.h +++ /dev/null @@ -1,41 +0,0 @@ -enum buffer_type { /*!< Must have to be sync with libprovider, libwidget-viewer, libwidget-edje */ - BUFFER_TYPE_FILE, - BUFFER_TYPE_SHM, - BUFFER_TYPE_PIXMAP, - BUFFER_TYPE_ERROR -}; - -extern int script_buffer_load(void *handle); -extern int script_buffer_unload(void *handle); -extern int script_buffer_is_loaded(const void *handle); -extern int script_buffer_resize(void *handle, int w, int h); -extern void script_buffer_update_size(void *handle, int w, int h); -extern const char *script_buffer_id(const void *handle); -extern enum buffer_type script_buffer_type(const void *handle); - -extern int script_buffer_pixmap(const void *handle); -extern void *script_buffer_pixmap_acquire_buffer(void *handle); -extern int script_buffer_pixmap_release_buffer(void *canvas); -extern void *script_buffer_pixmap_ref(void *handle); -extern int script_buffer_pixmap_unref(void *buffer_ptr); -extern void *script_buffer_pixmap_find(int pixmap); -extern void *script_buffer_pixmap_buffer(void *handle); -extern int script_buffer_lock(void *handle); -extern int script_buffer_unlock(void *handle); -extern int script_buffer_stride(void *handle); -extern int script_buffer_auto_align(void); -extern int script_buffer_pixels(void *handle); - -extern void *script_buffer_fb(void *handle); -extern int script_buffer_get_size(void *handle, int *w, int *h); -extern void script_buffer_flush(void *handle); -extern void *script_buffer_instance(void *handle); - -extern void *script_buffer_raw_open(enum buffer_type type, void *resource); -extern int script_buffer_raw_close(void *buffer); -extern void *script_buffer_raw_data(void *buffer); -extern int script_buffer_raw_size(void *buffer); - -extern int script_buffer_signal_emit(void *buffer_handle, const char *part, const char *signal, double x, double y, double ex, double ey); - -/* End of a file */ diff --git a/include/debug.h b/include/debug.h deleted file mode 100644 index d278fc4..0000000 --- a/include/debug.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2013 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.1 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#define DbgPrint(format, arg...) SECURE_LOGD(format, ##arg) -#define ErrPrint(format, arg...) SECURE_LOGE(format, ##arg) -#define WarnPrint(format, arg...) SECURE_LOGW(format, ##arg) -/* End of a file */ diff --git a/include/script_port.h b/include/script_port.h deleted file mode 100644 index 5bc657d..0000000 --- a/include/script_port.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2013 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.1 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifdef __cplusplus -extern "C" { -#endif - -/*! - * Implement below functions - */ -extern int script_update_color(void *handle, const char *id, const char *part, const char *rgba); -extern int script_update_text(void *handle, const char *id, const char *part, const char *text); -extern int script_update_image(void *handle, const char *id, const char *part, const char *path, const char *option); -extern int script_update_access(void *handle, const char *id, const char *part, const char *text, const char *option); -extern int script_operate_access(void *handle, const char *id, const char *part, const char *operation, const char *option); -extern int script_update_script(void *handle, const char *src_id, const char *target_id, const char *part, const char *path, const char *group); -extern int script_update_signal(void *handle, const char *id, const char *part, const char *signal); -extern int script_update_drag(void *handle, const char *id, const char *part, double x, double y); -extern int script_update_size(void *handle, const char *id, int w, int h); -extern int script_update_category(void *handle, const char *id, const char *category); - -extern void *script_create(void *buffer_handle, const char *file, const char *group); -extern int script_destroy(void *handle); - -extern int script_load(void *handle, int (*render_pre)(void *buffer_handle, void *data), int (*render_post)(void *render_handle, void *data), void *data); -extern int script_unload(void *handle); - -/*! - WIDGET_ACCESS_HIGHLIGHT 0 - WIDGET_ACCESS_HIGHLIGHT_NEXT 1 - WIDGET_ACCESS_HIGHLIGHT_PREV 2 - WIDGET_ACCESS_ACTIVATE 3 - WIDGET_ACCESS_VALUE_CHANGE 4 - WIDGET_ACCESS_SCROLL 5 -*/ -extern int script_feed_event(void *handle, int event_type, int x, int y, int down, unsigned int keycode, double timestamp); - -extern int script_init(double scale, int premultiplied); -extern int script_fini(void); - -extern const char *script_magic_id(void); - -#ifdef __cplusplus -} -#endif - -/* End of a file */ diff --git a/packaging/libwidget_edje.manifest b/packaging/libwidget_edje.manifest deleted file mode 100644 index a76fdba..0000000 --- a/packaging/libwidget_edje.manifest +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/packaging/libwidget_edje.spec b/packaging/libwidget_edje.spec deleted file mode 100644 index ce1ce63..0000000 --- a/packaging/libwidget_edje.spec +++ /dev/null @@ -1,58 +0,0 @@ -Name: libwidget_edje -Summary: EDJE Script loader for the data provider master -Version: 1.0.0 -Release: 1 -Group: HomeTF/widget -License: Flora -Source0: %{name}-%{version}.tar.gz -Source1001: %{name}.manifest -BuildRequires: cmake, gettext-tools, coreutils -BuildRequires: pkgconfig(dlog) -BuildRequires: pkgconfig(eina) -BuildRequires: pkgconfig(evas) -BuildRequires: pkgconfig(edje) -BuildRequires: pkgconfig(eet) -BuildRequires: pkgconfig(vconf) -BuildRequires: pkgconfig(ecore) -BuildRequires: pkgconfig(elementary) -BuildRequires: pkgconfig(widget_service) -BuildRequires: pkgconfig(capi-system-system-settings) -BuildRequires: pkgconfig(efl-assist) -BuildRequires: model-build-features - -%description -Plugin for the data provider master to load the edje scripts - -%prep -%setup -q -cp %{SOURCE1001} . - -%build -%if 0%{?sec_build_binary_debug_enable} -export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE" -export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE" -export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE" -%endif - -%if 0%{?tizen_build_binary_release_type_eng} -export CFLAGS="${CFLAGS} -DTIZEN_ENGINEER_MODE" -export CXXFLAGS="${CXXFLAGS} -DTIZEN_ENGINEER_MODE" -export FFLAGS="${FFLAGS} -DTIZEN_ENGINEER_MODE" -%endif -%cmake . -make %{?jobs:-j%jobs} - -%install -rm -rf %{buildroot} -%make_install -mkdir -p %{buildroot}/%{_datarootdir}/license - -%post - -%files -n libwidget_edje -%manifest %{name}.manifest -%defattr(-,root,root,-) -/usr/share/data-provider-master/plugin-script/*.so* -%{_datarootdir}/license/* - -# End of a file diff --git a/src/abi.c b/src/abi.c deleted file mode 100644 index 57c8713..0000000 --- a/src/abi.c +++ /dev/null @@ -1,432 +0,0 @@ -#define _GNU_SOURCE - -#include -#include - -#include -#include - -#include "debug.h" -#include "abi.h" - -int script_buffer_load(void *handle) -{ - static int (*load)(void *handle) = NULL; - if (!load) { - load = dlsym(RTLD_DEFAULT, "buffer_handler_load"); - if (!load) { - ErrPrint("broken ABI\n"); - return WIDGET_ERROR_NOT_SUPPORTED; - } - } - - return load(handle); -} - -int script_buffer_unload(void *handle) -{ - static int (*unload)(void *handle) = NULL; - - if (!unload) { - unload = dlsym(RTLD_DEFAULT, "buffer_handler_unload"); - if (!unload) { - ErrPrint("broken ABI\n"); - return WIDGET_ERROR_NOT_SUPPORTED; - } - } - - return unload(handle); -} - -int script_buffer_is_loaded(const void *handle) -{ - static int (*is_loaded)(const void *handle) = NULL; - - if (!is_loaded) { - is_loaded = dlsym(RTLD_DEFAULT, "buffer_handler_is_loaded"); - if (!is_loaded) { - ErrPrint("broken ABI\n"); - return WIDGET_ERROR_NOT_SUPPORTED; - } - } - - return is_loaded(handle); -} - -int script_buffer_resize(void *handle, int w, int h) -{ - static int (*resize)(void *handle, int w, int h) = NULL; - - if (!resize) { - resize = dlsym(RTLD_DEFAULT, "buffer_handler_resize"); - if (!resize) { - ErrPrint("broken ABI\n"); - return WIDGET_ERROR_NOT_SUPPORTED; - } - } - - return resize(handle, w, h); -} - -void script_buffer_update_size(void *handle, int w, int h) -{ - static void (*update_size)(void *handle, int w, int h) = NULL; - - if (!update_size) { - update_size = dlsym(RTLD_DEFAULT, "buffer_handler_update_size"); - if (!update_size) { - ErrPrint("broken ABI\n"); - return; - } - } - - return update_size(handle, w, h); /*! "void" function can be used with "return" statement */ -} - -const char *script_buffer_id(const void *handle) -{ - static const char *(*buffer_id)(const void *handle) = NULL; - - if (!buffer_id) { - buffer_id = dlsym(RTLD_DEFAULT, "buffer_handler_id"); - if (!buffer_id) { - ErrPrint("broken ABI\n"); - return NULL; - } - } - - return buffer_id(handle); -} - -enum buffer_type script_buffer_type(const void *handle) -{ - static enum buffer_type (*buffer_type)(const void *handle) = NULL; - - if (!buffer_type) { - buffer_type = dlsym(RTLD_DEFAULT, "buffer_handler_type"); - if (!buffer_type) { - ErrPrint("broken ABI\n"); - return BUFFER_TYPE_ERROR; - } - } - - return buffer_type(handle); -} - -int script_buffer_pixmap(const void *handle) -{ - static int (*buffer_pixmap)(const void *handle) = NULL; - - if (!buffer_pixmap) { - buffer_pixmap = dlsym(RTLD_DEFAULT, "buffer_handler_pixmap"); - if (!buffer_pixmap) { - ErrPrint("broken ABI\n"); - return WIDGET_ERROR_NOT_SUPPORTED; - } - } - - return buffer_pixmap(handle); -} - -void *script_buffer_pixmap_acquire_buffer(void *handle) -{ - static void *(*pixmap_acquire_buffer)(void *handle) = NULL; - - if (!pixmap_acquire_buffer) { - pixmap_acquire_buffer = dlsym(RTLD_DEFAULT, "buffer_handler_pixmap_acquire_buffer"); - if (!pixmap_acquire_buffer) { - ErrPrint("broken ABI\n"); - return NULL; - } - } - - return pixmap_acquire_buffer(handle); -} - -int script_buffer_pixmap_release_buffer(void *canvas) -{ - static int (*pixmap_release_buffer)(void *canvas) = NULL; - - if (!pixmap_release_buffer) { - pixmap_release_buffer = dlsym(RTLD_DEFAULT, "buffer_handler_pixmap_release_buffer"); - if (!pixmap_release_buffer) { - ErrPrint("broken ABI\n"); - return WIDGET_ERROR_NOT_SUPPORTED; - } - } - - return pixmap_release_buffer(canvas); -} - -void *script_buffer_pixmap_ref(void *handle) -{ - static void *(*pixmap_ref)(void *handle) = NULL; - - if (!pixmap_ref) { - pixmap_ref = dlsym(RTLD_DEFAULT, "buffer_handler_pixmap_ref"); - if (!pixmap_ref) { - ErrPrint("broken ABI\n"); - return NULL; - } - } - - return pixmap_ref(handle); -} - -int script_buffer_pixmap_unref(void *buffer_ptr) -{ - static int (*pixmap_unref)(void *ptr) = NULL; - - if (!pixmap_unref) { - pixmap_unref = dlsym(RTLD_DEFAULT, "buffer_handler_pixmap_unref"); - if (!pixmap_unref) { - ErrPrint("broken ABI\n"); - return WIDGET_ERROR_NOT_SUPPORTED; - } - } - - return pixmap_unref(buffer_ptr); -} - -void *script_buffer_pixmap_find(int pixmap) -{ - static void *(*pixmap_find)(int pixmap) = NULL; - - if (!pixmap_find) { - pixmap_find = dlsym(RTLD_DEFAULT, "buffer_handler_pixmap_find"); - if (!pixmap_find) { - ErrPrint("broken ABI\n"); - return NULL; - } - } - - return pixmap_find(pixmap); -} - -void *script_buffer_pixmap_buffer(void *handle) -{ - static void *(*pixmap_buffer)(void *handle) = NULL; - - if (!pixmap_buffer) { - pixmap_buffer = dlsym(RTLD_DEFAULT, "buffer_handler_pixmap_buffer"); - if (!pixmap_buffer) { - ErrPrint("broken ABI\n"); - return NULL; - } - } - - return pixmap_buffer(handle); -} - -void *script_buffer_fb(void *handle) -{ - static void *(*buffer_fb)(void *handle) = NULL; - - if (!buffer_fb) { - buffer_fb = dlsym(RTLD_DEFAULT, "buffer_handler_fb"); - if (!buffer_fb) { - ErrPrint("broken ABI\n"); - return NULL; - } - } - - return buffer_fb(handle); -} - -int script_buffer_get_size(void *handle, int *w, int *h) -{ - static int (*get_size)(void *handle, int *w, int *h) = NULL; - - if (!get_size) { - get_size = dlsym(RTLD_DEFAULT, "buffer_handler_get_size"); - if (!get_size) { - ErrPrint("broken ABI\n"); - return WIDGET_ERROR_NOT_SUPPORTED; - } - } - - return get_size(handle, w, h); -} - -void script_buffer_flush(void *handle) -{ - static void (*buffer_flush)(void *handle) = NULL; - - if (!buffer_flush) { - buffer_flush = dlsym(RTLD_DEFAULT, "buffer_handler_flush"); - if (!buffer_flush) { - ErrPrint("broken ABI\n"); - return; - } - } - - return buffer_flush(handle); /* "void" function can be used to return from this function ;) */ -} - -void *script_buffer_instance(void *handle) -{ - static void *(*buffer_instance)(void *handle) = NULL; - - if (!buffer_instance) { - buffer_instance = dlsym(RTLD_DEFAULT, "buffer_handler_instance"); - if (!buffer_instance) { - ErrPrint("broken ABI\n"); - return NULL; - } - } - - return buffer_instance(handle); -} - -void *script_buffer_raw_open(enum buffer_type type, void *resource) -{ - static void *(*raw_open)(enum buffer_type type, void *resource) = NULL; - - if (!raw_open) { - raw_open = dlsym(RTLD_DEFAULT, "buffer_handler_raw_open"); - if (!raw_open) { - ErrPrint("broken ABI\n"); - return NULL; - } - } - - return raw_open(type, resource); -} - -int script_buffer_raw_close(void *buffer) -{ - static int (*raw_close)(void *buffer) = NULL; - - if (!raw_close) { - raw_close = dlsym(RTLD_DEFAULT, "buffer_handler_raw_close"); - if (!raw_close) { - ErrPrint("broken ABI\n"); - return WIDGET_ERROR_NOT_SUPPORTED; - } - } - - return raw_close(buffer); -} - -void *script_buffer_raw_data(void *buffer) -{ - static void *(*raw_data)(void *buffer) = NULL; - - if (!raw_data) { - raw_data = dlsym(RTLD_DEFAULT, "buffer_handler_raw_data"); - if (!raw_data) { - ErrPrint("broken ABI\n"); - return NULL; - } - } - - return raw_data(buffer); -} - -int script_buffer_raw_size(void *buffer) -{ - static int (*raw_size)(void *buffer) = NULL; - - if (!raw_size) { - raw_size = dlsym(RTLD_DEFAULT, "buffer_handler_raw_size"); - if (!raw_size) { - ErrPrint("broken ABI\n"); - return WIDGET_ERROR_NOT_SUPPORTED; - } - } - - return raw_size(buffer); -} - -int script_buffer_lock(void *handle) -{ - static int (*buffer_lock)(void *handle) = NULL; - - if (!buffer_lock) { - buffer_lock = dlsym(RTLD_DEFAULT, "buffer_handler_lock"); - if (!buffer_lock) { - ErrPrint("broken ABI\n"); - return WIDGET_ERROR_NOT_SUPPORTED; - } - } - - return buffer_lock(handle); -} - -int script_buffer_unlock(void *handle) -{ - static int (*buffer_unlock)(void *handle) = NULL; - - if (!buffer_unlock) { - buffer_unlock = dlsym(RTLD_DEFAULT, "buffer_handler_unlock"); - if (!buffer_unlock) { - ErrPrint("broken ABI\n"); - return WIDGET_ERROR_NOT_SUPPORTED; - } - } - - return buffer_unlock(handle); -} - -int script_buffer_signal_emit(void *buffer_handle, const char *part, const char *signal, double x, double y, double ex, double ey) -{ - static int (*signal_emit)(void *buffer_handle, const char *part, const char *signal, double x, double y, double ex, double ey) = NULL; - - if (!signal_emit) { - signal_emit = dlsym(RTLD_DEFAULT, "script_signal_emit"); - if (!signal_emit) { - ErrPrint("broken ABI\n"); - return WIDGET_ERROR_NOT_SUPPORTED; - } - } - - return signal_emit(buffer_handle, part, signal, x, y, ex, ey); -} - -int script_buffer_stride(void *handle) -{ - static int (*buffer_stride)(void *handle) = NULL; - - if (!buffer_stride) { - buffer_stride = dlsym(RTLD_DEFAULT, "buffer_handler_stride"); - if (!buffer_stride) { - ErrPrint("broken ABI\n"); - return WIDGET_ERROR_NOT_SUPPORTED; - } - } - - return buffer_stride(handle); -} - -int script_buffer_auto_align(void) -{ - static int (*buffer_auto_align)(void) = NULL; - - if (!buffer_auto_align) { - buffer_auto_align = dlsym(RTLD_DEFAULT, "buffer_handler_auto_align"); - if (!buffer_auto_align) { - ErrPrint("broken ABI\n"); - return WIDGET_ERROR_NOT_SUPPORTED; - } - } - - return buffer_auto_align(); -} - -int script_buffer_pixels(void *handle) -{ - static int (*buffer_pixels)(void *handle) = NULL; - - if (!buffer_pixels) { - buffer_pixels = dlsym(RTLD_DEFAULT, "buffer_handler_pixels"); - if (!buffer_pixels) { - ErrPrint("broken ABI\n"); - return WIDGET_ERROR_NOT_SUPPORTED; - } - } - - return buffer_pixels(handle); -} - -/* End of a file */ - diff --git a/src/script_port.c b/src/script_port.c deleted file mode 100644 index bd497b7..0000000 --- a/src/script_port.c +++ /dev/null @@ -1,2194 +0,0 @@ -/* - * Copyright 2013 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.1 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#define _GNU_SOURCE - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include "script_port.h" -#include "abi.h" - -#define TEXT_CLASS "tizen" -#define DEFAULT_FONT_SIZE -100 - -#define PUBLIC __attribute__((visibility("default"))) - -#define ACCESS_TYPE_DOWN 0 -#define ACCESS_TYPE_MOVE 1 -#define ACCESS_TYPE_UP 2 -#define ACCESS_TYPE_CUR 0 -#define ACCESS_TYPE_NEXT 1 -#define ACCESS_TYPE_PREV 2 -#define ACCESS_TYPE_OFF 3 - -struct image_option { - int orient; - int aspect; - enum { - FILL_DISABLE, - FILL_IN_SIZE, - FILL_OVER_SIZE, - FILL_FIT_SIZE - } fill; - - struct shadow { - int enabled; - int angle; - int offset; - int softness; - int color; - } shadow; - - int width; - int height; -}; - -struct info { - char *file; - char *group; - char *category; - - int is_mouse_down; - void *buffer_handle; - - Ecore_Evas *ee; - Evas *e; - - Evas_Object *parent; - - Eina_List *obj_list; - - int (*render_pre)(void *buffer_handle, void *data); - int (*render_post)(void *render_handle, void *data); - void *render_data; -}; - -struct child { - Evas_Object *obj; - char *part; -}; - -struct obj_info { - char *id; - Eina_List *children; - Evas_Object *parent; - int delete_me; -}; - -static struct { - char *font_name; - int font_size; - int access_on; - - Eina_List *handle_list; - int premultiplied; - Ecore_Evas *(*alloc_canvas)(int w, int h, void *(*a)(void *data, int size), void (*f)(void *data, void *ptr), void *data); - Ecore_Evas *(*alloc_canvas_with_stride)(int w, int h, void *(*a)(void *data, int size, int *stride, int *bpp), void (*f)(void *data, void *ptr), void *data); -} s_info = { - .font_name = NULL, - .font_size = -100, - - .handle_list = NULL, - .access_on = 0, - .premultiplied = 1, - .alloc_canvas = NULL, - .alloc_canvas_with_stride = NULL, -}; - -static inline Evas_Object *find_edje(struct info *handle, const char *id) -{ - Eina_List *l; - Evas_Object *edje; - struct obj_info *obj_info; - - EINA_LIST_FOREACH(handle->obj_list, l, edje) { - obj_info = evas_object_data_get(edje, "obj_info"); - if (!obj_info) { - ErrPrint("Object info is not valid\n"); - continue; - } - - if (!id) { - if (!obj_info->id) { - return edje; - } - - continue; - } else if (!obj_info->id) { - continue; - } - - if (!strcmp(obj_info->id, id)) { - return edje; - } - } - - DbgPrint("EDJE[%s] is not found\n", id); - return NULL; -} - -PUBLIC const char *script_magic_id(void) -{ - return "edje"; -} - -PUBLIC int script_update_color(void *h, const char *id, const char *part, const char *rgba) -{ - struct info *handle = h; - Evas_Object *edje; - int r[3], g[3], b[3], a[3]; - int ret; - - edje = find_edje(handle, id); - if (!edje) { - return WIDGET_ERROR_NOT_EXIST; - } - - ret = sscanf(rgba, "%d %d %d %d %d %d %d %d %d %d %d %d", - r, g, b, a, /* OBJECT */ - r + 1, g + 1, b + 1, a + 1, /* OUTLINE */ - r + 2, g + 2, b + 2, a + 2); /* SHADOW */ - if (ret != 12) { - DbgPrint("id[%s] part[%s] rgba[%s]\n", id, part, rgba); - return WIDGET_ERROR_INVALID_PARAMETER; - } - - ret = edje_object_color_class_set(elm_layout_edje_get(edje), part, - r[0], g[0], b[0], a[0], /* OBJECT */ - r[1], g[1], b[1], a[1], /* OUTLINE */ - r[2], g[2], b[2], a[2]); /* SHADOW */ - - DbgPrint("EDJE[%s] color class is %s changed", id, ret == EINA_TRUE ? "successfully" : "not"); - return WIDGET_ERROR_NONE; -} - -static void activate_cb(void *data, Evas_Object *part_obj, Elm_Object_Item *item) -{ - Evas *e; - int x; - int y; - int w; - int h; - double timestamp; - - e = evas_object_evas_get(part_obj); - evas_object_geometry_get(part_obj, &x, &y, &w, &h); - x += w / 2; - y += h / 2; - -#if defined(_USE_ECORE_TIME_GET) - timestamp = ecore_time_get(); -#else - struct timeval tv; - if (gettimeofday(&tv, NULL) < 0) { - ErrPrint("Failed to get time\n"); - timestamp = 0.0f; - } else { - timestamp = (double)tv.tv_sec + ((double)tv.tv_usec / 1000000.0f); - } -#endif - - DbgPrint("Cursor is on %dx%d\n", x, y); - evas_event_feed_mouse_move(e, x, y, timestamp * 1000, NULL); - evas_event_feed_mouse_down(e, 1, EVAS_BUTTON_NONE, (timestamp + 0.01f) * 1000, NULL); - evas_event_feed_mouse_move(e, x, y, (timestamp + 0.02f) * 1000, NULL); - evas_event_feed_mouse_up(e, 1, EVAS_BUTTON_NONE, (timestamp + 0.03f) * 1000, NULL); -} - -static void update_focus_chain(struct info *handle, Evas_Object *ao) -{ - const Eina_List *list; - - list = elm_object_focus_custom_chain_get(handle->parent); - if (!eina_list_data_find(list, ao)) { - DbgPrint("Append again to the focus chain\n"); - elm_object_focus_custom_chain_append(handle->parent, ao, NULL); - } -} - -PUBLIC int script_update_text(void *h, const char *id, const char *part, const char *text) -{ - struct obj_info *obj_info; - struct info *handle = h; - Evas_Object *edje; - Evas_Object *edje_part; - - edje = find_edje(handle, id); - if (!edje) { - ErrPrint("Failed to find EDJE\n"); - return WIDGET_ERROR_NOT_EXIST; - } - - obj_info = evas_object_data_get(edje, "obj_info"); - if (!obj_info) { - ErrPrint("Object info is not available\n"); - return WIDGET_ERROR_FAULT; - } - - elm_object_part_text_set(edje, part, text ? text : ""); - - edje_part = (Evas_Object *)edje_object_part_object_get(elm_layout_edje_get(edje), part); - if (edje_part) { - Evas_Object *ao; - char *utf8; - - ao = evas_object_data_get(edje_part, "ao"); - if (!ao) { - ao = elm_access_object_register(edje_part, handle->parent); - if (!ao) { - ErrPrint("Unable to register an access object(%s)\n", part); - goto out; - } - - evas_object_data_set(edje_part, "ao", ao); - elm_access_activate_cb_set(ao, activate_cb, NULL); - elm_object_focus_custom_chain_append(handle->parent, ao, NULL); - - DbgPrint("[%s] Register access info: (%s) to, %p\n", part, text, handle->parent); - } - - if (!text || !strlen(text)) { - /*! - * \note - * Delete callback will be called - */ - DbgPrint("[%s] Remove access object(%p)\n", part, ao); - elm_access_object_unregister(ao); - - goto out; - } - - utf8 = elm_entry_markup_to_utf8(text); - if ((!utf8 || !strlen(utf8))) { - free(utf8); - /*! - * \note - * Delete callback will be called - */ - DbgPrint("[%s] Remove access object(%p)\n", part, ao); - elm_access_object_unregister(ao); - - goto out; - } - - elm_access_info_set(ao, ELM_ACCESS_INFO, utf8); - free(utf8); - - update_focus_chain(handle, ao); - } else { - ErrPrint("Unable to get text part[%s]\n", part); - } - -out: - return WIDGET_ERROR_NONE; -} - -static void parse_aspect(struct image_option *img_opt, const char *value, int len) -{ - while (len > 0 && *value == ' ') { - value++; - len--; - } - - if (len < 4) { - return; - } - - img_opt->aspect = !strncasecmp(value, "true", 4); - DbgPrint("Parsed ASPECT: %d (%s)\n", img_opt->aspect, value); -} - -static void parse_orient(struct image_option *img_opt, const char *value, int len) -{ - while (len > 0 && *value == ' ') { - value++; - len--; - } - - if (len < 4) { - return; - } - - img_opt->orient = !strncasecmp(value, "true", 4); - DbgPrint("Parsed ORIENT: %d (%s)\n", img_opt->orient, value); -} - -static void parse_size(struct image_option *img_opt, const char *value, int len) -{ - int width; - int height; - char *buf; - - while (len > 0 && *value == ' ') { - value++; - len--; - } - - buf = strndup(value, len); - if (!buf) { - ErrPrint("Heap: %d\n", errno); - return; - } - - if (sscanf(buf, "%dx%d", &width, &height) == 2) { - img_opt->width = width; - img_opt->height = height; - DbgPrint("Parsed size : %dx%d (%s)\n", width, height, buf); - } else { - DbgPrint("Invalid size tag[%s]\n", buf); - } - - free(buf); -} - -static void parse_shadow(struct image_option *img_opt, const char *value, int len) -{ - int angle; - int offset; - int softness; - int color; - - if (sscanf(value, "%d,%d,%d,%x", &angle, &offset, &softness, &color) != 4) { - ErrPrint("Invalid shadow [%s]\n", value); - } else { - img_opt->shadow.enabled = 1; - img_opt->shadow.angle = angle; - img_opt->shadow.offset = offset; - img_opt->shadow.softness = softness; - img_opt->shadow.color = color; - } -} - -static void parse_fill(struct image_option *img_opt, const char *value, int len) -{ - while (len > 0 && *value == ' ') { - value++; - len--; - } - - if (!strncasecmp(value, "in-size", len)) { - img_opt->fill = FILL_IN_SIZE; - } else if (!strncasecmp(value, "over-size", len)) { - img_opt->fill = FILL_OVER_SIZE; - } else if (!strncasecmp(value, "fit-size", len)) { - img_opt->fill = FILL_FIT_SIZE; - } else { - img_opt->fill = FILL_DISABLE; - } - - DbgPrint("Parsed FILL: %d (%s)\n", img_opt->fill, value); -} - -static inline void parse_image_option(const char *option, struct image_option *img_opt) -{ - const char *ptr; - const char *cmd; - const char *value; - struct { - const char *cmd; - void (*handler)(struct image_option *img_opt, const char *value, int len); - } cmd_list[] = { - { - .cmd = "aspect", /* Keep the aspect ratio */ - .handler = parse_aspect, - }, - { - .cmd = "orient", /* Keep the orientation value: for the rotated images */ - .handler = parse_orient, - }, - { - .cmd = "fill", /* Fill the image to its container */ - .handler = parse_fill, /* Value: in-size, over-size, disable(default) */ - }, - { - .cmd = "size", - .handler = parse_size, - }, - { - .cmd = "shadow", - .handler = parse_shadow, - }, - }; - enum { - STATE_START, - STATE_TOKEN, - STATE_DATA, - STATE_IGNORE, - STATE_ERROR, - STATE_END - } state; - int idx; - int tag; - - if (!option || !*option) { - return; - } - - state = STATE_START; - /*! - * \note - * GCC 4.7 warnings uninitialized idx and tag value. - * But it will be initialized by the state machine. :( - * Anyway, I just reset idx and tag for reducing the GCC4.7 complains. - */ - idx = 0; - tag = 0; - cmd = NULL; - value = NULL; - - for (ptr = option; state != STATE_END; ptr++) { - switch (state) { - case STATE_START: - if (*ptr == '\0') { - state = STATE_END; - continue; - } - - if (isalpha(*ptr)) { - state = STATE_TOKEN; - ptr--; - } - tag = 0; - idx = 0; - - cmd = cmd_list[tag].cmd; - break; - case STATE_IGNORE: - if (*ptr == '=') { - state = STATE_DATA; - value = ptr; - } else if (*ptr == '\0') { - state = STATE_END; - } - break; - case STATE_TOKEN: - if (cmd[idx] == '\0' && (*ptr == ' ' || *ptr == '\t' || *ptr == '=')) { - if (*ptr == '=') { - value = ptr; - state = STATE_DATA; - } else { - state = STATE_IGNORE; - } - idx = 0; - } else if (*ptr == '\0') { - state = STATE_END; - } else if (cmd[idx] == *ptr) { - idx++; - } else { - ptr -= (idx + 1); - - tag++; - if (tag == sizeof(cmd_list) / sizeof(cmd_list[0])) { - tag = 0; - state = STATE_ERROR; - } else { - cmd = cmd_list[tag].cmd; - } - idx = 0; - } - break; - case STATE_DATA: - if (*ptr == ';' || *ptr == '\0') { - cmd_list[tag].handler(img_opt, value + 1, idx); - state = *ptr ? STATE_START : STATE_END; - } else { - idx++; - } - break; - case STATE_ERROR: - if (*ptr == ';') { - state = STATE_START; - } else if (*ptr == '\0') { - state = STATE_END; - } - break; - default: - break; - } - } -} - -PUBLIC int script_update_access(void *_h, const char *id, const char *part, const char *text, const char *option) -{ - struct info *handle = _h; - Evas_Object *edje; - struct obj_info *obj_info; - Evas_Object *edje_part; - - edje = find_edje(handle, id); - if (!edje) { - ErrPrint("No such object: %s\n", id); - return WIDGET_ERROR_NOT_EXIST; - } - - obj_info = evas_object_data_get(edje, "obj_info"); - if (!obj_info) { - ErrPrint("Object info is not available\n"); - return WIDGET_ERROR_FAULT; - } - - edje_part = (Evas_Object *)edje_object_part_object_get(elm_layout_edje_get(edje), part); - if (edje_part) { - Evas_Object *ao; - - ao = evas_object_data_get(edje_part, "ao"); - if (ao) { - if (text && strlen(text)) { - elm_access_info_set(ao, ELM_ACCESS_INFO, text); - DbgPrint("Access info is updated: %s [%s], %p\n", part, text, ao); - update_focus_chain(handle, ao); - } else { - /*! - * \note - * Delete clalback will be called - */ - DbgPrint("[%s] Remove access object(%p)\n", part, ao); - elm_access_object_unregister(ao); - } - } else if (text && strlen(text)) { - ao = elm_access_object_register(edje_part, handle->parent); - if (!ao) { - ErrPrint("Unable to register an access object(%s)\n", part); - } else { - elm_access_info_set(ao, ELM_ACCESS_INFO, text); - - evas_object_data_set(edje_part, "ao", ao); - elm_object_focus_custom_chain_append(handle->parent, ao, NULL); - elm_access_activate_cb_set(ao, activate_cb, NULL); - DbgPrint("[%s] Register access info: (%s) to, %p (%p)\n", part, text, handle->parent, ao); - } - } - } else { - ErrPrint("[%s] is not exists\n", part); - } - - return WIDGET_ERROR_NONE; -} - -PUBLIC int script_operate_access(void *_h, const char *id, const char *part, const char *operation, const char *option) -{ - struct info *handle = _h; - Evas_Object *edje; - struct obj_info *obj_info; - Elm_Access_Action_Info action_info; - int ret; - - if (!operation || !strlen(operation)) { - return WIDGET_ERROR_INVALID_PARAMETER; - } - - edje = find_edje(handle, id); - if (!edje) { - ErrPrint("No such object: %s\n", id); - return WIDGET_ERROR_NOT_EXIST; - } - - obj_info = evas_object_data_get(edje, "obj_info"); - if (!obj_info) { - ErrPrint("Object info is not available\n"); - return WIDGET_ERROR_FAULT; - } - - memset(&action_info, 0, sizeof(action_info)); - - /* OPERATION is defined in libwidget package */ - if (!strcasecmp(operation, "set,hl")) { - if (part) { - Evas_Object *edje_part; - Evas_Coord x; - Evas_Coord y; - Evas_Coord w; - Evas_Coord h; - - edje_part = (Evas_Object *)edje_object_part_object_get(elm_layout_edje_get(edje), part); - if (!edje_part) { - ErrPrint("Invalid part: %s\n", part); - goto out; - } - - evas_object_geometry_get(edje_part, &x, &y, &w, &h); - - action_info.x = x + w / 2; - action_info.y = x + h / 2; - } else if (option && sscanf(option, "%dx%d", &action_info.x, &action_info.y) == 2) { - } else { - ErrPrint("Insufficient info for HL\n"); - goto out; - } - - DbgPrint("TXxTY: %dx%d\n", action_info.x, action_info.y); - ret = elm_access_action(edje, ELM_ACCESS_ACTION_HIGHLIGHT, &action_info); - if (ret == EINA_FALSE) { - ErrPrint("Action error\n"); - } - } else if (!strcasecmp(operation, "unset,hl")) { - ret = elm_access_action(edje, ELM_ACCESS_ACTION_UNHIGHLIGHT, &action_info); - if (ret == EINA_FALSE) { - ErrPrint("Action error\n"); - } - } else if (!strcasecmp(operation, "next,hl")) { - action_info.highlight_cycle = (!!option) && (!!strcasecmp(option, "no,cycle")); - - ret = elm_access_action(edje, ELM_ACCESS_ACTION_HIGHLIGHT_NEXT, &action_info); - if (ret == EINA_FALSE) { - ErrPrint("Action error\n"); - } - } else if (!strcasecmp(operation, "prev,hl")) { - action_info.highlight_cycle = EINA_TRUE; - ret = elm_access_action(edje, ELM_ACCESS_ACTION_HIGHLIGHT_PREV, &action_info); - if (ret == EINA_FALSE) { - ErrPrint("Action error\n"); - } - } else if (!strcasecmp(operation, "reset,focus")) { - DbgPrint("Reset Focus\n"); - elm_object_focus_custom_chain_set(edje, NULL); - } - -out: - return WIDGET_ERROR_NONE; -} - -static inline void apply_shadow_effect(struct image_option *img_opt, Evas_Object *img) -{ - ea_effect_h *ea_effect; - - if (!img_opt->shadow.enabled) { - return; - } - - ea_effect = ea_image_effect_create(); - if (!ea_effect) { - return; - } - - // -90, 2, 4, 0x99000000 - ea_image_effect_add_outer_shadow(ea_effect, img_opt->shadow.angle, img_opt->shadow.offset, img_opt->shadow.softness, img_opt->shadow.color); - ea_object_image_effect_set(img, ea_effect); - - ea_image_effect_destroy(ea_effect); -} - -static Evas_Object *crop_image(Evas_Object *img, const char *path, int part_w, int part_h, int w, int h, struct image_option *img_opt) -{ - Ecore_Evas *ee; - Evas *e; - Evas_Object *src_img; - Evas_Coord rw, rh; - const void *data; - Evas_Load_Error err; - Evas_Object *_img; - - ee = ecore_evas_buffer_new(part_w, part_h); - if (!ee) { - ErrPrint("Failed to create a EE\n"); - return img; - } - - ecore_evas_alpha_set(ee, EINA_TRUE); - - e = ecore_evas_get(ee); - if (!e) { - ErrPrint("Unable to get Evas\n"); - ecore_evas_free(ee); - return img; - } - - src_img = evas_object_image_filled_add(e); - if (!src_img) { - ErrPrint("Unable to add an image\n"); - ecore_evas_free(ee); - return img; - } - - evas_object_image_alpha_set(src_img, EINA_TRUE); - evas_object_image_colorspace_set(src_img, EVAS_COLORSPACE_ARGB8888); - evas_object_image_smooth_scale_set(src_img, EINA_TRUE); - evas_object_image_load_orientation_set(src_img, img_opt->orient); - evas_object_image_file_set(src_img, path, NULL); - err = evas_object_image_load_error_get(src_img); - if (err != EVAS_LOAD_ERROR_NONE) { - ErrPrint("Load error: %s\n", evas_load_error_str(err)); - evas_object_del(src_img); - ecore_evas_free(ee); - return img; - } - evas_object_image_size_get(src_img, &rw, &rh); - evas_object_image_fill_set(src_img, 0, 0, rw, rh); - evas_object_resize(src_img, w, h); - evas_object_move(src_img, -(w - part_w) / 2, -(h - part_h) / 2); - evas_object_show(src_img); - - data = ecore_evas_buffer_pixels_get(ee); - if (!data) { - ErrPrint("Unable to get pixels\n"); - evas_object_del(src_img); - ecore_evas_free(ee); - return img; - } - - e = evas_object_evas_get(img); - _img = evas_object_image_filled_add(e); - if (!_img) { - evas_object_del(src_img); - ecore_evas_free(ee); - return img; - } - - evas_object_image_colorspace_set(_img, EVAS_COLORSPACE_ARGB8888); - evas_object_image_smooth_scale_set(_img, EINA_TRUE); - evas_object_image_alpha_set(_img, EINA_TRUE); - evas_object_image_data_set(_img, NULL); - evas_object_image_size_set(_img, part_w, part_h); - evas_object_resize(_img, part_w, part_h); - evas_object_image_data_copy_set(_img, (void *)data); - evas_object_image_fill_set(_img, 0, 0, part_w, part_h); - evas_object_image_data_update_add(_img, 0, 0, part_w, part_h); - - evas_object_del(src_img); - ecore_evas_free(ee); - - evas_object_del(img); - return _img; -} - -PUBLIC int script_update_image(void *_h, const char *id, const char *part, const char *path, const char *option) -{ - struct info *handle = _h; - Evas_Load_Error err; - Evas_Object *edje; - Evas_Object *img; - Evas_Coord w, h; - struct obj_info *obj_info; - struct image_option img_opt = { - .aspect = 0, - .orient = 0, - .fill = FILL_DISABLE, - .width = -1, - .height = -1, - .shadow = { - .enabled = 0, - }, - }; - - edje = find_edje(handle, id); - if (!edje) { - ErrPrint("No such object: %s\n", id); - return WIDGET_ERROR_NOT_EXIST; - } - - obj_info = evas_object_data_get(edje, "obj_info"); - if (!obj_info) { - ErrPrint("Object info is not available\n"); - return WIDGET_ERROR_FAULT; - } - - img = elm_object_part_content_unset(edje, part); - if (img) { - DbgPrint("delete object %s %p\n", part, img); - evas_object_del(img); - } - - if (!path || !strlen(path) || access(path, R_OK) != 0) { - DbgPrint("SKIP - Path: [%s]\n", path); - return WIDGET_ERROR_NONE; - } - - img = evas_object_image_add(handle->e); - if (!img) { - ErrPrint("Failed to add an image object\n"); - return WIDGET_ERROR_FAULT; - } - - evas_object_image_preload(img, EINA_FALSE); - parse_image_option(option, &img_opt); - evas_object_image_load_orientation_set(img, img_opt.orient); - - evas_object_image_file_set(img, path, NULL); - err = evas_object_image_load_error_get(img); - if (err != EVAS_LOAD_ERROR_NONE) { - ErrPrint("Load error: %s\n", evas_load_error_str(err)); - evas_object_del(img); - return WIDGET_ERROR_IO_ERROR; - } - - apply_shadow_effect(&img_opt, img); - - evas_object_image_size_get(img, &w, &h); - if (img_opt.aspect) { - if (img_opt.fill == FILL_OVER_SIZE) { - Evas_Coord part_w; - Evas_Coord part_h; - - if (img_opt.width >= 0 && img_opt.height >= 0) { - part_w = img_opt.width * elm_config_scale_get(); - part_h = img_opt.height * elm_config_scale_get(); - } else { - part_w = 0; - part_h = 0; - edje_object_part_geometry_get(elm_layout_edje_get(edje), part, NULL, NULL, &part_w, &part_h); - } - DbgPrint("Original %dx%d (part: %dx%d)\n", w, h, part_w, part_h); - - if (part_w > w || part_h > h) { - double fw; - double fh; - - fw = (double)part_w / (double)w; - fh = (double)part_h / (double)h; - - if (fw > fh) { - w = part_w; - h = (double)h * fw; - } else { - h = part_h; - w = (double)w * fh; - } - } - - if (!part_w || !part_h || !w || !h) { - evas_object_del(img); - return WIDGET_ERROR_INVALID_PARAMETER; - } - - img = crop_image(img, path, part_w, part_h, w, h, &img_opt); - } else if (img_opt.fill == FILL_IN_SIZE) { - Evas_Coord part_w; - Evas_Coord part_h; - - if (img_opt.width >= 0 && img_opt.height >= 0) { - part_w = img_opt.width * elm_config_scale_get(); - part_h = img_opt.height * elm_config_scale_get(); - } else { - part_w = 0; - part_h = 0; - edje_object_part_geometry_get(elm_layout_edje_get(edje), part, NULL, NULL, &part_w, &part_h); - } - DbgPrint("Original %dx%d (part: %dx%d)\n", w, h, part_w, part_h); - - if (w > part_w || h > part_h) { - double fw; - double fh; - - fw = (double)part_w / (double)w; - fh = (double)part_h / (double)h; - - if (fw > fh) { - h = part_h; - w = (double)w * fh; - } else { - w = part_w; - h = (double)h * fw; - } - } - - if (!part_w || !part_h || !w || !h) { - evas_object_del(img); - return WIDGET_ERROR_INVALID_PARAMETER; - } - - img = crop_image(img, path, part_w, part_h, w, h, &img_opt); - } else if (img_opt.fill == FILL_FIT_SIZE) { - Evas_Coord part_w; - Evas_Coord part_h; - double fw; - double fh; - - if (img_opt.width >= 0 && img_opt.height >= 0) { - part_w = img_opt.width * elm_config_scale_get(); - part_h = img_opt.height * elm_config_scale_get(); - } else { - part_w = 0; - part_h = 0; - edje_object_part_geometry_get(elm_layout_edje_get(edje), part, NULL, NULL, &part_w, &part_h); - } - DbgPrint("Original %dx%d (part: %dx%d)\n", w, h, part_w, part_h); - - fw = (double)part_w / (double)w; - fh = (double)part_h / (double)h; - - if (fw < fh) { - h = part_h; - w = (double)w * fh; - } else { - w = part_w; - h = (double)h * fw; - } - - if (!part_w || !part_h || !w || !h) { - evas_object_del(img); - return WIDGET_ERROR_INVALID_PARAMETER; - } - - img = crop_image(img, path, part_w, part_h, w, h, &img_opt); - } else { - evas_object_image_fill_set(img, 0, 0, w, h); - evas_object_size_hint_fill_set(img, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_size_hint_aspect_set(img, EVAS_ASPECT_CONTROL_BOTH, w, h); - } - - apply_shadow_effect(&img_opt, img); - } else { - if (img_opt.width >= 0 && img_opt.height >= 0) { - w = img_opt.width; - h = img_opt.height; - DbgPrint("Using given image size: %dx%d\n", w, h); - } - - evas_object_image_fill_set(img, 0, 0, w, h); - evas_object_size_hint_fill_set(img, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_size_hint_weight_set(img, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_image_filled_set(img, EINA_TRUE); - } - - - /*! - * \note - * object will be shown by below statement automatically - */ - DbgPrint("%s part swallow image %p (%dx%d)\n", part, img, w, h); - elm_object_part_content_set(edje, part, img); - - /*! - * \note - * This object is not registered as an access object. - * So the developer should add it to access list manually, using DESC_ACCESS block. - */ - return WIDGET_ERROR_NONE; -} - -static void script_signal_cb(void *data, Evas_Object *obj, const char *signal_name, const char *source) -{ - struct info *handle = data; - Evas_Coord w; - Evas_Coord h; - Evas_Coord px = 0; - Evas_Coord py = 0; - Evas_Coord pw = 0; - Evas_Coord ph = 0; - double sx; - double sy; - double ex; - double ey; - - evas_object_geometry_get(obj, NULL, NULL, &w, &h); - edje_object_part_geometry_get(elm_layout_edje_get(obj), source, &px, &py, &pw, &ph); - - sx = ex = 0.0f; - if (w) { - sx = (double)px / (double)w; - ex = (double)(px + pw) / (double)w; - } - - sy = ey = 0.0f; - if (h) { - sy = (double)py / (double)h; - ey = (double)(py + ph) / (double)h; - } - - DbgPrint("[%s] [%s]\n", signal_name, source); - - script_buffer_signal_emit(handle->buffer_handle, source, signal_name, sx, sy, ex, ey); -} - -static void edje_del_cb(void *_info, Evas *e, Evas_Object *obj, void *event_info) -{ - struct info *handle = _info; - struct obj_info *obj_info; - struct obj_info *parent_obj_info; - struct child *child; - - handle->obj_list = eina_list_remove(handle->obj_list, obj); - - obj_info = evas_object_data_get(obj, "obj_info"); - if (!obj_info) { - ErrPrint("Object info is not valid\n"); - return; - } - - elm_object_signal_callback_del(obj, "*", "*", script_signal_cb); - - DbgPrint("delete object %s %p\n", obj_info->id, obj); - if (obj_info->parent == obj) { - DbgPrint("Parent EDJE\n"); - } else if (obj_info->parent) { - Eina_List *l; - Eina_List *n; - - parent_obj_info = evas_object_data_get(obj_info->parent, "obj_info"); - if (parent_obj_info) { - EINA_LIST_FOREACH_SAFE(parent_obj_info->children, l, n, child) { - if (child->obj != obj) { - continue; - } - - /*! - * \note - * If this code is executed, - * The parent is not deleted by desc, this object is deleted by itself. - * It is not possible, but we care it. - */ - DbgPrint("Children is updated: %s (%s)\n", child->part, parent_obj_info->id); - parent_obj_info->children = eina_list_remove(parent_obj_info->children, child); - free(child->part); - free(child); - break; - } - - if (!parent_obj_info->children && parent_obj_info->delete_me == 1) { - DbgPrint("Children is cleared: %s (by a child)\n", parent_obj_info->id); - evas_object_data_del(obj_info->parent, "obj_info"); - free(parent_obj_info->id); - free(parent_obj_info); - } - } - } else { - DbgPrint("obj_info->parent is NULL (skipped)\n"); - } - - if (!obj_info->children) { - DbgPrint("Children is cleared: %s\n", obj_info->id); - evas_object_data_del(obj, "obj_info"); - free(obj_info->id); - free(obj_info); - } else { - DbgPrint("Children is remained: %s\n", obj_info->id); - obj_info->delete_me = 1; - } -} - -static inline Evas_Object *get_highlighted_object(Evas_Object *obj) -{ - Evas_Object *o, *ho; - - o = evas_object_name_find(evas_object_evas_get(obj), "_elm_access_disp"); - if (!o) { - return NULL; - } - - ho = evas_object_data_get(o, "_elm_access_target"); - return ho; -} - -/*! - WIDGET_ACCESS_HIGHLIGHT 0 - WIDGET_ACCESS_HIGHLIGHT_NEXT 1 - WIDGET_ACCESS_HIGHLIGHT_PREV 2 - WIDGET_ACCESS_ACTIVATE 3 - WIDGET_ACCESS_ACTION 4 - WIDGET_ACCESS_SCROLL 5 - */ -PUBLIC int script_feed_event(void *h, int event_type, int x, int y, int type, unsigned int keycode, double timestamp) -{ - struct info *handle = h; - Evas_Object *edje; - struct obj_info *obj_info; - int ret = WIDGET_ERROR_NONE; - - edje = find_edje(handle, NULL); /*!< Get the base layout */ - if (!edje) { - ErrPrint("Base layout is not exist\n"); - return WIDGET_ERROR_NOT_EXIST; - } - - obj_info = evas_object_data_get(edje, "obj_info"); - if (!obj_info) { - ErrPrint("Object info is not valid\n"); - return WIDGET_ERROR_INVALID_PARAMETER; - } - - if (event_type & WIDGET_SCRIPT_ACCESS_EVENT) { - Elm_Access_Action_Info info; - Elm_Access_Action_Type action; - - memset(&info, 0, sizeof(info)); - - if ((event_type & WIDGET_SCRIPT_ACCESS_HIGHLIGHT) == WIDGET_SCRIPT_ACCESS_HIGHLIGHT) { - action = ELM_ACCESS_ACTION_HIGHLIGHT; - info.x = x; - info.y = y; - ret = elm_access_action(edje, action, &info); - DbgPrint("ACCESS_HIGHLIGHT: %dx%d returns %d\n", x, y, ret); - if (ret == EINA_TRUE) { - if (!get_highlighted_object(edje)) { - ErrPrint("Highlighted object is not found\n"); - ret = WIDGET_ACCESS_STATUS_ERROR; - } else { - DbgPrint("Highlighted object is found\n"); - ret = WIDGET_ACCESS_STATUS_DONE; - } - } else { - ErrPrint("Action error\n"); - ret = WIDGET_ACCESS_STATUS_ERROR; - } - } else if ((event_type & WIDGET_SCRIPT_ACCESS_HIGHLIGHT_NEXT) == WIDGET_SCRIPT_ACCESS_HIGHLIGHT_NEXT) { - action = ELM_ACCESS_ACTION_HIGHLIGHT_NEXT; - info.highlight_cycle = EINA_FALSE; - ret = elm_access_action(edje, action, &info); - DbgPrint("ACCESS_HIGHLIGHT_NEXT, returns %d\n", ret); - ret = (ret == EINA_FALSE) ? WIDGET_ACCESS_STATUS_LAST : WIDGET_ACCESS_STATUS_DONE; - } else if ((event_type & WIDGET_SCRIPT_ACCESS_HIGHLIGHT_PREV) == WIDGET_SCRIPT_ACCESS_HIGHLIGHT_PREV) { - action = ELM_ACCESS_ACTION_HIGHLIGHT_PREV; - info.highlight_cycle = EINA_FALSE; - ret = elm_access_action(edje, action, &info); - DbgPrint("ACCESS_HIGHLIGHT_PREV, returns %d\n", ret); - ret = (ret == EINA_FALSE) ? WIDGET_ACCESS_STATUS_FIRST : WIDGET_ACCESS_STATUS_DONE; - } else if ((event_type & WIDGET_SCRIPT_ACCESS_ACTIVATE) == WIDGET_SCRIPT_ACCESS_ACTIVATE) { - action = ELM_ACCESS_ACTION_ACTIVATE; - ret = elm_access_action(edje, action, &info); - DbgPrint("ACCESS_ACTIVATE, returns %d\n", ret); - ret = (ret == EINA_FALSE) ? WIDGET_ACCESS_STATUS_ERROR : WIDGET_ACCESS_STATUS_DONE; - } else if ((event_type & WIDGET_SCRIPT_ACCESS_ACTION) == WIDGET_SCRIPT_ACCESS_ACTION) { - switch (type) { - case ACCESS_TYPE_UP: - action = ELM_ACCESS_ACTION_UP; - ret = elm_access_action(edje, action, &info); - DbgPrint("ACCESS_ACTION(%d), returns %d\n", type, ret); - ret = (ret == EINA_FALSE) ? WIDGET_ACCESS_STATUS_ERROR : WIDGET_ACCESS_STATUS_DONE; - break; - case ACCESS_TYPE_DOWN: - action = ELM_ACCESS_ACTION_DOWN; - ret = elm_access_action(edje, action, &info); - DbgPrint("ACCESS_ACTION(%d), returns %d\n", type, ret); - ret = (ret == EINA_FALSE) ? WIDGET_ACCESS_STATUS_ERROR : WIDGET_ACCESS_STATUS_DONE; - break; - default: - ErrPrint("Invalid access event\n"); - ret = WIDGET_ACCESS_STATUS_ERROR; - break; - } - } else if ((event_type & WIDGET_SCRIPT_ACCESS_SCROLL) == WIDGET_SCRIPT_ACCESS_SCROLL) { - action = ELM_ACCESS_ACTION_SCROLL; - info.x = x; - info.y = y; - switch (type) { - case ACCESS_TYPE_DOWN: - info.mouse_type = 0; - ret = elm_access_action(edje, action, &info); - DbgPrint("ACCESS_HIGHLIGHT_SCROLL, returns %d\n", ret); - ret = (ret == EINA_FALSE) ? WIDGET_ACCESS_STATUS_ERROR : WIDGET_ACCESS_STATUS_DONE; - break; - case ACCESS_TYPE_MOVE: - info.mouse_type = 1; - ret = elm_access_action(edje, action, &info); - DbgPrint("ACCESS_HIGHLIGHT_SCROLL, returns %d\n", ret); - ret = (ret == EINA_FALSE) ? WIDGET_ACCESS_STATUS_ERROR : WIDGET_ACCESS_STATUS_DONE; - break; - case ACCESS_TYPE_UP: - info.mouse_type = 2; - ret = elm_access_action(edje, action, &info); - DbgPrint("ACCESS_HIGHLIGHT_SCROLL, returns %d\n", ret); - ret = (ret == EINA_FALSE) ? WIDGET_ACCESS_STATUS_ERROR : WIDGET_ACCESS_STATUS_DONE; - break; - default: - ret = WIDGET_ACCESS_STATUS_ERROR; - break; - } - } else if ((event_type & WIDGET_SCRIPT_ACCESS_UNHIGHLIGHT) == WIDGET_SCRIPT_ACCESS_UNHIGHLIGHT) { - action = ELM_ACCESS_ACTION_UNHIGHLIGHT; - ret = elm_access_action(edje, action, &info); - DbgPrint("ACCESS_UNHIGHLIGHT, returns %d\n", ret); - ret = (ret == EINA_FALSE) ? WIDGET_ACCESS_STATUS_ERROR : WIDGET_ACCESS_STATUS_DONE; - } else if ((event_type & WIDGET_SCRIPT_ACCESS_VALUE_CHANGE) == WIDGET_SCRIPT_ACCESS_VALUE_CHANGE) { - action = ELM_ACCESS_ACTION_VALUE_CHANGE; - info.mouse_type = type; - info.x = x; - info.y = y; - ret = elm_access_action(edje, action, &info); - ret = (ret == EINA_FALSE) ? WIDGET_ACCESS_STATUS_ERROR : WIDGET_ACCESS_STATUS_DONE; - } else if ((event_type & WIDGET_SCRIPT_ACCESS_MOUSE) == WIDGET_SCRIPT_ACCESS_MOUSE) { - action = ELM_ACCESS_ACTION_MOUSE; - info.mouse_type = type; - info.x = x; - info.y = y; - ret = elm_access_action(edje, action, &info); - ret = (ret == EINA_FALSE) ? WIDGET_ACCESS_STATUS_ERROR : WIDGET_ACCESS_STATUS_DONE; - } else if ((event_type & WIDGET_SCRIPT_ACCESS_BACK) == WIDGET_SCRIPT_ACCESS_BACK) { - action = ELM_ACCESS_ACTION_BACK; - info.mouse_type = type; - info.x = x; - info.y = y; - ret = elm_access_action(edje, action, &info); - ret = (ret == EINA_FALSE) ? WIDGET_ACCESS_STATUS_ERROR : WIDGET_ACCESS_STATUS_DONE; - } else if ((event_type & WIDGET_SCRIPT_ACCESS_OVER) == WIDGET_SCRIPT_ACCESS_OVER) { - action = ELM_ACCESS_ACTION_OVER; - info.mouse_type = type; - info.x = x; - info.y = y; - ret = elm_access_action(edje, action, &info); - ret = (ret == EINA_FALSE) ? WIDGET_ACCESS_STATUS_ERROR : WIDGET_ACCESS_STATUS_DONE; - } else if ((event_type & WIDGET_SCRIPT_ACCESS_READ) == WIDGET_SCRIPT_ACCESS_READ) { - action = ELM_ACCESS_ACTION_READ; - info.mouse_type = type; - info.x = x; - info.y = y; - ret = elm_access_action(edje, action, &info); - ret = (ret == EINA_FALSE) ? WIDGET_ACCESS_STATUS_ERROR : WIDGET_ACCESS_STATUS_DONE; - } else if ((event_type & WIDGET_SCRIPT_ACCESS_ENABLE) == WIDGET_SCRIPT_ACCESS_ENABLE) { - action = ELM_ACCESS_ACTION_ENABLE; - info.mouse_type = type; - info.x = x; - info.y = y; - ret = elm_access_action(edje, action, &info); - ret = (ret == EINA_FALSE) ? WIDGET_ACCESS_STATUS_ERROR : WIDGET_ACCESS_STATUS_DONE; - } else if ((event_type & WIDGET_SCRIPT_ACCESS_DISABLE) == WIDGET_SCRIPT_ACCESS_DISABLE) { - action = ELM_ACCESS_ACTION_ENABLE; - info.mouse_type = type; - info.x = x; - info.y = y; - ret = elm_access_action(edje, action, &info); - ret = (ret == EINA_FALSE) ? WIDGET_ACCESS_STATUS_ERROR : WIDGET_ACCESS_STATUS_DONE; - } else { - DbgPrint("Invalid event\n"); - ret = WIDGET_ACCESS_STATUS_ERROR; - } - - } else if (event_type & WIDGET_SCRIPT_MOUSE_EVENT) { - double cur_timestamp; - unsigned int flags; - -#if defined(_USE_ECORE_TIME_GET) - cur_timestamp = ecore_time_get(); -#else - struct timeval tv; - if (gettimeofday(&tv, NULL) < 0) { - ErrPrint("Failed to get time\n"); - cur_timestamp = 0.0f; - } else { - cur_timestamp = (double)tv.tv_sec + ((double)tv.tv_usec / 1000000.0f); - } -#endif - if (cur_timestamp - timestamp > 0.1f && handle->is_mouse_down == 0) { - DbgPrint("Discard lazy event : %lf\n", cur_timestamp - timestamp); - return WIDGET_ERROR_NONE; - } - - switch (event_type) { - case WIDGET_SCRIPT_MOUSE_DOWN: - if (handle->is_mouse_down == 0) { - flags = evas_event_default_flags_get(handle->e); - flags &= ~EVAS_EVENT_FLAG_ON_SCROLL; - flags &= ~EVAS_EVENT_FLAG_ON_HOLD; - evas_event_default_flags_set(handle->e, flags); - - evas_event_feed_mouse_move(handle->e, x, y, timestamp * 1000, NULL); - evas_event_feed_mouse_down(handle->e, 1, EVAS_BUTTON_NONE, (timestamp + 0.01f) * 1000, NULL); - handle->is_mouse_down = 1; - } - break; - case WIDGET_SCRIPT_MOUSE_MOVE: - evas_event_feed_mouse_move(handle->e, x, y, timestamp * 1000, NULL); - break; - case WIDGET_SCRIPT_MOUSE_UP: - if (handle->is_mouse_down == 1) { - evas_event_feed_mouse_move(handle->e, x, y, timestamp * 1000, NULL); - evas_event_feed_mouse_up(handle->e, 1, EVAS_BUTTON_NONE, (timestamp + 0.01f) * 1000, NULL); - handle->is_mouse_down = 0; - } - break; - case WIDGET_SCRIPT_MOUSE_IN: - evas_event_feed_mouse_in(handle->e, timestamp * 1000, NULL); - break; - case WIDGET_SCRIPT_MOUSE_OUT: - evas_event_feed_mouse_out(handle->e, timestamp * 1000, NULL); - break; - case WIDGET_SCRIPT_MOUSE_ON_SCROLL: - flags = evas_event_default_flags_get(handle->e); - flags |= EVAS_EVENT_FLAG_ON_SCROLL; - evas_event_default_flags_set(handle->e, flags); - break; - case WIDGET_SCRIPT_MOUSE_ON_HOLD: // To cancel the clicked, enable this - flags = evas_event_default_flags_get(handle->e); - flags |= EVAS_EVENT_FLAG_ON_HOLD; - evas_event_default_flags_set(handle->e, flags); - break; - case WIDGET_SCRIPT_MOUSE_OFF_SCROLL: - flags = evas_event_default_flags_get(handle->e); - flags &= ~EVAS_EVENT_FLAG_ON_SCROLL; - evas_event_default_flags_set(handle->e, flags); - break; - case WIDGET_SCRIPT_MOUSE_OFF_HOLD: - flags = evas_event_default_flags_get(handle->e); - flags &= ~EVAS_EVENT_FLAG_ON_HOLD; - evas_event_default_flags_set(handle->e, flags); - break; - default: - return WIDGET_ERROR_INVALID_PARAMETER; - } - } else if (event_type & WIDGET_SCRIPT_KEY_EVENT) { - const char *keyname = ""; - const char *key = ""; - const char *string = ""; - const char *compose = ""; - - switch (event_type) { - case WIDGET_SCRIPT_KEY_DOWN: - evas_event_feed_key_down(handle->e, keyname, key, string, compose, timestamp * 1000, NULL); - ret = WIDGET_KEY_STATUS_DONE; - /*! - * \TODO - * If the keyname == RIGHT, Need to check that - * Does it reach to the last focusable object? - */ - - /*! - * if (REACH to the LAST) { - * ret = WIDGET_KEY_STATUS_LAST; - * } else { - * ret = WIDGET_KEY_STATUS_DONE; - * } - * - * if (REACH to the FIRST) { - * ret = WIDGET_KEY_STATUS_FIRST; - * } else { - * ret = WIDGET_KEY_STATUS_DONE; - * } - */ - break; - case WIDGET_SCRIPT_KEY_UP: - evas_event_feed_key_up(handle->e, keyname, key, string, compose, timestamp * 1000, NULL); - ret = WIDGET_KEY_STATUS_DONE; - break; - case WIDGET_SCRIPT_KEY_FOCUS_IN: - // evas_event_callback_call(handle->e, EVAS_CALLBACK_CANVAS_FOCUS_IN, NULL); - ret = WIDGET_KEY_STATUS_DONE; - break; - case WIDGET_SCRIPT_KEY_FOCUS_OUT: - // evas_event_callback_call(handle->e, EVAS_CALLBACK_CANVAS_FOCUS_OUT, NULL); - ret = WIDGET_KEY_STATUS_DONE; - break; - default: - DbgPrint("Event is not implemented\n"); - ret = WIDGET_KEY_STATUS_ERROR; - break; - } - } - - return ret; -} - -PUBLIC int script_update_script(void *h, const char *src_id, const char *target_id, const char *part, const char *path, const char *group) -{ - struct info *handle = h; - Evas_Object *edje; - Evas_Object *obj; - struct obj_info *obj_info; - struct child *child; - char _target_id[32]; - - edje = find_edje(handle, src_id); - if (!edje) { - ErrPrint("Edje is not exists (%s)\n", src_id); - return WIDGET_ERROR_NOT_EXIST; - } - - obj_info = evas_object_data_get(edje, "obj_info"); - if (!obj_info) { - ErrPrint("Object info is not valid\n"); - return WIDGET_ERROR_INVALID_PARAMETER; - } - - obj = elm_object_part_content_unset(edje, part); - if (obj) { - DbgPrint("delete object %s %p\n", part, obj); - /*! - * \note - * This will call the edje_del_cb. - * It will delete all access objects - */ - evas_object_del(obj); - } - - if (!path || !strlen(path) || access(path, R_OK) != 0) { - DbgPrint("SKIP - Path: [%s]\n", path); - return WIDGET_ERROR_NONE; - } - - if (!target_id) { - if (find_edje(handle, part)) { - double timestamp; - - do { -#if defined(_USE_ECORE_TIME_GET) - timestamp = ecore_time_get(); -#else - struct timeval tv; - if (gettimeofday(&tv, NULL) < 0) { - static int local_idx = 0; - timestamp = (double)(local_idx++); - } else { - timestamp = (double)tv.tv_sec + ((double)tv.tv_usec / 1000000.0f); - } -#endif - - snprintf(_target_id, sizeof(_target_id), "%lf", timestamp); - } while (find_edje(handle, _target_id)); - - target_id = _target_id; - } else { - target_id = part; - } - - DbgPrint("Anonymouse target id: %s\n", target_id); - } - - obj = elm_layout_add(edje); - if (!obj) { - ErrPrint("Failed to add a new edje object\n"); - return WIDGET_ERROR_FAULT; - } - - edje_object_scale_set(elm_layout_edje_get(obj), elm_config_scale_get()); - - if (!elm_layout_file_set(obj, path, group)) { - int err; - err = edje_object_load_error_get(elm_layout_edje_get(obj)); - if (err != EDJE_LOAD_ERROR_NONE) { - ErrPrint("Could not load %s from %s: %s\n", group, path, edje_load_error_str(err)); - } - evas_object_del(obj); - return WIDGET_ERROR_IO_ERROR; - } - - evas_object_show(obj); - - obj_info = calloc(1, sizeof(*obj_info)); - if (!obj_info) { - ErrPrint("Failed to add a obj_info\n"); - evas_object_del(obj); - return WIDGET_ERROR_OUT_OF_MEMORY; - } - - obj_info->id = strdup(target_id); - if (!obj_info->id) { - ErrPrint("Failed to add a obj_info\n"); - free(obj_info); - evas_object_del(obj); - return WIDGET_ERROR_OUT_OF_MEMORY; - } - - obj_info->parent = edje; - - child = malloc(sizeof(*child)); - if (!child) { - ErrPrint("Error: %d\n", errno); - free(obj_info->id); - free(obj_info); - evas_object_del(obj); - return WIDGET_ERROR_OUT_OF_MEMORY; - } - - child->part = strdup(part); - if (!child->part) { - ErrPrint("Error: %d\n", errno); - free(child); - free(obj_info->id); - free(obj_info); - evas_object_del(obj); - return WIDGET_ERROR_OUT_OF_MEMORY; - } - - child->obj = obj; - - evas_object_data_set(obj, "obj_info", obj_info); - evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, edje_del_cb, handle); - elm_object_signal_callback_add(obj, "*", "*", script_signal_cb, handle); - handle->obj_list = eina_list_append(handle->obj_list, obj); - - DbgPrint("%s part swallow edje %p\n", part, obj); - elm_object_part_content_set(edje, part, obj); - - obj_info = evas_object_data_get(edje, "obj_info"); - - if (obj_info == NULL) { - ErrPrint("evas_object_data_get failed\n"); - free(child); - free(obj_info->id); - free(obj_info); - evas_object_del(obj); - return WIDGET_ERROR_FAULT; - } - - obj_info->children = eina_list_append(obj_info->children, child); - - return WIDGET_ERROR_NONE; -} - -PUBLIC int script_update_signal(void *h, const char *id, const char *part, const char *signal) -{ - struct info *handle = h; - Evas_Object *edje; - - edje = find_edje(handle, id); - if (!edje) { - return WIDGET_ERROR_NOT_EXIST; - } - - elm_object_signal_emit(edje, signal, part); - return WIDGET_ERROR_NONE; -} - -PUBLIC int script_update_drag(void *h, const char *id, const char *part, double x, double y) -{ - struct info *handle = h; - Evas_Object *edje; - - edje = find_edje(handle, id); - if (!edje) { - return WIDGET_ERROR_NOT_EXIST; - } - - edje_object_part_drag_value_set(elm_layout_edje_get(edje), part, x, y); - return WIDGET_ERROR_NONE; -} - -PUBLIC int script_update_size(void *han, const char *id, int w, int h) -{ - struct info *handle = han; - Evas_Object *edje; - - edje = find_edje(handle, id); - if (!edje) { - return WIDGET_ERROR_NOT_EXIST; - } - - if (!id) { - /*! - * \note - * Need to resize the canvas too - */ - ecore_evas_resize(handle->ee, w, h); - } - - DbgPrint("Resize object to %dx%d\n", w, h); - evas_object_resize(edje, w, h); - return WIDGET_ERROR_NONE; -} - -PUBLIC int script_update_category(void *h, const char *id, const char *category) -{ - struct info *handle = h; - - if (handle->category) { - free(handle->category); - handle->category = NULL; - } - - if (!category) { - return WIDGET_ERROR_NONE; - } - - handle->category = strdup(category); - if (!handle->category) { - ErrPrint("Error: %d\n", errno); - return WIDGET_ERROR_OUT_OF_MEMORY; - } - - return WIDGET_ERROR_NONE; -} - -PUBLIC void *script_create(void *buffer_handle, const char *file, const char *group) -{ - struct info *handle; - - handle = calloc(1, sizeof(*handle)); - if (!handle) { - ErrPrint("Error: %d\n", errno); - return NULL; - } - - handle->file = strdup(file); - if (!handle->file) { - ErrPrint("Error: %d\n", errno); - free(handle); - return NULL; - } - - handle->group = strdup(group); - if (!handle->group) { - ErrPrint("Error: %d\n", errno); - free(handle->file); - free(handle); - return NULL; - } - - handle->buffer_handle = buffer_handle; - - s_info.handle_list = eina_list_append(s_info.handle_list, handle); - - return handle; -} - -PUBLIC int script_destroy(void *_handle) -{ - struct info *handle; - Evas_Object *edje; - - handle = _handle; - - if (!eina_list_data_find(s_info.handle_list, handle)) { - DbgPrint("Not found (already deleted?)\n"); - return WIDGET_ERROR_NOT_EXIST; - } - - s_info.handle_list = eina_list_remove(s_info.handle_list, handle); - - edje = eina_list_nth(handle->obj_list, 0); - if (edje) { - evas_object_del(edje); - } - - DbgPrint("Release handle\n"); - free(handle->category); - free(handle->file); - free(handle->group); - free(handle); - return WIDGET_ERROR_NONE; -} - -static void sw_render_pre_cb(void *data, Evas *e, void *event_info) -{ - struct info *handle = data; - - if (handle->render_pre) { - handle->render_pre(handle->buffer_handle, handle->render_data); - } - - script_buffer_lock(handle->buffer_handle); - - if (s_info.premultiplied) { - int w; - int h; - - script_buffer_get_size(handle->buffer_handle, &w, &h); - evas_damage_rectangle_add(handle->e, 0, 0, w, h); - } -} - -static void sw_render_post_cb(void *data, Evas *e, void *event_info) -{ - struct info *handle = data; - - if (s_info.premultiplied) { - void *canvas; - int x, y, w, h; - - // Get a pointer of a buffer of the virtual canvas - canvas = (void *)ecore_evas_buffer_pixels_get(handle->ee); - if (!canvas) { - ErrPrint("Failed to get pixel canvas\n"); - return; - } - - ecore_evas_geometry_get(handle->ee, &x, &y, &w, &h); - evas_data_argb_unpremul(canvas, w * h); - } - - script_buffer_unlock(handle->buffer_handle); - - if (handle->render_post) { - handle->render_post(handle->buffer_handle, handle->render_data); - } -} - -static void render_pre_cb(void *data, Evas *e, void *event_info) -{ - struct info *handle = data; - void *canvas; - - canvas = script_buffer_pixmap_acquire_buffer(handle->buffer_handle); - if (!canvas) { - ErrPrint("Acquired buffer is NULL\n"); - } - - sw_render_pre_cb(data, handle->e, event_info); -} - -static void render_post_cb(void *data, Evas *e, void *event_info) -{ - struct info *handle = data; - void *canvas; - - sw_render_post_cb(data, handle->e, event_info); - canvas = script_buffer_pixmap_buffer(handle->buffer_handle); - if (!canvas) { - ErrPrint("Acquired buffer is NULL\n"); - } else { - script_buffer_pixmap_release_buffer(canvas); - } -} - -static void *alloc_fb(void *data, int size) -{ - struct info *handle = data; - - if (script_buffer_load(handle->buffer_handle) < 0) { - ErrPrint("Failed to load buffer handler\n"); - return NULL; - } - - return script_buffer_fb(handle->buffer_handle); -} - -static void *alloc_with_stride_fb(void *data, int size, int *stride, int *bpp) -{ - void *canvas; - struct info *handle = data; - int _stride; - int _bpp; - - canvas = alloc_fb(data, size); - if (!canvas) { - ErrPrint("Unable to allocate canvas buffer\n"); - } - - _bpp = script_buffer_pixels(handle->buffer_handle); - if (_bpp < 0) { - ErrPrint("Failed to get pixel size, fallback to 4\n"); - _bpp = sizeof(int); - } - - _stride = script_buffer_stride(handle->buffer_handle); - if (_stride < 0) { - int w = 0; - - ecore_evas_geometry_get(handle->ee, NULL, NULL, &w, NULL); - - _stride = w * _bpp; - ErrPrint("Failed to get stride info, fallback to %d\n", _stride); - } - - *stride = _stride; - *bpp = _bpp << 3; - - return canvas; -} - -static void free_fb(void *data, void *ptr) -{ - struct info *handle = data; - - if (!handle->buffer_handle) { - ErrPrint("Buffer is not valid (maybe already released)\n"); - return; - } - - if (script_buffer_fb(handle->buffer_handle) != ptr) { - ErrPrint("Buffer pointer is not matched\n"); - } - - (void)script_buffer_unload(handle->buffer_handle); -} - -static int destroy_ecore_evas(struct info *handle) -{ - if (!handle->ee) { - return WIDGET_ERROR_NONE; - } - ecore_evas_free(handle->ee); - handle->ee = NULL; - handle->e = NULL; - return WIDGET_ERROR_NONE; -} - -static int create_ecore_evas(struct info *handle, int *w, int *h) -{ - script_buffer_get_size(handle->buffer_handle, w, h); - if (*w == 0 && *h == 0) { - ErrPrint("ZERO size FB accessed\n"); - return WIDGET_ERROR_INVALID_PARAMETER; - } - - if (handle->ee) { - int ow = 0; - int oh = 0; - - ecore_evas_geometry_get(handle->ee, NULL, NULL, &ow, &oh); - if (*w != ow || *h != oh) { - ErrPrint("EE exists, But different size - buffer_handle(%dx%d) -> ee(%dx%d)\n", ow, oh, *w, *h); - ecore_evas_resize(handle->ee, *w, *h); - } - - return WIDGET_ERROR_NONE; - } - - if (!script_buffer_auto_align() && s_info.alloc_canvas_with_stride) { - handle->ee = s_info.alloc_canvas_with_stride(*w, *h, alloc_with_stride_fb, free_fb, handle); - } else if (s_info.alloc_canvas) { - handle->ee = s_info.alloc_canvas(*w, *h, alloc_fb, free_fb, handle); - } else { - ErrPrint("Failed to allocate canvas\n"); - return WIDGET_ERROR_FAULT; - } - - if (!handle->ee) { - ErrPrint("Failed to create a buffer\n"); - return WIDGET_ERROR_FAULT; - } - - handle->e = ecore_evas_get(handle->ee); - if (!handle->e) { - ErrPrint("Failed to get an Evas\n"); - ecore_evas_free(handle->ee); - handle->ee = NULL; - return WIDGET_ERROR_FAULT; - } - - if (script_buffer_type(handle->buffer_handle) == BUFFER_TYPE_PIXMAP) { - void *canvas; - - evas_event_callback_add(handle->e, EVAS_CALLBACK_RENDER_PRE, render_pre_cb, handle); - evas_event_callback_add(handle->e, EVAS_CALLBACK_RENDER_POST, render_post_cb, handle); - - /* - * \note - * ecore_evas_alpha_set tries to access the canvas buffer. - * Without any render_pre/render_post callback. - */ - canvas = script_buffer_pixmap_acquire_buffer(handle->buffer_handle); - if (!canvas) { - ErrPrint("Acquired buffer is NULL\n"); - } else { - ecore_evas_alpha_set(handle->ee, EINA_TRUE); - script_buffer_pixmap_release_buffer(canvas); - } - } else { - evas_event_callback_add(handle->e, EVAS_CALLBACK_RENDER_PRE, sw_render_pre_cb, handle); - evas_event_callback_add(handle->e, EVAS_CALLBACK_RENDER_POST, sw_render_post_cb, handle); - ecore_evas_alpha_set(handle->ee, EINA_TRUE); - } - - ecore_evas_manual_render_set(handle->ee, EINA_FALSE); - ecore_evas_resize(handle->ee, *w, *h); - ecore_evas_show(handle->ee); - ecore_evas_activate(handle->ee); - - return WIDGET_ERROR_NONE; -} - -PUBLIC int script_load(void *_handle, int (*render_pre)(void *buffer_handle, void *data), int (*render_post)(void *render_handle, void *data), void *data) -{ - struct info *handle; - Evas_Object *edje; - struct obj_info *obj_info; - int ret; - int w; - int h; - - /*! - * \TODO - * Create "Ecore_Evas *" - */ - - handle = _handle; - - handle->render_pre = render_pre; - handle->render_post = render_post; - handle->render_data = data; - - ret = create_ecore_evas(handle, &w, &h); - if (ret < 0) { - return ret; - } - - obj_info = calloc(1, sizeof(*obj_info)); - if (!obj_info) { - ErrPrint("Heap: %d\n", errno); - destroy_ecore_evas(handle); - return WIDGET_ERROR_OUT_OF_MEMORY; - } - - obj_info->parent = evas_object_rectangle_add(handle->e); - if (!obj_info->parent) { - ErrPrint("Unable to create a parent box\n"); - free(obj_info); - destroy_ecore_evas(handle); - return WIDGET_ERROR_FAULT; - } - - edje = elm_layout_add(obj_info->parent); - if (!edje) { - ErrPrint("Failed to create an edje object\n"); - evas_object_del(obj_info->parent); - free(obj_info); - destroy_ecore_evas(handle); - return WIDGET_ERROR_FAULT; - } - - edje_object_scale_set(elm_layout_edje_get(edje), elm_config_scale_get()); - - if (!elm_layout_file_set(edje, handle->file, handle->group)) { - int err; - - err = edje_object_load_error_get(elm_layout_edje_get(edje)); - if (err != EDJE_LOAD_ERROR_NONE) { - ErrPrint("Could not load %s from %s: %s\n", handle->group, handle->file, edje_load_error_str(err)); - } - evas_object_del(edje); - evas_object_del(obj_info->parent); - free(obj_info); - destroy_ecore_evas(handle); - return WIDGET_ERROR_IO_ERROR; - } - - handle->parent = edje; - - elm_object_signal_callback_add(edje, "*", "*", script_signal_cb, handle); - evas_object_event_callback_add(edje, EVAS_CALLBACK_DEL, edje_del_cb, handle); - evas_object_size_hint_weight_set(edje, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_fill_set(edje, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_resize(edje, w, h); - evas_object_show(edje); - evas_object_data_set(edje, "obj_info", obj_info); - - handle->obj_list = eina_list_append(handle->obj_list, edje); - return WIDGET_ERROR_NONE; -} - -PUBLIC int script_unload(void *_handle) -{ - struct info *handle; - - /*! - * \TODO - * Destroy "Ecore_Evas *" - */ - - handle = _handle; - - if (handle->parent) { - DbgPrint("Delete parent box\n"); - evas_object_del(handle->parent); - } - - (void)destroy_ecore_evas(handle); - return WIDGET_ERROR_NONE; -} - -static void access_cb(keynode_t *node, void *user_data) -{ - int state; - - if (!node) { - if (vconf_get_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, &state) != 0) { - ErrPrint("Idle lock state is not valid\n"); - state = 0; /* DISABLED */ - } - } else { - state = vconf_keynode_get_bool(node); - } - - DbgPrint("ELM CONFIG ACCESS: %d\n", state); - elm_config_access_set(state); - s_info.access_on = state; -} - -static void update_font_cb(void *data) -{ - elm_config_font_overlay_set(TEXT_CLASS, s_info.font_name, DEFAULT_FONT_SIZE); - DbgPrint("Update text class %s (%s, %d)\n", TEXT_CLASS, s_info.font_name, DEFAULT_FONT_SIZE); -} - -static void font_changed_cb(keynode_t *node, void *user_data) -{ - char *font_name; - - evas_font_reinit(); - - if (s_info.font_name) { - font_name = vconf_get_str("db/setting/accessibility/font_name"); - if (!font_name) { - ErrPrint("Invalid font name (NULL)\n"); - return; - } - - if (!strcmp(s_info.font_name, font_name)) { - DbgPrint("Font is not changed (Old: %s(%p) <> New: %s(%p))\n", s_info.font_name, s_info.font_name, font_name, font_name); - free(font_name); - return; - } - - DbgPrint("Release old font name: %s(%p)\n", s_info.font_name, s_info.font_name); - free(s_info.font_name); - } else { - int ret; - - /*! - * Get the first font name using system_settings API. - */ - font_name = NULL; - ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, &font_name); - if (ret != SYSTEM_SETTINGS_ERROR_NONE || !font_name) { - ErrPrint("System setting get: %d, font_name[%p]\n", ret, font_name); - return; - } - } - - s_info.font_name = font_name; - DbgPrint("Font name is changed to %s(%p)\n", s_info.font_name, s_info.font_name); - - /*! - * \NOTE - * Try to update all widgets - */ - update_font_cb(NULL); -} - -static inline int convert_font_size(int size) -{ - switch (size) { - case SYSTEM_SETTINGS_FONT_SIZE_SMALL: - size = -80; - break; - case SYSTEM_SETTINGS_FONT_SIZE_NORMAL: - size = -100; - break; - case SYSTEM_SETTINGS_FONT_SIZE_LARGE: - size = -150; - break; - case SYSTEM_SETTINGS_FONT_SIZE_HUGE: - size = -190; - break; - case SYSTEM_SETTINGS_FONT_SIZE_GIANT: - size = -250; - break; - default: - size = -100; - break; - } - - DbgPrint("Return size: %d\n", size); - return size; -} - -static void font_size_cb(system_settings_key_e key, void *user_data) -{ - int size; - - if (system_settings_get_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, &size) != SYSTEM_SETTINGS_ERROR_NONE) { - return; - } - - size = convert_font_size(size); - - if (size == s_info.font_size) { - DbgPrint("Font size is not changed\n"); - return; - } - - s_info.font_size = size; - DbgPrint("Font size is changed to %d, but don't update the font info\n", size); -} - -PUBLIC int script_init(double scale, int premultiplied) -{ - int ret; - char *argv[] = { - "widget.edje", - NULL, - }; - - s_info.premultiplied = premultiplied; - - /* ecore is already initialized */ - elm_init(1, argv); - elm_config_scale_set(scale); - DbgPrint("Scale is updated: %lf\n", scale); - - ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, access_cb, NULL); - if (ret < 0) { - DbgPrint("TTS changed: %d\n", ret); - } - - ret = vconf_notify_key_changed("db/setting/accessibility/font_name", font_changed_cb, NULL); - DbgPrint("System font is changed: %d\n", ret); - - ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_FONT_SIZE, font_size_cb, NULL); - DbgPrint("System font size is changed: %d\n", ret); - - access_cb(NULL, NULL); - font_changed_cb(NULL, NULL); - font_size_cb(SYSTEM_SETTINGS_KEY_FONT_SIZE, NULL); - - s_info.alloc_canvas_with_stride = dlsym(RTLD_DEFAULT, "ecore_evas_buffer_allocfunc_with_stride_new"); - if (!s_info.alloc_canvas_with_stride) { - DbgPrint("Fallback to allocfunc_new\n"); - } - - s_info.alloc_canvas = dlsym(RTLD_DEFAULT, "ecore_evas_buffer_allocfunc_new"); - if (!s_info.alloc_canvas) { - ErrPrint("No way to allocate canvas\n"); - } - - return WIDGET_ERROR_NONE; -} - -PUBLIC int script_fini(void) -{ - int ret; - Eina_List *l; - Eina_List *n; - struct info *handle; - - EINA_LIST_FOREACH_SAFE(s_info.handle_list, l, n, handle) { - script_destroy(handle); - } - - ret = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_FONT_SIZE); - if (ret < 0) { - DbgPrint("Unset font size change event callback: %d\n", ret); - } - - ret = vconf_ignore_key_changed("db/setting/accessibility/font_name", font_changed_cb); - if (ret < 0) { - DbgPrint("Unset font name change event callback: %d\n", ret); - } - - ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, access_cb); - if (ret < 0) { - DbgPrint("Unset tts: %d\n", ret); - } - - elm_shutdown(); - - free(s_info.font_name); - s_info.font_name = NULL; - return WIDGET_ERROR_NONE; -} - -/* End of a file */ -- 2.7.4