summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVitalii Vorobiov <vi.vorobiov@samsung.com>2017-01-27 13:54:47 +0200
committerJean-Philippe Andre <jp.andre@samsung.com>2017-11-07 11:54:09 +0900
commit7d9c1256a30bdbe3680c14da77d5fadf3382b6ef (patch)
treeaae39980a119e1f21d0210d5dbea9ab8206f623f
parent3f75c92ca9e559204c20228444810e8d482986d0 (diff)
downloadefl-7d9c1256a30bdbe3680c14da77d5fadf3382b6ef.tar.gz
vg_savers/svg: empty (for now) module that will save svg in original file
Just as a starter to make a working background that, later on, will go through Svg_Node's and build a certain source code to be saved in SVG picture as a file
-rw-r--r--src/Makefile_Evas.am25
-rw-r--r--src/lib/evas/file/evas_module.c4
-rw-r--r--src/lib/evas/vg/evas_vg_cache.c3
-rw-r--r--src/modules/evas/vg_savers/svg/evas_vg_save_svg.c72
4 files changed, 102 insertions, 2 deletions
diff --git a/src/Makefile_Evas.am b/src/Makefile_Evas.am
index d80e1c2015..e5c3dba46b 100644
--- a/src/Makefile_Evas.am
+++ b/src/Makefile_Evas.am
@@ -1607,7 +1607,7 @@ endif
if BUILD_VG_LOADER_SVG
if EVAS_STATIC_BUILD_VG_SVG
-lib_evas_libevas_la_SOURCES += modules/evas/vg_loaders/svg/evas_vg_load_svg.c \
+lib_evas_libevas_la_SOURCES += modules/evas/vg_loaders/svg/evas_vg_load_svg.c modules/evas/vg_savers/svg/evas_vg_save_svg.c \
static_libs/vg_common/vg_common.c \
static_libs/vg_common/vg_common.h
lib_evas_libevas_la_CPPFLAGS += -I$(top_srcdir)/src/static_libs/vg_common \
@@ -1636,6 +1636,29 @@ modules_evas_vg_loaders_svg_module_la_LIBADD = \
modules_evas_vg_loaders_svg_module_la_DEPENDENCIES = @USE_EVAS_INTERNAL_LIBS@
modules_evas_vg_loaders_svg_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@
modules_evas_vg_loaders_svg_module_la_LIBTOOLFLAGS = --tag=disable-static
+
+vgsaversvgpkgdir = $(libdir)/evas/modules/vg_savers/svg/$(MODULE_ARCH)
+vgsaversvgpkg_LTLIBRARIES = modules/evas/vg_savers/svg/module.la
+
+# Workaround for broken parallel install support in automake (relink issue)
+# http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7328
+install_vgsaversvgpkgLTLIBRARIES = install-vgloadersvgpkgLTLIBRARIES
+$(install_vgsaversvgpkgLTLIBRARIES): install-libLTLIBRARIES
+
+modules_evas_vg_savers_svg_module_la_SOURCES = modules/evas/vg_savers/svg/evas_vg_save_svg.c \
+static_libs/vg_common/vg_common.c \
+static_libs/vg_common/vg_common.h
+modules_evas_vg_savers_svg_module_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl \
+-I$(top_srcdir)/src/lib/evas/include \
+-I$(top_srcdir)/src/static_libs/vg_common \
+@EVAS_CFLAGS@ \
+@evas_vg_saver_svg_cflags@
+modules_evas_vg_savers_svg_module_la_LIBADD = \
+@USE_EVAS_LIBS@ \
+@evas_vg_saver_svg_libs@
+modules_evas_vg_savers_svg_module_la_DEPENDENCIES = @USE_EVAS_INTERNAL_LIBS@
+modules_evas_vg_savers_svg_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@
+modules_evas_vg_savers_svg_module_la_LIBTOOLFLAGS = --tag=disable-static
endif
endif
diff --git a/src/lib/evas/file/evas_module.c b/src/lib/evas/file/evas_module.c
index 151b5b9a13..bdcd5e8500 100644
--- a/src/lib/evas/file/evas_module.c
+++ b/src/lib/evas/file/evas_module.c
@@ -207,6 +207,7 @@ EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, tgv);
#if !EVAS_MODULE_NO_VG_SAVERS
EVAS_EINA_STATIC_MODULE_DEFINE(vg_saver, eet);
+EVAS_EINA_STATIC_MODULE_DEFINE(vg_saver, svg);
#endif
#if !EVAS_MODULE_NO_IMAGE_SAVERS
@@ -319,6 +320,9 @@ static const struct {
#ifdef EVAS_STATIC_BUILD_VG_EET
EVAS_EINA_STATIC_MODULE_USE(vg_saver, eet),
#endif
+#ifdef EVAS_STATIC_BUILD_VG_SVG
+ EVAS_EINA_STATIC_MODULE_USE(vg_saver, svg),
+#endif
#endif
#if !EVAS_MODULE_NO_IMAGE_SAVERS
#ifdef EVAS_STATIC_BUILD_EET
diff --git a/src/lib/evas/vg/evas_vg_cache.c b/src/lib/evas/vg/evas_vg_cache.c
index 57f3cefc56..f3e8f77289 100644
--- a/src/lib/evas/vg/evas_vg_cache.c
+++ b/src/lib/evas/vg/evas_vg_cache.c
@@ -102,7 +102,8 @@ struct ext_saver_s
static const struct ext_saver_s savers[] =
{ /* map extensions to savers to use for good first-guess tries */
MATCHING(".eet", "eet"),
- MATCHING(".edj", "eet")
+ MATCHING(".edj", "eet"),
+ MATCHING(".svg", "svg")
};
static Evas_Module *
diff --git a/src/modules/evas/vg_savers/svg/evas_vg_save_svg.c b/src/modules/evas/vg_savers/svg/evas_vg_save_svg.c
new file mode 100644
index 0000000000..8c11fb3d69
--- /dev/null
+++ b/src/modules/evas/vg_savers/svg/evas_vg_save_svg.c
@@ -0,0 +1,72 @@
+#include "vg_common.h"
+
+static int _evas_vg_saver_svg_log_dom = -1;
+
+#ifdef ERR
+# undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_evas_vg_saver_eet_log_dom, __VA_ARGS__)
+
+#ifdef INF
+# undef INF
+#endif
+#define INF(...) EINA_LOG_DOM_INFO(_evas_vg_saver_eet_log_dom, __VA_ARGS__)
+
+int
+evas_vg_save_file_svg(Vg_File_Data *evg_data, const char *file, const char *key EINA_UNUSED, int compress EINA_UNUSED)
+{
+ Svg_Node *root EINA_UNUSED;
+ Eet_File *ef;
+
+ ef = eet_open(file, EET_FILE_MODE_WRITE);
+ if (!ef)
+ return EVAS_LOAD_ERROR_GENERIC;
+
+ root = vg_common_create_svg_node(evg_data);
+ //TODO: parse root into SVG source code and save into file as text file
+ eet_close(ef);
+
+ return EVAS_LOAD_ERROR_NONE;
+}
+
+static Evas_Vg_Save_Func evas_vg_save_svg_func =
+{
+ evas_vg_save_file_svg
+};
+
+static int
+module_open(Evas_Module *em)
+{
+ if (!em) return 0;
+ em->functions = (void *)(&evas_vg_save_svg_func);
+ _evas_vg_saver_svg_log_dom = eina_log_domain_register
+ ("vg-save-svg", EVAS_DEFAULT_LOG_COLOR);
+ if (_evas_vg_saver_svg_log_dom < 0)
+ {
+ EINA_LOG_ERR("Can not create a module log domain.");
+ return 0;
+ }
+ return 1;
+}
+
+static void
+module_close(Evas_Module *em EINA_UNUSED)
+{
+}
+
+static Evas_Module_Api evas_modapi =
+{
+ EVAS_MODULE_API_VERSION,
+ "svg",
+ "none",
+ {
+ module_open,
+ module_close
+ }
+};
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_VG_SAVER, vg_saver, svg);
+
+#ifndef EVAS_STATIC_BUILD_VG_SVG
+EVAS_EINA_MODULE_DEFINE(vg_saver, svg);
+#endif