aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/evas/src/modules/engines/software_generic
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/evas/src/modules/engines/software_generic')
-rw-r--r--libraries/evas/src/modules/engines/software_generic/Makefile.am35
-rw-r--r--libraries/evas/src/modules/engines/software_generic/Makefile.in763
-rw-r--r--libraries/evas/src/modules/engines/software_generic/evas_engine.c1230
3 files changed, 2028 insertions, 0 deletions
diff --git a/libraries/evas/src/modules/engines/software_generic/Makefile.am b/libraries/evas/src/modules/engines/software_generic/Makefile.am
new file mode 100644
index 0000000..d7986f1
--- /dev/null
+++ b/libraries/evas/src/modules/engines/software_generic/Makefile.am
@@ -0,0 +1,35 @@
1
2MAINTAINERCLEANFILES = Makefile.in
3
4AM_CPPFLAGS = \
5-I. \
6-I$(top_srcdir)/src/lib \
7-I$(top_srcdir)/src/lib/include \
8-I$(top_srcdir)/src/modules/engines \
9@EINA_CFLAGS@ \
10@FREETYPE_CFLAGS@ \
11@PIXMAN_CFLAGS@
12
13AM_CFLAGS = @WIN32_CFLAGS@
14
15SOFTWARE_GENERIC_SOURCES = evas_engine.c
16
17
18if !EVAS_STATIC_BUILD_SOFTWARE_GENERIC
19
20pkgdir = $(libdir)/evas/modules/engines/software_generic/$(MODULE_ARCH)
21pkg_LTLIBRARIES = module.la
22
23module_la_SOURCES = $(SOFTWARE_GENERIC_SOURCES)
24
25module_la_LIBADD = @EINA_LIBS@ $(top_builddir)/src/lib/libevas.la
26module_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
27module_la_LIBTOOLFLAGS = --tag=disable-static
28
29else
30
31noinst_LTLIBRARIES = libevas_engine_software_generic.la
32
33libevas_engine_software_generic_la_SOURCES = $(SOFTWARE_GENERIC_SOURCES)
34
35endif
diff --git a/libraries/evas/src/modules/engines/software_generic/Makefile.in b/libraries/evas/src/modules/engines/software_generic/Makefile.in
new file mode 100644
index 0000000..6d75f23
--- /dev/null
+++ b/libraries/evas/src/modules/engines/software_generic/Makefile.in
@@ -0,0 +1,763 @@
1# Makefile.in generated by automake 1.11.1 from Makefile.am.
2# @configure_input@
3
4# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
5# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
6# Inc.
7# This Makefile.in is free software; the Free Software Foundation
8# gives unlimited permission to copy and/or distribute it,
9# with or without modifications, as long as this notice is preserved.
10
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
13# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
14# PARTICULAR PURPOSE.
15
16@SET_MAKE@
17
18VPATH = @srcdir@
19pkgdatadir = $(datadir)/@PACKAGE@
20pkgincludedir = $(includedir)/@PACKAGE@
21pkglibdir = $(libdir)/@PACKAGE@
22pkglibexecdir = $(libexecdir)/@PACKAGE@
23am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
24install_sh_DATA = $(install_sh) -c -m 644
25install_sh_PROGRAM = $(install_sh) -c
26install_sh_SCRIPT = $(install_sh) -c
27INSTALL_HEADER = $(INSTALL_DATA)
28transform = $(program_transform_name)
29NORMAL_INSTALL = :
30PRE_INSTALL = :
31POST_INSTALL = :
32NORMAL_UNINSTALL = :
33PRE_UNINSTALL = :
34POST_UNINSTALL = :
35build_triplet = @build@
36host_triplet = @host@
37subdir = src/modules/engines/software_generic
38DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
39ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
40am__aclocal_m4_deps = $(top_srcdir)/m4/efl_attribute.m4 \
41 $(top_srcdir)/m4/efl_coverage.m4 \
42 $(top_srcdir)/m4/efl_doxygen.m4 \
43 $(top_srcdir)/m4/efl_fnmatch.m4 \
44 $(top_srcdir)/m4/efl_path_max.m4 $(top_srcdir)/m4/efl_tests.m4 \
45 $(top_srcdir)/m4/evas_check_engine.m4 \
46 $(top_srcdir)/m4/evas_check_loader.m4 \
47 $(top_srcdir)/m4/evas_converter.m4 \
48 $(top_srcdir)/m4/evas_dither.m4 \
49 $(top_srcdir)/m4/evas_scaler.m4 $(top_srcdir)/m4/libtool.m4 \
50 $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
51 $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
52 $(top_srcdir)/configure.ac
53am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
54 $(ACLOCAL_M4)
55mkinstalldirs = $(install_sh) -d
56CONFIG_HEADER = $(top_builddir)/config.h
57CONFIG_CLEAN_FILES =
58CONFIG_CLEAN_VPATH_FILES =
59am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
60am__vpath_adj = case $$p in \
61 $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
62 *) f=$$p;; \
63 esac;
64am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
65am__install_max = 40
66am__nobase_strip_setup = \
67 srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
68am__nobase_strip = \
69 for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
70am__nobase_list = $(am__nobase_strip_setup); \
71 for p in $$list; do echo "$$p $$p"; done | \
72 sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
73 $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
74 if (++n[$$2] == $(am__install_max)) \
75 { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
76 END { for (dir in files) print dir, files[dir] }'
77am__base_list = \
78 sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
79 sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
80am__installdirs = "$(DESTDIR)$(pkgdir)"
81LTLIBRARIES = $(noinst_LTLIBRARIES) $(pkg_LTLIBRARIES)
82libevas_engine_software_generic_la_LIBADD =
83am__libevas_engine_software_generic_la_SOURCES_DIST = evas_engine.c
84am__objects_1 = evas_engine.lo
85@EVAS_STATIC_BUILD_SOFTWARE_GENERIC_TRUE@am_libevas_engine_software_generic_la_OBJECTS = \
86@EVAS_STATIC_BUILD_SOFTWARE_GENERIC_TRUE@ $(am__objects_1)
87libevas_engine_software_generic_la_OBJECTS = \
88 $(am_libevas_engine_software_generic_la_OBJECTS)
89AM_V_lt = $(am__v_lt_$(V))
90am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
91am__v_lt_0 = --silent
92@EVAS_STATIC_BUILD_SOFTWARE_GENERIC_TRUE@am_libevas_engine_software_generic_la_rpath =
93@EVAS_STATIC_BUILD_SOFTWARE_GENERIC_FALSE@module_la_DEPENDENCIES = $(top_builddir)/src/lib/libevas.la
94am__module_la_SOURCES_DIST = evas_engine.c
95am__objects_2 = module_la-evas_engine.lo
96@EVAS_STATIC_BUILD_SOFTWARE_GENERIC_FALSE@am_module_la_OBJECTS = \
97@EVAS_STATIC_BUILD_SOFTWARE_GENERIC_FALSE@ $(am__objects_2)
98module_la_OBJECTS = $(am_module_la_OBJECTS)
99module_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
100 $(module_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
101 $(AM_CFLAGS) $(CFLAGS) $(module_la_LDFLAGS) $(LDFLAGS) -o $@
102@EVAS_STATIC_BUILD_SOFTWARE_GENERIC_FALSE@am_module_la_rpath = -rpath \
103@EVAS_STATIC_BUILD_SOFTWARE_GENERIC_FALSE@ $(pkgdir)
104DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
105depcomp = $(SHELL) $(top_srcdir)/depcomp
106am__depfiles_maybe = depfiles
107am__mv = mv -f
108COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
109 $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
110LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
111 $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
112 $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
113 $(AM_CFLAGS) $(CFLAGS)
114AM_V_CC = $(am__v_CC_$(V))
115am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
116am__v_CC_0 = @echo " CC " $@;
117AM_V_at = $(am__v_at_$(V))
118am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
119am__v_at_0 = @
120CCLD = $(CC)
121LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
122 $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
123 $(AM_LDFLAGS) $(LDFLAGS) -o $@
124AM_V_CCLD = $(am__v_CCLD_$(V))
125am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
126am__v_CCLD_0 = @echo " CCLD " $@;
127AM_V_GEN = $(am__v_GEN_$(V))
128am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
129am__v_GEN_0 = @echo " GEN " $@;
130SOURCES = $(libevas_engine_software_generic_la_SOURCES) \
131 $(module_la_SOURCES)
132DIST_SOURCES = $(am__libevas_engine_software_generic_la_SOURCES_DIST) \
133 $(am__module_la_SOURCES_DIST)
134ETAGS = etags
135CTAGS = ctags
136DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
137ACLOCAL = @ACLOCAL@
138ALLOCA = @ALLOCA@
139AMTAR = @AMTAR@
140AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
141AR = @AR@
142AS = @AS@
143AUTOCONF = @AUTOCONF@
144AUTOHEADER = @AUTOHEADER@
145AUTOMAKE = @AUTOMAKE@
146AWK = @AWK@
147CC = @CC@
148CCDEPMODE = @CCDEPMODE@
149CFLAGS = @CFLAGS@
150CHECK_CFLAGS = @CHECK_CFLAGS@
151CHECK_LIBS = @CHECK_LIBS@
152CPP = @CPP@
153CPPFLAGS = @CPPFLAGS@
154CXX = @CXX@
155CXXCPP = @CXXCPP@
156CXXDEPMODE = @CXXDEPMODE@
157CXXFLAGS = @CXXFLAGS@
158CYGPATH_W = @CYGPATH_W@
159DEFS = @DEFS@
160DEPDIR = @DEPDIR@
161DIRECTFB_CFLAGS = @DIRECTFB_CFLAGS@
162DIRECTFB_LIBS = @DIRECTFB_LIBS@
163DLLTOOL = @DLLTOOL@
164DSYMUTIL = @DSYMUTIL@
165DUMPBIN = @DUMPBIN@
166ECHO_C = @ECHO_C@
167ECHO_N = @ECHO_N@
168ECHO_T = @ECHO_T@
169ECORE_EVAS_CFLAGS = @ECORE_EVAS_CFLAGS@
170ECORE_EVAS_LIBS = @ECORE_EVAS_LIBS@
171EDB_CFLAGS = @EDB_CFLAGS@
172EDB_LIBS = @EDB_LIBS@
173EDJE_CFLAGS = @EDJE_CFLAGS@
174EDJE_LIBS = @EDJE_LIBS@
175EET_CFLAGS = @EET_CFLAGS@
176EET_LIBS = @EET_LIBS@
177EFL_COVERAGE_CFLAGS = @EFL_COVERAGE_CFLAGS@
178EFL_COVERAGE_LIBS = @EFL_COVERAGE_LIBS@
179EFL_FNMATCH_LIBS = @EFL_FNMATCH_LIBS@
180EGREP = @EGREP@
181EINA_CFLAGS = @EINA_CFLAGS@
182EINA_LIBS = @EINA_LIBS@
183EVAS_CFLAGS = @EVAS_CFLAGS@
184EVAS_LIBS = @EVAS_LIBS@
185EVAS_SSE3_CFLAGS = @EVAS_SSE3_CFLAGS@
186EVIL_CFLAGS = @EVIL_CFLAGS@
187EVIL_LIBS = @EVIL_LIBS@
188EXEEXT = @EXEEXT@
189FGREP = @FGREP@
190FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
191FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
192FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
193FREETYPE_LIBS = @FREETYPE_LIBS@
194FRIBIDI_CFLAGS = @FRIBIDI_CFLAGS@
195FRIBIDI_LIBS = @FRIBIDI_LIBS@
196GL_EET_CFLAGS = @GL_EET_CFLAGS@
197GL_EET_LIBS = @GL_EET_LIBS@
198GREP = @GREP@
199HARFBUZZ_CFLAGS = @HARFBUZZ_CFLAGS@
200HARFBUZZ_LIBS = @HARFBUZZ_LIBS@
201INSTALL = @INSTALL@
202INSTALL_DATA = @INSTALL_DATA@
203INSTALL_PROGRAM = @INSTALL_PROGRAM@
204INSTALL_SCRIPT = @INSTALL_SCRIPT@
205INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
206LD = @LD@
207LDFLAGS = @LDFLAGS@
208LIBOBJS = @LIBOBJS@
209LIBS = @LIBS@
210LIBTOOL = @LIBTOOL@
211LINEBREAK_CFLAGS = @LINEBREAK_CFLAGS@
212LINEBREAK_LIBS = @LINEBREAK_LIBS@
213LIPO = @LIPO@
214LN_S = @LN_S@
215LTLIBOBJS = @LTLIBOBJS@
216MAKEINFO = @MAKEINFO@
217MKDIR_P = @MKDIR_P@
218MODULE_ARCH = @MODULE_ARCH@
219NM = @NM@
220NMEDIT = @NMEDIT@
221OBJC = @OBJC@
222OBJCDEPMODE = @OBJCDEPMODE@
223OBJCFLAGS = @OBJCFLAGS@
224OBJDUMP = @OBJDUMP@
225OBJEXT = @OBJEXT@
226OTOOL = @OTOOL@
227OTOOL64 = @OTOOL64@
228PACKAGE = @PACKAGE@
229PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
230PACKAGE_NAME = @PACKAGE_NAME@
231PACKAGE_STRING = @PACKAGE_STRING@
232PACKAGE_TARNAME = @PACKAGE_TARNAME@
233PACKAGE_URL = @PACKAGE_URL@
234PACKAGE_VERSION = @PACKAGE_VERSION@
235PATH_SEPARATOR = @PATH_SEPARATOR@
236PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
237PIXMAN_LIBS = @PIXMAN_LIBS@
238PKG_CONFIG = @PKG_CONFIG@
239PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
240PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
241PNG_CFLAGS = @PNG_CFLAGS@
242PNG_LIBS = @PNG_LIBS@
243RANLIB = @RANLIB@
244SDL_CFLAGS = @SDL_CFLAGS@
245SDL_LIBS = @SDL_LIBS@
246SED = @SED@
247SET_MAKE = @SET_MAKE@
248SHELL = @SHELL@
249SHM_OPEN_LINK = @SHM_OPEN_LINK@
250STRIP = @STRIP@
251SVG_CFLAGS = @SVG_CFLAGS@
252SVG_LIBS = @SVG_LIBS@
253VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
254VALGRIND_LIBS = @VALGRIND_LIBS@
255VERSION = @VERSION@
256VMAJ = @VMAJ@
257WIN32_CFLAGS = @WIN32_CFLAGS@
258WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
259XCB_CFLAGS = @XCB_CFLAGS@
260XCB_GL_CFLAGS = @XCB_GL_CFLAGS@
261XCB_GL_LIBS = @XCB_GL_LIBS@
262XCB_LIBS = @XCB_LIBS@
263XEXT_CFLAGS = @XEXT_CFLAGS@
264XEXT_LIBS = @XEXT_LIBS@
265XMKMF = @XMKMF@
266X_CFLAGS = @X_CFLAGS@
267X_EXTRA_LIBS = @X_EXTRA_LIBS@
268X_LIBS = @X_LIBS@
269X_PRE_LIBS = @X_PRE_LIBS@
270abs_builddir = @abs_builddir@
271abs_srcdir = @abs_srcdir@
272abs_top_builddir = @abs_top_builddir@
273abs_top_srcdir = @abs_top_srcdir@
274ac_ct_CC = @ac_ct_CC@
275ac_ct_CXX = @ac_ct_CXX@
276ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
277ac_ct_OBJC = @ac_ct_OBJC@
278altivec_cflags = @altivec_cflags@
279am__include = @am__include@
280am__leading_dot = @am__leading_dot@
281am__quote = @am__quote@
282am__tar = @am__tar@
283am__untar = @am__untar@
284bindir = @bindir@
285build = @build@
286build_alias = @build_alias@
287build_cpu = @build_cpu@
288build_os = @build_os@
289build_vendor = @build_vendor@
290builddir = @builddir@
291datadir = @datadir@
292datarootdir = @datarootdir@
293dlopen_libs = @dlopen_libs@
294docdir = @docdir@
295dvidir = @dvidir@
296edje_cc = @edje_cc@
297efl_doxygen = @efl_doxygen@
298efl_have_doxygen = @efl_have_doxygen@
299evas_engine_buffer_cflags = @evas_engine_buffer_cflags@
300evas_engine_buffer_libs = @evas_engine_buffer_libs@
301evas_engine_direct3d_cflags = @evas_engine_direct3d_cflags@
302evas_engine_direct3d_libs = @evas_engine_direct3d_libs@
303evas_engine_directfb_cflags = @evas_engine_directfb_cflags@
304evas_engine_directfb_libs = @evas_engine_directfb_libs@
305evas_engine_fb_cflags = @evas_engine_fb_cflags@
306evas_engine_fb_libs = @evas_engine_fb_libs@
307evas_engine_gl_cocoa_cflags = @evas_engine_gl_cocoa_cflags@
308evas_engine_gl_cocoa_libs = @evas_engine_gl_cocoa_libs@
309evas_engine_gl_common_libs = @evas_engine_gl_common_libs@
310evas_engine_gl_sdl_cflags = @evas_engine_gl_sdl_cflags@
311evas_engine_gl_sdl_libs = @evas_engine_gl_sdl_libs@
312evas_engine_gl_xcb_cflags = @evas_engine_gl_xcb_cflags@
313evas_engine_gl_xcb_libs = @evas_engine_gl_xcb_libs@
314evas_engine_gl_xlib_cflags = @evas_engine_gl_xlib_cflags@
315evas_engine_gl_xlib_libs = @evas_engine_gl_xlib_libs@
316evas_engine_psl1ght_cflags = @evas_engine_psl1ght_cflags@
317evas_engine_psl1ght_libs = @evas_engine_psl1ght_libs@
318evas_engine_software_16_ddraw_cflags = @evas_engine_software_16_ddraw_cflags@
319evas_engine_software_16_ddraw_libs = @evas_engine_software_16_ddraw_libs@
320evas_engine_software_16_sdl_cflags = @evas_engine_software_16_sdl_cflags@
321evas_engine_software_16_sdl_libs = @evas_engine_software_16_sdl_libs@
322evas_engine_software_16_wince_cflags = @evas_engine_software_16_wince_cflags@
323evas_engine_software_16_wince_libs = @evas_engine_software_16_wince_libs@
324evas_engine_software_16_x11_cflags = @evas_engine_software_16_x11_cflags@
325evas_engine_software_16_x11_libs = @evas_engine_software_16_x11_libs@
326evas_engine_software_8_x11_cflags = @evas_engine_software_8_x11_cflags@
327evas_engine_software_8_x11_libs = @evas_engine_software_8_x11_libs@
328evas_engine_software_ddraw_cflags = @evas_engine_software_ddraw_cflags@
329evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@
330evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@
331evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@
332evas_engine_software_sdl_cflags = @evas_engine_software_sdl_cflags@
333evas_engine_software_sdl_libs = @evas_engine_software_sdl_libs@
334evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
335evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
336evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
337evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@
338evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@
339evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@
340evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@
341evas_image_loader_edb_libs = @evas_image_loader_edb_libs@
342evas_image_loader_eet_cflags = @evas_image_loader_eet_cflags@
343evas_image_loader_eet_libs = @evas_image_loader_eet_libs@
344evas_image_loader_generic_cflags = @evas_image_loader_generic_cflags@
345evas_image_loader_generic_libs = @evas_image_loader_generic_libs@
346evas_image_loader_gif_cflags = @evas_image_loader_gif_cflags@
347evas_image_loader_gif_libs = @evas_image_loader_gif_libs@
348evas_image_loader_ico_cflags = @evas_image_loader_ico_cflags@
349evas_image_loader_ico_libs = @evas_image_loader_ico_libs@
350evas_image_loader_jpeg_cflags = @evas_image_loader_jpeg_cflags@
351evas_image_loader_jpeg_libs = @evas_image_loader_jpeg_libs@
352evas_image_loader_pmaps_cflags = @evas_image_loader_pmaps_cflags@
353evas_image_loader_pmaps_libs = @evas_image_loader_pmaps_libs@
354evas_image_loader_png_cflags = @evas_image_loader_png_cflags@
355evas_image_loader_png_libs = @evas_image_loader_png_libs@
356evas_image_loader_psd_cflags = @evas_image_loader_psd_cflags@
357evas_image_loader_psd_libs = @evas_image_loader_psd_libs@
358evas_image_loader_svg_cflags = @evas_image_loader_svg_cflags@
359evas_image_loader_svg_libs = @evas_image_loader_svg_libs@
360evas_image_loader_tga_cflags = @evas_image_loader_tga_cflags@
361evas_image_loader_tga_libs = @evas_image_loader_tga_libs@
362evas_image_loader_tiff_cflags = @evas_image_loader_tiff_cflags@
363evas_image_loader_tiff_libs = @evas_image_loader_tiff_libs@
364evas_image_loader_wbmp_cflags = @evas_image_loader_wbmp_cflags@
365evas_image_loader_wbmp_libs = @evas_image_loader_wbmp_libs@
366evas_image_loader_xpm_cflags = @evas_image_loader_xpm_cflags@
367evas_image_loader_xpm_libs = @evas_image_loader_xpm_libs@
368exec_prefix = @exec_prefix@
369have_evas_engine_gl_x11 = @have_evas_engine_gl_x11@
370have_evas_engine_gl_xcb = @have_evas_engine_gl_xcb@
371have_evas_engine_gl_xlib = @have_evas_engine_gl_xlib@
372have_evas_engine_software_x11 = @have_evas_engine_software_x11@
373have_evas_engine_software_xcb = @have_evas_engine_software_xcb@
374have_evas_engine_software_xlib = @have_evas_engine_software_xlib@
375have_lcov = @have_lcov@
376host = @host@
377host_alias = @host_alias@
378host_cpu = @host_cpu@
379host_os = @host_os@
380host_vendor = @host_vendor@
381htmldir = @htmldir@
382includedir = @includedir@
383infodir = @infodir@
384install_sh = @install_sh@
385libdir = @libdir@
386libexecdir = @libexecdir@
387localedir = @localedir@
388localstatedir = @localstatedir@
389lt_ECHO = @lt_ECHO@
390lt_enable_auto_import = @lt_enable_auto_import@
391mandir = @mandir@
392mkdir_p = @mkdir_p@
393oldincludedir = @oldincludedir@
394pdfdir = @pdfdir@
395pkgconfig_requires_private = @pkgconfig_requires_private@
396prefix = @prefix@
397program_transform_name = @program_transform_name@
398psdir = @psdir@
399pthread_cflags = @pthread_cflags@
400pthread_libs = @pthread_libs@
401release_info = @release_info@
402requirement_evas = @requirement_evas@
403sbindir = @sbindir@
404sharedstatedir = @sharedstatedir@
405srcdir = @srcdir@
406sysconfdir = @sysconfdir@
407target_alias = @target_alias@
408top_build_prefix = @top_build_prefix@
409top_builddir = @top_builddir@
410top_srcdir = @top_srcdir@
411version_info = @version_info@
412MAINTAINERCLEANFILES = Makefile.in
413AM_CPPFLAGS = \
414-I. \
415-I$(top_srcdir)/src/lib \
416-I$(top_srcdir)/src/lib/include \
417-I$(top_srcdir)/src/modules/engines \
418@EINA_CFLAGS@ \
419@FREETYPE_CFLAGS@ \
420@PIXMAN_CFLAGS@
421
422AM_CFLAGS = @WIN32_CFLAGS@
423SOFTWARE_GENERIC_SOURCES = evas_engine.c
424@EVAS_STATIC_BUILD_SOFTWARE_GENERIC_FALSE@pkgdir = $(libdir)/evas/modules/engines/software_generic/$(MODULE_ARCH)
425@EVAS_STATIC_BUILD_SOFTWARE_GENERIC_FALSE@pkg_LTLIBRARIES = module.la
426@EVAS_STATIC_BUILD_SOFTWARE_GENERIC_FALSE@module_la_SOURCES = $(SOFTWARE_GENERIC_SOURCES)
427@EVAS_STATIC_BUILD_SOFTWARE_GENERIC_FALSE@module_la_LIBADD = @EINA_LIBS@ $(top_builddir)/src/lib/libevas.la
428@EVAS_STATIC_BUILD_SOFTWARE_GENERIC_FALSE@module_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
429@EVAS_STATIC_BUILD_SOFTWARE_GENERIC_FALSE@module_la_LIBTOOLFLAGS = --tag=disable-static
430@EVAS_STATIC_BUILD_SOFTWARE_GENERIC_TRUE@noinst_LTLIBRARIES = libevas_engine_software_generic.la
431@EVAS_STATIC_BUILD_SOFTWARE_GENERIC_TRUE@libevas_engine_software_generic_la_SOURCES = $(SOFTWARE_GENERIC_SOURCES)
432all: all-am
433
434.SUFFIXES:
435.SUFFIXES: .c .lo .o .obj
436$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
437 @for dep in $?; do \
438 case '$(am__configure_deps)' in \
439 *$$dep*) \
440 ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
441 && { if test -f $@; then exit 0; else break; fi; }; \
442 exit 1;; \
443 esac; \
444 done; \
445 echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/modules/engines/software_generic/Makefile'; \
446 $(am__cd) $(top_srcdir) && \
447 $(AUTOMAKE) --gnu src/modules/engines/software_generic/Makefile
448.PRECIOUS: Makefile
449Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
450 @case '$?' in \
451 *config.status*) \
452 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
453 *) \
454 echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
455 cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
456 esac;
457
458$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
459 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
460
461$(top_srcdir)/configure: $(am__configure_deps)
462 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
463$(ACLOCAL_M4): $(am__aclocal_m4_deps)
464 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
465$(am__aclocal_m4_deps):
466
467clean-noinstLTLIBRARIES:
468 -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
469 @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
470 dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
471 test "$$dir" != "$$p" || dir=.; \
472 echo "rm -f \"$${dir}/so_locations\""; \
473 rm -f "$${dir}/so_locations"; \
474 done
475install-pkgLTLIBRARIES: $(pkg_LTLIBRARIES)
476 @$(NORMAL_INSTALL)
477 test -z "$(pkgdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdir)"
478 @list='$(pkg_LTLIBRARIES)'; test -n "$(pkgdir)" || list=; \
479 list2=; for p in $$list; do \
480 if test -f $$p; then \
481 list2="$$list2 $$p"; \
482 else :; fi; \
483 done; \
484 test -z "$$list2" || { \
485 echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkgdir)'"; \
486 $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkgdir)"; \
487 }
488
489uninstall-pkgLTLIBRARIES:
490 @$(NORMAL_UNINSTALL)
491 @list='$(pkg_LTLIBRARIES)'; test -n "$(pkgdir)" || list=; \
492 for p in $$list; do \
493 $(am__strip_dir) \
494 echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkgdir)/$$f'"; \
495 $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkgdir)/$$f"; \
496 done
497
498clean-pkgLTLIBRARIES:
499 -test -z "$(pkg_LTLIBRARIES)" || rm -f $(pkg_LTLIBRARIES)
500 @list='$(pkg_LTLIBRARIES)'; for p in $$list; do \
501 dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
502 test "$$dir" != "$$p" || dir=.; \
503 echo "rm -f \"$${dir}/so_locations\""; \
504 rm -f "$${dir}/so_locations"; \
505 done
506libevas_engine_software_generic.la: $(libevas_engine_software_generic_la_OBJECTS) $(libevas_engine_software_generic_la_DEPENDENCIES)
507 $(AM_V_CCLD)$(LINK) $(am_libevas_engine_software_generic_la_rpath) $(libevas_engine_software_generic_la_OBJECTS) $(libevas_engine_software_generic_la_LIBADD) $(LIBS)
508module.la: $(module_la_OBJECTS) $(module_la_DEPENDENCIES)
509 $(AM_V_CCLD)$(module_la_LINK) $(am_module_la_rpath) $(module_la_OBJECTS) $(module_la_LIBADD) $(LIBS)
510
511mostlyclean-compile:
512 -rm -f *.$(OBJEXT)
513
514distclean-compile:
515 -rm -f *.tab.c
516
517@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/evas_engine.Plo@am__quote@
518@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/module_la-evas_engine.Plo@am__quote@
519
520.c.o:
521@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
522@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
523@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
524@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
525@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
526@am__fastdepCC_FALSE@ $(COMPILE) -c $<
527
528.c.obj:
529@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
530@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
531@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
532@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
533@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
534@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
535
536.c.lo:
537@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
538@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
539@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
540@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
541@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
542@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
543
544module_la-evas_engine.lo: evas_engine.c
545@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(module_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT module_la-evas_engine.lo -MD -MP -MF $(DEPDIR)/module_la-evas_engine.Tpo -c -o module_la-evas_engine.lo `test -f 'evas_engine.c' || echo '$(srcdir)/'`evas_engine.c
546@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/module_la-evas_engine.Tpo $(DEPDIR)/module_la-evas_engine.Plo
547@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
548@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='evas_engine.c' object='module_la-evas_engine.lo' libtool=yes @AMDEPBACKSLASH@
549@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
550@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(module_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o module_la-evas_engine.lo `test -f 'evas_engine.c' || echo '$(srcdir)/'`evas_engine.c
551
552mostlyclean-libtool:
553 -rm -f *.lo
554
555clean-libtool:
556 -rm -rf .libs _libs
557
558ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
559 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
560 unique=`for i in $$list; do \
561 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
562 done | \
563 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
564 END { if (nonempty) { for (i in files) print i; }; }'`; \
565 mkid -fID $$unique
566tags: TAGS
567
568TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
569 $(TAGS_FILES) $(LISP)
570 set x; \
571 here=`pwd`; \
572 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
573 unique=`for i in $$list; do \
574 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
575 done | \
576 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
577 END { if (nonempty) { for (i in files) print i; }; }'`; \
578 shift; \
579 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
580 test -n "$$unique" || unique=$$empty_fix; \
581 if test $$# -gt 0; then \
582 $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
583 "$$@" $$unique; \
584 else \
585 $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
586 $$unique; \
587 fi; \
588 fi
589ctags: CTAGS
590CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
591 $(TAGS_FILES) $(LISP)
592 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
593 unique=`for i in $$list; do \
594 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
595 done | \
596 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
597 END { if (nonempty) { for (i in files) print i; }; }'`; \
598 test -z "$(CTAGS_ARGS)$$unique" \
599 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
600 $$unique
601
602GTAGS:
603 here=`$(am__cd) $(top_builddir) && pwd` \
604 && $(am__cd) $(top_srcdir) \
605 && gtags -i $(GTAGS_ARGS) "$$here"
606
607distclean-tags:
608 -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
609
610distdir: $(DISTFILES)
611 @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
612 topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
613 list='$(DISTFILES)'; \
614 dist_files=`for file in $$list; do echo $$file; done | \
615 sed -e "s|^$$srcdirstrip/||;t" \
616 -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
617 case $$dist_files in \
618 */*) $(MKDIR_P) `echo "$$dist_files" | \
619 sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
620 sort -u` ;; \
621 esac; \
622 for file in $$dist_files; do \
623 if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
624 if test -d $$d/$$file; then \
625 dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
626 if test -d "$(distdir)/$$file"; then \
627 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
628 fi; \
629 if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
630 cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
631 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
632 fi; \
633 cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
634 else \
635 test -f "$(distdir)/$$file" \
636 || cp -p $$d/$$file "$(distdir)/$$file" \
637 || exit 1; \
638 fi; \
639 done
640check-am: all-am
641check: check-am
642all-am: Makefile $(LTLIBRARIES)
643installdirs:
644 for dir in "$(DESTDIR)$(pkgdir)"; do \
645 test -z "$$dir" || $(MKDIR_P) "$$dir"; \
646 done
647install: install-am
648install-exec: install-exec-am
649install-data: install-data-am
650uninstall: uninstall-am
651
652install-am: all-am
653 @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
654
655installcheck: installcheck-am
656install-strip:
657 $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
658 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
659 `test -z '$(STRIP)' || \
660 echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
661mostlyclean-generic:
662
663clean-generic:
664
665distclean-generic:
666 -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
667 -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
668
669maintainer-clean-generic:
670 @echo "This command is intended for maintainers to use"
671 @echo "it deletes files that may require special tools to rebuild."
672 -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
673clean: clean-am
674
675clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
676 clean-pkgLTLIBRARIES mostlyclean-am
677
678distclean: distclean-am
679 -rm -rf ./$(DEPDIR)
680 -rm -f Makefile
681distclean-am: clean-am distclean-compile distclean-generic \
682 distclean-tags
683
684dvi: dvi-am
685
686dvi-am:
687
688html: html-am
689
690html-am:
691
692info: info-am
693
694info-am:
695
696install-data-am: install-pkgLTLIBRARIES
697
698install-dvi: install-dvi-am
699
700install-dvi-am:
701
702install-exec-am:
703
704install-html: install-html-am
705
706install-html-am:
707
708install-info: install-info-am
709
710install-info-am:
711
712install-man:
713
714install-pdf: install-pdf-am
715
716install-pdf-am:
717
718install-ps: install-ps-am
719
720install-ps-am:
721
722installcheck-am:
723
724maintainer-clean: maintainer-clean-am
725 -rm -rf ./$(DEPDIR)
726 -rm -f Makefile
727maintainer-clean-am: distclean-am maintainer-clean-generic
728
729mostlyclean: mostlyclean-am
730
731mostlyclean-am: mostlyclean-compile mostlyclean-generic \
732 mostlyclean-libtool
733
734pdf: pdf-am
735
736pdf-am:
737
738ps: ps-am
739
740ps-am:
741
742uninstall-am: uninstall-pkgLTLIBRARIES
743
744.MAKE: install-am install-strip
745
746.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
747 clean-libtool clean-noinstLTLIBRARIES clean-pkgLTLIBRARIES \
748 ctags distclean distclean-compile distclean-generic \
749 distclean-libtool distclean-tags distdir dvi dvi-am html \
750 html-am info info-am install install-am install-data \
751 install-data-am install-dvi install-dvi-am install-exec \
752 install-exec-am install-html install-html-am install-info \
753 install-info-am install-man install-pdf install-pdf-am \
754 install-pkgLTLIBRARIES install-ps install-ps-am install-strip \
755 installcheck installcheck-am installdirs maintainer-clean \
756 maintainer-clean-generic mostlyclean mostlyclean-compile \
757 mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
758 tags uninstall uninstall-am uninstall-pkgLTLIBRARIES
759
760
761# Tell versions [3.59,3.63) of GNU make to not export all variables.
762# Otherwise a system limit (for SysV at least) may be exceeded.
763.NOEXPORT:
diff --git a/libraries/evas/src/modules/engines/software_generic/evas_engine.c b/libraries/evas/src/modules/engines/software_generic/evas_engine.c
new file mode 100644
index 0000000..b2c53c5
--- /dev/null
+++ b/libraries/evas/src/modules/engines/software_generic/evas_engine.c
@@ -0,0 +1,1230 @@
1#include "evas_common.h" /* Also includes international specific stuff */
2#include "evas_private.h"
3
4/*
5 *****
6 **
7 ** ENGINE ROUTINES
8 **
9 *****
10 */
11static int cpunum = 0;
12static int _evas_soft_gen_log_dom = -1;
13
14static void
15eng_output_dump(void *data __UNUSED__)
16{
17 evas_common_image_image_all_unload();
18 evas_common_font_font_all_unload();
19}
20
21static void *
22eng_context_new(void *data __UNUSED__)
23{
24 return evas_common_draw_context_new();
25}
26
27static void
28eng_context_free(void *data __UNUSED__, void *context)
29{
30 evas_common_draw_context_free(context);
31}
32
33static void
34eng_context_clip_set(void *data __UNUSED__, void *context, int x, int y, int w, int h)
35{
36 evas_common_draw_context_set_clip(context, x, y, w, h);
37}
38
39static void
40eng_context_clip_clip(void *data __UNUSED__, void *context, int x, int y, int w, int h)
41{
42 evas_common_draw_context_clip_clip(context, x, y, w, h);
43}
44
45static void
46eng_context_clip_unset(void *data __UNUSED__, void *context)
47{
48 evas_common_draw_context_unset_clip(context);
49}
50
51static int
52eng_context_clip_get(void *data __UNUSED__, void *context, int *x, int *y, int *w, int *h)
53{
54 *x = ((RGBA_Draw_Context *)context)->clip.x;
55 *y = ((RGBA_Draw_Context *)context)->clip.y;
56 *w = ((RGBA_Draw_Context *)context)->clip.w;
57 *h = ((RGBA_Draw_Context *)context)->clip.h;
58 return ((RGBA_Draw_Context *)context)->clip.use;
59}
60
61static void
62eng_context_color_set(void *data __UNUSED__, void *context, int r, int g, int b, int a)
63{
64 evas_common_draw_context_set_color(context, r, g, b, a);
65}
66
67static int
68eng_context_color_get(void *data __UNUSED__, void *context, int *r, int *g, int *b, int *a)
69{
70 *r = (int)(R_VAL(&((RGBA_Draw_Context *)context)->col.col));
71 *g = (int)(G_VAL(&((RGBA_Draw_Context *)context)->col.col));
72 *b = (int)(B_VAL(&((RGBA_Draw_Context *)context)->col.col));
73 *a = (int)(A_VAL(&((RGBA_Draw_Context *)context)->col.col));
74 return 1;
75}
76
77static void
78eng_context_multiplier_set(void *data __UNUSED__, void *context, int r, int g, int b, int a)
79{
80 evas_common_draw_context_set_multiplier(context, r, g, b, a);
81}
82
83static void
84eng_context_multiplier_unset(void *data __UNUSED__, void *context)
85{
86 evas_common_draw_context_unset_multiplier(context);
87}
88
89static int
90eng_context_multiplier_get(void *data __UNUSED__, void *context, int *r, int *g, int *b, int *a)
91{
92 *r = (int)(R_VAL(&((RGBA_Draw_Context *)context)->mul.col));
93 *g = (int)(G_VAL(&((RGBA_Draw_Context *)context)->mul.col));
94 *b = (int)(B_VAL(&((RGBA_Draw_Context *)context)->mul.col));
95 *a = (int)(A_VAL(&((RGBA_Draw_Context *)context)->mul.col));
96 return ((RGBA_Draw_Context *)context)->mul.use;
97}
98
99static void
100eng_context_mask_set(void *data __UNUSED__, void *context, void *mask, int x, int y, int w, int h)
101{
102 evas_common_draw_context_set_mask(context, mask, x, y, w, h);
103}
104
105static void
106eng_context_mask_unset(void *data __UNUSED__, void *context)
107{
108 evas_common_draw_context_unset_mask(context);
109}
110/*
111static void *
112eng_context_mask_get(void *data __UNUSED__, void *context)
113{
114 return ((RGBA_Draw_Context *)context)->mask.mask;
115}
116*/
117
118static void
119eng_context_cutout_add(void *data __UNUSED__, void *context, int x, int y, int w, int h)
120{
121 evas_common_draw_context_add_cutout(context, x, y, w, h);
122}
123
124static void
125eng_context_cutout_clear(void *data __UNUSED__, void *context)
126{
127 evas_common_draw_context_clear_cutouts(context);
128}
129
130static void
131eng_context_anti_alias_set(void *data __UNUSED__, void *context, unsigned char aa)
132{
133 evas_common_draw_context_set_anti_alias(context, aa);
134}
135
136static unsigned char
137eng_context_anti_alias_get(void *data __UNUSED__, void *context)
138{
139 return ((RGBA_Draw_Context *)context)->anti_alias;
140}
141
142static void
143eng_context_color_interpolation_set(void *data __UNUSED__, void *context, int color_space)
144{
145 evas_common_draw_context_set_color_interpolation(context, color_space);
146}
147
148static int
149eng_context_color_interpolation_get(void *data __UNUSED__, void *context)
150{
151 return ((RGBA_Draw_Context *)context)->interpolation.color_space;
152}
153
154static void
155eng_context_render_op_set(void *data __UNUSED__, void *context, int op)
156{
157 evas_common_draw_context_set_render_op(context, op);
158}
159
160static int
161eng_context_render_op_get(void *data __UNUSED__, void *context)
162{
163 return ((RGBA_Draw_Context *)context)->render_op;
164}
165
166
167
168static void
169eng_rectangle_draw(void *data __UNUSED__, void *context, void *surface, int x, int y, int w, int h)
170{
171#ifdef BUILD_PIPE_RENDER
172 if ((cpunum > 1)
173#ifdef EVAS_FRAME_QUEUING
174 && evas_common_frameq_enabled()
175#endif
176 )
177 evas_common_pipe_rectangle_draw(surface, context, x, y, w, h);
178 else
179#endif
180 {
181 evas_common_rectangle_draw(surface, context, x, y, w, h);
182 evas_common_cpu_end_opt();
183 }
184}
185
186static void
187eng_line_draw(void *data __UNUSED__, void *context, void *surface, int x1, int y1, int x2, int y2)
188{
189#ifdef BUILD_PIPE_RENDER
190 if ((cpunum > 1)
191 #ifdef EVAS_FRAME_QUEUING
192 && evas_common_frameq_enabled()
193#endif
194 )
195 evas_common_pipe_line_draw(surface, context, x1, y1, x2, y2);
196 else
197#endif
198 {
199 evas_common_line_draw(surface, context, x1, y1, x2, y2);
200 evas_common_cpu_end_opt();
201 }
202}
203
204static void *
205eng_polygon_point_add(void *data __UNUSED__, void *context __UNUSED__, void *polygon, int x, int y)
206{
207 return evas_common_polygon_point_add(polygon, x, y);
208}
209
210static void *
211eng_polygon_points_clear(void *data __UNUSED__, void *context __UNUSED__, void *polygon)
212{
213 return evas_common_polygon_points_clear(polygon);
214}
215
216static void
217eng_polygon_draw(void *data __UNUSED__, void *context, void *surface, void *polygon, int x, int y)
218{
219#ifdef BUILD_PIPE_RENDER
220 if ((cpunum > 1)
221#ifdef EVAS_FRAME_QUEUING
222 && evas_common_frameq_enabled()
223#endif
224 )
225 evas_common_pipe_poly_draw(surface, context, polygon, x, y);
226 else
227#endif
228 {
229 evas_common_polygon_draw(surface, context, polygon, x, y);
230 evas_common_cpu_end_opt();
231 }
232}
233
234static int
235eng_image_alpha_get(void *data __UNUSED__, void *image)
236{
237 Image_Entry *im;
238
239 if (!image) return 1;
240 im = image;
241 switch (im->space)
242 {
243 case EVAS_COLORSPACE_ARGB8888:
244 if (im->flags.alpha) return 1;
245 default:
246 break;
247 }
248 return 0;
249}
250
251static int
252eng_image_colorspace_get(void *data __UNUSED__, void *image)
253{
254 Image_Entry *im;
255
256 if (!image) return EVAS_COLORSPACE_ARGB8888;
257 im = image;
258 return im->space;
259}
260
261static void
262eng_image_mask_create(void *data __UNUSED__, void *image)
263{
264 RGBA_Image *im;
265 int sz;
266 uint8_t *dst,*end;
267 uint32_t *src;
268
269 if (!image) return;
270 im = image;
271 if (im->mask.mask && !im->mask.dirty) return;
272
273 if (im->mask.mask) free(im->mask.mask);
274 sz = im->cache_entry.w * im->cache_entry.h;
275 im->mask.mask = malloc(sz);
276 dst = im->mask.mask;
277 if (!im->image.data)
278 evas_cache_image_load_data(&im->cache_entry);
279 src = (void*) im->image.data;
280 if (!src) return;
281 for (end = dst + sz ; dst < end ; dst ++, src ++)
282 *dst = *src >> 24;
283 im->mask.dirty = 0;
284}
285
286
287static void *
288eng_image_alpha_set(void *data __UNUSED__, void *image, int has_alpha)
289{
290 RGBA_Image *im;
291
292 if (!image) return NULL;
293 im = image;
294 if (im->cache_entry.space != EVAS_COLORSPACE_ARGB8888)
295 {
296 im->cache_entry.flags.alpha = 0;
297 return im;
298 }
299 im = (RGBA_Image *) evas_cache_image_alone(&im->cache_entry);
300 evas_common_image_colorspace_dirty(im);
301
302 im->cache_entry.flags.alpha = has_alpha ? 1 : 0;
303 return im;
304}
305
306static void *
307eng_image_border_set(void *data __UNUSED__, void *image, int l __UNUSED__, int r __UNUSED__, int t __UNUSED__, int b __UNUSED__)
308{
309 RGBA_Image *im;
310
311 im = image;
312 return im;
313}
314
315static void
316eng_image_border_get(void *data __UNUSED__, void *image, int *l __UNUSED__, int *r __UNUSED__, int *t __UNUSED__, int *b __UNUSED__)
317{
318 RGBA_Image *im;
319
320 im = image;
321}
322
323static char *
324eng_image_comment_get(void *data __UNUSED__, void *image, char *key __UNUSED__)
325{
326 RGBA_Image *im;
327
328 if (!image) return NULL;
329 im = image;
330 return im->info.comment;
331}
332
333static char *
334eng_image_format_get(void *data __UNUSED__, void *image __UNUSED__)
335{
336 return NULL;
337}
338
339static void
340eng_image_colorspace_set(void *data __UNUSED__, void *image, int cspace)
341{
342 Image_Entry *im;
343
344 if (!image) return;
345 im = image;
346 evas_cache_image_colorspace(im, cspace);
347}
348
349static void *
350eng_image_native_set(void *data __UNUSED__, void *image, void *native __UNUSED__)
351{
352 return image;
353}
354
355static void *
356eng_image_native_get(void *data __UNUSED__, void *image __UNUSED__)
357{
358 return NULL;
359}
360
361static void *
362eng_image_load(void *data __UNUSED__, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo)
363{
364 *error = EVAS_LOAD_ERROR_NONE;
365 return evas_common_load_image_from_file(file, key, lo, error);
366}
367
368static void *
369eng_image_new_from_data(void *data __UNUSED__, int w, int h, DATA32 *image_data, int alpha, int cspace)
370{
371 return evas_cache_image_data(evas_common_image_cache_get(), w, h, image_data, alpha, cspace);
372}
373
374static void *
375eng_image_new_from_copied_data(void *data __UNUSED__, int w, int h, DATA32 *image_data, int alpha, int cspace)
376{
377 return evas_cache_image_copied_data(evas_common_image_cache_get(), w, h, image_data, alpha, cspace);
378}
379
380static void
381eng_image_free(void *data __UNUSED__, void *image)
382{
383 evas_cache_image_drop(image);
384}
385
386static void
387eng_image_size_get(void *data __UNUSED__, void *image, int *w, int *h)
388{
389 Image_Entry *im;
390
391 im = image;
392 if (w) *w = im->w;
393 if (h) *h = im->h;
394}
395
396static void *
397eng_image_size_set(void *data __UNUSED__, void *image, int w, int h)
398{
399 Image_Entry *im;
400
401 im = image;
402 return evas_cache_image_size_set(image, w, h);
403}
404
405static void *
406eng_image_dirty_region(void *data __UNUSED__, void *image, int x, int y, int w, int h)
407{
408 Image_Entry *im = image;
409
410 if (!image) return NULL;
411 return evas_cache_image_dirty(im, x, y, w, h);
412}
413
414static void *
415eng_image_data_get(void *data __UNUSED__, void *image, int to_write, DATA32 **image_data, int *err)
416{
417 RGBA_Image *im;
418 int error;
419
420 if (!image)
421 {
422 *image_data = NULL;
423 return NULL;
424 }
425 im = image;
426 error = evas_cache_image_load_data(&im->cache_entry);
427 switch (im->cache_entry.space)
428 {
429 case EVAS_COLORSPACE_ARGB8888:
430 if (to_write)
431 im = (RGBA_Image *)evas_cache_image_alone(&im->cache_entry);
432 *image_data = im->image.data;
433 break;
434 case EVAS_COLORSPACE_YCBCR422P601_PL:
435 case EVAS_COLORSPACE_YCBCR422P709_PL:
436 case EVAS_COLORSPACE_YCBCR422601_PL:
437 case EVAS_COLORSPACE_YCBCR420NV12601_PL:
438 case EVAS_COLORSPACE_YCBCR420TM12601_PL:
439 *image_data = im->cs.data;
440 break;
441 default:
442 abort();
443 break;
444 }
445 if (err) *err = error;
446 return im;
447}
448
449static void *
450eng_image_data_put(void *data, void *image, DATA32 *image_data)
451{
452 RGBA_Image *im, *im2;
453
454 if (!image) return NULL;
455 im = image;
456 switch (im->cache_entry.space)
457 {
458 case EVAS_COLORSPACE_ARGB8888:
459 if (image_data != im->image.data)
460 {
461 int w, h;
462
463 w = im->cache_entry.w;
464 h = im->cache_entry.h;
465 im2 = eng_image_new_from_data(data, w, h, image_data,
466 eng_image_alpha_get(data, image),
467 eng_image_colorspace_get(data, image));
468 evas_cache_image_drop(&im->cache_entry);
469 im = im2;
470 }
471 break;
472 case EVAS_COLORSPACE_YCBCR422P601_PL:
473 case EVAS_COLORSPACE_YCBCR422P709_PL:
474 case EVAS_COLORSPACE_YCBCR422601_PL:
475 case EVAS_COLORSPACE_YCBCR420NV12601_PL:
476 case EVAS_COLORSPACE_YCBCR420TM12601_PL:
477 if (image_data != im->cs.data)
478 {
479 if (im->cs.data)
480 {
481 if (!im->cs.no_free) free(im->cs.data);
482 }
483 im->cs.data = image_data;
484 }
485 evas_common_image_colorspace_dirty(im);
486 break;
487 default:
488 abort();
489 break;
490 }
491 return im;
492}
493
494static void
495eng_image_data_preload_request(void *data __UNUSED__, void *image, const void *target)
496{
497 RGBA_Image *im = image;
498
499 if (!im) return ;
500 evas_cache_image_preload_data(&im->cache_entry, target);
501}
502
503static void
504eng_image_data_preload_cancel(void *data __UNUSED__, void *image, const void *target)
505{
506 RGBA_Image *im = image;
507
508 if (!im) return ;
509 evas_cache_image_preload_cancel(&im->cache_entry, target);
510}
511
512static void
513eng_image_draw(void *data __UNUSED__, void *context, void *surface, void *image, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, int smooth)
514{
515 RGBA_Image *im;
516
517 if (!image) return;
518 im = image;
519#ifdef BUILD_PIPE_RENDER
520 if ((cpunum > 1)
521#ifdef EVAS_FRAME_QUEUING
522 && evas_common_frameq_enabled()
523#endif
524 )
525 {
526 evas_common_rgba_image_scalecache_prepare((Image_Entry *)(im),
527 surface, context, smooth,
528 src_x, src_y, src_w, src_h,
529 dst_x, dst_y, dst_w, dst_h);
530
531 evas_common_pipe_image_draw(im, surface, context, smooth,
532 src_x, src_y, src_w, src_h,
533 dst_x, dst_y, dst_w, dst_h);
534 }
535 else
536#endif
537 {
538// if (im->cache_entry.space == EVAS_COLORSPACE_ARGB8888)
539// evas_cache_image_load_data(&im->cache_entry);
540// evas_common_image_colorspace_normalize(im);
541 evas_common_rgba_image_scalecache_prepare(&im->cache_entry, surface, context, smooth,
542 src_x, src_y, src_w, src_h,
543 dst_x, dst_y, dst_w, dst_h);
544 evas_common_rgba_image_scalecache_do(&im->cache_entry, surface, context, smooth,
545 src_x, src_y, src_w, src_h,
546 dst_x, dst_y, dst_w, dst_h);
547/*
548 if (smooth)
549 evas_common_scale_rgba_in_to_out_clip_smooth(im, surface, context,
550 src_x, src_y, src_w, src_h,
551 dst_x, dst_y, dst_w, dst_h);
552 else
553 evas_common_scale_rgba_in_to_out_clip_sample(im, surface, context,
554 src_x, src_y, src_w, src_h,
555 dst_x, dst_y, dst_w, dst_h);
556 */
557 evas_common_cpu_end_opt();
558 }
559}
560
561static void
562eng_image_map_draw(void *data __UNUSED__, void *context, void *surface, void *image, int npoints, RGBA_Map_Point *p, int smooth, int level)
563{
564 RGBA_Image *im;
565
566 if (!image) return;
567 if (npoints < 3) return;
568 im = image;
569
570 if ((p[0].x == p[3].x) &&
571 (p[1].x == p[2].x) &&
572 (p[0].y == p[1].y) &&
573 (p[3].y == p[2].y) &&
574 (p[0].x <= p[1].x) &&
575 (p[0].y <= p[2].y) &&
576 (p[0].u == 0) &&
577 (p[0].v == 0) &&
578 (p[1].u == (int)(im->cache_entry.w << FP)) &&
579 (p[1].v == 0) &&
580 (p[2].u == (int)(im->cache_entry.w << FP)) &&
581 (p[2].v == (int)(im->cache_entry.h << FP)) &&
582 (p[3].u == 0) &&
583 (p[3].v == (int)(im->cache_entry.h << FP)) &&
584 (p[0].col == 0xffffffff) &&
585 (p[1].col == 0xffffffff) &&
586 (p[2].col == 0xffffffff) &&
587 (p[3].col == 0xffffffff))
588 {
589 int dx, dy, dw, dh;
590
591 dx = p[0].x >> FP;
592 dy = p[0].y >> FP;
593 dw = (p[2].x >> FP) - dx;
594 dh = (p[2].y >> FP) - dy;
595 eng_image_draw
596 (data, context, surface, image,
597 0, 0, im->cache_entry.w, im->cache_entry.h,
598 dx, dy, dw, dh, smooth);
599 }
600 else
601 {
602#ifdef BUILD_PIPE_RENDER
603 if ((cpunum > 1)
604# ifdef EVAS_FRAME_QUEUING
605 && evas_common_frameq_enabled()
606# endif
607 )
608 evas_common_pipe_map_draw(im, surface, context, npoints, p, smooth, level);
609 else
610#endif
611 evas_common_map_rgba(im, surface, context, npoints, p, smooth, level);
612 }
613 evas_common_cpu_end_opt();
614
615 if (npoints > 4)
616 {
617 eng_image_map_draw(data, context, surface, image, npoints - 2, p + 2,
618 smooth, level);
619 }
620}
621
622static void *
623eng_image_map_surface_new(void *data __UNUSED__, int w, int h, int alpha)
624{
625 void *surface;
626 DATA32 *pixels;
627 surface = evas_cache_image_copied_data(evas_common_image_cache_get(),
628 w, h, NULL, alpha,
629 EVAS_COLORSPACE_ARGB8888);
630 pixels = evas_cache_image_pixels(surface);
631 return surface;
632}
633
634static void
635eng_image_map_surface_free(void *data __UNUSED__, void *surface)
636{
637 evas_cache_image_drop(surface);
638}
639
640static void
641eng_image_scale_hint_set(void *data __UNUSED__, void *image, int hint)
642{
643 Image_Entry *im;
644
645 if (!image) return;
646 im = image;
647 im->scale_hint = hint;
648}
649
650static int
651eng_image_scale_hint_get(void *data __UNUSED__, void *image)
652{
653 Image_Entry *im;
654
655 if (!image) return EVAS_IMAGE_SCALE_HINT_NONE;
656 im = image;
657 return im->scale_hint;
658}
659
660static Eina_Bool
661eng_image_animated_get(void *data __UNUSED__, void *image)
662{
663 Image_Entry *im;
664
665 if (!image) return EINA_FALSE;
666 im = image;
667 return im->flags.animated;
668}
669
670static int
671eng_image_animated_frame_count_get(void *data __UNUSED__, void *image)
672{
673 Image_Entry *im;
674
675 if (!image) return -1;
676 im = image;
677 if (!im->flags.animated) return -1;
678 return im->frame_count;
679}
680
681static Evas_Image_Animated_Loop_Hint
682eng_image_animated_loop_type_get(void *data __UNUSED__, void *image)
683{
684 Image_Entry *im;
685
686 if (!image) return EVAS_IMAGE_ANIMATED_HINT_NONE;
687 im = image;
688 if (!im->flags.animated) return EVAS_IMAGE_ANIMATED_HINT_NONE;
689 return im->loop_hint;
690}
691
692static int
693eng_image_animated_loop_count_get(void *data __UNUSED__, void *image)
694{
695 Image_Entry *im;
696
697 if (!image) return -1;
698 im = image;
699 if (!im->flags.animated) return -1;
700 return im->loop_count;
701}
702
703static double
704eng_image_animated_frame_duration_get(void *data __UNUSED__, void *image, int start_frame, int frame_num)
705{
706 Image_Entry *im;
707
708 if (!image) return -1;
709 im = image;
710 if (!im->flags.animated) return -1;
711 return evas_common_load_rgba_image_frame_duration_from_file(im, start_frame, frame_num);
712}
713
714static Eina_Bool
715eng_image_animated_frame_set(void *data __UNUSED__, void *image, int frame_index)
716{
717 Image_Entry *im;
718
719 if (!image) return EINA_FALSE;
720 im = image;
721 if (!im->flags.animated) return EINA_FALSE;
722 if (im->cur_frame == frame_index) return EINA_FALSE;
723 im->cur_frame = frame_index;
724 return EINA_TRUE;
725}
726
727static void
728eng_image_cache_flush(void *data __UNUSED__)
729{
730 int tmp_size;
731
732 tmp_size = evas_common_image_get_cache();
733 evas_common_image_set_cache(0);
734 evas_common_rgba_image_scalecache_flush();
735 evas_common_image_set_cache(tmp_size);
736}
737
738static void
739eng_image_cache_set(void *data __UNUSED__, int bytes)
740{
741 evas_common_image_set_cache(bytes);
742 evas_common_rgba_image_scalecache_size_set(bytes);
743}
744
745static int
746eng_image_cache_get(void *data __UNUSED__)
747{
748 return evas_common_image_get_cache();
749}
750
751static Evas_Font_Set *
752eng_font_load(void *data __UNUSED__, const char *name, int size,
753 Font_Rend_Flags wanted_rend)
754{
755 return (Evas_Font_Set *) evas_common_font_load(name, size, wanted_rend);
756}
757
758static Evas_Font_Set *
759eng_font_memory_load(void *data __UNUSED__, char *name, int size, const void *fdata, int fdata_size, Font_Rend_Flags wanted_rend)
760{
761 return (Evas_Font_Set *) evas_common_font_memory_load(name, size, fdata,
762 fdata_size, wanted_rend);
763}
764
765static Evas_Font_Set *
766eng_font_add(void *data __UNUSED__, Evas_Font_Set *font, const char *name, int size, Font_Rend_Flags wanted_rend)
767{
768 return (Evas_Font_Set *) evas_common_font_add((RGBA_Font *) font, name,
769 size, wanted_rend);
770}
771
772static Evas_Font_Set *
773eng_font_memory_add(void *data __UNUSED__, Evas_Font_Set *font, char *name, int size, const void *fdata, int fdata_size, Font_Rend_Flags wanted_rend)
774{
775 return (Evas_Font_Set *) evas_common_font_memory_add((RGBA_Font *) font,
776 name, size, fdata, fdata_size, wanted_rend);
777}
778
779static void
780eng_font_free(void *data __UNUSED__, Evas_Font_Set *font)
781{
782 evas_common_font_free((RGBA_Font *) font);
783}
784
785static int
786eng_font_ascent_get(void *data __UNUSED__, Evas_Font_Set *font)
787{
788 return evas_common_font_ascent_get((RGBA_Font *) font);
789}
790
791static int
792eng_font_descent_get(void *data __UNUSED__, Evas_Font_Set *font)
793{
794 return evas_common_font_descent_get((RGBA_Font *) font);
795}
796
797static int
798eng_font_max_ascent_get(void *data __UNUSED__, Evas_Font_Set *font)
799{
800 return evas_common_font_max_ascent_get((RGBA_Font *) font);
801}
802
803static int
804eng_font_max_descent_get(void *data __UNUSED__, Evas_Font_Set *font)
805{
806 return evas_common_font_max_descent_get((RGBA_Font *) font);
807}
808
809static void
810eng_font_string_size_get(void *data __UNUSED__, Evas_Font_Set *font, const Evas_Text_Props *text_props, int *w, int *h)
811{
812 evas_common_font_query_size((RGBA_Font *) font, text_props, w, h);
813}
814
815static int
816eng_font_inset_get(void *data __UNUSED__, Evas_Font_Set *font, const Evas_Text_Props *text_props)
817{
818 return evas_common_font_query_inset((RGBA_Font *) font, text_props);
819}
820
821static int
822eng_font_right_inset_get(void *data __UNUSED__, Evas_Font_Set *font, const Evas_Text_Props *text_props)
823{
824 return evas_common_font_query_right_inset((RGBA_Font *) font, text_props);
825}
826
827static int
828eng_font_h_advance_get(void *data __UNUSED__, Evas_Font_Set *font, const Evas_Text_Props *text_props)
829{
830 int h, v;
831
832 evas_common_font_query_advance((RGBA_Font *) font, text_props, &h, &v);
833 return h;
834}
835
836static int
837eng_font_v_advance_get(void *data __UNUSED__, Evas_Font_Set *font, const Evas_Text_Props *text_props)
838{
839 int h, v;
840
841 evas_common_font_query_advance((RGBA_Font *) font, text_props, &h, &v);
842 return v;
843}
844
845static int
846eng_font_pen_coords_get(void *data __UNUSED__, Evas_Font_Set *font, const Evas_Text_Props *text_props, int pos, int *cpen_x, int *cy, int *cadv, int *ch)
847{
848 return evas_common_font_query_pen_coords((RGBA_Font *) font, text_props, pos, cpen_x, cy, cadv, ch);
849}
850
851static Eina_Bool
852eng_font_text_props_info_create(void *data __UNUSED__, Evas_Font_Instance *fi, const Eina_Unicode *text, Evas_Text_Props *text_props, const Evas_BiDi_Paragraph_Props *par_props, size_t par_pos, size_t len)
853{
854 return evas_common_text_props_content_create((RGBA_Font_Int *) fi, text,
855 text_props, par_props, par_pos, len);
856}
857
858static int
859eng_font_char_coords_get(void *data __UNUSED__, Evas_Font_Set *font, const Evas_Text_Props *text_props, int pos, int *cx, int *cy, int *cw, int *ch)
860{
861 return evas_common_font_query_char_coords((RGBA_Font *) font, text_props, pos, cx, cy, cw, ch);
862}
863
864static int
865eng_font_char_at_coords_get(void *data __UNUSED__, Evas_Font_Set *font, const Evas_Text_Props *text_props, int x, int y, int *cx, int *cy, int *cw, int *ch)
866{
867 return evas_common_font_query_char_at_coords((RGBA_Font *) font, text_props, x, y, cx, cy, cw, ch);
868}
869
870static int
871eng_font_last_up_to_pos(void *data __UNUSED__, Evas_Font_Set *font, const Evas_Text_Props *text_props, int x, int y)
872{
873 return evas_common_font_query_last_up_to_pos((RGBA_Font *) font, text_props, x, y);
874}
875
876static int
877eng_font_run_font_end_get(void *data __UNUSED__, Evas_Font_Set *font, Evas_Font_Instance **script_fi, Evas_Font_Instance **cur_fi, Evas_Script_Type script, const Eina_Unicode *text, int run_len)
878{
879 return evas_common_font_query_run_font_end_get((RGBA_Font *) font,
880 (RGBA_Font_Int **) script_fi, (RGBA_Font_Int **) cur_fi,
881 script, text, run_len);
882}
883
884static void
885eng_font_draw(void *data __UNUSED__, void *context, void *surface, Evas_Font_Set *font, int x, int y, int w __UNUSED__, int h __UNUSED__, int ow __UNUSED__, int oh __UNUSED__, const Evas_Text_Props *text_props)
886{
887#ifdef BUILD_PIPE_RENDER
888 if ((cpunum > 1)
889#ifdef EVAS_FRAME_QUEUING
890 && evas_common_frameq_enabled()
891#endif
892 )
893 evas_common_pipe_text_draw(surface, context, (RGBA_Font *) font, x, y,
894 text_props);
895 else
896#endif
897 {
898 evas_common_font_draw(surface, context, (RGBA_Font *) font, x, y,
899 text_props);
900 evas_common_cpu_end_opt();
901 }
902}
903
904static void
905eng_font_cache_flush(void *data __UNUSED__)
906{
907 int tmp_size;
908
909 tmp_size = evas_common_font_cache_get();
910 evas_common_font_cache_set(0);
911 evas_common_font_flush();
912 evas_common_font_cache_set(tmp_size);
913}
914
915static void
916eng_font_cache_set(void *data __UNUSED__, int bytes)
917{
918 evas_common_font_cache_set(bytes);
919}
920
921static int
922eng_font_cache_get(void *data __UNUSED__)
923{
924 return evas_common_font_cache_get();
925}
926
927static void
928eng_font_hinting_set(void *data __UNUSED__, Evas_Font_Set *font, int hinting)
929{
930 evas_common_font_hinting_set((RGBA_Font *) font, hinting);
931}
932
933static int
934eng_font_hinting_can_hint(void *data __UNUSED__, int hinting)
935{
936 return evas_common_hinting_available(hinting);
937}
938
939static Eina_Bool
940eng_canvas_alpha_get(void *data __UNUSED__, void *info __UNUSED__)
941{
942 return EINA_TRUE;
943}
944
945
946/* Filter API */
947#if 0 // filtering disabled
948static void
949eng_image_draw_filtered(void *data __UNUSED__, void *context __UNUSED__,
950 void *surface, void *image, Evas_Filter_Info *filter)
951{
952 Evas_Software_Filter_Fn fn;
953 RGBA_Image *im = image;
954
955 fn = evas_filter_software_get(filter);
956 if (!fn) return;
957 if (im->cache_entry.cache) evas_cache_image_load_data(&im->cache_entry);
958 fn(filter, image, surface);
959 return;
960}
961
962static Filtered_Image *
963eng_image_filtered_get(void *image, uint8_t *key, size_t keylen)
964{
965 RGBA_Image *im = image;
966 Filtered_Image *fi;
967 Eina_List *l;
968
969 for (l = im->filtered ; l ; l = l->next)
970 {
971 fi = l->data;
972 if (fi->keylen != keylen) continue;
973 if (memcmp(key, fi->key, keylen) != 0) continue;
974 fi->ref ++;
975 return fi;
976 }
977
978 return NULL;
979}
980
981static Filtered_Image *
982eng_image_filtered_save(void *image, void *fimage, uint8_t *key, size_t keylen)
983{
984 RGBA_Image *im = image;
985 Filtered_Image *fi;
986 Eina_List *l;
987
988 for (l = im->filtered ; l ; l = l->next)
989 {
990 fi = l->data;
991 if (fi->keylen != keylen) continue;
992 if (memcmp(key, fi->key, keylen) == 0) continue;
993 evas_cache_image_drop((void *)fi->image);
994 fi->image = fimage;
995 return fi;
996 }
997
998 fi = calloc(1,sizeof(Filtered_Image));
999 if (!fi) return NULL;
1000
1001 fi->keylen = keylen;
1002 fi->key = malloc(keylen);
1003 memcpy(fi->key, key, keylen);
1004 fi->image = fimage;
1005 fi->ref = 1;
1006
1007 im->filtered = eina_list_prepend(im->filtered, fi);
1008
1009 return fi;
1010}
1011
1012static void
1013eng_image_filtered_free(void *image, Filtered_Image *fi)
1014{
1015 RGBA_Image *im = image;
1016
1017 fi->ref --;
1018 if (fi->ref) return;
1019
1020 free(fi->key);
1021 evas_cache_image_drop(&fi->image->cache_entry);
1022 fi->image = NULL;
1023
1024 im->filtered = eina_list_remove(im->filtered, fi);
1025}
1026#endif
1027
1028static int
1029eng_image_load_error_get(void *data __UNUSED__, void *image)
1030{
1031 RGBA_Image *im;
1032
1033 if (!image) return EVAS_LOAD_ERROR_NONE;
1034 im = image;
1035 return im->cache_entry.load_error;
1036}
1037
1038/*
1039 *****
1040 **
1041 ** ENGINE API
1042 **
1043 *****
1044 */
1045
1046static Evas_Func func =
1047{
1048 NULL,
1049 NULL,
1050 NULL,
1051 NULL,
1052 NULL,
1053 NULL,
1054 NULL,
1055 NULL,
1056 NULL,
1057 NULL,
1058 NULL,
1059 NULL,
1060 NULL,
1061 eng_output_dump,
1062 /* draw context virtual methods */
1063 eng_context_new,
1064 eng_canvas_alpha_get,
1065 eng_context_free,
1066 eng_context_clip_set,
1067 eng_context_clip_clip,
1068 eng_context_clip_unset,
1069 eng_context_clip_get,
1070 eng_context_mask_set,
1071 eng_context_mask_unset,
1072 eng_context_color_set,
1073 eng_context_color_get,
1074 eng_context_multiplier_set,
1075 eng_context_multiplier_unset,
1076 eng_context_multiplier_get,
1077 eng_context_cutout_add,
1078 eng_context_cutout_clear,
1079 eng_context_anti_alias_set,
1080 eng_context_anti_alias_get,
1081 eng_context_color_interpolation_set,
1082 eng_context_color_interpolation_get,
1083 eng_context_render_op_set,
1084 eng_context_render_op_get,
1085 /* rect draw funcs */
1086 eng_rectangle_draw,
1087 /* line draw funcs */
1088 eng_line_draw,
1089 /* polygon draw funcs */
1090 eng_polygon_point_add,
1091 eng_polygon_points_clear,
1092 eng_polygon_draw,
1093 /* image draw funcs */
1094 eng_image_load,
1095 eng_image_new_from_data,
1096 eng_image_new_from_copied_data,
1097 eng_image_free,
1098 eng_image_size_get,
1099 eng_image_size_set,
1100 NULL,
1101 eng_image_dirty_region,
1102 eng_image_data_get,
1103 eng_image_data_put,
1104 eng_image_data_preload_request,
1105 eng_image_data_preload_cancel,
1106 eng_image_alpha_set,
1107 eng_image_alpha_get,
1108 eng_image_border_set,
1109 eng_image_border_get,
1110 eng_image_draw,
1111 eng_image_comment_get,
1112 eng_image_format_get,
1113 eng_image_colorspace_set,
1114 eng_image_colorspace_get,
1115 eng_image_mask_create,
1116 eng_image_native_set,
1117 eng_image_native_get,
1118 /* image cache funcs */
1119 eng_image_cache_flush,
1120 eng_image_cache_set,
1121 eng_image_cache_get,
1122 /* font draw functions */
1123 eng_font_load,
1124 eng_font_memory_load,
1125 eng_font_add,
1126 eng_font_memory_add,
1127 eng_font_free,
1128 eng_font_ascent_get,
1129 eng_font_descent_get,
1130 eng_font_max_ascent_get,
1131 eng_font_max_descent_get,
1132 eng_font_string_size_get,
1133 eng_font_inset_get,
1134 eng_font_h_advance_get,
1135 eng_font_v_advance_get,
1136 eng_font_char_coords_get,
1137 eng_font_char_at_coords_get,
1138 eng_font_draw,
1139 /* font cache functions */
1140 eng_font_cache_flush,
1141 eng_font_cache_set,
1142 eng_font_cache_get,
1143 /* font hinting functions */
1144 eng_font_hinting_set,
1145 eng_font_hinting_can_hint,
1146 eng_image_scale_hint_set,
1147 eng_image_scale_hint_get,
1148 /* more font draw functions */
1149 eng_font_last_up_to_pos,
1150 eng_image_map_draw,
1151 eng_image_map_surface_new,
1152 eng_image_map_surface_free,
1153 NULL, // eng_image_content_hint_set - software doesn't use it
1154 NULL, // eng_image_content_hint_get - software doesn't use it
1155 eng_font_pen_coords_get,
1156 eng_font_text_props_info_create,
1157 eng_font_right_inset_get,
1158#if 0 // filtering disabled
1159 eng_image_draw_filtered,
1160 eng_image_filtered_get,
1161 eng_image_filtered_save,
1162 eng_image_filtered_free,
1163#endif
1164 NULL, // FIXME: need software mesa for gl rendering <- gl_surface_create
1165 NULL, // FIXME: need software mesa for gl rendering <- gl_surface_destroy
1166 NULL, // FIXME: need software mesa for gl rendering <- gl_context_create
1167 NULL, // FIXME: need software mesa for gl rendering <- gl_context_destroy
1168 NULL, // FIXME: need software mesa for gl rendering <- gl_make_current
1169 NULL, // FIXME: need software mesa for gl rendering <- gl_string_query
1170 NULL, // FIXME: need software mesa for gl rendering <- gl_proc_address_get
1171 NULL, // FIXME: need software mesa for gl rendering <- gl_native_surface_get
1172 NULL, // FIXME: need software mesa for gl rendering <- gl_api_get
1173 eng_image_load_error_get,
1174 eng_font_run_font_end_get,
1175 eng_image_animated_get,
1176 eng_image_animated_frame_count_get,
1177 eng_image_animated_loop_type_get,
1178 eng_image_animated_loop_count_get,
1179 eng_image_animated_frame_duration_get,
1180 eng_image_animated_frame_set,
1181 NULL
1182 /* FUTURE software generic calls go here */
1183};
1184
1185/*
1186 *****
1187 **
1188 ** MODULE ACCESSIBLE API API
1189 **
1190 *****
1191 */
1192
1193static int
1194module_open(Evas_Module *em)
1195{
1196 if (!em) return 0;
1197 _evas_soft_gen_log_dom = eina_log_domain_register
1198 ("evas-software_generic", EVAS_DEFAULT_LOG_COLOR);
1199 if(_evas_soft_gen_log_dom<0)
1200 {
1201 EINA_LOG_ERR("Can not create a module log domain.");
1202 return 0;
1203 }
1204 em->functions = (void *)(&func);
1205 cpunum = eina_cpu_count();
1206 return 1;
1207}
1208
1209static void
1210module_close(Evas_Module *em __UNUSED__)
1211{
1212 eina_log_domain_unregister(_evas_soft_gen_log_dom);
1213}
1214
1215static Evas_Module_Api evas_modapi =
1216{
1217 EVAS_MODULE_API_VERSION,
1218 "software_generic",
1219 "none",
1220 {
1221 module_open,
1222 module_close
1223 }
1224};
1225
1226EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, software_generic);
1227
1228#ifndef EVAS_STATIC_BUILD_SOFTWARE_GENERIC
1229EVAS_EINA_MODULE_DEFINE(engine, software_generic);
1230#endif