From 530fd81afe15e8fabcd261d2e054e780c79c1768 Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Wed, 28 Apr 2021 13:21:41 +0900 Subject: [PATCH] Revert "evas_vg refactoring: efl will use thorvg's SVG loader" This reverts commit 9978d84f5ccc962c63836c3a4788806fc237f1d0. Change-Id: Icf6dad6b3b3f98e6c5e860db8dd6721c9371c55a --- src/lib/evas/canvas/efl_canvas_vg_image.c | 75 +++++------------------------- src/lib/evas/canvas/efl_canvas_vg_image.eo | 17 ------- src/lib/evas/include/evas_private.h | 4 -- src/lib/evas/vg/evas_vg_cache.c | 69 ++------------------------- 4 files changed, 15 insertions(+), 150 deletions(-) diff --git a/src/lib/evas/canvas/efl_canvas_vg_image.c b/src/lib/evas/canvas/efl_canvas_vg_image.c index ab005de..e6c235a 100644 --- a/src/lib/evas/canvas/efl_canvas_vg_image.c +++ b/src/lib/evas/canvas/efl_canvas_vg_image.c @@ -86,12 +86,24 @@ _efl_canvas_vg_image_render_pre_tvg(EINA_UNUSED Evas_Object_Protected_Data *vg_p Tvg_Matrix trans_mat = { 0 }; if (!nd || !nd->data) return; + Efl_Canvas_Vg_Image_Data *pd = nd->data; if (nd->flags != EFL_GFX_CHANGE_FLAG_NONE) { nd->flags = EFL_GFX_CHANGE_FLAG_NONE; + if (!pd->picture && pd->image) + { + pd->picture = tvg_picture_new(); + if (tvg_picture_load_raw(pd->picture, pd->image, pd->w, pd->h, true) != TVG_RESULT_SUCCESS) + { + printf("Error loading image buffer \n"); + return; + } + } + if (!pd->picture) return; + EFL_CANVAS_VG_COMPUTE_MATRIX(cTransform, pTransform, nd); tvg_paint_translate(pd->picture, nd->x, nd->y); if (cTransform) @@ -127,7 +139,6 @@ _efl_canvas_vg_image_efl_object_constructor(Eo *obj, Efl_Canvas_Vg_Image_Data *p nd->render_pre = _efl_canvas_vg_image_render_pre; #else nd->render_pre_tvg = _efl_canvas_vg_image_render_pre_tvg; - pd->picture = tvg_picture_new(); #endif efl_gfx_color_set(obj , 255, 255, 255, 255); @@ -161,15 +172,6 @@ _efl_canvas_vg_image_data_set(Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Image_Data *pd, efl_unref(pd->buffer); pd->buffer= NULL; } -#else - if (pd->image != data || pd->w != size.w || pd->h != size.h) - { - if (!pd->picture || tvg_picture_load_raw(pd->picture, data, size.w, size.h, true) != TVG_RESULT_SUCCESS) - { - printf("Error loading image buffer \n"); - return; - } - } #endif pd->image = data; @@ -177,57 +179,4 @@ _efl_canvas_vg_image_data_set(Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Image_Data *pd, pd->h = size.h; } -// This function is HAVE_THORVG only -static void -_efl_canvas_vg_image_filepath_set(Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Image_Data *pd, const char *path) -{ -#ifdef HAVE_THORVG - if (!pd->picture || tvg_picture_load(pd->picture, path) != TVG_RESULT_SUCCESS) - { - printf("Error loading image from path \'%s\' \n", path); - return; - } -#endif -} - -// This function is HAVE_THORVG only -static Eina_Rect -_efl_canvas_vg_image_viewbox_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Image_Data *pd) -{ -#ifdef HAVE_THORVG - float x, y, w, h; - - if (!pd->picture || tvg_picture_get_viewbox(pd->picture, &x, &y, &w, &h) != TVG_RESULT_SUCCESS) - return EINA_RECT(0, 0, 0, 0); - - return EINA_RECT(x, y, w, h); -#endif -} - -// This function is HAVE_THORVG only -// Duplication is used on _root_update() for static_viewbox image -EOLIAN static Efl_Canvas_Vg_Node * -_efl_canvas_vg_image_efl_duplicate_duplicate(const Eo *obj, Efl_Canvas_Vg_Image_Data *pd) -{ -#ifdef HAVE_THORVG - Efl_Canvas_Vg_Node *node = NULL; - Efl_Canvas_Vg_Image_Data *sd = NULL; - - node = efl_duplicate(efl_super(obj, MY_CLASS)); - sd = efl_data_scope_get(node, MY_CLASS); - - if (pd->picture) - { - if (sd->picture) tvg_paint_del(sd->picture); - sd->picture = tvg_paint_duplicate(pd->picture); - } - - sd->image = pd->image; // note: no memcpy here - sd->w = pd->w; - sd->h = pd->h; - - return node; -#endif -} - #include "efl_canvas_vg_image.eo.c" diff --git a/src/lib/evas/canvas/efl_canvas_vg_image.eo b/src/lib/evas/canvas/efl_canvas_vg_image.eo index c9f43ba..05ea4b9 100644 --- a/src/lib/evas/canvas/efl_canvas_vg_image.eo +++ b/src/lib/evas/canvas/efl_canvas_vg_image.eo @@ -11,25 +11,8 @@ class @beta Efl.Canvas.Vg.Image extends Efl.Canvas.Vg.Node implements Efl.Gfx.Im size: Eina.Size2D; [[The size in pixels.]] } } - @property filepath { - [[Set path for file to be loaded]] - set { - } - values { - path: string; [[Path for image to be loaded]] - } - } - @property viewbox { - [[Get viewbox for loaded]] - get { - } - values { - r: Eina.Rect; [[The function returns viewbox coordinates and size for given paint: x y w h]] - } - } } implements { - Efl.Duplicate.duplicate; Efl.Object.constructor; Efl.Object.destructor; } diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h index 6be9956..ed4cbfa 100755 --- a/src/lib/evas/include/evas_private.h +++ b/src/lib/evas/include/evas_private.h @@ -1160,10 +1160,6 @@ struct _Vg_File_Data Eina_Bool preserve_aspect : 1; //Used in SVG Eina_Bool shareable: 1; - -#ifdef HAVE_THORVG - Eina_Bool thorvg_loader: 1; -#endif }; struct _Evas_Vg_Load_Func diff --git a/src/lib/evas/vg/evas_vg_cache.c b/src/lib/evas/vg/evas_vg_cache.c index cff1f5a..8ec385b 100644 --- a/src/lib/evas/vg/evas_vg_cache.c +++ b/src/lib/evas/vg/evas_vg_cache.c @@ -45,44 +45,6 @@ static const struct ext_saver_s savers[] = MATCHING(".svg", "svg") }; -#ifdef HAVE_THORVG -struct ext_loader_thorvg_s -{ - unsigned int length; - const char *extension; -}; - -#define EXTENSION(Ext) { sizeof(Ext)-1, Ext } - -static const struct ext_loader_thorvg_s thorvg_extensions[] = -{ - EXTENSION(".svg") -}; - -static Eina_Bool -_thorvg_loader_applicable(const char *file) -{ - if (!file) return EINA_FALSE; - - const int len = strlen(file); - const char *end = file + len; - unsigned int i; - int len2; - - for (i = 0; i < (sizeof (thorvg_extensions) / sizeof(struct ext_loader_thorvg_s)); i++) - { - len2 = thorvg_extensions[i].length; - if (len2 > len) continue; - if (!strcasecmp(end - len2, thorvg_extensions[i].extension)) - { - return EINA_TRUE; - } - } - return EINA_FALSE; -} -#endif - - static Evas_Module * _find_loader_module(const char *file) { @@ -117,30 +79,6 @@ _vg_load_from_file(const Eina_File *file, const char *key) unsigned int i; const char *file_name = eina_file_filename_get(file); - -#ifdef HAVE_THORVG - if (_thorvg_loader_applicable(file_name)) - { - vfd = calloc(1, sizeof(Vg_File_Data)); - EINA_SAFETY_ON_NULL_RETURN_VAL(vfd, NULL); - - Efl_Canvas_Vg_Image *image = efl_add_ref(EFL_CANVAS_VG_IMAGE_CLASS, NULL); - efl_canvas_vg_image_filepath_set(image, file_name); - vfd->root = image; - - Eina_Rect r = efl_canvas_vg_image_viewbox_get(image); - vfd->view_box.x = r.x; - vfd->view_box.y = r.y; - vfd->view_box.w = r.w; - vfd->view_box.h = r.h; - - vfd->preserve_aspect = EINA_TRUE; - vfd->static_viewbox = EINA_TRUE; - vfd->thorvg_loader = EINA_TRUE; - return vfd; - } -#endif - em = _find_loader_module(file_name); if (em) { @@ -201,7 +139,7 @@ static void _evas_cache_vg_data_free_cb(void *data) { Vg_File_Data *vfd = data; - if (vfd->loader) vfd->loader->file_close(vfd); + vfd->loader->file_close(vfd); } static void @@ -228,8 +166,7 @@ _evas_cache_vg_entry_free_cb(void *data) } else { - if (vg_entry->vfd->loader) - vg_entry->vfd->loader->file_close(vg_entry->vfd); + vg_entry->vfd->loader->file_close(vg_entry->vfd); } } } @@ -604,7 +541,7 @@ evas_cache_vg_tree_get(Vg_Cache_Entry *vg_entry, unsigned int frame_num) if (vfd->anim_data) vfd->anim_data->frame_num = frame_num; - if (vfd->loader && !vfd->loader->file_data(vfd)) return NULL; + if (!vfd->loader->file_data(vfd)) return NULL; _root_update(vg_entry); -- 2.7.4