diff options
author | David Walter Seikel | 2012-01-23 23:30:42 +1000 |
---|---|---|
committer | David Walter Seikel | 2012-01-23 23:30:42 +1000 |
commit | 825a3d837a33f226c879cd02ad15c3fba57e8b2c (patch) | |
tree | 75f57bd9c4253508d338dc79ba8e57a7abc42255 /libraries/evas/src | |
parent | Add ability to disable the test harness, or the Lua compile test. (diff) | |
download | SledjHamr-825a3d837a33f226c879cd02ad15c3fba57e8b2c.zip SledjHamr-825a3d837a33f226c879cd02ad15c3fba57e8b2c.tar.gz SledjHamr-825a3d837a33f226c879cd02ad15c3fba57e8b2c.tar.bz2 SledjHamr-825a3d837a33f226c879cd02ad15c3fba57e8b2c.tar.xz |
Update the EFL to what I'm actually using, coz I'm using some stuff not yet released.
Diffstat (limited to '')
160 files changed, 13562 insertions, 2159 deletions
diff --git a/libraries/evas/src/Makefile.in b/libraries/evas/src/Makefile.in index 9b729e1..68cdb12 100644 --- a/libraries/evas/src/Makefile.in +++ b/libraries/evas/src/Makefile.in | |||
@@ -206,8 +206,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
206 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 206 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
207 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 207 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
208 | PKG_CONFIG = @PKG_CONFIG@ | 208 | PKG_CONFIG = @PKG_CONFIG@ |
209 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
210 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
211 | PNG_CFLAGS = @PNG_CFLAGS@ | 209 | PNG_CFLAGS = @PNG_CFLAGS@ |
212 | PNG_LIBS = @PNG_LIBS@ | 210 | PNG_LIBS = @PNG_LIBS@ |
213 | RANLIB = @RANLIB@ | 211 | RANLIB = @RANLIB@ |
@@ -224,6 +222,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
224 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 222 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
225 | VERSION = @VERSION@ | 223 | VERSION = @VERSION@ |
226 | VMAJ = @VMAJ@ | 224 | VMAJ = @VMAJ@ |
225 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
226 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
227 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 227 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
228 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 228 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
229 | XCB_CFLAGS = @XCB_CFLAGS@ | 229 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -305,6 +305,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
305 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 305 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
306 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 306 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
307 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 307 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
308 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
309 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
310 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
311 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
308 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 312 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
309 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 313 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
310 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 314 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/bin/Makefile.in b/libraries/evas/src/bin/Makefile.in index 885bfc4..136b34c 100644 --- a/libraries/evas/src/bin/Makefile.in +++ b/libraries/evas/src/bin/Makefile.in | |||
@@ -212,8 +212,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
212 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 212 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
213 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 213 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
214 | PKG_CONFIG = @PKG_CONFIG@ | 214 | PKG_CONFIG = @PKG_CONFIG@ |
215 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
216 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
217 | PNG_CFLAGS = @PNG_CFLAGS@ | 215 | PNG_CFLAGS = @PNG_CFLAGS@ |
218 | PNG_LIBS = @PNG_LIBS@ | 216 | PNG_LIBS = @PNG_LIBS@ |
219 | RANLIB = @RANLIB@ | 217 | RANLIB = @RANLIB@ |
@@ -230,6 +228,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
230 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 228 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
231 | VERSION = @VERSION@ | 229 | VERSION = @VERSION@ |
232 | VMAJ = @VMAJ@ | 230 | VMAJ = @VMAJ@ |
231 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
232 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
233 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 233 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
234 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 234 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
235 | XCB_CFLAGS = @XCB_CFLAGS@ | 235 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -311,6 +311,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
311 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 311 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
312 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 312 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
313 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 313 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
314 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
315 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
316 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
317 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
314 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 318 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
315 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 319 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
316 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 320 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/examples/Makefile.am b/libraries/evas/src/examples/Makefile.am index f748c12..ffa9274 100644 --- a/libraries/evas/src/examples/Makefile.am +++ b/libraries/evas/src/examples/Makefile.am | |||
@@ -1,6 +1,6 @@ | |||
1 | MAINTAINERCLEANFILES = Makefile.in | 1 | MAINTAINERCLEANFILES = Makefile.in |
2 | 2 | ||
3 | pkglibdir = $(datadir)/$(PACKAGE)/examples | 3 | examplesdir = $(datadir)/$(PACKAGE)/examples |
4 | 4 | ||
5 | #put here all EDCs one needs to the tests | 5 | #put here all EDCs one needs to the tests |
6 | EDCS = aspect.edc | 6 | EDCS = aspect.edc |
@@ -28,68 +28,68 @@ AM_CPPFLAGS = \ | |||
28 | 28 | ||
29 | AM_CFLAGS = @WIN32_CFLAGS@ | 29 | AM_CFLAGS = @WIN32_CFLAGS@ |
30 | 30 | ||
31 | pkglib_PROGRAMS = | 31 | examples_PROGRAMS = |
32 | 32 | ||
33 | if BUILD_ENGINE_BUFFER | 33 | if BUILD_ENGINE_BUFFER |
34 | AM_CPPFLAGS += -I$(top_srcdir)/src/modules/engines/buffer | 34 | AM_CPPFLAGS += -I$(top_srcdir)/src/modules/engines/buffer |
35 | 35 | ||
36 | pkglib_PROGRAMS += evas_buffer_simple | 36 | examples_PROGRAMS += evas_buffer_simple |
37 | evas_buffer_simple_SOURCES = evas-buffer-simple.c | 37 | evas_buffer_simple_SOURCES = evas-buffer-simple.c |
38 | evas_buffer_simple_LDADD = $(top_builddir)/src/lib/libevas.la | 38 | evas_buffer_simple_LDADD = $(top_builddir)/src/lib/libevas.la |
39 | endif | 39 | endif |
40 | 40 | ||
41 | pkglib_PROGRAMS += evas_init_shutdown | 41 | examples_PROGRAMS += evas_init_shutdown |
42 | evas_init_shutdown_SOURCES = evas-init-shutdown.c | 42 | evas_init_shutdown_SOURCES = evas-init-shutdown.c |
43 | evas_init_shutdown_LDADD = $(top_builddir)/src/lib/libevas.la | 43 | evas_init_shutdown_LDADD = $(top_builddir)/src/lib/libevas.la |
44 | 44 | ||
45 | #the ones using ecore_evas follow | 45 | #the ones using ecore_evas follow |
46 | AM_CPPFLAGS += @ECORE_EVAS_CFLAGS@ | 46 | AM_CPPFLAGS += @ECORE_EVAS_CFLAGS@ |
47 | 47 | ||
48 | pkglib_PROGRAMS += evas_images | 48 | examples_PROGRAMS += evas_images |
49 | evas_images_SOURCES = evas-images.c | 49 | evas_images_SOURCES = evas-images.c |
50 | evas_images_LDADD = $(top_builddir)/src/lib/libevas.la @ECORE_EVAS_LIBS@ | 50 | evas_images_LDADD = $(top_builddir)/src/lib/libevas.la @ECORE_EVAS_LIBS@ |
51 | 51 | ||
52 | pkglib_PROGRAMS += evas_events | 52 | examples_PROGRAMS += evas_events |
53 | evas_events_SOURCES = evas-events.c | 53 | evas_events_SOURCES = evas-events.c |
54 | evas_events_LDADD = $(top_builddir)/src/lib/libevas.la @ECORE_EVAS_LIBS@ | 54 | evas_events_LDADD = $(top_builddir)/src/lib/libevas.la @ECORE_EVAS_LIBS@ |
55 | 55 | ||
56 | pkglib_PROGRAMS += evas_object_manipulation | 56 | examples_PROGRAMS += evas_object_manipulation |
57 | evas_object_manipulation_SOURCES = evas-object-manipulation.c | 57 | evas_object_manipulation_SOURCES = evas-object-manipulation.c |
58 | evas_object_manipulation_LDADD = $(top_builddir)/src/lib/libevas.la @ECORE_EVAS_LIBS@ | 58 | evas_object_manipulation_LDADD = $(top_builddir)/src/lib/libevas.la @ECORE_EVAS_LIBS@ |
59 | 59 | ||
60 | pkglib_PROGRAMS += evas_hints | 60 | examples_PROGRAMS += evas_hints |
61 | evas_hints_SOURCES = evas-hints.c | 61 | evas_hints_SOURCES = evas-hints.c |
62 | evas_hints_LDADD = $(top_builddir)/src/lib/libevas.la @ECORE_EVAS_LIBS@ | 62 | evas_hints_LDADD = $(top_builddir)/src/lib/libevas.la @ECORE_EVAS_LIBS@ |
63 | 63 | ||
64 | pkglib_PROGRAMS += evas_stacking | 64 | examples_PROGRAMS += evas_stacking |
65 | evas_stacking_SOURCES = evas-stacking.c | 65 | evas_stacking_SOURCES = evas-stacking.c |
66 | evas_stacking_LDADD = $(top_builddir)/src/lib/libevas.la @ECORE_EVAS_LIBS@ | 66 | evas_stacking_LDADD = $(top_builddir)/src/lib/libevas.la @ECORE_EVAS_LIBS@ |
67 | 67 | ||
68 | pkglib_PROGRAMS += evas_images2 | 68 | examples_PROGRAMS += evas_images2 |
69 | evas_images2_SOURCES = evas-images2.c | 69 | evas_images2_SOURCES = evas-images2.c |
70 | evas_images2_LDADD = $(top_builddir)/src/lib/libevas.la @ECORE_EVAS_LIBS@ | 70 | evas_images2_LDADD = $(top_builddir)/src/lib/libevas.la @ECORE_EVAS_LIBS@ |
71 | 71 | ||
72 | pkglib_PROGRAMS += evas_text | 72 | examples_PROGRAMS += evas_text |
73 | evas_text_SOURCES = evas-text.c | 73 | evas_text_SOURCES = evas-text.c |
74 | evas_text_LDADD = $(top_builddir)/src/lib/libevas.la @ECORE_EVAS_LIBS@ | 74 | evas_text_LDADD = $(top_builddir)/src/lib/libevas.la @ECORE_EVAS_LIBS@ |
75 | 75 | ||
76 | pkglib_PROGRAMS += evas_smart_object | 76 | examples_PROGRAMS += evas_smart_object |
77 | evas_smart_object_SOURCES = evas-smart-object.c | 77 | evas_smart_object_SOURCES = evas-smart-object.c |
78 | evas_smart_object_LDADD = $(top_builddir)/src/lib/libevas.la @ECORE_EVAS_LIBS@ | 78 | evas_smart_object_LDADD = $(top_builddir)/src/lib/libevas.la @ECORE_EVAS_LIBS@ |
79 | 79 | ||
80 | pkglib_PROGRAMS += evas_box | 80 | examples_PROGRAMS += evas_box |
81 | evas_box_SOURCES = evas-box.c | 81 | evas_box_SOURCES = evas-box.c |
82 | evas_box_LDADD = $(top_builddir)/src/lib/libevas.la @ECORE_EVAS_LIBS@ @EINA_LIBS@ | 82 | evas_box_LDADD = $(top_builddir)/src/lib/libevas.la @ECORE_EVAS_LIBS@ @EINA_LIBS@ |
83 | 83 | ||
84 | #the ones using ecore_evas and edje follow | 84 | #the ones using ecore_evas and edje follow |
85 | AM_CPPFLAGS += @EDJE_CFLAGS@ | 85 | AM_CPPFLAGS += @EDJE_CFLAGS@ |
86 | 86 | ||
87 | pkglib_PROGRAMS += evas_aspect_hints | 87 | examples_PROGRAMS += evas_aspect_hints |
88 | evas_aspect_hints_DEPS = $(srcdir)/aspect.edc | 88 | evas_aspect_hints_DEPS = $(srcdir)/aspect.edc |
89 | evas_aspect_hints_SOURCES = evas-aspect-hints.c | 89 | evas_aspect_hints_SOURCES = evas-aspect-hints.c |
90 | evas_aspect_hints_LDADD = $(top_builddir)/src/lib/libevas.la @ECORE_EVAS_LIBS@ @EDJE_LIBS@ | 90 | evas_aspect_hints_LDADD = $(top_builddir)/src/lib/libevas.la @ECORE_EVAS_LIBS@ @EDJE_LIBS@ |
91 | 91 | ||
92 | pkglib_PROGRAMS += evas_map_utils | 92 | examples_PROGRAMS += evas_map_utils |
93 | evas_map_utils_SOURCES = evas-map-utils.c | 93 | evas_map_utils_SOURCES = evas-map-utils.c |
94 | evas_map_utils_LDADD = $(top_builddir)/src/lib/libevas.la @ECORE_EVAS_LIBS@ | 94 | evas_map_utils_LDADD = $(top_builddir)/src/lib/libevas.la @ECORE_EVAS_LIBS@ |
95 | 95 | ||
diff --git a/libraries/evas/src/examples/Makefile.in b/libraries/evas/src/examples/Makefile.in index 5332650..f58d297 100644 --- a/libraries/evas/src/examples/Makefile.in +++ b/libraries/evas/src/examples/Makefile.in | |||
@@ -19,6 +19,7 @@ | |||
19 | VPATH = @srcdir@ | 19 | VPATH = @srcdir@ |
20 | pkgdatadir = $(datadir)/@PACKAGE@ | 20 | pkgdatadir = $(datadir)/@PACKAGE@ |
21 | pkgincludedir = $(includedir)/@PACKAGE@ | 21 | pkgincludedir = $(includedir)/@PACKAGE@ |
22 | pkglibdir = $(libdir)/@PACKAGE@ | ||
22 | pkglibexecdir = $(libexecdir)/@PACKAGE@ | 23 | pkglibexecdir = $(libexecdir)/@PACKAGE@ |
23 | am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd | 24 | am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd |
24 | install_sh_DATA = $(install_sh) -c -m 644 | 25 | install_sh_DATA = $(install_sh) -c -m 644 |
@@ -34,7 +35,7 @@ PRE_UNINSTALL = : | |||
34 | POST_UNINSTALL = : | 35 | POST_UNINSTALL = : |
35 | build_triplet = @build@ | 36 | build_triplet = @build@ |
36 | host_triplet = @host@ | 37 | host_triplet = @host@ |
37 | @BUILD_EXAMPLES_TRUE@pkglib_PROGRAMS = $(am__EXEEXT_1) \ | 38 | @BUILD_EXAMPLES_TRUE@examples_PROGRAMS = $(am__EXEEXT_1) \ |
38 | @BUILD_EXAMPLES_TRUE@ evas_init_shutdown$(EXEEXT) \ | 39 | @BUILD_EXAMPLES_TRUE@ evas_init_shutdown$(EXEEXT) \ |
39 | @BUILD_EXAMPLES_TRUE@ evas_images$(EXEEXT) evas_events$(EXEEXT) \ | 40 | @BUILD_EXAMPLES_TRUE@ evas_images$(EXEEXT) evas_events$(EXEEXT) \ |
40 | @BUILD_EXAMPLES_TRUE@ evas_object_manipulation$(EXEEXT) \ | 41 | @BUILD_EXAMPLES_TRUE@ evas_object_manipulation$(EXEEXT) \ |
@@ -89,8 +90,8 @@ CONFIG_HEADER = $(top_builddir)/config.h | |||
89 | CONFIG_CLEAN_FILES = | 90 | CONFIG_CLEAN_FILES = |
90 | CONFIG_CLEAN_VPATH_FILES = | 91 | CONFIG_CLEAN_VPATH_FILES = |
91 | @BUILD_ENGINE_BUFFER_TRUE@@BUILD_EXAMPLES_TRUE@am__EXEEXT_1 = evas_buffer_simple$(EXEEXT) | 92 | @BUILD_ENGINE_BUFFER_TRUE@@BUILD_EXAMPLES_TRUE@am__EXEEXT_1 = evas_buffer_simple$(EXEEXT) |
92 | am__installdirs = "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(filesdir)" | 93 | am__installdirs = "$(DESTDIR)$(examplesdir)" "$(DESTDIR)$(filesdir)" |
93 | PROGRAMS = $(pkglib_PROGRAMS) | 94 | PROGRAMS = $(examples_PROGRAMS) |
94 | am__evas_aspect_hints_SOURCES_DIST = evas-aspect-hints.c | 95 | am__evas_aspect_hints_SOURCES_DIST = evas-aspect-hints.c |
95 | @BUILD_EXAMPLES_TRUE@am_evas_aspect_hints_OBJECTS = \ | 96 | @BUILD_EXAMPLES_TRUE@am_evas_aspect_hints_OBJECTS = \ |
96 | @BUILD_EXAMPLES_TRUE@ evas-aspect-hints.$(OBJEXT) | 97 | @BUILD_EXAMPLES_TRUE@ evas-aspect-hints.$(OBJEXT) |
@@ -236,7 +237,6 @@ DATA = $(files_DATA) | |||
236 | ETAGS = etags | 237 | ETAGS = etags |
237 | CTAGS = ctags | 238 | CTAGS = ctags |
238 | DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) | 239 | DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) |
239 | pkglibdir = $(datadir)/$(PACKAGE)/examples | ||
240 | ACLOCAL = @ACLOCAL@ | 240 | ACLOCAL = @ACLOCAL@ |
241 | ALLOCA = @ALLOCA@ | 241 | ALLOCA = @ALLOCA@ |
242 | AMTAR = @AMTAR@ | 242 | AMTAR = @AMTAR@ |
@@ -339,8 +339,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
339 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 339 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
340 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 340 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
341 | PKG_CONFIG = @PKG_CONFIG@ | 341 | PKG_CONFIG = @PKG_CONFIG@ |
342 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
343 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
344 | PNG_CFLAGS = @PNG_CFLAGS@ | 342 | PNG_CFLAGS = @PNG_CFLAGS@ |
345 | PNG_LIBS = @PNG_LIBS@ | 343 | PNG_LIBS = @PNG_LIBS@ |
346 | RANLIB = @RANLIB@ | 344 | RANLIB = @RANLIB@ |
@@ -357,6 +355,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
357 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 355 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
358 | VERSION = @VERSION@ | 356 | VERSION = @VERSION@ |
359 | VMAJ = @VMAJ@ | 357 | VMAJ = @VMAJ@ |
358 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
359 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
360 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 360 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
361 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 361 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
362 | XCB_CFLAGS = @XCB_CFLAGS@ | 362 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -438,6 +438,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
438 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 438 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
439 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 439 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
440 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 440 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
441 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
442 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
443 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
444 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
441 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 445 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
442 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 446 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
443 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 447 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
@@ -513,6 +517,7 @@ top_builddir = @top_builddir@ | |||
513 | top_srcdir = @top_srcdir@ | 517 | top_srcdir = @top_srcdir@ |
514 | version_info = @version_info@ | 518 | version_info = @version_info@ |
515 | MAINTAINERCLEANFILES = Makefile.in | 519 | MAINTAINERCLEANFILES = Makefile.in |
520 | examplesdir = $(datadir)/$(PACKAGE)/examples | ||
516 | 521 | ||
517 | #put here all EDCs one needs to the tests | 522 | #put here all EDCs one needs to the tests |
518 | EDCS = aspect.edc | 523 | EDCS = aspect.edc |
@@ -616,10 +621,10 @@ $(top_srcdir)/configure: $(am__configure_deps) | |||
616 | $(ACLOCAL_M4): $(am__aclocal_m4_deps) | 621 | $(ACLOCAL_M4): $(am__aclocal_m4_deps) |
617 | cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh | 622 | cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh |
618 | $(am__aclocal_m4_deps): | 623 | $(am__aclocal_m4_deps): |
619 | install-pkglibPROGRAMS: $(pkglib_PROGRAMS) | 624 | install-examplesPROGRAMS: $(examples_PROGRAMS) |
620 | @$(NORMAL_INSTALL) | 625 | @$(NORMAL_INSTALL) |
621 | test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" | 626 | test -z "$(examplesdir)" || $(MKDIR_P) "$(DESTDIR)$(examplesdir)" |
622 | @list='$(pkglib_PROGRAMS)'; test -n "$(pkglibdir)" || list=; \ | 627 | @list='$(examples_PROGRAMS)'; test -n "$(examplesdir)" || list=; \ |
623 | for p in $$list; do echo "$$p $$p"; done | \ | 628 | for p in $$list; do echo "$$p $$p"; done | \ |
624 | sed 's/$(EXEEXT)$$//' | \ | 629 | sed 's/$(EXEEXT)$$//' | \ |
625 | while read p p1; do if test -f $$p || test -f $$p1; \ | 630 | while read p p1; do if test -f $$p || test -f $$p1; \ |
@@ -636,23 +641,23 @@ install-pkglibPROGRAMS: $(pkglib_PROGRAMS) | |||
636 | while read type dir files; do \ | 641 | while read type dir files; do \ |
637 | if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ | 642 | if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ |
638 | test -z "$$files" || { \ | 643 | test -z "$$files" || { \ |
639 | echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkglibdir)$$dir'"; \ | 644 | echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(examplesdir)$$dir'"; \ |
640 | $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkglibdir)$$dir" || exit $$?; \ | 645 | $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(examplesdir)$$dir" || exit $$?; \ |
641 | } \ | 646 | } \ |
642 | ; done | 647 | ; done |
643 | 648 | ||
644 | uninstall-pkglibPROGRAMS: | 649 | uninstall-examplesPROGRAMS: |
645 | @$(NORMAL_UNINSTALL) | 650 | @$(NORMAL_UNINSTALL) |
646 | @list='$(pkglib_PROGRAMS)'; test -n "$(pkglibdir)" || list=; \ | 651 | @list='$(examples_PROGRAMS)'; test -n "$(examplesdir)" || list=; \ |
647 | files=`for p in $$list; do echo "$$p"; done | \ | 652 | files=`for p in $$list; do echo "$$p"; done | \ |
648 | sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ | 653 | sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ |
649 | -e 's/$$/$(EXEEXT)/' `; \ | 654 | -e 's/$$/$(EXEEXT)/' `; \ |
650 | test -n "$$list" || exit 0; \ | 655 | test -n "$$list" || exit 0; \ |
651 | echo " ( cd '$(DESTDIR)$(pkglibdir)' && rm -f" $$files ")"; \ | 656 | echo " ( cd '$(DESTDIR)$(examplesdir)' && rm -f" $$files ")"; \ |
652 | cd "$(DESTDIR)$(pkglibdir)" && rm -f $$files | 657 | cd "$(DESTDIR)$(examplesdir)" && rm -f $$files |
653 | 658 | ||
654 | clean-pkglibPROGRAMS: | 659 | clean-examplesPROGRAMS: |
655 | @list='$(pkglib_PROGRAMS)'; test -n "$$list" || exit 0; \ | 660 | @list='$(examples_PROGRAMS)'; test -n "$$list" || exit 0; \ |
656 | echo " rm -f" $$list; \ | 661 | echo " rm -f" $$list; \ |
657 | rm -f $$list || exit $$?; \ | 662 | rm -f $$list || exit $$?; \ |
658 | test -n "$(EXEEXT)" || exit 0; \ | 663 | test -n "$(EXEEXT)" || exit 0; \ |
@@ -855,7 +860,7 @@ check-am: all-am | |||
855 | check: check-am | 860 | check: check-am |
856 | all-am: Makefile $(PROGRAMS) $(DATA) | 861 | all-am: Makefile $(PROGRAMS) $(DATA) |
857 | installdirs: | 862 | installdirs: |
858 | for dir in "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(filesdir)"; do \ | 863 | for dir in "$(DESTDIR)$(examplesdir)" "$(DESTDIR)$(filesdir)"; do \ |
859 | test -z "$$dir" || $(MKDIR_P) "$$dir"; \ | 864 | test -z "$$dir" || $(MKDIR_P) "$$dir"; \ |
860 | done | 865 | done |
861 | install: install-am | 866 | install: install-am |
@@ -886,7 +891,7 @@ maintainer-clean-generic: | |||
886 | -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) | 891 | -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) |
887 | clean: clean-am | 892 | clean: clean-am |
888 | 893 | ||
889 | clean-am: clean-generic clean-libtool clean-pkglibPROGRAMS \ | 894 | clean-am: clean-examplesPROGRAMS clean-generic clean-libtool \ |
890 | mostlyclean-am | 895 | mostlyclean-am |
891 | 896 | ||
892 | distclean: distclean-am | 897 | distclean: distclean-am |
@@ -907,13 +912,13 @@ info: info-am | |||
907 | 912 | ||
908 | info-am: | 913 | info-am: |
909 | 914 | ||
910 | install-data-am: install-filesDATA | 915 | install-data-am: install-examplesPROGRAMS install-filesDATA |
911 | 916 | ||
912 | install-dvi: install-dvi-am | 917 | install-dvi: install-dvi-am |
913 | 918 | ||
914 | install-dvi-am: | 919 | install-dvi-am: |
915 | 920 | ||
916 | install-exec-am: install-pkglibPROGRAMS | 921 | install-exec-am: |
917 | 922 | ||
918 | install-html: install-html-am | 923 | install-html: install-html-am |
919 | 924 | ||
@@ -953,24 +958,25 @@ ps: ps-am | |||
953 | 958 | ||
954 | ps-am: | 959 | ps-am: |
955 | 960 | ||
956 | uninstall-am: uninstall-filesDATA uninstall-pkglibPROGRAMS | 961 | uninstall-am: uninstall-examplesPROGRAMS uninstall-filesDATA |
957 | 962 | ||
958 | .MAKE: install-am install-strip | 963 | .MAKE: install-am install-strip |
959 | 964 | ||
960 | .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ | 965 | .PHONY: CTAGS GTAGS all all-am check check-am clean \ |
961 | clean-libtool clean-pkglibPROGRAMS ctags distclean \ | 966 | clean-examplesPROGRAMS clean-generic clean-libtool ctags \ |
962 | distclean-compile distclean-generic distclean-libtool \ | 967 | distclean distclean-compile distclean-generic \ |
963 | distclean-tags distdir dvi dvi-am html html-am info info-am \ | 968 | distclean-libtool distclean-tags distdir dvi dvi-am html \ |
964 | install install-am install-data install-data-am install-dvi \ | 969 | html-am info info-am install install-am install-data \ |
965 | install-dvi-am install-exec install-exec-am install-filesDATA \ | 970 | install-data-am install-dvi install-dvi-am \ |
966 | install-html install-html-am install-info install-info-am \ | 971 | install-examplesPROGRAMS install-exec install-exec-am \ |
967 | install-man install-pdf install-pdf-am install-pkglibPROGRAMS \ | 972 | install-filesDATA install-html install-html-am install-info \ |
973 | install-info-am install-man install-pdf install-pdf-am \ | ||
968 | install-ps install-ps-am install-strip installcheck \ | 974 | install-ps install-ps-am install-strip installcheck \ |
969 | installcheck-am installdirs maintainer-clean \ | 975 | installcheck-am installdirs maintainer-clean \ |
970 | maintainer-clean-generic mostlyclean mostlyclean-compile \ | 976 | maintainer-clean-generic mostlyclean mostlyclean-compile \ |
971 | mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ | 977 | mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ |
972 | tags uninstall uninstall-am uninstall-filesDATA \ | 978 | tags uninstall uninstall-am uninstall-examplesPROGRAMS \ |
973 | uninstall-pkglibPROGRAMS | 979 | uninstall-filesDATA |
974 | 980 | ||
975 | 981 | ||
976 | @BUILD_EXAMPLES_TRUE@aspect.edj: ${evas_aspect_hints_DEPS} | 982 | @BUILD_EXAMPLES_TRUE@aspect.edj: ${evas_aspect_hints_DEPS} |
diff --git a/libraries/evas/src/lib/Evas.h b/libraries/evas/src/lib/Evas.h index 5898290..b85bbeb 100644 --- a/libraries/evas/src/lib/Evas.h +++ b/libraries/evas/src/lib/Evas.h | |||
@@ -5,6 +5,7 @@ | |||
5 | @date 2000-2011 | 5 | @date 2000-2011 |
6 | 6 | ||
7 | Please see the @ref authors page for contact details. | 7 | Please see the @ref authors page for contact details. |
8 | |||
8 | @link Evas.h Evas API @endlink | 9 | @link Evas.h Evas API @endlink |
9 | 10 | ||
10 | @section toc Table of Contents | 11 | @section toc Table of Contents |
@@ -342,7 +343,7 @@ extern "C" { | |||
342 | #endif | 343 | #endif |
343 | 344 | ||
344 | #define EVAS_VERSION_MAJOR 1 | 345 | #define EVAS_VERSION_MAJOR 1 |
345 | #define EVAS_VERSION_MINOR 0 | 346 | #define EVAS_VERSION_MINOR 2 |
346 | 347 | ||
347 | typedef struct _Evas_Version | 348 | typedef struct _Evas_Version |
348 | { | 349 | { |
@@ -432,6 +433,9 @@ typedef enum _Evas_Callback_Type | |||
432 | */ | 433 | */ |
433 | EVAS_CALLBACK_IMAGE_UNLOADED, /**< Image data has been unloaded (by some mechanims in Evas that throw out original image data) */ | 434 | EVAS_CALLBACK_IMAGE_UNLOADED, /**< Image data has been unloaded (by some mechanims in Evas that throw out original image data) */ |
434 | 435 | ||
436 | EVAS_CALLBACK_RENDER_PRE, /**< Called just before rendering starts on the canvas target @since 1.2 */ | ||
437 | EVAS_CALLBACK_RENDER_POST, /**< Called just after rendering stops on the canvas target @since 1.2 */ | ||
438 | |||
435 | EVAS_CALLBACK_LAST /**< kept as last element/sentinel -- not really an event */ | 439 | EVAS_CALLBACK_LAST /**< kept as last element/sentinel -- not really an event */ |
436 | } Evas_Callback_Type; /**< The types of events triggering a callback */ | 440 | } Evas_Callback_Type; /**< The types of events triggering a callback */ |
437 | 441 | ||
@@ -1061,7 +1065,8 @@ struct _Evas_Event_Hold /** Hold change event */ | |||
1061 | typedef enum _Evas_Object_Pointer_Mode | 1065 | typedef enum _Evas_Object_Pointer_Mode |
1062 | { | 1066 | { |
1063 | EVAS_OBJECT_POINTER_MODE_AUTOGRAB, /**< default, X11-like */ | 1067 | EVAS_OBJECT_POINTER_MODE_AUTOGRAB, /**< default, X11-like */ |
1064 | EVAS_OBJECT_POINTER_MODE_NOGRAB /**< pointer always bound to the object right below it */ | 1068 | EVAS_OBJECT_POINTER_MODE_NOGRAB, /**< pointer always bound to the object right below it */ |
1069 | EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN /**< useful on object with "repeat events" enabled, where mouse/touch up and down events WONT be repeated to objects and these objects wont be auto-grabbed. @since 1.2 */ | ||
1065 | } Evas_Object_Pointer_Mode; /**< How the mouse pointer should be handled by Evas. */ | 1070 | } Evas_Object_Pointer_Mode; /**< How the mouse pointer should be handled by Evas. */ |
1066 | 1071 | ||
1067 | typedef void (*Evas_Smart_Cb) (void *data, Evas_Object *obj, void *event_info); /**< Evas smart objects' "smart callback" function signature */ | 1072 | typedef void (*Evas_Smart_Cb) (void *data, Evas_Object *obj, void *event_info); /**< Evas smart objects' "smart callback" function signature */ |
@@ -1220,7 +1225,7 @@ EAPI Evas_Alloc_Error evas_alloc_error (void); | |||
1220 | * | 1225 | * |
1221 | * @ingroup Evas_Group | 1226 | * @ingroup Evas_Group |
1222 | */ | 1227 | */ |
1223 | EAPI int evas_async_events_fd_get (void) EINA_WARN_UNUSED_RESULT EINA_PURE; | 1228 | EAPI int evas_async_events_fd_get (void) EINA_WARN_UNUSED_RESULT; |
1224 | 1229 | ||
1225 | /** | 1230 | /** |
1226 | * @brief Trigger the processing of all events waiting on the file | 1231 | * @brief Trigger the processing of all events waiting on the file |
@@ -1339,7 +1344,7 @@ EAPI void evas_focus_out (Evas *e); | |||
1339 | * @param e The evas to query information. | 1344 | * @param e The evas to query information. |
1340 | * @ingroup Evas_Canvas | 1345 | * @ingroup Evas_Canvas |
1341 | */ | 1346 | */ |
1342 | EAPI Eina_Bool evas_focus_state_get (const Evas *e) EINA_PURE; | 1347 | EAPI Eina_Bool evas_focus_state_get (const Evas *e); |
1343 | 1348 | ||
1344 | /** | 1349 | /** |
1345 | * Push the nochange flag up 1 | 1350 | * Push the nochange flag up 1 |
@@ -1380,7 +1385,7 @@ EAPI void evas_data_attach_set (Evas *e, void *data) E | |||
1380 | * @return The pointer attached | 1385 | * @return The pointer attached |
1381 | * @ingroup Evas_Canvas | 1386 | * @ingroup Evas_Canvas |
1382 | */ | 1387 | */ |
1383 | EAPI void *evas_data_attach_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 1388 | EAPI void *evas_data_attach_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
1384 | 1389 | ||
1385 | 1390 | ||
1386 | /** | 1391 | /** |
@@ -1747,7 +1752,7 @@ EAPI void evas_output_method_set (Evas *e, int render_me | |||
1747 | * returned if there is an error. | 1752 | * returned if there is an error. |
1748 | * @ingroup Evas_Output_Method | 1753 | * @ingroup Evas_Output_Method |
1749 | */ | 1754 | */ |
1750 | EAPI int evas_output_method_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 1755 | EAPI int evas_output_method_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
1751 | 1756 | ||
1752 | 1757 | ||
1753 | /** | 1758 | /** |
@@ -1764,7 +1769,7 @@ EAPI int evas_output_method_get (const Evas *e) EINA_WA | |||
1764 | * an engine has not yet been assigned. | 1769 | * an engine has not yet been assigned. |
1765 | * @ingroup Evas_Output_Method | 1770 | * @ingroup Evas_Output_Method |
1766 | */ | 1771 | */ |
1767 | EAPI Evas_Engine_Info *evas_engine_info_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 1772 | EAPI Evas_Engine_Info *evas_engine_info_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
1768 | 1773 | ||
1769 | /** | 1774 | /** |
1770 | * Applies the engine settings for the given evas from the given @c | 1775 | * Applies the engine settings for the given evas from the given @c |
@@ -1876,6 +1881,38 @@ EAPI void evas_output_viewport_set (Evas *e, Evas_Coord x, | |||
1876 | EAPI void evas_output_viewport_get (const Evas *e, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1); | 1881 | EAPI void evas_output_viewport_get (const Evas *e, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1); |
1877 | 1882 | ||
1878 | /** | 1883 | /** |
1884 | * Sets the output framespace size of the render engine of the given evas. | ||
1885 | * | ||
1886 | * The framespace size is used in the Wayland engines to denote space where | ||
1887 | * the output is not drawn. This is mainly used in ecore_evas to draw borders | ||
1888 | * | ||
1889 | * The units used for @p w and @p h depend on the engine used by the | ||
1890 | * evas. | ||
1891 | * | ||
1892 | * @param e The given evas. | ||
1893 | * @param x The left coordinate in output units, usually pixels. | ||
1894 | * @param y The top coordinate in output units, usually pixels. | ||
1895 | * @param w The width in output units, usually pixels. | ||
1896 | * @param h The height in output units, usually pixels. | ||
1897 | * @ingroup Evas_Output_Size | ||
1898 | * @since 1.1.0 | ||
1899 | */ | ||
1900 | EAPI void evas_output_framespace_set (Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h); | ||
1901 | |||
1902 | /** | ||
1903 | * Get the render engine's output framespace co-ordinates in canvas units. | ||
1904 | * | ||
1905 | * @param e The pointer to the Evas Canvas | ||
1906 | * @param x The pointer to a x variable to be filled in | ||
1907 | * @param y The pointer to a y variable to be filled in | ||
1908 | * @param w The pointer to a width variable to be filled in | ||
1909 | * @param h The pointer to a height variable to be filled in | ||
1910 | * @ingroup Evas_Output_Size | ||
1911 | * @since 1.1.0 | ||
1912 | */ | ||
1913 | EAPI void evas_output_framespace_get (const Evas *e, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h); | ||
1914 | |||
1915 | /** | ||
1879 | * @defgroup Evas_Coord_Mapping_Group Coordinate Mapping Functions | 1916 | * @defgroup Evas_Coord_Mapping_Group Coordinate Mapping Functions |
1880 | * | 1917 | * |
1881 | * Functions that are used to map coordinates from the canvas to the | 1918 | * Functions that are used to map coordinates from the canvas to the |
@@ -2342,6 +2379,33 @@ EAPI void evas_post_event_callback_remove_full (Evas *e, Evas_Objec | |||
2342 | */ | 2379 | */ |
2343 | 2380 | ||
2344 | /** | 2381 | /** |
2382 | * Set the default set of flags an event begins with | ||
2383 | * | ||
2384 | * @param e The canvas to set the default event flags of | ||
2385 | * @param flags The default flags to use | ||
2386 | * | ||
2387 | * Events in evas can have an event_flags member. This starts out with | ||
2388 | * and initial value (no flags). this lets you set the default flags that | ||
2389 | * an event begins with to be @p flags | ||
2390 | * | ||
2391 | * @since 1.2 | ||
2392 | */ | ||
2393 | EAPI void evas_event_default_flags_set (Evas *e, Evas_Event_Flags flags) EINA_ARG_NONNULL(1); | ||
2394 | |||
2395 | /** | ||
2396 | * Get the defaulty set of flags an event begins with | ||
2397 | * | ||
2398 | * @param e The canvas to get the default event flags from | ||
2399 | * @return The default event flags for that canvas | ||
2400 | * | ||
2401 | * This gets the default event flags events are produced with when fed in. | ||
2402 | * | ||
2403 | * @see evas_event_default_flags_set() | ||
2404 | * @since 1.2 | ||
2405 | */ | ||
2406 | EAPI Evas_Event_Flags evas_event_default_flags_get (const Evas *e) EINA_ARG_NONNULL(1); | ||
2407 | |||
2408 | /** | ||
2345 | * Freeze all input events processing. | 2409 | * Freeze all input events processing. |
2346 | * | 2410 | * |
2347 | * @param e The canvas to freeze input events processing on. | 2411 | * @param e The canvas to freeze input events processing on. |
@@ -2407,7 +2471,7 @@ EAPI void evas_event_thaw (Evas *e) EINA_ARG_NONN | |||
2407 | * @endcode | 2471 | * @endcode |
2408 | * | 2472 | * |
2409 | */ | 2473 | */ |
2410 | EAPI int evas_event_freeze_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 2474 | EAPI int evas_event_freeze_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
2411 | 2475 | ||
2412 | /** | 2476 | /** |
2413 | * After thaw of a canvas, re-evaluate the state of objects and call callbacks | 2477 | * After thaw of a canvas, re-evaluate the state of objects and call callbacks |
@@ -2448,6 +2512,16 @@ EAPI void evas_event_thaw_eval (Evas *e) EINA_ARG_NONN | |||
2448 | */ | 2512 | */ |
2449 | 2513 | ||
2450 | /** | 2514 | /** |
2515 | * Get the number of mouse or multi presses currently active | ||
2516 | * | ||
2517 | * @p e The given canvas pointer. | ||
2518 | * @return The numer of presses (0 if none active). | ||
2519 | * | ||
2520 | * @since 1.2 | ||
2521 | */ | ||
2522 | EAPI int evas_event_down_count_get (const Evas *e) EINA_ARG_NONNULL(1); | ||
2523 | |||
2524 | /** | ||
2451 | * Mouse down event feed. | 2525 | * Mouse down event feed. |
2452 | * | 2526 | * |
2453 | * @param e The given canvas pointer. | 2527 | * @param e The given canvas pointer. |
@@ -2679,7 +2753,7 @@ EAPI void evas_image_cache_set (Evas *e, int size) EIN | |||
2679 | * This function returns the image cache size of canvas in bytes. | 2753 | * This function returns the image cache size of canvas in bytes. |
2680 | * | 2754 | * |
2681 | */ | 2755 | */ |
2682 | EAPI int evas_image_cache_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 2756 | EAPI int evas_image_cache_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
2683 | 2757 | ||
2684 | /** | 2758 | /** |
2685 | * Get the maximum image size evas can possibly handle | 2759 | * Get the maximum image size evas can possibly handle |
@@ -2728,7 +2802,7 @@ EAPI void evas_font_hinting_set (Evas *e, Evas_Font_H | |||
2728 | * #EVAS_FONT_HINTING_AUTO, #EVAS_FONT_HINTING_BYTECODE. | 2802 | * #EVAS_FONT_HINTING_AUTO, #EVAS_FONT_HINTING_BYTECODE. |
2729 | * @ingroup Evas_Font_Group | 2803 | * @ingroup Evas_Font_Group |
2730 | */ | 2804 | */ |
2731 | EAPI Evas_Font_Hinting_Flags evas_font_hinting_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 2805 | EAPI Evas_Font_Hinting_Flags evas_font_hinting_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
2732 | 2806 | ||
2733 | /** | 2807 | /** |
2734 | * Checks if the font hinting is supported by the given evas. | 2808 | * Checks if the font hinting is supported by the given evas. |
@@ -2739,7 +2813,7 @@ EAPI Evas_Font_Hinting_Flags evas_font_hinting_get (const Evas *e) EINA_ | |||
2739 | * @return @c EINA_TRUE if it is supported, @c EINA_FALSE otherwise. | 2813 | * @return @c EINA_TRUE if it is supported, @c EINA_FALSE otherwise. |
2740 | * @ingroup Evas_Font_Group | 2814 | * @ingroup Evas_Font_Group |
2741 | */ | 2815 | */ |
2742 | EAPI Eina_Bool evas_font_hinting_can_hint (const Evas *e, Evas_Font_Hinting_Flags hinting) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 2816 | EAPI Eina_Bool evas_font_hinting_can_hint (const Evas *e, Evas_Font_Hinting_Flags hinting) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
2743 | 2817 | ||
2744 | 2818 | ||
2745 | /** | 2819 | /** |
@@ -2768,7 +2842,7 @@ EAPI void evas_font_cache_set (Evas *e, int size) E | |||
2768 | * | 2842 | * |
2769 | * @ingroup Evas_Font_Group | 2843 | * @ingroup Evas_Font_Group |
2770 | */ | 2844 | */ |
2771 | EAPI int evas_font_cache_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 2845 | EAPI int evas_font_cache_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
2772 | 2846 | ||
2773 | 2847 | ||
2774 | /** | 2848 | /** |
@@ -2785,7 +2859,7 @@ EAPI int evas_font_cache_get (const Evas *e) EINA_ | |||
2785 | * | 2859 | * |
2786 | * @ingroup Evas_Font_Group | 2860 | * @ingroup Evas_Font_Group |
2787 | */ | 2861 | */ |
2788 | EAPI Eina_List *evas_font_available_list (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 2862 | EAPI Eina_List *evas_font_available_list (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
2789 | 2863 | ||
2790 | /** | 2864 | /** |
2791 | * Free list of font descriptions returned by evas_font_dir_available_list(). | 2865 | * Free list of font descriptions returned by evas_font_dir_available_list(). |
@@ -2834,7 +2908,7 @@ EAPI void evas_font_path_prepend (Evas *e, const char *p | |||
2834 | * @return The list of font paths used. | 2908 | * @return The list of font paths used. |
2835 | * @ingroup Evas_Font_Path_Group | 2909 | * @ingroup Evas_Font_Path_Group |
2836 | */ | 2910 | */ |
2837 | EAPI const Eina_List *evas_font_path_list (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 2911 | EAPI const Eina_List *evas_font_path_list (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
2838 | 2912 | ||
2839 | /** | 2913 | /** |
2840 | * @defgroup Evas_Object_Group Generic Object Functions | 2914 | * @defgroup Evas_Object_Group Generic Object Functions |
@@ -2958,7 +3032,7 @@ EAPI void evas_object_clip_set (Evas_Object *obj, Evas | |||
2958 | * | 3032 | * |
2959 | * See the full @ref Example_Evas_Object_Manipulation "example". | 3033 | * See the full @ref Example_Evas_Object_Manipulation "example". |
2960 | */ | 3034 | */ |
2961 | EAPI Evas_Object *evas_object_clip_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 3035 | EAPI Evas_Object *evas_object_clip_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
2962 | 3036 | ||
2963 | /** | 3037 | /** |
2964 | * Disable/cease clipping on a clipped @p obj object. | 3038 | * Disable/cease clipping on a clipped @p obj object. |
@@ -3015,7 +3089,7 @@ EAPI void evas_object_clip_unset (Evas_Object *obj); | |||
3015 | * } | 3089 | * } |
3016 | * @endcode | 3090 | * @endcode |
3017 | */ | 3091 | */ |
3018 | EAPI const Eina_List *evas_object_clipees_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 3092 | EAPI const Eina_List *evas_object_clipees_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
3019 | 3093 | ||
3020 | 3094 | ||
3021 | /** | 3095 | /** |
@@ -3068,7 +3142,7 @@ EAPI void evas_object_focus_set (Evas_Object *obj, Eina | |||
3068 | * @see evas_object_key_grab | 3142 | * @see evas_object_key_grab |
3069 | * @see evas_object_key_ungrab | 3143 | * @see evas_object_key_ungrab |
3070 | */ | 3144 | */ |
3071 | EAPI Eina_Bool evas_object_focus_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 3145 | EAPI Eina_Bool evas_object_focus_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
3072 | 3146 | ||
3073 | 3147 | ||
3074 | /** | 3148 | /** |
@@ -3104,7 +3178,7 @@ EAPI void evas_object_layer_set (Evas_Object *obj, shor | |||
3104 | * | 3178 | * |
3105 | * @see evas_object_layer_set() | 3179 | * @see evas_object_layer_set() |
3106 | */ | 3180 | */ |
3107 | EAPI short evas_object_layer_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 3181 | EAPI short evas_object_layer_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
3108 | 3182 | ||
3109 | 3183 | ||
3110 | /** | 3184 | /** |
@@ -3139,7 +3213,7 @@ EAPI void evas_object_name_set (Evas_Object *obj, cons | |||
3139 | * | 3213 | * |
3140 | * See the full @ref Example_Evas_Events "example". | 3214 | * See the full @ref Example_Evas_Events "example". |
3141 | */ | 3215 | */ |
3142 | EAPI const char *evas_object_name_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 3216 | EAPI const char *evas_object_name_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
3143 | 3217 | ||
3144 | 3218 | ||
3145 | /** | 3219 | /** |
@@ -3382,7 +3456,7 @@ EAPI void evas_object_hide (Evas_Object *obj) EINA | |||
3382 | * | 3456 | * |
3383 | * @ingroup Evas_Object_Group_Basic | 3457 | * @ingroup Evas_Object_Group_Basic |
3384 | */ | 3458 | */ |
3385 | EAPI Eina_Bool evas_object_visible_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 3459 | EAPI Eina_Bool evas_object_visible_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
3386 | 3460 | ||
3387 | 3461 | ||
3388 | /** | 3462 | /** |
@@ -3455,7 +3529,7 @@ EAPI void evas_object_color_get (const Evas_Object *obj | |||
3455 | * | 3529 | * |
3456 | * @ingroup Evas_Object_Group_Basic | 3530 | * @ingroup Evas_Object_Group_Basic |
3457 | */ | 3531 | */ |
3458 | EAPI Evas *evas_object_evas_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 3532 | EAPI Evas *evas_object_evas_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
3459 | 3533 | ||
3460 | /** | 3534 | /** |
3461 | * Retrieves the type of the given Evas object. | 3535 | * Retrieves the type of the given Evas object. |
@@ -3485,7 +3559,7 @@ EAPI Evas *evas_object_evas_get (const Evas_Object *obj | |||
3485 | * | 3559 | * |
3486 | * See the full @ref Example_Evas_Object_Manipulation "example". | 3560 | * See the full @ref Example_Evas_Object_Manipulation "example". |
3487 | */ | 3561 | */ |
3488 | EAPI const char *evas_object_type_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 3562 | EAPI const char *evas_object_type_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
3489 | 3563 | ||
3490 | /** | 3564 | /** |
3491 | * Raise @p obj to the top of its layer. | 3565 | * Raise @p obj to the top of its layer. |
@@ -3586,7 +3660,7 @@ EAPI void evas_object_stack_below (Evas_Object *obj, Evas | |||
3586 | * @see evas_object_below_get() | 3660 | * @see evas_object_below_get() |
3587 | * | 3661 | * |
3588 | */ | 3662 | */ |
3589 | EAPI Evas_Object *evas_object_above_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 3663 | EAPI Evas_Object *evas_object_above_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
3590 | 3664 | ||
3591 | /** | 3665 | /** |
3592 | * Get the Evas object stacked right below @p obj | 3666 | * Get the Evas object stacked right below @p obj |
@@ -3602,7 +3676,7 @@ EAPI Evas_Object *evas_object_above_get (const Evas_Object *obj | |||
3602 | * @see evas_object_layer_set() | 3676 | * @see evas_object_layer_set() |
3603 | * @see evas_object_below_get() | 3677 | * @see evas_object_below_get() |
3604 | */ | 3678 | */ |
3605 | EAPI Evas_Object *evas_object_below_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 3679 | EAPI Evas_Object *evas_object_below_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
3606 | 3680 | ||
3607 | /** | 3681 | /** |
3608 | * @} | 3682 | * @} |
@@ -3946,7 +4020,7 @@ EAPI void evas_object_pass_events_set (Evas_Object *obj, Ein | |||
3946 | * @see evas_object_propagate_events_get() | 4020 | * @see evas_object_propagate_events_get() |
3947 | * @see evas_object_freeze_events_get() | 4021 | * @see evas_object_freeze_events_get() |
3948 | */ | 4022 | */ |
3949 | EAPI Eina_Bool evas_object_pass_events_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 4023 | EAPI Eina_Bool evas_object_pass_events_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
3950 | 4024 | ||
3951 | /** | 4025 | /** |
3952 | * Set whether an Evas object is to repeat events. | 4026 | * Set whether an Evas object is to repeat events. |
@@ -3988,7 +4062,7 @@ EAPI void evas_object_repeat_events_set (Evas_Object *obj, Ein | |||
3988 | * @see evas_object_propagate_events_get() | 4062 | * @see evas_object_propagate_events_get() |
3989 | * @see evas_object_freeze_events_get() | 4063 | * @see evas_object_freeze_events_get() |
3990 | */ | 4064 | */ |
3991 | EAPI Eina_Bool evas_object_repeat_events_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 4065 | EAPI Eina_Bool evas_object_repeat_events_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
3992 | 4066 | ||
3993 | /** | 4067 | /** |
3994 | * Set whether events on a smart object's member should get propagated | 4068 | * Set whether events on a smart object's member should get propagated |
@@ -4026,7 +4100,7 @@ EAPI void evas_object_propagate_events_set (Evas_Object *obj, Ein | |||
4026 | * @see evas_object_pass_events_get() | 4100 | * @see evas_object_pass_events_get() |
4027 | * @see evas_object_freeze_events_get() | 4101 | * @see evas_object_freeze_events_get() |
4028 | */ | 4102 | */ |
4029 | EAPI Eina_Bool evas_object_propagate_events_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 4103 | EAPI Eina_Bool evas_object_propagate_events_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
4030 | 4104 | ||
4031 | /** | 4105 | /** |
4032 | * Set whether an Evas object is to freeze (discard) events. | 4106 | * Set whether an Evas object is to freeze (discard) events. |
@@ -4064,7 +4138,7 @@ EAPI void evas_object_freeze_events_set(Evas_Object *obj, Eina_Bool | |||
4064 | * @see evas_object_propagate_events_get() | 4138 | * @see evas_object_propagate_events_get() |
4065 | * @since 1.1.0 | 4139 | * @since 1.1.0 |
4066 | */ | 4140 | */ |
4067 | EAPI Eina_Bool evas_object_freeze_events_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 4141 | EAPI Eina_Bool evas_object_freeze_events_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
4068 | 4142 | ||
4069 | /** | 4143 | /** |
4070 | * @} | 4144 | * @} |
@@ -5028,7 +5102,7 @@ EAPI void evas_object_size_hint_min_get (const Evas_Object *obj | |||
5028 | * @skip evas_object_size_hint_min_set | 5102 | * @skip evas_object_size_hint_min_set |
5029 | * @until return | 5103 | * @until return |
5030 | * | 5104 | * |
5031 | * In this example the minimum size hints change de behavior of an | 5105 | * In this example the minimum size hints change the behavior of an |
5032 | * Evas box when layouting its children. See the full @ref | 5106 | * Evas box when layouting its children. See the full @ref |
5033 | * Example_Evas_Size_Hints "example". | 5107 | * Example_Evas_Size_Hints "example". |
5034 | * | 5108 | * |
@@ -5072,7 +5146,7 @@ EAPI void evas_object_size_hint_max_get (const Evas_Object *obj | |||
5072 | * @skip evas_object_size_hint_max_set | 5146 | * @skip evas_object_size_hint_max_set |
5073 | * @until return | 5147 | * @until return |
5074 | * | 5148 | * |
5075 | * In this example the maximum size hints change de behavior of an | 5149 | * In this example the maximum size hints change the behavior of an |
5076 | * Evas box when layouting its children. See the full @ref | 5150 | * Evas box when layouting its children. See the full @ref |
5077 | * Example_Evas_Size_Hints "example". | 5151 | * Example_Evas_Size_Hints "example". |
5078 | * | 5152 | * |
@@ -5247,7 +5321,7 @@ EAPI void evas_object_size_hint_align_get (const Evas_Object *obj | |||
5247 | * @skip evas_object_size_hint_align_set | 5321 | * @skip evas_object_size_hint_align_set |
5248 | * @until return | 5322 | * @until return |
5249 | * | 5323 | * |
5250 | * In this example the alignment hints change de behavior of an Evas | 5324 | * In this example the alignment hints change the behavior of an Evas |
5251 | * box when layouting its children. See the full @ref | 5325 | * box when layouting its children. See the full @ref |
5252 | * Example_Evas_Size_Hints "example". | 5326 | * Example_Evas_Size_Hints "example". |
5253 | * | 5327 | * |
@@ -5306,7 +5380,7 @@ EAPI void evas_object_size_hint_weight_get (const Evas_Object *obj | |||
5306 | * @skip evas_object_size_hint_weight_set | 5380 | * @skip evas_object_size_hint_weight_set |
5307 | * @until return | 5381 | * @until return |
5308 | * | 5382 | * |
5309 | * In this example the weight hints change de behavior of an Evas box | 5383 | * In this example the weight hints change the behavior of an Evas box |
5310 | * when layouting its children. See the full @ref | 5384 | * when layouting its children. See the full @ref |
5311 | * Example_Evas_Size_Hints "example". | 5385 | * Example_Evas_Size_Hints "example". |
5312 | * | 5386 | * |
@@ -5342,7 +5416,7 @@ EAPI void evas_object_size_hint_weight_set (Evas_Object *obj, doub | |||
5342 | * @skip evas_object_size_hint_padding_set | 5416 | * @skip evas_object_size_hint_padding_set |
5343 | * @until return | 5417 | * @until return |
5344 | * | 5418 | * |
5345 | * In this example the padding hints change de behavior of an Evas box | 5419 | * In this example the padding hints change the behavior of an Evas box |
5346 | * when layouting its children. See the full @ref | 5420 | * when layouting its children. See the full @ref |
5347 | * Example_Evas_Size_Hints "example". | 5421 | * Example_Evas_Size_Hints "example". |
5348 | * | 5422 | * |
@@ -5456,7 +5530,7 @@ EAPI void evas_object_data_set (Evas_Object *ob | |||
5456 | * else printf("No data was stored on the object\n"); | 5530 | * else printf("No data was stored on the object\n"); |
5457 | * @endcode | 5531 | * @endcode |
5458 | */ | 5532 | */ |
5459 | EAPI void *evas_object_data_get (const Evas_Object *obj, const char *key) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 5533 | EAPI void *evas_object_data_get (const Evas_Object *obj, const char *key) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
5460 | 5534 | ||
5461 | /** | 5535 | /** |
5462 | * Delete an attached data pointer from an object. | 5536 | * Delete an attached data pointer from an object. |
@@ -5510,7 +5584,7 @@ EAPI void evas_object_pointer_mode_set (Evas_Object *ob | |||
5510 | * @return pointer behavior. | 5584 | * @return pointer behavior. |
5511 | * @ingroup Evas_Object_Group_Extras | 5585 | * @ingroup Evas_Object_Group_Extras |
5512 | */ | 5586 | */ |
5513 | EAPI Evas_Object_Pointer_Mode evas_object_pointer_mode_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5587 | EAPI Evas_Object_Pointer_Mode evas_object_pointer_mode_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5514 | 5588 | ||
5515 | 5589 | ||
5516 | /** | 5590 | /** |
@@ -5528,7 +5602,7 @@ EAPI void evas_object_anti_alias_set (Evas_Object *ob | |||
5528 | * @return @c 1 if the object is to be anti_aliased. @c 0 otherwise. | 5602 | * @return @c 1 if the object is to be anti_aliased. @c 0 otherwise. |
5529 | * @ingroup Evas_Object_Group_Extras | 5603 | * @ingroup Evas_Object_Group_Extras |
5530 | */ | 5604 | */ |
5531 | EAPI Eina_Bool evas_object_anti_alias_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5605 | EAPI Eina_Bool evas_object_anti_alias_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5532 | 5606 | ||
5533 | 5607 | ||
5534 | /** | 5608 | /** |
@@ -5562,7 +5636,7 @@ EAPI void evas_object_scale_set (Evas_Object *ob | |||
5562 | * | 5636 | * |
5563 | * @see evas_object_scale_set() | 5637 | * @see evas_object_scale_set() |
5564 | */ | 5638 | */ |
5565 | EAPI double evas_object_scale_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5639 | EAPI double evas_object_scale_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5566 | 5640 | ||
5567 | 5641 | ||
5568 | /** | 5642 | /** |
@@ -5579,7 +5653,7 @@ EAPI void evas_object_render_op_set (Evas_Object *ob | |||
5579 | * @return one of the enumerated values in Evas_Render_Op. | 5653 | * @return one of the enumerated values in Evas_Render_Op. |
5580 | * @ingroup Evas_Object_Group_Extras | 5654 | * @ingroup Evas_Object_Group_Extras |
5581 | */ | 5655 | */ |
5582 | EAPI Evas_Render_Op evas_object_render_op_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5656 | EAPI Evas_Render_Op evas_object_render_op_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5583 | 5657 | ||
5584 | /** | 5658 | /** |
5585 | * Set whether to use precise (usually expensive) point collision | 5659 | * Set whether to use precise (usually expensive) point collision |
@@ -5621,7 +5695,7 @@ EAPI Evas_Render_Op evas_object_render_op_get (const Evas_Obje | |||
5621 | * | 5695 | * |
5622 | * @ingroup Evas_Object_Group_Extras | 5696 | * @ingroup Evas_Object_Group_Extras |
5623 | */ | 5697 | */ |
5624 | EAPI Eina_Bool evas_object_precise_is_inside_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5698 | EAPI Eina_Bool evas_object_precise_is_inside_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5625 | 5699 | ||
5626 | /** | 5700 | /** |
5627 | * Set a hint flag on the given Evas object that it's used as a "static | 5701 | * Set a hint flag on the given Evas object that it's used as a "static |
@@ -5653,7 +5727,7 @@ EAPI Evas_Render_Op evas_object_render_op_get (const Evas_Obje | |||
5653 | * | 5727 | * |
5654 | * @ingroup Evas_Object_Group_Extras | 5728 | * @ingroup Evas_Object_Group_Extras |
5655 | */ | 5729 | */ |
5656 | EAPI Eina_Bool evas_object_static_clip_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5730 | EAPI Eina_Bool evas_object_static_clip_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5657 | 5731 | ||
5658 | /** | 5732 | /** |
5659 | * @} | 5733 | * @} |
@@ -5710,7 +5784,7 @@ EAPI Evas_Render_Op evas_object_render_op_get (const Evas_Obje | |||
5710 | * | 5784 | * |
5711 | * @ingroup Evas_Object_Group_Find | 5785 | * @ingroup Evas_Object_Group_Find |
5712 | */ | 5786 | */ |
5713 | EAPI Evas_Object *evas_focus_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5787 | EAPI Evas_Object *evas_focus_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5714 | 5788 | ||
5715 | /** | 5789 | /** |
5716 | * Retrieves the object on the given evas with the given name. | 5790 | * Retrieves the object on the given evas with the given name. |
@@ -5718,9 +5792,36 @@ EAPI Evas_Object *evas_focus_get (const Evas *e) EINA_WA | |||
5718 | * @param name The given name. | 5792 | * @param name The given name. |
5719 | * @return If successful, the Evas object with the given name. Otherwise, | 5793 | * @return If successful, the Evas object with the given name. Otherwise, |
5720 | * @c NULL. | 5794 | * @c NULL. |
5795 | * | ||
5796 | * This looks for the evas object given a name by evas_object_name_set(). If | ||
5797 | * the name is not unique canvas-wide, then which one of the many objects | ||
5798 | * with that name is returned is undefined, so only use this if you can ensure | ||
5799 | * the object name is unique. | ||
5800 | * | ||
5801 | * @ingroup Evas_Object_Group_Find | ||
5802 | */ | ||
5803 | EAPI Evas_Object *evas_object_name_find (const Evas *e, const char *name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); | ||
5804 | |||
5805 | /** | ||
5806 | * Retrieves the object from children of the given object with the given name. | ||
5807 | * @param obj The parent (smart) object whose children to search. | ||
5808 | * @param name The given name. | ||
5809 | * @param recurse Set to the number of child levels to recurse (0 == don't recurse, 1 == only look at the children of @p obj or their immediate children, but no further etc.). | ||
5810 | * @return If successful, the Evas object with the given name. Otherwise, | ||
5811 | * @c NULL. | ||
5812 | * | ||
5813 | * This looks for the evas object given a name by evas_object_name_set(), but | ||
5814 | * it ONLY looks at the children of the object *p obj, and will only recurse | ||
5815 | * into those children if @p recurse is greater than 0. If the name is not | ||
5816 | * unique within immediate children (or the whole child tree) then it is not | ||
5817 | * defined which child object will be returned. If @p recurse is set to -1 then | ||
5818 | * it will recurse without limit. | ||
5819 | * | ||
5820 | * @since 1.2 | ||
5821 | * | ||
5721 | * @ingroup Evas_Object_Group_Find | 5822 | * @ingroup Evas_Object_Group_Find |
5722 | */ | 5823 | */ |
5723 | EAPI Evas_Object *evas_object_name_find (const Evas *e, const char *name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5824 | EAPI Evas_Object *evas_object_name_child_find (const Evas_Object *obj, const char *name, int recurse) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5724 | 5825 | ||
5725 | /** | 5826 | /** |
5726 | * Retrieve the Evas object stacked at the top of a given position in | 5827 | * Retrieve the Evas object stacked at the top of a given position in |
@@ -5745,7 +5846,7 @@ EAPI Evas_Object *evas_object_name_find (const Evas *e, const c | |||
5745 | * objects, acting only on the ones at the "top level", with regard to | 5846 | * objects, acting only on the ones at the "top level", with regard to |
5746 | * object parenting. | 5847 | * object parenting. |
5747 | */ | 5848 | */ |
5748 | EAPI Evas_Object *evas_object_top_at_xy_get (const Evas *e, Evas_Coord x, Evas_Coord y, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5849 | EAPI Evas_Object *evas_object_top_at_xy_get (const Evas *e, Evas_Coord x, Evas_Coord y, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5749 | 5850 | ||
5750 | /** | 5851 | /** |
5751 | * Retrieve the Evas object stacked at the top at the position of the | 5852 | * Retrieve the Evas object stacked at the top at the position of the |
@@ -5763,7 +5864,7 @@ EAPI Evas_Object *evas_object_top_at_xy_get (const Evas *e, Evas_Co | |||
5763 | * objects, acting only on the ones at the "top level", with regard to | 5864 | * objects, acting only on the ones at the "top level", with regard to |
5764 | * object parenting. | 5865 | * object parenting. |
5765 | */ | 5866 | */ |
5766 | EAPI Evas_Object *evas_object_top_at_pointer_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5867 | EAPI Evas_Object *evas_object_top_at_pointer_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5767 | 5868 | ||
5768 | /** | 5869 | /** |
5769 | * Retrieve the Evas object stacked at the top of a given rectangular | 5870 | * Retrieve the Evas object stacked at the top of a given rectangular |
@@ -5793,7 +5894,7 @@ EAPI Evas_Object *evas_object_top_at_pointer_get (const Evas *e) EINA_WA | |||
5793 | * objects, acting only on the ones at the "top level", with regard to | 5894 | * objects, acting only on the ones at the "top level", with regard to |
5794 | * object parenting. | 5895 | * object parenting. |
5795 | */ | 5896 | */ |
5796 | EAPI Evas_Object *evas_object_top_in_rectangle_get (const Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5897 | EAPI Evas_Object *evas_object_top_in_rectangle_get (const Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5797 | 5898 | ||
5798 | /** | 5899 | /** |
5799 | * Retrieve a list of Evas objects lying over a given position in | 5900 | * Retrieve a list of Evas objects lying over a given position in |
@@ -5818,8 +5919,8 @@ EAPI Evas_Object *evas_object_top_in_rectangle_get (const Evas *e, Evas_Co | |||
5818 | * objects, acting only on the ones at the "top level", with regard to | 5919 | * objects, acting only on the ones at the "top level", with regard to |
5819 | * object parenting. | 5920 | * object parenting. |
5820 | */ | 5921 | */ |
5821 | EAPI Eina_List *evas_objects_at_xy_get (const Evas *e, Evas_Coord x, Evas_Coord y, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5922 | EAPI Eina_List *evas_objects_at_xy_get (const Evas *e, Evas_Coord x, Evas_Coord y, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5822 | EAPI Eina_List *evas_objects_in_rectangle_get (const Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5923 | EAPI Eina_List *evas_objects_in_rectangle_get (const Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5823 | 5924 | ||
5824 | /** | 5925 | /** |
5825 | * Get the lowest (stacked) Evas object on the canvas @p | 5926 | * Get the lowest (stacked) Evas object on the canvas @p |
@@ -5840,7 +5941,7 @@ EAPI Eina_List *evas_objects_at_xy_get (const Evas *e, Evas_Co | |||
5840 | * objects, acting only on the ones at the "top level", with regard to | 5941 | * objects, acting only on the ones at the "top level", with regard to |
5841 | * object parenting. | 5942 | * object parenting. |
5842 | */ | 5943 | */ |
5843 | EAPI Evas_Object *evas_object_bottom_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5944 | EAPI Evas_Object *evas_object_bottom_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5844 | 5945 | ||
5845 | /** | 5946 | /** |
5846 | * Get the highest (stacked) Evas object on the canvas @p | 5947 | * Get the highest (stacked) Evas object on the canvas @p |
@@ -5862,7 +5963,7 @@ EAPI Evas_Object *evas_object_bottom_get (const Evas *e) EINA_WA | |||
5862 | * objects, acting only on the ones at the "top level", with regard to | 5963 | * objects, acting only on the ones at the "top level", with regard to |
5863 | * object parenting. | 5964 | * object parenting. |
5864 | */ | 5965 | */ |
5865 | EAPI Evas_Object *evas_object_top_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5966 | EAPI Evas_Object *evas_object_top_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5866 | 5967 | ||
5867 | /** | 5968 | /** |
5868 | * @} | 5969 | * @} |
@@ -6502,7 +6603,7 @@ EAPI void evas_object_image_border_center_fill_set (Evas_Obj | |||
6502 | * | 6603 | * |
6503 | * See @ref evas_object_image_fill_set() for more details. | 6604 | * See @ref evas_object_image_fill_set() for more details. |
6504 | */ | 6605 | */ |
6505 | EAPI Evas_Border_Fill_Mode evas_object_image_border_center_fill_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 6606 | EAPI Evas_Border_Fill_Mode evas_object_image_border_center_fill_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
6506 | 6607 | ||
6507 | /** | 6608 | /** |
6508 | * Set whether the image object's fill property should track the | 6609 | * Set whether the image object's fill property should track the |
@@ -6532,7 +6633,7 @@ EAPI void evas_object_image_filled_set (Evas_Obj | |||
6532 | * | 6633 | * |
6533 | * @see evas_object_image_filled_set() for more information | 6634 | * @see evas_object_image_filled_set() for more information |
6534 | */ | 6635 | */ |
6535 | EAPI Eina_Bool evas_object_image_filled_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 6636 | EAPI Eina_Bool evas_object_image_filled_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
6536 | 6637 | ||
6537 | /** | 6638 | /** |
6538 | * Sets the scaling factor (multiplier) for the borders of an image | 6639 | * Sets the scaling factor (multiplier) for the borders of an image |
@@ -6633,7 +6734,7 @@ EAPI void evas_object_image_fill_spread_set (Evas_Obj | |||
6633 | * @param obj The given evas image object. | 6734 | * @param obj The given evas image object. |
6634 | * @return The current spread mode of the image object. | 6735 | * @return The current spread mode of the image object. |
6635 | */ | 6736 | */ |
6636 | EAPI Evas_Fill_Spread evas_object_image_fill_spread_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 6737 | EAPI Evas_Fill_Spread evas_object_image_fill_spread_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
6637 | 6738 | ||
6638 | /** | 6739 | /** |
6639 | * Sets the size of the given image object. | 6740 | * Sets the size of the given image object. |
@@ -6670,7 +6771,7 @@ EAPI void evas_object_image_size_get (const Ev | |||
6670 | * The row stride is the number of bytes between the start of a row | 6771 | * The row stride is the number of bytes between the start of a row |
6671 | * and the start of the next row for image data. | 6772 | * and the start of the next row for image data. |
6672 | */ | 6773 | */ |
6673 | EAPI int evas_object_image_stride_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 6774 | EAPI int evas_object_image_stride_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
6674 | 6775 | ||
6675 | /** | 6776 | /** |
6676 | * Retrieves a number representing any error that occurred during the | 6777 | * Retrieves a number representing any error that occurred during the |
@@ -6681,7 +6782,7 @@ EAPI int evas_object_image_stride_get (const Ev | |||
6681 | * one of the #Evas_Load_Error values. #EVAS_LOAD_ERROR_NONE | 6782 | * one of the #Evas_Load_Error values. #EVAS_LOAD_ERROR_NONE |
6682 | * is returned if there was no error. | 6783 | * is returned if there was no error. |
6683 | */ | 6784 | */ |
6684 | EAPI Evas_Load_Error evas_object_image_load_error_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 6785 | EAPI Evas_Load_Error evas_object_image_load_error_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
6685 | 6786 | ||
6686 | /** | 6787 | /** |
6687 | * Sets the raw image data of the given image object. | 6788 | * Sets the raw image data of the given image object. |
@@ -6730,7 +6831,7 @@ EAPI void evas_object_image_data_set (Evas_Obj | |||
6730 | * | 6831 | * |
6731 | * @see evas_object_image_data_set() | 6832 | * @see evas_object_image_data_set() |
6732 | */ | 6833 | */ |
6733 | EAPI void *evas_object_image_data_get (const Evas_Object *obj, Eina_Bool for_writing) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 6834 | EAPI void *evas_object_image_data_get (const Evas_Object *obj, Eina_Bool for_writing) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
6734 | 6835 | ||
6735 | /** | 6836 | /** |
6736 | * Converts the raw image data of the given image object to the | 6837 | * Converts the raw image data of the given image object to the |
@@ -6748,7 +6849,7 @@ EAPI void *evas_object_image_data_get (const Ev | |||
6748 | * @param to_cspace The colorspace to which the image raw data will be converted. | 6849 | * @param to_cspace The colorspace to which the image raw data will be converted. |
6749 | * @return data A newly allocated data in the format specified by to_cspace. | 6850 | * @return data A newly allocated data in the format specified by to_cspace. |
6750 | */ | 6851 | */ |
6751 | EAPI void *evas_object_image_data_convert (Evas_Object *obj, Evas_Colorspace to_cspace) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 6852 | EAPI void *evas_object_image_data_convert (Evas_Object *obj, Evas_Colorspace to_cspace) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
6752 | 6853 | ||
6753 | /** | 6854 | /** |
6754 | * Replaces the raw image data of the given image object. | 6855 | * Replaces the raw image data of the given image object. |
@@ -6819,7 +6920,7 @@ EAPI void evas_object_image_alpha_set (Evas_Obj | |||
6819 | * | 6920 | * |
6820 | * See @ref evas_object_image_alpha_set() for more details. | 6921 | * See @ref evas_object_image_alpha_set() for more details. |
6821 | */ | 6922 | */ |
6822 | EAPI Eina_Bool evas_object_image_alpha_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 6923 | EAPI Eina_Bool evas_object_image_alpha_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
6823 | 6924 | ||
6824 | /** | 6925 | /** |
6825 | * Sets whether to use high-quality image scaling algorithm on the | 6926 | * Sets whether to use high-quality image scaling algorithm on the |
@@ -6849,7 +6950,7 @@ EAPI void evas_object_image_smooth_scale_set (Evas_Obj | |||
6849 | * | 6950 | * |
6850 | * See @ref evas_object_image_smooth_scale_set() for more details. | 6951 | * See @ref evas_object_image_smooth_scale_set() for more details. |
6851 | */ | 6952 | */ |
6852 | EAPI Eina_Bool evas_object_image_smooth_scale_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 6953 | EAPI Eina_Bool evas_object_image_smooth_scale_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
6853 | 6954 | ||
6854 | /** | 6955 | /** |
6855 | * Preload an image object's image data in the background | 6956 | * Preload an image object's image data in the background |
@@ -6947,7 +7048,7 @@ EAPI void evas_object_image_pixels_dirty_set (Evas_Obj | |||
6947 | * @param obj The given image object. | 7048 | * @param obj The given image object. |
6948 | * @return Whether the image is dirty. | 7049 | * @return Whether the image is dirty. |
6949 | */ | 7050 | */ |
6950 | EAPI Eina_Bool evas_object_image_pixels_dirty_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7051 | EAPI Eina_Bool evas_object_image_pixels_dirty_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
6951 | 7052 | ||
6952 | /** | 7053 | /** |
6953 | * Set the DPI resolution of an image object's source image. | 7054 | * Set the DPI resolution of an image object's source image. |
@@ -6972,7 +7073,7 @@ EAPI void evas_object_image_load_dpi_set (Evas_Obj | |||
6972 | * | 7073 | * |
6973 | * @see evas_object_image_load_dpi_set() for more details | 7074 | * @see evas_object_image_load_dpi_set() for more details |
6974 | */ | 7075 | */ |
6975 | EAPI double evas_object_image_load_dpi_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7076 | EAPI double evas_object_image_load_dpi_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
6976 | 7077 | ||
6977 | /** | 7078 | /** |
6978 | * Set the size of a given image object's source image, when loading | 7079 | * Set the size of a given image object's source image, when loading |
@@ -7026,7 +7127,7 @@ EAPI void evas_object_image_load_scale_down_set (Evas_Obj | |||
7026 | * | 7127 | * |
7027 | * @see evas_object_image_load_scale_down_set() for more details | 7128 | * @see evas_object_image_load_scale_down_set() for more details |
7028 | */ | 7129 | */ |
7029 | EAPI int evas_object_image_load_scale_down_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7130 | EAPI int evas_object_image_load_scale_down_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7030 | 7131 | ||
7031 | /** | 7132 | /** |
7032 | * Inform a given image object to load a selective region of its | 7133 | * Inform a given image object to load a selective region of its |
@@ -7103,7 +7204,18 @@ EAPI void evas_object_image_colorspace_set (Evas_Obj | |||
7103 | * This function returns the colorspace of given canvas image. | 7204 | * This function returns the colorspace of given canvas image. |
7104 | * | 7205 | * |
7105 | */ | 7206 | */ |
7106 | EAPI Evas_Colorspace evas_object_image_colorspace_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7207 | EAPI Evas_Colorspace evas_object_image_colorspace_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7208 | |||
7209 | /** | ||
7210 | * Get the support state of a given image | ||
7211 | * | ||
7212 | * @param obj The given image object pointer | ||
7213 | * @return The region support state | ||
7214 | * @since 1.2.0 | ||
7215 | * | ||
7216 | * This function returns the state of the region support of given image | ||
7217 | */ | ||
7218 | EAPI Eina_Bool evas_object_image_region_support_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); | ||
7107 | 7219 | ||
7108 | /** | 7220 | /** |
7109 | * Set the native surface of a given image of the canvas | 7221 | * Set the native surface of a given image of the canvas |
@@ -7125,7 +7237,7 @@ EAPI void evas_object_image_native_surface_set (Evas_Obj | |||
7125 | * This function returns the native surface of a given canvas image. | 7237 | * This function returns the native surface of a given canvas image. |
7126 | * | 7238 | * |
7127 | */ | 7239 | */ |
7128 | EAPI Evas_Native_Surface *evas_object_image_native_surface_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7240 | EAPI Evas_Native_Surface *evas_object_image_native_surface_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7129 | 7241 | ||
7130 | /** | 7242 | /** |
7131 | * Set the video surface linked to a given image of the canvas | 7243 | * Set the video surface linked to a given image of the canvas |
@@ -7149,7 +7261,7 @@ EAPI void evas_object_image_video_surface_set (Evas_Obj | |||
7149 | * This function returns the video surface linked to a given canvas image. | 7261 | * This function returns the video surface linked to a given canvas image. |
7150 | * | 7262 | * |
7151 | */ | 7263 | */ |
7152 | EAPI const Evas_Video_Surface *evas_object_image_video_surface_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7264 | EAPI const Evas_Video_Surface *evas_object_image_video_surface_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7153 | 7265 | ||
7154 | /** | 7266 | /** |
7155 | * Set the scale hint of a given image of the canvas. | 7267 | * Set the scale hint of a given image of the canvas. |
@@ -7178,7 +7290,7 @@ EAPI void evas_object_image_scale_hint_set (Evas_Obj | |||
7178 | * | 7290 | * |
7179 | * @see evas_object_image_scale_hint_set() for more details. | 7291 | * @see evas_object_image_scale_hint_set() for more details. |
7180 | */ | 7292 | */ |
7181 | EAPI Evas_Image_Scale_Hint evas_object_image_scale_hint_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7293 | EAPI Evas_Image_Scale_Hint evas_object_image_scale_hint_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7182 | 7294 | ||
7183 | /** | 7295 | /** |
7184 | * Set the content hint setting of a given image object of the canvas. | 7296 | * Set the content hint setting of a given image object of the canvas. |
@@ -7210,7 +7322,7 @@ EAPI void evas_object_image_content_hint_set (Evas_Obj | |||
7210 | * | 7322 | * |
7211 | * @see evas_object_image_content_hint_set() | 7323 | * @see evas_object_image_content_hint_set() |
7212 | */ | 7324 | */ |
7213 | EAPI Evas_Image_Content_Hint evas_object_image_content_hint_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7325 | EAPI Evas_Image_Content_Hint evas_object_image_content_hint_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7214 | 7326 | ||
7215 | 7327 | ||
7216 | /** | 7328 | /** |
@@ -7563,7 +7675,7 @@ EAPI void evas_object_text_font_source_set (Evas_Object *obj, cons | |||
7563 | * | 7675 | * |
7564 | * @see evas_object_text_font_get() for more details | 7676 | * @see evas_object_text_font_get() for more details |
7565 | */ | 7677 | */ |
7566 | EAPI const char *evas_object_text_font_source_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7678 | EAPI const char *evas_object_text_font_source_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7567 | 7679 | ||
7568 | /** | 7680 | /** |
7569 | * Set the font family and size on a given text object. | 7681 | * Set the font family and size on a given text object. |
@@ -7620,7 +7732,7 @@ EAPI void evas_object_text_text_set (Evas_Object *obj, cons | |||
7620 | * | 7732 | * |
7621 | * @see evas_object_text_text_set() | 7733 | * @see evas_object_text_text_set() |
7622 | */ | 7734 | */ |
7623 | EAPI const char *evas_object_text_text_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7735 | EAPI const char *evas_object_text_text_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7624 | 7736 | ||
7625 | /** | 7737 | /** |
7626 | * @brief Sets the BiDi delimiters used in the textblock. | 7738 | * @brief Sets the BiDi delimiters used in the textblock. |
@@ -7648,13 +7760,13 @@ EAPI void evas_object_text_bidi_delimiters_set(Evas_Object *obj, co | |||
7648 | */ | 7760 | */ |
7649 | EAPI const char *evas_object_text_bidi_delimiters_get(const Evas_Object *obj); | 7761 | EAPI const char *evas_object_text_bidi_delimiters_get(const Evas_Object *obj); |
7650 | 7762 | ||
7651 | EAPI Evas_Coord evas_object_text_ascent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7763 | EAPI Evas_Coord evas_object_text_ascent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7652 | EAPI Evas_Coord evas_object_text_descent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7764 | EAPI Evas_Coord evas_object_text_descent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7653 | EAPI Evas_Coord evas_object_text_max_ascent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7765 | EAPI Evas_Coord evas_object_text_max_ascent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7654 | EAPI Evas_Coord evas_object_text_max_descent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7766 | EAPI Evas_Coord evas_object_text_max_descent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7655 | EAPI Evas_Coord evas_object_text_horiz_advance_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7767 | EAPI Evas_Coord evas_object_text_horiz_advance_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7656 | EAPI Evas_Coord evas_object_text_vert_advance_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7768 | EAPI Evas_Coord evas_object_text_vert_advance_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7657 | EAPI Evas_Coord evas_object_text_inset_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7769 | EAPI Evas_Coord evas_object_text_inset_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7658 | 7770 | ||
7659 | /** | 7771 | /** |
7660 | * Retrieve position and dimension information of a character within a text @c Evas_Object. | 7772 | * Retrieve position and dimension information of a character within a text @c Evas_Object. |
@@ -7692,7 +7804,7 @@ EAPI int evas_object_text_last_up_to_pos (const Evas_Object *obj | |||
7692 | * | 7804 | * |
7693 | * @see evas_object_text_style_set() for more details. | 7805 | * @see evas_object_text_style_set() for more details. |
7694 | */ | 7806 | */ |
7695 | EAPI Evas_Text_Style_Type evas_object_text_style_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7807 | EAPI Evas_Text_Style_Type evas_object_text_style_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7696 | 7808 | ||
7697 | /** | 7809 | /** |
7698 | * Sets the style to apply on the given text object. | 7810 | * Sets the style to apply on the given text object. |
@@ -7742,7 +7854,7 @@ EAPI void evas_object_text_style_set (Evas_Object *obj, Evas | |||
7742 | * - #EVAS_TEXT_STYLE_SOFT_SHADOW | 7854 | * - #EVAS_TEXT_STYLE_SOFT_SHADOW |
7743 | * - #EVAS_TEXT_STYLE_FAR_SOFT_SHADOW | 7855 | * - #EVAS_TEXT_STYLE_FAR_SOFT_SHADOW |
7744 | * | 7856 | * |
7745 | * One can also change de direction the shadow grows to, with | 7857 | * One can also change the direction where the shadow grows to, with |
7746 | * evas_object_text_style_set(). | 7858 | * evas_object_text_style_set(). |
7747 | * | 7859 | * |
7748 | * @see evas_object_text_shadow_color_get() | 7860 | * @see evas_object_text_shadow_color_get() |
@@ -8081,7 +8193,7 @@ EAPI Evas_Object *evas_object_textblock_add(Evas *e) EINA_WARN_U | |||
8081 | * @param escape the string to be escaped | 8193 | * @param escape the string to be escaped |
8082 | * @return the unescaped version of escape | 8194 | * @return the unescaped version of escape |
8083 | */ | 8195 | */ |
8084 | EAPI const char *evas_textblock_escape_string_get(const char *escape) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8196 | EAPI const char *evas_textblock_escape_string_get(const char *escape) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8085 | 8197 | ||
8086 | /** | 8198 | /** |
8087 | * Returns the escaped version of the string. | 8199 | * Returns the escaped version of the string. |
@@ -8089,7 +8201,7 @@ EAPI const char *evas_textblock_escape_string_get(const char *e | |||
8089 | * @param len_ret the len of the part of the string that was used. | 8201 | * @param len_ret the len of the part of the string that was used. |
8090 | * @return the escaped string. | 8202 | * @return the escaped string. |
8091 | */ | 8203 | */ |
8092 | EAPI const char *evas_textblock_string_escape_get(const char *string, int *len_ret) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8204 | EAPI const char *evas_textblock_string_escape_get(const char *string, int *len_ret) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8093 | 8205 | ||
8094 | /** | 8206 | /** |
8095 | * Return the unescaped version of the string between start and end. | 8207 | * Return the unescaped version of the string between start and end. |
@@ -8098,8 +8210,35 @@ EAPI const char *evas_textblock_string_escape_get(const char *s | |||
8098 | * @param escape_end the end of the string. | 8210 | * @param escape_end the end of the string. |
8099 | * @return the unescaped version of the range | 8211 | * @return the unescaped version of the range |
8100 | */ | 8212 | */ |
8101 | EAPI const char *evas_textblock_escape_string_range_get(const char *escape_start, const char *escape_end) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 8213 | EAPI const char *evas_textblock_escape_string_range_get(const char *escape_start, const char *escape_end) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
8102 | 8214 | ||
8215 | /** | ||
8216 | * Return the plain version of the markup. | ||
8217 | * | ||
8218 | * Works as if you set the markup to a textblock and then retrieve the plain | ||
8219 | * version of the text. i.e: <br> and <\n> will be replaced with \n, &...; with | ||
8220 | * the actual char and etc. | ||
8221 | * | ||
8222 | * @param obj the textblock object to work with. (if NULL, tries the default) | ||
8223 | * @param text the markup text (if NULL, return NULL) | ||
8224 | * @return an allocated plain text version of the markup | ||
8225 | * @since 1.2.0 | ||
8226 | */ | ||
8227 | EAPI char *evas_textblock_text_markup_to_utf8(const Evas_Object *obj, const char *text) EINA_WARN_UNUSED_RESULT EINA_MALLOC; | ||
8228 | |||
8229 | /** | ||
8230 | * Return the markup version of the plain text. | ||
8231 | * | ||
8232 | * Replaces \n -> <br/> \t -> <tab/> and etc. Generally needed before you pass | ||
8233 | * plain text to be set in a textblock. | ||
8234 | * | ||
8235 | * @param obj the textblock object to work with (if NULL, it just does the | ||
8236 | * default behaviour, i.e with no extra object information). | ||
8237 | * @param text the markup text (if NULL, return NULL) | ||
8238 | * @return an allocated plain text version of the markup | ||
8239 | * @since 1.2.0 | ||
8240 | */ | ||
8241 | EAPI char *evas_textblock_text_utf8_to_markup(const Evas_Object *obj, const char *text) EINA_WARN_UNUSED_RESULT EINA_MALLOC; | ||
8103 | 8242 | ||
8104 | /** | 8243 | /** |
8105 | * Creates a new textblock style. | 8244 | * Creates a new textblock style. |
@@ -8128,7 +8267,7 @@ EAPI void evas_textblock_style_set(Evas_Textblock_Style | |||
8128 | * @param ts the style to get it's text. | 8267 | * @param ts the style to get it's text. |
8129 | * @return the text of the style or null on error. | 8268 | * @return the text of the style or null on error. |
8130 | */ | 8269 | */ |
8131 | EAPI const char *evas_textblock_style_get(const Evas_Textblock_Style *ts) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8270 | EAPI const char *evas_textblock_style_get(const Evas_Textblock_Style *ts) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8132 | 8271 | ||
8133 | 8272 | ||
8134 | /** | 8273 | /** |
@@ -8144,7 +8283,7 @@ EAPI void evas_object_textblock_style_set(Evas_Object *o | |||
8144 | * @param obj the object to get the style from. | 8283 | * @param obj the object to get the style from. |
8145 | * @return the style of the object. | 8284 | * @return the style of the object. |
8146 | */ | 8285 | */ |
8147 | EAPI const Evas_Textblock_Style *evas_object_textblock_style_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8286 | EAPI const Evas_Textblock_Style *evas_object_textblock_style_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8148 | 8287 | ||
8149 | /** | 8288 | /** |
8150 | * @brief Set the "replacement character" to use for the given textblock object. | 8289 | * @brief Set the "replacement character" to use for the given textblock object. |
@@ -8161,7 +8300,7 @@ EAPI void evas_object_textblock_replace_char_set(Evas_Ob | |||
8161 | * @param obj The given textblock object | 8300 | * @param obj The given textblock object |
8162 | * @return replacement character or @c NULL | 8301 | * @return replacement character or @c NULL |
8163 | */ | 8302 | */ |
8164 | EAPI const char *evas_object_textblock_replace_char_get(Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8303 | EAPI const char *evas_object_textblock_replace_char_get(Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8165 | 8304 | ||
8166 | /** | 8305 | /** |
8167 | * @brief Sets the vertical alignment of text within the textblock object | 8306 | * @brief Sets the vertical alignment of text within the textblock object |
@@ -8230,7 +8369,7 @@ EAPI void evas_object_textblock_legacy_newline_set(Evas_ | |||
8230 | * @return EINA_TRUE if in legacy mode, EINA_FALSE otherwise. | 8369 | * @return EINA_TRUE if in legacy mode, EINA_FALSE otherwise. |
8231 | * @since 1.1.0 | 8370 | * @since 1.1.0 |
8232 | */ | 8371 | */ |
8233 | EAPI Eina_Bool evas_object_textblock_legacy_newline_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8372 | EAPI Eina_Bool evas_object_textblock_legacy_newline_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8234 | 8373 | ||
8235 | 8374 | ||
8236 | /** | 8375 | /** |
@@ -8270,7 +8409,7 @@ EAPI const char *evas_object_textblock_text_markup_get(const Ev | |||
8270 | * @param obj the object. | 8409 | * @param obj the object. |
8271 | * @return the obj's main cursor. | 8410 | * @return the obj's main cursor. |
8272 | */ | 8411 | */ |
8273 | EAPI Evas_Textblock_Cursor *evas_object_textblock_cursor_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8412 | EAPI Evas_Textblock_Cursor *evas_object_textblock_cursor_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8274 | 8413 | ||
8275 | /** | 8414 | /** |
8276 | * Create a new cursor, associate it to the obj and init it to point | 8415 | * Create a new cursor, associate it to the obj and init it to point |
@@ -8421,7 +8560,7 @@ EAPI void evas_textblock_cursor_at_format_set(Evas_Textb | |||
8421 | * @return #EINA_TRUE if the cursor points to a visible format, #EINA_FALSE otherwise. | 8560 | * @return #EINA_TRUE if the cursor points to a visible format, #EINA_FALSE otherwise. |
8422 | * @see evas_textblock_cursor_format_get() | 8561 | * @see evas_textblock_cursor_format_get() |
8423 | */ | 8562 | */ |
8424 | EAPI Eina_Bool evas_textblock_cursor_format_is_visible_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8563 | EAPI Eina_Bool evas_textblock_cursor_format_is_visible_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8425 | 8564 | ||
8426 | /** | 8565 | /** |
8427 | * Advances to the next format node | 8566 | * Advances to the next format node |
@@ -8464,6 +8603,24 @@ EAPI Eina_Bool evas_textblock_cursor_char_next(Evas_Textblock | |||
8464 | EAPI Eina_Bool evas_textblock_cursor_char_prev(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); | 8603 | EAPI Eina_Bool evas_textblock_cursor_char_prev(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); |
8465 | 8604 | ||
8466 | /** | 8605 | /** |
8606 | * Moves the cursor to the start of the word under the cursor. | ||
8607 | * | ||
8608 | * @param cur the cursor to move. | ||
8609 | * @return #EINA_TRUE on success #EINA_FALSE otherwise. | ||
8610 | * @since 1.2.0 | ||
8611 | */ | ||
8612 | EAPI Eina_Bool evas_textblock_cursor_word_start(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); | ||
8613 | |||
8614 | /** | ||
8615 | * Moves the cursor to the end of the word under the cursor. | ||
8616 | * | ||
8617 | * @param cur the cursor to move. | ||
8618 | * @return #EINA_TRUE on success #EINA_FALSE otherwise. | ||
8619 | * @since 1.2.0 | ||
8620 | */ | ||
8621 | EAPI Eina_Bool evas_textblock_cursor_word_end(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); | ||
8622 | |||
8623 | /** | ||
8467 | * Go to the first char in the node the cursor is pointing on. | 8624 | * Go to the first char in the node the cursor is pointing on. |
8468 | * | 8625 | * |
8469 | * @param cur the cursor to update. | 8626 | * @param cur the cursor to update. |
@@ -8501,7 +8658,7 @@ EAPI void evas_textblock_cursor_line_char_last(Evas_Text | |||
8501 | * @param cur the cursor to take the position from. | 8658 | * @param cur the cursor to take the position from. |
8502 | * @return the position or -1 on error | 8659 | * @return the position or -1 on error |
8503 | */ | 8660 | */ |
8504 | EAPI int evas_textblock_cursor_pos_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8661 | EAPI int evas_textblock_cursor_pos_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8505 | 8662 | ||
8506 | /** | 8663 | /** |
8507 | * Set the cursor pos. | 8664 | * Set the cursor pos. |
@@ -8527,7 +8684,7 @@ EAPI Eina_Bool evas_textblock_cursor_line_set(Evas_Textblock_ | |||
8527 | * @param cur2 the second cursor. | 8684 | * @param cur2 the second cursor. |
8528 | * @return -1 if cur1 < cur2, 0 if cur1 == cur2 and 1 otherwise. | 8685 | * @return -1 if cur1 < cur2, 0 if cur1 == cur2 and 1 otherwise. |
8529 | */ | 8686 | */ |
8530 | EAPI int evas_textblock_cursor_compare(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 8687 | EAPI int evas_textblock_cursor_compare(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
8531 | 8688 | ||
8532 | /** | 8689 | /** |
8533 | * Make cur_dest point to the same place as cur. Does not work if they don't | 8690 | * Make cur_dest point to the same place as cur. Does not work if they don't |
@@ -8630,7 +8787,7 @@ EAPI void evas_textblock_cursor_range_delete(Evas_Textbl | |||
8630 | * @param cur the cursor pointing to the paragraph. | 8787 | * @param cur the cursor pointing to the paragraph. |
8631 | * @return the text on success, NULL otherwise. | 8788 | * @return the text on success, NULL otherwise. |
8632 | */ | 8789 | */ |
8633 | EAPI const char *evas_textblock_cursor_paragraph_text_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8790 | EAPI const char *evas_textblock_cursor_paragraph_text_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8634 | 8791 | ||
8635 | /** | 8792 | /** |
8636 | * Return the length of the paragraph, cheaper the eina_unicode_strlen() | 8793 | * Return the length of the paragraph, cheaper the eina_unicode_strlen() |
@@ -8638,7 +8795,7 @@ EAPI const char *evas_textblock_cursor_paragraph_text_get(const | |||
8638 | * @param cur the position of the paragraph. | 8795 | * @param cur the position of the paragraph. |
8639 | * @return the length of the paragraph on success, -1 otehrwise. | 8796 | * @return the length of the paragraph on success, -1 otehrwise. |
8640 | */ | 8797 | */ |
8641 | EAPI int evas_textblock_cursor_paragraph_text_length_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8798 | EAPI int evas_textblock_cursor_paragraph_text_length_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8642 | 8799 | ||
8643 | /** | 8800 | /** |
8644 | * Return the currently visible range. | 8801 | * Return the currently visible range. |
@@ -8648,7 +8805,7 @@ EAPI int evas_textblock_cursor_paragraph_text_length_ge | |||
8648 | * @return EINA_TRUE on success. EINA_FALSE otherwise. | 8805 | * @return EINA_TRUE on success. EINA_FALSE otherwise. |
8649 | * @since 1.1.0 | 8806 | * @since 1.1.0 |
8650 | */ | 8807 | */ |
8651 | Eina_Bool evas_textblock_cursor_visible_range_get(Evas_Textblock_Cursor *start, Evas_Textblock_Cursor *end) EINA_ARG_NONNULL(1, 2); | 8808 | EAPI Eina_Bool evas_textblock_cursor_visible_range_get(Evas_Textblock_Cursor *start, Evas_Textblock_Cursor *end) EINA_ARG_NONNULL(1, 2); |
8652 | 8809 | ||
8653 | /** | 8810 | /** |
8654 | * Return the format nodes in the range between cur1 and cur2. | 8811 | * Return the format nodes in the range between cur1 and cur2. |
@@ -8658,7 +8815,7 @@ Eina_Bool evas_textblock_cursor_visible_range_get(Evas_T | |||
8658 | * @return the foramt nodes in the range. You have to free it. | 8815 | * @return the foramt nodes in the range. You have to free it. |
8659 | * @since 1.1.0 | 8816 | * @since 1.1.0 |
8660 | */ | 8817 | */ |
8661 | EAPI Eina_List * evas_textblock_cursor_range_formats_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 8818 | EAPI Eina_List * evas_textblock_cursor_range_formats_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
8662 | 8819 | ||
8663 | /** | 8820 | /** |
8664 | * Return the text in the range between cur1 and cur2 | 8821 | * Return the text in the range between cur1 and cur2 |
@@ -8669,13 +8826,15 @@ EAPI Eina_List * evas_textblock_cursor_range_formats_get(const E | |||
8669 | * @return the text in the range | 8826 | * @return the text in the range |
8670 | * @see elm_entry_markup_to_utf8() | 8827 | * @see elm_entry_markup_to_utf8() |
8671 | */ | 8828 | */ |
8672 | EAPI char *evas_textblock_cursor_range_text_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2, Evas_Textblock_Text_Type format) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 8829 | EAPI char *evas_textblock_cursor_range_text_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2, Evas_Textblock_Text_Type format) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
8673 | 8830 | ||
8674 | /** | 8831 | /** |
8675 | * Return the content of the cursor. | 8832 | * Return the content of the cursor. |
8676 | * | 8833 | * |
8834 | * Free the returned string pointer when done (if it is not NULL). | ||
8835 | * | ||
8677 | * @param cur the cursor | 8836 | * @param cur the cursor |
8678 | * @return the text in the range | 8837 | * @return the text in the range, terminated by a nul byte (may be utf8). |
8679 | */ | 8838 | */ |
8680 | EAPI char *evas_textblock_cursor_content_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC; | 8839 | EAPI char *evas_textblock_cursor_content_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC; |
8681 | 8840 | ||
@@ -8766,7 +8925,7 @@ EAPI int evas_textblock_cursor_line_coord_set(Evas_Text | |||
8766 | * @param cur2 other side of the range. | 8925 | * @param cur2 other side of the range. |
8767 | * @return a list of Rectangles representing the geometry of the range. | 8926 | * @return a list of Rectangles representing the geometry of the range. |
8768 | */ | 8927 | */ |
8769 | EAPI Eina_List *evas_textblock_cursor_range_geometry_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 8928 | EAPI Eina_List *evas_textblock_cursor_range_geometry_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
8770 | EAPI Eina_Bool evas_textblock_cursor_format_item_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1); | 8929 | EAPI Eina_Bool evas_textblock_cursor_format_item_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1); |
8771 | 8930 | ||
8772 | 8931 | ||
@@ -8776,7 +8935,7 @@ EAPI Eina_List *evas_textblock_cursor_range_geometry_get(const | |||
8776 | * @param cur the cursor to check. | 8935 | * @param cur the cursor to check. |
8777 | * @return #EINA_TRUE if true, #EINA_FALSE otherwise. | 8936 | * @return #EINA_TRUE if true, #EINA_FALSE otherwise. |
8778 | */ | 8937 | */ |
8779 | EAPI Eina_Bool evas_textblock_cursor_eol_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8938 | EAPI Eina_Bool evas_textblock_cursor_eol_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8780 | 8939 | ||
8781 | 8940 | ||
8782 | /** | 8941 | /** |
@@ -8931,6 +9090,12 @@ EAPI void evas_object_polygon_points_clear (Evas_Object *obj) EINA | |||
8931 | * @} | 9090 | * @} |
8932 | */ | 9091 | */ |
8933 | 9092 | ||
9093 | /* @since 1.2.0 */ | ||
9094 | EAPI void evas_object_is_frame_object_set(Evas_Object *obj, Eina_Bool is_frame); | ||
9095 | |||
9096 | /* @since 1.2.0 */ | ||
9097 | EAPI Eina_Bool evas_object_is_frame_object_get(Evas_Object *obj); | ||
9098 | |||
8934 | /** | 9099 | /** |
8935 | * @defgroup Evas_Smart_Group Smart Functions | 9100 | * @defgroup Evas_Smart_Group Smart Functions |
8936 | * | 9101 | * |
@@ -9273,7 +9438,7 @@ EAPI Evas_Smart *evas_smart_class_new (const | |||
9273 | * @param s a valid #Evas_Smart pointer | 9438 | * @param s a valid #Evas_Smart pointer |
9274 | * @return the #Evas_Smart_Class in it | 9439 | * @return the #Evas_Smart_Class in it |
9275 | */ | 9440 | */ |
9276 | EAPI const Evas_Smart_Class *evas_smart_class_get (const Evas_Smart *s) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 9441 | EAPI const Evas_Smart_Class *evas_smart_class_get (const Evas_Smart *s) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
9277 | 9442 | ||
9278 | 9443 | ||
9279 | /** | 9444 | /** |
@@ -9284,7 +9449,7 @@ EAPI const Evas_Smart_Class *evas_smart_class_get (const | |||
9284 | * This data pointer is set as the data field in the #Evas_Smart_Class | 9449 | * This data pointer is set as the data field in the #Evas_Smart_Class |
9285 | * passed in to evas_smart_class_new(). | 9450 | * passed in to evas_smart_class_new(). |
9286 | */ | 9451 | */ |
9287 | EAPI void *evas_smart_data_get (const Evas_Smart *s) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 9452 | EAPI void *evas_smart_data_get (const Evas_Smart *s) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
9288 | 9453 | ||
9289 | /** | 9454 | /** |
9290 | * Get the smart callbacks known by this #Evas_Smart handle's smart | 9455 | * Get the smart callbacks known by this #Evas_Smart handle's smart |
@@ -9338,7 +9503,7 @@ EAPI const Evas_Smart_Cb_Description **evas_smart_callbacks_descriptions_get(con | |||
9338 | * | 9503 | * |
9339 | * @see evas_smart_callbacks_descriptions_get() | 9504 | * @see evas_smart_callbacks_descriptions_get() |
9340 | */ | 9505 | */ |
9341 | EAPI const Evas_Smart_Cb_Description *evas_smart_callback_description_find(const Evas_Smart *s, const char *name) EINA_ARG_NONNULL(1, 2) EINA_PURE; | 9506 | EAPI const Evas_Smart_Cb_Description *evas_smart_callback_description_find(const Evas_Smart *s, const char *name) EINA_ARG_NONNULL(1, 2); |
9342 | 9507 | ||
9343 | 9508 | ||
9344 | /** | 9509 | /** |
@@ -9507,7 +9672,7 @@ EAPI void evas_object_smart_member_del (Evas_Object *obj) EINA | |||
9507 | * @see evas_object_smart_member_add() | 9672 | * @see evas_object_smart_member_add() |
9508 | * @see evas_object_smart_member_del() | 9673 | * @see evas_object_smart_member_del() |
9509 | */ | 9674 | */ |
9510 | EAPI Eina_List *evas_object_smart_members_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 9675 | EAPI Eina_List *evas_object_smart_members_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
9511 | 9676 | ||
9512 | /** | 9677 | /** |
9513 | * Gets the parent smart object of a given Evas object, if it has one. | 9678 | * Gets the parent smart object of a given Evas object, if it has one. |
@@ -9519,7 +9684,7 @@ EAPI Eina_List *evas_object_smart_members_get (const Evas_Object *obj | |||
9519 | * | 9684 | * |
9520 | * @ingroup Evas_Smart_Object_Group | 9685 | * @ingroup Evas_Smart_Object_Group |
9521 | */ | 9686 | */ |
9522 | EAPI Evas_Object *evas_object_smart_parent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 9687 | EAPI Evas_Object *evas_object_smart_parent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
9523 | 9688 | ||
9524 | /** | 9689 | /** |
9525 | * Checks whether a given smart object or any of its smart object | 9690 | * Checks whether a given smart object or any of its smart object |
@@ -9546,7 +9711,7 @@ EAPI Evas_Object *evas_object_smart_parent_get (const Evas_Object *obj | |||
9546 | * | 9711 | * |
9547 | * @ingroup Evas_Smart_Object_Group | 9712 | * @ingroup Evas_Smart_Object_Group |
9548 | */ | 9713 | */ |
9549 | EAPI Eina_Bool evas_object_smart_type_check (const Evas_Object *obj, const char *type) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 9714 | EAPI Eina_Bool evas_object_smart_type_check (const Evas_Object *obj, const char *type) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
9550 | 9715 | ||
9551 | /** | 9716 | /** |
9552 | * Checks whether a given smart object or any of its smart object | 9717 | * Checks whether a given smart object or any of its smart object |
@@ -9561,7 +9726,7 @@ EAPI Eina_Bool evas_object_smart_type_check (const Evas_Object *obj | |||
9561 | * | 9726 | * |
9562 | * @ingroup Evas_Smart_Object_Group | 9727 | * @ingroup Evas_Smart_Object_Group |
9563 | */ | 9728 | */ |
9564 | EAPI Eina_Bool evas_object_smart_type_check_ptr (const Evas_Object *obj, const char *type) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 9729 | EAPI Eina_Bool evas_object_smart_type_check_ptr (const Evas_Object *obj, const char *type) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
9565 | 9730 | ||
9566 | /** | 9731 | /** |
9567 | * Get the #Evas_Smart from which @p obj smart object was created. | 9732 | * Get the #Evas_Smart from which @p obj smart object was created. |
@@ -9571,7 +9736,7 @@ EAPI Eina_Bool evas_object_smart_type_check_ptr (const Evas_Object *obj | |||
9571 | * | 9736 | * |
9572 | * @ingroup Evas_Smart_Object_Group | 9737 | * @ingroup Evas_Smart_Object_Group |
9573 | */ | 9738 | */ |
9574 | EAPI Evas_Smart *evas_object_smart_smart_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 9739 | EAPI Evas_Smart *evas_object_smart_smart_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
9575 | 9740 | ||
9576 | /** | 9741 | /** |
9577 | * Retrieve user data stored on a given smart object. | 9742 | * Retrieve user data stored on a given smart object. |
@@ -9585,7 +9750,7 @@ EAPI Evas_Smart *evas_object_smart_smart_get (const Evas_Object *obj | |||
9585 | * | 9750 | * |
9586 | * @ingroup Evas_Smart_Object_Group | 9751 | * @ingroup Evas_Smart_Object_Group |
9587 | */ | 9752 | */ |
9588 | EAPI void *evas_object_smart_data_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 9753 | EAPI void *evas_object_smart_data_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
9589 | 9754 | ||
9590 | /** | 9755 | /** |
9591 | * Store a pointer to user data for a given smart object. | 9756 | * Store a pointer to user data for a given smart object. |
@@ -9683,6 +9848,34 @@ EAPI void evas_object_smart_callback_priority_add(Evas_Object *obj, | |||
9683 | EAPI void *evas_object_smart_callback_del (Evas_Object *obj, const char *event, Evas_Smart_Cb func) EINA_ARG_NONNULL(1, 2, 3); | 9848 | EAPI void *evas_object_smart_callback_del (Evas_Object *obj, const char *event, Evas_Smart_Cb func) EINA_ARG_NONNULL(1, 2, 3); |
9684 | 9849 | ||
9685 | /** | 9850 | /** |
9851 | * Delete (unregister) a callback function from the smart event | ||
9852 | * specified by @p event on the smart object @p obj. | ||
9853 | * | ||
9854 | * @param obj a smart object | ||
9855 | * @param event the event's name string | ||
9856 | * @param func the callback function | ||
9857 | * @param data the data pointer that was passed to the callback | ||
9858 | * @return the data pointer | ||
9859 | * | ||
9860 | * This function removes <b>the first</b> added smart callback on the | ||
9861 | * object @p obj matching the event name @p event, the registered | ||
9862 | * function pointer @p func and the callback data pointer @p data. If | ||
9863 | * the removal is successful it will also return the data pointer that | ||
9864 | * was passed to evas_object_smart_callback_add() (that will be the same | ||
9865 | * as the parameter) when the callback(s) was(were) added to the canvas. | ||
9866 | * If not successful @c NULL will be returned. A common use would be to | ||
9867 | * remove an exact match of a callback | ||
9868 | * | ||
9869 | * @see evas_object_smart_callback_add() for more details. | ||
9870 | * @since 1.2.0 | ||
9871 | * @ingroup Evas_Smart_Object_Group | ||
9872 | * | ||
9873 | * @note To delete all smart event callbacks which match @p type and @p func, | ||
9874 | * use evas_object_smart_callback_del(). | ||
9875 | */ | ||
9876 | EAPI void *evas_object_smart_callback_del_full(Evas_Object *obj, const char *event, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1, 2, 3); | ||
9877 | |||
9878 | /** | ||
9686 | * Call a given smart callback on the smart object @p obj. | 9879 | * Call a given smart callback on the smart object @p obj. |
9687 | * | 9880 | * |
9688 | * @param obj the smart object | 9881 | * @param obj the smart object |
@@ -9856,7 +10049,7 @@ EAPI void evas_object_smart_need_recalculate_set(Evas_Object *obj, | |||
9856 | * | 10049 | * |
9857 | * @ingroup Evas_Smart_Object_Group | 10050 | * @ingroup Evas_Smart_Object_Group |
9858 | */ | 10051 | */ |
9859 | EAPI Eina_Bool evas_object_smart_need_recalculate_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 10052 | EAPI Eina_Bool evas_object_smart_need_recalculate_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
9860 | 10053 | ||
9861 | /** | 10054 | /** |
9862 | * Call the @b calculate() smart function immediataly on a given smart | 10055 | * Call the @b calculate() smart function immediataly on a given smart |
@@ -9977,7 +10170,7 @@ EAPI void evas_object_smart_move_children_relative(Evas_Objec | |||
9977 | * | 10170 | * |
9978 | * @see evas_object_smart_clipped_smart_add() | 10171 | * @see evas_object_smart_clipped_smart_add() |
9979 | */ | 10172 | */ |
9980 | EAPI Evas_Object *evas_object_smart_clipped_clipper_get (Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 10173 | EAPI Evas_Object *evas_object_smart_clipped_clipper_get (Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
9981 | 10174 | ||
9982 | /** | 10175 | /** |
9983 | * Set a given smart class' callbacks so it implements the <b>clipped smart | 10176 | * Set a given smart class' callbacks so it implements the <b>clipped smart |
@@ -10885,7 +11078,7 @@ EAPI Eina_List *evas_object_box_children_get | |||
10885 | * _Evas_Object_Box_Api::property_name_get smart class function of the | 11078 | * _Evas_Object_Box_Api::property_name_get smart class function of the |
10886 | * box, which is originally set to @c NULL. | 11079 | * box, which is originally set to @c NULL. |
10887 | */ | 11080 | */ |
10888 | EAPI const char *evas_object_box_option_property_name_get (Evas_Object *o, int property) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 11081 | EAPI const char *evas_object_box_option_property_name_get (Evas_Object *o, int property) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
10889 | 11082 | ||
10890 | /** | 11083 | /** |
10891 | * Get the numerical identifier of the property of the child elements | 11084 | * Get the numerical identifier of the property of the child elements |
@@ -10904,7 +11097,7 @@ EAPI const char *evas_object_box_option_property_name_get | |||
10904 | * _Evas_Object_Box_Api::property_id_get smart class function of the | 11097 | * _Evas_Object_Box_Api::property_id_get smart class function of the |
10905 | * box, which is originally set to @c NULL. | 11098 | * box, which is originally set to @c NULL. |
10906 | */ | 11099 | */ |
10907 | EAPI int evas_object_box_option_property_id_get (Evas_Object *o, const char *name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 11100 | EAPI int evas_object_box_option_property_id_get (Evas_Object *o, const char *name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
10908 | 11101 | ||
10909 | /** | 11102 | /** |
10910 | * Set a property value (by its given numerical identifier), on a | 11103 | * Set a property value (by its given numerical identifier), on a |
@@ -11081,7 +11274,7 @@ EAPI void evas_object_table_homogeneous_set (Evas | |||
11081 | * | 11274 | * |
11082 | * @see evas_object_table_homogeneous_set() | 11275 | * @see evas_object_table_homogeneous_set() |
11083 | */ | 11276 | */ |
11084 | EAPI Evas_Object_Table_Homogeneous_Mode evas_object_table_homogeneous_get (const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 11277 | EAPI Evas_Object_Table_Homogeneous_Mode evas_object_table_homogeneous_get (const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
11085 | 11278 | ||
11086 | /** | 11279 | /** |
11087 | * Set padding between cells. | 11280 | * Set padding between cells. |
@@ -11455,7 +11648,7 @@ EAPI Eina_List *evas_object_grid_children_get (const | |||
11455 | * @return @c EINA_TRUE if it wants, @c EINA_FALSE otherwise. | 11648 | * @return @c EINA_TRUE if it wants, @c EINA_FALSE otherwise. |
11456 | * @ingroup Evas_Cserve | 11649 | * @ingroup Evas_Cserve |
11457 | */ | 11650 | */ |
11458 | EAPI Eina_Bool evas_cserve_want_get (void) EINA_WARN_UNUSED_RESULT EINA_PURE; | 11651 | EAPI Eina_Bool evas_cserve_want_get (void) EINA_WARN_UNUSED_RESULT; |
11459 | 11652 | ||
11460 | /** | 11653 | /** |
11461 | * Retrieves if the system is connected to the server used to share | 11654 | * Retrieves if the system is connected to the server used to share |
@@ -11482,7 +11675,7 @@ EAPI Eina_Bool evas_cserve_stats_get (Evas_Cserve_Stats | |||
11482 | * | 11675 | * |
11483 | * @param cache A handle to the given images cache. | 11676 | * @param cache A handle to the given images cache. |
11484 | */ | 11677 | */ |
11485 | EAPI void evas_cserve_image_cache_contents_clean (Evas_Cserve_Image_Cache *cache) EINA_PURE; | 11678 | EAPI void evas_cserve_image_cache_contents_clean (Evas_Cserve_Image_Cache *cache); |
11486 | 11679 | ||
11487 | /** | 11680 | /** |
11488 | * Retrieves the current configuration of the Evas image caching | 11681 | * Retrieves the current configuration of the Evas image caching |
@@ -11501,7 +11694,7 @@ EAPI void evas_cserve_image_cache_contents_clean (Evas_Cserve_Image | |||
11501 | * | 11694 | * |
11502 | * @ingroup Evas_Cserve | 11695 | * @ingroup Evas_Cserve |
11503 | */ | 11696 | */ |
11504 | EAPI Eina_Bool evas_cserve_config_get (Evas_Cserve_Config *config) EINA_WARN_UNUSED_RESULT EINA_PURE; | 11697 | EAPI Eina_Bool evas_cserve_config_get (Evas_Cserve_Config *config) EINA_WARN_UNUSED_RESULT; |
11505 | 11698 | ||
11506 | /** | 11699 | /** |
11507 | * Changes the configurations of the Evas image caching server. | 11700 | * Changes the configurations of the Evas image caching server. |
@@ -11515,7 +11708,7 @@ EAPI Eina_Bool evas_cserve_config_get (Evas_Cserve_Confi | |||
11515 | * | 11708 | * |
11516 | * @ingroup Evas_Cserve | 11709 | * @ingroup Evas_Cserve |
11517 | */ | 11710 | */ |
11518 | EAPI Eina_Bool evas_cserve_config_set (const Evas_Cserve_Config *config) EINA_WARN_UNUSED_RESULT EINA_PURE; | 11711 | EAPI Eina_Bool evas_cserve_config_set (const Evas_Cserve_Config *config) EINA_WARN_UNUSED_RESULT; |
11519 | 11712 | ||
11520 | /** | 11713 | /** |
11521 | * Force the system to disconnect from the bitmap caching server. | 11714 | * Force the system to disconnect from the bitmap caching server. |
@@ -11711,7 +11904,7 @@ EAPI int evas_string_char_prev_get (const char *str, int p | |||
11711 | * @return The length in characters (not bytes) | 11904 | * @return The length in characters (not bytes) |
11712 | * @ingroup Evas_Utils | 11905 | * @ingroup Evas_Utils |
11713 | */ | 11906 | */ |
11714 | EAPI int evas_string_char_len_get (const char *str) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 11907 | EAPI int evas_string_char_len_get (const char *str) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
11715 | 11908 | ||
11716 | /** | 11909 | /** |
11717 | * @defgroup Evas_Keys Key Input Functions | 11910 | * @defgroup Evas_Keys Key Input Functions |
@@ -11769,7 +11962,7 @@ EAPI int evas_string_char_len_get (const char *str) EINA_ | |||
11769 | * @return An ::Evas_Modifier handle to query Evas' keys subsystem | 11962 | * @return An ::Evas_Modifier handle to query Evas' keys subsystem |
11770 | * with evas_key_modifier_is_set(), or @c NULL on error. | 11963 | * with evas_key_modifier_is_set(), or @c NULL on error. |
11771 | */ | 11964 | */ |
11772 | EAPI const Evas_Modifier *evas_key_modifier_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 11965 | EAPI const Evas_Modifier *evas_key_modifier_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
11773 | 11966 | ||
11774 | /** | 11967 | /** |
11775 | * Returns a handle to the list of lock keys registered in the canvas | 11968 | * Returns a handle to the list of lock keys registered in the canvas |
@@ -11787,7 +11980,7 @@ EAPI const Evas_Modifier *evas_key_modifier_get (const Evas *e) EINA_WA | |||
11787 | * @return An ::Evas_Lock handle to query Evas' keys subsystem with | 11980 | * @return An ::Evas_Lock handle to query Evas' keys subsystem with |
11788 | * evas_key_lock_is_set(), or @c NULL on error. | 11981 | * evas_key_lock_is_set(), or @c NULL on error. |
11789 | */ | 11982 | */ |
11790 | EAPI const Evas_Lock *evas_key_lock_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 11983 | EAPI const Evas_Lock *evas_key_lock_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
11791 | 11984 | ||
11792 | 11985 | ||
11793 | /** | 11986 | /** |
@@ -11808,7 +12001,7 @@ EAPI const Evas_Lock *evas_key_lock_get (const Evas *e) EINA_WA | |||
11808 | * @see evas_key_modifier_on | 12001 | * @see evas_key_modifier_on |
11809 | * @see evas_key_modifier_off | 12002 | * @see evas_key_modifier_off |
11810 | */ | 12003 | */ |
11811 | EAPI Eina_Bool evas_key_modifier_is_set (const Evas_Modifier *m, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 12004 | EAPI Eina_Bool evas_key_modifier_is_set (const Evas_Modifier *m, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
11812 | 12005 | ||
11813 | 12006 | ||
11814 | /** | 12007 | /** |
@@ -11828,7 +12021,7 @@ EAPI Eina_Bool evas_key_modifier_is_set (const Evas_Modifier *m | |||
11828 | * @see evas_key_lock_on | 12021 | * @see evas_key_lock_on |
11829 | * @see evas_key_lock_off | 12022 | * @see evas_key_lock_off |
11830 | */ | 12023 | */ |
11831 | EAPI Eina_Bool evas_key_lock_is_set (const Evas_Lock *l, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 12024 | EAPI Eina_Bool evas_key_lock_is_set (const Evas_Lock *l, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
11832 | 12025 | ||
11833 | 12026 | ||
11834 | /** | 12027 | /** |
@@ -12012,7 +12205,7 @@ EAPI void evas_key_lock_off (Evas *e, const char *k | |||
12012 | * @see evas_object_key_grab | 12205 | * @see evas_object_key_grab |
12013 | * @see evas_object_key_ungrab | 12206 | * @see evas_object_key_ungrab |
12014 | */ | 12207 | */ |
12015 | EAPI Evas_Modifier_Mask evas_key_modifier_mask_get (const Evas *e, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 12208 | EAPI Evas_Modifier_Mask evas_key_modifier_mask_get (const Evas *e, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
12016 | 12209 | ||
12017 | 12210 | ||
12018 | /** | 12211 | /** |
diff --git a/libraries/evas/src/lib/Evas_GL.h b/libraries/evas/src/lib/Evas_GL.h index 04bedea..fdfbaad 100644 --- a/libraries/evas/src/lib/Evas_GL.h +++ b/libraries/evas/src/lib/Evas_GL.h | |||
@@ -28,7 +28,7 @@ typedef enum _Evas_GL_Depth_Bits | |||
28 | EVAS_GL_DEPTH_BIT_8 = 1, | 28 | EVAS_GL_DEPTH_BIT_8 = 1, |
29 | EVAS_GL_DEPTH_BIT_16 = 2, | 29 | EVAS_GL_DEPTH_BIT_16 = 2, |
30 | EVAS_GL_DEPTH_BIT_24 = 3, | 30 | EVAS_GL_DEPTH_BIT_24 = 3, |
31 | EVAS_GL_DEPTH_BIT_32 = 4, | 31 | EVAS_GL_DEPTH_BIT_32 = 4 |
32 | } Evas_GL_Depth_Bits; | 32 | } Evas_GL_Depth_Bits; |
33 | 33 | ||
34 | typedef enum _Evas_GL_Stencil_Bits | 34 | typedef enum _Evas_GL_Stencil_Bits |
@@ -38,14 +38,21 @@ typedef enum _Evas_GL_Stencil_Bits | |||
38 | EVAS_GL_STENCIL_BIT_2 = 2, | 38 | EVAS_GL_STENCIL_BIT_2 = 2, |
39 | EVAS_GL_STENCIL_BIT_4 = 3, | 39 | EVAS_GL_STENCIL_BIT_4 = 3, |
40 | EVAS_GL_STENCIL_BIT_8 = 4, | 40 | EVAS_GL_STENCIL_BIT_8 = 4, |
41 | EVAS_GL_STENCIL_BIT_16 = 5, | 41 | EVAS_GL_STENCIL_BIT_16 = 5 |
42 | } Evas_GL_Stencil_Bits; | 42 | } Evas_GL_Stencil_Bits; |
43 | 43 | ||
44 | typedef enum _Evas_GL_Options_Bits | ||
45 | { | ||
46 | EVAS_GL_OPTIONS_NONE = 0, | ||
47 | EVAS_GL_OPTIONS_DIRECT = (1<<0) | ||
48 | } Evas_GL_Options_Bits; | ||
49 | |||
44 | struct _Evas_GL_Config | 50 | struct _Evas_GL_Config |
45 | { | 51 | { |
46 | Evas_GL_Color_Format color_format; | 52 | Evas_GL_Color_Format color_format; |
47 | Evas_GL_Depth_Bits depth_bits; | 53 | Evas_GL_Depth_Bits depth_bits; |
48 | Evas_GL_Stencil_Bits stencil_bits; | 54 | Evas_GL_Stencil_Bits stencil_bits; |
55 | Evas_GL_Options_Bits options_bits; | ||
49 | }; | 56 | }; |
50 | 57 | ||
51 | #define EVAS_GL_EXTENSIONS 1 | 58 | #define EVAS_GL_EXTENSIONS 1 |
@@ -73,6 +80,7 @@ typedef struct _GLData | |||
73 | { | 80 | { |
74 | Evas_GL_Context *ctx; | 81 | Evas_GL_Context *ctx; |
75 | Evas_GL_Surface *sfc; | 82 | Evas_GL_Surface *sfc; |
83 | Evas_GL_Config *cfg; | ||
76 | Evas_GL *evasgl; | 84 | Evas_GL *evasgl; |
77 | Evas_GL_API *glapi; | 85 | Evas_GL_API *glapi; |
78 | GLuint program; | 86 | GLuint program; |
@@ -93,13 +101,6 @@ static GLuint load_shader (GLData *gld, GLenum type, const char *shader_src) | |||
93 | int | 101 | int |
94 | main(int argc, char **argv) | 102 | main(int argc, char **argv) |
95 | { | 103 | { |
96 | // config for the surface for evas_gl | ||
97 | Evas_GL_Config config = | ||
98 | { | ||
99 | EVAS_GL_RGBA_8888, | ||
100 | EVAS_GL_DEPTH_NONE, | ||
101 | EVAS_GL_STENCIL_NONE | ||
102 | }; | ||
103 | // a size by default | 104 | // a size by default |
104 | int w = 256, h = 256; | 105 | int w = 256, h = 256; |
105 | // some variables we will use | 106 | // some variables we will use |
@@ -124,8 +125,16 @@ main(int argc, char **argv) | |||
124 | // get the evas gl handle for doing gl things | 125 | // get the evas gl handle for doing gl things |
125 | gld->evasgl = evas_gl_new(canvas); | 126 | gld->evasgl = evas_gl_new(canvas); |
126 | gld->glapi = evas_gl_api_get(gld->evasgl); | 127 | gld->glapi = evas_gl_api_get(gld->evasgl); |
128 | |||
129 | // Set a surface config | ||
130 | gld->cfg = evas_gl_config_new(); | ||
131 | gld->cfg->color_format = EVAS_GL_RGBA_8888; | ||
132 | //gld->cfg->depth_bits = EVAS_GL_DEPTH_NONE; // Othe config options | ||
133 | //gld->cfg->stencil_bits = EVAS_GL_STENCIL_NONE; | ||
134 | //gld->cfg->options_bits = EVAS_GL_OPTIONS_NONE; | ||
135 | |||
127 | // create a surface and context | 136 | // create a surface and context |
128 | gld->sfc = evas_gl_surface_create(gld->evasgl, &config, w, h); | 137 | gld->sfc = evas_gl_surface_create(gld->evasgl, gld->cfg, w, h); |
129 | gld->ctx = evas_gl_context_create(gld->evasgl, NULL); | 138 | gld->ctx = evas_gl_context_create(gld->evasgl, NULL); |
130 | //-// | 139 | //-// |
131 | //-//-//-// END GL INIT BLOB | 140 | //-//-//-// END GL INIT BLOB |
@@ -207,6 +216,7 @@ on_del(void *data, Evas *e, Evas_Object *obj, void *event_info) | |||
207 | 216 | ||
208 | evas_gl_surface_destroy(gld->evasgl, gld->sfc); | 217 | evas_gl_surface_destroy(gld->evasgl, gld->sfc); |
209 | evas_gl_context_destroy(gld->evasgl, gld->ctx); | 218 | evas_gl_context_destroy(gld->evasgl, gld->ctx); |
219 | evas_gl_config_free(gld->cfg); | ||
210 | evas_gl_free(gld->evasgl); | 220 | evas_gl_free(gld->evasgl); |
211 | free(gld); | 221 | free(gld); |
212 | } | 222 | } |
@@ -389,6 +399,22 @@ EAPI Evas_GL *evas_gl_new (Evas *e) EINA_WARN_UNU | |||
389 | EAPI void evas_gl_free (Evas_GL *evas_gl) EINA_ARG_NONNULL(1); | 399 | EAPI void evas_gl_free (Evas_GL *evas_gl) EINA_ARG_NONNULL(1); |
390 | 400 | ||
391 | /** | 401 | /** |
402 | * Allocates a new config object for the user to fill out. | ||
403 | * | ||
404 | * As long as the Evas creates a config object for the user, it takes care | ||
405 | * of the backward compatibility issue. | ||
406 | */ | ||
407 | EAPI Evas_GL_Config *evas_gl_config_new (); | ||
408 | |||
409 | /** | ||
410 | * Frees a config object created from evas_gl_config_new. | ||
411 | * | ||
412 | * As long as the Evas creates a config object for the user, it takes care | ||
413 | * of the backward compatibility issue. | ||
414 | */ | ||
415 | EAPI void evas_gl_config_free (Evas_GL_Config *cfg) EINA_ARG_NONNULL(1); | ||
416 | |||
417 | /** | ||
392 | * Creates and returns new Evas_GL_Surface object for GL Rendering. | 418 | * Creates and returns new Evas_GL_Surface object for GL Rendering. |
393 | * | 419 | * |
394 | * @param evas_gl The given Evas_GL object. | 420 | * @param evas_gl The given Evas_GL object. |
diff --git a/libraries/evas/src/lib/Makefile.am b/libraries/evas/src/lib/Makefile.am index 6b1011a..2a1a92d 100644 --- a/libraries/evas/src/lib/Makefile.am +++ b/libraries/evas/src/lib/Makefile.am | |||
@@ -100,6 +100,11 @@ SUBDIRS += ../modules/engines/software_x11/ | |||
100 | EVAS_STATIC_MODULE += ../modules/engines/software_x11/libevas_engine_software_x11.la | 100 | EVAS_STATIC_MODULE += ../modules/engines/software_x11/libevas_engine_software_x11.la |
101 | EVAS_STATIC_LIBADD += @evas_engine_software_xlib_libs@ @evas_engine_software_xcb_libs@ | 101 | EVAS_STATIC_LIBADD += @evas_engine_software_xlib_libs@ @evas_engine_software_xcb_libs@ |
102 | endif | 102 | endif |
103 | if EVAS_STATIC_BUILD_WAYLAND_SHM | ||
104 | SUBDIRS += ../modules/engines/wayland_shm/ | ||
105 | EVAS_STATIC_MODULE += ../modules/engines/wayland_shm/libevas_engine_wayland_shm.la | ||
106 | EVAS_STATIC_LIBADD += @evas_engine_wayland_shm_libs@ | ||
107 | endif | ||
103 | if EVAS_STATIC_BUILD_BMP | 108 | if EVAS_STATIC_BUILD_BMP |
104 | SUBDIRS += ../modules/loaders/bmp | 109 | SUBDIRS += ../modules/loaders/bmp |
105 | EVAS_STATIC_MODULE += ../modules/loaders/bmp/libevas_loader_bmp.la | 110 | EVAS_STATIC_MODULE += ../modules/loaders/bmp/libevas_loader_bmp.la |
@@ -200,9 +205,7 @@ AM_CFLAGS = @WIN32_CFLAGS@ | |||
200 | 205 | ||
201 | lib_LTLIBRARIES = libevas.la | 206 | lib_LTLIBRARIES = libevas.la |
202 | 207 | ||
203 | ### Evas_GL disabled for 1.1 | 208 | includes_HEADERS = Evas.h Evas_GL.h |
204 | #includes_HEADERS = Evas.h Evas_GL.h | ||
205 | includes_HEADERS = Evas.h | ||
206 | includesdir = $(includedir)/evas-@VMAJ@ | 209 | includesdir = $(includedir)/evas-@VMAJ@ |
207 | 210 | ||
208 | libevas_la_SOURCES = main.c | 211 | libevas_la_SOURCES = main.c |
diff --git a/libraries/evas/src/lib/Makefile.in b/libraries/evas/src/lib/Makefile.in index 87bbaac..ffe71d1 100644 --- a/libraries/evas/src/lib/Makefile.in +++ b/libraries/evas/src/lib/Makefile.in | |||
@@ -101,57 +101,60 @@ host_triplet = @host@ | |||
101 | @EVAS_STATIC_BUILD_SOFTWARE_X11_TRUE@am__append_48 = ../modules/engines/software_x11/ | 101 | @EVAS_STATIC_BUILD_SOFTWARE_X11_TRUE@am__append_48 = ../modules/engines/software_x11/ |
102 | @EVAS_STATIC_BUILD_SOFTWARE_X11_TRUE@am__append_49 = ../modules/engines/software_x11/libevas_engine_software_x11.la | 102 | @EVAS_STATIC_BUILD_SOFTWARE_X11_TRUE@am__append_49 = ../modules/engines/software_x11/libevas_engine_software_x11.la |
103 | @EVAS_STATIC_BUILD_SOFTWARE_X11_TRUE@am__append_50 = @evas_engine_software_xlib_libs@ @evas_engine_software_xcb_libs@ | 103 | @EVAS_STATIC_BUILD_SOFTWARE_X11_TRUE@am__append_50 = @evas_engine_software_xlib_libs@ @evas_engine_software_xcb_libs@ |
104 | @EVAS_STATIC_BUILD_BMP_TRUE@am__append_51 = ../modules/loaders/bmp | 104 | @EVAS_STATIC_BUILD_WAYLAND_SHM_TRUE@am__append_51 = ../modules/engines/wayland_shm/ |
105 | @EVAS_STATIC_BUILD_BMP_TRUE@am__append_52 = ../modules/loaders/bmp/libevas_loader_bmp.la | 105 | @EVAS_STATIC_BUILD_WAYLAND_SHM_TRUE@am__append_52 = ../modules/engines/wayland_shm/libevas_engine_wayland_shm.la |
106 | @EVAS_STATIC_BUILD_BMP_TRUE@am__append_53 = @evas_image_loader_bmp_libs@ | 106 | @EVAS_STATIC_BUILD_WAYLAND_SHM_TRUE@am__append_53 = @evas_engine_wayland_shm_libs@ |
107 | @EVAS_STATIC_BUILD_EDB_TRUE@am__append_54 = ../modules/savers/edb ../modules/loaders/edb | 107 | @EVAS_STATIC_BUILD_BMP_TRUE@am__append_54 = ../modules/loaders/bmp |
108 | @EVAS_STATIC_BUILD_EDB_TRUE@am__append_55 = ../modules/savers/edb/libevas_saver_edb.la ../modules/loaders/edb/libevas_loader_edb.la | 108 | @EVAS_STATIC_BUILD_BMP_TRUE@am__append_55 = ../modules/loaders/bmp/libevas_loader_bmp.la |
109 | @EVAS_STATIC_BUILD_EDB_TRUE@am__append_56 = @evas_image_loader_edb_libs@ | 109 | @EVAS_STATIC_BUILD_BMP_TRUE@am__append_56 = @evas_image_loader_bmp_libs@ |
110 | @EVAS_STATIC_BUILD_EET_TRUE@am__append_57 = ../modules/savers/eet ../modules/loaders/eet | 110 | @EVAS_STATIC_BUILD_EDB_TRUE@am__append_57 = ../modules/savers/edb ../modules/loaders/edb |
111 | @EVAS_STATIC_BUILD_EET_TRUE@am__append_58 = ../modules/savers/eet/libevas_saver_eet.la ../modules/loaders/eet/libevas_loader_eet.la | 111 | @EVAS_STATIC_BUILD_EDB_TRUE@am__append_58 = ../modules/savers/edb/libevas_saver_edb.la ../modules/loaders/edb/libevas_loader_edb.la |
112 | @EVAS_STATIC_BUILD_EET_TRUE@am__append_59 = @evas_image_loader_eet_libs@ | 112 | @EVAS_STATIC_BUILD_EDB_TRUE@am__append_59 = @evas_image_loader_edb_libs@ |
113 | @EVAS_STATIC_BUILD_GENERIC_TRUE@am__append_60 = ../modules/loaders/generic | 113 | @EVAS_STATIC_BUILD_EET_TRUE@am__append_60 = ../modules/savers/eet ../modules/loaders/eet |
114 | @EVAS_STATIC_BUILD_GENERIC_TRUE@am__append_61 = ../modules/loaders/generic/libevas_loader_generic.la | 114 | @EVAS_STATIC_BUILD_EET_TRUE@am__append_61 = ../modules/savers/eet/libevas_saver_eet.la ../modules/loaders/eet/libevas_loader_eet.la |
115 | @EVAS_STATIC_BUILD_GENERIC_TRUE@am__append_62 = @evas_image_loader_generic_libs@ | 115 | @EVAS_STATIC_BUILD_EET_TRUE@am__append_62 = @evas_image_loader_eet_libs@ |
116 | @EVAS_STATIC_BUILD_GIF_TRUE@am__append_63 = ../modules/loaders/gif | 116 | @EVAS_STATIC_BUILD_GENERIC_TRUE@am__append_63 = ../modules/loaders/generic |
117 | @EVAS_STATIC_BUILD_GIF_TRUE@am__append_64 = ../modules/loaders/gif/libevas_loader_gif.la | 117 | @EVAS_STATIC_BUILD_GENERIC_TRUE@am__append_64 = ../modules/loaders/generic/libevas_loader_generic.la |
118 | @EVAS_STATIC_BUILD_GIF_TRUE@am__append_65 = @evas_image_loader_gif_libs@ | 118 | @EVAS_STATIC_BUILD_GENERIC_TRUE@am__append_65 = @evas_image_loader_generic_libs@ |
119 | @EVAS_STATIC_BUILD_ICO_TRUE@am__append_66 = ../modules/loaders/ico | 119 | @EVAS_STATIC_BUILD_GIF_TRUE@am__append_66 = ../modules/loaders/gif |
120 | @EVAS_STATIC_BUILD_ICO_TRUE@am__append_67 = ../modules/loaders/ico/libevas_loader_ico.la | 120 | @EVAS_STATIC_BUILD_GIF_TRUE@am__append_67 = ../modules/loaders/gif/libevas_loader_gif.la |
121 | @EVAS_STATIC_BUILD_ICO_TRUE@am__append_68 = @evas_image_loader_ico_libs@ | 121 | @EVAS_STATIC_BUILD_GIF_TRUE@am__append_68 = @evas_image_loader_gif_libs@ |
122 | @EVAS_STATIC_BUILD_JPEG_TRUE@am__append_69 = ../modules/loaders/jpeg | 122 | @EVAS_STATIC_BUILD_ICO_TRUE@am__append_69 = ../modules/loaders/ico |
123 | @EVAS_STATIC_BUILD_JPEG_TRUE@am__append_70 = ../modules/loaders/jpeg/libevas_loader_jpeg.la | 123 | @EVAS_STATIC_BUILD_ICO_TRUE@am__append_70 = ../modules/loaders/ico/libevas_loader_ico.la |
124 | @BUILD_SAVER_JPEG_TRUE@@EVAS_STATIC_BUILD_JPEG_TRUE@am__append_71 = ../modules/savers/jpeg | 124 | @EVAS_STATIC_BUILD_ICO_TRUE@am__append_71 = @evas_image_loader_ico_libs@ |
125 | @BUILD_SAVER_JPEG_TRUE@@EVAS_STATIC_BUILD_JPEG_TRUE@am__append_72 = ../modules/savers/jpeg/libevas_saver_jpeg.la | 125 | @EVAS_STATIC_BUILD_JPEG_TRUE@am__append_72 = ../modules/loaders/jpeg |
126 | @EVAS_STATIC_BUILD_JPEG_TRUE@am__append_73 = @evas_image_loader_jpeg_libs@ | 126 | @EVAS_STATIC_BUILD_JPEG_TRUE@am__append_73 = ../modules/loaders/jpeg/libevas_loader_jpeg.la |
127 | @EVAS_STATIC_BUILD_PMAPS_TRUE@am__append_74 = ../modules/loaders/pmaps | 127 | @BUILD_SAVER_JPEG_TRUE@@EVAS_STATIC_BUILD_JPEG_TRUE@am__append_74 = ../modules/savers/jpeg |
128 | @EVAS_STATIC_BUILD_PMAPS_TRUE@am__append_75 = ../modules/loaders/pmaps/libevas_loader_pmaps.la | 128 | @BUILD_SAVER_JPEG_TRUE@@EVAS_STATIC_BUILD_JPEG_TRUE@am__append_75 = ../modules/savers/jpeg/libevas_saver_jpeg.la |
129 | @EVAS_STATIC_BUILD_PMAPS_TRUE@am__append_76 = @evas_image_loader_pmaps_libs@ | 129 | @EVAS_STATIC_BUILD_JPEG_TRUE@am__append_76 = @evas_image_loader_jpeg_libs@ |
130 | @EVAS_STATIC_BUILD_PNG_TRUE@am__append_77 = ../modules/savers/png ../modules/loaders/png | 130 | @EVAS_STATIC_BUILD_PMAPS_TRUE@am__append_77 = ../modules/loaders/pmaps |
131 | @EVAS_STATIC_BUILD_PNG_TRUE@am__append_78 = ../modules/savers/png/libevas_saver_png.la ../modules/loaders/png/libevas_loader_png.la | 131 | @EVAS_STATIC_BUILD_PMAPS_TRUE@am__append_78 = ../modules/loaders/pmaps/libevas_loader_pmaps.la |
132 | @EVAS_STATIC_BUILD_PNG_TRUE@am__append_79 = @evas_image_loader_png_libs@ | 132 | @EVAS_STATIC_BUILD_PMAPS_TRUE@am__append_79 = @evas_image_loader_pmaps_libs@ |
133 | @EVAS_STATIC_BUILD_PSD_TRUE@am__append_80 = ../modules/loaders/psd | 133 | @EVAS_STATIC_BUILD_PNG_TRUE@am__append_80 = ../modules/savers/png ../modules/loaders/png |
134 | @EVAS_STATIC_BUILD_PSD_TRUE@am__append_81 = ../modules/loaders/psd/libevas_loader_psd.la | 134 | @EVAS_STATIC_BUILD_PNG_TRUE@am__append_81 = ../modules/savers/png/libevas_saver_png.la ../modules/loaders/png/libevas_loader_png.la |
135 | @EVAS_STATIC_BUILD_PSD_TRUE@am__append_82 = @evas_image_loader_psd_libs@ | 135 | @EVAS_STATIC_BUILD_PNG_TRUE@am__append_82 = @evas_image_loader_png_libs@ |
136 | @EVAS_STATIC_BUILD_SVG_TRUE@am__append_83 = ../modules/loaders/svg | 136 | @EVAS_STATIC_BUILD_PSD_TRUE@am__append_83 = ../modules/loaders/psd |
137 | @EVAS_STATIC_BUILD_SVG_TRUE@am__append_84 = ../modules/loaders/svg/libevas_loader_svg.la | 137 | @EVAS_STATIC_BUILD_PSD_TRUE@am__append_84 = ../modules/loaders/psd/libevas_loader_psd.la |
138 | @EVAS_STATIC_BUILD_SVG_TRUE@am__append_85 = @evas_image_loader_svg_libs@ | 138 | @EVAS_STATIC_BUILD_PSD_TRUE@am__append_85 = @evas_image_loader_psd_libs@ |
139 | @EVAS_STATIC_BUILD_TGA_TRUE@am__append_86 = ../modules/loaders/tga | 139 | @EVAS_STATIC_BUILD_SVG_TRUE@am__append_86 = ../modules/loaders/svg |
140 | @EVAS_STATIC_BUILD_TGA_TRUE@am__append_87 = ../modules/loaders/tga/libevas_loader_tga.la | 140 | @EVAS_STATIC_BUILD_SVG_TRUE@am__append_87 = ../modules/loaders/svg/libevas_loader_svg.la |
141 | @EVAS_STATIC_BUILD_TGA_TRUE@am__append_88 = @evas_image_loader_tga_libs@ | 141 | @EVAS_STATIC_BUILD_SVG_TRUE@am__append_88 = @evas_image_loader_svg_libs@ |
142 | @EVAS_STATIC_BUILD_TIFF_TRUE@am__append_89 = ../modules/savers/tiff ../modules/loaders/tiff | 142 | @EVAS_STATIC_BUILD_TGA_TRUE@am__append_89 = ../modules/loaders/tga |
143 | @EVAS_STATIC_BUILD_TIFF_TRUE@am__append_90 = ../modules/savers/tiff/libevas_saver_tiff.la ../modules/loaders/tiff/libevas_loader_tiff.la | 143 | @EVAS_STATIC_BUILD_TGA_TRUE@am__append_90 = ../modules/loaders/tga/libevas_loader_tga.la |
144 | @EVAS_STATIC_BUILD_TIFF_TRUE@am__append_91 = @evas_image_loader_tiff_libs@ | 144 | @EVAS_STATIC_BUILD_TGA_TRUE@am__append_91 = @evas_image_loader_tga_libs@ |
145 | @EVAS_STATIC_BUILD_WBMP_TRUE@am__append_92 = ../modules/loaders/wbmp | 145 | @EVAS_STATIC_BUILD_TIFF_TRUE@am__append_92 = ../modules/savers/tiff ../modules/loaders/tiff |
146 | @EVAS_STATIC_BUILD_WBMP_TRUE@am__append_93 = ../modules/loaders/wbmp/libevas_loader_wbmp.la | 146 | @EVAS_STATIC_BUILD_TIFF_TRUE@am__append_93 = ../modules/savers/tiff/libevas_saver_tiff.la ../modules/loaders/tiff/libevas_loader_tiff.la |
147 | @EVAS_STATIC_BUILD_WBMP_TRUE@am__append_94 = @evas_image_loader_wbmp_libs@ | 147 | @EVAS_STATIC_BUILD_TIFF_TRUE@am__append_94 = @evas_image_loader_tiff_libs@ |
148 | @EVAS_STATIC_BUILD_XPM_TRUE@am__append_95 = ../modules/loaders/xpm | 148 | @EVAS_STATIC_BUILD_WBMP_TRUE@am__append_95 = ../modules/loaders/wbmp |
149 | @EVAS_STATIC_BUILD_XPM_TRUE@am__append_96 = ../modules/loaders/xpm/libevas_loader_xpm.la | 149 | @EVAS_STATIC_BUILD_WBMP_TRUE@am__append_96 = ../modules/loaders/wbmp/libevas_loader_wbmp.la |
150 | @EVAS_STATIC_BUILD_XPM_TRUE@am__append_97 = @evas_image_loader_xpm_libs@ | 150 | @EVAS_STATIC_BUILD_WBMP_TRUE@am__append_97 = @evas_image_loader_wbmp_libs@ |
151 | @BUILD_ENGINE_SOFTWARE_16_TRUE@am__append_98 = engines/common_16/libevas_engine_common_16.la | 151 | @EVAS_STATIC_BUILD_XPM_TRUE@am__append_98 = ../modules/loaders/xpm |
152 | @BUILD_ENGINE_SOFTWARE_16_TRUE@am__append_99 = engines/common_16/libevas_engine_common_16.la | 152 | @EVAS_STATIC_BUILD_XPM_TRUE@am__append_99 = ../modules/loaders/xpm/libevas_loader_xpm.la |
153 | @BUILD_ENGINE_SOFTWARE_8_TRUE@am__append_100 = engines/common_8/libevas_engine_common_8.la | 153 | @EVAS_STATIC_BUILD_XPM_TRUE@am__append_100 = @evas_image_loader_xpm_libs@ |
154 | @BUILD_ENGINE_SOFTWARE_8_TRUE@am__append_101 = engines/common_8/libevas_engine_common_8.la | 154 | @BUILD_ENGINE_SOFTWARE_16_TRUE@am__append_101 = engines/common_16/libevas_engine_common_16.la |
155 | @BUILD_ENGINE_SOFTWARE_16_TRUE@am__append_102 = engines/common_16/libevas_engine_common_16.la | ||
156 | @BUILD_ENGINE_SOFTWARE_8_TRUE@am__append_103 = engines/common_8/libevas_engine_common_8.la | ||
157 | @BUILD_ENGINE_SOFTWARE_8_TRUE@am__append_104 = engines/common_8/libevas_engine_common_8.la | ||
155 | subdir = src/lib | 158 | subdir = src/lib |
156 | DIST_COMMON = $(includes_HEADERS) $(srcdir)/Makefile.am \ | 159 | DIST_COMMON = $(includes_HEADERS) $(srcdir)/Makefile.am \ |
157 | $(srcdir)/Makefile.in | 160 | $(srcdir)/Makefile.in |
@@ -213,7 +216,7 @@ am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ | |||
213 | $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ | 216 | $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ |
214 | $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ | 217 | $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ |
215 | $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ | 218 | $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ |
216 | $(am__DEPENDENCIES_1) | 219 | $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) |
217 | am_libevas_la_OBJECTS = main.lo | 220 | am_libevas_la_OBJECTS = main.lo |
218 | libevas_la_OBJECTS = $(am_libevas_la_OBJECTS) | 221 | libevas_la_OBJECTS = $(am_libevas_la_OBJECTS) |
219 | AM_V_lt = $(am__v_lt_$(V)) | 222 | AM_V_lt = $(am__v_lt_$(V)) |
@@ -393,8 +396,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
393 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 396 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
394 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 397 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
395 | PKG_CONFIG = @PKG_CONFIG@ | 398 | PKG_CONFIG = @PKG_CONFIG@ |
396 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
397 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
398 | PNG_CFLAGS = @PNG_CFLAGS@ | 399 | PNG_CFLAGS = @PNG_CFLAGS@ |
399 | PNG_LIBS = @PNG_LIBS@ | 400 | PNG_LIBS = @PNG_LIBS@ |
400 | RANLIB = @RANLIB@ | 401 | RANLIB = @RANLIB@ |
@@ -411,6 +412,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
411 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 412 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
412 | VERSION = @VERSION@ | 413 | VERSION = @VERSION@ |
413 | VMAJ = @VMAJ@ | 414 | VMAJ = @VMAJ@ |
415 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
416 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
414 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 417 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
415 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 418 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
416 | XCB_CFLAGS = @XCB_CFLAGS@ | 419 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -492,6 +495,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
492 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 495 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
493 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 496 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
494 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 497 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
498 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
499 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
500 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
501 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
495 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 502 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
496 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 503 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
497 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 504 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
@@ -576,9 +583,10 @@ SUBDIRS = canvas cache cserve file engines include $(am__append_1) \ | |||
576 | $(am__append_45) $(am__append_48) $(am__append_51) \ | 583 | $(am__append_45) $(am__append_48) $(am__append_51) \ |
577 | $(am__append_54) $(am__append_57) $(am__append_60) \ | 584 | $(am__append_54) $(am__append_57) $(am__append_60) \ |
578 | $(am__append_63) $(am__append_66) $(am__append_69) \ | 585 | $(am__append_63) $(am__append_66) $(am__append_69) \ |
579 | $(am__append_71) $(am__append_74) $(am__append_77) \ | 586 | $(am__append_72) $(am__append_74) $(am__append_77) \ |
580 | $(am__append_80) $(am__append_83) $(am__append_86) \ | 587 | $(am__append_80) $(am__append_83) $(am__append_86) \ |
581 | $(am__append_89) $(am__append_92) $(am__append_95) | 588 | $(am__append_89) $(am__append_92) $(am__append_95) \ |
589 | $(am__append_98) | ||
582 | EVAS_STATIC_MODULE = $(am__append_2) $(am__append_4) $(am__append_6) \ | 590 | EVAS_STATIC_MODULE = $(am__append_2) $(am__append_4) $(am__append_6) \ |
583 | $(am__append_9) $(am__append_12) $(am__append_15) \ | 591 | $(am__append_9) $(am__append_12) $(am__append_15) \ |
584 | $(am__append_18) $(am__append_21) $(am__append_24) \ | 592 | $(am__append_18) $(am__append_21) $(am__append_24) \ |
@@ -587,20 +595,20 @@ EVAS_STATIC_MODULE = $(am__append_2) $(am__append_4) $(am__append_6) \ | |||
587 | $(am__append_43) $(am__append_46) $(am__append_49) \ | 595 | $(am__append_43) $(am__append_46) $(am__append_49) \ |
588 | $(am__append_52) $(am__append_55) $(am__append_58) \ | 596 | $(am__append_52) $(am__append_55) $(am__append_58) \ |
589 | $(am__append_61) $(am__append_64) $(am__append_67) \ | 597 | $(am__append_61) $(am__append_64) $(am__append_67) \ |
590 | $(am__append_70) $(am__append_72) $(am__append_75) \ | 598 | $(am__append_70) $(am__append_73) $(am__append_75) \ |
591 | $(am__append_78) $(am__append_81) $(am__append_84) \ | 599 | $(am__append_78) $(am__append_81) $(am__append_84) \ |
592 | $(am__append_87) $(am__append_90) $(am__append_93) \ | 600 | $(am__append_87) $(am__append_90) $(am__append_93) \ |
593 | $(am__append_96) | 601 | $(am__append_96) $(am__append_99) |
594 | EVAS_STATIC_LIBADD = $(am__append_7) $(am__append_10) $(am__append_13) \ | 602 | EVAS_STATIC_LIBADD = $(am__append_7) $(am__append_10) $(am__append_13) \ |
595 | $(am__append_16) $(am__append_19) $(am__append_22) \ | 603 | $(am__append_16) $(am__append_19) $(am__append_22) \ |
596 | $(am__append_27) $(am__append_30) $(am__append_33) \ | 604 | $(am__append_27) $(am__append_30) $(am__append_33) \ |
597 | $(am__append_38) $(am__append_41) $(am__append_44) \ | 605 | $(am__append_38) $(am__append_41) $(am__append_44) \ |
598 | $(am__append_47) $(am__append_50) $(am__append_53) \ | 606 | $(am__append_47) $(am__append_50) $(am__append_53) \ |
599 | $(am__append_56) $(am__append_59) $(am__append_62) \ | 607 | $(am__append_56) $(am__append_59) $(am__append_62) \ |
600 | $(am__append_65) $(am__append_68) $(am__append_73) \ | 608 | $(am__append_65) $(am__append_68) $(am__append_71) \ |
601 | $(am__append_76) $(am__append_79) $(am__append_82) \ | 609 | $(am__append_76) $(am__append_79) $(am__append_82) \ |
602 | $(am__append_85) $(am__append_88) $(am__append_91) \ | 610 | $(am__append_85) $(am__append_88) $(am__append_91) \ |
603 | $(am__append_94) $(am__append_97) | 611 | $(am__append_94) $(am__append_97) $(am__append_100) |
604 | AM_CPPFLAGS = \ | 612 | AM_CPPFLAGS = \ |
605 | -I. \ | 613 | -I. \ |
606 | -I$(top_srcdir)/src/lib \ | 614 | -I$(top_srcdir)/src/lib \ |
@@ -619,10 +627,7 @@ AM_CPPFLAGS = \ | |||
619 | 627 | ||
620 | AM_CFLAGS = @WIN32_CFLAGS@ | 628 | AM_CFLAGS = @WIN32_CFLAGS@ |
621 | lib_LTLIBRARIES = libevas.la | 629 | lib_LTLIBRARIES = libevas.la |
622 | 630 | includes_HEADERS = Evas.h Evas_GL.h | |
623 | ### Evas_GL disabled for 1.1 | ||
624 | #includes_HEADERS = Evas.h Evas_GL.h | ||
625 | includes_HEADERS = Evas.h | ||
626 | includesdir = $(includedir)/evas-@VMAJ@ | 631 | includesdir = $(includedir)/evas-@VMAJ@ |
627 | libevas_la_SOURCES = main.c | 632 | libevas_la_SOURCES = main.c |
628 | @EVAS_CSERVE_TRUE@libevas_cserve_la = cserve/libevas_cserve.la | 633 | @EVAS_CSERVE_TRUE@libevas_cserve_la = cserve/libevas_cserve.la |
@@ -631,12 +636,12 @@ libevas_la_LIBADD = canvas/libevas_canvas.la file/libevas_file.la \ | |||
631 | engines/common/libevas_engine_common.la @FREETYPE_LIBS@ \ | 636 | engines/common/libevas_engine_common.la @FREETYPE_LIBS@ \ |
632 | @FRIBIDI_LIBS@ @HARFBUZZ_LIBS@ @EET_LIBS@ @FONTCONFIG_LIBS@ \ | 637 | @FRIBIDI_LIBS@ @HARFBUZZ_LIBS@ @EET_LIBS@ @FONTCONFIG_LIBS@ \ |
633 | @pthread_libs@ @EINA_LIBS@ $(EVAS_STATIC_MODULE) \ | 638 | @pthread_libs@ @EINA_LIBS@ $(EVAS_STATIC_MODULE) \ |
634 | $(EVAS_STATIC_LIBADD) @PIXMAN_LIBS@ -lm $(am__append_98) \ | 639 | $(EVAS_STATIC_LIBADD) @PIXMAN_LIBS@ -lm $(am__append_101) \ |
635 | $(am__append_100) | 640 | $(am__append_103) |
636 | libevas_la_DEPENDENCIES = canvas/libevas_canvas.la \ | 641 | libevas_la_DEPENDENCIES = canvas/libevas_canvas.la \ |
637 | file/libevas_file.la cache/libevas_cache.la \ | 642 | file/libevas_file.la cache/libevas_cache.la \ |
638 | $(libevas_cserve_la) engines/common/libevas_engine_common.la \ | 643 | $(libevas_cserve_la) engines/common/libevas_engine_common.la \ |
639 | $(EVAS_STATIC_MODULE) $(am__append_99) $(am__append_101) | 644 | $(EVAS_STATIC_MODULE) $(am__append_102) $(am__append_104) |
640 | libevas_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -version-info @version_info@ @release_info@ | 645 | libevas_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -version-info @version_info@ @release_info@ |
641 | 646 | ||
642 | ### Evas_GL we are still using it in our code, so just don't install it. | 647 | ### Evas_GL we are still using it in our code, so just don't install it. |
diff --git a/libraries/evas/src/lib/cache/Makefile.in b/libraries/evas/src/lib/cache/Makefile.in index b024731..2b50c81 100644 --- a/libraries/evas/src/lib/cache/Makefile.in +++ b/libraries/evas/src/lib/cache/Makefile.in | |||
@@ -197,8 +197,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
197 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 197 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
198 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 198 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
199 | PKG_CONFIG = @PKG_CONFIG@ | 199 | PKG_CONFIG = @PKG_CONFIG@ |
200 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
201 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
202 | PNG_CFLAGS = @PNG_CFLAGS@ | 200 | PNG_CFLAGS = @PNG_CFLAGS@ |
203 | PNG_LIBS = @PNG_LIBS@ | 201 | PNG_LIBS = @PNG_LIBS@ |
204 | RANLIB = @RANLIB@ | 202 | RANLIB = @RANLIB@ |
@@ -215,6 +213,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
215 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 213 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
216 | VERSION = @VERSION@ | 214 | VERSION = @VERSION@ |
217 | VMAJ = @VMAJ@ | 215 | VMAJ = @VMAJ@ |
216 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
217 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
218 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 218 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
219 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 219 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
220 | XCB_CFLAGS = @XCB_CFLAGS@ | 220 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -296,6 +296,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
296 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 296 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
297 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 297 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
298 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 298 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
299 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
300 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
301 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
302 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
299 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 303 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
300 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 304 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
301 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 305 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/cache/evas_cache_engine_image.c b/libraries/evas/src/lib/cache/evas_cache_engine_image.c index 8ae4392..5ec1af2 100644 --- a/libraries/evas/src/lib/cache/evas_cache_engine_image.c +++ b/libraries/evas/src/lib/cache/evas_cache_engine_image.c | |||
@@ -1,3 +1,7 @@ | |||
1 | #ifdef HAVE_CONFIG_H | ||
2 | # include <config.h> | ||
3 | #endif | ||
4 | |||
1 | #include <assert.h> | 5 | #include <assert.h> |
2 | 6 | ||
3 | #include "evas_common.h" | 7 | #include "evas_common.h" |
diff --git a/libraries/evas/src/lib/cache/evas_cache_image.c b/libraries/evas/src/lib/cache/evas_cache_image.c index d52c64e..73e4f8a 100644 --- a/libraries/evas/src/lib/cache/evas_cache_image.c +++ b/libraries/evas/src/lib/cache/evas_cache_image.c | |||
@@ -918,12 +918,8 @@ evas_cache_image_drop(Image_Entry *im) | |||
918 | EAPI void | 918 | EAPI void |
919 | evas_cache_image_data_not_needed(Image_Entry *im) | 919 | evas_cache_image_data_not_needed(Image_Entry *im) |
920 | { | 920 | { |
921 | Evas_Cache_Image *cache; | ||
922 | int references; | 921 | int references; |
923 | 922 | ||
924 | /* FIXME: no one uses this api... well evas_cache_engine_parent_not_needed() | ||
925 | * does, but nothing uses that! */ | ||
926 | cache = im->cache; | ||
927 | #ifdef EVAS_FRAME_QUEUING | 923 | #ifdef EVAS_FRAME_QUEUING |
928 | LKL(im->lock_references); | 924 | LKL(im->lock_references); |
929 | #endif | 925 | #endif |
@@ -941,11 +937,12 @@ evas_cache_image_dirty(Image_Entry *im, unsigned int x, unsigned int y, unsigned | |||
941 | { | 937 | { |
942 | Image_Entry *im_dirty = im; | 938 | Image_Entry *im_dirty = im; |
943 | Evas_Cache_Image *cache; | 939 | Evas_Cache_Image *cache; |
944 | int references; | ||
945 | 940 | ||
946 | cache = im->cache; | 941 | cache = im->cache; |
947 | if (!(im->flags.dirty)) | 942 | if (!(im->flags.dirty)) |
948 | { | 943 | { |
944 | #ifndef EVAS_CSERVE | ||
945 | int references; | ||
949 | #ifdef EVAS_FRAME_QUEUING | 946 | #ifdef EVAS_FRAME_QUEUING |
950 | LKL(im->lock_references); | 947 | LKL(im->lock_references); |
951 | #endif | 948 | #endif |
@@ -953,21 +950,18 @@ evas_cache_image_dirty(Image_Entry *im, unsigned int x, unsigned int y, unsigned | |||
953 | #ifdef EVAS_FRAME_QUEUING | 950 | #ifdef EVAS_FRAME_QUEUING |
954 | LKU(im->lock_references); | 951 | LKU(im->lock_references); |
955 | #endif | 952 | #endif |
956 | #ifndef EVAS_CSERVE | ||
957 | // if ref 1 also copy if using shared cache as its read-only | 953 | // if ref 1 also copy if using shared cache as its read-only |
958 | if (references == 1) im_dirty = im; | 954 | if (references == 1) im_dirty = im; |
959 | else | 955 | else |
960 | #endif | 956 | #endif |
961 | { | 957 | { |
962 | int error; | ||
963 | |||
964 | im_dirty = | 958 | im_dirty = |
965 | evas_cache_image_copied_data(cache, im->w, im->h, | 959 | evas_cache_image_copied_data(cache, im->w, im->h, |
966 | evas_cache_image_pixels(im), | 960 | evas_cache_image_pixels(im), |
967 | im->flags.alpha, im->space); | 961 | im->flags.alpha, im->space); |
968 | if (!im_dirty) goto on_error; | 962 | if (!im_dirty) goto on_error; |
969 | if (cache->func.debug) cache->func.debug("dirty-src", im); | 963 | if (cache->func.debug) cache->func.debug("dirty-src", im); |
970 | error = cache->func.dirty(im_dirty, im); | 964 | cache->func.dirty(im_dirty, im); |
971 | if (cache->func.debug) cache->func.debug("dirty-out", im_dirty); | 965 | if (cache->func.debug) cache->func.debug("dirty-out", im_dirty); |
972 | #ifdef EVAS_FRAME_QUEUING | 966 | #ifdef EVAS_FRAME_QUEUING |
973 | LKL(im_dirty->lock_references); | 967 | LKL(im_dirty->lock_references); |
@@ -1014,15 +1008,13 @@ evas_cache_image_alone(Image_Entry *im) | |||
1014 | } | 1008 | } |
1015 | else | 1009 | else |
1016 | { | 1010 | { |
1017 | int error; | ||
1018 | |||
1019 | im_dirty = evas_cache_image_copied_data(cache, im->w, im->h, | 1011 | im_dirty = evas_cache_image_copied_data(cache, im->w, im->h, |
1020 | evas_cache_image_pixels(im), | 1012 | evas_cache_image_pixels(im), |
1021 | im->flags.alpha, | 1013 | im->flags.alpha, |
1022 | im->space); | 1014 | im->space); |
1023 | if (!im_dirty) goto on_error; | 1015 | if (!im_dirty) goto on_error; |
1024 | if (cache->func.debug) cache->func.debug("dirty-src", im); | 1016 | if (cache->func.debug) cache->func.debug("dirty-src", im); |
1025 | error = cache->func.dirty(im_dirty, im); | 1017 | cache->func.dirty(im_dirty, im); |
1026 | if (cache->func.debug) cache->func.debug("dirty-out", im_dirty); | 1018 | if (cache->func.debug) cache->func.debug("dirty-out", im_dirty); |
1027 | #ifdef EVAS_FRAME_QUEUING | 1019 | #ifdef EVAS_FRAME_QUEUING |
1028 | LKL(im_dirty->lock_references); | 1020 | LKL(im_dirty->lock_references); |
@@ -1296,6 +1288,7 @@ evas_cache_image_preload_cancel(Image_Entry *im, const void *target) | |||
1296 | _evas_cache_image_entry_preload_remove(im, target); | 1288 | _evas_cache_image_entry_preload_remove(im, target); |
1297 | #else | 1289 | #else |
1298 | (void)im; | 1290 | (void)im; |
1291 | (void)target; | ||
1299 | #endif | 1292 | #endif |
1300 | } | 1293 | } |
1301 | 1294 | ||
diff --git a/libraries/evas/src/lib/cache/evas_preload.c b/libraries/evas/src/lib/cache/evas_preload.c index 6e0412a..5eebaed 100644 --- a/libraries/evas/src/lib/cache/evas_preload.c +++ b/libraries/evas/src/lib/cache/evas_preload.c | |||
@@ -225,6 +225,7 @@ evas_preload_thread_run(void (*func_heavy) (void *data), | |||
225 | If no thread and as we don't want to break app that rely on this | 225 | If no thread and as we don't want to break app that rely on this |
226 | facility, we will lock the interface until we are done. | 226 | facility, we will lock the interface until we are done. |
227 | */ | 227 | */ |
228 | (void)func_cancel; | ||
228 | func_heavy((void *)data); | 229 | func_heavy((void *)data); |
229 | func_end((void *)data); | 230 | func_end((void *)data); |
230 | return (void *)1; | 231 | return (void *)1; |
@@ -253,12 +254,13 @@ evas_preload_thread_cancel(Evas_Preload_Pthread *thread) | |||
253 | } | 254 | } |
254 | } | 255 | } |
255 | LKU(_mutex); | 256 | LKU(_mutex); |
256 | 257 | ||
257 | /* Delay the destruction */ | 258 | /* Delay the destruction */ |
258 | work = (Evas_Preload_Pthread_Worker *)thread; | 259 | work = (Evas_Preload_Pthread_Worker *)thread; |
259 | work->cancel = EINA_TRUE; | 260 | work->cancel = EINA_TRUE; |
260 | return EINA_FALSE; | 261 | return EINA_FALSE; |
261 | #else | 262 | #else |
263 | (void) thread; | ||
262 | return EINA_TRUE; | 264 | return EINA_TRUE; |
263 | #endif | 265 | #endif |
264 | } | 266 | } |
diff --git a/libraries/evas/src/lib/canvas/Makefile.in b/libraries/evas/src/lib/canvas/Makefile.in index 0b4e15d..75da67a 100644 --- a/libraries/evas/src/lib/canvas/Makefile.in +++ b/libraries/evas/src/lib/canvas/Makefile.in | |||
@@ -211,8 +211,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
211 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 211 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
212 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 212 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
213 | PKG_CONFIG = @PKG_CONFIG@ | 213 | PKG_CONFIG = @PKG_CONFIG@ |
214 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
215 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
216 | PNG_CFLAGS = @PNG_CFLAGS@ | 214 | PNG_CFLAGS = @PNG_CFLAGS@ |
217 | PNG_LIBS = @PNG_LIBS@ | 215 | PNG_LIBS = @PNG_LIBS@ |
218 | RANLIB = @RANLIB@ | 216 | RANLIB = @RANLIB@ |
@@ -229,6 +227,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
229 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 227 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
230 | VERSION = @VERSION@ | 228 | VERSION = @VERSION@ |
231 | VMAJ = @VMAJ@ | 229 | VMAJ = @VMAJ@ |
230 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
231 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
232 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 232 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
233 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 233 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
234 | XCB_CFLAGS = @XCB_CFLAGS@ | 234 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -310,6 +310,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
310 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 310 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
311 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 311 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
312 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 312 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
313 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
314 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
315 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
316 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
313 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 317 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
314 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 318 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
315 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 319 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/canvas/evas_callbacks.c b/libraries/evas/src/lib/canvas/evas_callbacks.c index 33b93bc..93f34f2 100644 --- a/libraries/evas/src/lib/canvas/evas_callbacks.c +++ b/libraries/evas/src/lib/canvas/evas_callbacks.c | |||
@@ -23,7 +23,7 @@ _evas_post_event_callback_call(Evas *e) | |||
23 | { | 23 | { |
24 | if (!pc->func((void*)pc->data, e)) skip = 1; | 24 | if (!pc->func((void*)pc->data, e)) skip = 1; |
25 | } | 25 | } |
26 | EVAS_MEMPOOL_FREE(_mp_pc, pc); | 26 | EVAS_MEMPOOL_FREE(_mp_pc, pc); |
27 | } | 27 | } |
28 | _evas_unwalk(e); | 28 | _evas_unwalk(e); |
29 | } | 29 | } |
@@ -32,10 +32,10 @@ void | |||
32 | _evas_post_event_callback_free(Evas *e) | 32 | _evas_post_event_callback_free(Evas *e) |
33 | { | 33 | { |
34 | Evas_Post_Callback *pc; | 34 | Evas_Post_Callback *pc; |
35 | 35 | ||
36 | EINA_LIST_FREE(e->post_events, pc) | 36 | EINA_LIST_FREE(e->post_events, pc) |
37 | { | 37 | { |
38 | EVAS_MEMPOOL_FREE(_mp_pc, pc); | 38 | EVAS_MEMPOOL_FREE(_mp_pc, pc); |
39 | } | 39 | } |
40 | _evas_unwalk(e); | 40 | _evas_unwalk(e); |
41 | } | 41 | } |
@@ -48,15 +48,15 @@ evas_event_callback_list_post_free(Eina_Inlist **list) | |||
48 | /* MEM OK */ | 48 | /* MEM OK */ |
49 | for (l = *list; l;) | 49 | for (l = *list; l;) |
50 | { | 50 | { |
51 | Evas_Func_Node *fn; | 51 | Evas_Func_Node *fn; |
52 | 52 | ||
53 | fn = (Evas_Func_Node *)l; | 53 | fn = (Evas_Func_Node *)l; |
54 | l = l->next; | 54 | l = l->next; |
55 | if (fn->delete_me) | 55 | if (fn->delete_me) |
56 | { | 56 | { |
57 | *list = eina_inlist_remove(*list, EINA_INLIST_GET(fn)); | 57 | *list = eina_inlist_remove(*list, EINA_INLIST_GET(fn)); |
58 | EVAS_MEMPOOL_FREE(_mp_fn, fn); | 58 | EVAS_MEMPOOL_FREE(_mp_fn, fn); |
59 | } | 59 | } |
60 | } | 60 | } |
61 | } | 61 | } |
62 | 62 | ||
@@ -70,7 +70,7 @@ evas_object_event_callback_clear(Evas_Object *obj) | |||
70 | if (!obj->callbacks->callbacks) | 70 | if (!obj->callbacks->callbacks) |
71 | { | 71 | { |
72 | EVAS_MEMPOOL_FREE(_mp_cb, obj->callbacks); | 72 | EVAS_MEMPOOL_FREE(_mp_cb, obj->callbacks); |
73 | obj->callbacks = NULL; | 73 | obj->callbacks = NULL; |
74 | } | 74 | } |
75 | } | 75 | } |
76 | 76 | ||
@@ -84,7 +84,7 @@ evas_event_callback_clear(Evas *e) | |||
84 | if (!e->callbacks->callbacks) | 84 | if (!e->callbacks->callbacks) |
85 | { | 85 | { |
86 | EVAS_MEMPOOL_FREE(_mp_cb, e->callbacks); | 86 | EVAS_MEMPOOL_FREE(_mp_cb, e->callbacks); |
87 | e->callbacks = NULL; | 87 | e->callbacks = NULL; |
88 | } | 88 | } |
89 | } | 89 | } |
90 | 90 | ||
@@ -95,7 +95,7 @@ evas_object_event_callback_all_del(Evas_Object *obj) | |||
95 | 95 | ||
96 | if (!obj->callbacks) return; | 96 | if (!obj->callbacks) return; |
97 | EINA_INLIST_FOREACH(obj->callbacks->callbacks, fn) | 97 | EINA_INLIST_FOREACH(obj->callbacks->callbacks, fn) |
98 | fn->delete_me = 1; | 98 | fn->delete_me = 1; |
99 | } | 99 | } |
100 | 100 | ||
101 | void | 101 | void |
@@ -115,7 +115,7 @@ evas_event_callback_all_del(Evas *e) | |||
115 | 115 | ||
116 | if (!e->callbacks) return; | 116 | if (!e->callbacks) return; |
117 | EINA_INLIST_FOREACH(e->callbacks->callbacks, fn) | 117 | EINA_INLIST_FOREACH(e->callbacks->callbacks, fn) |
118 | fn->delete_me = 1; | 118 | fn->delete_me = 1; |
119 | } | 119 | } |
120 | 120 | ||
121 | void | 121 | void |
@@ -136,25 +136,25 @@ evas_event_callback_call(Evas *e, Evas_Callback_Type type, void *event_info) | |||
136 | _evas_walk(e); | 136 | _evas_walk(e); |
137 | if (e->callbacks) | 137 | if (e->callbacks) |
138 | { | 138 | { |
139 | l_mod = &e->callbacks->callbacks; | 139 | l_mod = &e->callbacks->callbacks; |
140 | e->callbacks->walking_list++; | 140 | e->callbacks->walking_list++; |
141 | for (l = *l_mod; l; l = l->next) | 141 | for (l = *l_mod; l; l = l->next) |
142 | { | 142 | { |
143 | Evas_Func_Node *fn; | 143 | Evas_Func_Node *fn; |
144 | 144 | ||
145 | fn = (Evas_Func_Node *)l; | 145 | fn = (Evas_Func_Node *)l; |
146 | if ((fn->type == type) && (!fn->delete_me)) | 146 | if ((fn->type == type) && (!fn->delete_me)) |
147 | { | 147 | { |
148 | Evas_Event_Cb func = fn->func; | 148 | Evas_Event_Cb func = fn->func; |
149 | if (func) | 149 | if (func) |
150 | func(fn->data, e, event_info); | 150 | func(fn->data, e, event_info); |
151 | } | 151 | } |
152 | if (e->delete_me) break; | 152 | if (e->delete_me) break; |
153 | } | 153 | } |
154 | e->callbacks->walking_list--; | 154 | e->callbacks->walking_list--; |
155 | if (!e->callbacks->walking_list) | 155 | if (!e->callbacks->walking_list) |
156 | { | 156 | { |
157 | evas_event_callback_clear(e); | 157 | evas_event_callback_clear(e); |
158 | l_mod = NULL; | 158 | l_mod = NULL; |
159 | } | 159 | } |
160 | } | 160 | } |
@@ -162,7 +162,7 @@ evas_event_callback_call(Evas *e, Evas_Callback_Type type, void *event_info) | |||
162 | } | 162 | } |
163 | 163 | ||
164 | void | 164 | void |
165 | evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void *event_info) | 165 | evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void *event_info, int event_id) |
166 | { | 166 | { |
167 | /* MEM OK */ | 167 | /* MEM OK */ |
168 | Eina_Inlist **l_mod = NULL, *l; | 168 | Eina_Inlist **l_mod = NULL, *l; |
@@ -170,67 +170,67 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void | |||
170 | Evas *e; | 170 | Evas *e; |
171 | 171 | ||
172 | if ((obj->delete_me) || (!obj->layer)) return; | 172 | if ((obj->delete_me) || (!obj->layer)) return; |
173 | if ((obj->last_event == _evas_event_counter) && | 173 | if ((obj->last_event == event_id) && |
174 | (obj->last_event_type == type)) return; | 174 | (obj->last_event_type == type)) return; |
175 | obj->last_event = _evas_event_counter; | 175 | obj->last_event = event_id; |
176 | obj->last_event_type = type; | 176 | obj->last_event_type = type; |
177 | if (!(e = obj->layer->evas)) return; | 177 | if (!(e = obj->layer->evas)) return; |
178 | 178 | ||
179 | _evas_walk(e); | 179 | _evas_walk(e); |
180 | if (obj->callbacks) | 180 | if (obj->callbacks) |
181 | { | 181 | { |
182 | l_mod = &obj->callbacks->callbacks; | 182 | l_mod = &obj->callbacks->callbacks; |
183 | switch (type) | 183 | switch (type) |
184 | { | 184 | { |
185 | case EVAS_CALLBACK_MOUSE_DOWN: | 185 | case EVAS_CALLBACK_MOUSE_DOWN: |
186 | { | 186 | { |
187 | Evas_Event_Mouse_Down *ev = event_info; | 187 | Evas_Event_Mouse_Down *ev = event_info; |
188 | 188 | ||
189 | flags = ev->flags; | 189 | flags = ev->flags; |
190 | if (ev->flags & (EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK)) | 190 | if (ev->flags & (EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK)) |
191 | { | 191 | { |
192 | if (obj->last_mouse_down_counter < (e->last_mouse_down_counter - 1)) | 192 | if (obj->last_mouse_down_counter < (e->last_mouse_down_counter - 1)) |
193 | ev->flags &= ~(EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK); | 193 | ev->flags &= ~(EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK); |
194 | } | 194 | } |
195 | obj->last_mouse_down_counter = e->last_mouse_down_counter; | 195 | obj->last_mouse_down_counter = e->last_mouse_down_counter; |
196 | break; | 196 | break; |
197 | } | 197 | } |
198 | case EVAS_CALLBACK_MOUSE_UP: | 198 | case EVAS_CALLBACK_MOUSE_UP: |
199 | { | 199 | { |
200 | Evas_Event_Mouse_Up *ev = event_info; | 200 | Evas_Event_Mouse_Up *ev = event_info; |
201 | 201 | ||
202 | flags = ev->flags; | 202 | flags = ev->flags; |
203 | if (ev->flags & (EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK)) | 203 | if (ev->flags & (EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK)) |
204 | { | 204 | { |
205 | if (obj->last_mouse_up_counter < (e->last_mouse_up_counter - 1)) | 205 | if (obj->last_mouse_up_counter < (e->last_mouse_up_counter - 1)) |
206 | ev->flags &= ~(EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK); | 206 | ev->flags &= ~(EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK); |
207 | } | 207 | } |
208 | obj->last_mouse_up_counter = e->last_mouse_up_counter; | 208 | obj->last_mouse_up_counter = e->last_mouse_up_counter; |
209 | break; | 209 | break; |
210 | } | 210 | } |
211 | default: | 211 | default: |
212 | break; | 212 | break; |
213 | } | 213 | } |
214 | obj->callbacks->walking_list++; | 214 | obj->callbacks->walking_list++; |
215 | for (l = *l_mod; l; l = l->next) | 215 | for (l = *l_mod; l; l = l->next) |
216 | { | 216 | { |
217 | Evas_Func_Node *fn; | 217 | Evas_Func_Node *fn; |
218 | 218 | ||
219 | fn = (Evas_Func_Node *)l; | 219 | fn = (Evas_Func_Node *)l; |
220 | if ((fn->type == type) && (!fn->delete_me)) | 220 | if ((fn->type == type) && (!fn->delete_me)) |
221 | { | 221 | { |
222 | Evas_Object_Event_Cb func = fn->func; | 222 | Evas_Object_Event_Cb func = fn->func; |
223 | if (func) | 223 | if (func) |
224 | func(fn->data, obj->layer->evas, obj, event_info); | 224 | func(fn->data, obj->layer->evas, obj, event_info); |
225 | } | 225 | } |
226 | if (obj->delete_me) break; | 226 | if (obj->delete_me) break; |
227 | } | 227 | } |
228 | obj->callbacks->walking_list--; | 228 | obj->callbacks->walking_list--; |
229 | if (!obj->callbacks->walking_list) | 229 | if (!obj->callbacks->walking_list) |
230 | { | 230 | { |
231 | evas_object_event_callback_clear(obj); | 231 | evas_object_event_callback_clear(obj); |
232 | l_mod = NULL; | 232 | l_mod = NULL; |
233 | } | 233 | } |
234 | 234 | ||
235 | if (type == EVAS_CALLBACK_MOUSE_DOWN) | 235 | if (type == EVAS_CALLBACK_MOUSE_DOWN) |
236 | { | 236 | { |
@@ -246,12 +246,12 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void | |||
246 | 246 | ||
247 | if (!((obj->no_propagate) && (l_mod) && (*l_mod))) | 247 | if (!((obj->no_propagate) && (l_mod) && (*l_mod))) |
248 | { | 248 | { |
249 | if (!obj->no_propagate) | 249 | if (!obj->no_propagate) |
250 | { | 250 | { |
251 | if ((obj->smart.parent) && (type != EVAS_CALLBACK_FREE) && | 251 | if ((obj->smart.parent) && (type != EVAS_CALLBACK_FREE) && |
252 | (type <= EVAS_CALLBACK_KEY_UP)) | 252 | (type <= EVAS_CALLBACK_KEY_UP)) |
253 | evas_object_event_callback_call(obj->smart.parent, type, event_info); | 253 | evas_object_event_callback_call(obj->smart.parent, type, event_info, event_id); |
254 | } | 254 | } |
255 | } | 255 | } |
256 | _evas_unwalk(e); | 256 | _evas_unwalk(e); |
257 | } | 257 | } |
@@ -263,16 +263,16 @@ _callback_priority_cmp(const void *_a, const void *_b) | |||
263 | a = EINA_INLIST_CONTAINER_GET(_a, Evas_Func_Node); | 263 | a = EINA_INLIST_CONTAINER_GET(_a, Evas_Func_Node); |
264 | b = EINA_INLIST_CONTAINER_GET(_b, Evas_Func_Node); | 264 | b = EINA_INLIST_CONTAINER_GET(_b, Evas_Func_Node); |
265 | if (a->priority < b->priority) | 265 | if (a->priority < b->priority) |
266 | return -1; | 266 | return -1; |
267 | else | 267 | else |
268 | return 1; | 268 | return 1; |
269 | } | 269 | } |
270 | 270 | ||
271 | EAPI void | 271 | EAPI void |
272 | evas_object_event_callback_add(Evas_Object *obj, Evas_Callback_Type type, Evas_Object_Event_Cb func, const void *data) | 272 | evas_object_event_callback_add(Evas_Object *obj, Evas_Callback_Type type, Evas_Object_Event_Cb func, const void *data) |
273 | { | 273 | { |
274 | evas_object_event_callback_priority_add(obj, type, | 274 | evas_object_event_callback_priority_add(obj, type, |
275 | EVAS_CALLBACK_PRIORITY_DEFAULT, func, data); | 275 | EVAS_CALLBACK_PRIORITY_DEFAULT, func, data); |
276 | } | 276 | } |
277 | 277 | ||
278 | EAPI void | 278 | EAPI void |
@@ -294,7 +294,7 @@ evas_object_event_callback_priority_add(Evas_Object *obj, Evas_Callback_Type typ | |||
294 | if (!obj->callbacks) return; | 294 | if (!obj->callbacks) return; |
295 | EVAS_MEMPOOL_PREP(_mp_cb, obj->callbacks, Evas_Callbacks); | 295 | EVAS_MEMPOOL_PREP(_mp_cb, obj->callbacks, Evas_Callbacks); |
296 | } | 296 | } |
297 | 297 | ||
298 | EVAS_MEMPOOL_INIT(_mp_fn, "evas_func_node", Evas_Func_Node, 2048, ); | 298 | EVAS_MEMPOOL_INIT(_mp_fn, "evas_func_node", Evas_Func_Node, 2048, ); |
299 | fn = EVAS_MEMPOOL_ALLOC(_mp_fn, Evas_Func_Node); | 299 | fn = EVAS_MEMPOOL_ALLOC(_mp_fn, Evas_Func_Node); |
300 | if (!fn) return; | 300 | if (!fn) return; |
@@ -305,8 +305,8 @@ evas_object_event_callback_priority_add(Evas_Object *obj, Evas_Callback_Type typ | |||
305 | fn->priority = priority; | 305 | fn->priority = priority; |
306 | 306 | ||
307 | obj->callbacks->callbacks = | 307 | obj->callbacks->callbacks = |
308 | eina_inlist_sorted_insert(obj->callbacks->callbacks, EINA_INLIST_GET(fn), | 308 | eina_inlist_sorted_insert(obj->callbacks->callbacks, EINA_INLIST_GET(fn), |
309 | _callback_priority_cmp); | 309 | _callback_priority_cmp); |
310 | } | 310 | } |
311 | 311 | ||
312 | EAPI void * | 312 | EAPI void * |
@@ -325,17 +325,17 @@ evas_object_event_callback_del(Evas_Object *obj, Evas_Callback_Type type, Evas_O | |||
325 | 325 | ||
326 | EINA_INLIST_FOREACH(obj->callbacks->callbacks, fn) | 326 | EINA_INLIST_FOREACH(obj->callbacks->callbacks, fn) |
327 | { | 327 | { |
328 | if ((fn->func == func) && (fn->type == type) && (!fn->delete_me)) | 328 | if ((fn->func == func) && (fn->type == type) && (!fn->delete_me)) |
329 | { | 329 | { |
330 | void *tmp; | 330 | void *tmp; |
331 | 331 | ||
332 | tmp = fn->data; | 332 | tmp = fn->data; |
333 | fn->delete_me = 1; | 333 | fn->delete_me = 1; |
334 | obj->callbacks->deletions_waiting = 1; | 334 | obj->callbacks->deletions_waiting = 1; |
335 | if (!obj->callbacks->walking_list) | 335 | if (!obj->callbacks->walking_list) |
336 | evas_object_event_callback_clear(obj); | 336 | evas_object_event_callback_clear(obj); |
337 | return tmp; | 337 | return tmp; |
338 | } | 338 | } |
339 | } | 339 | } |
340 | return NULL; | 340 | return NULL; |
341 | } | 341 | } |
@@ -356,17 +356,17 @@ evas_object_event_callback_del_full(Evas_Object *obj, Evas_Callback_Type type, E | |||
356 | 356 | ||
357 | EINA_INLIST_FOREACH(obj->callbacks->callbacks, fn) | 357 | EINA_INLIST_FOREACH(obj->callbacks->callbacks, fn) |
358 | { | 358 | { |
359 | if ((fn->func == func) && (fn->type == type) && (fn->data == data) && (!fn->delete_me)) | 359 | if ((fn->func == func) && (fn->type == type) && (fn->data == data) && (!fn->delete_me)) |
360 | { | 360 | { |
361 | void *tmp; | 361 | void *tmp; |
362 | 362 | ||
363 | tmp = fn->data; | 363 | tmp = fn->data; |
364 | fn->delete_me = 1; | 364 | fn->delete_me = 1; |
365 | obj->callbacks->deletions_waiting = 1; | 365 | obj->callbacks->deletions_waiting = 1; |
366 | if (!obj->callbacks->walking_list) | 366 | if (!obj->callbacks->walking_list) |
367 | evas_object_event_callback_clear(obj); | 367 | evas_object_event_callback_clear(obj); |
368 | return tmp; | 368 | return tmp; |
369 | } | 369 | } |
370 | } | 370 | } |
371 | return NULL; | 371 | return NULL; |
372 | } | 372 | } |
@@ -375,7 +375,7 @@ EAPI void | |||
375 | evas_event_callback_add(Evas *e, Evas_Callback_Type type, Evas_Event_Cb func, const void *data) | 375 | evas_event_callback_add(Evas *e, Evas_Callback_Type type, Evas_Event_Cb func, const void *data) |
376 | { | 376 | { |
377 | evas_event_callback_priority_add(e, type, EVAS_CALLBACK_PRIORITY_DEFAULT, | 377 | evas_event_callback_priority_add(e, type, EVAS_CALLBACK_PRIORITY_DEFAULT, |
378 | func, data); | 378 | func, data); |
379 | } | 379 | } |
380 | 380 | ||
381 | EAPI void | 381 | EAPI void |
@@ -397,7 +397,7 @@ evas_event_callback_priority_add(Evas *e, Evas_Callback_Type type, Evas_Callback | |||
397 | if (!e->callbacks) return; | 397 | if (!e->callbacks) return; |
398 | EVAS_MEMPOOL_PREP(_mp_cb, e->callbacks, Evas_Callbacks); | 398 | EVAS_MEMPOOL_PREP(_mp_cb, e->callbacks, Evas_Callbacks); |
399 | } | 399 | } |
400 | 400 | ||
401 | EVAS_MEMPOOL_INIT(_mp_fn, "evas_func_node", Evas_Func_Node, 2048, ); | 401 | EVAS_MEMPOOL_INIT(_mp_fn, "evas_func_node", Evas_Func_Node, 2048, ); |
402 | fn = EVAS_MEMPOOL_ALLOC(_mp_fn, Evas_Func_Node); | 402 | fn = EVAS_MEMPOOL_ALLOC(_mp_fn, Evas_Func_Node); |
403 | if (!fn) return; | 403 | if (!fn) return; |
@@ -408,7 +408,7 @@ evas_event_callback_priority_add(Evas *e, Evas_Callback_Type type, Evas_Callback | |||
408 | fn->priority = priority; | 408 | fn->priority = priority; |
409 | 409 | ||
410 | e->callbacks->callbacks = eina_inlist_sorted_insert(e->callbacks->callbacks, | 410 | e->callbacks->callbacks = eina_inlist_sorted_insert(e->callbacks->callbacks, |
411 | EINA_INLIST_GET(fn), _callback_priority_cmp); | 411 | EINA_INLIST_GET(fn), _callback_priority_cmp); |
412 | } | 412 | } |
413 | 413 | ||
414 | EAPI void * | 414 | EAPI void * |
@@ -427,17 +427,17 @@ evas_event_callback_del(Evas *e, Evas_Callback_Type type, Evas_Event_Cb func) | |||
427 | 427 | ||
428 | EINA_INLIST_FOREACH(e->callbacks->callbacks, fn) | 428 | EINA_INLIST_FOREACH(e->callbacks->callbacks, fn) |
429 | { | 429 | { |
430 | if ((fn->func == func) && (fn->type == type) && (!fn->delete_me)) | 430 | if ((fn->func == func) && (fn->type == type) && (!fn->delete_me)) |
431 | { | 431 | { |
432 | void *data; | 432 | void *data; |
433 | 433 | ||
434 | data = fn->data; | 434 | data = fn->data; |
435 | fn->delete_me = 1; | 435 | fn->delete_me = 1; |
436 | e->callbacks->deletions_waiting = 1; | 436 | e->callbacks->deletions_waiting = 1; |
437 | if (!e->callbacks->walking_list) | 437 | if (!e->callbacks->walking_list) |
438 | evas_event_callback_clear(e); | 438 | evas_event_callback_clear(e); |
439 | return data; | 439 | return data; |
440 | } | 440 | } |
441 | } | 441 | } |
442 | return NULL; | 442 | return NULL; |
443 | } | 443 | } |
@@ -458,17 +458,17 @@ evas_event_callback_del_full(Evas *e, Evas_Callback_Type type, Evas_Event_Cb fun | |||
458 | 458 | ||
459 | EINA_INLIST_FOREACH(e->callbacks->callbacks, fn) | 459 | EINA_INLIST_FOREACH(e->callbacks->callbacks, fn) |
460 | { | 460 | { |
461 | if ((fn->func == func) && (fn->type == type) && (fn->data == data) && (!fn->delete_me)) | 461 | if ((fn->func == func) && (fn->type == type) && (fn->data == data) && (!fn->delete_me)) |
462 | { | 462 | { |
463 | void *tmp; | 463 | void *tmp; |
464 | 464 | ||
465 | tmp = fn->data; | 465 | tmp = fn->data; |
466 | fn->delete_me = 1; | 466 | fn->delete_me = 1; |
467 | e->callbacks->deletions_waiting = 1; | 467 | e->callbacks->deletions_waiting = 1; |
468 | if (!e->callbacks->walking_list) | 468 | if (!e->callbacks->walking_list) |
469 | evas_event_callback_clear(e); | 469 | evas_event_callback_clear(e); |
470 | return tmp; | 470 | return tmp; |
471 | } | 471 | } |
472 | } | 472 | } |
473 | return NULL; | 473 | return NULL; |
474 | } | 474 | } |
@@ -477,17 +477,17 @@ EAPI void | |||
477 | evas_post_event_callback_push(Evas *e, Evas_Object_Event_Post_Cb func, const void *data) | 477 | evas_post_event_callback_push(Evas *e, Evas_Object_Event_Post_Cb func, const void *data) |
478 | { | 478 | { |
479 | Evas_Post_Callback *pc; | 479 | Evas_Post_Callback *pc; |
480 | 480 | ||
481 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 481 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
482 | return; | 482 | return; |
483 | MAGIC_CHECK_END(); | 483 | MAGIC_CHECK_END(); |
484 | 484 | ||
485 | EVAS_MEMPOOL_INIT(_mp_pc, "evas_post_callback", Evas_Post_Callback, 64, ); | 485 | EVAS_MEMPOOL_INIT(_mp_pc, "evas_post_callback", Evas_Post_Callback, 64, ); |
486 | pc = EVAS_MEMPOOL_ALLOC(_mp_pc, Evas_Post_Callback); | 486 | pc = EVAS_MEMPOOL_ALLOC(_mp_pc, Evas_Post_Callback); |
487 | if (!pc) return; | 487 | if (!pc) return; |
488 | EVAS_MEMPOOL_PREP(_mp_pc, pc, Evas_Post_Callback); | 488 | EVAS_MEMPOOL_PREP(_mp_pc, pc, Evas_Post_Callback); |
489 | if (e->delete_me) return; | 489 | if (e->delete_me) return; |
490 | 490 | ||
491 | pc->func = func; | 491 | pc->func = func; |
492 | pc->data = data; | 492 | pc->data = data; |
493 | e->post_events = eina_list_prepend(e->post_events, pc); | 493 | e->post_events = eina_list_prepend(e->post_events, pc); |
@@ -498,11 +498,11 @@ evas_post_event_callback_remove(Evas *e, Evas_Object_Event_Post_Cb func) | |||
498 | { | 498 | { |
499 | Evas_Post_Callback *pc; | 499 | Evas_Post_Callback *pc; |
500 | Eina_List *l; | 500 | Eina_List *l; |
501 | 501 | ||
502 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 502 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
503 | return; | 503 | return; |
504 | MAGIC_CHECK_END(); | 504 | MAGIC_CHECK_END(); |
505 | 505 | ||
506 | EINA_LIST_FOREACH(e->post_events, l, pc) | 506 | EINA_LIST_FOREACH(e->post_events, l, pc) |
507 | { | 507 | { |
508 | if (pc->func == func) | 508 | if (pc->func == func) |
@@ -518,11 +518,11 @@ evas_post_event_callback_remove_full(Evas *e, Evas_Object_Event_Post_Cb func, co | |||
518 | { | 518 | { |
519 | Evas_Post_Callback *pc; | 519 | Evas_Post_Callback *pc; |
520 | Eina_List *l; | 520 | Eina_List *l; |
521 | 521 | ||
522 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 522 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
523 | return; | 523 | return; |
524 | MAGIC_CHECK_END(); | 524 | MAGIC_CHECK_END(); |
525 | 525 | ||
526 | EINA_LIST_FOREACH(e->post_events, l, pc) | 526 | EINA_LIST_FOREACH(e->post_events, l, pc) |
527 | { | 527 | { |
528 | if ((pc->func == func) && (pc->data == data)) | 528 | if ((pc->func == func) && (pc->data == data)) |
diff --git a/libraries/evas/src/lib/canvas/evas_events.c b/libraries/evas/src/lib/canvas/evas_events.c index 99ecf8c..9b7077e 100644 --- a/libraries/evas/src/lib/canvas/evas_events.c +++ b/libraries/evas/src/lib/canvas/evas_events.c | |||
@@ -1,6 +1,11 @@ | |||
1 | #include "evas_common.h" | 1 | #include "evas_common.h" |
2 | #include "evas_private.h" | 2 | #include "evas_private.h" |
3 | 3 | ||
4 | static Eina_List * | ||
5 | _evas_event_object_list_in_get(Evas *e, Eina_List *in, | ||
6 | const Eina_Inlist *list, Evas_Object *stop, | ||
7 | int x, int y, int *no_rep); | ||
8 | |||
4 | static void | 9 | static void |
5 | _evas_event_havemap_adjust(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Eina_Bool mouse_grabbed) | 10 | _evas_event_havemap_adjust(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Eina_Bool mouse_grabbed) |
6 | { | 11 | { |
@@ -16,13 +21,17 @@ _evas_event_havemap_adjust(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Eina_ | |||
16 | } | 21 | } |
17 | 22 | ||
18 | static Eina_List * | 23 | static Eina_List * |
19 | _evas_event_object_list_in_get(Evas *e, Eina_List *in, | 24 | _evas_event_object_list_raw_in_get(Evas *e, Eina_List *in, |
20 | const Eina_Inlist *list, Evas_Object *stop, | 25 | const Eina_Inlist *list, Evas_Object *stop, |
21 | int x, int y, int *no_rep) | 26 | int x, int y, int *no_rep) |
22 | { | 27 | { |
23 | Evas_Object *obj; | 28 | Evas_Object *obj; |
29 | int inside; | ||
30 | |||
24 | if (!list) return in; | 31 | if (!list) return in; |
25 | EINA_INLIST_REVERSE_FOREACH(list, obj) | 32 | for (obj = _EINA_INLIST_CONTAINER(obj, list); |
33 | obj; | ||
34 | obj = _EINA_INLIST_CONTAINER(obj, EINA_INLIST_GET(obj)->prev)) | ||
26 | { | 35 | { |
27 | if (obj == stop) | 36 | if (obj == stop) |
28 | { | 37 | { |
@@ -37,9 +46,9 @@ _evas_event_object_list_in_get(Evas *e, Eina_List *in, | |||
37 | if (obj->smart.smart) | 46 | if (obj->smart.smart) |
38 | { | 47 | { |
39 | int norep = 0; | 48 | int norep = 0; |
40 | int inside; | ||
41 | 49 | ||
42 | if (((obj->cur.usemap) && (obj->cur.map) && (obj->cur.map->count == 4))) | 50 | if ((obj->cur.usemap) && (obj->cur.map) && |
51 | (obj->cur.map->count == 4)) | ||
43 | { | 52 | { |
44 | inside = evas_object_is_in_output_rect(obj, x, y, 1, 1); | 53 | inside = evas_object_is_in_output_rect(obj, x, y, 1, 1); |
45 | if (inside) | 54 | if (inside) |
@@ -57,7 +66,8 @@ _evas_event_object_list_in_get(Evas *e, Eina_List *in, | |||
57 | evas_object_smart_members_get_direct(obj), | 66 | evas_object_smart_members_get_direct(obj), |
58 | stop, | 67 | stop, |
59 | obj->cur.geometry.x + obj->cur.map->mx, | 68 | obj->cur.geometry.x + obj->cur.map->mx, |
60 | obj->cur.geometry.y + obj->cur.map->my, &norep); | 69 | obj->cur.geometry.y + obj->cur.map->my, |
70 | &norep); | ||
61 | } | 71 | } |
62 | } | 72 | } |
63 | } | 73 | } |
@@ -69,19 +79,24 @@ _evas_event_object_list_in_get(Evas *e, Eina_List *in, | |||
69 | } | 79 | } |
70 | if (norep) | 80 | if (norep) |
71 | { | 81 | { |
72 | if (!obj->repeat_events) *no_rep = 1; | 82 | if (!obj->repeat_events) |
73 | return in; | 83 | { |
84 | *no_rep = 1; | ||
85 | return in; | ||
86 | } | ||
74 | } | 87 | } |
75 | } | 88 | } |
76 | else | 89 | else |
77 | { | 90 | { |
78 | int inside = evas_object_is_in_output_rect(obj, x, y, 1, 1); | 91 | inside = evas_object_is_in_output_rect(obj, x, y, 1, 1); |
79 | 92 | ||
80 | if (((obj->cur.usemap) && (obj->cur.map) && (obj->cur.map->count == 4))) | 93 | if ((obj->cur.usemap) && (obj->cur.map) && |
94 | (obj->cur.map->count == 4)) | ||
81 | { | 95 | { |
82 | if ((inside) && (!evas_map_coords_get(obj->cur.map, x, y, | 96 | if ((inside) && |
83 | &(obj->cur.map->mx), | 97 | (!evas_map_coords_get(obj->cur.map, x, y, |
84 | &(obj->cur.map->my), 0))) | 98 | &(obj->cur.map->mx), |
99 | &(obj->cur.map->my), 0))) | ||
85 | { | 100 | { |
86 | inside = 0; | 101 | inside = 0; |
87 | } | 102 | } |
@@ -105,6 +120,16 @@ _evas_event_object_list_in_get(Evas *e, Eina_List *in, | |||
105 | return in; | 120 | return in; |
106 | } | 121 | } |
107 | 122 | ||
123 | static Eina_List * | ||
124 | _evas_event_object_list_in_get(Evas *e, Eina_List *in, | ||
125 | const Eina_Inlist *list, Evas_Object *stop, | ||
126 | int x, int y, int *no_rep) | ||
127 | { | ||
128 | if (!list) return NULL; | ||
129 | return _evas_event_object_list_raw_in_get(e, in, list->last, stop, | ||
130 | x, y, no_rep); | ||
131 | } | ||
132 | |||
108 | Eina_List * | 133 | Eina_List * |
109 | evas_event_objects_event_list(Evas *e, Evas_Object *stop, int x, int y) | 134 | evas_event_objects_event_list(Evas *e, Evas_Object *stop, int x, int y) |
110 | { | 135 | { |
@@ -136,6 +161,24 @@ evas_event_list_copy(Eina_List *list) | |||
136 | /* public functions */ | 161 | /* public functions */ |
137 | 162 | ||
138 | EAPI void | 163 | EAPI void |
164 | evas_event_default_flags_set(Evas *e, Evas_Event_Flags flags) | ||
165 | { | ||
166 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | ||
167 | return; | ||
168 | MAGIC_CHECK_END(); | ||
169 | e->default_event_flags = flags; | ||
170 | } | ||
171 | |||
172 | EAPI Evas_Event_Flags | ||
173 | evas_event_default_flags_get(const Evas *e) | ||
174 | { | ||
175 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | ||
176 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
177 | MAGIC_CHECK_END(); | ||
178 | return e->default_event_flags; | ||
179 | } | ||
180 | |||
181 | EAPI void | ||
139 | evas_event_freeze(Evas *e) | 182 | evas_event_freeze(Evas *e) |
140 | { | 183 | { |
141 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 184 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
@@ -197,6 +240,8 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int | |||
197 | Eina_List *l, *copy; | 240 | Eina_List *l, *copy; |
198 | Evas_Event_Mouse_Down ev; | 241 | Evas_Event_Mouse_Down ev; |
199 | Evas_Object *obj; | 242 | Evas_Object *obj; |
243 | int addgrab = 0; | ||
244 | int event_id = 0; | ||
200 | 245 | ||
201 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 246 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
202 | return; | 247 | return; |
@@ -205,12 +250,14 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int | |||
205 | if ((b < 1) || (b > 32)) return; | 250 | if ((b < 1) || (b > 32)) return; |
206 | 251 | ||
207 | e->pointer.button |= (1 << (b - 1)); | 252 | e->pointer.button |= (1 << (b - 1)); |
253 | e->pointer.downs++; | ||
208 | 254 | ||
209 | if (e->events_frozen > 0) return; | 255 | if (e->events_frozen > 0) return; |
210 | e->last_timestamp = timestamp; | 256 | e->last_timestamp = timestamp; |
211 | 257 | ||
212 | _evas_object_event_new(); | 258 | _evas_object_event_new(); |
213 | 259 | ||
260 | event_id = _evas_event_counter; | ||
214 | ev.button = b; | 261 | ev.button = b; |
215 | ev.output.x = e->pointer.x; | 262 | ev.output.x = e->pointer.x; |
216 | ev.output.y = e->pointer.y; | 263 | ev.output.y = e->pointer.y; |
@@ -221,7 +268,7 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int | |||
221 | ev.locks = &(e->locks); | 268 | ev.locks = &(e->locks); |
222 | ev.flags = flags; | 269 | ev.flags = flags; |
223 | ev.timestamp = timestamp; | 270 | ev.timestamp = timestamp; |
224 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 271 | ev.event_flags = e->default_event_flags; |
225 | 272 | ||
226 | _evas_walk(e); | 273 | _evas_walk(e); |
227 | /* append new touch point to the touch point list */ | 274 | /* append new touch point to the touch point list */ |
@@ -238,14 +285,23 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int | |||
238 | e->pointer.object.in = eina_list_free(e->pointer.object.in); | 285 | e->pointer.object.in = eina_list_free(e->pointer.object.in); |
239 | /* and set up the new one */ | 286 | /* and set up the new one */ |
240 | e->pointer.object.in = ins; | 287 | e->pointer.object.in = ins; |
288 | /* adjust grabbed count by the nuymber of currently held down | ||
289 | * fingers/buttons */ | ||
290 | if (e->pointer.downs > 1) addgrab = e->pointer.downs - 1; | ||
241 | } | 291 | } |
242 | copy = evas_event_list_copy(e->pointer.object.in); | 292 | copy = evas_event_list_copy(e->pointer.object.in); |
243 | EINA_LIST_FOREACH(copy, l, obj) | 293 | EINA_LIST_FOREACH(copy, l, obj) |
244 | { | 294 | { |
245 | if (obj->pointer_mode != EVAS_OBJECT_POINTER_MODE_NOGRAB) | 295 | if ((obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_AUTOGRAB) || |
296 | (obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN)) | ||
246 | { | 297 | { |
247 | obj->mouse_grabbed++; | 298 | obj->mouse_grabbed += addgrab + 1; |
248 | e->pointer.mouse_grabbed++; | 299 | e->pointer.mouse_grabbed += addgrab + 1; |
300 | if (obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN) | ||
301 | { | ||
302 | e->pointer.nogrep++; | ||
303 | break; | ||
304 | } | ||
249 | } | 305 | } |
250 | } | 306 | } |
251 | EINA_LIST_FOREACH(copy, l, obj) | 307 | EINA_LIST_FOREACH(copy, l, obj) |
@@ -256,8 +312,10 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int | |||
256 | _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed); | 312 | _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed); |
257 | 313 | ||
258 | if (e->events_frozen <= 0) | 314 | if (e->events_frozen <= 0) |
259 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_DOWN, &ev); | 315 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_DOWN, &ev, event_id); |
260 | if (e->delete_me) break; | 316 | if (e->delete_me) break; |
317 | if (obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN) | ||
318 | break; | ||
261 | } | 319 | } |
262 | if (copy) eina_list_free(copy); | 320 | if (copy) eina_list_free(copy); |
263 | e->last_mouse_down_counter++; | 321 | e->last_mouse_down_counter++; |
@@ -274,9 +332,11 @@ _post_up_handle(Evas *e, unsigned int timestamp, const void *data) | |||
274 | Evas_Event_Mouse_Out ev; | 332 | Evas_Event_Mouse_Out ev; |
275 | Evas_Object *obj; | 333 | Evas_Object *obj; |
276 | int post_called = 0; | 334 | int post_called = 0; |
335 | int event_id = 0; | ||
277 | 336 | ||
278 | _evas_object_event_new(); | 337 | _evas_object_event_new(); |
279 | 338 | ||
339 | event_id = _evas_event_counter; | ||
280 | ev.buttons = e->pointer.button; | 340 | ev.buttons = e->pointer.button; |
281 | ev.output.x = e->pointer.x; | 341 | ev.output.x = e->pointer.x; |
282 | ev.output.y = e->pointer.y; | 342 | ev.output.y = e->pointer.y; |
@@ -286,7 +346,7 @@ _post_up_handle(Evas *e, unsigned int timestamp, const void *data) | |||
286 | ev.modifiers = &(e->modifiers); | 346 | ev.modifiers = &(e->modifiers); |
287 | ev.locks = &(e->locks); | 347 | ev.locks = &(e->locks); |
288 | ev.timestamp = timestamp; | 348 | ev.timestamp = timestamp; |
289 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 349 | ev.event_flags = e->default_event_flags; |
290 | 350 | ||
291 | /* get new list of ins */ | 351 | /* get new list of ins */ |
292 | ins = evas_event_objects_event_list(e, NULL, e->pointer.x, e->pointer.y); | 352 | ins = evas_event_objects_event_list(e, NULL, e->pointer.x, e->pointer.y); |
@@ -304,7 +364,7 @@ _post_up_handle(Evas *e, unsigned int timestamp, const void *data) | |||
304 | { | 364 | { |
305 | obj->mouse_in = 0; | 365 | obj->mouse_in = 0; |
306 | if (e->events_frozen <= 0) | 366 | if (e->events_frozen <= 0) |
307 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev); | 367 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev, event_id); |
308 | } | 368 | } |
309 | } | 369 | } |
310 | if (e->delete_me) break; | 370 | if (e->delete_me) break; |
@@ -319,6 +379,7 @@ _post_up_handle(Evas *e, unsigned int timestamp, const void *data) | |||
319 | 379 | ||
320 | _evas_object_event_new(); | 380 | _evas_object_event_new(); |
321 | 381 | ||
382 | event_id = _evas_event_counter; | ||
322 | ev_in.buttons = e->pointer.button; | 383 | ev_in.buttons = e->pointer.button; |
323 | ev_in.output.x = e->pointer.x; | 384 | ev_in.output.x = e->pointer.x; |
324 | ev_in.output.y = e->pointer.y; | 385 | ev_in.output.y = e->pointer.y; |
@@ -328,7 +389,7 @@ _post_up_handle(Evas *e, unsigned int timestamp, const void *data) | |||
328 | ev_in.modifiers = &(e->modifiers); | 389 | ev_in.modifiers = &(e->modifiers); |
329 | ev_in.locks = &(e->locks); | 390 | ev_in.locks = &(e->locks); |
330 | ev_in.timestamp = timestamp; | 391 | ev_in.timestamp = timestamp; |
331 | ev_in.event_flags = EVAS_EVENT_FLAG_NONE; | 392 | ev_in.event_flags = e->default_event_flags; |
332 | 393 | ||
333 | EINA_LIST_FOREACH(ins, l, obj_itr) | 394 | EINA_LIST_FOREACH(ins, l, obj_itr) |
334 | { | 395 | { |
@@ -341,7 +402,7 @@ _post_up_handle(Evas *e, unsigned int timestamp, const void *data) | |||
341 | { | 402 | { |
342 | obj_itr->mouse_in = 1; | 403 | obj_itr->mouse_in = 1; |
343 | if (e->events_frozen <= 0) | 404 | if (e->events_frozen <= 0) |
344 | evas_object_event_callback_call(obj_itr, EVAS_CALLBACK_MOUSE_IN, &ev_in); | 405 | evas_object_event_callback_call(obj_itr, EVAS_CALLBACK_MOUSE_IN, &ev_in, event_id); |
345 | } | 406 | } |
346 | } | 407 | } |
347 | if (e->delete_me) break; | 408 | if (e->delete_me) break; |
@@ -383,6 +444,7 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t | |||
383 | if ((b < 1) || (b > 32)) return; | 444 | if ((b < 1) || (b > 32)) return; |
384 | 445 | ||
385 | e->pointer.button &= ~(1 << (b - 1)); | 446 | e->pointer.button &= ~(1 << (b - 1)); |
447 | e->pointer.downs--; | ||
386 | 448 | ||
387 | if (e->events_frozen > 0) return; | 449 | if (e->events_frozen > 0) return; |
388 | e->last_timestamp = timestamp; | 450 | e->last_timestamp = timestamp; |
@@ -390,9 +452,11 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t | |||
390 | { | 452 | { |
391 | Evas_Event_Mouse_Up ev; | 453 | Evas_Event_Mouse_Up ev; |
392 | Evas_Object *obj; | 454 | Evas_Object *obj; |
455 | int event_id = 0; | ||
393 | 456 | ||
394 | _evas_object_event_new(); | 457 | _evas_object_event_new(); |
395 | 458 | ||
459 | event_id = _evas_event_counter; | ||
396 | ev.button = b; | 460 | ev.button = b; |
397 | ev.output.x = e->pointer.x; | 461 | ev.output.x = e->pointer.x; |
398 | ev.output.y = e->pointer.y; | 462 | ev.output.y = e->pointer.y; |
@@ -403,7 +467,7 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t | |||
403 | ev.locks = &(e->locks); | 467 | ev.locks = &(e->locks); |
404 | ev.flags = flags; | 468 | ev.flags = flags; |
405 | ev.timestamp = timestamp; | 469 | ev.timestamp = timestamp; |
406 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 470 | ev.event_flags = e->default_event_flags; |
407 | 471 | ||
408 | _evas_walk(e); | 472 | _evas_walk(e); |
409 | /* update released touch point */ | 473 | /* update released touch point */ |
@@ -414,7 +478,7 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t | |||
414 | ev.canvas.x = e->pointer.x; | 478 | ev.canvas.x = e->pointer.x; |
415 | ev.canvas.y = e->pointer.y; | 479 | ev.canvas.y = e->pointer.y; |
416 | _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed); | 480 | _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed); |
417 | if ((obj->pointer_mode != EVAS_OBJECT_POINTER_MODE_NOGRAB) && | 481 | if ((obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_AUTOGRAB) && |
418 | (obj->mouse_grabbed > 0)) | 482 | (obj->mouse_grabbed > 0)) |
419 | { | 483 | { |
420 | obj->mouse_grabbed--; | 484 | obj->mouse_grabbed--; |
@@ -423,9 +487,14 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t | |||
423 | if (!obj->delete_me) | 487 | if (!obj->delete_me) |
424 | { | 488 | { |
425 | if (e->events_frozen <= 0) | 489 | if (e->events_frozen <= 0) |
426 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_UP, &ev); | 490 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_UP, &ev, event_id); |
427 | } | 491 | } |
428 | if (e->delete_me) break; | 492 | if (e->delete_me) break; |
493 | if (obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN) | ||
494 | { | ||
495 | if (e->pointer.nogrep > 0) e->pointer.nogrep--; | ||
496 | break; | ||
497 | } | ||
429 | } | 498 | } |
430 | if (copy) copy = eina_list_free(copy); | 499 | if (copy) copy = eina_list_free(copy); |
431 | e->last_mouse_up_counter++; | 500 | e->last_mouse_up_counter++; |
@@ -442,9 +511,9 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t | |||
442 | ERR("BUG? e->pointer.mouse_grabbed (=%d) < 0!", | 511 | ERR("BUG? e->pointer.mouse_grabbed (=%d) < 0!", |
443 | e->pointer.mouse_grabbed); | 512 | e->pointer.mouse_grabbed); |
444 | } | 513 | } |
445 | /* remove released touch point from the touch point list */ | 514 | /* remove released touch point from the touch point list */ |
446 | _evas_touch_point_remove(e, 0); | 515 | _evas_touch_point_remove(e, 0); |
447 | 516 | ||
448 | _evas_unwalk(e); | 517 | _evas_unwalk(e); |
449 | } | 518 | } |
450 | 519 | ||
@@ -465,6 +534,7 @@ evas_event_feed_mouse_cancel(Evas *e, unsigned int timestamp, const void *data) | |||
465 | if ((e->pointer.button & (1 << i))) | 534 | if ((e->pointer.button & (1 << i))) |
466 | evas_event_feed_mouse_up(e, i + 1, 0, timestamp, data); | 535 | evas_event_feed_mouse_up(e, i + 1, 0, timestamp, data); |
467 | } | 536 | } |
537 | // FIXME: multi cancel too? | ||
468 | _evas_unwalk(e); | 538 | _evas_unwalk(e); |
469 | } | 539 | } |
470 | 540 | ||
@@ -474,6 +544,7 @@ evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestam | |||
474 | Eina_List *l, *copy; | 544 | Eina_List *l, *copy; |
475 | Evas_Event_Mouse_Wheel ev; | 545 | Evas_Event_Mouse_Wheel ev; |
476 | Evas_Object *obj; | 546 | Evas_Object *obj; |
547 | int event_id = 0; | ||
477 | 548 | ||
478 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 549 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
479 | return; | 550 | return; |
@@ -484,6 +555,7 @@ evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestam | |||
484 | 555 | ||
485 | _evas_object_event_new(); | 556 | _evas_object_event_new(); |
486 | 557 | ||
558 | event_id = _evas_event_counter; | ||
487 | ev.direction = direction; | 559 | ev.direction = direction; |
488 | ev.z = z; | 560 | ev.z = z; |
489 | ev.output.x = e->pointer.x; | 561 | ev.output.x = e->pointer.x; |
@@ -494,7 +566,7 @@ evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestam | |||
494 | ev.modifiers = &(e->modifiers); | 566 | ev.modifiers = &(e->modifiers); |
495 | ev.locks = &(e->locks); | 567 | ev.locks = &(e->locks); |
496 | ev.timestamp = timestamp; | 568 | ev.timestamp = timestamp; |
497 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 569 | ev.event_flags = e->default_event_flags; |
498 | 570 | ||
499 | _evas_walk(e); | 571 | _evas_walk(e); |
500 | copy = evas_event_list_copy(e->pointer.object.in); | 572 | copy = evas_event_list_copy(e->pointer.object.in); |
@@ -505,7 +577,7 @@ evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestam | |||
505 | ev.canvas.y = e->pointer.y; | 577 | ev.canvas.y = e->pointer.y; |
506 | _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed); | 578 | _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed); |
507 | if ((e->events_frozen <= 0) && !evas_event_freezes_through(obj)) | 579 | if ((e->events_frozen <= 0) && !evas_event_freezes_through(obj)) |
508 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_WHEEL, &ev); | 580 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_WHEEL, &ev, event_id); |
509 | if (e->delete_me) break; | 581 | if (e->delete_me) break; |
510 | } | 582 | } |
511 | if (copy) copy = eina_list_free(copy); | 583 | if (copy) copy = eina_list_free(copy); |
@@ -517,6 +589,7 @@ evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestam | |||
517 | EAPI void | 589 | EAPI void |
518 | evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const void *data) | 590 | evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const void *data) |
519 | { | 591 | { |
592 | Evas_Object *nogrep_obj = NULL; | ||
520 | int px, py; | 593 | int px, py; |
521 | //// Evas_Coord pcx, pcy; | 594 | //// Evas_Coord pcx, pcy; |
522 | 595 | ||
@@ -553,9 +626,11 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
553 | { | 626 | { |
554 | Evas_Event_Mouse_Move ev; | 627 | Evas_Event_Mouse_Move ev; |
555 | Evas_Object *obj; | 628 | Evas_Object *obj; |
629 | int event_id = 0; | ||
556 | 630 | ||
557 | _evas_object_event_new(); | 631 | _evas_object_event_new(); |
558 | 632 | ||
633 | event_id = _evas_event_counter; | ||
559 | ev.buttons = e->pointer.button; | 634 | ev.buttons = e->pointer.button; |
560 | ev.cur.output.x = e->pointer.x; | 635 | ev.cur.output.x = e->pointer.x; |
561 | ev.cur.output.y = e->pointer.y; | 636 | ev.cur.output.y = e->pointer.y; |
@@ -569,7 +644,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
569 | ev.modifiers = &(e->modifiers); | 644 | ev.modifiers = &(e->modifiers); |
570 | ev.locks = &(e->locks); | 645 | ev.locks = &(e->locks); |
571 | ev.timestamp = timestamp; | 646 | ev.timestamp = timestamp; |
572 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 647 | ev.event_flags = e->default_event_flags; |
573 | copy = evas_event_list_copy(e->pointer.object.in); | 648 | copy = evas_event_list_copy(e->pointer.object.in); |
574 | EINA_LIST_FOREACH(copy, l, obj) | 649 | EINA_LIST_FOREACH(copy, l, obj) |
575 | { | 650 | { |
@@ -586,19 +661,28 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
586 | (!obj->clip.clipees)) | 661 | (!obj->clip.clipees)) |
587 | { | 662 | { |
588 | if ((px != x) || (py != y)) | 663 | if ((px != x) || (py != y)) |
589 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev); | 664 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id); |
590 | } | 665 | } |
591 | else | 666 | else |
592 | outs = eina_list_append(outs, obj); | 667 | outs = eina_list_append(outs, obj); |
668 | if ((obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN) && | ||
669 | (e->pointer.nogrep > 0)) | ||
670 | { | ||
671 | eina_list_free(copy); | ||
672 | nogrep_obj = obj; | ||
673 | goto nogrep; | ||
674 | } | ||
593 | if (e->delete_me) break; | 675 | if (e->delete_me) break; |
594 | } | 676 | } |
595 | _evas_post_event_callback_call(e); | 677 | _evas_post_event_callback_call(e); |
596 | } | 678 | } |
597 | { | 679 | { |
598 | Evas_Event_Mouse_Out ev; | 680 | Evas_Event_Mouse_Out ev; |
681 | int event_id = 0; | ||
599 | 682 | ||
600 | _evas_object_event_new(); | 683 | _evas_object_event_new(); |
601 | 684 | ||
685 | event_id = _evas_event_counter; | ||
602 | ev.buttons = e->pointer.button; | 686 | ev.buttons = e->pointer.button; |
603 | ev.output.x = e->pointer.x; | 687 | ev.output.x = e->pointer.x; |
604 | ev.output.y = e->pointer.y; | 688 | ev.output.y = e->pointer.y; |
@@ -608,7 +692,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
608 | ev.modifiers = &(e->modifiers); | 692 | ev.modifiers = &(e->modifiers); |
609 | ev.locks = &(e->locks); | 693 | ev.locks = &(e->locks); |
610 | ev.timestamp = timestamp; | 694 | ev.timestamp = timestamp; |
611 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 695 | ev.event_flags = e->default_event_flags; |
612 | 696 | ||
613 | if (copy) eina_list_free(copy); | 697 | if (copy) eina_list_free(copy); |
614 | while (outs) | 698 | while (outs) |
@@ -629,7 +713,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
629 | if (!obj->delete_me) | 713 | if (!obj->delete_me) |
630 | { | 714 | { |
631 | if (e->events_frozen <= 0) | 715 | if (e->events_frozen <= 0) |
632 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev); | 716 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev, event_id); |
633 | } | 717 | } |
634 | } | 718 | } |
635 | } | 719 | } |
@@ -645,9 +729,11 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
645 | Evas_Event_Mouse_Out ev2; | 729 | Evas_Event_Mouse_Out ev2; |
646 | Evas_Event_Mouse_In ev3; | 730 | Evas_Event_Mouse_In ev3; |
647 | Evas_Object *obj; | 731 | Evas_Object *obj; |
732 | int event_id = 0, event_id2 = 0; | ||
648 | 733 | ||
649 | _evas_object_event_new(); | 734 | _evas_object_event_new(); |
650 | 735 | ||
736 | event_id = _evas_event_counter; | ||
651 | ev.buttons = e->pointer.button; | 737 | ev.buttons = e->pointer.button; |
652 | ev.cur.output.x = e->pointer.x; | 738 | ev.cur.output.x = e->pointer.x; |
653 | ev.cur.output.y = e->pointer.y; | 739 | ev.cur.output.y = e->pointer.y; |
@@ -661,7 +747,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
661 | ev.modifiers = &(e->modifiers); | 747 | ev.modifiers = &(e->modifiers); |
662 | ev.locks = &(e->locks); | 748 | ev.locks = &(e->locks); |
663 | ev.timestamp = timestamp; | 749 | ev.timestamp = timestamp; |
664 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 750 | ev.event_flags = e->default_event_flags; |
665 | 751 | ||
666 | ev2.buttons = e->pointer.button; | 752 | ev2.buttons = e->pointer.button; |
667 | ev2.output.x = e->pointer.x; | 753 | ev2.output.x = e->pointer.x; |
@@ -672,7 +758,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
672 | ev2.modifiers = &(e->modifiers); | 758 | ev2.modifiers = &(e->modifiers); |
673 | ev2.locks = &(e->locks); | 759 | ev2.locks = &(e->locks); |
674 | ev2.timestamp = timestamp; | 760 | ev2.timestamp = timestamp; |
675 | ev2.event_flags = EVAS_EVENT_FLAG_NONE; | 761 | ev2.event_flags = e->default_event_flags; |
676 | 762 | ||
677 | ev3.buttons = e->pointer.button; | 763 | ev3.buttons = e->pointer.button; |
678 | ev3.output.x = e->pointer.x; | 764 | ev3.output.x = e->pointer.x; |
@@ -683,7 +769,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
683 | ev3.modifiers = &(e->modifiers); | 769 | ev3.modifiers = &(e->modifiers); |
684 | ev3.locks = &(e->locks); | 770 | ev3.locks = &(e->locks); |
685 | ev3.timestamp = timestamp; | 771 | ev3.timestamp = timestamp; |
686 | ev3.event_flags = EVAS_EVENT_FLAG_NONE; | 772 | ev3.event_flags = e->default_event_flags; |
687 | 773 | ||
688 | /* get all new in objects */ | 774 | /* get all new in objects */ |
689 | ins = evas_event_objects_event_list(e, NULL, x, y); | 775 | ins = evas_event_objects_event_list(e, NULL, x, y); |
@@ -711,7 +797,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
711 | ev.cur.canvas.x = e->pointer.x; | 797 | ev.cur.canvas.x = e->pointer.x; |
712 | ev.cur.canvas.y = e->pointer.y; | 798 | ev.cur.canvas.y = e->pointer.y; |
713 | _evas_event_havemap_adjust(obj, &ev.cur.canvas.x, &ev.cur.canvas.y, obj->mouse_grabbed); | 799 | _evas_event_havemap_adjust(obj, &ev.cur.canvas.x, &ev.cur.canvas.y, obj->mouse_grabbed); |
714 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev); | 800 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id); |
715 | } | 801 | } |
716 | } | 802 | } |
717 | /* otherwise it has left the object */ | 803 | /* otherwise it has left the object */ |
@@ -724,7 +810,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
724 | ev2.canvas.y = e->pointer.y; | 810 | ev2.canvas.y = e->pointer.y; |
725 | _evas_event_havemap_adjust(obj, &ev2.canvas.x, &ev2.canvas.y, obj->mouse_grabbed); | 811 | _evas_event_havemap_adjust(obj, &ev2.canvas.x, &ev2.canvas.y, obj->mouse_grabbed); |
726 | if (e->events_frozen <= 0) | 812 | if (e->events_frozen <= 0) |
727 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev2); | 813 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev2, event_id); |
728 | } | 814 | } |
729 | } | 815 | } |
730 | if (e->delete_me) break; | 816 | if (e->delete_me) break; |
@@ -733,6 +819,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
733 | 819 | ||
734 | _evas_object_event_new(); | 820 | _evas_object_event_new(); |
735 | 821 | ||
822 | event_id2 = _evas_event_counter; | ||
736 | if (copy) copy = eina_list_free(copy); | 823 | if (copy) copy = eina_list_free(copy); |
737 | /* go thru our current list of ins */ | 824 | /* go thru our current list of ins */ |
738 | EINA_LIST_FOREACH(ins, l, obj) | 825 | EINA_LIST_FOREACH(ins, l, obj) |
@@ -747,7 +834,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
747 | { | 834 | { |
748 | obj->mouse_in = 1; | 835 | obj->mouse_in = 1; |
749 | if (e->events_frozen <= 0) | 836 | if (e->events_frozen <= 0) |
750 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev3); | 837 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev3, event_id2); |
751 | } | 838 | } |
752 | } | 839 | } |
753 | if (e->delete_me) break; | 840 | if (e->delete_me) break; |
@@ -766,6 +853,160 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
766 | } | 853 | } |
767 | _evas_post_event_callback_call(e); | 854 | _evas_post_event_callback_call(e); |
768 | } | 855 | } |
856 | _evas_unwalk(e); | ||
857 | return; | ||
858 | nogrep: | ||
859 | { | ||
860 | Eina_List *ins = NULL; | ||
861 | Eina_List *newin = NULL; | ||
862 | Eina_List *l, *copy, *lst = NULL; | ||
863 | Evas_Event_Mouse_Move ev; | ||
864 | Evas_Event_Mouse_Out ev2; | ||
865 | Evas_Event_Mouse_In ev3; | ||
866 | Evas_Object *obj, *below_obj; | ||
867 | int event_id = 0, event_id2 = 0; | ||
868 | int norep = 0, breaknext = 0; | ||
869 | |||
870 | _evas_object_event_new(); | ||
871 | |||
872 | event_id = _evas_event_counter; | ||
873 | ev.buttons = e->pointer.button; | ||
874 | ev.cur.output.x = e->pointer.x; | ||
875 | ev.cur.output.y = e->pointer.y; | ||
876 | ev.cur.canvas.x = e->pointer.x; | ||
877 | ev.cur.canvas.y = e->pointer.y; | ||
878 | ev.prev.output.x = px; | ||
879 | ev.prev.output.y = py; | ||
880 | ev.prev.canvas.x = px; | ||
881 | ev.prev.canvas.y = py; | ||
882 | ev.data = (void *)data; | ||
883 | ev.modifiers = &(e->modifiers); | ||
884 | ev.locks = &(e->locks); | ||
885 | ev.timestamp = timestamp; | ||
886 | ev.event_flags = e->default_event_flags; | ||
887 | |||
888 | ev2.buttons = e->pointer.button; | ||
889 | ev2.output.x = e->pointer.x; | ||
890 | ev2.output.y = e->pointer.y; | ||
891 | ev2.canvas.x = e->pointer.x; | ||
892 | ev2.canvas.y = e->pointer.y; | ||
893 | ev2.data = (void *)data; | ||
894 | ev2.modifiers = &(e->modifiers); | ||
895 | ev2.locks = &(e->locks); | ||
896 | ev2.timestamp = timestamp; | ||
897 | ev2.event_flags = e->default_event_flags; | ||
898 | |||
899 | ev3.buttons = e->pointer.button; | ||
900 | ev3.output.x = e->pointer.x; | ||
901 | ev3.output.y = e->pointer.y; | ||
902 | ev3.canvas.x = e->pointer.x; | ||
903 | ev3.canvas.y = e->pointer.y; | ||
904 | ev3.data = (void *)data; | ||
905 | ev3.modifiers = &(e->modifiers); | ||
906 | ev3.locks = &(e->locks); | ||
907 | ev3.timestamp = timestamp; | ||
908 | ev3.event_flags = e->default_event_flags; | ||
909 | |||
910 | /* go thru old list of in objects */ | ||
911 | copy = evas_event_list_copy(e->pointer.object.in); | ||
912 | EINA_LIST_FOREACH(copy, l, obj) | ||
913 | { | ||
914 | if (breaknext) | ||
915 | { | ||
916 | lst = l; | ||
917 | break; | ||
918 | } | ||
919 | if (obj == nogrep_obj) breaknext = 1; | ||
920 | } | ||
921 | |||
922 | /* get all new in objects */ | ||
923 | below_obj = evas_object_below_get(nogrep_obj); | ||
924 | if (below_obj) | ||
925 | ins = _evas_event_object_list_raw_in_get(e, NULL, | ||
926 | EINA_INLIST_GET(below_obj), NULL, | ||
927 | e->pointer.x, e->pointer.y, | ||
928 | &norep); | ||
929 | EINA_LIST_FOREACH(copy, l, obj) | ||
930 | { | ||
931 | newin = eina_list_append(newin, obj); | ||
932 | if (obj == nogrep_obj) break; | ||
933 | } | ||
934 | EINA_LIST_FOREACH(ins, l, obj) | ||
935 | { | ||
936 | newin = eina_list_append(newin, obj); | ||
937 | } | ||
938 | |||
939 | EINA_LIST_FOREACH(lst, l, obj) | ||
940 | { | ||
941 | /* if its under the pointer and its visible and its in the new */ | ||
942 | /* in list */ | ||
943 | // FIXME: i don't think we need this | ||
944 | // evas_object_clip_recalc(obj); | ||
945 | if ((e->events_frozen <= 0) && | ||
946 | evas_object_is_in_output_rect(obj, x, y, 1, 1) && | ||
947 | (evas_object_clippers_is_visible(obj) || | ||
948 | obj->mouse_grabbed) && | ||
949 | eina_list_data_find(newin, obj) && | ||
950 | (!evas_event_passes_through(obj)) && | ||
951 | (!evas_event_freezes_through(obj)) && | ||
952 | (!obj->clip.clipees) && | ||
953 | ((!obj->precise_is_inside) || evas_object_is_inside(obj, x, y)) | ||
954 | ) | ||
955 | { | ||
956 | if ((px != x) || (py != y)) | ||
957 | { | ||
958 | ev.cur.canvas.x = e->pointer.x; | ||
959 | ev.cur.canvas.y = e->pointer.y; | ||
960 | _evas_event_havemap_adjust(obj, &ev.cur.canvas.x, &ev.cur.canvas.y, obj->mouse_grabbed); | ||
961 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id); | ||
962 | } | ||
963 | } | ||
964 | /* otherwise it has left the object */ | ||
965 | else | ||
966 | { | ||
967 | if (obj->mouse_in) | ||
968 | { | ||
969 | obj->mouse_in = 0; | ||
970 | ev2.canvas.x = e->pointer.x; | ||
971 | ev2.canvas.y = e->pointer.y; | ||
972 | _evas_event_havemap_adjust(obj, &ev2.canvas.x, &ev2.canvas.y, obj->mouse_grabbed); | ||
973 | if (e->events_frozen <= 0) | ||
974 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev2, event_id); | ||
975 | } | ||
976 | } | ||
977 | if (e->delete_me) break; | ||
978 | } | ||
979 | _evas_post_event_callback_call(e); | ||
980 | |||
981 | _evas_object_event_new(); | ||
982 | |||
983 | event_id2 = _evas_event_counter; | ||
984 | if (copy) copy = eina_list_free(copy); | ||
985 | /* go thru our current list of ins */ | ||
986 | EINA_LIST_FOREACH(newin, l, obj) | ||
987 | { | ||
988 | ev3.canvas.x = e->pointer.x; | ||
989 | ev3.canvas.y = e->pointer.y; | ||
990 | _evas_event_havemap_adjust(obj, &ev3.canvas.x, &ev3.canvas.y, obj->mouse_grabbed); | ||
991 | /* if its not in the old list of ins send an enter event */ | ||
992 | if (!eina_list_data_find(e->pointer.object.in, obj)) | ||
993 | { | ||
994 | if (!obj->mouse_in) | ||
995 | { | ||
996 | obj->mouse_in = 1; | ||
997 | if (e->events_frozen <= 0) | ||
998 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev3, event_id2); | ||
999 | } | ||
1000 | } | ||
1001 | if (e->delete_me) break; | ||
1002 | } | ||
1003 | /* free our old list of ins */ | ||
1004 | eina_list_free(e->pointer.object.in); | ||
1005 | /* and set up the new one */ | ||
1006 | e->pointer.object.in = newin; | ||
1007 | |||
1008 | _evas_post_event_callback_call(e); | ||
1009 | } | ||
769 | _evas_unwalk(e); | 1010 | _evas_unwalk(e); |
770 | } | 1011 | } |
771 | 1012 | ||
@@ -776,6 +1017,7 @@ evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data) | |||
776 | Eina_List *l; | 1017 | Eina_List *l; |
777 | Evas_Event_Mouse_In ev; | 1018 | Evas_Event_Mouse_In ev; |
778 | Evas_Object *obj; | 1019 | Evas_Object *obj; |
1020 | int event_id = 0; | ||
779 | 1021 | ||
780 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 1022 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
781 | return; | 1023 | return; |
@@ -789,6 +1031,7 @@ evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data) | |||
789 | 1031 | ||
790 | _evas_object_event_new(); | 1032 | _evas_object_event_new(); |
791 | 1033 | ||
1034 | event_id = _evas_event_counter; | ||
792 | ev.buttons = e->pointer.button; | 1035 | ev.buttons = e->pointer.button; |
793 | ev.output.x = e->pointer.x; | 1036 | ev.output.x = e->pointer.x; |
794 | ev.output.y = e->pointer.y; | 1037 | ev.output.y = e->pointer.y; |
@@ -798,7 +1041,7 @@ evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data) | |||
798 | ev.modifiers = &(e->modifiers); | 1041 | ev.modifiers = &(e->modifiers); |
799 | ev.locks = &(e->locks); | 1042 | ev.locks = &(e->locks); |
800 | ev.timestamp = timestamp; | 1043 | ev.timestamp = timestamp; |
801 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 1044 | ev.event_flags = e->default_event_flags; |
802 | 1045 | ||
803 | _evas_walk(e); | 1046 | _evas_walk(e); |
804 | /* get new list of ins */ | 1047 | /* get new list of ins */ |
@@ -814,7 +1057,7 @@ evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data) | |||
814 | { | 1057 | { |
815 | obj->mouse_in = 1; | 1058 | obj->mouse_in = 1; |
816 | if (e->events_frozen <= 0) | 1059 | if (e->events_frozen <= 0) |
817 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev); | 1060 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev, event_id); |
818 | } | 1061 | } |
819 | } | 1062 | } |
820 | if (e->delete_me) break; | 1063 | if (e->delete_me) break; |
@@ -832,6 +1075,7 @@ EAPI void | |||
832 | evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data) | 1075 | evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data) |
833 | { | 1076 | { |
834 | Evas_Event_Mouse_Out ev; | 1077 | Evas_Event_Mouse_Out ev; |
1078 | int event_id = 0; | ||
835 | 1079 | ||
836 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 1080 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
837 | return; | 1081 | return; |
@@ -843,6 +1087,7 @@ evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data) | |||
843 | 1087 | ||
844 | _evas_object_event_new(); | 1088 | _evas_object_event_new(); |
845 | 1089 | ||
1090 | event_id = _evas_event_counter; | ||
846 | ev.buttons = e->pointer.button; | 1091 | ev.buttons = e->pointer.button; |
847 | ev.output.x = e->pointer.x; | 1092 | ev.output.x = e->pointer.x; |
848 | ev.output.y = e->pointer.y; | 1093 | ev.output.y = e->pointer.y; |
@@ -852,11 +1097,10 @@ evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data) | |||
852 | ev.modifiers = &(e->modifiers); | 1097 | ev.modifiers = &(e->modifiers); |
853 | ev.locks = &(e->locks); | 1098 | ev.locks = &(e->locks); |
854 | ev.timestamp = timestamp; | 1099 | ev.timestamp = timestamp; |
855 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 1100 | ev.event_flags = e->default_event_flags; |
856 | 1101 | ||
857 | _evas_walk(e); | 1102 | _evas_walk(e); |
858 | /* if our mouse button is grabbed to any objects */ | 1103 | /* if our mouse button is inside any objects */ |
859 | if (e->pointer.mouse_grabbed == 0) | ||
860 | { | 1104 | { |
861 | /* go thru old list of in objects */ | 1105 | /* go thru old list of in objects */ |
862 | Eina_List *l, *copy; | 1106 | Eina_List *l, *copy; |
@@ -874,14 +1118,16 @@ evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data) | |||
874 | if (!obj->delete_me) | 1118 | if (!obj->delete_me) |
875 | { | 1119 | { |
876 | if (e->events_frozen <= 0) | 1120 | if (e->events_frozen <= 0) |
877 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev); | 1121 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev, event_id); |
878 | } | 1122 | } |
1123 | obj->mouse_grabbed = 0; | ||
879 | } | 1124 | } |
880 | if (e->delete_me) break; | 1125 | if (e->delete_me) break; |
881 | } | 1126 | } |
882 | if (copy) copy = eina_list_free(copy); | 1127 | if (copy) copy = eina_list_free(copy); |
883 | /* free our old list of ins */ | 1128 | /* free our old list of ins */ |
884 | e->pointer.object.in = eina_list_free(e->pointer.object.in); | 1129 | e->pointer.object.in = eina_list_free(e->pointer.object.in); |
1130 | e->pointer.mouse_grabbed = 0; | ||
885 | _evas_post_event_callback_call(e); | 1131 | _evas_post_event_callback_call(e); |
886 | } | 1132 | } |
887 | _evas_unwalk(e); | 1133 | _evas_unwalk(e); |
@@ -899,16 +1145,20 @@ evas_event_feed_multi_down(Evas *e, | |||
899 | Eina_List *l, *copy; | 1145 | Eina_List *l, *copy; |
900 | Evas_Event_Multi_Down ev; | 1146 | Evas_Event_Multi_Down ev; |
901 | Evas_Object *obj; | 1147 | Evas_Object *obj; |
1148 | int addgrab = 0; | ||
1149 | int event_id = 0; | ||
902 | 1150 | ||
903 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 1151 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
904 | return; | 1152 | return; |
905 | MAGIC_CHECK_END(); | 1153 | MAGIC_CHECK_END(); |
906 | 1154 | ||
1155 | e->pointer.downs++; | ||
907 | if (e->events_frozen > 0) return; | 1156 | if (e->events_frozen > 0) return; |
908 | e->last_timestamp = timestamp; | 1157 | e->last_timestamp = timestamp; |
909 | 1158 | ||
910 | _evas_object_event_new(); | 1159 | _evas_object_event_new(); |
911 | 1160 | ||
1161 | event_id = _evas_event_counter; | ||
912 | ev.device = d; | 1162 | ev.device = d; |
913 | ev.output.x = x; | 1163 | ev.output.x = x; |
914 | ev.output.y = y; | 1164 | ev.output.y = y; |
@@ -926,18 +1176,22 @@ evas_event_feed_multi_down(Evas *e, | |||
926 | ev.locks = &(e->locks); | 1176 | ev.locks = &(e->locks); |
927 | ev.flags = flags; | 1177 | ev.flags = flags; |
928 | ev.timestamp = timestamp; | 1178 | ev.timestamp = timestamp; |
929 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 1179 | ev.event_flags = e->default_event_flags; |
930 | 1180 | ||
931 | _evas_walk(e); | 1181 | _evas_walk(e); |
932 | /* append new touch point to the touch point list */ | 1182 | /* append new touch point to the touch point list */ |
933 | _evas_touch_point_append(e, d, x, y); | 1183 | _evas_touch_point_append(e, d, x, y); |
1184 | if (e->pointer.mouse_grabbed == 0) | ||
1185 | { | ||
1186 | if (e->pointer.downs > 1) addgrab = e->pointer.downs - 1; | ||
1187 | } | ||
934 | copy = evas_event_list_copy(e->pointer.object.in); | 1188 | copy = evas_event_list_copy(e->pointer.object.in); |
935 | EINA_LIST_FOREACH(copy, l, obj) | 1189 | EINA_LIST_FOREACH(copy, l, obj) |
936 | { | 1190 | { |
937 | if (obj->pointer_mode != EVAS_OBJECT_POINTER_MODE_NOGRAB) | 1191 | if (obj->pointer_mode != EVAS_OBJECT_POINTER_MODE_NOGRAB) |
938 | { | 1192 | { |
939 | obj->mouse_grabbed++; | 1193 | obj->mouse_grabbed += addgrab + 1; |
940 | e->pointer.mouse_grabbed++; | 1194 | e->pointer.mouse_grabbed += addgrab + 1; |
941 | } | 1195 | } |
942 | } | 1196 | } |
943 | EINA_LIST_FOREACH(copy, l, obj) | 1197 | EINA_LIST_FOREACH(copy, l, obj) |
@@ -952,7 +1206,7 @@ evas_event_feed_multi_down(Evas *e, | |||
952 | if (y != ev.canvas.y) | 1206 | if (y != ev.canvas.y) |
953 | ev.canvas.ysub = ev.canvas.y; // fixme - lost precision | 1207 | ev.canvas.ysub = ev.canvas.y; // fixme - lost precision |
954 | if (e->events_frozen <= 0) | 1208 | if (e->events_frozen <= 0) |
955 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_DOWN, &ev); | 1209 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_DOWN, &ev, event_id); |
956 | if (e->delete_me) break; | 1210 | if (e->delete_me) break; |
957 | } | 1211 | } |
958 | if (copy) eina_list_free(copy); | 1212 | if (copy) eina_list_free(copy); |
@@ -974,16 +1228,19 @@ evas_event_feed_multi_up(Evas *e, | |||
974 | Eina_List *l, *copy; | 1228 | Eina_List *l, *copy; |
975 | Evas_Event_Multi_Up ev; | 1229 | Evas_Event_Multi_Up ev; |
976 | Evas_Object *obj; | 1230 | Evas_Object *obj; |
1231 | int event_id = 0; | ||
977 | 1232 | ||
978 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 1233 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
979 | return; | 1234 | return; |
980 | MAGIC_CHECK_END(); | 1235 | MAGIC_CHECK_END(); |
981 | 1236 | ||
1237 | e->pointer.downs--; | ||
982 | if (e->events_frozen > 0) return; | 1238 | if (e->events_frozen > 0) return; |
983 | e->last_timestamp = timestamp; | 1239 | e->last_timestamp = timestamp; |
984 | 1240 | ||
985 | _evas_object_event_new(); | 1241 | _evas_object_event_new(); |
986 | 1242 | ||
1243 | event_id = _evas_event_counter; | ||
987 | ev.device = d; | 1244 | ev.device = d; |
988 | ev.output.x = x; | 1245 | ev.output.x = x; |
989 | ev.output.y = y; | 1246 | ev.output.y = y; |
@@ -1001,7 +1258,7 @@ evas_event_feed_multi_up(Evas *e, | |||
1001 | ev.locks = &(e->locks); | 1258 | ev.locks = &(e->locks); |
1002 | ev.flags = flags; | 1259 | ev.flags = flags; |
1003 | ev.timestamp = timestamp; | 1260 | ev.timestamp = timestamp; |
1004 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 1261 | ev.event_flags = e->default_event_flags; |
1005 | 1262 | ||
1006 | _evas_walk(e); | 1263 | _evas_walk(e); |
1007 | /* update released touch point */ | 1264 | /* update released touch point */ |
@@ -1025,7 +1282,7 @@ evas_event_feed_multi_up(Evas *e, | |||
1025 | e->pointer.mouse_grabbed--; | 1282 | e->pointer.mouse_grabbed--; |
1026 | } | 1283 | } |
1027 | if (e->events_frozen <= 0) | 1284 | if (e->events_frozen <= 0) |
1028 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_UP, &ev); | 1285 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_UP, &ev, event_id); |
1029 | if (e->delete_me) break; | 1286 | if (e->delete_me) break; |
1030 | } | 1287 | } |
1031 | if (copy) copy = eina_list_free(copy); | 1288 | if (copy) copy = eina_list_free(copy); |
@@ -1051,7 +1308,7 @@ evas_event_feed_multi_move(Evas *e, | |||
1051 | if (e->events_frozen > 0) return; | 1308 | if (e->events_frozen > 0) return; |
1052 | e->last_timestamp = timestamp; | 1309 | e->last_timestamp = timestamp; |
1053 | 1310 | ||
1054 | if (!e->pointer.inside) return; | 1311 | if ((!e->pointer.inside) && (e->pointer.mouse_grabbed == 0)) return; |
1055 | 1312 | ||
1056 | _evas_walk(e); | 1313 | _evas_walk(e); |
1057 | /* update moved touch point */ | 1314 | /* update moved touch point */ |
@@ -1063,9 +1320,11 @@ evas_event_feed_multi_move(Evas *e, | |||
1063 | Eina_List *l, *copy; | 1320 | Eina_List *l, *copy; |
1064 | Evas_Event_Multi_Move ev; | 1321 | Evas_Event_Multi_Move ev; |
1065 | Evas_Object *obj; | 1322 | Evas_Object *obj; |
1323 | int event_id = 0; | ||
1066 | 1324 | ||
1067 | _evas_object_event_new(); | 1325 | _evas_object_event_new(); |
1068 | 1326 | ||
1327 | event_id = _evas_event_counter; | ||
1069 | ev.device = d; | 1328 | ev.device = d; |
1070 | ev.cur.output.x = x; | 1329 | ev.cur.output.x = x; |
1071 | ev.cur.output.y = y; | 1330 | ev.cur.output.y = y; |
@@ -1082,7 +1341,7 @@ evas_event_feed_multi_move(Evas *e, | |||
1082 | ev.modifiers = &(e->modifiers); | 1341 | ev.modifiers = &(e->modifiers); |
1083 | ev.locks = &(e->locks); | 1342 | ev.locks = &(e->locks); |
1084 | ev.timestamp = timestamp; | 1343 | ev.timestamp = timestamp; |
1085 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 1344 | ev.event_flags = e->default_event_flags; |
1086 | 1345 | ||
1087 | copy = evas_event_list_copy(e->pointer.object.in); | 1346 | copy = evas_event_list_copy(e->pointer.object.in); |
1088 | EINA_LIST_FOREACH(copy, l, obj) | 1347 | EINA_LIST_FOREACH(copy, l, obj) |
@@ -1102,7 +1361,7 @@ evas_event_feed_multi_move(Evas *e, | |||
1102 | ev.cur.canvas.xsub = ev.cur.canvas.x; // fixme - lost precision | 1361 | ev.cur.canvas.xsub = ev.cur.canvas.x; // fixme - lost precision |
1103 | if (y != ev.cur.canvas.y) | 1362 | if (y != ev.cur.canvas.y) |
1104 | ev.cur.canvas.ysub = ev.cur.canvas.y; // fixme - lost precision | 1363 | ev.cur.canvas.ysub = ev.cur.canvas.y; // fixme - lost precision |
1105 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_MOVE, &ev); | 1364 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_MOVE, &ev, event_id); |
1106 | } | 1365 | } |
1107 | if (e->delete_me) break; | 1366 | if (e->delete_me) break; |
1108 | } | 1367 | } |
@@ -1114,9 +1373,11 @@ evas_event_feed_multi_move(Evas *e, | |||
1114 | Eina_List *l, *copy; | 1373 | Eina_List *l, *copy; |
1115 | Evas_Event_Multi_Move ev; | 1374 | Evas_Event_Multi_Move ev; |
1116 | Evas_Object *obj; | 1375 | Evas_Object *obj; |
1376 | int event_id = 0; | ||
1117 | 1377 | ||
1118 | _evas_object_event_new(); | 1378 | _evas_object_event_new(); |
1119 | 1379 | ||
1380 | event_id = _evas_event_counter; | ||
1120 | ev.device = d; | 1381 | ev.device = d; |
1121 | ev.cur.output.x = x; | 1382 | ev.cur.output.x = x; |
1122 | ev.cur.output.y = y; | 1383 | ev.cur.output.y = y; |
@@ -1133,7 +1394,7 @@ evas_event_feed_multi_move(Evas *e, | |||
1133 | ev.modifiers = &(e->modifiers); | 1394 | ev.modifiers = &(e->modifiers); |
1134 | ev.locks = &(e->locks); | 1395 | ev.locks = &(e->locks); |
1135 | ev.timestamp = timestamp; | 1396 | ev.timestamp = timestamp; |
1136 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 1397 | ev.event_flags = e->default_event_flags; |
1137 | 1398 | ||
1138 | /* get all new in objects */ | 1399 | /* get all new in objects */ |
1139 | ins = evas_event_objects_event_list(e, NULL, x, y); | 1400 | ins = evas_event_objects_event_list(e, NULL, x, y); |
@@ -1165,7 +1426,7 @@ evas_event_feed_multi_move(Evas *e, | |||
1165 | ev.cur.canvas.xsub = ev.cur.canvas.x; // fixme - lost precision | 1426 | ev.cur.canvas.xsub = ev.cur.canvas.x; // fixme - lost precision |
1166 | if (y != ev.cur.canvas.y) | 1427 | if (y != ev.cur.canvas.y) |
1167 | ev.cur.canvas.ysub = ev.cur.canvas.y; // fixme - lost precision | 1428 | ev.cur.canvas.ysub = ev.cur.canvas.y; // fixme - lost precision |
1168 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_MOVE, &ev); | 1429 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_MOVE, &ev, event_id); |
1169 | } | 1430 | } |
1170 | if (e->delete_me) break; | 1431 | if (e->delete_me) break; |
1171 | } | 1432 | } |
@@ -1190,6 +1451,7 @@ evas_event_feed_multi_move(Evas *e, | |||
1190 | EAPI void | 1451 | EAPI void |
1191 | evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data) | 1452 | evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data) |
1192 | { | 1453 | { |
1454 | int event_id = 0; | ||
1193 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 1455 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
1194 | return; | 1456 | return; |
1195 | MAGIC_CHECK_END(); | 1457 | MAGIC_CHECK_END(); |
@@ -1204,6 +1466,7 @@ evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const ch | |||
1204 | 1466 | ||
1205 | _evas_object_event_new(); | 1467 | _evas_object_event_new(); |
1206 | 1468 | ||
1469 | event_id = _evas_event_counter; | ||
1207 | exclusive = EINA_FALSE; | 1470 | exclusive = EINA_FALSE; |
1208 | ev.keyname = (char *)keyname; | 1471 | ev.keyname = (char *)keyname; |
1209 | ev.data = (void *)data; | 1472 | ev.data = (void *)data; |
@@ -1213,7 +1476,7 @@ evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const ch | |||
1213 | ev.string = string; | 1476 | ev.string = string; |
1214 | ev.compose = compose; | 1477 | ev.compose = compose; |
1215 | ev.timestamp = timestamp; | 1478 | ev.timestamp = timestamp; |
1216 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 1479 | ev.event_flags = e->default_event_flags; |
1217 | 1480 | ||
1218 | if (e->grabs) | 1481 | if (e->grabs) |
1219 | { | 1482 | { |
@@ -1239,7 +1502,7 @@ evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const ch | |||
1239 | !evas_event_freezes_through(g->object)) | 1502 | !evas_event_freezes_through(g->object)) |
1240 | evas_object_event_callback_call(g->object, | 1503 | evas_object_event_callback_call(g->object, |
1241 | EVAS_CALLBACK_KEY_DOWN, | 1504 | EVAS_CALLBACK_KEY_DOWN, |
1242 | &ev); | 1505 | &ev, event_id); |
1243 | if (g->exclusive) exclusive = EINA_TRUE; | 1506 | if (g->exclusive) exclusive = EINA_TRUE; |
1244 | } | 1507 | } |
1245 | } | 1508 | } |
@@ -1266,7 +1529,7 @@ evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const ch | |||
1266 | { | 1529 | { |
1267 | if (e->events_frozen <= 0 && !evas_event_freezes_through(e->focused)) | 1530 | if (e->events_frozen <= 0 && !evas_event_freezes_through(e->focused)) |
1268 | evas_object_event_callback_call(e->focused, EVAS_CALLBACK_KEY_DOWN, | 1531 | evas_object_event_callback_call(e->focused, EVAS_CALLBACK_KEY_DOWN, |
1269 | &ev); | 1532 | &ev, event_id); |
1270 | } | 1533 | } |
1271 | _evas_post_event_callback_call(e); | 1534 | _evas_post_event_callback_call(e); |
1272 | _evas_unwalk(e); | 1535 | _evas_unwalk(e); |
@@ -1275,6 +1538,7 @@ evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const ch | |||
1275 | EAPI void | 1538 | EAPI void |
1276 | evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data) | 1539 | evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data) |
1277 | { | 1540 | { |
1541 | int event_id = 0; | ||
1278 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 1542 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
1279 | return; | 1543 | return; |
1280 | MAGIC_CHECK_END(); | 1544 | MAGIC_CHECK_END(); |
@@ -1288,6 +1552,7 @@ evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char | |||
1288 | 1552 | ||
1289 | _evas_object_event_new(); | 1553 | _evas_object_event_new(); |
1290 | 1554 | ||
1555 | event_id = _evas_event_counter; | ||
1291 | exclusive = EINA_FALSE; | 1556 | exclusive = EINA_FALSE; |
1292 | ev.keyname = (char *)keyname; | 1557 | ev.keyname = (char *)keyname; |
1293 | ev.data = (void *)data; | 1558 | ev.data = (void *)data; |
@@ -1297,7 +1562,7 @@ evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char | |||
1297 | ev.string = string; | 1562 | ev.string = string; |
1298 | ev.compose = compose; | 1563 | ev.compose = compose; |
1299 | ev.timestamp = timestamp; | 1564 | ev.timestamp = timestamp; |
1300 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 1565 | ev.event_flags = e->default_event_flags; |
1301 | 1566 | ||
1302 | if (e->grabs) | 1567 | if (e->grabs) |
1303 | { | 1568 | { |
@@ -1322,7 +1587,7 @@ evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char | |||
1322 | if (e->events_frozen <= 0 && | 1587 | if (e->events_frozen <= 0 && |
1323 | !evas_event_freezes_through(g->object)) | 1588 | !evas_event_freezes_through(g->object)) |
1324 | evas_object_event_callback_call(g->object, | 1589 | evas_object_event_callback_call(g->object, |
1325 | EVAS_CALLBACK_KEY_UP, &ev); | 1590 | EVAS_CALLBACK_KEY_UP, &ev, event_id); |
1326 | if (g->exclusive) exclusive = EINA_TRUE; | 1591 | if (g->exclusive) exclusive = EINA_TRUE; |
1327 | } | 1592 | } |
1328 | if (e->delete_me) break; | 1593 | if (e->delete_me) break; |
@@ -1349,7 +1614,7 @@ evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char | |||
1349 | { | 1614 | { |
1350 | if (e->events_frozen <= 0 && !evas_event_freezes_through(e->focused)) | 1615 | if (e->events_frozen <= 0 && !evas_event_freezes_through(e->focused)) |
1351 | evas_object_event_callback_call(e->focused, EVAS_CALLBACK_KEY_UP, | 1616 | evas_object_event_callback_call(e->focused, EVAS_CALLBACK_KEY_UP, |
1352 | &ev); | 1617 | &ev, event_id); |
1353 | } | 1618 | } |
1354 | _evas_post_event_callback_call(e); | 1619 | _evas_post_event_callback_call(e); |
1355 | _evas_unwalk(e); | 1620 | _evas_unwalk(e); |
@@ -1361,6 +1626,7 @@ evas_event_feed_hold(Evas *e, int hold, unsigned int timestamp, const void *data | |||
1361 | Eina_List *l, *copy; | 1626 | Eina_List *l, *copy; |
1362 | Evas_Event_Hold ev; | 1627 | Evas_Event_Hold ev; |
1363 | Evas_Object *obj; | 1628 | Evas_Object *obj; |
1629 | int event_id = 0; | ||
1364 | 1630 | ||
1365 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 1631 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
1366 | return; | 1632 | return; |
@@ -1371,17 +1637,18 @@ evas_event_feed_hold(Evas *e, int hold, unsigned int timestamp, const void *data | |||
1371 | 1637 | ||
1372 | _evas_object_event_new(); | 1638 | _evas_object_event_new(); |
1373 | 1639 | ||
1640 | event_id = _evas_event_counter; | ||
1374 | ev.hold = hold; | 1641 | ev.hold = hold; |
1375 | ev.data = (void *)data; | 1642 | ev.data = (void *)data; |
1376 | ev.timestamp = timestamp; | 1643 | ev.timestamp = timestamp; |
1377 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 1644 | ev.event_flags = e->default_event_flags; |
1378 | 1645 | ||
1379 | _evas_walk(e); | 1646 | _evas_walk(e); |
1380 | copy = evas_event_list_copy(e->pointer.object.in); | 1647 | copy = evas_event_list_copy(e->pointer.object.in); |
1381 | EINA_LIST_FOREACH(copy, l, obj) | 1648 | EINA_LIST_FOREACH(copy, l, obj) |
1382 | { | 1649 | { |
1383 | if ((e->events_frozen <= 0) && !evas_event_freezes_through(obj)) | 1650 | if ((e->events_frozen <= 0) && !evas_event_freezes_through(obj)) |
1384 | evas_object_event_callback_call(obj, EVAS_CALLBACK_HOLD, &ev); | 1651 | evas_object_event_callback_call(obj, EVAS_CALLBACK_HOLD, &ev, event_id); |
1385 | if (e->delete_me) break; | 1652 | if (e->delete_me) break; |
1386 | } | 1653 | } |
1387 | if (copy) copy = eina_list_free(copy); | 1654 | if (copy) copy = eina_list_free(copy); |
@@ -1528,75 +1795,84 @@ evas_object_pointer_mode_get(const Evas_Object *obj) | |||
1528 | EAPI void | 1795 | EAPI void |
1529 | evas_event_refeed_event(Evas *e, void *event_copy, Evas_Callback_Type event_type) | 1796 | evas_event_refeed_event(Evas *e, void *event_copy, Evas_Callback_Type event_type) |
1530 | { | 1797 | { |
1531 | switch(event_type) | 1798 | switch (event_type) |
1532 | { | 1799 | { |
1533 | case EVAS_CALLBACK_MOUSE_IN: | 1800 | case EVAS_CALLBACK_MOUSE_IN: |
1534 | { | 1801 | { |
1535 | Evas_Event_Mouse_In *ev = event_copy; | 1802 | Evas_Event_Mouse_In *ev = event_copy; |
1536 | evas_event_feed_mouse_in(e, ev->timestamp, ev->data); | 1803 | evas_event_feed_mouse_in(e, ev->timestamp, ev->data); |
1537 | break; | 1804 | break; |
1538 | } | 1805 | } |
1539 | case EVAS_CALLBACK_MOUSE_OUT: | 1806 | case EVAS_CALLBACK_MOUSE_OUT: |
1540 | { | 1807 | { |
1541 | Evas_Event_Mouse_Out *ev = event_copy; | 1808 | Evas_Event_Mouse_Out *ev = event_copy; |
1542 | evas_event_feed_mouse_out(e, ev->timestamp, ev->data); | 1809 | evas_event_feed_mouse_out(e, ev->timestamp, ev->data); |
1543 | break; | 1810 | break; |
1544 | } | 1811 | } |
1545 | case EVAS_CALLBACK_MOUSE_DOWN: | 1812 | case EVAS_CALLBACK_MOUSE_DOWN: |
1546 | { | 1813 | { |
1547 | Evas_Event_Mouse_Down *ev = event_copy; | 1814 | Evas_Event_Mouse_Down *ev = event_copy; |
1548 | evas_event_feed_mouse_down(e, ev->button, ev->flags, ev-> timestamp, ev->data); | 1815 | evas_event_feed_mouse_down(e, ev->button, ev->flags, ev-> timestamp, ev->data); |
1549 | break; | 1816 | break; |
1550 | } | 1817 | } |
1551 | case EVAS_CALLBACK_MOUSE_UP: | 1818 | case EVAS_CALLBACK_MOUSE_UP: |
1552 | { | 1819 | { |
1553 | Evas_Event_Mouse_Up *ev = event_copy; | 1820 | Evas_Event_Mouse_Up *ev = event_copy; |
1554 | evas_event_feed_mouse_up(e, ev->button, ev->flags, ev-> timestamp, ev->data); | 1821 | evas_event_feed_mouse_up(e, ev->button, ev->flags, ev-> timestamp, ev->data); |
1555 | break; | 1822 | break; |
1556 | } | 1823 | } |
1557 | case EVAS_CALLBACK_MOUSE_MOVE: | 1824 | case EVAS_CALLBACK_MOUSE_MOVE: |
1558 | { | 1825 | { |
1559 | Evas_Event_Mouse_Move *ev = event_copy; | 1826 | Evas_Event_Mouse_Move *ev = event_copy; |
1560 | evas_event_feed_mouse_move(e, ev->cur.canvas.x, ev->cur.canvas.y, ev->timestamp, ev->data); | 1827 | evas_event_feed_mouse_move(e, ev->cur.canvas.x, ev->cur.canvas.y, ev->timestamp, ev->data); |
1561 | break; | 1828 | break; |
1562 | } | 1829 | } |
1563 | case EVAS_CALLBACK_MOUSE_WHEEL: | 1830 | case EVAS_CALLBACK_MOUSE_WHEEL: |
1564 | { | 1831 | { |
1565 | Evas_Event_Mouse_Wheel *ev = event_copy; | 1832 | Evas_Event_Mouse_Wheel *ev = event_copy; |
1566 | evas_event_feed_mouse_wheel(e, ev->direction, ev-> z, ev->timestamp, ev->data); | 1833 | evas_event_feed_mouse_wheel(e, ev->direction, ev-> z, ev->timestamp, ev->data); |
1567 | break; | 1834 | break; |
1568 | } | 1835 | } |
1569 | case EVAS_CALLBACK_MULTI_DOWN: | 1836 | case EVAS_CALLBACK_MULTI_DOWN: |
1570 | { | 1837 | { |
1571 | Evas_Event_Multi_Down *ev = event_copy; | 1838 | Evas_Event_Multi_Down *ev = event_copy; |
1572 | evas_event_feed_multi_down(e, ev->device, ev->canvas.x, ev->canvas.y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, ev->canvas.xsub, ev->canvas.ysub, ev->flags, ev->timestamp, ev->data); | 1839 | evas_event_feed_multi_down(e, ev->device, ev->canvas.x, ev->canvas.y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, ev->canvas.xsub, ev->canvas.ysub, ev->flags, ev->timestamp, ev->data); |
1573 | break; | 1840 | break; |
1574 | } | 1841 | } |
1575 | case EVAS_CALLBACK_MULTI_UP: | 1842 | case EVAS_CALLBACK_MULTI_UP: |
1576 | { | 1843 | { |
1577 | Evas_Event_Multi_Up *ev = event_copy; | 1844 | Evas_Event_Multi_Up *ev = event_copy; |
1578 | evas_event_feed_multi_up(e, ev->device, ev->canvas.x, ev->canvas.y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, ev->canvas.xsub, ev->canvas.ysub, ev->flags, ev->timestamp, ev->data); | 1845 | evas_event_feed_multi_up(e, ev->device, ev->canvas.x, ev->canvas.y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, ev->canvas.xsub, ev->canvas.ysub, ev->flags, ev->timestamp, ev->data); |
1579 | break; | 1846 | break; |
1580 | } | 1847 | } |
1581 | case EVAS_CALLBACK_MULTI_MOVE: | 1848 | case EVAS_CALLBACK_MULTI_MOVE: |
1582 | { | 1849 | { |
1583 | Evas_Event_Multi_Move *ev = event_copy; | 1850 | Evas_Event_Multi_Move *ev = event_copy; |
1584 | evas_event_feed_multi_move(e, ev->device, ev->cur.canvas.x, ev->cur.canvas.y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, ev->cur.canvas.xsub, ev->cur.canvas.ysub, ev->timestamp, ev->data); | 1851 | evas_event_feed_multi_move(e, ev->device, ev->cur.canvas.x, ev->cur.canvas.y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, ev->cur.canvas.xsub, ev->cur.canvas.ysub, ev->timestamp, ev->data); |
1585 | break; | 1852 | break; |
1586 | } | 1853 | } |
1587 | case EVAS_CALLBACK_KEY_DOWN: | 1854 | case EVAS_CALLBACK_KEY_DOWN: |
1588 | { | 1855 | { |
1589 | Evas_Event_Key_Down *ev = event_copy; | 1856 | Evas_Event_Key_Down *ev = event_copy; |
1590 | evas_event_feed_key_down(e, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, ev->data); | 1857 | evas_event_feed_key_down(e, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, ev->data); |
1591 | break; | 1858 | break; |
1592 | } | 1859 | } |
1593 | case EVAS_CALLBACK_KEY_UP: | 1860 | case EVAS_CALLBACK_KEY_UP: |
1594 | { | 1861 | { |
1595 | Evas_Event_Key_Up *ev = event_copy; | 1862 | Evas_Event_Key_Up *ev = event_copy; |
1596 | evas_event_feed_key_up(e, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, ev->data); | 1863 | evas_event_feed_key_up(e, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, ev->data); |
1597 | break; | 1864 | break; |
1598 | } | 1865 | } |
1599 | default: /* All non-input events are not handeled */ | 1866 | default: /* All non-input events are not handeled */ |
1600 | break; | 1867 | break; |
1601 | } | 1868 | } |
1602 | } | 1869 | } |
1870 | |||
1871 | EAPI int | ||
1872 | evas_event_down_count_get(const Evas *e) | ||
1873 | { | ||
1874 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | ||
1875 | return 0; | ||
1876 | MAGIC_CHECK_END(); | ||
1877 | return e->pointer.downs; | ||
1878 | } | ||
diff --git a/libraries/evas/src/lib/canvas/evas_focus.c b/libraries/evas/src/lib/canvas/evas_focus.c index a1a3bca..29da7e7 100644 --- a/libraries/evas/src/lib/canvas/evas_focus.c +++ b/libraries/evas/src/lib/canvas/evas_focus.c | |||
@@ -10,29 +10,31 @@ | |||
10 | EAPI void | 10 | EAPI void |
11 | evas_object_focus_set(Evas_Object *obj, Eina_Bool focus) | 11 | evas_object_focus_set(Evas_Object *obj, Eina_Bool focus) |
12 | { | 12 | { |
13 | int event_id = 0; | ||
13 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 14 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
14 | return; | 15 | return; |
15 | MAGIC_CHECK_END(); | 16 | MAGIC_CHECK_END(); |
16 | 17 | ||
17 | _evas_object_event_new(); | 18 | _evas_object_event_new(); |
18 | 19 | ||
20 | event_id = _evas_event_counter; | ||
19 | if (focus) | 21 | if (focus) |
20 | { | 22 | { |
21 | if (obj->focused) goto end; | 23 | if (obj->focused) goto end; |
22 | if (obj->layer->evas->focused) | 24 | if (obj->layer->evas->focused) |
23 | evas_object_focus_set(obj->layer->evas->focused, 0); | 25 | evas_object_focus_set(obj->layer->evas->focused, 0); |
24 | obj->focused = 1; | 26 | obj->focused = 1; |
25 | obj->layer->evas->focused = obj; | 27 | obj->layer->evas->focused = obj; |
26 | evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_IN, NULL); | 28 | evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_IN, NULL, event_id); |
27 | evas_event_callback_call(obj->layer->evas, | 29 | evas_event_callback_call(obj->layer->evas, |
28 | EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_IN, obj); | 30 | EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_IN, obj); |
29 | } | 31 | } |
30 | else | 32 | else |
31 | { | 33 | { |
32 | if (!obj->focused) goto end; | 34 | if (!obj->focused) goto end; |
33 | obj->focused = 0; | 35 | obj->focused = 0; |
34 | obj->layer->evas->focused = NULL; | 36 | obj->layer->evas->focused = NULL; |
35 | evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_OUT, NULL); | 37 | evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_OUT, NULL, event_id); |
36 | evas_event_callback_call(obj->layer->evas, | 38 | evas_event_callback_call(obj->layer->evas, |
37 | EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_OUT, obj); | 39 | EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_OUT, obj); |
38 | } | 40 | } |
diff --git a/libraries/evas/src/lib/canvas/evas_gl.c b/libraries/evas/src/lib/canvas/evas_gl.c index 47bb583..85ed851 100644 --- a/libraries/evas/src/lib/canvas/evas_gl.c +++ b/libraries/evas/src/lib/canvas/evas_gl.c | |||
@@ -37,6 +37,13 @@ evas_gl_new(Evas *e) | |||
37 | evas_gl->magic = MAGIC_EVAS_GL; | 37 | evas_gl->magic = MAGIC_EVAS_GL; |
38 | evas_gl->evas = e; | 38 | evas_gl->evas = e; |
39 | 39 | ||
40 | if (!evas_gl->evas->engine.func->gl_context_create) | ||
41 | { | ||
42 | ERR("GL engine not available\n"); | ||
43 | free(evas_gl); | ||
44 | return NULL; | ||
45 | } | ||
46 | |||
40 | return evas_gl; | 47 | return evas_gl; |
41 | } | 48 | } |
42 | 49 | ||
@@ -60,6 +67,24 @@ evas_gl_free(Evas_GL *evas_gl) | |||
60 | free(evas_gl); | 67 | free(evas_gl); |
61 | } | 68 | } |
62 | 69 | ||
70 | EAPI Evas_GL_Config * | ||
71 | evas_gl_config_new() | ||
72 | { | ||
73 | Evas_GL_Config *cfg; | ||
74 | |||
75 | cfg = calloc(1, sizeof(Evas_GL_Config)); | ||
76 | |||
77 | if (!cfg) return NULL; | ||
78 | |||
79 | return cfg; | ||
80 | } | ||
81 | |||
82 | EAPI void | ||
83 | evas_gl_config_free(Evas_GL_Config *cfg) | ||
84 | { | ||
85 | if (cfg) free(cfg); | ||
86 | } | ||
87 | |||
63 | EAPI Evas_GL_Surface * | 88 | EAPI Evas_GL_Surface * |
64 | evas_gl_surface_create(Evas_GL *evas_gl, Evas_GL_Config *config, int width, int height) | 89 | evas_gl_surface_create(Evas_GL *evas_gl, Evas_GL_Config *config, int width, int height) |
65 | { | 90 | { |
@@ -77,6 +102,8 @@ evas_gl_surface_create(Evas_GL *evas_gl, Evas_GL_Config *config, int width, int | |||
77 | 102 | ||
78 | surf = calloc(1, sizeof(Evas_GL_Surface)); | 103 | surf = calloc(1, sizeof(Evas_GL_Surface)); |
79 | 104 | ||
105 | if (!surf) return NULL; | ||
106 | |||
80 | surf->data = evas_gl->evas->engine.func->gl_surface_create(evas_gl->evas->engine.data.output, config, width, height); | 107 | surf->data = evas_gl->evas->engine.func->gl_surface_create(evas_gl->evas->engine.data.output, config, width, height); |
81 | 108 | ||
82 | if (!surf->data) | 109 | if (!surf->data) |
diff --git a/libraries/evas/src/lib/canvas/evas_main.c b/libraries/evas/src/lib/canvas/evas_main.c index 0a37b2c..687744f 100644 --- a/libraries/evas/src/lib/canvas/evas_main.c +++ b/libraries/evas/src/lib/canvas/evas_main.c | |||
@@ -118,12 +118,16 @@ evas_new(void) | |||
118 | e->output.render_method = RENDER_METHOD_INVALID; | 118 | e->output.render_method = RENDER_METHOD_INVALID; |
119 | e->viewport.w = 1; | 119 | e->viewport.w = 1; |
120 | e->viewport.h = 1; | 120 | e->viewport.h = 1; |
121 | e->framespace.x = 0; | ||
122 | e->framespace.y = 0; | ||
123 | e->framespace.w = 0; | ||
124 | e->framespace.h = 0; | ||
121 | e->hinting = EVAS_FONT_HINTING_BYTECODE; | 125 | e->hinting = EVAS_FONT_HINTING_BYTECODE; |
122 | e->name_hash = eina_hash_string_superfast_new(NULL); | 126 | e->name_hash = eina_hash_string_superfast_new(NULL); |
123 | eina_clist_init(&e->calc_list); | 127 | eina_clist_init(&e->calc_list); |
124 | eina_clist_init(&e->calc_done); | 128 | eina_clist_init(&e->calc_done); |
125 | 129 | ||
126 | #define EVAS_ARRAY_SET(E, Array) \ | 130 | #define EVAS_ARRAY_SET(E, Array) \ |
127 | eina_array_step_set(&E->Array, sizeof (E->Array), 4096); | 131 | eina_array_step_set(&E->Array, sizeof (E->Array), 4096); |
128 | 132 | ||
129 | EVAS_ARRAY_SET(e, delete_objects); | 133 | EVAS_ARRAY_SET(e, delete_objects); |
@@ -408,6 +412,41 @@ evas_output_viewport_get(const Evas *e, Evas_Coord *x, Evas_Coord *y, Evas_Coord | |||
408 | if (h) *h = e->viewport.h; | 412 | if (h) *h = e->viewport.h; |
409 | } | 413 | } |
410 | 414 | ||
415 | EAPI void | ||
416 | evas_output_framespace_set(Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h) | ||
417 | { | ||
418 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | ||
419 | return; | ||
420 | MAGIC_CHECK_END(); | ||
421 | |||
422 | if ((x == e->framespace.x) && (y == e->framespace.y) && | ||
423 | (w == e->framespace.w) && (h == e->framespace.h)) return; | ||
424 | e->framespace.x = x; | ||
425 | e->framespace.y = y; | ||
426 | e->framespace.w = w; | ||
427 | e->framespace.h = h; | ||
428 | e->framespace.changed = 1; | ||
429 | e->output_validity++; | ||
430 | e->changed = 1; | ||
431 | } | ||
432 | |||
433 | EAPI void | ||
434 | evas_output_framespace_get(const Evas *e, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) | ||
435 | { | ||
436 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | ||
437 | if (x) *x = 0; | ||
438 | if (y) *y = 0; | ||
439 | if (w) *w = 0; | ||
440 | if (h) *h = 0; | ||
441 | return; | ||
442 | MAGIC_CHECK_END(); | ||
443 | |||
444 | if (x) *x = e->framespace.x; | ||
445 | if (y) *y = e->framespace.y; | ||
446 | if (w) *w = e->framespace.w; | ||
447 | if (h) *h = e->framespace.h; | ||
448 | } | ||
449 | |||
411 | EAPI Evas_Coord | 450 | EAPI Evas_Coord |
412 | evas_coord_screen_x_to_world(const Evas *e, int x) | 451 | evas_coord_screen_x_to_world(const Evas *e, int x) |
413 | { | 452 | { |
diff --git a/libraries/evas/src/lib/canvas/evas_map.c b/libraries/evas/src/lib/canvas/evas_map.c index fca8b3a..2359d5a 100644 --- a/libraries/evas/src/lib/canvas/evas_map.c +++ b/libraries/evas/src/lib/canvas/evas_map.c | |||
@@ -81,17 +81,19 @@ _evas_map_calc_map_geometry(Evas_Object *obj) | |||
81 | 81 | ||
82 | p = obj->cur.map->points; | 82 | p = obj->cur.map->points; |
83 | p_end = p + obj->cur.map->count; | 83 | p_end = p + obj->cur.map->count; |
84 | x1 = lround(p->x); | 84 | x1 = x2 = lround(p->x); |
85 | x2 = lround(p->x); | 85 | y1 = y2 = lround(p->y); |
86 | y1 = lround(p->y); | ||
87 | y2 = lround(p->y); | ||
88 | p++; | 86 | p++; |
89 | for (; p < p_end; p++) | 87 | for (; p < p_end; p++) |
90 | { | 88 | { |
91 | if (p->x < x1) x1 = p->x; | 89 | Evas_Coord x, y; |
92 | if (p->x > x2) x2 = p->x; | 90 | |
93 | if (p->y < y1) y1 = p->y; | 91 | x = lround(p->x); |
94 | if (p->y > y2) y2 = p->y; | 92 | y = lround(p->y); |
93 | if (x < x1) x1 = x; | ||
94 | if (x > x2) x2 = x; | ||
95 | if (y < y1) y1 = y; | ||
96 | if (y > y2) y2 = y; | ||
95 | } | 97 | } |
96 | // this causes clip-out bugs now mapped objs canbe opaque!!! | 98 | // this causes clip-out bugs now mapped objs canbe opaque!!! |
97 | // // add 1 pixel of fuzz around the map region to ensure updates are correct | 99 | // // add 1 pixel of fuzz around the map region to ensure updates are correct |
diff --git a/libraries/evas/src/lib/canvas/evas_name.c b/libraries/evas/src/lib/canvas/evas_name.c index c42f941..1a9d20f 100644 --- a/libraries/evas/src/lib/canvas/evas_name.c +++ b/libraries/evas/src/lib/canvas/evas_name.c | |||
@@ -38,3 +38,35 @@ evas_object_name_find(const Evas *e, const char *name) | |||
38 | if (!name) return NULL; | 38 | if (!name) return NULL; |
39 | return (Evas_Object *)eina_hash_find(e->name_hash, name); | 39 | return (Evas_Object *)eina_hash_find(e->name_hash, name); |
40 | } | 40 | } |
41 | |||
42 | static Evas_Object * | ||
43 | _evas_object_name_child_find(const Evas_Object *obj, const char *name, int recurse) | ||
44 | { | ||
45 | const Eina_Inlist *lst; | ||
46 | Evas_Object *child; | ||
47 | |||
48 | if (!obj->smart.smart) return NULL; | ||
49 | lst = evas_object_smart_members_get_direct(obj); | ||
50 | EINA_INLIST_FOREACH(lst, child) | ||
51 | { | ||
52 | if (child->delete_me) continue; | ||
53 | if (!child->name) continue; | ||
54 | if (!strcmp(name, child->name)) return child; | ||
55 | if (recurse != 0) | ||
56 | { | ||
57 | if ((obj = _evas_object_name_child_find(child, name, recurse - 1))) | ||
58 | return (Evas_Object *)obj; | ||
59 | } | ||
60 | } | ||
61 | return NULL; | ||
62 | } | ||
63 | |||
64 | EAPI Evas_Object * | ||
65 | evas_object_name_child_find(const Evas_Object *obj, const char *name, int recurse) | ||
66 | { | ||
67 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | ||
68 | return NULL; | ||
69 | MAGIC_CHECK_END(); | ||
70 | if (!name) return NULL; | ||
71 | return _evas_object_name_child_find(obj, name, recurse); | ||
72 | } | ||
diff --git a/libraries/evas/src/lib/canvas/evas_object_box.c b/libraries/evas/src/lib/canvas/evas_object_box.c index ab2f222..228d37c 100644 --- a/libraries/evas/src/lib/canvas/evas_object_box.c +++ b/libraries/evas/src/lib/canvas/evas_object_box.c | |||
@@ -1363,7 +1363,7 @@ _evas_object_box_layout_flow_horizontal_row_info_collect(Evas_Object_Box_Data *p | |||
1363 | EAPI void | 1363 | EAPI void |
1364 | evas_object_box_layout_flow_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__) | 1364 | evas_object_box_layout_flow_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__) |
1365 | { | 1365 | { |
1366 | int n_children, v_justify; | 1366 | int n_children; |
1367 | int r, row_count = 0; | 1367 | int r, row_count = 0; |
1368 | int min_w = 0, min_h = 0; | 1368 | int min_w = 0, min_h = 0; |
1369 | int max_h, inc_y; | 1369 | int max_h, inc_y; |
@@ -1398,7 +1398,6 @@ evas_object_box_layout_flow_horizontal(Evas_Object *o, Evas_Object_Box_Data *pri | |||
1398 | (priv, w, &row_count, row_max_h, row_break, row_width, &offset_y, &max_h); | 1398 | (priv, w, &row_count, row_max_h, row_break, row_width, &offset_y, &max_h); |
1399 | 1399 | ||
1400 | inc_y = 0; | 1400 | inc_y = 0; |
1401 | v_justify = 0; | ||
1402 | remain_y = h - (offset_y + max_h); | 1401 | remain_y = h - (offset_y + max_h); |
1403 | 1402 | ||
1404 | if (remain_y > 0) | 1403 | if (remain_y > 0) |
diff --git a/libraries/evas/src/lib/canvas/evas_object_grid.c b/libraries/evas/src/lib/canvas/evas_object_grid.c index ac96f04..db0f43d 100644 --- a/libraries/evas/src/lib/canvas/evas_object_grid.c +++ b/libraries/evas/src/lib/canvas/evas_object_grid.c | |||
@@ -1,5 +1,5 @@ | |||
1 | #include <errno.h> | ||
2 | #include "evas_common.h" | 1 | #include "evas_common.h" |
2 | #include <errno.h> | ||
3 | 3 | ||
4 | typedef struct _Evas_Object_Grid_Data Evas_Object_Grid_Data; | 4 | typedef struct _Evas_Object_Grid_Data Evas_Object_Grid_Data; |
5 | typedef struct _Evas_Object_Grid_Option Evas_Object_Grid_Option; | 5 | typedef struct _Evas_Object_Grid_Option Evas_Object_Grid_Option; |
diff --git a/libraries/evas/src/lib/canvas/evas_object_image.c b/libraries/evas/src/lib/canvas/evas_object_image.c index 7f757a6..d9f6378 100644 --- a/libraries/evas/src/lib/canvas/evas_object_image.c +++ b/libraries/evas/src/lib/canvas/evas_object_image.c | |||
@@ -1,7 +1,13 @@ | |||
1 | #ifdef HAVE_CONFIG_H | ||
2 | # include "config.h" /* so that EAPI in Evas.h is correctly defined */ | ||
3 | #endif | ||
4 | |||
1 | #include <sys/types.h> | 5 | #include <sys/types.h> |
2 | #include <unistd.h> | 6 | #include <unistd.h> |
3 | #include <stdlib.h> | 7 | #include <stdlib.h> |
4 | #include <sys/mman.h> | 8 | #ifdef HAVE_SYS_MMAN_H |
9 | # include <sys/mman.h> | ||
10 | #endif | ||
5 | #include <math.h> | 11 | #include <math.h> |
6 | 12 | ||
7 | #include "evas_common.h" | 13 | #include "evas_common.h" |
@@ -192,8 +198,9 @@ evas_object_image_filled_add(Evas *e) | |||
192 | static void | 198 | static void |
193 | _cleanup_tmpf(Evas_Object *obj) | 199 | _cleanup_tmpf(Evas_Object *obj) |
194 | { | 200 | { |
201 | #ifdef HAVE_SYS_MMAN_H | ||
195 | Evas_Object_Image *o; | 202 | Evas_Object_Image *o; |
196 | 203 | ||
197 | o = (Evas_Object_Image *)(obj->object_data); | 204 | o = (Evas_Object_Image *)(obj->object_data); |
198 | if (!o->tmpf) return; | 205 | if (!o->tmpf) return; |
199 | #ifdef __linux__ | 206 | #ifdef __linux__ |
@@ -204,11 +211,15 @@ _cleanup_tmpf(Evas_Object *obj) | |||
204 | eina_stringshare_del(o->tmpf); | 211 | eina_stringshare_del(o->tmpf); |
205 | o->tmpf_fd = -1; | 212 | o->tmpf_fd = -1; |
206 | o->tmpf = NULL; | 213 | o->tmpf = NULL; |
214 | #else | ||
215 | (void) obj; | ||
216 | #endif | ||
207 | } | 217 | } |
208 | 218 | ||
209 | static void | 219 | static void |
210 | _create_tmpf(Evas_Object *obj, void *data, int size, char *format __UNUSED__) | 220 | _create_tmpf(Evas_Object *obj, void *data, int size, char *format __UNUSED__) |
211 | { | 221 | { |
222 | #ifdef HAVE_SYS_MMAN_H | ||
212 | Evas_Object_Image *o; | 223 | Evas_Object_Image *o; |
213 | char buf[4096]; | 224 | char buf[4096]; |
214 | void *dst; | 225 | void *dst; |
@@ -253,6 +264,12 @@ _create_tmpf(Evas_Object *obj, void *data, int size, char *format __UNUSED__) | |||
253 | o->tmpf = eina_stringshare_add(buf); | 264 | o->tmpf = eina_stringshare_add(buf); |
254 | memcpy(dst, data, size); | 265 | memcpy(dst, data, size); |
255 | munmap(dst, size); | 266 | munmap(dst, size); |
267 | #else | ||
268 | (void) obj; | ||
269 | (void) data; | ||
270 | (void) size; | ||
271 | (void) format; | ||
272 | #endif | ||
256 | } | 273 | } |
257 | 274 | ||
258 | EAPI void | 275 | EAPI void |
@@ -1917,6 +1934,24 @@ evas_object_image_content_hint_get(const Evas_Object *obj) | |||
1917 | return o->content_hint; | 1934 | return o->content_hint; |
1918 | } | 1935 | } |
1919 | 1936 | ||
1937 | EAPI Eina_Bool | ||
1938 | evas_object_image_region_support_get(const Evas_Object *obj) | ||
1939 | { | ||
1940 | Evas_Object_Image *o; | ||
1941 | |||
1942 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | ||
1943 | return EINA_FALSE; | ||
1944 | MAGIC_CHECK_END(); | ||
1945 | o = (Evas_Object_Image *) (obj->object_data); | ||
1946 | MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE); | ||
1947 | return EINA_FALSE; | ||
1948 | MAGIC_CHECK_END(); | ||
1949 | |||
1950 | return obj->layer->evas->engine.func->image_can_region_get( | ||
1951 | obj->layer->evas->engine.data.output, | ||
1952 | o->engine_data); | ||
1953 | } | ||
1954 | |||
1920 | /* animated feature */ | 1955 | /* animated feature */ |
1921 | EAPI Eina_Bool | 1956 | EAPI Eina_Bool |
1922 | evas_object_image_animated_get(const Evas_Object *obj) | 1957 | evas_object_image_animated_get(const Evas_Object *obj) |
@@ -3770,8 +3805,7 @@ evas_object_image_data_convert_internal(Evas_Object_Image *o, void *data, Evas_C | |||
3770 | to_cspace); | 3805 | to_cspace); |
3771 | break; | 3806 | break; |
3772 | case EVAS_COLORSPACE_YCBCR422601_PL: | 3807 | case EVAS_COLORSPACE_YCBCR422601_PL: |
3773 | fprintf(stderr, "EVAS_COLORSPACE_YCBCR422601_PL:\n"); | 3808 | out = evas_common_convert_yuv_422_601_to(data, |
3774 | out = evas_common_convert_yuv_422_601_to(data, | ||
3775 | o->cur.image.w, | 3809 | o->cur.image.w, |
3776 | o->cur.image.h, | 3810 | o->cur.image.h, |
3777 | to_cspace); | 3811 | to_cspace); |
@@ -3795,7 +3829,7 @@ evas_object_image_data_convert_internal(Evas_Object_Image *o, void *data, Evas_C | |||
3795 | to_cspace); | 3829 | to_cspace); |
3796 | break; | 3830 | break; |
3797 | default: | 3831 | default: |
3798 | fprintf(stderr, "unknow colorspace: %i\n", o->cur.cspace); | 3832 | WRN("unknow colorspace: %i\n", o->cur.cspace); |
3799 | break; | 3833 | break; |
3800 | } | 3834 | } |
3801 | 3835 | ||
@@ -3806,9 +3840,7 @@ static void | |||
3806 | evas_object_image_filled_resize_listener(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *einfo __UNUSED__) | 3840 | evas_object_image_filled_resize_listener(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *einfo __UNUSED__) |
3807 | { | 3841 | { |
3808 | Evas_Coord w, h; | 3842 | Evas_Coord w, h; |
3809 | Evas_Object_Image *o; | ||
3810 | 3843 | ||
3811 | o = obj->object_data; | ||
3812 | evas_object_geometry_get(obj, NULL, NULL, &w, &h); | 3844 | evas_object_geometry_get(obj, NULL, NULL, &w, &h); |
3813 | evas_object_image_fill_set(obj, 0, 0, w, h); | 3845 | evas_object_image_fill_set(obj, 0, 0, w, h); |
3814 | } | 3846 | } |
diff --git a/libraries/evas/src/lib/canvas/evas_object_inform.c b/libraries/evas/src/lib/canvas/evas_object_inform.c index bc09eb9..302da42 100644 --- a/libraries/evas/src/lib/canvas/evas_object_inform.c +++ b/libraries/evas/src/lib/canvas/evas_object_inform.c | |||
@@ -8,7 +8,7 @@ evas_object_inform_call_show(Evas_Object *obj) | |||
8 | { | 8 | { |
9 | _evas_object_event_new(); | 9 | _evas_object_event_new(); |
10 | 10 | ||
11 | evas_object_event_callback_call(obj, EVAS_CALLBACK_SHOW, NULL); | 11 | evas_object_event_callback_call(obj, EVAS_CALLBACK_SHOW, NULL, _evas_event_counter); |
12 | _evas_post_event_callback_call(obj->layer->evas); | 12 | _evas_post_event_callback_call(obj->layer->evas); |
13 | } | 13 | } |
14 | 14 | ||
@@ -17,7 +17,7 @@ evas_object_inform_call_hide(Evas_Object *obj) | |||
17 | { | 17 | { |
18 | _evas_object_event_new(); | 18 | _evas_object_event_new(); |
19 | 19 | ||
20 | evas_object_event_callback_call(obj, EVAS_CALLBACK_HIDE, NULL); | 20 | evas_object_event_callback_call(obj, EVAS_CALLBACK_HIDE, NULL, _evas_event_counter); |
21 | _evas_post_event_callback_call(obj->layer->evas); | 21 | _evas_post_event_callback_call(obj->layer->evas); |
22 | } | 22 | } |
23 | 23 | ||
@@ -26,7 +26,7 @@ evas_object_inform_call_move(Evas_Object *obj) | |||
26 | { | 26 | { |
27 | _evas_object_event_new(); | 27 | _evas_object_event_new(); |
28 | 28 | ||
29 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOVE, NULL); | 29 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOVE, NULL, _evas_event_counter); |
30 | _evas_post_event_callback_call(obj->layer->evas); | 30 | _evas_post_event_callback_call(obj->layer->evas); |
31 | } | 31 | } |
32 | 32 | ||
@@ -35,7 +35,7 @@ evas_object_inform_call_resize(Evas_Object *obj) | |||
35 | { | 35 | { |
36 | _evas_object_event_new(); | 36 | _evas_object_event_new(); |
37 | 37 | ||
38 | evas_object_event_callback_call(obj, EVAS_CALLBACK_RESIZE, NULL); | 38 | evas_object_event_callback_call(obj, EVAS_CALLBACK_RESIZE, NULL, _evas_event_counter); |
39 | _evas_post_event_callback_call(obj->layer->evas); | 39 | _evas_post_event_callback_call(obj->layer->evas); |
40 | } | 40 | } |
41 | 41 | ||
@@ -44,7 +44,7 @@ evas_object_inform_call_restack(Evas_Object *obj) | |||
44 | { | 44 | { |
45 | _evas_object_event_new(); | 45 | _evas_object_event_new(); |
46 | 46 | ||
47 | evas_object_event_callback_call(obj, EVAS_CALLBACK_RESTACK, NULL); | 47 | evas_object_event_callback_call(obj, EVAS_CALLBACK_RESTACK, NULL, _evas_event_counter); |
48 | _evas_post_event_callback_call(obj->layer->evas); | 48 | _evas_post_event_callback_call(obj->layer->evas); |
49 | } | 49 | } |
50 | 50 | ||
@@ -53,7 +53,7 @@ evas_object_inform_call_changed_size_hints(Evas_Object *obj) | |||
53 | { | 53 | { |
54 | _evas_object_event_new(); | 54 | _evas_object_event_new(); |
55 | 55 | ||
56 | evas_object_event_callback_call(obj, EVAS_CALLBACK_CHANGED_SIZE_HINTS, NULL); | 56 | evas_object_event_callback_call(obj, EVAS_CALLBACK_CHANGED_SIZE_HINTS, NULL, _evas_event_counter); |
57 | _evas_post_event_callback_call(obj->layer->evas); | 57 | _evas_post_event_callback_call(obj->layer->evas); |
58 | } | 58 | } |
59 | 59 | ||
@@ -65,7 +65,7 @@ evas_object_inform_call_image_preloaded(Evas_Object *obj) | |||
65 | _evas_object_image_preloading_set(obj, 0); | 65 | _evas_object_image_preloading_set(obj, 0); |
66 | _evas_object_event_new(); | 66 | _evas_object_event_new(); |
67 | 67 | ||
68 | evas_object_event_callback_call(obj, EVAS_CALLBACK_IMAGE_PRELOADED, NULL); | 68 | evas_object_event_callback_call(obj, EVAS_CALLBACK_IMAGE_PRELOADED, NULL, _evas_event_counter); |
69 | _evas_post_event_callback_call(obj->layer->evas); | 69 | _evas_post_event_callback_call(obj->layer->evas); |
70 | } | 70 | } |
71 | 71 | ||
@@ -74,6 +74,6 @@ evas_object_inform_call_image_unloaded(Evas_Object *obj) | |||
74 | { | 74 | { |
75 | _evas_object_event_new(); | 75 | _evas_object_event_new(); |
76 | 76 | ||
77 | evas_object_event_callback_call(obj, EVAS_CALLBACK_IMAGE_UNLOADED, NULL); | 77 | evas_object_event_callback_call(obj, EVAS_CALLBACK_IMAGE_UNLOADED, NULL, _evas_event_counter); |
78 | _evas_post_event_callback_call(obj->layer->evas); | 78 | _evas_post_event_callback_call(obj->layer->evas); |
79 | } | 79 | } |
diff --git a/libraries/evas/src/lib/canvas/evas_object_intercept.c b/libraries/evas/src/lib/canvas/evas_object_intercept.c index c3e5e24..54f7265 100644 --- a/libraries/evas/src/lib/canvas/evas_object_intercept.c +++ b/libraries/evas/src/lib/canvas/evas_object_intercept.c | |||
@@ -9,7 +9,6 @@ static void evas_object_intercept_deinit(Evas_Object *obj); | |||
9 | static void | 9 | static void |
10 | evas_object_intercept_init(Evas_Object *obj) | 10 | evas_object_intercept_init(Evas_Object *obj) |
11 | { | 11 | { |
12 | /* MEM OK */ | ||
13 | if (!obj->interceptors) | 12 | if (!obj->interceptors) |
14 | obj->interceptors = evas_mem_calloc(sizeof(Evas_Intercept_Func)); | 13 | obj->interceptors = evas_mem_calloc(sizeof(Evas_Intercept_Func)); |
15 | } | 14 | } |
@@ -17,7 +16,6 @@ evas_object_intercept_init(Evas_Object *obj) | |||
17 | static void | 16 | static void |
18 | evas_object_intercept_deinit(Evas_Object *obj) | 17 | evas_object_intercept_deinit(Evas_Object *obj) |
19 | { | 18 | { |
20 | /* MEM OK */ | ||
21 | if (!obj->interceptors) return; | 19 | if (!obj->interceptors) return; |
22 | if ((obj->interceptors->show.func) || | 20 | if ((obj->interceptors->show.func) || |
23 | (obj->interceptors->hide.func) || | 21 | (obj->interceptors->hide.func) || |
@@ -41,199 +39,186 @@ evas_object_intercept_deinit(Evas_Object *obj) | |||
41 | void | 39 | void |
42 | evas_object_intercept_cleanup(Evas_Object *obj) | 40 | evas_object_intercept_cleanup(Evas_Object *obj) |
43 | { | 41 | { |
44 | /* MEM OK */ | ||
45 | if (obj->interceptors) free(obj->interceptors); | 42 | if (obj->interceptors) free(obj->interceptors); |
46 | } | 43 | } |
47 | 44 | ||
48 | int | 45 | int |
49 | evas_object_intercept_call_show(Evas_Object *obj) | 46 | evas_object_intercept_call_show(Evas_Object *obj) |
50 | { | 47 | { |
51 | /* MEM OK */ | ||
52 | int ret; | 48 | int ret; |
53 | 49 | ||
54 | if (!obj->interceptors) return 0; | 50 | if (!obj->interceptors) return 0; |
55 | if (obj->intercepted) return 0; | 51 | if (obj->intercepted) return 0; |
56 | obj->intercepted = 1; | 52 | obj->intercepted = EINA_TRUE; |
57 | ret = !!(obj->interceptors->show.func); | 53 | ret = !!(obj->interceptors->show.func); |
58 | if (obj->interceptors->show.func) | 54 | if (ret) |
59 | obj->interceptors->show.func(obj->interceptors->show.data, obj); | 55 | obj->interceptors->show.func(obj->interceptors->show.data, obj); |
60 | obj->intercepted = 0; | 56 | obj->intercepted = EINA_FALSE; |
61 | return ret; | 57 | return ret; |
62 | } | 58 | } |
63 | 59 | ||
64 | int | 60 | int |
65 | evas_object_intercept_call_hide(Evas_Object *obj) | 61 | evas_object_intercept_call_hide(Evas_Object *obj) |
66 | { | 62 | { |
67 | /* MEM OK */ | ||
68 | int ret; | 63 | int ret; |
69 | 64 | ||
70 | if (!obj->interceptors) return 0; | 65 | if (!obj->interceptors) return 0; |
71 | if (obj->intercepted) return 0; | 66 | if (obj->intercepted) return 0; |
72 | obj->intercepted = 1; | 67 | obj->intercepted = EINA_TRUE; |
73 | ret = !!(obj->interceptors->hide.func); | 68 | ret = !!(obj->interceptors->hide.func); |
74 | if (obj->interceptors->hide.func) | 69 | if (ret) |
75 | obj->interceptors->hide.func(obj->interceptors->hide.data, obj); | 70 | obj->interceptors->hide.func(obj->interceptors->hide.data, obj); |
76 | obj->intercepted = 0; | 71 | obj->intercepted = EINA_FALSE; |
77 | return ret; | 72 | return ret; |
78 | } | 73 | } |
79 | 74 | ||
80 | int | 75 | int |
81 | evas_object_intercept_call_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y) | 76 | evas_object_intercept_call_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y) |
82 | { | 77 | { |
83 | /* MEM OK */ | ||
84 | int ret; | 78 | int ret; |
85 | 79 | ||
86 | if (!obj->interceptors) return 0; | 80 | if (!obj->interceptors) return 0; |
87 | if (obj->intercepted) return 0; | 81 | if (obj->intercepted) return 0; |
88 | obj->intercepted = 1; | 82 | obj->intercepted = EINA_TRUE; |
89 | ret = !!(obj->interceptors->move.func); | 83 | ret = !!(obj->interceptors->move.func); |
90 | if (obj->interceptors->move.func) | 84 | if (ret) |
91 | obj->interceptors->move.func(obj->interceptors->move.data, obj, x, y); | 85 | obj->interceptors->move.func(obj->interceptors->move.data, obj, x, y); |
92 | obj->intercepted = 0; | 86 | obj->intercepted = EINA_FALSE; |
93 | return ret; | 87 | return ret; |
94 | } | 88 | } |
95 | 89 | ||
96 | int | 90 | int |
97 | evas_object_intercept_call_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h) | 91 | evas_object_intercept_call_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h) |
98 | { | 92 | { |
99 | /* MEM OK */ | ||
100 | int ret; | 93 | int ret; |
101 | 94 | ||
102 | if (!obj->interceptors) return 0; | 95 | if (!obj->interceptors) return 0; |
103 | if (obj->intercepted) return 0; | 96 | if (obj->intercepted) return 0; |
104 | obj->intercepted = 1; | 97 | obj->intercepted = EINA_TRUE; |
105 | ret = !!(obj->interceptors->resize.func); | 98 | ret = !!(obj->interceptors->resize.func); |
106 | if (obj->interceptors->resize.func) | 99 | if (ret) |
107 | obj->interceptors->resize.func(obj->interceptors->resize.data, obj, w, h); | 100 | obj->interceptors->resize.func(obj->interceptors->resize.data, obj, w, h); |
108 | obj->intercepted = 0; | 101 | obj->intercepted = EINA_FALSE; |
109 | return ret; | 102 | return ret; |
110 | } | 103 | } |
111 | 104 | ||
112 | int | 105 | int |
113 | evas_object_intercept_call_raise(Evas_Object *obj) | 106 | evas_object_intercept_call_raise(Evas_Object *obj) |
114 | { | 107 | { |
115 | /* MEM OK */ | ||
116 | int ret; | 108 | int ret; |
117 | 109 | ||
118 | if (!obj->interceptors) return 0; | 110 | if (!obj->interceptors) return 0; |
119 | if (obj->intercepted) return 0; | 111 | if (obj->intercepted) return 0; |
120 | obj->intercepted = 1; | 112 | obj->intercepted = EINA_TRUE; |
121 | ret = !!(obj->interceptors->raise.func); | 113 | ret = !!(obj->interceptors->raise.func); |
122 | if (obj->interceptors->raise.func) | 114 | if (ret) |
123 | obj->interceptors->raise.func(obj->interceptors->raise.data, obj); | 115 | obj->interceptors->raise.func(obj->interceptors->raise.data, obj); |
124 | obj->intercepted = 0; | 116 | obj->intercepted = EINA_FALSE; |
125 | return ret; | 117 | return ret; |
126 | } | 118 | } |
127 | 119 | ||
128 | int | 120 | int |
129 | evas_object_intercept_call_lower(Evas_Object *obj) | 121 | evas_object_intercept_call_lower(Evas_Object *obj) |
130 | { | 122 | { |
131 | /* MEM OK */ | ||
132 | int ret; | 123 | int ret; |
133 | 124 | ||
134 | if (!obj->interceptors) return 0; | 125 | if (!obj->interceptors) return 0; |
135 | if (obj->intercepted) return 0; | 126 | if (obj->intercepted) return 0; |
136 | obj->intercepted = 1; | 127 | obj->intercepted = EINA_TRUE; |
137 | ret = !!(obj->interceptors->lower.func); | 128 | ret = !!(obj->interceptors->lower.func); |
138 | if (obj->interceptors->lower.func) | 129 | if (ret) |
139 | obj->interceptors->lower.func(obj->interceptors->lower.data, obj); | 130 | obj->interceptors->lower.func(obj->interceptors->lower.data, obj); |
140 | obj->intercepted = 0; | 131 | obj->intercepted = EINA_FALSE; |
141 | return ret; | 132 | return ret; |
142 | } | 133 | } |
143 | 134 | ||
144 | int | 135 | int |
145 | evas_object_intercept_call_stack_above(Evas_Object *obj, Evas_Object *above) | 136 | evas_object_intercept_call_stack_above(Evas_Object *obj, Evas_Object *above) |
146 | { | 137 | { |
147 | /* MEM OK */ | ||
148 | int ret; | 138 | int ret; |
149 | 139 | ||
150 | if (!obj->interceptors) return 0; | 140 | if (!obj->interceptors) return 0; |
151 | if (obj->intercepted) return 0; | 141 | if (obj->intercepted) return 0; |
152 | obj->intercepted = 1; | 142 | obj->intercepted = EINA_TRUE; |
153 | ret = !!(obj->interceptors->stack_above.func); | 143 | ret = !!(obj->interceptors->stack_above.func); |
154 | if (obj->interceptors->stack_above.func) | 144 | if (ret) |
155 | obj->interceptors->stack_above.func(obj->interceptors->stack_above.data, obj, above); | 145 | obj->interceptors->stack_above.func(obj->interceptors->stack_above.data, obj, above); |
156 | obj->intercepted = 0; | 146 | obj->intercepted = EINA_FALSE; |
157 | return ret; | 147 | return ret; |
158 | } | 148 | } |
159 | 149 | ||
160 | int | 150 | int |
161 | evas_object_intercept_call_stack_below(Evas_Object *obj, Evas_Object *below) | 151 | evas_object_intercept_call_stack_below(Evas_Object *obj, Evas_Object *below) |
162 | { | 152 | { |
163 | /* MEM OK */ | ||
164 | int ret; | 153 | int ret; |
165 | 154 | ||
166 | if (!obj->interceptors) return 0; | 155 | if (!obj->interceptors) return 0; |
167 | if (obj->intercepted) return 0; | 156 | if (obj->intercepted) return 0; |
168 | obj->intercepted = 1; | 157 | obj->intercepted = EINA_TRUE; |
169 | ret = !!(obj->interceptors->stack_below.func); | 158 | ret = !!(obj->interceptors->stack_below.func); |
170 | if (obj->interceptors->stack_below.func) | 159 | if (ret) |
171 | obj->interceptors->stack_below.func(obj->interceptors->stack_below.data, obj, below); | 160 | obj->interceptors->stack_below.func(obj->interceptors->stack_below.data, obj, below); |
172 | obj->intercepted = 0; | 161 | obj->intercepted = EINA_FALSE; |
173 | return ret; | 162 | return ret; |
174 | } | 163 | } |
175 | 164 | ||
176 | int | 165 | int |
177 | evas_object_intercept_call_layer_set(Evas_Object *obj, int l) | 166 | evas_object_intercept_call_layer_set(Evas_Object *obj, int l) |
178 | { | 167 | { |
179 | /* MEM OK */ | ||
180 | int ret; | 168 | int ret; |
181 | 169 | ||
182 | if (!obj->interceptors) return 0; | 170 | if (!obj->interceptors) return 0; |
183 | if (obj->intercepted) return 0; | 171 | if (obj->intercepted) return 0; |
184 | obj->intercepted = 1; | 172 | obj->intercepted = EINA_TRUE; |
185 | ret = !!(obj->interceptors->layer_set.func); | 173 | ret = !!(obj->interceptors->layer_set.func); |
186 | if (obj->interceptors->layer_set.func) | 174 | if (ret) |
187 | obj->interceptors->layer_set.func(obj->interceptors->layer_set.data, obj, l); | 175 | obj->interceptors->layer_set.func(obj->interceptors->layer_set.data, obj, l); |
188 | obj->intercepted = 0; | 176 | obj->intercepted = EINA_FALSE; |
189 | return ret; | 177 | return ret; |
190 | } | 178 | } |
191 | 179 | ||
192 | int | 180 | int |
193 | evas_object_intercept_call_color_set(Evas_Object *obj, int r, int g, int b, int a) | 181 | evas_object_intercept_call_color_set(Evas_Object *obj, int r, int g, int b, int a) |
194 | { | 182 | { |
195 | /* MEM OK */ | ||
196 | int ret; | 183 | int ret; |
197 | 184 | ||
198 | if (!obj->interceptors) return 0; | 185 | if (!obj->interceptors) return 0; |
199 | if (obj->intercepted) return 0; | 186 | if (obj->intercepted) return 0; |
200 | obj->intercepted = 1; | 187 | obj->intercepted = EINA_TRUE; |
201 | ret = !!(obj->interceptors->color_set.func); | 188 | ret = !!(obj->interceptors->color_set.func); |
202 | if (obj->interceptors->color_set.func) | 189 | if (ret) |
203 | obj->interceptors->color_set.func(obj->interceptors->color_set.data, obj, r, g, b, a); | 190 | obj->interceptors->color_set.func(obj->interceptors->color_set.data, obj, r, g, b, a); |
204 | obj->intercepted = 0; | 191 | obj->intercepted = EINA_FALSE; |
205 | return ret; | 192 | return ret; |
206 | } | 193 | } |
207 | 194 | ||
208 | int | 195 | int |
209 | evas_object_intercept_call_clip_set(Evas_Object *obj, Evas_Object *clip) | 196 | evas_object_intercept_call_clip_set(Evas_Object *obj, Evas_Object *clip) |
210 | { | 197 | { |
211 | /* MEM OK */ | ||
212 | int ret; | 198 | int ret; |
213 | 199 | ||
214 | if (!obj->interceptors) return 0; | 200 | if (!obj->interceptors) return 0; |
215 | if (obj->intercepted) return 0; | 201 | if (obj->intercepted) return 0; |
216 | obj->intercepted = 1; | 202 | obj->intercepted = EINA_TRUE; |
217 | ret = !!(obj->interceptors->clip_set.func); | 203 | ret = !!(obj->interceptors->clip_set.func); |
218 | if (obj->interceptors->clip_set.func) | 204 | if (ret) |
219 | obj->interceptors->clip_set.func(obj->interceptors->clip_set.data, obj, clip); | 205 | obj->interceptors->clip_set.func(obj->interceptors->clip_set.data, obj, clip); |
220 | obj->intercepted = 0; | 206 | obj->intercepted = EINA_FALSE; |
221 | return ret; | 207 | return ret; |
222 | } | 208 | } |
223 | 209 | ||
224 | int | 210 | int |
225 | evas_object_intercept_call_clip_unset(Evas_Object *obj) | 211 | evas_object_intercept_call_clip_unset(Evas_Object *obj) |
226 | { | 212 | { |
227 | /* MEM OK */ | ||
228 | int ret; | 213 | int ret; |
229 | 214 | ||
230 | if (!obj->interceptors) return 0; | 215 | if (!obj->interceptors) return 0; |
231 | if (obj->intercepted) return 0; | 216 | if (obj->intercepted) return 0; |
232 | obj->intercepted = 1; | 217 | obj->intercepted = EINA_TRUE; |
233 | ret = !!(obj->interceptors->clip_unset.func); | 218 | ret = !!(obj->interceptors->clip_unset.func); |
234 | if (obj->interceptors->clip_unset.func) | 219 | if (ret) |
235 | obj->interceptors->clip_unset.func(obj->interceptors->clip_unset.data, obj); | 220 | obj->interceptors->clip_unset.func(obj->interceptors->clip_unset.data, obj); |
236 | obj->intercepted = 0; | 221 | obj->intercepted = EINA_FALSE; |
237 | return ret; | 222 | return ret; |
238 | } | 223 | } |
239 | 224 | ||
@@ -242,8 +227,6 @@ evas_object_intercept_call_clip_unset(Evas_Object *obj) | |||
242 | EAPI void | 227 | EAPI void |
243 | evas_object_intercept_show_callback_add(Evas_Object *obj, Evas_Object_Intercept_Show_Cb func, const void *data) | 228 | evas_object_intercept_show_callback_add(Evas_Object *obj, Evas_Object_Intercept_Show_Cb func, const void *data) |
244 | { | 229 | { |
245 | /* MEM OK */ | ||
246 | |||
247 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 230 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
248 | return; | 231 | return; |
249 | MAGIC_CHECK_END(); | 232 | MAGIC_CHECK_END(); |
@@ -257,7 +240,6 @@ evas_object_intercept_show_callback_add(Evas_Object *obj, Evas_Object_Intercept_ | |||
257 | EAPI void * | 240 | EAPI void * |
258 | evas_object_intercept_show_callback_del(Evas_Object *obj, Evas_Object_Intercept_Show_Cb func) | 241 | evas_object_intercept_show_callback_del(Evas_Object *obj, Evas_Object_Intercept_Show_Cb func) |
259 | { | 242 | { |
260 | /* MEM OK */ | ||
261 | void *data; | 243 | void *data; |
262 | 244 | ||
263 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 245 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
@@ -275,7 +257,6 @@ evas_object_intercept_show_callback_del(Evas_Object *obj, Evas_Object_Intercept_ | |||
275 | EAPI void | 257 | EAPI void |
276 | evas_object_intercept_hide_callback_add(Evas_Object *obj, Evas_Object_Intercept_Hide_Cb func, const void *data) | 258 | evas_object_intercept_hide_callback_add(Evas_Object *obj, Evas_Object_Intercept_Hide_Cb func, const void *data) |
277 | { | 259 | { |
278 | /* MEM OK */ | ||
279 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 260 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
280 | return; | 261 | return; |
281 | MAGIC_CHECK_END(); | 262 | MAGIC_CHECK_END(); |
@@ -289,7 +270,6 @@ evas_object_intercept_hide_callback_add(Evas_Object *obj, Evas_Object_Intercept_ | |||
289 | EAPI void * | 270 | EAPI void * |
290 | evas_object_intercept_hide_callback_del(Evas_Object *obj, Evas_Object_Intercept_Hide_Cb func) | 271 | evas_object_intercept_hide_callback_del(Evas_Object *obj, Evas_Object_Intercept_Hide_Cb func) |
291 | { | 272 | { |
292 | /* MEM OK */ | ||
293 | void *data; | 273 | void *data; |
294 | 274 | ||
295 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 275 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
@@ -307,7 +287,6 @@ evas_object_intercept_hide_callback_del(Evas_Object *obj, Evas_Object_Intercept_ | |||
307 | EAPI void | 287 | EAPI void |
308 | evas_object_intercept_move_callback_add(Evas_Object *obj, Evas_Object_Intercept_Move_Cb func, const void *data) | 288 | evas_object_intercept_move_callback_add(Evas_Object *obj, Evas_Object_Intercept_Move_Cb func, const void *data) |
309 | { | 289 | { |
310 | /* MEM OK */ | ||
311 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 290 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
312 | return; | 291 | return; |
313 | MAGIC_CHECK_END(); | 292 | MAGIC_CHECK_END(); |
@@ -321,7 +300,6 @@ evas_object_intercept_move_callback_add(Evas_Object *obj, Evas_Object_Intercept_ | |||
321 | EAPI void * | 300 | EAPI void * |
322 | evas_object_intercept_move_callback_del(Evas_Object *obj, Evas_Object_Intercept_Move_Cb func) | 301 | evas_object_intercept_move_callback_del(Evas_Object *obj, Evas_Object_Intercept_Move_Cb func) |
323 | { | 302 | { |
324 | /* MEM OK */ | ||
325 | void *data; | 303 | void *data; |
326 | 304 | ||
327 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 305 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
@@ -339,7 +317,6 @@ evas_object_intercept_move_callback_del(Evas_Object *obj, Evas_Object_Intercept_ | |||
339 | EAPI void | 317 | EAPI void |
340 | evas_object_intercept_resize_callback_add(Evas_Object *obj, Evas_Object_Intercept_Resize_Cb func, const void *data) | 318 | evas_object_intercept_resize_callback_add(Evas_Object *obj, Evas_Object_Intercept_Resize_Cb func, const void *data) |
341 | { | 319 | { |
342 | /* MEM OK */ | ||
343 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 320 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
344 | return; | 321 | return; |
345 | MAGIC_CHECK_END(); | 322 | MAGIC_CHECK_END(); |
@@ -353,7 +330,6 @@ evas_object_intercept_resize_callback_add(Evas_Object *obj, Evas_Object_Intercep | |||
353 | EAPI void * | 330 | EAPI void * |
354 | evas_object_intercept_resize_callback_del(Evas_Object *obj, Evas_Object_Intercept_Resize_Cb func) | 331 | evas_object_intercept_resize_callback_del(Evas_Object *obj, Evas_Object_Intercept_Resize_Cb func) |
355 | { | 332 | { |
356 | /* MEM OK */ | ||
357 | void *data; | 333 | void *data; |
358 | 334 | ||
359 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 335 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
@@ -371,7 +347,6 @@ evas_object_intercept_resize_callback_del(Evas_Object *obj, Evas_Object_Intercep | |||
371 | EAPI void | 347 | EAPI void |
372 | evas_object_intercept_raise_callback_add(Evas_Object *obj, Evas_Object_Intercept_Raise_Cb func, const void *data) | 348 | evas_object_intercept_raise_callback_add(Evas_Object *obj, Evas_Object_Intercept_Raise_Cb func, const void *data) |
373 | { | 349 | { |
374 | /* MEM OK */ | ||
375 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 350 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
376 | return; | 351 | return; |
377 | MAGIC_CHECK_END(); | 352 | MAGIC_CHECK_END(); |
@@ -385,7 +360,6 @@ evas_object_intercept_raise_callback_add(Evas_Object *obj, Evas_Object_Intercept | |||
385 | EAPI void * | 360 | EAPI void * |
386 | evas_object_intercept_raise_callback_del(Evas_Object *obj, Evas_Object_Intercept_Raise_Cb func) | 361 | evas_object_intercept_raise_callback_del(Evas_Object *obj, Evas_Object_Intercept_Raise_Cb func) |
387 | { | 362 | { |
388 | /* MEM OK */ | ||
389 | void *data; | 363 | void *data; |
390 | 364 | ||
391 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 365 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
@@ -403,7 +377,6 @@ evas_object_intercept_raise_callback_del(Evas_Object *obj, Evas_Object_Intercept | |||
403 | EAPI void | 377 | EAPI void |
404 | evas_object_intercept_lower_callback_add(Evas_Object *obj, Evas_Object_Intercept_Lower_Cb func, const void *data) | 378 | evas_object_intercept_lower_callback_add(Evas_Object *obj, Evas_Object_Intercept_Lower_Cb func, const void *data) |
405 | { | 379 | { |
406 | /* MEM OK */ | ||
407 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 380 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
408 | return; | 381 | return; |
409 | MAGIC_CHECK_END(); | 382 | MAGIC_CHECK_END(); |
@@ -417,7 +390,6 @@ evas_object_intercept_lower_callback_add(Evas_Object *obj, Evas_Object_Intercept | |||
417 | EAPI void * | 390 | EAPI void * |
418 | evas_object_intercept_lower_callback_del(Evas_Object *obj, Evas_Object_Intercept_Lower_Cb func) | 391 | evas_object_intercept_lower_callback_del(Evas_Object *obj, Evas_Object_Intercept_Lower_Cb func) |
419 | { | 392 | { |
420 | /* MEM OK */ | ||
421 | void *data; | 393 | void *data; |
422 | 394 | ||
423 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 395 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
@@ -435,7 +407,6 @@ evas_object_intercept_lower_callback_del(Evas_Object *obj, Evas_Object_Intercept | |||
435 | EAPI void | 407 | EAPI void |
436 | evas_object_intercept_stack_above_callback_add(Evas_Object *obj, Evas_Object_Intercept_Stack_Above_Cb func, const void *data) | 408 | evas_object_intercept_stack_above_callback_add(Evas_Object *obj, Evas_Object_Intercept_Stack_Above_Cb func, const void *data) |
437 | { | 409 | { |
438 | /* MEM OK */ | ||
439 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 410 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
440 | return; | 411 | return; |
441 | MAGIC_CHECK_END(); | 412 | MAGIC_CHECK_END(); |
@@ -449,7 +420,6 @@ evas_object_intercept_stack_above_callback_add(Evas_Object *obj, Evas_Object_Int | |||
449 | EAPI void * | 420 | EAPI void * |
450 | evas_object_intercept_stack_above_callback_del(Evas_Object *obj, Evas_Object_Intercept_Stack_Above_Cb func) | 421 | evas_object_intercept_stack_above_callback_del(Evas_Object *obj, Evas_Object_Intercept_Stack_Above_Cb func) |
451 | { | 422 | { |
452 | /* MEM OK */ | ||
453 | void *data; | 423 | void *data; |
454 | 424 | ||
455 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 425 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
@@ -467,7 +437,6 @@ evas_object_intercept_stack_above_callback_del(Evas_Object *obj, Evas_Object_Int | |||
467 | EAPI void | 437 | EAPI void |
468 | evas_object_intercept_stack_below_callback_add(Evas_Object *obj, Evas_Object_Intercept_Stack_Below_Cb func, const void *data) | 438 | evas_object_intercept_stack_below_callback_add(Evas_Object *obj, Evas_Object_Intercept_Stack_Below_Cb func, const void *data) |
469 | { | 439 | { |
470 | /* MEM OK */ | ||
471 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 440 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
472 | return; | 441 | return; |
473 | MAGIC_CHECK_END(); | 442 | MAGIC_CHECK_END(); |
@@ -481,7 +450,6 @@ evas_object_intercept_stack_below_callback_add(Evas_Object *obj, Evas_Object_Int | |||
481 | EAPI void * | 450 | EAPI void * |
482 | evas_object_intercept_stack_below_callback_del(Evas_Object *obj, Evas_Object_Intercept_Stack_Below_Cb func) | 451 | evas_object_intercept_stack_below_callback_del(Evas_Object *obj, Evas_Object_Intercept_Stack_Below_Cb func) |
483 | { | 452 | { |
484 | /* MEM OK */ | ||
485 | void *data; | 453 | void *data; |
486 | 454 | ||
487 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 455 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
@@ -499,7 +467,6 @@ evas_object_intercept_stack_below_callback_del(Evas_Object *obj, Evas_Object_Int | |||
499 | EAPI void | 467 | EAPI void |
500 | evas_object_intercept_layer_set_callback_add(Evas_Object *obj, Evas_Object_Intercept_Layer_Set_Cb func, const void *data) | 468 | evas_object_intercept_layer_set_callback_add(Evas_Object *obj, Evas_Object_Intercept_Layer_Set_Cb func, const void *data) |
501 | { | 469 | { |
502 | /* MEM OK */ | ||
503 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 470 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
504 | return; | 471 | return; |
505 | MAGIC_CHECK_END(); | 472 | MAGIC_CHECK_END(); |
@@ -513,7 +480,6 @@ evas_object_intercept_layer_set_callback_add(Evas_Object *obj, Evas_Object_Inter | |||
513 | EAPI void * | 480 | EAPI void * |
514 | evas_object_intercept_layer_set_callback_del(Evas_Object *obj, Evas_Object_Intercept_Layer_Set_Cb func) | 481 | evas_object_intercept_layer_set_callback_del(Evas_Object *obj, Evas_Object_Intercept_Layer_Set_Cb func) |
515 | { | 482 | { |
516 | /* MEM OK */ | ||
517 | void *data; | 483 | void *data; |
518 | 484 | ||
519 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 485 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
@@ -531,7 +497,6 @@ evas_object_intercept_layer_set_callback_del(Evas_Object *obj, Evas_Object_Inter | |||
531 | EAPI void | 497 | EAPI void |
532 | evas_object_intercept_color_set_callback_add(Evas_Object *obj, Evas_Object_Intercept_Color_Set_Cb func, const void *data) | 498 | evas_object_intercept_color_set_callback_add(Evas_Object *obj, Evas_Object_Intercept_Color_Set_Cb func, const void *data) |
533 | { | 499 | { |
534 | /* MEM OK */ | ||
535 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 500 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
536 | return; | 501 | return; |
537 | MAGIC_CHECK_END(); | 502 | MAGIC_CHECK_END(); |
@@ -545,7 +510,6 @@ evas_object_intercept_color_set_callback_add(Evas_Object *obj, Evas_Object_Inter | |||
545 | EAPI void * | 510 | EAPI void * |
546 | evas_object_intercept_color_set_callback_del(Evas_Object *obj, Evas_Object_Intercept_Color_Set_Cb func) | 511 | evas_object_intercept_color_set_callback_del(Evas_Object *obj, Evas_Object_Intercept_Color_Set_Cb func) |
547 | { | 512 | { |
548 | /* MEM OK */ | ||
549 | void *data; | 513 | void *data; |
550 | 514 | ||
551 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 515 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
@@ -563,7 +527,6 @@ evas_object_intercept_color_set_callback_del(Evas_Object *obj, Evas_Object_Inter | |||
563 | EAPI void | 527 | EAPI void |
564 | evas_object_intercept_clip_set_callback_add(Evas_Object *obj, Evas_Object_Intercept_Clip_Set_Cb func, const void *data) | 528 | evas_object_intercept_clip_set_callback_add(Evas_Object *obj, Evas_Object_Intercept_Clip_Set_Cb func, const void *data) |
565 | { | 529 | { |
566 | /* MEM OK */ | ||
567 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 530 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
568 | return; | 531 | return; |
569 | MAGIC_CHECK_END(); | 532 | MAGIC_CHECK_END(); |
@@ -577,7 +540,6 @@ evas_object_intercept_clip_set_callback_add(Evas_Object *obj, Evas_Object_Interc | |||
577 | EAPI void * | 540 | EAPI void * |
578 | evas_object_intercept_clip_set_callback_del(Evas_Object *obj, Evas_Object_Intercept_Clip_Set_Cb func) | 541 | evas_object_intercept_clip_set_callback_del(Evas_Object *obj, Evas_Object_Intercept_Clip_Set_Cb func) |
579 | { | 542 | { |
580 | /* MEM OK */ | ||
581 | void *data; | 543 | void *data; |
582 | 544 | ||
583 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 545 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
@@ -595,7 +557,6 @@ evas_object_intercept_clip_set_callback_del(Evas_Object *obj, Evas_Object_Interc | |||
595 | EAPI void | 557 | EAPI void |
596 | evas_object_intercept_clip_unset_callback_add(Evas_Object *obj, Evas_Object_Intercept_Clip_Unset_Cb func, const void *data) | 558 | evas_object_intercept_clip_unset_callback_add(Evas_Object *obj, Evas_Object_Intercept_Clip_Unset_Cb func, const void *data) |
597 | { | 559 | { |
598 | /* MEM OK */ | ||
599 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 560 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
600 | return; | 561 | return; |
601 | MAGIC_CHECK_END(); | 562 | MAGIC_CHECK_END(); |
@@ -609,7 +570,6 @@ evas_object_intercept_clip_unset_callback_add(Evas_Object *obj, Evas_Object_Inte | |||
609 | EAPI void * | 570 | EAPI void * |
610 | evas_object_intercept_clip_unset_callback_del(Evas_Object *obj, Evas_Object_Intercept_Clip_Unset_Cb func) | 571 | evas_object_intercept_clip_unset_callback_del(Evas_Object *obj, Evas_Object_Intercept_Clip_Unset_Cb func) |
611 | { | 572 | { |
612 | /* MEM OK */ | ||
613 | void *data; | 573 | void *data; |
614 | 574 | ||
615 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 575 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
diff --git a/libraries/evas/src/lib/canvas/evas_object_main.c b/libraries/evas/src/lib/canvas/evas_object_main.c index 3eaded9..86ab498 100644 --- a/libraries/evas/src/lib/canvas/evas_object_main.c +++ b/libraries/evas/src/lib/canvas/evas_object_main.c | |||
@@ -25,6 +25,7 @@ evas_object_new(Evas *e __UNUSED__) | |||
25 | obj->magic = MAGIC_OBJ; | 25 | obj->magic = MAGIC_OBJ; |
26 | obj->cur.scale = 1.0; | 26 | obj->cur.scale = 1.0; |
27 | obj->prev.scale = 1.0; | 27 | obj->prev.scale = 1.0; |
28 | obj->is_frame = EINA_FALSE; | ||
28 | 29 | ||
29 | return obj; | 30 | return obj; |
30 | } | 31 | } |
@@ -99,7 +100,8 @@ evas_object_change(Evas_Object *obj) | |||
99 | /* set changed flag on all objects this one clips too */ | 100 | /* set changed flag on all objects this one clips too */ |
100 | if (!((movch) && (obj->is_static_clip))) | 101 | if (!((movch) && (obj->is_static_clip))) |
101 | { | 102 | { |
102 | EINA_LIST_FOREACH(obj->clip.clipees, l, obj2) evas_object_change(obj2); | 103 | EINA_LIST_FOREACH(obj->clip.clipees, l, obj2) |
104 | evas_object_change(obj2); | ||
103 | } | 105 | } |
104 | EINA_LIST_FOREACH(obj->proxy.proxies, l, obj2) | 106 | EINA_LIST_FOREACH(obj->proxy.proxies, l, obj2) |
105 | { | 107 | { |
@@ -111,8 +113,8 @@ evas_object_change(Evas_Object *obj) | |||
111 | void | 113 | void |
112 | evas_object_render_pre_visible_change(Eina_Array *rects, Evas_Object *obj, int is_v, int was_v) | 114 | evas_object_render_pre_visible_change(Eina_Array *rects, Evas_Object *obj, int is_v, int was_v) |
113 | { | 115 | { |
114 | if (obj->smart.smart) return ; | 116 | if (obj->smart.smart) return; |
115 | if (is_v == was_v) return ; | 117 | if (is_v == was_v) return; |
116 | if (is_v) | 118 | if (is_v) |
117 | { | 119 | { |
118 | evas_add_rect(rects, | 120 | evas_add_rect(rects, |
@@ -134,8 +136,8 @@ evas_object_render_pre_visible_change(Eina_Array *rects, Evas_Object *obj, int i | |||
134 | void | 136 | void |
135 | evas_object_render_pre_clipper_change(Eina_Array *rects, Evas_Object *obj) | 137 | evas_object_render_pre_clipper_change(Eina_Array *rects, Evas_Object *obj) |
136 | { | 138 | { |
137 | if (obj->smart.smart) return ; | 139 | if (obj->smart.smart) return; |
138 | if (obj->cur.clipper == obj->prev.clipper) return ; | 140 | if (obj->cur.clipper == obj->prev.clipper) return; |
139 | if ((obj->cur.clipper) && (obj->prev.clipper)) | 141 | if ((obj->cur.clipper) && (obj->prev.clipper)) |
140 | { | 142 | { |
141 | /* get difference rects between clippers */ | 143 | /* get difference rects between clippers */ |
@@ -223,7 +225,8 @@ evas_object_clip_changes_clean(Evas_Object *obj) | |||
223 | { | 225 | { |
224 | Eina_Rectangle *r; | 226 | Eina_Rectangle *r; |
225 | 227 | ||
226 | EINA_LIST_FREE(obj->clip.changes, r) eina_rectangle_free(r); | 228 | EINA_LIST_FREE(obj->clip.changes, r) |
229 | eina_rectangle_free(r); | ||
227 | } | 230 | } |
228 | 231 | ||
229 | void | 232 | void |
@@ -408,11 +411,11 @@ evas_object_del(Evas_Object *obj) | |||
408 | obj->focused = 0; | 411 | obj->focused = 0; |
409 | obj->layer->evas->focused = NULL; | 412 | obj->layer->evas->focused = NULL; |
410 | _evas_object_event_new(); | 413 | _evas_object_event_new(); |
411 | evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_OUT, NULL); | 414 | evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_OUT, NULL, _evas_event_counter); |
412 | _evas_post_event_callback_call(obj->layer->evas); | 415 | _evas_post_event_callback_call(obj->layer->evas); |
413 | } | 416 | } |
414 | _evas_object_event_new(); | 417 | _evas_object_event_new(); |
415 | evas_object_event_callback_call(obj, EVAS_CALLBACK_DEL, NULL); | 418 | evas_object_event_callback_call(obj, EVAS_CALLBACK_DEL, NULL, _evas_event_counter); |
416 | _evas_post_event_callback_call(obj->layer->evas); | 419 | _evas_post_event_callback_call(obj->layer->evas); |
417 | if (obj->mouse_grabbed > 0) | 420 | if (obj->mouse_grabbed > 0) |
418 | obj->layer->evas->pointer.mouse_grabbed -= obj->mouse_grabbed; | 421 | obj->layer->evas->pointer.mouse_grabbed -= obj->mouse_grabbed; |
@@ -426,9 +429,6 @@ evas_object_del(Evas_Object *obj) | |||
426 | evas_object_free(obj, 1); | 429 | evas_object_free(obj, 1); |
427 | return; | 430 | return; |
428 | } | 431 | } |
429 | obj->layer->evas->pointer.mouse_grabbed -= obj->mouse_grabbed; | ||
430 | obj->mouse_grabbed = 0; | ||
431 | obj->mouse_in = 0; | ||
432 | evas_object_grabs_cleanup(obj); | 432 | evas_object_grabs_cleanup(obj); |
433 | while (obj->clip.clipees) | 433 | while (obj->clip.clipees) |
434 | evas_object_clip_unset(obj->clip.clipees->data); | 434 | evas_object_clip_unset(obj->clip.clipees->data); |
@@ -438,7 +438,7 @@ evas_object_del(Evas_Object *obj) | |||
438 | if (obj->smart.smart) evas_object_smart_del(obj); | 438 | if (obj->smart.smart) evas_object_smart_del(obj); |
439 | evas_object_map_set(obj, NULL); | 439 | evas_object_map_set(obj, NULL); |
440 | _evas_object_event_new(); | 440 | _evas_object_event_new(); |
441 | evas_object_event_callback_call(obj, EVAS_CALLBACK_FREE, NULL); | 441 | evas_object_event_callback_call(obj, EVAS_CALLBACK_FREE, NULL, _evas_event_counter); |
442 | _evas_post_event_callback_call(obj->layer->evas); | 442 | _evas_post_event_callback_call(obj->layer->evas); |
443 | evas_object_smart_cleanup(obj); | 443 | evas_object_smart_cleanup(obj); |
444 | obj->delete_me = 1; | 444 | obj->delete_me = 1; |
@@ -449,18 +449,38 @@ EAPI void | |||
449 | evas_object_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y) | 449 | evas_object_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y) |
450 | { | 450 | { |
451 | int is, was = 0, pass = 0, freeze = 0; | 451 | int is, was = 0, pass = 0, freeze = 0; |
452 | int nx = 0, ny = 0; | ||
452 | 453 | ||
453 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 454 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
454 | return; | 455 | return; |
455 | MAGIC_CHECK_END(); | 456 | MAGIC_CHECK_END(); |
456 | if (obj->delete_me) return; | 457 | if (obj->delete_me) return; |
457 | if (evas_object_intercept_call_move(obj, x, y)) return; | 458 | |
459 | nx = x; | ||
460 | ny = y; | ||
461 | |||
462 | if (!obj->is_frame) | ||
463 | { | ||
464 | int fx, fy; | ||
465 | |||
466 | evas_output_framespace_get(obj->layer->evas, &fx, &fy, NULL, NULL); | ||
467 | if (!obj->smart.parent) | ||
468 | { | ||
469 | nx += fx; | ||
470 | ny += fy; | ||
471 | } | ||
472 | } | ||
473 | |||
474 | if (evas_object_intercept_call_move(obj, nx, ny)) return; | ||
475 | |||
458 | if (obj->doing.in_move > 0) | 476 | if (obj->doing.in_move > 0) |
459 | { | 477 | { |
460 | WRN("evas_object_move() called on object %p when in the middle of moving the same object", obj); | 478 | WRN("evas_object_move() called on object %p when in the middle of moving the same object", obj); |
461 | return; | 479 | return; |
462 | } | 480 | } |
463 | if ((obj->cur.geometry.x == x) && (obj->cur.geometry.y == y)) return; | 481 | |
482 | if ((obj->cur.geometry.x == nx) && (obj->cur.geometry.y == ny)) return; | ||
483 | |||
464 | if (obj->layer->evas->events_frozen <= 0) | 484 | if (obj->layer->evas->events_frozen <= 0) |
465 | { | 485 | { |
466 | pass = evas_event_passes_through(obj); | 486 | pass = evas_event_passes_through(obj); |
@@ -471,13 +491,16 @@ evas_object_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y) | |||
471 | obj->layer->evas->pointer.y, 1, 1); | 491 | obj->layer->evas->pointer.y, 1, 1); |
472 | } | 492 | } |
473 | obj->doing.in_move++; | 493 | obj->doing.in_move++; |
494 | |||
474 | if (obj->smart.smart) | 495 | if (obj->smart.smart) |
475 | { | 496 | { |
476 | if (obj->smart.smart->smart_class->move) | 497 | if (obj->smart.smart->smart_class->move) |
477 | obj->smart.smart->smart_class->move(obj, x, y); | 498 | obj->smart.smart->smart_class->move(obj, nx, ny); |
478 | } | 499 | } |
479 | obj->cur.geometry.x = x; | 500 | |
480 | obj->cur.geometry.y = y; | 501 | obj->cur.geometry.x = nx; |
502 | obj->cur.geometry.y = ny; | ||
503 | |||
481 | //// obj->cur.cache.geometry.validity = 0; | 504 | //// obj->cur.cache.geometry.validity = 0; |
482 | obj->changed_move = 1; | 505 | obj->changed_move = 1; |
483 | evas_object_change(obj); | 506 | evas_object_change(obj); |
@@ -509,19 +532,40 @@ EAPI void | |||
509 | evas_object_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h) | 532 | evas_object_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h) |
510 | { | 533 | { |
511 | int is, was = 0, pass = 0, freeze =0; | 534 | int is, was = 0, pass = 0, freeze =0; |
535 | int nw = 0, nh = 0; | ||
512 | 536 | ||
513 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 537 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
514 | return; | 538 | return; |
515 | MAGIC_CHECK_END(); | 539 | MAGIC_CHECK_END(); |
516 | if (obj->delete_me) return; | 540 | if (obj->delete_me) return; |
517 | if (w < 0) w = 0; if (h < 0) h = 0; | 541 | if (w < 0) w = 0; if (h < 0) h = 0; |
518 | if (evas_object_intercept_call_resize(obj, w, h)) return; | 542 | |
543 | nw = w; | ||
544 | nh = h; | ||
545 | if (!obj->is_frame) | ||
546 | { | ||
547 | int fw, fh; | ||
548 | |||
549 | evas_output_framespace_get(obj->layer->evas, NULL, NULL, &fw, &fh); | ||
550 | if (!obj->smart.parent) | ||
551 | { | ||
552 | nw = w - fw; | ||
553 | nh = h - fh; | ||
554 | if (nw < 0) nw = 0; | ||
555 | if (nh < 0) nh = 0; | ||
556 | } | ||
557 | } | ||
558 | |||
559 | if (evas_object_intercept_call_resize(obj, nw, nh)) return; | ||
560 | |||
519 | if (obj->doing.in_resize > 0) | 561 | if (obj->doing.in_resize > 0) |
520 | { | 562 | { |
521 | WRN("evas_object_resize() called on object %p when in the middle of resizing the same object", obj); | 563 | WRN("evas_object_resize() called on object %p when in the middle of resizing the same object", obj); |
522 | return; | 564 | return; |
523 | } | 565 | } |
524 | if ((obj->cur.geometry.w == w) && (obj->cur.geometry.h == h)) return; | 566 | |
567 | if ((obj->cur.geometry.w == nw) && (obj->cur.geometry.h == nh)) return; | ||
568 | |||
525 | if (obj->layer->evas->events_frozen <= 0) | 569 | if (obj->layer->evas->events_frozen <= 0) |
526 | { | 570 | { |
527 | pass = evas_event_passes_through(obj); | 571 | pass = evas_event_passes_through(obj); |
@@ -532,13 +576,16 @@ evas_object_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h) | |||
532 | obj->layer->evas->pointer.y, 1, 1); | 576 | obj->layer->evas->pointer.y, 1, 1); |
533 | } | 577 | } |
534 | obj->doing.in_resize++; | 578 | obj->doing.in_resize++; |
579 | |||
535 | if (obj->smart.smart) | 580 | if (obj->smart.smart) |
536 | { | 581 | { |
537 | if (obj->smart.smart->smart_class->resize) | 582 | if (obj->smart.smart->smart_class->resize) |
538 | obj->smart.smart->smart_class->resize(obj, w, h); | 583 | obj->smart.smart->smart_class->resize(obj, nw, nh); |
539 | } | 584 | } |
540 | obj->cur.geometry.w = w; | 585 | |
541 | obj->cur.geometry.h = h; | 586 | obj->cur.geometry.w = nw; |
587 | obj->cur.geometry.h = nh; | ||
588 | |||
542 | //// obj->cur.cache.geometry.validity = 0; | 589 | //// obj->cur.cache.geometry.validity = 0; |
543 | evas_object_change(obj); | 590 | evas_object_change(obj); |
544 | evas_object_clip_dirty(obj); | 591 | evas_object_clip_dirty(obj); |
@@ -581,6 +628,7 @@ evas_object_geometry_get(const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, E | |||
581 | if (x) *x = 0; if (y) *y = 0; if (w) *w = 0; if (h) *h = 0; | 628 | if (x) *x = 0; if (y) *y = 0; if (w) *w = 0; if (h) *h = 0; |
582 | return; | 629 | return; |
583 | } | 630 | } |
631 | |||
584 | if (x) *x = obj->cur.geometry.x; | 632 | if (x) *x = obj->cur.geometry.x; |
585 | if (y) *y = obj->cur.geometry.y; | 633 | if (y) *y = obj->cur.geometry.y; |
586 | if (w) *w = obj->cur.geometry.w; | 634 | if (w) *w = obj->cur.geometry.w; |
@@ -1084,8 +1132,7 @@ evas_object_render_op_set(Evas_Object *obj, Evas_Render_Op render_op) | |||
1084 | return; | 1132 | return; |
1085 | MAGIC_CHECK_END(); | 1133 | MAGIC_CHECK_END(); |
1086 | if (obj->delete_me) return; | 1134 | if (obj->delete_me) return; |
1087 | if ((Evas_Render_Op)obj->cur.render_op == render_op) | 1135 | if (obj->cur.render_op == render_op) return; |
1088 | return; | ||
1089 | obj->cur.render_op = render_op; | 1136 | obj->cur.render_op = render_op; |
1090 | evas_object_change(obj); | 1137 | evas_object_change(obj); |
1091 | } | 1138 | } |
@@ -1317,3 +1364,20 @@ evas_object_static_clip_get(const Evas_Object *obj) | |||
1317 | return obj->is_static_clip; | 1364 | return obj->is_static_clip; |
1318 | } | 1365 | } |
1319 | 1366 | ||
1367 | EAPI void | ||
1368 | evas_object_is_frame_object_set(Evas_Object *obj, Eina_Bool is_frame) | ||
1369 | { | ||
1370 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | ||
1371 | return; | ||
1372 | MAGIC_CHECK_END(); | ||
1373 | obj->is_frame = is_frame; | ||
1374 | } | ||
1375 | |||
1376 | EAPI Eina_Bool | ||
1377 | evas_object_is_frame_object_get(Evas_Object *obj) | ||
1378 | { | ||
1379 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | ||
1380 | return EINA_FALSE; | ||
1381 | MAGIC_CHECK_END(); | ||
1382 | return obj->is_frame; | ||
1383 | } | ||
diff --git a/libraries/evas/src/lib/canvas/evas_object_smart.c b/libraries/evas/src/lib/canvas/evas_object_smart.c index a7dfcdf..69d7f3b 100644 --- a/libraries/evas/src/lib/canvas/evas_object_smart.c +++ b/libraries/evas/src/lib/canvas/evas_object_smart.c | |||
@@ -402,6 +402,37 @@ evas_object_smart_callback_del(Evas_Object *obj, const char *event, Evas_Smart_C | |||
402 | return NULL; | 402 | return NULL; |
403 | } | 403 | } |
404 | 404 | ||
405 | EAPI void * | ||
406 | evas_object_smart_callback_del_full(Evas_Object *obj, const char *event, Evas_Smart_Cb func, const void *data) | ||
407 | { | ||
408 | Evas_Object_Smart *o; | ||
409 | Eina_List *l; | ||
410 | Evas_Smart_Callback *cb; | ||
411 | |||
412 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | ||
413 | return NULL; | ||
414 | MAGIC_CHECK_END(); | ||
415 | o = (Evas_Object_Smart *)(obj->object_data); | ||
416 | MAGIC_CHECK(o, Evas_Object_Smart, MAGIC_OBJ_SMART); | ||
417 | return NULL; | ||
418 | MAGIC_CHECK_END(); | ||
419 | if (!event) return NULL; | ||
420 | EINA_LIST_FOREACH(o->callbacks, l, cb) | ||
421 | { | ||
422 | if ((!strcmp(cb->event, event)) && (cb->func == func) && (cb->func_data == data)) | ||
423 | { | ||
424 | void *ret; | ||
425 | |||
426 | ret = cb->func_data; | ||
427 | cb->delete_me = 1; | ||
428 | o->deletions_waiting = 1; | ||
429 | evas_object_smart_callbacks_clear(obj); | ||
430 | return ret; | ||
431 | } | ||
432 | } | ||
433 | return NULL; | ||
434 | } | ||
435 | |||
405 | EAPI void | 436 | EAPI void |
406 | evas_object_smart_callback_call(Evas_Object *obj, const char *event, void *event_info) | 437 | evas_object_smart_callback_call(Evas_Object *obj, const char *event, void *event_info) |
407 | { | 438 | { |
diff --git a/libraries/evas/src/lib/canvas/evas_object_table.c b/libraries/evas/src/lib/canvas/evas_object_table.c index 6e28fce..cdfa07f 100644 --- a/libraries/evas/src/lib/canvas/evas_object_table.c +++ b/libraries/evas/src/lib/canvas/evas_object_table.c | |||
@@ -1,5 +1,5 @@ | |||
1 | #include <errno.h> | ||
2 | #include "evas_common.h" | 1 | #include "evas_common.h" |
2 | #include <errno.h> | ||
3 | 3 | ||
4 | typedef struct _Evas_Object_Table_Data Evas_Object_Table_Data; | 4 | typedef struct _Evas_Object_Table_Data Evas_Object_Table_Data; |
5 | typedef struct _Evas_Object_Table_Option Evas_Object_Table_Option; | 5 | typedef struct _Evas_Object_Table_Option Evas_Object_Table_Option; |
diff --git a/libraries/evas/src/lib/canvas/evas_object_text.c b/libraries/evas/src/lib/canvas/evas_object_text.c index 6c30fcc..dbe5e08 100644 --- a/libraries/evas/src/lib/canvas/evas_object_text.c +++ b/libraries/evas/src/lib/canvas/evas_object_text.c | |||
@@ -531,8 +531,9 @@ _evas_object_text_layout(Evas_Object *obj, Evas_Object_Text *o, const Eina_Unico | |||
531 | { | 531 | { |
532 | EvasBiDiStrIndex *v_to_l = NULL; | 532 | EvasBiDiStrIndex *v_to_l = NULL; |
533 | size_t pos, visual_pos; | 533 | size_t pos, visual_pos; |
534 | int len = eina_unicode_strlen(text), par_len; | 534 | int len = eina_unicode_strlen(text); |
535 | #ifdef BIDI_SUPPORT | 535 | #ifdef BIDI_SUPPORT |
536 | int par_len = len; | ||
536 | int *segment_idxs = NULL; | 537 | int *segment_idxs = NULL; |
537 | if (o->bidi_delimiters) | 538 | if (o->bidi_delimiters) |
538 | segment_idxs = evas_bidi_segment_idxs_get(text, o->bidi_delimiters); | 539 | segment_idxs = evas_bidi_segment_idxs_get(text, o->bidi_delimiters); |
@@ -543,7 +544,6 @@ _evas_object_text_layout(Evas_Object *obj, Evas_Object_Text *o, const Eina_Unico | |||
543 | #endif | 544 | #endif |
544 | visual_pos = pos = 0; | 545 | visual_pos = pos = 0; |
545 | 546 | ||
546 | par_len = len; | ||
547 | while (len > 0) | 547 | while (len > 0) |
548 | { | 548 | { |
549 | Evas_Font_Instance *script_fi = NULL; | 549 | Evas_Font_Instance *script_fi = NULL; |
diff --git a/libraries/evas/src/lib/canvas/evas_object_textblock.c b/libraries/evas/src/lib/canvas/evas_object_textblock.c index 7941a45..568911c 100644 --- a/libraries/evas/src/lib/canvas/evas_object_textblock.c +++ b/libraries/evas/src/lib/canvas/evas_object_textblock.c | |||
@@ -61,13 +61,13 @@ | |||
61 | * @subsection textblock_layout The layout system | 61 | * @subsection textblock_layout The layout system |
62 | * @todo write @ref textblock_layout | 62 | * @todo write @ref textblock_layout |
63 | */ | 63 | */ |
64 | #include <stdlib.h> | ||
65 | |||
66 | #include "evas_common.h" | 64 | #include "evas_common.h" |
67 | #include "evas_private.h" | 65 | #include "evas_private.h" |
66 | #include <stdlib.h> | ||
68 | 67 | ||
69 | #ifdef HAVE_LINEBREAK | 68 | #ifdef HAVE_LINEBREAK |
70 | #include "linebreak.h" | 69 | #include "linebreak.h" |
70 | #include "wordbreak.h" | ||
71 | #endif | 71 | #endif |
72 | 72 | ||
73 | /* save typing */ | 73 | /* save typing */ |
@@ -78,12 +78,19 @@ | |||
78 | static const char o_type[] = "textblock"; | 78 | static const char o_type[] = "textblock"; |
79 | 79 | ||
80 | /* The char to be inserted instead of visible formats */ | 80 | /* The char to be inserted instead of visible formats */ |
81 | #define EVAS_TEXTBLOCK_REPLACEMENT_CHAR 0xFFFC | 81 | #define _REPLACEMENT_CHAR 0xFFFC |
82 | #define _PARAGRAPH_SEPARATOR 0x2029 | 82 | #define _PARAGRAPH_SEPARATOR 0x2029 |
83 | #define _NEWLINE '\n' | ||
84 | #define _TAB '\t' | ||
85 | |||
86 | #define _REPLACEMENT_CHAR_UTF8 "\xEF\xBF\xBC" | ||
87 | #define _PARAGRAPH_SEPARATOR_UTF8 "\xE2\x80\xA9" | ||
88 | #define _NEWLINE_UTF8 "\n" | ||
89 | #define _TAB_UTF8 "\t" | ||
83 | #define EVAS_TEXTBLOCK_IS_VISIBLE_FORMAT_CHAR(ch) \ | 90 | #define EVAS_TEXTBLOCK_IS_VISIBLE_FORMAT_CHAR(ch) \ |
84 | (((ch) == EVAS_TEXTBLOCK_REPLACEMENT_CHAR) || \ | 91 | (((ch) == _REPLACEMENT_CHAR) || \ |
85 | ((ch) == '\n') || \ | 92 | ((ch) == _NEWLINE) || \ |
86 | ((ch) == '\t') || \ | 93 | ((ch) == _TAB) || \ |
87 | ((ch) == _PARAGRAPH_SEPARATOR)) | 94 | ((ch) == _PARAGRAPH_SEPARATOR)) |
88 | 95 | ||
89 | /* private struct for textblock object internal data */ | 96 | /* private struct for textblock object internal data */ |
@@ -101,6 +108,12 @@ typedef struct _Evas_Object_Textblock Evas_Object_Textblock; | |||
101 | typedef struct _Evas_Object_Style_Tag Evas_Object_Style_Tag; | 108 | typedef struct _Evas_Object_Style_Tag Evas_Object_Style_Tag; |
102 | /** | 109 | /** |
103 | * @internal | 110 | * @internal |
111 | * @typedef Evas_Object_Style_Tag | ||
112 | * The structure used for finding style tags. | ||
113 | */ | ||
114 | typedef struct _Evas_Object_Style_Tag_Base Evas_Object_Style_Tag_Base; | ||
115 | /** | ||
116 | * @internal | ||
104 | * @typedef Evas_Object_Textblock_Node_Text | 117 | * @typedef Evas_Object_Textblock_Node_Text |
105 | * A text node. | 118 | * A text node. |
106 | */ | 119 | */ |
@@ -195,21 +208,26 @@ typedef struct _Evas_Object_Textblock_Format Evas_Object_Textblock_Format; | |||
195 | * Returns true if closer is the closer of base. | 208 | * Returns true if closer is the closer of base. |
196 | */ | 209 | */ |
197 | #define _FORMAT_IS_CLOSER_OF(base, closer, closer_len) \ | 210 | #define _FORMAT_IS_CLOSER_OF(base, closer, closer_len) \ |
198 | (!strncmp(base + 1, closer, closer_len) && \ | 211 | (!strncmp(base, closer, closer_len) && \ |
199 | (!base[closer_len + 1] || \ | 212 | (!base[closer_len] || \ |
200 | (base[closer_len + 1] == '=') || \ | 213 | (base[closer_len] == '=') || \ |
201 | _is_white(base[closer_len + 1]))) | 214 | _is_white(base[closer_len]))) |
202 | 215 | ||
203 | /*FIXME: document the structs and struct items. */ | 216 | /*FIXME: document the structs and struct items. */ |
204 | struct _Evas_Object_Style_Tag | 217 | struct _Evas_Object_Style_Tag_Base |
205 | { | 218 | { |
206 | EINA_INLIST; | ||
207 | char *tag; | 219 | char *tag; |
208 | char *replace; | 220 | char *replace; |
209 | size_t tag_len; | 221 | size_t tag_len; |
210 | size_t replace_len; | 222 | size_t replace_len; |
211 | }; | 223 | }; |
212 | 224 | ||
225 | struct _Evas_Object_Style_Tag | ||
226 | { | ||
227 | EINA_INLIST; | ||
228 | Evas_Object_Style_Tag_Base tag; | ||
229 | }; | ||
230 | |||
213 | struct _Evas_Object_Textblock_Node_Text | 231 | struct _Evas_Object_Textblock_Node_Text |
214 | { | 232 | { |
215 | EINA_INLIST; | 233 | EINA_INLIST; |
@@ -229,11 +247,18 @@ struct _Evas_Object_Textblock_Node_Format | |||
229 | Evas_Object_Textblock_Node_Text *text_node; | 247 | Evas_Object_Textblock_Node_Text *text_node; |
230 | size_t offset; | 248 | size_t offset; |
231 | unsigned char anchor : 2; | 249 | unsigned char anchor : 2; |
250 | Eina_Bool opener : 1; | ||
251 | Eina_Bool own_closer : 1; | ||
232 | Eina_Bool visible : 1; | 252 | Eina_Bool visible : 1; |
233 | Eina_Bool format_change : 1; | 253 | Eina_Bool format_change : 1; |
234 | Eina_Bool is_new : 1; | 254 | Eina_Bool is_new : 1; |
235 | }; | 255 | }; |
236 | 256 | ||
257 | /* The default tags to use */ | ||
258 | static const Evas_Object_Style_Tag_Base default_tags[] = { | ||
259 | { "b", "+ font_weight=Bold", 1, 18 }, | ||
260 | { "i", "+ font_style=Italic", 1, 19 }}; | ||
261 | |||
237 | #define ANCHOR_NONE 0 | 262 | #define ANCHOR_NONE 0 |
238 | #define ANCHOR_A 1 | 263 | #define ANCHOR_A 1 |
239 | #define ANCHOR_ITEM 2 | 264 | #define ANCHOR_ITEM 2 |
@@ -538,8 +563,8 @@ _style_replace(Evas_Textblock_Style *ts, const char *style_text) | |||
538 | 563 | ||
539 | tag = (Evas_Object_Style_Tag *)ts->tags; | 564 | tag = (Evas_Object_Style_Tag *)ts->tags; |
540 | ts->tags = (Evas_Object_Style_Tag *)eina_inlist_remove(EINA_INLIST_GET(ts->tags), EINA_INLIST_GET(tag)); | 565 | ts->tags = (Evas_Object_Style_Tag *)eina_inlist_remove(EINA_INLIST_GET(ts->tags), EINA_INLIST_GET(tag)); |
541 | free(tag->tag); | 566 | free(tag->tag.tag); |
542 | free(tag->replace); | 567 | free(tag->tag.replace); |
543 | free(tag); | 568 | free(tag); |
544 | } | 569 | } |
545 | ts->default_tag = NULL; | 570 | ts->default_tag = NULL; |
@@ -567,19 +592,38 @@ _style_clear(Evas_Textblock_Style *ts) | |||
567 | * @return The replacement string found. | 592 | * @return The replacement string found. |
568 | */ | 593 | */ |
569 | static inline const char * | 594 | static inline const char * |
570 | _style_match_tag(Evas_Textblock_Style *ts, const char *s, size_t tag_len, size_t *replace_len) | 595 | _style_match_tag(const Evas_Textblock_Style *ts, const char *s, size_t tag_len, size_t *replace_len) |
571 | { | 596 | { |
572 | Evas_Object_Style_Tag *tag; | 597 | Evas_Object_Style_Tag *tag; |
573 | 598 | ||
599 | /* Try the style tags */ | ||
574 | EINA_INLIST_FOREACH(ts->tags, tag) | 600 | EINA_INLIST_FOREACH(ts->tags, tag) |
575 | { | 601 | { |
576 | if (tag->tag_len != tag_len) continue; | 602 | if (tag->tag.tag_len != tag_len) continue; |
577 | if (!strncmp(tag->tag, s, tag_len)) | 603 | if (!strncmp(tag->tag.tag, s, tag_len)) |
578 | { | 604 | { |
579 | *replace_len = tag->replace_len; | 605 | *replace_len = tag->tag.replace_len; |
580 | return tag->replace; | 606 | return tag->tag.replace; |
581 | } | 607 | } |
582 | } | 608 | } |
609 | |||
610 | /* Try the default tags */ | ||
611 | { | ||
612 | size_t i; | ||
613 | const Evas_Object_Style_Tag_Base *btag; | ||
614 | for (btag = default_tags, i = 0 ; | ||
615 | i < (sizeof(default_tags) / sizeof(default_tags[0])) ; | ||
616 | btag++, i++) | ||
617 | { | ||
618 | if (btag->tag_len != tag_len) continue; | ||
619 | if (!strncmp(btag->tag, s, tag_len)) | ||
620 | { | ||
621 | *replace_len = btag->replace_len; | ||
622 | return btag->replace; | ||
623 | } | ||
624 | } | ||
625 | } | ||
626 | |||
583 | *replace_len = 0; | 627 | *replace_len = 0; |
584 | return NULL; | 628 | return NULL; |
585 | } | 629 | } |
@@ -1689,8 +1733,8 @@ _format_fill(Evas_Object *obj, Evas_Object_Textblock_Format *fmt, const char *st | |||
1689 | 1733 | ||
1690 | s = str; | 1734 | s = str; |
1691 | 1735 | ||
1692 | /* get rid of anything +s or -s off the start of the string */ | 1736 | /* get rid of any spaces at the start of the string */ |
1693 | while ((*s == ' ') || (*s == '+') || (*s == '-')) s++; | 1737 | while (*s == ' ') s++; |
1694 | 1738 | ||
1695 | while ((item = _format_parse(&s))) | 1739 | while ((item = _format_parse(&s))) |
1696 | { | 1740 | { |
@@ -2131,7 +2175,6 @@ _layout_format_pop(Ctxt *c, const char *format) | |||
2131 | if ((c->format_stack) && (c->format_stack->next)) | 2175 | if ((c->format_stack) && (c->format_stack->next)) |
2132 | { | 2176 | { |
2133 | Eina_List *redo_nodes = NULL; | 2177 | Eina_List *redo_nodes = NULL; |
2134 | format++; /* Skip the '-' */ | ||
2135 | 2178 | ||
2136 | /* Generic pop, should just pop. */ | 2179 | /* Generic pop, should just pop. */ |
2137 | if (((format[0] == ' ') && !format[1]) || | 2180 | if (((format[0] == ' ') && !format[1]) || |
@@ -2994,21 +3037,29 @@ _format_finalize(Evas_Object *obj, Evas_Object_Textblock_Format *fmt) | |||
2994 | * @def _IS_TAB(item) | 3037 | * @def _IS_TAB(item) |
2995 | */ | 3038 | */ |
2996 | #define _IS_TAB(item) \ | 3039 | #define _IS_TAB(item) \ |
2997 | (!strcmp(item, "\t") || !strcmp(item, "\\t")) | 3040 | (!strcmp(item, "tab") || !strcmp(item, "\t") || !strcmp(item, "\\t")) |
2998 | /** | 3041 | /** |
2999 | * @internal | 3042 | * @internal |
3000 | * Returns true if the item is a line spearator, false otherwise | 3043 | * Returns true if the item is a line spearator, false otherwise |
3001 | * @def _IS_LINE_SEPARATOR(item) | 3044 | * @def _IS_LINE_SEPARATOR(item) |
3002 | */ | 3045 | */ |
3003 | #define _IS_LINE_SEPARATOR(item) \ | 3046 | #define _IS_LINE_SEPARATOR(item) \ |
3004 | (!strcmp(item, "\n") || !strcmp(item, "\\n")) | 3047 | (!strcmp(item, "br") || !strcmp(item, "\n") || !strcmp(item, "\\n")) |
3005 | /** | 3048 | /** |
3006 | * @internal | 3049 | * @internal |
3007 | * Returns true if the item is a paragraph separator, false otherwise | 3050 | * Returns true if the item is a paragraph separator, false otherwise |
3008 | * @def _IS_PARAGRAPH_SEPARATOR(item) | 3051 | * @def _IS_PARAGRAPH_SEPARATOR(item) |
3009 | */ | 3052 | */ |
3053 | #define _IS_PARAGRAPH_SEPARATOR_SIMPLE(item) \ | ||
3054 | (!strcmp(item, "ps")) | ||
3055 | /** | ||
3056 | * @internal | ||
3057 | * Returns true if the item is a paragraph separator, false otherwise | ||
3058 | * takes legacy mode into account. | ||
3059 | * @def _IS_PARAGRAPH_SEPARATOR(item) | ||
3060 | */ | ||
3010 | #define _IS_PARAGRAPH_SEPARATOR(o, item) \ | 3061 | #define _IS_PARAGRAPH_SEPARATOR(o, item) \ |
3011 | (!strcmp(item, "ps") || \ | 3062 | (_IS_PARAGRAPH_SEPARATOR_SIMPLE(item) || \ |
3012 | (o->legacy_newline && _IS_LINE_SEPARATOR(item))) /* Paragraph separator */ | 3063 | (o->legacy_newline && _IS_LINE_SEPARATOR(item))) /* Paragraph separator */ |
3013 | 3064 | ||
3014 | /** | 3065 | /** |
@@ -3041,7 +3092,7 @@ _layout_do_format(const Evas_Object *obj __UNUSED__, Ctxt *c, | |||
3041 | int handled = 0; | 3092 | int handled = 0; |
3042 | 3093 | ||
3043 | s = n->format; | 3094 | s = n->format; |
3044 | if (!strncmp(s, "+ item ", 7)) | 3095 | if (!strncmp(s, "item ", 5)) |
3045 | { | 3096 | { |
3046 | // one of: | 3097 | // one of: |
3047 | // item size=20x10 href=name | 3098 | // item size=20x10 href=name |
@@ -3133,16 +3184,14 @@ _layout_do_format(const Evas_Object *obj __UNUSED__, Ctxt *c, | |||
3133 | if (!handled) | 3184 | if (!handled) |
3134 | { | 3185 | { |
3135 | Eina_Bool push_fmt = EINA_FALSE; | 3186 | Eina_Bool push_fmt = EINA_FALSE; |
3136 | if (s[0] == '+') | 3187 | if (n->opener && !n->own_closer) |
3137 | { | 3188 | { |
3138 | fmt = _layout_format_push(c, fmt, n); | 3189 | fmt = _layout_format_push(c, fmt, n); |
3139 | s++; | ||
3140 | push_fmt = EINA_TRUE; | 3190 | push_fmt = EINA_TRUE; |
3141 | } | 3191 | } |
3142 | else if (s[0] == '-') | 3192 | else if (!n->opener) |
3143 | { | 3193 | { |
3144 | fmt = _layout_format_pop(c, n->orig_format); | 3194 | fmt = _layout_format_pop(c, n->orig_format); |
3145 | s++; | ||
3146 | } | 3195 | } |
3147 | while ((item = _format_parse(&s))) | 3196 | while ((item = _format_parse(&s))) |
3148 | { | 3197 | { |
@@ -3166,7 +3215,7 @@ _layout_do_format(const Evas_Object *obj __UNUSED__, Ctxt *c, | |||
3166 | 3215 | ||
3167 | fi->parent.w = fi->parent.adv = 0; | 3216 | fi->parent.w = fi->parent.adv = 0; |
3168 | } | 3217 | } |
3169 | else if ((!strcmp(item, "\t")) || (!strcmp(item, "\\t"))) | 3218 | else if (_IS_TAB(item)) |
3170 | { | 3219 | { |
3171 | Evas_Object_Textblock_Format_Item *fi; | 3220 | Evas_Object_Textblock_Format_Item *fi; |
3172 | 3221 | ||
@@ -3215,28 +3264,33 @@ _layout_update_par(Ctxt *c) | |||
3215 | /* -1 means no wrap */ | 3264 | /* -1 means no wrap */ |
3216 | static int | 3265 | static int |
3217 | _layout_get_charwrap(Ctxt *c, Evas_Object_Textblock_Format *fmt, | 3266 | _layout_get_charwrap(Ctxt *c, Evas_Object_Textblock_Format *fmt, |
3218 | const Evas_Object_Textblock_Text_Item *ti, size_t line_start, | 3267 | const Evas_Object_Textblock_Item *it, size_t line_start, |
3219 | const char *breaks) | 3268 | const char *breaks) |
3220 | { | 3269 | { |
3221 | int wrap; | 3270 | int wrap; |
3222 | size_t uwrap; | 3271 | size_t uwrap; |
3223 | size_t len = eina_ustrbuf_length_get(ti->parent.text_node->unicode); | 3272 | size_t len = eina_ustrbuf_length_get(it->text_node->unicode); |
3224 | /* Currently not being used, because it doesn't contain relevant | 3273 | /* Currently not being used, because it doesn't contain relevant |
3225 | * information */ | 3274 | * information */ |
3226 | (void) breaks; | 3275 | (void) breaks; |
3227 | 3276 | ||
3228 | { | 3277 | { |
3229 | wrap = _layout_text_cutoff_get(c, fmt, ti); | 3278 | if (it->type == EVAS_TEXTBLOCK_ITEM_FORMAT) |
3279 | wrap = 0; | ||
3280 | else | ||
3281 | wrap = _layout_text_cutoff_get(c, fmt, _ITEM_TEXT(it)); | ||
3282 | |||
3230 | if (wrap < 0) | 3283 | if (wrap < 0) |
3231 | return -1; | 3284 | return -1; |
3232 | uwrap = (size_t) wrap + ti->parent.text_pos; | 3285 | uwrap = (size_t) wrap + it->text_pos; |
3233 | } | 3286 | } |
3234 | 3287 | ||
3235 | 3288 | ||
3236 | if (uwrap == line_start) | 3289 | if ((uwrap == line_start) && (it->type == EVAS_TEXTBLOCK_ITEM_TEXT)) |
3237 | { | 3290 | { |
3238 | uwrap = ti->parent.text_pos + | 3291 | uwrap = it->text_pos + |
3239 | (size_t) evas_common_text_props_cluster_next(&ti->text_props, wrap); | 3292 | (size_t) evas_common_text_props_cluster_next( |
3293 | &_ITEM_TEXT(it)->text_props, wrap); | ||
3240 | } | 3294 | } |
3241 | if ((uwrap <= line_start) || (uwrap > len)) | 3295 | if ((uwrap <= line_start) || (uwrap > len)) |
3242 | return -1; | 3296 | return -1; |
@@ -3259,16 +3313,16 @@ _layout_get_charwrap(Ctxt *c, Evas_Object_Textblock_Format *fmt, | |||
3259 | #endif | 3313 | #endif |
3260 | static int | 3314 | static int |
3261 | _layout_get_word_mixwrap_common(Ctxt *c, Evas_Object_Textblock_Format *fmt, | 3315 | _layout_get_word_mixwrap_common(Ctxt *c, Evas_Object_Textblock_Format *fmt, |
3262 | const Evas_Object_Textblock_Text_Item *ti, Eina_Bool mixed_wrap, | 3316 | const Evas_Object_Textblock_Item *it, Eina_Bool mixed_wrap, |
3263 | size_t line_start, const char *breaks) | 3317 | size_t line_start, const char *breaks) |
3264 | { | 3318 | { |
3265 | Eina_Bool wrap_after = EINA_FALSE; | 3319 | Eina_Bool wrap_after = EINA_FALSE; |
3266 | size_t wrap; | 3320 | size_t wrap; |
3267 | size_t orig_wrap; | 3321 | size_t orig_wrap; |
3268 | const Eina_Unicode *str = eina_ustrbuf_string_get( | 3322 | const Eina_Unicode *str = eina_ustrbuf_string_get( |
3269 | ti->parent.text_node->unicode); | 3323 | it->text_node->unicode); |
3270 | int item_start = ti->parent.text_pos; | 3324 | int item_start = it->text_pos; |
3271 | size_t len = eina_ustrbuf_length_get(ti->parent.text_node->unicode); | 3325 | size_t len = eina_ustrbuf_length_get(it->text_node->unicode); |
3272 | #ifndef HAVE_LINEBREAK | 3326 | #ifndef HAVE_LINEBREAK |
3273 | /* Not used without liblinebreak ATM. */ | 3327 | /* Not used without liblinebreak ATM. */ |
3274 | (void) breaks; | 3328 | (void) breaks; |
@@ -3276,7 +3330,10 @@ _layout_get_word_mixwrap_common(Ctxt *c, Evas_Object_Textblock_Format *fmt, | |||
3276 | 3330 | ||
3277 | { | 3331 | { |
3278 | int swrap = -1; | 3332 | int swrap = -1; |
3279 | swrap = _layout_text_cutoff_get(c, fmt, ti); | 3333 | if (it->type == EVAS_TEXTBLOCK_ITEM_FORMAT) |
3334 | swrap = 0; | ||
3335 | else | ||
3336 | swrap = _layout_text_cutoff_get(c, fmt, _ITEM_TEXT(it)); | ||
3280 | /* Avoiding too small textblocks to even contain one char. | 3337 | /* Avoiding too small textblocks to even contain one char. |
3281 | * FIXME: This can cause breaking inside ligatures. */ | 3338 | * FIXME: This can cause breaking inside ligatures. */ |
3282 | 3339 | ||
@@ -3331,7 +3388,7 @@ _layout_get_word_mixwrap_common(Ctxt *c, Evas_Object_Textblock_Format *fmt, | |||
3331 | { | 3388 | { |
3332 | if (mixed_wrap) | 3389 | if (mixed_wrap) |
3333 | { | 3390 | { |
3334 | return _layout_get_charwrap(c, fmt, ti, | 3391 | return _layout_get_charwrap(c, fmt, it, |
3335 | line_start, breaks); | 3392 | line_start, breaks); |
3336 | } | 3393 | } |
3337 | else | 3394 | else |
@@ -3362,20 +3419,20 @@ _layout_get_word_mixwrap_common(Ctxt *c, Evas_Object_Textblock_Format *fmt, | |||
3362 | /* -1 means no wrap */ | 3419 | /* -1 means no wrap */ |
3363 | static int | 3420 | static int |
3364 | _layout_get_wordwrap(Ctxt *c, Evas_Object_Textblock_Format *fmt, | 3421 | _layout_get_wordwrap(Ctxt *c, Evas_Object_Textblock_Format *fmt, |
3365 | const Evas_Object_Textblock_Text_Item *ti, size_t line_start, | 3422 | const Evas_Object_Textblock_Item *it, size_t line_start, |
3366 | const char *breaks) | 3423 | const char *breaks) |
3367 | { | 3424 | { |
3368 | return _layout_get_word_mixwrap_common(c, fmt, ti, EINA_FALSE, line_start, | 3425 | return _layout_get_word_mixwrap_common(c, fmt, it, EINA_FALSE, line_start, |
3369 | breaks); | 3426 | breaks); |
3370 | } | 3427 | } |
3371 | 3428 | ||
3372 | /* -1 means no wrap */ | 3429 | /* -1 means no wrap */ |
3373 | static int | 3430 | static int |
3374 | _layout_get_mixedwrap(Ctxt *c, Evas_Object_Textblock_Format *fmt, | 3431 | _layout_get_mixedwrap(Ctxt *c, Evas_Object_Textblock_Format *fmt, |
3375 | const Evas_Object_Textblock_Text_Item *ti, size_t line_start, | 3432 | const Evas_Object_Textblock_Item *it, size_t line_start, |
3376 | const char *breaks) | 3433 | const char *breaks) |
3377 | { | 3434 | { |
3378 | return _layout_get_word_mixwrap_common(c, fmt, ti, EINA_TRUE, line_start, | 3435 | return _layout_get_word_mixwrap_common(c, fmt, it, EINA_TRUE, line_start, |
3379 | breaks); | 3436 | breaks); |
3380 | } | 3437 | } |
3381 | 3438 | ||
@@ -3503,7 +3560,7 @@ _layout_paragraph_reorder_lines(Evas_Object_Textblock_Paragraph *par) | |||
3503 | 3560 | ||
3504 | static void | 3561 | static void |
3505 | _layout_paragraph_render(Evas_Object_Textblock *o, | 3562 | _layout_paragraph_render(Evas_Object_Textblock *o, |
3506 | Evas_Object_Textblock_Paragraph *par) | 3563 | Evas_Object_Textblock_Paragraph *par) |
3507 | { | 3564 | { |
3508 | if (par->rendered) | 3565 | if (par->rendered) |
3509 | return; | 3566 | return; |
@@ -3521,6 +3578,8 @@ _layout_paragraph_render(Evas_Object_Textblock *o, | |||
3521 | par->bidi_props = NULL; | 3578 | par->bidi_props = NULL; |
3522 | } | 3579 | } |
3523 | } | 3580 | } |
3581 | #else | ||
3582 | (void) o; | ||
3524 | #endif | 3583 | #endif |
3525 | } | 3584 | } |
3526 | 3585 | ||
@@ -3656,120 +3715,127 @@ _layout_par(Ctxt *c) | |||
3656 | else if ((it->format->wrap_word || it->format->wrap_char || | 3715 | else if ((it->format->wrap_word || it->format->wrap_char || |
3657 | it->format->wrap_mixed) && it->text_node) | 3716 | it->format->wrap_mixed) && it->text_node) |
3658 | { | 3717 | { |
3659 | if (it->type == EVAS_TEXTBLOCK_ITEM_FORMAT) | 3718 | size_t line_start; |
3719 | size_t it_len; | ||
3720 | |||
3721 | it_len = (it->type == EVAS_TEXTBLOCK_ITEM_FORMAT) ? | ||
3722 | 1 : _ITEM_TEXT(it)->text_props.text_len; | ||
3723 | |||
3724 | |||
3725 | #ifdef HAVE_LINEBREAK | ||
3726 | /* If we haven't calculated the linebreaks yet, | ||
3727 | * do */ | ||
3728 | if (!line_breaks) | ||
3660 | { | 3729 | { |
3661 | /* Don't wrap if it's the only item */ | 3730 | /* Only relevant in those cases */ |
3662 | if (c->ln->items) | 3731 | if (it->format->wrap_word || it->format->wrap_mixed) |
3663 | { | 3732 | { |
3664 | /*FIXME: I should handle format correctly, | 3733 | const char *lang; |
3665 | i.e verify we are allowed to break here */ | 3734 | lang = (it->format->font.fdesc) ? |
3666 | _layout_line_advance(c, it->format); | 3735 | it->format->font.fdesc->lang : ""; |
3667 | wrap = -1; | 3736 | size_t len = |
3737 | eina_ustrbuf_length_get( | ||
3738 | it->text_node->unicode); | ||
3739 | line_breaks = malloc(len); | ||
3740 | set_linebreaks_utf32((const utf32_t *) | ||
3741 | eina_ustrbuf_string_get( | ||
3742 | it->text_node->unicode), | ||
3743 | len, lang, line_breaks); | ||
3668 | } | 3744 | } |
3669 | } | 3745 | } |
3746 | #endif | ||
3747 | if (c->ln->items) | ||
3748 | line_start = c->ln->items->text_pos; | ||
3670 | else | 3749 | else |
3671 | { | 3750 | line_start = it->text_pos; |
3672 | Evas_Object_Textblock_Text_Item *ti = _ITEM_TEXT(it); | ||
3673 | size_t line_start; | ||
3674 | 3751 | ||
3675 | #ifdef HAVE_LINEBREAK | 3752 | adv_line = 1; |
3676 | /* If we haven't calculated the linebreaks yet, | 3753 | /* If we don't already have a wrap point from before */ |
3677 | * do */ | 3754 | if (wrap < 0) |
3678 | if (!line_breaks) | 3755 | { |
3679 | { | 3756 | if (it->format->wrap_word) |
3680 | /* Only relevant in those cases */ | 3757 | wrap = _layout_get_wordwrap(c, it->format, it, |
3681 | if (it->format->wrap_word || it->format->wrap_mixed) | 3758 | line_start, line_breaks); |
3682 | { | 3759 | else if (it->format->wrap_char) |
3683 | const char *lang; | 3760 | wrap = _layout_get_charwrap(c, it->format, it, |
3684 | lang = (it->format->font.fdesc) ? | 3761 | line_start, line_breaks); |
3685 | it->format->font.fdesc->lang : ""; | 3762 | else if (it->format->wrap_mixed) |
3686 | size_t len = | 3763 | wrap = _layout_get_mixedwrap(c, it->format, it, |
3687 | eina_ustrbuf_length_get( | 3764 | line_start, line_breaks); |
3688 | it->text_node->unicode); | ||
3689 | line_breaks = malloc(len); | ||
3690 | set_linebreaks_utf32((const utf32_t *) | ||
3691 | eina_ustrbuf_string_get( | ||
3692 | it->text_node->unicode), | ||
3693 | len, lang, line_breaks); | ||
3694 | } | ||
3695 | } | ||
3696 | #endif | ||
3697 | if (c->ln->items) | ||
3698 | line_start = c->ln->items->text_pos; | ||
3699 | else | 3765 | else |
3700 | line_start = ti->parent.text_pos; | 3766 | wrap = -1; |
3701 | 3767 | } | |
3702 | adv_line = 1; | ||
3703 | /* If we don't already have a wrap point from before */ | ||
3704 | if (wrap < 0) | ||
3705 | { | ||
3706 | if (it->format->wrap_word) | ||
3707 | wrap = _layout_get_wordwrap(c, it->format, ti, | ||
3708 | line_start, line_breaks); | ||
3709 | else if (it->format->wrap_char) | ||
3710 | wrap = _layout_get_charwrap(c, it->format, ti, | ||
3711 | line_start, line_breaks); | ||
3712 | else if (it->format->wrap_mixed) | ||
3713 | wrap = _layout_get_mixedwrap(c, it->format, ti, | ||
3714 | line_start, line_breaks); | ||
3715 | else | ||
3716 | wrap = -1; | ||
3717 | } | ||
3718 | 3768 | ||
3719 | /* If it's before the item, rollback and apply. | 3769 | /* If it's before the item, rollback and apply. |
3720 | if it's in the item, cut. | 3770 | if it's in the item, cut. |
3721 | If it's after the item, delay the cut */ | 3771 | If it's after the item, delay the cut */ |
3722 | if (wrap > 0) | 3772 | if (wrap > 0) |
3773 | { | ||
3774 | size_t uwrap = (size_t) wrap; | ||
3775 | if (uwrap < it->text_pos) | ||
3723 | { | 3776 | { |
3724 | size_t uwrap = (size_t) wrap; | 3777 | /* Rollback latest additions, and cut that |
3725 | if (uwrap < ti->parent.text_pos) | 3778 | item */ |
3779 | i = eina_list_prev(i); | ||
3780 | it = eina_list_data_get(i); | ||
3781 | while (uwrap < it->text_pos) | ||
3726 | { | 3782 | { |
3727 | /* Rollback latest additions, and cut that | ||
3728 | item */ | ||
3729 | i = eina_list_prev(i); | ||
3730 | it = eina_list_data_get(i); | ||
3731 | while (uwrap < it->text_pos) | ||
3732 | { | ||
3733 | c->ln->items = _ITEM( | ||
3734 | eina_inlist_remove( | ||
3735 | EINA_INLIST_GET(c->ln->items), | ||
3736 | EINA_INLIST_GET(it))); | ||
3737 | i = eina_list_prev(i); | ||
3738 | it = eina_list_data_get(i); | ||
3739 | } | ||
3740 | c->x = it->x; | ||
3741 | c->ln->items = _ITEM( | 3783 | c->ln->items = _ITEM( |
3742 | eina_inlist_remove( | 3784 | eina_inlist_remove( |
3743 | EINA_INLIST_GET(c->ln->items), | 3785 | EINA_INLIST_GET(c->ln->items), |
3744 | EINA_INLIST_GET(it))); | 3786 | EINA_INLIST_GET(it))); |
3745 | continue; | 3787 | i = eina_list_prev(i); |
3788 | it = eina_list_data_get(i); | ||
3746 | } | 3789 | } |
3747 | /* If it points to the end, it means the previous | 3790 | c->x = it->x; |
3748 | * char is a whitespace we should remove, so this | 3791 | c->ln->items = _ITEM( |
3749 | * is a wanted cutting point. */ | 3792 | eina_inlist_remove( |
3750 | else if (uwrap > ti->parent.text_pos + | 3793 | EINA_INLIST_GET(c->ln->items), |
3751 | ti->text_props.text_len) | 3794 | EINA_INLIST_GET(it))); |
3752 | wrap = -1; /* Delay the cut in a smart way | 3795 | continue; |
3753 | i.e use the item_pos as the line_start, because | ||
3754 | there's already no cut before*/ | ||
3755 | else | ||
3756 | wrap -= ti->parent.text_pos; /* Cut here */ | ||
3757 | } | 3796 | } |
3758 | 3797 | /* If it points to the end, it means the previous | |
3759 | if (wrap > 0) | 3798 | * char is a whitespace we should remove, so this |
3799 | * is a wanted cutting point. */ | ||
3800 | else if (uwrap > it->text_pos + it_len) | ||
3760 | { | 3801 | { |
3761 | _layout_item_text_split_strip_white(c, ti, i, wrap); | 3802 | /* FIXME: Should redo the ellipsis handling. |
3762 | } | 3803 | * If we can do ellipsis, just cut here. */ |
3763 | else if (wrap == 0) | 3804 | if (it->format->ellipsis == 1.0) |
3805 | { | ||
3806 | _layout_handle_ellipsis(c, it, i); | ||
3807 | ret = 1; | ||
3808 | goto end; | ||
3809 | } | ||
3810 | else | ||
3811 | { | ||
3812 | /* Delay the cut in a smart way i.e use the | ||
3813 | item_pos as the line_start, because | ||
3814 | there's already no cut before*/ | ||
3815 | wrap = -1; | ||
3816 | } | ||
3817 | } | ||
3818 | else | ||
3819 | wrap -= it->text_pos; /* Cut here */ | ||
3820 | } | ||
3821 | |||
3822 | if (wrap > 0) | ||
3823 | { | ||
3824 | if (it->type == EVAS_TEXTBLOCK_ITEM_TEXT) | ||
3764 | { | 3825 | { |
3765 | /* Should wrap before the item */ | 3826 | _layout_item_text_split_strip_white(c, |
3766 | adv_line = 0; | 3827 | _ITEM_TEXT(it), i, wrap); |
3767 | redo_item = 1; | ||
3768 | _layout_line_advance(c, it->format); | ||
3769 | } | 3828 | } |
3770 | /* Reset wrap */ | ||
3771 | wrap = -1; | ||
3772 | } | 3829 | } |
3830 | else if (wrap == 0) | ||
3831 | { | ||
3832 | /* Should wrap before the item */ | ||
3833 | adv_line = 0; | ||
3834 | redo_item = 1; | ||
3835 | _layout_line_advance(c, it->format); | ||
3836 | } | ||
3837 | /* Reset wrap */ | ||
3838 | wrap = -1; | ||
3773 | } | 3839 | } |
3774 | } | 3840 | } |
3775 | 3841 | ||
@@ -3844,18 +3910,16 @@ _format_changes_invalidate_text_nodes(Ctxt *c) | |||
3844 | const char *fstr = fnode->orig_format; | 3910 | const char *fstr = fnode->orig_format; |
3845 | /* balance < 0 means we gave up and everything should be | 3911 | /* balance < 0 means we gave up and everything should be |
3846 | * invalidated */ | 3912 | * invalidated */ |
3847 | if (*fstr == '+') | 3913 | if (fnode->opener && !fnode->own_closer) |
3848 | { | 3914 | { |
3849 | balance++; | 3915 | balance++; |
3850 | if (!fstack) | 3916 | if (!fstack) |
3851 | start_n = fnode->text_node; | 3917 | start_n = fnode->text_node; |
3852 | fstack = eina_list_prepend(fstack, fnode); | 3918 | fstack = eina_list_prepend(fstack, fnode); |
3853 | } | 3919 | } |
3854 | else if (*fstr == '-') | 3920 | else if (!fnode->opener) |
3855 | { | 3921 | { |
3856 | size_t fstr_len; | 3922 | size_t fstr_len; |
3857 | /* Skip the '-' */ | ||
3858 | fstr++; | ||
3859 | fstr_len = strlen(fstr); | 3923 | fstr_len = strlen(fstr); |
3860 | /* Generic popper, just pop */ | 3924 | /* Generic popper, just pop */ |
3861 | if (((fstr[0] == ' ') && !fstr[1]) || !fstr[0]) | 3925 | if (((fstr[0] == ' ') && !fstr[1]) || !fstr[0]) |
@@ -4429,12 +4493,12 @@ evas_textblock_style_set(Evas_Textblock_Style *ts, const char *text) | |||
4429 | { | 4493 | { |
4430 | if (!key_start) | 4494 | if (!key_start) |
4431 | { | 4495 | { |
4432 | if (!isspace(*p)) | 4496 | if (!isspace((unsigned char)(*p))) |
4433 | key_start = p; | 4497 | key_start = p; |
4434 | } | 4498 | } |
4435 | else if (!key_stop) | 4499 | else if (!key_stop) |
4436 | { | 4500 | { |
4437 | if ((*p == '=') || (isspace(*p))) | 4501 | if ((*p == '=') || (isspace((unsigned char)(*p)))) |
4438 | key_stop = p; | 4502 | key_stop = p; |
4439 | } | 4503 | } |
4440 | else if (!val_start) | 4504 | else if (!val_start) |
@@ -4479,10 +4543,10 @@ evas_textblock_style_set(Evas_Textblock_Style *ts, const char *text) | |||
4479 | tag = calloc(1, sizeof(Evas_Object_Style_Tag)); | 4543 | tag = calloc(1, sizeof(Evas_Object_Style_Tag)); |
4480 | if (tag) | 4544 | if (tag) |
4481 | { | 4545 | { |
4482 | tag->tag = tags; | 4546 | tag->tag.tag = tags; |
4483 | tag->replace = replaces; | 4547 | tag->tag.replace = replaces; |
4484 | tag->tag_len = tag_len; | 4548 | tag->tag.tag_len = tag_len; |
4485 | tag->replace_len = replace_len; | 4549 | tag->tag.replace_len = replace_len; |
4486 | ts->tags = (Evas_Object_Style_Tag *)eina_inlist_append(EINA_INLIST_GET(ts->tags), EINA_INLIST_GET(tag)); | 4550 | ts->tags = (Evas_Object_Style_Tag *)eina_inlist_append(EINA_INLIST_GET(ts->tags), EINA_INLIST_GET(tag)); |
4487 | } | 4551 | } |
4488 | else | 4552 | else |
@@ -4689,7 +4753,11 @@ _escaped_char_match(const char *s, int *adv) | |||
4689 | while ((*mc) && (*sc)) | 4753 | while ((*mc) && (*sc)) |
4690 | { | 4754 | { |
4691 | if ((unsigned char)*sc < (unsigned char)*mc) return NULL; | 4755 | if ((unsigned char)*sc < (unsigned char)*mc) return NULL; |
4692 | if (*sc != *mc) match = 0; | 4756 | if (*sc != *mc) |
4757 | { | ||
4758 | match = 0; | ||
4759 | break; | ||
4760 | } | ||
4693 | mc++; | 4761 | mc++; |
4694 | sc++; | 4762 | sc++; |
4695 | } | 4763 | } |
@@ -4723,7 +4791,7 @@ _escaped_char_get(const char *s, const char *s_end) | |||
4723 | int base = 10; | 4791 | int base = 10; |
4724 | s += 2; /* Skip "&#" */ | 4792 | s += 2; /* Skip "&#" */ |
4725 | 4793 | ||
4726 | if (tolower(*s) == 'x') | 4794 | if (tolower((unsigned char)(*s)) == 'x') |
4727 | { | 4795 | { |
4728 | s++; | 4796 | s++; |
4729 | base = 16; | 4797 | base = 16; |
@@ -4876,6 +4944,7 @@ evas_object_textblock_text_markup_prepend(Evas_Textblock_Cursor *cur, const char | |||
4876 | * NULL is reached. */ | 4944 | * NULL is reached. */ |
4877 | for (;;) | 4945 | for (;;) |
4878 | { | 4946 | { |
4947 | size_t text_len; | ||
4879 | /* If we got to the end of string or just finished/started tag | 4948 | /* If we got to the end of string or just finished/started tag |
4880 | * or escape sequence handling. */ | 4949 | * or escape sequence handling. */ |
4881 | if ((*p == 0) || | 4950 | if ((*p == 0) || |
@@ -4953,14 +5022,22 @@ evas_object_textblock_text_markup_prepend(Evas_Textblock_Cursor *cur, const char | |||
4953 | } | 5022 | } |
4954 | } | 5023 | } |
4955 | /* Unicode object replcament char */ | 5024 | /* Unicode object replcament char */ |
4956 | else if (!strncmp("\xEF\xBF\xBC", p, 3)) | 5025 | else if (!strncmp(_REPLACEMENT_CHAR_UTF8, p, |
5026 | text_len = strlen(_REPLACEMENT_CHAR_UTF8)) || | ||
5027 | !strncmp(_NEWLINE_UTF8, p, | ||
5028 | text_len = strlen(_NEWLINE_UTF8)) || | ||
5029 | !strncmp(_TAB_UTF8, p, | ||
5030 | text_len = strlen(_TAB_UTF8)) || | ||
5031 | !strncmp(_PARAGRAPH_SEPARATOR_UTF8, p, | ||
5032 | text_len = strlen(_PARAGRAPH_SEPARATOR_UTF8))) | ||
4957 | { | 5033 | { |
4958 | /*FIXME: currently just remove them, maybe do something | 5034 | /*FIXME: currently just remove them, maybe do something |
4959 | * fancier in the future, atm it breaks if this char | 5035 | * fancier in the future, atm it breaks if this char |
4960 | * is inside <> */ | 5036 | * is inside <> */ |
4961 | _prepend_text_run(cur, s, p); | 5037 | _prepend_text_run(cur, s, p); |
4962 | p += 2; /* it's also advanced later in this loop need +3 | 5038 | /* it's also advanced later in this loop need +text_len |
4963 | * in total*/ | 5039 | in total*/ |
5040 | p += text_len - 1; | ||
4964 | s = p + 1; /* One after the end of the replacement char */ | 5041 | s = p + 1; /* One after the end of the replacement char */ |
4965 | } | 5042 | } |
4966 | p++; | 5043 | p++; |
@@ -4979,19 +5056,19 @@ evas_object_textblock_text_markup_prepend(Evas_Textblock_Cursor *cur, const char | |||
4979 | * @param fnode the format node to process. | 5056 | * @param fnode the format node to process. |
4980 | */ | 5057 | */ |
4981 | static void | 5058 | static void |
4982 | _markup_get_format_append(Evas_Object_Textblock *o __UNUSED__, Eina_Strbuf *txt, Evas_Object_Textblock_Node_Format *fnode) | 5059 | _markup_get_format_append(Eina_Strbuf *txt, Evas_Object_Textblock_Node_Format *fnode) |
4983 | { | 5060 | { |
4984 | eina_strbuf_append_char(txt, '<'); | 5061 | eina_strbuf_append_char(txt, '<'); |
4985 | { | 5062 | { |
4986 | const char *s; | 5063 | const char *s; |
4987 | int pop = 0; | ||
4988 | 5064 | ||
4989 | // FIXME: need to escape | 5065 | // FIXME: need to escape |
4990 | s = fnode->orig_format; | 5066 | s = fnode->orig_format; |
4991 | if (*s == '-') pop = 1; | 5067 | if (!fnode->opener && !fnode->own_closer) |
4992 | while ((*s == ' ') || (*s == '+') || (*s == '-')) s++; | 5068 | eina_strbuf_append_char(txt, '/'); |
4993 | if (pop) eina_strbuf_append_char(txt, '/'); | ||
4994 | eina_strbuf_append(txt, s); | 5069 | eina_strbuf_append(txt, s); |
5070 | if (fnode->own_closer) | ||
5071 | eina_strbuf_append_char(txt, '/'); | ||
4995 | } | 5072 | } |
4996 | eina_strbuf_append_char(txt, '>'); | 5073 | eina_strbuf_append_char(txt, '>'); |
4997 | } | 5074 | } |
@@ -5061,7 +5138,7 @@ evas_object_textblock_text_markup_get(const Evas_Object *obj) | |||
5061 | tmp_ch = text[off]; | 5138 | tmp_ch = text[off]; |
5062 | text[off] = 0; /* Null terminate the part of the string */ | 5139 | text[off] = 0; /* Null terminate the part of the string */ |
5063 | _markup_get_text_append(txt, text); | 5140 | _markup_get_text_append(txt, text); |
5064 | _markup_get_format_append(o, txt, fnode); | 5141 | _markup_get_format_append(txt, fnode); |
5065 | text[off] = tmp_ch; /* Restore the char */ | 5142 | text[off] = tmp_ch; /* Restore the char */ |
5066 | text += off; | 5143 | text += off; |
5067 | if (fnode->visible) | 5144 | if (fnode->visible) |
@@ -5086,6 +5163,190 @@ evas_object_textblock_text_markup_get(const Evas_Object *obj) | |||
5086 | return o->markup_text; | 5163 | return o->markup_text; |
5087 | } | 5164 | } |
5088 | 5165 | ||
5166 | EAPI char * | ||
5167 | evas_textblock_text_markup_to_utf8(const Evas_Object *obj, const char *text) | ||
5168 | { | ||
5169 | /* FIXME: Redundant and awful, should be merged with markup_prepend */ | ||
5170 | Eina_Strbuf *sbuf; | ||
5171 | char *s, *p, *ret; | ||
5172 | char *tag_start, *tag_end, *esc_start, *esc_end; | ||
5173 | |||
5174 | if (!text) return NULL; | ||
5175 | |||
5176 | |||
5177 | tag_start = tag_end = esc_start = esc_end = NULL; | ||
5178 | sbuf = eina_strbuf_new(); | ||
5179 | p = (char *)text; | ||
5180 | s = p; | ||
5181 | /* This loop goes through all of the mark up text until it finds format | ||
5182 | * tags, escape sequences or the terminating NULL. When it finds either | ||
5183 | * of those, it appends the text found up until that point to the textblock | ||
5184 | * proccesses whatever found. It repeats itself until the termainating | ||
5185 | * NULL is reached. */ | ||
5186 | for (;;) | ||
5187 | { | ||
5188 | /* If we got to the end of string or just finished/started tag | ||
5189 | * or escape sequence handling. */ | ||
5190 | if ((*p == 0) || | ||
5191 | (tag_end) || (esc_end) || | ||
5192 | (tag_start) || (esc_start)) | ||
5193 | { | ||
5194 | if (tag_end) | ||
5195 | { | ||
5196 | /* If we reached to a tag ending, analyze the tag */ | ||
5197 | char *ttag; | ||
5198 | size_t ttag_len; | ||
5199 | |||
5200 | tag_start++; /* Skip the < */ | ||
5201 | tag_end--; /* Skip the > */ | ||
5202 | if ((tag_end > tag_start) && (*(tag_end - 1) == '/')) | ||
5203 | { | ||
5204 | tag_end --; /* Skip the terminating '/' */ | ||
5205 | while (*(tag_end - 1) == ' ') | ||
5206 | tag_end--; /* skip trailing ' ' */ | ||
5207 | } | ||
5208 | |||
5209 | ttag_len = tag_end - tag_start; | ||
5210 | |||
5211 | ttag = malloc(ttag_len + 1); | ||
5212 | if (ttag) | ||
5213 | { | ||
5214 | const char *match = NULL; | ||
5215 | size_t replace_len; | ||
5216 | memcpy(ttag, tag_start, ttag_len); | ||
5217 | ttag[ttag_len] = 0; | ||
5218 | |||
5219 | |||
5220 | if (obj) | ||
5221 | { | ||
5222 | match = _style_match_tag( | ||
5223 | evas_object_textblock_style_get(obj), | ||
5224 | ttag, ttag_len, &replace_len); | ||
5225 | } | ||
5226 | |||
5227 | if (!match) match = ttag; | ||
5228 | |||
5229 | if (_IS_PARAGRAPH_SEPARATOR_SIMPLE(match)) | ||
5230 | eina_strbuf_append(sbuf, _PARAGRAPH_SEPARATOR_UTF8); | ||
5231 | else if (_IS_LINE_SEPARATOR(match)) | ||
5232 | eina_strbuf_append(sbuf, _NEWLINE_UTF8); | ||
5233 | else if (_IS_TAB(match)) | ||
5234 | eina_strbuf_append(sbuf, _TAB_UTF8); | ||
5235 | else if (!strncmp(match, "item", 4)) | ||
5236 | eina_strbuf_append(sbuf, _REPLACEMENT_CHAR_UTF8); | ||
5237 | |||
5238 | free(ttag); | ||
5239 | } | ||
5240 | tag_start = tag_end = NULL; | ||
5241 | } | ||
5242 | else if (esc_end) | ||
5243 | { | ||
5244 | const char *escape; | ||
5245 | |||
5246 | escape = _escaped_char_get(esc_start, esc_end + 1); | ||
5247 | eina_strbuf_append(sbuf, escape); | ||
5248 | esc_start = esc_end = NULL; | ||
5249 | } | ||
5250 | else if (*p == 0) | ||
5251 | { | ||
5252 | eina_strbuf_append_length(sbuf, s, p - s); | ||
5253 | s = NULL; | ||
5254 | } | ||
5255 | if (*p == 0) | ||
5256 | break; | ||
5257 | } | ||
5258 | if (*p == '<') | ||
5259 | { | ||
5260 | if (!esc_start) | ||
5261 | { | ||
5262 | /* Append the text prior to this to the textblock and | ||
5263 | * mark the start of the tag */ | ||
5264 | tag_start = p; | ||
5265 | tag_end = NULL; | ||
5266 | eina_strbuf_append_length(sbuf, s, p - s); | ||
5267 | s = NULL; | ||
5268 | } | ||
5269 | } | ||
5270 | else if (*p == '>') | ||
5271 | { | ||
5272 | if (tag_start) | ||
5273 | { | ||
5274 | tag_end = p + 1; | ||
5275 | s = p + 1; | ||
5276 | } | ||
5277 | } | ||
5278 | else if (*p == '&') | ||
5279 | { | ||
5280 | if (!tag_start) | ||
5281 | { | ||
5282 | /* Append the text prior to this to the textblock and mark | ||
5283 | * the start of the escape sequence */ | ||
5284 | esc_start = p; | ||
5285 | esc_end = NULL; | ||
5286 | eina_strbuf_append_length(sbuf, s, p - s); | ||
5287 | s = NULL; | ||
5288 | } | ||
5289 | } | ||
5290 | else if (*p == ';') | ||
5291 | { | ||
5292 | if (esc_start) | ||
5293 | { | ||
5294 | esc_end = p; | ||
5295 | s = p + 1; | ||
5296 | } | ||
5297 | } | ||
5298 | p++; | ||
5299 | } | ||
5300 | |||
5301 | ret = eina_strbuf_string_steal(sbuf); | ||
5302 | eina_strbuf_free(sbuf); | ||
5303 | return ret; | ||
5304 | } | ||
5305 | |||
5306 | EAPI char * | ||
5307 | evas_textblock_text_utf8_to_markup(const Evas_Object *obj, const char *text) | ||
5308 | { | ||
5309 | Eina_Strbuf *sbuf; | ||
5310 | char *str = NULL; | ||
5311 | int ch, pos = 0, pos2 = 0; | ||
5312 | |||
5313 | (void) obj; | ||
5314 | |||
5315 | if (!text) return NULL; | ||
5316 | |||
5317 | sbuf = eina_strbuf_new(); | ||
5318 | |||
5319 | for (;;) | ||
5320 | { | ||
5321 | pos = pos2; | ||
5322 | pos2 = evas_string_char_next_get(text, pos2, &ch); | ||
5323 | if ((ch <= 0) || (pos2 <= 0)) break; | ||
5324 | |||
5325 | if (ch == _NEWLINE) | ||
5326 | eina_strbuf_append(sbuf, "<br/>"); | ||
5327 | else if (ch == _TAB) | ||
5328 | eina_strbuf_append(sbuf, "<tab/>"); | ||
5329 | else if (ch == '<') | ||
5330 | eina_strbuf_append(sbuf, "<"); | ||
5331 | else if (ch == '>') | ||
5332 | eina_strbuf_append(sbuf, ">"); | ||
5333 | else if (ch == '&') | ||
5334 | eina_strbuf_append(sbuf, "&"); | ||
5335 | else if (ch == _PARAGRAPH_SEPARATOR) | ||
5336 | eina_strbuf_append(sbuf, "<ps/>"); | ||
5337 | else if (ch == _REPLACEMENT_CHAR) | ||
5338 | eina_strbuf_append(sbuf, ""); | ||
5339 | else | ||
5340 | { | ||
5341 | eina_strbuf_append_length(sbuf, text + pos, pos2 - pos); | ||
5342 | } | ||
5343 | } | ||
5344 | str = eina_strbuf_string_steal(sbuf); | ||
5345 | eina_strbuf_free(sbuf); | ||
5346 | return str; | ||
5347 | |||
5348 | } | ||
5349 | |||
5089 | /* cursors */ | 5350 | /* cursors */ |
5090 | 5351 | ||
5091 | /** | 5352 | /** |
@@ -5453,15 +5714,13 @@ evas_textblock_node_format_remove_pair(Evas_Object *obj, | |||
5453 | { | 5714 | { |
5454 | const char *fstr = fmt->orig_format; | 5715 | const char *fstr = fmt->orig_format; |
5455 | 5716 | ||
5456 | if (fstr && (*fstr == '+')) | 5717 | if (fmt->opener && !fmt->own_closer) |
5457 | { | 5718 | { |
5458 | fstack = eina_list_prepend(fstack, fmt); | 5719 | fstack = eina_list_prepend(fstack, fmt); |
5459 | } | 5720 | } |
5460 | else if (fstr && (*fstr == '-')) | 5721 | else if (fstr && !fmt->opener) |
5461 | { | 5722 | { |
5462 | size_t fstr_len; | 5723 | size_t fstr_len; |
5463 | /* Skip the '-' */ | ||
5464 | fstr++; | ||
5465 | fstr_len = strlen(fstr); | 5724 | fstr_len = strlen(fstr); |
5466 | /* Generic popper, just pop */ | 5725 | /* Generic popper, just pop */ |
5467 | if (((fstr[0] == ' ') && !fstr[1]) || !fstr[0]) | 5726 | if (((fstr[0] == ' ') && !fstr[1]) || !fstr[0]) |
@@ -5708,6 +5967,111 @@ evas_textblock_cursor_format_prev(Evas_Textblock_Cursor *cur) | |||
5708 | return EINA_FALSE; | 5967 | return EINA_FALSE; |
5709 | } | 5968 | } |
5710 | 5969 | ||
5970 | #ifdef HAVE_LINEBREAK | ||
5971 | |||
5972 | /* BREAK_AFTER: true if we can break after the current char. | ||
5973 | * Both macros assume str[i] is not the terminating nul */ | ||
5974 | #define BREAK_AFTER(i) \ | ||
5975 | (breaks[i] == WORDBREAK_BREAK) | ||
5976 | |||
5977 | #else | ||
5978 | |||
5979 | #define BREAK_AFTER(i) \ | ||
5980 | ((!str[i + 1]) || \ | ||
5981 | (_is_white(str[i]) && !_is_white(str[i + 1])) || \ | ||
5982 | (!_is_white(str[i]) && _is_white(str[i + 1]))) | ||
5983 | |||
5984 | #endif | ||
5985 | |||
5986 | EAPI Eina_Bool | ||
5987 | evas_textblock_cursor_word_start(Evas_Textblock_Cursor *cur) | ||
5988 | { | ||
5989 | const Eina_Unicode *text; | ||
5990 | size_t i; | ||
5991 | #ifdef HAVE_LINEBREAK | ||
5992 | char *breaks; | ||
5993 | #endif | ||
5994 | |||
5995 | if (!cur) return EINA_FALSE; | ||
5996 | if (!cur->node) return EINA_FALSE; | ||
5997 | |||
5998 | text = eina_ustrbuf_string_get(cur->node->unicode); | ||
5999 | |||
6000 | #ifdef HAVE_LINEBREAK | ||
6001 | { | ||
6002 | const char *lang = ""; /* FIXME: get lang */ | ||
6003 | size_t len = eina_ustrbuf_length_get(cur->node->unicode); | ||
6004 | breaks = malloc(len); | ||
6005 | set_wordbreaks_utf32((const utf32_t *) text, len, lang, breaks); | ||
6006 | } | ||
6007 | #endif | ||
6008 | |||
6009 | i = cur->pos; | ||
6010 | |||
6011 | /* Skip the first one. This ensures we don't point to the nul, and also | ||
6012 | * we just don't care about it anyway. */ | ||
6013 | if (i > 0) i--; | ||
6014 | |||
6015 | for ( ; i > 0 ; i--) | ||
6016 | { | ||
6017 | if (BREAK_AFTER(i)) | ||
6018 | { | ||
6019 | /* Advance to the current char */ | ||
6020 | i++; | ||
6021 | break; | ||
6022 | } | ||
6023 | } | ||
6024 | |||
6025 | cur->pos = i; | ||
6026 | |||
6027 | #ifdef HAVE_LINEBREAK | ||
6028 | free(breaks); | ||
6029 | #endif | ||
6030 | return EINA_TRUE; | ||
6031 | } | ||
6032 | |||
6033 | EAPI Eina_Bool | ||
6034 | evas_textblock_cursor_word_end(Evas_Textblock_Cursor *cur) | ||
6035 | { | ||
6036 | const Eina_Unicode *text; | ||
6037 | size_t i; | ||
6038 | #ifdef HAVE_LINEBREAK | ||
6039 | char *breaks; | ||
6040 | #endif | ||
6041 | |||
6042 | if (!cur) return EINA_FALSE; | ||
6043 | if (!cur->node) return EINA_FALSE; | ||
6044 | |||
6045 | text = eina_ustrbuf_string_get(cur->node->unicode); | ||
6046 | |||
6047 | #ifdef HAVE_LINEBREAK | ||
6048 | { | ||
6049 | const char *lang = ""; /* FIXME: get lang */ | ||
6050 | size_t len = eina_ustrbuf_length_get(cur->node->unicode); | ||
6051 | breaks = malloc(len); | ||
6052 | set_wordbreaks_utf32((const utf32_t *) text, len, lang, breaks); | ||
6053 | } | ||
6054 | #endif | ||
6055 | |||
6056 | i = cur->pos; | ||
6057 | |||
6058 | for ( ; text[i] ; i++) | ||
6059 | { | ||
6060 | if (BREAK_AFTER(i)) | ||
6061 | { | ||
6062 | /* This is the one to break after. */ | ||
6063 | break; | ||
6064 | } | ||
6065 | } | ||
6066 | |||
6067 | cur->pos = i; | ||
6068 | |||
6069 | #ifdef HAVE_LINEBREAK | ||
6070 | free(breaks); | ||
6071 | #endif | ||
6072 | return EINA_TRUE;; | ||
6073 | } | ||
6074 | |||
5711 | EAPI Eina_Bool | 6075 | EAPI Eina_Bool |
5712 | evas_textblock_cursor_char_next(Evas_Textblock_Cursor *cur) | 6076 | evas_textblock_cursor_char_next(Evas_Textblock_Cursor *cur) |
5713 | { | 6077 | { |
@@ -5887,10 +6251,9 @@ _evas_textblock_format_is_visible(Evas_Object_Textblock_Node_Format *fnode, | |||
5887 | fnode->anchor = ANCHOR_NONE; | 6251 | fnode->anchor = ANCHOR_NONE; |
5888 | if (!s) return; | 6252 | if (!s) return; |
5889 | 6253 | ||
5890 | if (s[0] == '+' || s[0] == '-') | 6254 | if (!fnode->own_closer) |
5891 | { | 6255 | { |
5892 | is_opener = (s[0] == '+'); | 6256 | is_opener = fnode->opener; |
5893 | s++; | ||
5894 | fnode->format_change = EINA_TRUE; | 6257 | fnode->format_change = EINA_TRUE; |
5895 | } | 6258 | } |
5896 | 6259 | ||
@@ -5902,6 +6265,8 @@ _evas_textblock_format_is_visible(Evas_Object_Textblock_Node_Format *fnode, | |||
5902 | * closing */ | 6265 | * closing */ |
5903 | if ((!strncmp(item, "\n", itlen) || !strncmp(item, "\\n", itlen)) || | 6266 | if ((!strncmp(item, "\n", itlen) || !strncmp(item, "\\n", itlen)) || |
5904 | (!strncmp(item, "\t", itlen) || !strncmp(item, "\\t", itlen)) || | 6267 | (!strncmp(item, "\t", itlen) || !strncmp(item, "\\t", itlen)) || |
6268 | (!strncmp(item, "br", itlen) && (itlen >= 2)) || | ||
6269 | (!strncmp(item, "tab", itlen) && (itlen >= 3)) || | ||
5905 | (!strncmp(item, "ps", itlen) && (itlen >= 2)) || | 6270 | (!strncmp(item, "ps", itlen) && (itlen >= 2)) || |
5906 | (!strncmp(item, "item", itlen) && (itlen >= 4) && is_opener)) | 6271 | (!strncmp(item, "item", itlen) && (itlen >= 4) && is_opener)) |
5907 | { | 6272 | { |
@@ -5986,19 +6351,17 @@ _evas_textblock_node_format_remove_matching(Evas_Object_Textblock *o, | |||
5986 | } | 6351 | } |
5987 | 6352 | ||
5988 | 6353 | ||
5989 | if (fstr && (*fstr == '+')) | 6354 | if (fmt->opener && !fmt->own_closer) |
5990 | { | 6355 | { |
5991 | formats = eina_list_prepend(formats, fmt); | 6356 | formats = eina_list_prepend(formats, fmt); |
5992 | } | 6357 | } |
5993 | else if (fstr && (*fstr == '-')) | 6358 | else if (fstr && !fmt->opener) |
5994 | { | 6359 | { |
5995 | Evas_Object_Textblock_Node_Format *fnode; | 6360 | Evas_Object_Textblock_Node_Format *fnode; |
5996 | size_t fstr_len; | 6361 | size_t fstr_len; |
5997 | /* Skip the '-' */ | ||
5998 | fstr++; | ||
5999 | fstr_len = strlen(fstr); | 6362 | fstr_len = strlen(fstr); |
6000 | /* Generic popper, just pop */ | 6363 | /* Generic popper, just pop (if there's anything to pop). */ |
6001 | if (((fstr[0] == ' ') && !fstr[1]) || !fstr[0]) | 6364 | if (formats && (((fstr[0] == ' ') && !fstr[1]) || !fstr[0])) |
6002 | { | 6365 | { |
6003 | fnode = eina_list_data_get(formats); | 6366 | fnode = eina_list_data_get(formats); |
6004 | formats = eina_list_remove_list(formats, formats); | 6367 | formats = eina_list_remove_list(formats, formats); |
@@ -6855,6 +7218,7 @@ _evas_textblock_node_format_new(Evas_Object_Textblock *o, const char *_format) | |||
6855 | { | 7218 | { |
6856 | Evas_Object_Textblock_Node_Format *n; | 7219 | Evas_Object_Textblock_Node_Format *n; |
6857 | const char *format = _format; | 7220 | const char *format = _format; |
7221 | const char *pre_stripped_format = NULL; | ||
6858 | 7222 | ||
6859 | n = calloc(1, sizeof(Evas_Object_Textblock_Node_Format)); | 7223 | n = calloc(1, sizeof(Evas_Object_Textblock_Node_Format)); |
6860 | /* Create orig_format and format */ | 7224 | /* Create orig_format and format */ |
@@ -6866,62 +7230,80 @@ _evas_textblock_node_format_new(Evas_Object_Textblock *o, const char *_format) | |||
6866 | 7230 | ||
6867 | format++; /* Advance after '<' */ | 7231 | format++; /* Advance after '<' */ |
6868 | format_len = strlen(format); | 7232 | format_len = strlen(format); |
6869 | if (format[format_len - 1] == '>') | 7233 | if ((format_len > 0) && format[format_len - 1] == '>') |
6870 | format_len--; /* We don't care about '>' */ | 7234 | { |
7235 | format_len--; /* We don't care about '>' */ | ||
7236 | /* Check if it closes itself. Skip the </> case. */ | ||
7237 | if ((format_len > 1) && format[format_len - 1] == '/') | ||
7238 | { | ||
7239 | format_len--; /* We don't care about '/' */ | ||
7240 | n->own_closer = EINA_TRUE; | ||
7241 | } | ||
7242 | } | ||
6871 | 7243 | ||
6872 | match = _style_match_tag(o->style, format, format_len, &replace_len); | 7244 | match = _style_match_tag(o->style, format, format_len, &replace_len); |
6873 | if (match) | 7245 | if (match) |
6874 | { | 7246 | { |
6875 | if ((match[0] == '+') || (match[0] == '-')) | 7247 | if (match[0] != '-') |
6876 | { | ||
6877 | char *norm_format; | ||
6878 | norm_format = malloc(format_len + 2 + 1); | ||
6879 | memcpy(norm_format, match, 2); | ||
6880 | memcpy(norm_format + 2, format, format_len); | ||
6881 | norm_format[format_len + 2] = '\0'; | ||
6882 | n->orig_format = | ||
6883 | eina_stringshare_add_length(norm_format, format_len + 2); | ||
6884 | free(norm_format); | ||
6885 | } | ||
6886 | else | ||
6887 | { | 7248 | { |
6888 | n->orig_format = | 7249 | n->opener = EINA_TRUE; |
6889 | eina_stringshare_add_length(format, format_len); | 7250 | if (match[0] != '+') |
7251 | { | ||
7252 | n->own_closer = EINA_TRUE; | ||
7253 | } | ||
6890 | } | 7254 | } |
6891 | n->format = eina_stringshare_add(match); | 7255 | |
7256 | pre_stripped_format = match; | ||
6892 | } | 7257 | } |
6893 | else | 7258 | else |
6894 | { | 7259 | { |
6895 | char *norm_format; | 7260 | if (format[0] == '/') |
6896 | |||
6897 | norm_format = malloc(format_len + 2 + 1); | ||
6898 | if (norm_format) | ||
6899 | { | 7261 | { |
6900 | if (format[0] == '/') | 7262 | format++; |
6901 | { | 7263 | format_len--; |
6902 | memcpy(norm_format, "- ", 2); | 7264 | } |
6903 | memcpy(norm_format + 2, format + 1, format_len - 1); | 7265 | else |
6904 | norm_format[format_len + 2 - 1] = '\0'; | 7266 | { |
6905 | } | 7267 | n->opener = EINA_TRUE; |
6906 | else | ||
6907 | { | ||
6908 | memcpy(norm_format, "+ ", 2); | ||
6909 | memcpy(norm_format + 2, format, format_len); | ||
6910 | norm_format[format_len + 2] = '\0'; | ||
6911 | } | ||
6912 | n->orig_format = eina_stringshare_add(norm_format); | ||
6913 | free(norm_format); | ||
6914 | } | 7268 | } |
6915 | n->format = eina_stringshare_ref(n->orig_format); | ||
6916 | } | 7269 | } |
7270 | |||
7271 | n->orig_format = eina_stringshare_add_length(format, format_len); | ||
7272 | |||
7273 | if (!pre_stripped_format) | ||
7274 | pre_stripped_format = n->orig_format; | ||
6917 | } | 7275 | } |
6918 | /* Just use as is, it's a special format. */ | 7276 | /* Just use as is, it's a special format. */ |
6919 | else | 7277 | else |
6920 | { | 7278 | { |
6921 | n->orig_format = eina_stringshare_add(format); | 7279 | const char *tmp = format; |
6922 | n->format = eina_stringshare_ref(n->orig_format); | 7280 | if (format[0] != '-') |
7281 | { | ||
7282 | n->opener = EINA_TRUE; | ||
7283 | if (format[0] != '+') | ||
7284 | { | ||
7285 | n->own_closer = EINA_TRUE; | ||
7286 | } | ||
7287 | } | ||
7288 | if ((*tmp == '+') || (*tmp == '-')) | ||
7289 | { | ||
7290 | tmp++; | ||
7291 | while (*tmp == ' ') tmp++; | ||
7292 | } | ||
7293 | n->orig_format = eina_stringshare_add(tmp); | ||
7294 | pre_stripped_format = n->orig_format; | ||
6923 | } | 7295 | } |
6924 | 7296 | ||
7297 | /* Strip format */ | ||
7298 | { | ||
7299 | const char *tmp = pre_stripped_format; | ||
7300 | if ((*tmp == '+') || (*tmp == '-')) | ||
7301 | { | ||
7302 | tmp++; | ||
7303 | while (*tmp == ' ') tmp++; | ||
7304 | } | ||
7305 | n->format = eina_stringshare_add(tmp); | ||
7306 | } | ||
6925 | format = n->format; | 7307 | format = n->format; |
6926 | 7308 | ||
6927 | _evas_textblock_format_is_visible(n, format); | 7309 | _evas_textblock_format_is_visible(n, format); |
@@ -7051,11 +7433,11 @@ evas_textblock_cursor_format_append(Evas_Textblock_Cursor *cur, const char *form | |||
7051 | if (_IS_PARAGRAPH_SEPARATOR(o, format)) | 7433 | if (_IS_PARAGRAPH_SEPARATOR(o, format)) |
7052 | insert_char = _PARAGRAPH_SEPARATOR; | 7434 | insert_char = _PARAGRAPH_SEPARATOR; |
7053 | else if (_IS_LINE_SEPARATOR(format)) | 7435 | else if (_IS_LINE_SEPARATOR(format)) |
7054 | insert_char = '\n'; | 7436 | insert_char = _NEWLINE; |
7055 | else if (_IS_TAB(format)) | 7437 | else if (_IS_TAB(format)) |
7056 | insert_char = '\t'; | 7438 | insert_char = _TAB; |
7057 | else | 7439 | else |
7058 | insert_char = EVAS_TEXTBLOCK_REPLACEMENT_CHAR; | 7440 | insert_char = _REPLACEMENT_CHAR; |
7059 | 7441 | ||
7060 | eina_ustrbuf_insert_char(cur->node->unicode, insert_char, cur->pos); | 7442 | eina_ustrbuf_insert_char(cur->node->unicode, insert_char, cur->pos); |
7061 | 7443 | ||
@@ -7142,7 +7524,7 @@ evas_textblock_cursor_char_delete(Evas_Textblock_Cursor *cur) | |||
7142 | should_merge = EINA_TRUE; | 7524 | should_merge = EINA_TRUE; |
7143 | } | 7525 | } |
7144 | /* If a singnular, mark as invisible, so we'll delete it. */ | 7526 | /* If a singnular, mark as invisible, so we'll delete it. */ |
7145 | if (!format || ((*format != '+') && (*format != '-'))) | 7527 | if (!format || last_fmt->own_closer) |
7146 | { | 7528 | { |
7147 | last_fmt->visible = EINA_FALSE; | 7529 | last_fmt->visible = EINA_FALSE; |
7148 | } | 7530 | } |
@@ -7271,60 +7653,40 @@ evas_textblock_cursor_range_delete(Evas_Textblock_Cursor *cur1, Evas_Textblock_C | |||
7271 | EAPI char * | 7653 | EAPI char * |
7272 | evas_textblock_cursor_content_get(const Evas_Textblock_Cursor *cur) | 7654 | evas_textblock_cursor_content_get(const Evas_Textblock_Cursor *cur) |
7273 | { | 7655 | { |
7274 | const Eina_Unicode *ustr; | ||
7275 | Eina_Unicode buf[2]; | ||
7276 | char *s; | ||
7277 | if (!cur || !cur->node) return NULL; | 7656 | if (!cur || !cur->node) return NULL; |
7278 | if (evas_textblock_cursor_format_is_visible_get(cur)) | 7657 | if (evas_textblock_cursor_format_is_visible_get(cur)) |
7279 | { | 7658 | { |
7280 | size_t len; | 7659 | Eina_Strbuf *buf; |
7281 | const char *fstr; | 7660 | Evas_Object_Textblock_Node_Format *fnode; |
7282 | char *ret; | 7661 | char *ret; |
7283 | int pop = 0; | 7662 | fnode = _evas_textblock_node_visible_at_pos_get( |
7284 | fstr = evas_textblock_node_format_text_get( | 7663 | evas_textblock_cursor_format_get(cur)); |
7285 | _evas_textblock_node_visible_at_pos_get( | ||
7286 | evas_textblock_cursor_format_get(cur))); | ||
7287 | |||
7288 | if (!fstr) | ||
7289 | return NULL; | ||
7290 | 7664 | ||
7291 | if (*fstr == '-') pop = 1; | 7665 | buf = eina_strbuf_new(); |
7292 | while ((*fstr == ' ') || (*fstr == '+') || (*fstr == '-')) fstr++; | 7666 | _markup_get_format_append(buf, fnode); |
7293 | len = strlen(fstr); | 7667 | ret = eina_strbuf_string_steal(buf); |
7294 | 7668 | eina_strbuf_free(buf); | |
7295 | { | ||
7296 | char *tmp; | ||
7297 | if (pop) | ||
7298 | { | ||
7299 | ret = tmp = malloc(len + 3 + 1); /* </> and the null */ | ||
7300 | memcpy(tmp, "</", 2); | ||
7301 | tmp += 2; | ||
7302 | } | ||
7303 | else | ||
7304 | { | ||
7305 | ret = tmp = malloc(len + 2 + 1); /* <> and the null */ | ||
7306 | *tmp = '<'; | ||
7307 | tmp++; | ||
7308 | } | ||
7309 | memcpy(tmp, fstr, len); | ||
7310 | memcpy(tmp + len, ">", 2); /* Including the null */ | ||
7311 | } | ||
7312 | 7669 | ||
7313 | return ret; | 7670 | return ret; |
7314 | } | 7671 | } |
7672 | else | ||
7673 | { | ||
7674 | const Eina_Unicode *ustr; | ||
7675 | Eina_Unicode buf[2]; | ||
7676 | char *s; | ||
7315 | 7677 | ||
7316 | ustr = eina_ustrbuf_string_get(cur->node->unicode); | 7678 | ustr = eina_ustrbuf_string_get(cur->node->unicode); |
7317 | buf[0] = ustr[cur->pos]; | 7679 | buf[0] = ustr[cur->pos]; |
7318 | buf[1] = 0; | 7680 | buf[1] = 0; |
7319 | s = eina_unicode_unicode_to_utf8(buf, NULL); | 7681 | s = eina_unicode_unicode_to_utf8(buf, NULL); |
7320 | 7682 | ||
7321 | return s; | 7683 | return s; |
7684 | } | ||
7322 | } | 7685 | } |
7323 | 7686 | ||
7324 | static char * | 7687 | static char * |
7325 | _evas_textblock_cursor_range_text_markup_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *_cur2) | 7688 | _evas_textblock_cursor_range_text_markup_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *_cur2) |
7326 | { | 7689 | { |
7327 | Evas_Object_Textblock *o; | ||
7328 | Evas_Object_Textblock_Node_Text *tnode; | 7690 | Evas_Object_Textblock_Node_Text *tnode; |
7329 | Eina_Strbuf *buf; | 7691 | Eina_Strbuf *buf; |
7330 | Evas_Textblock_Cursor *cur2; | 7692 | Evas_Textblock_Cursor *cur2; |
@@ -7333,7 +7695,6 @@ _evas_textblock_cursor_range_text_markup_get(const Evas_Textblock_Cursor *cur1, | |||
7333 | if (!cur1 || !cur1->node) return NULL; | 7695 | if (!cur1 || !cur1->node) return NULL; |
7334 | if (!_cur2 || !_cur2->node) return NULL; | 7696 | if (!_cur2 || !_cur2->node) return NULL; |
7335 | if (cur1->obj != _cur2->obj) return NULL; | 7697 | if (cur1->obj != _cur2->obj) return NULL; |
7336 | o = (Evas_Object_Textblock *)(cur1->obj->object_data); | ||
7337 | if (evas_textblock_cursor_compare(cur1, _cur2) > 0) | 7698 | if (evas_textblock_cursor_compare(cur1, _cur2) > 0) |
7338 | { | 7699 | { |
7339 | const Evas_Textblock_Cursor *tc; | 7700 | const Evas_Textblock_Cursor *tc; |
@@ -7401,7 +7762,7 @@ _evas_textblock_cursor_range_text_markup_get(const Evas_Textblock_Cursor *cur1, | |||
7401 | tmp_ch = text[off]; | 7762 | tmp_ch = text[off]; |
7402 | text[off] = 0; /* Null terminate the part of the string */ | 7763 | text[off] = 0; /* Null terminate the part of the string */ |
7403 | _markup_get_text_append(buf, text); | 7764 | _markup_get_text_append(buf, text); |
7404 | _markup_get_format_append(o, buf, fnode); | 7765 | _markup_get_format_append(buf, fnode); |
7405 | text[off] = tmp_ch; /* Restore the char */ | 7766 | text[off] = tmp_ch; /* Restore the char */ |
7406 | text += off; | 7767 | text += off; |
7407 | if (fnode->visible) | 7768 | if (fnode->visible) |
@@ -7623,8 +7984,27 @@ evas_textblock_cursor_format_get(const Evas_Textblock_Cursor *cur) | |||
7623 | EAPI const char * | 7984 | EAPI const char * |
7624 | evas_textblock_node_format_text_get(const Evas_Object_Textblock_Node_Format *fmt) | 7985 | evas_textblock_node_format_text_get(const Evas_Object_Textblock_Node_Format *fmt) |
7625 | { | 7986 | { |
7987 | static char *ret = NULL; | ||
7988 | char *tmp; | ||
7989 | |||
7626 | if (!fmt) return NULL; | 7990 | if (!fmt) return NULL; |
7627 | return fmt->orig_format; | 7991 | |
7992 | if (ret) free(ret); | ||
7993 | ret = malloc(strlen(fmt->orig_format) + 2 + 1); | ||
7994 | tmp = ret; | ||
7995 | |||
7996 | if (fmt->opener && !fmt->own_closer) | ||
7997 | { | ||
7998 | *(tmp++) = '+'; | ||
7999 | *(tmp++) = ' '; | ||
8000 | } | ||
8001 | else if (!fmt->opener) | ||
8002 | { | ||
8003 | *(tmp++) = '-'; | ||
8004 | *(tmp++) = ' '; | ||
8005 | } | ||
8006 | strcpy(tmp, fmt->orig_format); | ||
8007 | return ret; | ||
7628 | } | 8008 | } |
7629 | 8009 | ||
7630 | EAPI void | 8010 | EAPI void |
@@ -7673,7 +8053,9 @@ evas_textblock_cursor_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord | |||
7673 | * the position of the previous */ | 8053 | * the position of the previous */ |
7674 | if ((cur->pos > 0) && !_evas_textblock_cursor_is_at_the_end(cur)) | 8054 | if ((cur->pos > 0) && !_evas_textblock_cursor_is_at_the_end(cur)) |
7675 | { | 8055 | { |
8056 | #ifdef BIDI_SUPPORT | ||
7676 | Eina_Bool before_char = EINA_FALSE; | 8057 | Eina_Bool before_char = EINA_FALSE; |
8058 | #endif | ||
7677 | cur2.obj = cur->obj; | 8059 | cur2.obj = cur->obj; |
7678 | evas_textblock_cursor_copy(cur, &cur2); | 8060 | evas_textblock_cursor_copy(cur, &cur2); |
7679 | evas_textblock_cursor_char_prev(&cur2); | 8061 | evas_textblock_cursor_char_prev(&cur2); |
@@ -7683,12 +8065,16 @@ evas_textblock_cursor_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord | |||
7683 | if (!fmt || !_IS_LINE_SEPARATOR(fmt->format)) | 8065 | if (!fmt || !_IS_LINE_SEPARATOR(fmt->format)) |
7684 | { | 8066 | { |
7685 | dir_cur = &cur2; | 8067 | dir_cur = &cur2; |
8068 | #ifdef BIDI_SUPPORT | ||
7686 | before_char = EINA_FALSE; | 8069 | before_char = EINA_FALSE; |
8070 | #endif | ||
7687 | } | 8071 | } |
8072 | #ifdef BIDI_SUPPORT | ||
7688 | else | 8073 | else |
7689 | { | 8074 | { |
7690 | before_char = EINA_TRUE; | 8075 | before_char = EINA_TRUE; |
7691 | } | 8076 | } |
8077 | #endif | ||
7692 | ret = evas_textblock_cursor_pen_geometry_get( | 8078 | ret = evas_textblock_cursor_pen_geometry_get( |
7693 | dir_cur, &x, &y, &w, &h); | 8079 | dir_cur, &x, &y, &w, &h); |
7694 | #ifdef BIDI_SUPPORT | 8080 | #ifdef BIDI_SUPPORT |
@@ -8788,6 +9174,7 @@ evas_object_textblock_init(Evas_Object *obj) | |||
8788 | { | 9174 | { |
8789 | linebreak_init = EINA_TRUE; | 9175 | linebreak_init = EINA_TRUE; |
8790 | init_linebreak(); | 9176 | init_linebreak(); |
9177 | init_wordbreak(); | ||
8791 | } | 9178 | } |
8792 | #endif | 9179 | #endif |
8793 | 9180 | ||
diff --git a/libraries/evas/src/lib/canvas/evas_render.c b/libraries/evas/src/lib/canvas/evas_render.c index 0abee97..cdedaec 100644 --- a/libraries/evas/src/lib/canvas/evas_render.c +++ b/libraries/evas/src/lib/canvas/evas_render.c | |||
@@ -1139,7 +1139,7 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface, | |||
1139 | } | 1139 | } |
1140 | } | 1140 | } |
1141 | } | 1141 | } |
1142 | if (surface == e->engine.data.output) | 1142 | // if (surface == e->engine.data.output) |
1143 | e->engine.func->context_clip_clip(e->engine.data.output, | 1143 | e->engine.func->context_clip_clip(e->engine.data.output, |
1144 | e->engine.data.context, | 1144 | e->engine.data.context, |
1145 | ecx, ecy, ecw, ech); | 1145 | ecx, ecy, ecw, ech); |
@@ -1360,6 +1360,8 @@ evas_render_updates_internal(Evas *e, | |||
1360 | 1360 | ||
1361 | RD("[--- RENDER EVAS (size: %ix%i)\n", e->viewport.w, e->viewport.h); | 1361 | RD("[--- RENDER EVAS (size: %ix%i)\n", e->viewport.w, e->viewport.h); |
1362 | 1362 | ||
1363 | evas_event_callback_call(e, EVAS_CALLBACK_RENDER_PRE, NULL); | ||
1364 | |||
1363 | /* Check if the modified object mean recalculating every thing */ | 1365 | /* Check if the modified object mean recalculating every thing */ |
1364 | if (!e->invalidate) | 1366 | if (!e->invalidate) |
1365 | _evas_render_check_pending_objects(&e->pending_objects, e); | 1367 | _evas_render_check_pending_objects(&e->pending_objects, e); |
@@ -1399,6 +1401,7 @@ evas_render_updates_internal(Evas *e, | |||
1399 | _evas_render_prev_cur_clip_cache_add(e, obj); | 1401 | _evas_render_prev_cur_clip_cache_add(e, obj); |
1400 | } | 1402 | } |
1401 | eina_array_clean(&e->restack_objects); | 1403 | eina_array_clean(&e->restack_objects); |
1404 | |||
1402 | /* phase 3. add exposes */ | 1405 | /* phase 3. add exposes */ |
1403 | EINA_LIST_FREE(e->damages, r) | 1406 | EINA_LIST_FREE(e->damages, r) |
1404 | { | 1407 | { |
@@ -1406,7 +1409,20 @@ evas_render_updates_internal(Evas *e, | |||
1406 | r->x, r->y, r->w, r->h); | 1409 | r->x, r->y, r->w, r->h); |
1407 | eina_rectangle_free(r); | 1410 | eina_rectangle_free(r); |
1408 | } | 1411 | } |
1409 | /* phase 4. output & viewport changes */ | 1412 | |
1413 | /* phase 4. framespace, output & viewport changes */ | ||
1414 | if (e->framespace.changed) | ||
1415 | { | ||
1416 | int fx, fy, fw, fh; | ||
1417 | |||
1418 | fx = e->viewport.x - e->framespace.x; | ||
1419 | fy = e->viewport.y - e->framespace.y; | ||
1420 | fw = e->viewport.w + e->framespace.w; | ||
1421 | fh = e->viewport.h + e->framespace.h; | ||
1422 | e->engine.func->output_redraws_rect_add(e->engine.data.output, | ||
1423 | fx, fy, fw, fh); | ||
1424 | } | ||
1425 | |||
1410 | if (e->viewport.changed) | 1426 | if (e->viewport.changed) |
1411 | { | 1427 | { |
1412 | e->engine.func->output_redraws_rect_add(e->engine.data.output, | 1428 | e->engine.func->output_redraws_rect_add(e->engine.data.output, |
@@ -1431,6 +1447,7 @@ evas_render_updates_internal(Evas *e, | |||
1431 | 0, 0, | 1447 | 0, 0, |
1432 | e->output.w, e->output.h); | 1448 | e->output.w, e->output.h); |
1433 | } | 1449 | } |
1450 | |||
1434 | /* phase 5. add obscures */ | 1451 | /* phase 5. add obscures */ |
1435 | EINA_LIST_FOREACH(e->obscures, ll, r) | 1452 | EINA_LIST_FOREACH(e->obscures, ll, r) |
1436 | { | 1453 | { |
@@ -1562,13 +1579,6 @@ evas_render_updates_internal(Evas *e, | |||
1562 | else | 1579 | else |
1563 | e->engine.func->context_mask_unset(e->engine.data.output, | 1580 | e->engine.func->context_mask_unset(e->engine.data.output, |
1564 | e->engine.data.context); | 1581 | e->engine.data.context); |
1565 | if (obj->cur.clipper) | ||
1566 | e->engine.func->context_clip_set(e->engine.data.output, | ||
1567 | e->engine.data.context, | ||
1568 | x, y, w, h); | ||
1569 | else | ||
1570 | e->engine.func->context_clip_unset(e->engine.data.output, | ||
1571 | e->engine.data.context); | ||
1572 | #if 1 /* FIXME: this can slow things down... figure out optimum... coverage */ | 1582 | #if 1 /* FIXME: this can slow things down... figure out optimum... coverage */ |
1573 | for (j = offset; j < e->temporary_objects.count; ++j) | 1583 | for (j = offset; j < e->temporary_objects.count; ++j) |
1574 | { | 1584 | { |
@@ -1671,6 +1681,7 @@ evas_render_updates_internal(Evas *e, | |||
1671 | e->changed = 0; | 1681 | e->changed = 0; |
1672 | e->viewport.changed = 0; | 1682 | e->viewport.changed = 0; |
1673 | e->output.changed = 0; | 1683 | e->output.changed = 0; |
1684 | e->framespace.changed = 0; | ||
1674 | e->invalidate = 0; | 1685 | e->invalidate = 0; |
1675 | 1686 | ||
1676 | /* If their are some object to restack or some object to delete, | 1687 | /* If their are some object to restack or some object to delete, |
@@ -1686,6 +1697,8 @@ evas_render_updates_internal(Evas *e, | |||
1686 | } | 1697 | } |
1687 | 1698 | ||
1688 | evas_module_clean(); | 1699 | evas_module_clean(); |
1700 | |||
1701 | evas_event_callback_call(e, EVAS_CALLBACK_RENDER_POST, NULL); | ||
1689 | 1702 | ||
1690 | RD("---]\n"); | 1703 | RD("---]\n"); |
1691 | 1704 | ||
diff --git a/libraries/evas/src/lib/cserve/Makefile.in b/libraries/evas/src/lib/cserve/Makefile.in index 74b5ff9..7599ca2 100644 --- a/libraries/evas/src/lib/cserve/Makefile.in +++ b/libraries/evas/src/lib/cserve/Makefile.in | |||
@@ -198,8 +198,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
198 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 198 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
199 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 199 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
200 | PKG_CONFIG = @PKG_CONFIG@ | 200 | PKG_CONFIG = @PKG_CONFIG@ |
201 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
202 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
203 | PNG_CFLAGS = @PNG_CFLAGS@ | 201 | PNG_CFLAGS = @PNG_CFLAGS@ |
204 | PNG_LIBS = @PNG_LIBS@ | 202 | PNG_LIBS = @PNG_LIBS@ |
205 | RANLIB = @RANLIB@ | 203 | RANLIB = @RANLIB@ |
@@ -216,6 +214,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
216 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 214 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
217 | VERSION = @VERSION@ | 215 | VERSION = @VERSION@ |
218 | VMAJ = @VMAJ@ | 216 | VMAJ = @VMAJ@ |
217 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
218 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
219 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 219 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
220 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 220 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
221 | XCB_CFLAGS = @XCB_CFLAGS@ | 221 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -297,6 +297,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
297 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 297 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
298 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 298 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
299 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 299 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
300 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
301 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
302 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
303 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
300 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 304 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
301 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 305 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
302 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 306 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/engines/Makefile.in b/libraries/evas/src/lib/engines/Makefile.in index 12e28c1..4c3c1da 100644 --- a/libraries/evas/src/lib/engines/Makefile.in +++ b/libraries/evas/src/lib/engines/Makefile.in | |||
@@ -208,8 +208,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
208 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 208 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
209 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 209 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
210 | PKG_CONFIG = @PKG_CONFIG@ | 210 | PKG_CONFIG = @PKG_CONFIG@ |
211 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
212 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
213 | PNG_CFLAGS = @PNG_CFLAGS@ | 211 | PNG_CFLAGS = @PNG_CFLAGS@ |
214 | PNG_LIBS = @PNG_LIBS@ | 212 | PNG_LIBS = @PNG_LIBS@ |
215 | RANLIB = @RANLIB@ | 213 | RANLIB = @RANLIB@ |
@@ -226,6 +224,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
226 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 224 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
227 | VERSION = @VERSION@ | 225 | VERSION = @VERSION@ |
228 | VMAJ = @VMAJ@ | 226 | VMAJ = @VMAJ@ |
227 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
228 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
229 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 229 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
230 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 230 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
231 | XCB_CFLAGS = @XCB_CFLAGS@ | 231 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -307,6 +307,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
307 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 307 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
308 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 308 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
309 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 309 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
310 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
311 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
312 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
313 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
310 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 314 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
311 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 315 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
312 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 316 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/engines/common/Makefile.in b/libraries/evas/src/lib/engines/common/Makefile.in index b0162df..7d1f20a 100644 --- a/libraries/evas/src/lib/engines/common/Makefile.in +++ b/libraries/evas/src/lib/engines/common/Makefile.in | |||
@@ -252,8 +252,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
252 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 252 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
253 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 253 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
254 | PKG_CONFIG = @PKG_CONFIG@ | 254 | PKG_CONFIG = @PKG_CONFIG@ |
255 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
256 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
257 | PNG_CFLAGS = @PNG_CFLAGS@ | 255 | PNG_CFLAGS = @PNG_CFLAGS@ |
258 | PNG_LIBS = @PNG_LIBS@ | 256 | PNG_LIBS = @PNG_LIBS@ |
259 | RANLIB = @RANLIB@ | 257 | RANLIB = @RANLIB@ |
@@ -270,6 +268,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
270 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 268 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
271 | VERSION = @VERSION@ | 269 | VERSION = @VERSION@ |
272 | VMAJ = @VMAJ@ | 270 | VMAJ = @VMAJ@ |
271 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
272 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
273 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 273 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
274 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 274 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
275 | XCB_CFLAGS = @XCB_CFLAGS@ | 275 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -351,6 +351,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
351 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 351 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
352 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 352 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
353 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 353 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
354 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
355 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
356 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
357 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
354 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 358 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
355 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 359 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
356 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 360 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/engines/common/evas_convert_rgb_16.c b/libraries/evas/src/lib/engines/common/evas_convert_rgb_16.c index b30ec1e..796ff17 100644 --- a/libraries/evas/src/lib/engines/common/evas_convert_rgb_16.c +++ b/libraries/evas/src/lib/engines/common/evas_convert_rgb_16.c | |||
@@ -117,7 +117,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_565_dith (DATA32 *src, DATA8 *dst, int sr | |||
117 | } | 117 | } |
118 | #endif | 118 | #endif |
119 | return; | 119 | return; |
120 | pal = 0; | 120 | (void)pal; |
121 | #else | 121 | #else |
122 | DATA16 *d = (DATA16 *)dst; | 122 | DATA16 *d = (DATA16 *)dst; |
123 | int w0 = w; | 123 | int w0 = w; |
@@ -144,7 +144,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_565_dith (DATA32 *src, DATA8 *dst, int sr | |||
144 | d += dst_jump; | 144 | d += dst_jump; |
145 | } | 145 | } |
146 | return; | 146 | return; |
147 | pal = 0; | 147 | (void)pal; |
148 | #endif | 148 | #endif |
149 | } | 149 | } |
150 | #endif | 150 | #endif |
@@ -216,7 +216,7 @@ evas_common_convert_rgba_to_16bpp_rgb_565_dith (DATA32 *src, DATA8 *dst, int src | |||
216 | } | 216 | } |
217 | #endif | 217 | #endif |
218 | return; | 218 | return; |
219 | pal = 0; | 219 | (void)pal; |
220 | #else | 220 | #else |
221 | DATA16 *d = (DATA16 *)dst; | 221 | DATA16 *d = (DATA16 *)dst; |
222 | int w0 = w; | 222 | int w0 = w; |
@@ -233,7 +233,7 @@ evas_common_convert_rgba_to_16bpp_rgb_565_dith (DATA32 *src, DATA8 *dst, int src | |||
233 | d += dst_jump; | 233 | d += dst_jump; |
234 | } | 234 | } |
235 | return; | 235 | return; |
236 | pal = 0; | 236 | (void)pal; |
237 | #endif | 237 | #endif |
238 | } | 238 | } |
239 | #endif | 239 | #endif |
@@ -295,7 +295,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_565_dith_rot_180 (DATA32 *src, DATA8 *dst | |||
295 | 295 | ||
296 | CONVERT_LOOP2_END_ROT_180(); | 296 | CONVERT_LOOP2_END_ROT_180(); |
297 | return; | 297 | return; |
298 | pal = 0; | 298 | (void)pal; |
299 | } | 299 | } |
300 | #endif | 300 | #endif |
301 | #endif | 301 | #endif |
@@ -333,7 +333,7 @@ evas_common_convert_rgba_to_16bpp_rgb_565_dith_rot_180 (DATA32 *src, DATA8 *dst, | |||
333 | 333 | ||
334 | CONVERT_LOOP_END_ROT_180(); | 334 | CONVERT_LOOP_END_ROT_180(); |
335 | return; | 335 | return; |
336 | pal = 0; | 336 | (void)pal; |
337 | } | 337 | } |
338 | #endif | 338 | #endif |
339 | #endif | 339 | #endif |
@@ -394,7 +394,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_565_dith_rot_270 (DATA32 *src, DATA8 *dst | |||
394 | 394 | ||
395 | CONVERT_LOOP2_END_ROT_270(); | 395 | CONVERT_LOOP2_END_ROT_270(); |
396 | return; | 396 | return; |
397 | pal = 0; | 397 | (void)pal; |
398 | } | 398 | } |
399 | #endif | 399 | #endif |
400 | #endif | 400 | #endif |
@@ -432,7 +432,7 @@ evas_common_convert_rgba_to_16bpp_rgb_565_dith_rot_270 (DATA32 *src, DATA8 *dst, | |||
432 | 432 | ||
433 | CONVERT_LOOP_END_ROT_270(); | 433 | CONVERT_LOOP_END_ROT_270(); |
434 | return; | 434 | return; |
435 | pal = 0; | 435 | (void)pal; |
436 | } | 436 | } |
437 | #endif | 437 | #endif |
438 | #endif | 438 | #endif |
@@ -493,7 +493,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_565_dith_rot_90 (DATA32 *src, DATA8 *dst, | |||
493 | 493 | ||
494 | CONVERT_LOOP2_END_ROT_90(); | 494 | CONVERT_LOOP2_END_ROT_90(); |
495 | return; | 495 | return; |
496 | pal = 0; | 496 | (void)pal; |
497 | } | 497 | } |
498 | #endif | 498 | #endif |
499 | #endif | 499 | #endif |
@@ -531,7 +531,7 @@ evas_common_convert_rgba_to_16bpp_rgb_565_dith_rot_90 (DATA32 *src, DATA8 *dst, | |||
531 | 531 | ||
532 | CONVERT_LOOP_END_ROT_90(); | 532 | CONVERT_LOOP_END_ROT_90(); |
533 | return; | 533 | return; |
534 | pal = 0; | 534 | (void)pal; |
535 | } | 535 | } |
536 | #endif | 536 | #endif |
537 | #endif | 537 | #endif |
@@ -592,7 +592,7 @@ evas_common_convert_rgba2_to_16bpp_bgr_565_dith (DATA32 *src, DATA8 *dst, int sr | |||
592 | 592 | ||
593 | CONVERT_LOOP2_END_ROT_0(); | 593 | CONVERT_LOOP2_END_ROT_0(); |
594 | return; | 594 | return; |
595 | pal = 0; | 595 | (void)pal; |
596 | } | 596 | } |
597 | #endif | 597 | #endif |
598 | #endif | 598 | #endif |
@@ -630,7 +630,7 @@ evas_common_convert_rgba_to_16bpp_bgr_565_dith (DATA32 *src, DATA8 *dst, int src | |||
630 | 630 | ||
631 | CONVERT_LOOP_END_ROT_0(); | 631 | CONVERT_LOOP_END_ROT_0(); |
632 | return; | 632 | return; |
633 | pal = 0; | 633 | (void)pal; |
634 | } | 634 | } |
635 | #endif | 635 | #endif |
636 | #endif | 636 | #endif |
@@ -691,7 +691,7 @@ evas_common_convert_rgba2_to_16bpp_bgr_565_dith_rot_180 (DATA32 *src, DATA8 *dst | |||
691 | 691 | ||
692 | CONVERT_LOOP2_END_ROT_180(); | 692 | CONVERT_LOOP2_END_ROT_180(); |
693 | return; | 693 | return; |
694 | pal = 0; | 694 | (void)pal; |
695 | } | 695 | } |
696 | #endif | 696 | #endif |
697 | #endif | 697 | #endif |
@@ -731,7 +731,7 @@ evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_180 (DATA32 *src, DATA8 *dst, | |||
731 | 731 | ||
732 | CONVERT_LOOP_END_ROT_180(); | 732 | CONVERT_LOOP_END_ROT_180(); |
733 | return; | 733 | return; |
734 | pal = 0; | 734 | (void)pal; |
735 | } | 735 | } |
736 | #endif | 736 | #endif |
737 | #endif | 737 | #endif |
@@ -792,7 +792,7 @@ evas_common_convert_rgba2_to_16bpp_bgr_565_dith_rot_270 (DATA32 *src, DATA8 *dst | |||
792 | 792 | ||
793 | CONVERT_LOOP2_END_ROT_270(); | 793 | CONVERT_LOOP2_END_ROT_270(); |
794 | return; | 794 | return; |
795 | pal = 0; | 795 | (void)pal; |
796 | } | 796 | } |
797 | #endif | 797 | #endif |
798 | #endif | 798 | #endif |
@@ -830,7 +830,7 @@ evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_270 (DATA32 *src, DATA8 *dst, | |||
830 | 830 | ||
831 | CONVERT_LOOP_END_ROT_270(); | 831 | CONVERT_LOOP_END_ROT_270(); |
832 | return; | 832 | return; |
833 | pal = 0; | 833 | (void)pal; |
834 | } | 834 | } |
835 | #endif | 835 | #endif |
836 | #endif | 836 | #endif |
@@ -891,7 +891,7 @@ evas_common_convert_rgba2_to_16bpp_bgr_565_dith_rot_90 (DATA32 *src, DATA8 *dst, | |||
891 | 891 | ||
892 | CONVERT_LOOP2_END_ROT_90(); | 892 | CONVERT_LOOP2_END_ROT_90(); |
893 | return; | 893 | return; |
894 | pal = 0; | 894 | (void)pal; |
895 | } | 895 | } |
896 | #endif | 896 | #endif |
897 | #endif | 897 | #endif |
@@ -929,7 +929,7 @@ evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_90 (DATA32 *src, DATA8 *dst, | |||
929 | 929 | ||
930 | CONVERT_LOOP_END_ROT_90(); | 930 | CONVERT_LOOP_END_ROT_90(); |
931 | return; | 931 | return; |
932 | pal = 0; | 932 | (void)pal; |
933 | } | 933 | } |
934 | #endif | 934 | #endif |
935 | #endif | 935 | #endif |
@@ -988,7 +988,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_444_dith (DATA32 *src, DATA8 *dst, int sr | |||
988 | 988 | ||
989 | CONVERT_LOOP2_END_ROT_0(); | 989 | CONVERT_LOOP2_END_ROT_0(); |
990 | return; | 990 | return; |
991 | pal = 0; | 991 | (void)pal; |
992 | } | 992 | } |
993 | #endif | 993 | #endif |
994 | #endif | 994 | #endif |
@@ -1025,7 +1025,7 @@ evas_common_convert_rgba_to_16bpp_rgb_444_dith (DATA32 *src, DATA8 *dst, int src | |||
1025 | 1025 | ||
1026 | CONVERT_LOOP_END_ROT_0(); | 1026 | CONVERT_LOOP_END_ROT_0(); |
1027 | return; | 1027 | return; |
1028 | pal = 0; | 1028 | (void)pal; |
1029 | } | 1029 | } |
1030 | #endif | 1030 | #endif |
1031 | #endif | 1031 | #endif |
@@ -1084,7 +1084,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_444_dith_rot_180 (DATA32 *src, DATA8 *dst | |||
1084 | 1084 | ||
1085 | CONVERT_LOOP2_END_ROT_180(); | 1085 | CONVERT_LOOP2_END_ROT_180(); |
1086 | return; | 1086 | return; |
1087 | pal = 0; | 1087 | (void)pal; |
1088 | } | 1088 | } |
1089 | #endif | 1089 | #endif |
1090 | #endif | 1090 | #endif |
@@ -1121,7 +1121,7 @@ evas_common_convert_rgba_to_16bpp_rgb_444_dith_rot_180 (DATA32 *src, DATA8 *dst, | |||
1121 | 1121 | ||
1122 | CONVERT_LOOP_END_ROT_180(); | 1122 | CONVERT_LOOP_END_ROT_180(); |
1123 | return; | 1123 | return; |
1124 | pal = 0; | 1124 | (void)pal; |
1125 | } | 1125 | } |
1126 | #endif | 1126 | #endif |
1127 | #endif | 1127 | #endif |
@@ -1180,7 +1180,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_444_dith_rot_270 (DATA32 *src, DATA8 *dst | |||
1180 | 1180 | ||
1181 | CONVERT_LOOP2_END_ROT_270(); | 1181 | CONVERT_LOOP2_END_ROT_270(); |
1182 | return; | 1182 | return; |
1183 | pal = 0; | 1183 | (void)pal; |
1184 | } | 1184 | } |
1185 | #endif | 1185 | #endif |
1186 | #endif | 1186 | #endif |
@@ -1217,7 +1217,7 @@ evas_common_convert_rgba_to_16bpp_rgb_444_dith_rot_270 (DATA32 *src, DATA8 *dst, | |||
1217 | 1217 | ||
1218 | CONVERT_LOOP_END_ROT_270(); | 1218 | CONVERT_LOOP_END_ROT_270(); |
1219 | return; | 1219 | return; |
1220 | pal = 0; | 1220 | (void)pal; |
1221 | } | 1221 | } |
1222 | #endif | 1222 | #endif |
1223 | #endif | 1223 | #endif |
@@ -1276,7 +1276,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_444_dith_rot_90 (DATA32 *src, DATA8 *dst, | |||
1276 | 1276 | ||
1277 | CONVERT_LOOP2_END_ROT_90(); | 1277 | CONVERT_LOOP2_END_ROT_90(); |
1278 | return; | 1278 | return; |
1279 | pal = 0; | 1279 | (void)pal; |
1280 | } | 1280 | } |
1281 | #endif | 1281 | #endif |
1282 | #endif | 1282 | #endif |
@@ -1313,7 +1313,7 @@ evas_common_convert_rgba_to_16bpp_rgb_444_dith_rot_90 (DATA32 *src, DATA8 *dst, | |||
1313 | 1313 | ||
1314 | CONVERT_LOOP_END_ROT_90(); | 1314 | CONVERT_LOOP_END_ROT_90(); |
1315 | return; | 1315 | return; |
1316 | pal = 0; | 1316 | (void)pal; |
1317 | } | 1317 | } |
1318 | #endif | 1318 | #endif |
1319 | #endif | 1319 | #endif |
@@ -1372,7 +1372,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_454645_dith (DATA32 *src, DATA8 *dst, int | |||
1372 | 1372 | ||
1373 | CONVERT_LOOP2_END_ROT_0(); | 1373 | CONVERT_LOOP2_END_ROT_0(); |
1374 | return; | 1374 | return; |
1375 | pal = 0; | 1375 | (void)pal; |
1376 | } | 1376 | } |
1377 | #endif | 1377 | #endif |
1378 | #endif | 1378 | #endif |
@@ -1409,7 +1409,7 @@ evas_common_convert_rgba_to_16bpp_rgb_454645_dith (DATA32 *src, DATA8 *dst, int | |||
1409 | 1409 | ||
1410 | CONVERT_LOOP_END_ROT_0(); | 1410 | CONVERT_LOOP_END_ROT_0(); |
1411 | return; | 1411 | return; |
1412 | pal = 0; | 1412 | (void)pal; |
1413 | } | 1413 | } |
1414 | #endif | 1414 | #endif |
1415 | #endif | 1415 | #endif |
@@ -1468,7 +1468,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_180 (DATA32 *src, DATA8 * | |||
1468 | 1468 | ||
1469 | CONVERT_LOOP2_END_ROT_180(); | 1469 | CONVERT_LOOP2_END_ROT_180(); |
1470 | return; | 1470 | return; |
1471 | pal = 0; | 1471 | (void)pal; |
1472 | } | 1472 | } |
1473 | #endif | 1473 | #endif |
1474 | #endif | 1474 | #endif |
@@ -1505,7 +1505,7 @@ evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_180 (DATA32 *src, DATA8 *d | |||
1505 | 1505 | ||
1506 | CONVERT_LOOP_END_ROT_180(); | 1506 | CONVERT_LOOP_END_ROT_180(); |
1507 | return; | 1507 | return; |
1508 | pal = 0; | 1508 | (void)pal; |
1509 | } | 1509 | } |
1510 | #endif | 1510 | #endif |
1511 | #endif | 1511 | #endif |
@@ -1565,7 +1565,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_270 (DATA32 *src, DATA8 * | |||
1565 | 1565 | ||
1566 | CONVERT_LOOP2_END_ROT_270(); | 1566 | CONVERT_LOOP2_END_ROT_270(); |
1567 | return; | 1567 | return; |
1568 | pal = 0; | 1568 | (void)pal; |
1569 | } | 1569 | } |
1570 | #endif | 1570 | #endif |
1571 | #endif | 1571 | #endif |
@@ -1602,7 +1602,7 @@ evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_270 (DATA32 *src, DATA8 *d | |||
1602 | 1602 | ||
1603 | CONVERT_LOOP_END_ROT_270(); | 1603 | CONVERT_LOOP_END_ROT_270(); |
1604 | return; | 1604 | return; |
1605 | pal = 0; | 1605 | (void)pal; |
1606 | } | 1606 | } |
1607 | #endif | 1607 | #endif |
1608 | #endif | 1608 | #endif |
@@ -1661,7 +1661,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_90 (DATA32 *src, DATA8 *d | |||
1661 | 1661 | ||
1662 | CONVERT_LOOP2_END_ROT_90(); | 1662 | CONVERT_LOOP2_END_ROT_90(); |
1663 | return; | 1663 | return; |
1664 | pal = 0; | 1664 | (void)pal; |
1665 | } | 1665 | } |
1666 | #endif | 1666 | #endif |
1667 | #endif | 1667 | #endif |
@@ -1698,7 +1698,7 @@ evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_90 (DATA32 *src, DATA8 *ds | |||
1698 | 1698 | ||
1699 | CONVERT_LOOP_END_ROT_90(); | 1699 | CONVERT_LOOP_END_ROT_90(); |
1700 | return; | 1700 | return; |
1701 | pal = 0; | 1701 | (void)pal; |
1702 | } | 1702 | } |
1703 | #endif | 1703 | #endif |
1704 | #endif | 1704 | #endif |
@@ -1757,7 +1757,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_555_dith (DATA32 *src, DATA8 *dst, int sr | |||
1757 | 1757 | ||
1758 | CONVERT_LOOP2_END_ROT_0(); | 1758 | CONVERT_LOOP2_END_ROT_0(); |
1759 | return; | 1759 | return; |
1760 | pal = 0; | 1760 | (void)pal; |
1761 | } | 1761 | } |
1762 | #endif | 1762 | #endif |
1763 | #endif | 1763 | #endif |
@@ -1794,7 +1794,7 @@ evas_common_convert_rgba_to_16bpp_rgb_555_dith (DATA32 *src, DATA8 *dst, int src | |||
1794 | 1794 | ||
1795 | CONVERT_LOOP_END_ROT_0(); | 1795 | CONVERT_LOOP_END_ROT_0(); |
1796 | return; | 1796 | return; |
1797 | pal = 0; | 1797 | (void)pal; |
1798 | } | 1798 | } |
1799 | #endif | 1799 | #endif |
1800 | #endif | 1800 | #endif |
@@ -1853,7 +1853,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_555_dith_rot_180 (DATA32 *src, DATA8 *dst | |||
1853 | 1853 | ||
1854 | CONVERT_LOOP2_END_ROT_180(); | 1854 | CONVERT_LOOP2_END_ROT_180(); |
1855 | return; | 1855 | return; |
1856 | pal = 0; | 1856 | (void)pal; |
1857 | } | 1857 | } |
1858 | #endif | 1858 | #endif |
1859 | #endif | 1859 | #endif |
@@ -1890,7 +1890,7 @@ evas_common_convert_rgba_to_16bpp_rgb_555_dith_rot_180 (DATA32 *src, DATA8 *dst, | |||
1890 | 1890 | ||
1891 | CONVERT_LOOP_END_ROT_180(); | 1891 | CONVERT_LOOP_END_ROT_180(); |
1892 | return; | 1892 | return; |
1893 | pal = 0; | 1893 | (void)pal; |
1894 | } | 1894 | } |
1895 | #endif | 1895 | #endif |
1896 | #endif | 1896 | #endif |
@@ -1949,7 +1949,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_555_dith_rot_270 (DATA32 *src, DATA8 *dst | |||
1949 | 1949 | ||
1950 | CONVERT_LOOP2_END_ROT_270(); | 1950 | CONVERT_LOOP2_END_ROT_270(); |
1951 | return; | 1951 | return; |
1952 | pal = 0; | 1952 | (void)pal; |
1953 | } | 1953 | } |
1954 | #endif | 1954 | #endif |
1955 | #endif | 1955 | #endif |
@@ -1986,7 +1986,7 @@ evas_common_convert_rgba_to_16bpp_rgb_555_dith_rot_270 (DATA32 *src, DATA8 *dst, | |||
1986 | 1986 | ||
1987 | CONVERT_LOOP_END_ROT_270(); | 1987 | CONVERT_LOOP_END_ROT_270(); |
1988 | return; | 1988 | return; |
1989 | pal = 0; | 1989 | (void)pal; |
1990 | } | 1990 | } |
1991 | #endif | 1991 | #endif |
1992 | #endif | 1992 | #endif |
@@ -2045,7 +2045,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_555_dith_rot_90 (DATA32 *src, DATA8 *dst, | |||
2045 | 2045 | ||
2046 | CONVERT_LOOP2_END_ROT_90(); | 2046 | CONVERT_LOOP2_END_ROT_90(); |
2047 | return; | 2047 | return; |
2048 | pal = 0; | 2048 | (void)pal; |
2049 | } | 2049 | } |
2050 | #endif | 2050 | #endif |
2051 | #endif | 2051 | #endif |
@@ -2082,7 +2082,7 @@ evas_common_convert_rgba_to_16bpp_rgb_555_dith_rot_90 (DATA32 *src, DATA8 *dst, | |||
2082 | 2082 | ||
2083 | CONVERT_LOOP_END_ROT_90(); | 2083 | CONVERT_LOOP_END_ROT_90(); |
2084 | return; | 2084 | return; |
2085 | pal = 0; | 2085 | (void)pal; |
2086 | } | 2086 | } |
2087 | #endif | 2087 | #endif |
2088 | #endif | 2088 | #endif |
diff --git a/libraries/evas/src/lib/engines/common/evas_convert_rgb_32.c b/libraries/evas/src/lib/engines/common/evas_convert_rgb_32.c index 41dac6f..0401a4a 100644 --- a/libraries/evas/src/lib/engines/common/evas_convert_rgb_32.c +++ b/libraries/evas/src/lib/engines/common/evas_convert_rgb_32.c | |||
@@ -48,15 +48,167 @@ evas_common_convert_rgba_to_32bpp_rgb_8888_rot_180 (DATA32 *src, DATA8 *dst, int | |||
48 | #endif | 48 | #endif |
49 | #endif | 49 | #endif |
50 | 50 | ||
51 | #ifdef TILE_ROTATE | ||
52 | #define FAST_SIMPLE_ROTATE(suffix, pix_type) \ | ||
53 | static void \ | ||
54 | blt_rotated_90_trivial_##suffix(pix_type *dst, \ | ||
55 | int dst_stride, \ | ||
56 | const pix_type *src, \ | ||
57 | int src_stride, \ | ||
58 | int w, \ | ||
59 | int h) \ | ||
60 | { \ | ||
61 | int x, y; \ | ||
62 | for (y = 0; y < h; y++) \ | ||
63 | { \ | ||
64 | const pix_type *s = src + (h - y - 1); \ | ||
65 | pix_type *d = dst + (dst_stride * y); \ | ||
66 | for (x = 0; x < w; x++) \ | ||
67 | { \ | ||
68 | *d++ = *s; \ | ||
69 | s += src_stride; \ | ||
70 | } \ | ||
71 | } \ | ||
72 | } \ | ||
73 | static void \ | ||
74 | blt_rotated_270_trivial_##suffix(pix_type *dst, \ | ||
75 | int dst_stride, \ | ||
76 | const pix_type *src, \ | ||
77 | int src_stride, \ | ||
78 | int w, \ | ||
79 | int h) \ | ||
80 | { \ | ||
81 | int x, y; \ | ||
82 | for (y = 0; y < h; y++) \ | ||
83 | { \ | ||
84 | const pix_type *s = src + (src_stride * (w - 1)) + y; \ | ||
85 | pix_type *d = dst + (dst_stride * y); \ | ||
86 | for (x = 0; x < w; x++) \ | ||
87 | { \ | ||
88 | *d++ = *s; \ | ||
89 | s -= src_stride; \ | ||
90 | } \ | ||
91 | } \ | ||
92 | } \ | ||
93 | static void \ | ||
94 | blt_rotated_90_##suffix(pix_type *dst, \ | ||
95 | int dst_stride, \ | ||
96 | const pix_type *src, \ | ||
97 | int src_stride, \ | ||
98 | int w, \ | ||
99 | int h) \ | ||
100 | { \ | ||
101 | int x, leading_pixels = 0, trailing_pixels = 0; \ | ||
102 | const int TILE_SIZE = TILE_CACHE_LINE_SIZE / sizeof(pix_type); \ | ||
103 | if ((uintptr_t)dst & (TILE_CACHE_LINE_SIZE - 1)) \ | ||
104 | { \ | ||
105 | leading_pixels = TILE_SIZE - \ | ||
106 | (((uintptr_t)dst & (TILE_CACHE_LINE_SIZE - 1)) / sizeof(pix_type)); \ | ||
107 | if (leading_pixels > w) \ | ||
108 | leading_pixels = w; \ | ||
109 | blt_rotated_90_trivial_##suffix(dst, \ | ||
110 | dst_stride, \ | ||
111 | src, \ | ||
112 | src_stride, \ | ||
113 | leading_pixels, \ | ||
114 | h); \ | ||
115 | dst += leading_pixels; \ | ||
116 | src += leading_pixels * src_stride; \ | ||
117 | w -= leading_pixels; \ | ||
118 | } \ | ||
119 | if ((uintptr_t)(dst + w) & (TILE_CACHE_LINE_SIZE - 1)) \ | ||
120 | { \ | ||
121 | trailing_pixels = (((uintptr_t)(dst + w) & \ | ||
122 | (TILE_CACHE_LINE_SIZE - 1)) / sizeof(pix_type)); \ | ||
123 | if (trailing_pixels > w) \ | ||
124 | trailing_pixels = w; \ | ||
125 | w -= trailing_pixels; \ | ||
126 | } \ | ||
127 | for (x = 0; x < w; x += TILE_SIZE) \ | ||
128 | { \ | ||
129 | blt_rotated_90_trivial_##suffix(dst + x, \ | ||
130 | dst_stride, \ | ||
131 | src + (src_stride * x), \ | ||
132 | src_stride, \ | ||
133 | TILE_SIZE, \ | ||
134 | h); \ | ||
135 | } \ | ||
136 | if (trailing_pixels) \ | ||
137 | blt_rotated_90_trivial_##suffix(dst + w, \ | ||
138 | dst_stride, \ | ||
139 | src + (w * src_stride), \ | ||
140 | src_stride, \ | ||
141 | trailing_pixels, \ | ||
142 | h); \ | ||
143 | } \ | ||
144 | static void \ | ||
145 | blt_rotated_270_##suffix(pix_type *dst, \ | ||
146 | int dst_stride, \ | ||
147 | const pix_type *src, \ | ||
148 | int src_stride, \ | ||
149 | int w, \ | ||
150 | int h) \ | ||
151 | { \ | ||
152 | int x, leading_pixels = 0, trailing_pixels = 0; \ | ||
153 | const int TILE_SIZE = TILE_CACHE_LINE_SIZE / sizeof(pix_type); \ | ||
154 | if ((uintptr_t)dst & (TILE_CACHE_LINE_SIZE - 1)) \ | ||
155 | { \ | ||
156 | leading_pixels = TILE_SIZE - \ | ||
157 | (((uintptr_t)dst & (TILE_CACHE_LINE_SIZE - 1)) / sizeof(pix_type)); \ | ||
158 | if (leading_pixels > w) \ | ||
159 | leading_pixels = w; \ | ||
160 | blt_rotated_270_trivial_##suffix(dst, \ | ||
161 | dst_stride, \ | ||
162 | src + (src_stride * (w - leading_pixels)), \ | ||
163 | src_stride, \ | ||
164 | leading_pixels, \ | ||
165 | h); \ | ||
166 | dst += leading_pixels; \ | ||
167 | w -= leading_pixels; \ | ||
168 | } \ | ||
169 | if ((uintptr_t)(dst + w) & (TILE_CACHE_LINE_SIZE - 1)) \ | ||
170 | { \ | ||
171 | trailing_pixels = (((uintptr_t)(dst + w) & \ | ||
172 | (TILE_CACHE_LINE_SIZE - 1)) / sizeof(pix_type)); \ | ||
173 | if (trailing_pixels > w) \ | ||
174 | trailing_pixels = w; \ | ||
175 | w -= trailing_pixels; \ | ||
176 | src += trailing_pixels * src_stride; \ | ||
177 | } \ | ||
178 | for (x = 0; x < w; x += TILE_SIZE) \ | ||
179 | { \ | ||
180 | blt_rotated_270_trivial_##suffix(dst + x, \ | ||
181 | dst_stride, \ | ||
182 | src + (src_stride * (w - x - TILE_SIZE)), \ | ||
183 | src_stride, \ | ||
184 | TILE_SIZE, \ | ||
185 | h); \ | ||
186 | } \ | ||
187 | if (trailing_pixels) \ | ||
188 | blt_rotated_270_trivial_##suffix(dst + w, \ | ||
189 | dst_stride, \ | ||
190 | src - (trailing_pixels * src_stride), \ | ||
191 | src_stride, \ | ||
192 | trailing_pixels, \ | ||
193 | h); \ | ||
194 | } | ||
195 | |||
196 | FAST_SIMPLE_ROTATE(8888, DATA8) | ||
197 | #endif | ||
198 | |||
199 | |||
51 | #ifdef BUILD_CONVERT_32_RGB_8888 | 200 | #ifdef BUILD_CONVERT_32_RGB_8888 |
52 | #ifdef BUILD_CONVERT_32_RGB_ROT270 | 201 | #ifdef BUILD_CONVERT_32_RGB_ROT270 |
53 | void | 202 | void |
54 | evas_common_convert_rgba_to_32bpp_rgb_8888_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x __UNUSED__, int dith_y __UNUSED__, DATA8 *pal __UNUSED__) | 203 | evas_common_convert_rgba_to_32bpp_rgb_8888_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x __UNUSED__, int dith_y __UNUSED__, DATA8 *pal __UNUSED__) |
55 | { | 204 | { |
205 | #ifdef TILE_ROTATE | ||
206 | blt_rotated_270_8888((DATA8 *)dst, dst_jump+w, (const DATA8 *)src, src_jump+h, w, h) ; | ||
207 | #else | ||
56 | DATA32 *src_ptr; | 208 | DATA32 *src_ptr; |
57 | DATA32 *dst_ptr; | 209 | DATA32 *dst_ptr; |
58 | int x, y; | 210 | int x, y; |
59 | 211 | ||
60 | dst_ptr = (DATA32 *)dst; | 212 | dst_ptr = (DATA32 *)dst; |
61 | 213 | ||
62 | CONVERT_LOOP_START_ROT_270(); | 214 | CONVERT_LOOP_START_ROT_270(); |
@@ -64,6 +216,7 @@ evas_common_convert_rgba_to_32bpp_rgb_8888_rot_270 (DATA32 *src, DATA8 *dst, int | |||
64 | *dst_ptr = *src_ptr; | 216 | *dst_ptr = *src_ptr; |
65 | 217 | ||
66 | CONVERT_LOOP_END_ROT_270(); | 218 | CONVERT_LOOP_END_ROT_270(); |
219 | #endif | ||
67 | return; | 220 | return; |
68 | } | 221 | } |
69 | #endif | 222 | #endif |
@@ -74,106 +227,118 @@ evas_common_convert_rgba_to_32bpp_rgb_8888_rot_270 (DATA32 *src, DATA8 *dst, int | |||
74 | void | 227 | void |
75 | evas_common_convert_rgba_to_32bpp_rgb_8888_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x __UNUSED__, int dith_y __UNUSED__, DATA8 *pal __UNUSED__) | 228 | evas_common_convert_rgba_to_32bpp_rgb_8888_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x __UNUSED__, int dith_y __UNUSED__, DATA8 *pal __UNUSED__) |
76 | { | 229 | { |
77 | #ifndef BUILD_NEON | 230 | # ifndef BUILD_NEON |
231 | # ifdef TILE_ROTATE | ||
232 | blt_rotated_90_8888((DATA8 *)dst, dst_jump+w, (const DATA8 *)src, src_jump+h, w, h) ; | ||
233 | # else | ||
78 | DATA32 *src_ptr; | 234 | DATA32 *src_ptr; |
79 | DATA32 *dst_ptr; | 235 | DATA32 *dst_ptr; |
80 | int x, y; | 236 | int x, y; |
81 | 237 | ||
82 | dst_ptr = (DATA32 *)dst; | 238 | dst_ptr = (DATA32 *)dst; |
83 | CONVERT_LOOP_START_ROT_90(); | 239 | CONVERT_LOOP_START_ROT_90(); |
84 | 240 | ||
85 | *dst_ptr = *src_ptr; | 241 | *dst_ptr = *src_ptr; |
86 | 242 | ||
87 | CONVERT_LOOP_END_ROT_90(); | 243 | CONVERT_LOOP_END_ROT_90(); |
88 | #else | 244 | # endif |
245 | |||
246 | # else | ||
247 | |||
248 | # ifdef TILE_ROTATE | ||
249 | blt_rotated_90_8888((DATA8 *)dst, dst_jump+w, (const DATA8 *)src, src_jump+h, w, h) ; | ||
250 | # else | ||
89 | if ((w & 1) || (h & 1)) | 251 | if ((w & 1) || (h & 1)) |
90 | { | 252 | { |
91 | /* Rarely (if ever) if ever: so slow path is fine */ | 253 | /* Rarely (if ever) if ever: so slow path is fine */ |
92 | DATA32 *src_ptr; | 254 | DATA32 *src_ptr; |
93 | DATA32 *dst_ptr; | 255 | DATA32 *dst_ptr; |
94 | int x, y; | 256 | int x, y; |
95 | 257 | ||
96 | dst_ptr = (DATA32 *)dst; | 258 | dst_ptr = (DATA32 *)dst; |
97 | CONVERT_LOOP_START_ROT_90(); | 259 | CONVERT_LOOP_START_ROT_90(); |
98 | 260 | ||
99 | *dst_ptr = *src_ptr; | 261 | *dst_ptr = *src_ptr; |
100 | 262 | ||
101 | CONVERT_LOOP_END_ROT_90(); | 263 | CONVERT_LOOP_END_ROT_90(); |
102 | } else { | 264 | } |
103 | #define AP "convert_rgba32_rot_90_" | 265 | else |
104 | asm volatile ( | 266 | { |
105 | ".fpu neon \n\t" | 267 | # define AP "convert_rgba32_rot_90_" |
106 | " mov %[s1], %[src] \n\t" | 268 | asm volatile ( |
107 | " add %[s1], %[h],lsl #2 \n\t" | 269 | ".fpu neon \n\t" |
108 | " sub %[s1], #8 \n\t" | 270 | " mov %[s1], %[src] \n\t" |
109 | 271 | " add %[s1], %[s1], %[h],lsl #2 \n\t" | |
110 | " mov %[s2], %[src] \n\t" | 272 | " sub %[s1], #8 \n\t" |
111 | " add %[s2], %[h], lsl #3 \n\t" | 273 | |
112 | " add %[s2], %[sjmp], lsr #1 \n\t" | 274 | " mov %[s2], %[src] \n\t" |
113 | " sub %[s2], #8 \n\t" | 275 | " add %[s2], %[s2], %[h], lsl #3 \n\t" |
114 | 276 | " add %[s2], %[s2], %[sjmp], lsr #1 \n\t" | |
115 | " mov %[d1], %[dst] \n\t" | 277 | " sub %[s2], #8 \n\t" |
116 | 278 | ||
117 | " add %[d2], %[d1], %[djmp] \n\t" | 279 | " mov %[d1], %[dst] \n\t" |
118 | " add %[d2], %[w], lsl #2 \n\t" | 280 | |
119 | 281 | " add %[d2], %[d1], %[djmp] \n\t" | |
120 | " mov %[sadv], %[h], lsl #3 \n\t" | 282 | " add %[d2], %[d2], %[w], lsl #2 \n\t" |
121 | " add %[sadv], %[sjmp], lsl #1 \n\t" | 283 | |
122 | 284 | " mov %[sadv], %[h], lsl #3 \n\t" | |
123 | " mov %[y], #0 \n\t" | 285 | " add %[sadv], %[sadv], %[sjmp], lsl #1\n\t" |
124 | " mov %[x], #0 \n\t" | 286 | |
125 | AP"loop: \n\t" | 287 | " mov %[y], #0 \n\t" |
126 | " vld1.u32 d0, [%[s1]] \n\t" | 288 | " mov %[x], #0 \n\t" |
127 | " vld1.u32 d1, [%[s2]] \n\t" | 289 | AP"loop: \n\t" |
128 | " add %[x], #2 \n\t" | 290 | " vld1.u32 d0, [%[s1]] \n\t" |
129 | " add %[s1], %[sadv] \n\t" | 291 | " vld1.u32 d1, [%[s2]] \n\t" |
130 | " add %[s2], %[sadv] \n\t" | 292 | " add %[x], #2 \n\t" |
131 | " vtrn.u32 d0, d1 \n\t" | 293 | " add %[s1], %[sadv] \n\t" |
132 | " cmp %[x], %[w] \n\t" | 294 | " add %[s2], %[sadv] \n\t" |
133 | " vst1.u32 d1, [%[d1]]! \n\t" | 295 | " vtrn.u32 d0, d1 \n\t" |
134 | " vst1.u32 d0, [%[d2]]! \n\t" | 296 | " cmp %[x], %[w] \n\t" |
135 | " blt "AP"loop \n\t" | 297 | " vst1.u32 d1, [%[d1]]! \n\t" |
136 | 298 | " vst1.u32 d0, [%[d2]]! \n\t" | |
137 | " mov %[x], #0 \n\t" | 299 | " blt "AP"loop \n\t" |
138 | " add %[d1], %[djmp] \n\t" | 300 | |
139 | " add %[d1], %[w], lsl #2 \n\t" | 301 | " mov %[x], #0 \n\t" |
140 | " add %[d2], %[djmp] \n\t" | 302 | " add %[d1], %[djmp] \n\t" |
141 | " add %[d2], %[w], lsl #2 \n\t" | 303 | " add %[d1], %[d1], %[w], lsl #2 \n\t" |
142 | 304 | " add %[d2], %[djmp] \n\t" | |
143 | " mov %[s1], %[src] \n\t" | 305 | " add %[d2], %[d2], %[w], lsl #2 \n\t" |
144 | " add %[s1], %[h], lsl #2 \n\t" | 306 | |
145 | " sub %[s1], %[y], lsl #2 \n\t" | 307 | " mov %[s1], %[src] \n\t" |
146 | " sub %[s1], #16 \n\t" | 308 | " add %[s1], %[s1], %[h], lsl #2 \n\t" |
147 | 309 | " sub %[s1], %[s1], %[y], lsl #2 \n\t" | |
148 | " add %[s2], %[s1], %[h], lsl #2 \n\t" | 310 | " sub %[s1], #16 \n\t" |
149 | " add %[s2], %[sjmp], lsl #2 \n\t" | 311 | |
150 | 312 | " add %[s2], %[s1], %[h], lsl #2 \n\t" | |
151 | " add %[y], #2 \n\t" | 313 | " add %[s2], %[s2], %[sjmp], lsl #2 \n\t" |
152 | 314 | ||
153 | " cmp %[y], %[h] \n\t" | 315 | " add %[y], #2 \n\t" |
154 | " blt "AP"loop \n\t" | 316 | |
155 | 317 | " cmp %[y], %[h] \n\t" | |
156 | : // Out | 318 | " blt "AP"loop \n\t" |
157 | : [s1] "r" (1), | 319 | |
158 | [s2] "r" (11), | 320 | : // Out |
159 | [d1] "r" (2), | 321 | : [s1] "r" (1), |
160 | [d2] "r" (12), | 322 | [s2] "r" (11), |
161 | [src] "r" (src), | 323 | [d1] "r" (2), |
162 | [dst] "r" (dst), | 324 | [d2] "r" (12), |
163 | [x] "r" (3), | 325 | [src] "r" (src), |
164 | [y] "r" (4), | 326 | [dst] "r" (dst), |
165 | [w] "r" (w), | 327 | [x] "r" (3), |
166 | [h] "r" (h), | 328 | [y] "r" (4), |
167 | [sadv] "r" (5), | 329 | [w] "r" (w), |
168 | [sjmp] "r" (src_jump * 4), | 330 | [h] "r" (h), |
169 | [djmp] "r" (dst_jump * 4 * 2) | 331 | [sadv] "r" (5), |
170 | : "d0", "d1", "memory", "cc"// Clober | 332 | [sjmp] "r" (src_jump * 4), |
171 | 333 | [djmp] "r" (dst_jump * 4 * 2) | |
172 | 334 | : "d0", "d1", "memory", "cc"// Clober | |
173 | ); | 335 | |
174 | } | 336 | |
175 | #undef AP | 337 | ); |
176 | #endif | 338 | } |
339 | # undef AP | ||
340 | # endif | ||
341 | # endif | ||
177 | return; | 342 | return; |
178 | } | 343 | } |
179 | #endif | 344 | #endif |
@@ -448,7 +613,7 @@ evas_common_convert_rgba_to_32bpp_rgb_666(DATA32 *src, DATA8 *dst, int src_jump, | |||
448 | 613 | ||
449 | CONVERT_LOOP_START_ROT_0(); | 614 | CONVERT_LOOP_START_ROT_0(); |
450 | 615 | ||
451 | *dst_ptr = | 616 | *dst_ptr = |
452 | (((R_VAL(src_ptr) << 12) | (B_VAL(src_ptr) >> 2)) & 0x03f03f) | | 617 | (((R_VAL(src_ptr) << 12) | (B_VAL(src_ptr) >> 2)) & 0x03f03f) | |
453 | ((G_VAL(src_ptr) << 4) & 0x000fc0); | 618 | ((G_VAL(src_ptr) << 4) & 0x000fc0); |
454 | 619 | ||
diff --git a/libraries/evas/src/lib/engines/common/evas_convert_yuv.c b/libraries/evas/src/lib/engines/common/evas_convert_yuv.c index a0d155c..000cb01 100644 --- a/libraries/evas/src/lib/engines/common/evas_convert_yuv.c +++ b/libraries/evas/src/lib/engines/common/evas_convert_yuv.c | |||
@@ -1091,7 +1091,7 @@ _evas_nv12tiledtorgb_raster(unsigned char **yuv, unsigned char *rgb, int w, int | |||
1091 | const int offset_value[2] = { 0, 64 * 16 }; | 1091 | const int offset_value[2] = { 0, 64 * 16 }; |
1092 | int mb_x, mb_y, mb_w, mb_h; | 1092 | int mb_x, mb_y, mb_w, mb_h; |
1093 | int base_h; | 1093 | int base_h; |
1094 | int uv_x, uv_y, uv_step; | 1094 | int uv_x, uv_step; |
1095 | int stride; | 1095 | int stride; |
1096 | 1096 | ||
1097 | /* Idea iterate over each macroblock and convert each of them using _evas_nv12torgb_raster */ | 1097 | /* Idea iterate over each macroblock and convert each of them using _evas_nv12torgb_raster */ |
@@ -1128,7 +1128,7 @@ _evas_nv12tiledtorgb_raster(unsigned char **yuv, unsigned char *rgb, int w, int | |||
1128 | base_h = (mb_h >> 1) + (mb_h & 0x1); | 1128 | base_h = (mb_h >> 1) + (mb_h & 0x1); |
1129 | stride = w * sizeof (int); | 1129 | stride = w * sizeof (int); |
1130 | 1130 | ||
1131 | uv_x = 0; uv_y = 0; | 1131 | uv_x = 0; |
1132 | 1132 | ||
1133 | /* In this format we linearize macroblock on two line to form a Z and it's invert */ | 1133 | /* In this format we linearize macroblock on two line to form a Z and it's invert */ |
1134 | for (mb_y = 0; mb_y < (mb_h >> 1); mb_y++) | 1134 | for (mb_y = 0; mb_y < (mb_h >> 1); mb_y++) |
diff --git a/libraries/evas/src/lib/engines/common/evas_cpu.c b/libraries/evas/src/lib/engines/common/evas_cpu.c index cff8b2b..fe90c5b 100644 --- a/libraries/evas/src/lib/engines/common/evas_cpu.c +++ b/libraries/evas/src/lib/engines/common/evas_cpu.c | |||
@@ -74,6 +74,7 @@ evas_common_cpu_sse3_test(void) | |||
74 | #endif | 74 | #endif |
75 | } | 75 | } |
76 | 76 | ||
77 | #ifdef BUILD_ALTIVEC | ||
77 | void | 78 | void |
78 | evas_common_cpu_altivec_test(void) | 79 | evas_common_cpu_altivec_test(void) |
79 | { | 80 | { |
@@ -85,6 +86,7 @@ evas_common_cpu_altivec_test(void) | |||
85 | #endif /* __VEC__ */ | 86 | #endif /* __VEC__ */ |
86 | #endif /* __POWERPC__ */ | 87 | #endif /* __POWERPC__ */ |
87 | } | 88 | } |
89 | #endif /* BUILD_ALTIVEC */ | ||
88 | 90 | ||
89 | void | 91 | void |
90 | evas_common_cpu_neon_test(void) | 92 | evas_common_cpu_neon_test(void) |
@@ -177,6 +179,7 @@ evas_common_cpu_init(void) | |||
177 | #endif /* BUILD_SSE3 */ | 179 | #endif /* BUILD_SSE3 */ |
178 | #endif /* BUILD_SSE */ | 180 | #endif /* BUILD_SSE */ |
179 | #endif /* BUILD_MMX */ | 181 | #endif /* BUILD_MMX */ |
182 | #ifdef BUILD_ALTIVEC | ||
180 | #ifdef __POWERPC__ | 183 | #ifdef __POWERPC__ |
181 | #ifdef __VEC__ | 184 | #ifdef __VEC__ |
182 | cpu_feature_mask |= CPU_FEATURE_ALTIVEC * | 185 | cpu_feature_mask |= CPU_FEATURE_ALTIVEC * |
@@ -186,6 +189,7 @@ evas_common_cpu_init(void) | |||
186 | cpu_feature_mask &= ~CPU_FEATURE_ALTIVEC; | 189 | cpu_feature_mask &= ~CPU_FEATURE_ALTIVEC; |
187 | #endif /* __VEC__ */ | 190 | #endif /* __VEC__ */ |
188 | #endif /* __POWERPC__ */ | 191 | #endif /* __POWERPC__ */ |
192 | #endif /* BUILD_ALTIVEC */ | ||
189 | #ifdef __SPARC__ | 193 | #ifdef __SPARC__ |
190 | cpu_feature_mask |= CPU_FEATURE_VIS * | 194 | cpu_feature_mask |= CPU_FEATURE_VIS * |
191 | evas_common_cpu_feature_test(evas_common_cpu_vis_test); | 195 | evas_common_cpu_feature_test(evas_common_cpu_vis_test); |
diff --git a/libraries/evas/src/lib/engines/common/evas_draw_main.c b/libraries/evas/src/lib/engines/common/evas_draw_main.c index 7652708..def19a8 100644 --- a/libraries/evas/src/lib/engines/common/evas_draw_main.c +++ b/libraries/evas/src/lib/engines/common/evas_draw_main.c | |||
@@ -75,6 +75,14 @@ evas_common_draw_context_free(RGBA_Draw_Context *dc) | |||
75 | { | 75 | { |
76 | if (!dc) return; | 76 | if (!dc) return; |
77 | 77 | ||
78 | #ifdef HAVE_PIXMAN | ||
79 | if (dc->col.pixman_color_image) | ||
80 | { | ||
81 | pixman_image_unref(dc->col.pixman_color_image); | ||
82 | dc->col.pixman_color_image = NULL; | ||
83 | } | ||
84 | #endif | ||
85 | |||
78 | evas_common_draw_context_apply_clean_cutouts(&dc->cutout); | 86 | evas_common_draw_context_apply_clean_cutouts(&dc->cutout); |
79 | free(dc); | 87 | free(dc); |
80 | } | 88 | } |
@@ -133,6 +141,20 @@ evas_common_draw_context_set_color(RGBA_Draw_Context *dc, int r, int g, int b, i | |||
133 | G_VAL(&(dc->col.col)) = (DATA8)g; | 141 | G_VAL(&(dc->col.col)) = (DATA8)g; |
134 | B_VAL(&(dc->col.col)) = (DATA8)b; | 142 | B_VAL(&(dc->col.col)) = (DATA8)b; |
135 | A_VAL(&(dc->col.col)) = (DATA8)a; | 143 | A_VAL(&(dc->col.col)) = (DATA8)a; |
144 | #ifdef HAVE_PIXMAN | ||
145 | if (dc && dc->col.pixman_color_image) | ||
146 | pixman_image_unref(dc->col.pixman_color_image); | ||
147 | |||
148 | pixman_color_t pixman_color; | ||
149 | |||
150 | pixman_color.alpha = (dc->col.col & 0xff000000) >> 16; | ||
151 | pixman_color.red = (dc->col.col & 0x00ff0000) >> 8; | ||
152 | pixman_color.green = (dc->col.col & 0x0000ff00); | ||
153 | pixman_color.blue = (dc->col.col & 0x000000ff) << 8; | ||
154 | |||
155 | dc->col.pixman_color_image = pixman_image_create_solid_fill(&pixman_color); | ||
156 | #endif | ||
157 | |||
136 | } | 158 | } |
137 | 159 | ||
138 | EAPI void | 160 | EAPI void |
@@ -159,12 +181,42 @@ evas_common_draw_context_set_mask(RGBA_Draw_Context *dc, RGBA_Image *mask, int x | |||
159 | dc->mask.y = y; | 181 | dc->mask.y = y; |
160 | dc->mask.w = w; | 182 | dc->mask.w = w; |
161 | dc->mask.h = h; | 183 | dc->mask.h = h; |
184 | |||
185 | #ifdef HAVE_PIXMAN | ||
186 | if (mask->pixman.im) | ||
187 | pixman_image_unref(mask->pixman.im); | ||
188 | |||
189 | if (mask->cache_entry.flags.alpha) | ||
190 | { | ||
191 | mask->pixman.im = pixman_image_create_bits(PIXMAN_a8r8g8b8, w, h, | ||
192 | (uint32_t *)mask->mask.mask, | ||
193 | w * 4); | ||
194 | } | ||
195 | else | ||
196 | { | ||
197 | mask->pixman.im = pixman_image_create_bits(PIXMAN_x8r8g8b8, w, h, | ||
198 | (uint32_t *)mask->mask.mask, | ||
199 | w * 4); | ||
200 | } | ||
201 | #endif | ||
202 | |||
162 | } | 203 | } |
163 | 204 | ||
164 | EAPI void | 205 | EAPI void |
165 | evas_common_draw_context_unset_mask(RGBA_Draw_Context *dc) | 206 | evas_common_draw_context_unset_mask(RGBA_Draw_Context *dc) |
166 | { | 207 | { |
167 | dc->mask.mask = NULL; | 208 | dc->mask.mask = NULL; |
209 | |||
210 | #ifdef HAVE_PIXMAN | ||
211 | RGBA_Image *mask; | ||
212 | mask = (RGBA_Image *)dc->mask.mask; | ||
213 | |||
214 | if (mask && mask->pixman.im) | ||
215 | { | ||
216 | pixman_image_unref(mask->pixman.im); | ||
217 | mask->pixman.im = NULL; | ||
218 | } | ||
219 | #endif | ||
168 | } | 220 | } |
169 | 221 | ||
170 | 222 | ||
@@ -179,32 +231,32 @@ evas_common_draw_context_add_cutout(RGBA_Draw_Context *dc, int x, int y, int w, | |||
179 | { | 231 | { |
180 | #if 1 // this is a bit faster | 232 | #if 1 // this is a bit faster |
181 | int xa1, xa2, xb1, xb2; | 233 | int xa1, xa2, xb1, xb2; |
182 | 234 | ||
183 | xa1 = x; | 235 | xa1 = x; |
184 | xa2 = xa1 + w - 1; | 236 | xa2 = xa1 + w - 1; |
185 | xb1 = dc->clip.x; | 237 | xb1 = dc->clip.x; |
186 | if (xa2 < xb1) return; | 238 | if (xa2 < xb1) return; |
187 | xb2 = xb1 + dc->clip.w - 1; | 239 | xb2 = xb1 + dc->clip.w - 1; |
188 | if (xa1 >= xb2) return; | 240 | if (xa1 >= xb2) return; |
189 | if (xa2 > xb2) xa2 = xb2; | 241 | if (xa2 > xb2) xa2 = xb2; |
190 | if (xb1 > xa1) xa1 = xb1; | 242 | if (xb1 > xa1) xa1 = xb1; |
191 | x = xa1; | 243 | x = xa1; |
192 | w = xa2 - xa1 + 1; | 244 | w = xa2 - xa1 + 1; |
193 | 245 | ||
194 | xa1 = y; | 246 | xa1 = y; |
195 | xa2 = xa1 + h - 1; | 247 | xa2 = xa1 + h - 1; |
196 | xb1 = dc->clip.y; | 248 | xb1 = dc->clip.y; |
197 | if (xa2 < xb1) return; | 249 | if (xa2 < xb1) return; |
198 | xb2 = xb1 + dc->clip.h - 1; | 250 | xb2 = xb1 + dc->clip.h - 1; |
199 | if (xa1 >= xb2) return; | 251 | if (xa1 >= xb2) return; |
200 | if (xa2 > xb2) xa2 = xb2; | 252 | if (xa2 > xb2) xa2 = xb2; |
201 | if (xb1 > xa1) xa1 = xb1; | 253 | if (xb1 > xa1) xa1 = xb1; |
202 | y = xa1; | 254 | y = xa1; |
203 | h = xa2 - xa1 + 1; | 255 | h = xa2 - xa1 + 1; |
204 | #else | 256 | #else |
205 | RECTS_CLIP_TO_RECT(x, y, w, h, | 257 | RECTS_CLIP_TO_RECT(x, y, w, h, |
206 | dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h); | 258 | dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h); |
207 | #endif | 259 | #endif |
208 | if ((w < 1) || (h < 1)) return; | 260 | if ((w < 1) || (h < 1)) return; |
209 | } | 261 | } |
210 | evas_common_draw_context_cutouts_add(&dc->cutout, x, y, w, h); | 262 | evas_common_draw_context_cutouts_add(&dc->cutout, x, y, w, h); |
@@ -513,7 +565,7 @@ evas_common_draw_context_apply_cutouts(RGBA_Draw_Context *dc) | |||
513 | 565 | ||
514 | if (!dc->clip.use) return NULL; | 566 | if (!dc->clip.use) return NULL; |
515 | if ((dc->clip.w <= 0) || (dc->clip.h <= 0)) return NULL; | 567 | if ((dc->clip.w <= 0) || (dc->clip.h <= 0)) return NULL; |
516 | 568 | ||
517 | 569 | ||
518 | res = evas_common_draw_context_cutouts_new(); | 570 | res = evas_common_draw_context_cutouts_new(); |
519 | evas_common_draw_context_cutouts_add(res, dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h); | 571 | evas_common_draw_context_cutouts_add(res, dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h); |
diff --git a/libraries/evas/src/lib/engines/common/evas_font_draw.c b/libraries/evas/src/lib/engines/common/evas_font_draw.c index 94aa085..638cdfe 100644 --- a/libraries/evas/src/lib/engines/common/evas_font_draw.c +++ b/libraries/evas/src/lib/engines/common/evas_font_draw.c | |||
@@ -22,7 +22,7 @@ | |||
22 | 22 | ||
23 | static int max_cached_words = WORD_CACHE_NWORDS; | 23 | static int max_cached_words = WORD_CACHE_NWORDS; |
24 | 24 | ||
25 | struct prword | 25 | struct prword |
26 | { | 26 | { |
27 | EINA_INLIST; | 27 | EINA_INLIST; |
28 | struct cinfo *cinfo; | 28 | struct cinfo *cinfo; |
@@ -34,16 +34,16 @@ struct prword | |||
34 | int baseline; | 34 | int baseline; |
35 | }; | 35 | }; |
36 | 36 | ||
37 | struct cinfo | 37 | struct cinfo |
38 | { | 38 | { |
39 | FT_UInt index; | 39 | FT_UInt index; |
40 | struct | 40 | struct |
41 | { | 41 | { |
42 | int x, y; | 42 | int x, y; |
43 | } pos; | 43 | } pos; |
44 | int posx; | 44 | int posx; |
45 | RGBA_Font_Glyph *fg; | 45 | RGBA_Font_Glyph *fg; |
46 | struct | 46 | struct |
47 | { | 47 | { |
48 | int w,h; | 48 | int w,h; |
49 | int rows; | 49 | int rows; |
@@ -77,11 +77,11 @@ evas_common_font_draw_init(void) | |||
77 | #ifdef EVAS_FRAME_QUEUING | 77 | #ifdef EVAS_FRAME_QUEUING |
78 | EAPI void | 78 | EAPI void |
79 | evas_common_font_draw_finish(void) | 79 | evas_common_font_draw_finish(void) |
80 | { | 80 | { |
81 | } | 81 | } |
82 | #endif | 82 | #endif |
83 | 83 | ||
84 | /* | 84 | /* |
85 | * BiDi handling: We receive the shaped string + other props from text_props, | 85 | * BiDi handling: We receive the shaped string + other props from text_props, |
86 | * we need to reorder it so we'll have the visual string (the way we draw) | 86 | * we need to reorder it so we'll have the visual string (the way we draw) |
87 | * and then for kerning we have to switch the order of the kerning query (as the prev | 87 | * and then for kerning we have to switch the order of the kerning query (as the prev |
@@ -89,7 +89,7 @@ evas_common_font_draw_finish(void) | |||
89 | */ | 89 | */ |
90 | static void | 90 | static void |
91 | evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn __UNUSED__, int x, int y, | 91 | evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn __UNUSED__, int x, int y, |
92 | const Evas_Text_Props *text_props, RGBA_Gfx_Func func, int ext_x, int ext_y, int ext_w, | 92 | const Evas_Text_Props *text_props, RGBA_Gfx_Func func, int ext_x, int ext_y, int ext_w, |
93 | int ext_h, int im_w, int im_h __UNUSED__) | 93 | int ext_h, int im_w, int im_h __UNUSED__) |
94 | { | 94 | { |
95 | DATA32 *im; | 95 | DATA32 *im; |
@@ -136,7 +136,7 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font | |||
136 | { | 136 | { |
137 | xrun -= x + xrun - ext_x - ext_w; | 137 | xrun -= x + xrun - ext_x - ext_w; |
138 | } | 138 | } |
139 | if (x < ext_x) | 139 | if (x < ext_x) |
140 | { | 140 | { |
141 | int excess = ext_x - x; | 141 | int excess = ext_x - x; |
142 | xstart = excess - 1; | 142 | xstart = excess - 1; |
@@ -244,10 +244,29 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font | |||
244 | if (j < w) j = w; | 244 | if (j < w) j = w; |
245 | h = fg->glyph_out->bitmap.rows; | 245 | h = fg->glyph_out->bitmap.rows; |
246 | /* | 246 | /* |
247 | if ((fg->glyph_out->bitmap.pixel_mode == ft_pixel_mode_grays) | 247 | if ((fg->glyph_out->bitmap.pixel_mode == ft_pixel_mode_grays) |
248 | && (fg->glyph_out->bitmap.num_grays == 256) | 248 | && (fg->glyph_out->bitmap.num_grays == 256) |
249 | ) | 249 | ) |
250 | */ | 250 | */ |
251 | |||
252 | #ifdef HAVE_PIXMAN | ||
253 | # ifdef PIXMAN_FONT | ||
254 | int index; | ||
255 | DATA32 *font_alpha_buffer; | ||
256 | pixman_image_t *font_mask_image; | ||
257 | |||
258 | font_alpha_buffer = alloca(w * h * sizeof(DATA32)); | ||
259 | for (index = 0; index < (w * h); index++) | ||
260 | font_alpha_buffer[index] = data[index] << 24; | ||
261 | |||
262 | font_mask_image = pixman_image_create_bits(PIXMAN_a8r8g8b8, w, h, | ||
263 | font_alpha_buffer, | ||
264 | w * sizeof(DATA32)); | ||
265 | |||
266 | if (!font_mask_image) return; | ||
267 | # endif | ||
268 | #endif | ||
269 | |||
251 | { | 270 | { |
252 | if ((j > 0) && (chr_x + w > ext_x)) | 271 | if ((j > 0) && (chr_x + w > ext_x)) |
253 | { | 272 | { |
@@ -255,44 +274,63 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font | |||
255 | { | 274 | { |
256 | /* ext glyph draw */ | 275 | /* ext glyph draw */ |
257 | dc->font_ext.func.gl_draw(dc->font_ext.data, | 276 | dc->font_ext.func.gl_draw(dc->font_ext.data, |
258 | (void *)dst, | 277 | (void *)dst, |
259 | dc, fg, chr_x, | 278 | dc, fg, chr_x, |
260 | y - (chr_y - y)); | 279 | y - (chr_y - y)); |
261 | } | 280 | } |
262 | else | 281 | else |
263 | { | 282 | { |
264 | if ((fg->glyph_out->bitmap.num_grays == 256) && | 283 | if ((fg->glyph_out->bitmap.num_grays == 256) && |
265 | (fg->glyph_out->bitmap.pixel_mode == FT_PIXEL_MODE_GRAY)) | 284 | (fg->glyph_out->bitmap.pixel_mode == FT_PIXEL_MODE_GRAY)) |
266 | { | 285 | { |
267 | for (i = 0; i < h; i++) | 286 | #ifdef HAVE_PIXMAN |
287 | # ifdef PIXMAN_FONT | ||
288 | if ((dst->pixman.im) && | ||
289 | (dc->col.pixman_color_image)) | ||
290 | pixman_image_composite(PIXMAN_OP_OVER, | ||
291 | dc->col.pixman_color_image, | ||
292 | font_mask_image, | ||
293 | dst->pixman.im, | ||
294 | chr_x, | ||
295 | y - (chr_y - y), | ||
296 | 0, 0, | ||
297 | chr_x, | ||
298 | y - (chr_y - y), | ||
299 | w, h); | ||
300 | else | ||
301 | # endif | ||
302 | #endif | ||
268 | { | 303 | { |
269 | int dx, dy; | 304 | for (i = 0; i < h; i++) |
270 | int in_x, in_w; | 305 | { |
271 | 306 | int dx, dy; | |
272 | in_x = 0; | 307 | int in_x, in_w; |
273 | in_w = 0; | 308 | |
274 | dx = chr_x; | 309 | in_x = 0; |
275 | dy = y - (chr_y - i - y); | 310 | in_w = 0; |
311 | dx = chr_x; | ||
312 | dy = y - (chr_y - i - y); | ||
276 | #ifdef EVAS_SLI | 313 | #ifdef EVAS_SLI |
277 | if (((dy) % dc->sli.h) == dc->sli.y) | 314 | if (((dy) % dc->sli.h) == dc->sli.y) |
278 | #endif | 315 | #endif |
279 | { | ||
280 | if ((dx < (ext_x + ext_w)) && | ||
281 | (dy >= (ext_y)) && | ||
282 | (dy < (ext_y + ext_h))) | ||
283 | { | 316 | { |
284 | if (dx + w > (ext_x + ext_w)) | 317 | if ((dx < (ext_x + ext_w)) && |
285 | in_w += (dx + w) - (ext_x + ext_w); | 318 | (dy >= (ext_y)) && |
286 | if (dx < ext_x) | 319 | (dy < (ext_y + ext_h))) |
287 | { | 320 | { |
288 | in_w += ext_x - dx; | 321 | if (dx + w > (ext_x + ext_w)) |
289 | in_x = ext_x - dx; | 322 | in_w += (dx + w) - (ext_x + ext_w); |
290 | dx = ext_x; | 323 | if (dx < ext_x) |
291 | } | 324 | { |
292 | if (in_w < w) | 325 | in_w += ext_x - dx; |
293 | { | 326 | in_x = ext_x - dx; |
294 | func(NULL, data + (i * j) + in_x, dc->col.col, | 327 | dx = ext_x; |
295 | im + (dy * im_w) + dx, w - in_w); | 328 | } |
329 | if (in_w < w) | ||
330 | { | ||
331 | func(NULL, data + (i * j) + in_x, dc->col.col, | ||
332 | im + (dy * im_w) + dx, w - in_w); | ||
333 | } | ||
296 | } | 334 | } |
297 | } | 335 | } |
298 | } | 336 | } |
@@ -309,7 +347,7 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font | |||
309 | { | 347 | { |
310 | int dx, dy; | 348 | int dx, dy; |
311 | int in_x, in_w, end; | 349 | int in_x, in_w, end; |
312 | 350 | ||
313 | in_x = 0; | 351 | in_x = 0; |
314 | in_w = 0; | 352 | in_w = 0; |
315 | dx = chr_x; | 353 | dx = chr_x; |
@@ -333,8 +371,8 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font | |||
333 | dp++; | 371 | dp++; |
334 | } | 372 | } |
335 | if ((dx < (ext_x + ext_w)) && | 373 | if ((dx < (ext_x + ext_w)) && |
336 | (dy >= (ext_y)) && | 374 | (dy >= (ext_y)) && |
337 | (dy < (ext_y + ext_h))) | 375 | (dy < (ext_y + ext_h))) |
338 | { | 376 | { |
339 | if (dx + w > (ext_x + ext_w)) | 377 | if (dx + w > (ext_x + ext_w)) |
340 | in_w += (dx + w) - (ext_x + ext_w); | 378 | in_w += (dx + w) - (ext_x + ext_w); |
@@ -347,7 +385,7 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font | |||
347 | if (in_w < w) | 385 | if (in_w < w) |
348 | { | 386 | { |
349 | func(NULL, tmpbuf + in_x, dc->col.col, | 387 | func(NULL, tmpbuf + in_x, dc->col.col, |
350 | im + (dy * im_w) + dx, w - in_w); | 388 | im + (dy * im_w) + dx, w - in_w); |
351 | } | 389 | } |
352 | } | 390 | } |
353 | } | 391 | } |
@@ -356,6 +394,11 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font | |||
356 | } | 394 | } |
357 | } | 395 | } |
358 | } | 396 | } |
397 | #ifdef HAVE_PIXMAN | ||
398 | # ifdef PIXMAN_FONT | ||
399 | pixman_image_unref(font_mask_image); | ||
400 | # endif | ||
401 | #endif | ||
359 | } | 402 | } |
360 | else | 403 | else |
361 | break; | 404 | break; |
@@ -573,7 +616,7 @@ evas_font_word_prerender(RGBA_Draw_Context *dc, const Evas_Text_Props *text_prop | |||
573 | } | 616 | } |
574 | } | 617 | } |
575 | } | 618 | } |
576 | else | 619 | else |
577 | { | 620 | { |
578 | im = NULL; | 621 | im = NULL; |
579 | } | 622 | } |
@@ -599,7 +642,7 @@ evas_font_word_prerender(RGBA_Draw_Context *dc, const Evas_Text_Props *text_prop | |||
599 | { | 642 | { |
600 | struct prword *last = (struct prword *)(words->last); | 643 | struct prword *last = (struct prword *)(words->last); |
601 | 644 | ||
602 | if (last) | 645 | if (last) |
603 | { | 646 | { |
604 | if (last->im) free(last->im); | 647 | if (last->im) free(last->im); |
605 | if (last->cinfo) free(last->cinfo); | 648 | if (last->cinfo) free(last->cinfo); |
diff --git a/libraries/evas/src/lib/engines/common/evas_font_main.c b/libraries/evas/src/lib/engines/common/evas_font_main.c index 64b1d5e..7b3dabe 100644 --- a/libraries/evas/src/lib/engines/common/evas_font_main.c +++ b/libraries/evas/src/lib/engines/common/evas_font_main.c | |||
@@ -39,8 +39,6 @@ evas_common_font_init(void) | |||
39 | EAPI void | 39 | EAPI void |
40 | evas_common_font_shutdown(void) | 40 | evas_common_font_shutdown(void) |
41 | { | 41 | { |
42 | int error; | ||
43 | |||
44 | if (initialised < 1) return; | 42 | if (initialised < 1) return; |
45 | initialised--; | 43 | initialised--; |
46 | if (initialised != 0) return; | 44 | if (initialised != 0) return; |
@@ -53,7 +51,7 @@ evas_common_font_shutdown(void) | |||
53 | evas_common_font_cache_set(0); | 51 | evas_common_font_cache_set(0); |
54 | evas_common_font_flush(); | 52 | evas_common_font_flush(); |
55 | 53 | ||
56 | error = FT_Done_FreeType(evas_ft_lib); | 54 | FT_Done_FreeType(evas_ft_lib); |
57 | #ifdef EVAS_FRAME_QUEUING | 55 | #ifdef EVAS_FRAME_QUEUING |
58 | evas_common_font_draw_finish(); | 56 | evas_common_font_draw_finish(); |
59 | #endif | 57 | #endif |
diff --git a/libraries/evas/src/lib/engines/common/evas_image_data.c b/libraries/evas/src/lib/engines/common/evas_image_data.c index 10b3988..2815ff8 100644 --- a/libraries/evas/src/lib/engines/common/evas_image_data.c +++ b/libraries/evas/src/lib/engines/common/evas_image_data.c | |||
@@ -1,3 +1,7 @@ | |||
1 | #ifdef HAVE_CONFIG_H | ||
2 | # include <config.h> | ||
3 | #endif | ||
4 | |||
1 | #include <assert.h> | 5 | #include <assert.h> |
2 | 6 | ||
3 | #include "evas_common.h" | 7 | #include "evas_common.h" |
diff --git a/libraries/evas/src/lib/engines/common/evas_image_load.c b/libraries/evas/src/lib/engines/common/evas_image_load.c index c7eff3f..21ac5d4 100644 --- a/libraries/evas/src/lib/engines/common/evas_image_load.c +++ b/libraries/evas/src/lib/engines/common/evas_image_load.c | |||
@@ -1,3 +1,7 @@ | |||
1 | #ifdef HAVE_CONFIG_H | ||
2 | # include <config.h> | ||
3 | #endif | ||
4 | |||
1 | #include <sys/types.h> | 5 | #include <sys/types.h> |
2 | #include <sys/stat.h> | 6 | #include <sys/stat.h> |
3 | #include <unistd.h> | 7 | #include <unistd.h> |
diff --git a/libraries/evas/src/lib/engines/common/evas_image_main.c b/libraries/evas/src/lib/engines/common/evas_image_main.c index d4d847c..d2f8c0b 100644 --- a/libraries/evas/src/lib/engines/common/evas_image_main.c +++ b/libraries/evas/src/lib/engines/common/evas_image_main.c | |||
@@ -145,7 +145,7 @@ _evas_common_rgba_image_new(void) | |||
145 | #endif | 145 | #endif |
146 | 146 | ||
147 | evas_common_rgba_image_scalecache_init(&im->cache_entry); | 147 | evas_common_rgba_image_scalecache_init(&im->cache_entry); |
148 | 148 | ||
149 | return &im->cache_entry; | 149 | return &im->cache_entry; |
150 | } | 150 | } |
151 | 151 | ||
@@ -161,7 +161,7 @@ _evas_common_rgba_image_delete(Image_Entry *ie) | |||
161 | LKD(im->cache_entry.ref_fq_del); | 161 | LKD(im->cache_entry.ref_fq_del); |
162 | eina_condition_free(&(im->cache_entry.cond_fq_del)); | 162 | eina_condition_free(&(im->cache_entry.cond_fq_del)); |
163 | # endif | 163 | # endif |
164 | #endif | 164 | #endif |
165 | evas_common_rgba_image_scalecache_shutdown(&im->cache_entry); | 165 | evas_common_rgba_image_scalecache_shutdown(&im->cache_entry); |
166 | if (ie->info.module) evas_module_unref((Evas_Module *)ie->info.module); | 166 | if (ie->info.module) evas_module_unref((Evas_Module *)ie->info.module); |
167 | /* memset the image to 0x99 because i recently saw a segv where an | 167 | /* memset the image to 0x99 because i recently saw a segv where an |
@@ -173,13 +173,13 @@ _evas_common_rgba_image_delete(Image_Entry *ie) | |||
173 | // memset(im, 0x99, sizeof(im)); | 173 | // memset(im, 0x99, sizeof(im)); |
174 | #ifdef EVAS_CSERVE | 174 | #ifdef EVAS_CSERVE |
175 | if (ie->data1) evas_cserve_image_free(ie); | 175 | if (ie->data1) evas_cserve_image_free(ie); |
176 | #endif | 176 | #endif |
177 | /* | 177 | /* |
178 | * FIXME: This doesn't seem to be needed... But I'm not sure why. | 178 | * FIXME: This doesn't seem to be needed... But I'm not sure why. |
179 | * -- nash | 179 | * -- nash |
180 | { | 180 | { |
181 | Filtered_Image *fi; | 181 | Filtered_Image *fi; |
182 | 182 | ||
183 | EINA_LIST_FREE(im->filtered, fi) | 183 | EINA_LIST_FREE(im->filtered, fi) |
184 | { | 184 | { |
185 | free(fi->key); | 185 | free(fi->key); |
@@ -249,8 +249,8 @@ evas_common_rgba_image_unload(Image_Entry *ie) | |||
249 | #endif | 249 | #endif |
250 | return; | 250 | return; |
251 | } | 251 | } |
252 | #endif | 252 | #endif |
253 | 253 | ||
254 | if (im->image.data && !im->image.no_free) | 254 | if (im->image.data && !im->image.no_free) |
255 | free(im->image.data); | 255 | free(im->image.data); |
256 | im->image.data = NULL; | 256 | im->image.data = NULL; |
@@ -266,18 +266,19 @@ void | |||
266 | _evas_common_rgba_image_post_surface(Image_Entry *ie) | 266 | _evas_common_rgba_image_post_surface(Image_Entry *ie) |
267 | { | 267 | { |
268 | #ifdef HAVE_PIXMAN | 268 | #ifdef HAVE_PIXMAN |
269 | RGBA_Image *im = (RGBA_Image *) ie; | 269 | # ifdef PIXMAN_IMAGE |
270 | 270 | RGBA_Image *im = (RGBA_Image *)ie; | |
271 | |||
271 | if (im->pixman.im) pixman_image_unref(im->pixman.im); | 272 | if (im->pixman.im) pixman_image_unref(im->pixman.im); |
272 | if (im->cache_entry.flags.alpha) | 273 | if (im->cache_entry.flags.alpha) |
273 | { | 274 | { |
274 | im->pixman.im = pixman_image_create_bits | 275 | im->pixman.im = pixman_image_create_bits |
275 | ( | 276 | ( |
276 | // FIXME: endianess determines this | 277 | // FIXME: endianess determines this |
277 | PIXMAN_a8r8g8b8, | 278 | PIXMAN_a8r8g8b8, |
278 | // PIXMAN_b8g8r8a8, | 279 | // PIXMAN_b8g8r8a8, |
279 | im->cache_entry.w, im->cache_entry.h, | 280 | im->cache_entry.w, im->cache_entry.h, |
280 | im->image.data, | 281 | im->image.data, |
281 | im->cache_entry.w * 4 | 282 | im->cache_entry.w * 4 |
282 | ); | 283 | ); |
283 | } | 284 | } |
@@ -285,16 +286,19 @@ _evas_common_rgba_image_post_surface(Image_Entry *ie) | |||
285 | { | 286 | { |
286 | im->pixman.im = pixman_image_create_bits | 287 | im->pixman.im = pixman_image_create_bits |
287 | ( | 288 | ( |
288 | // FIXME: endianess determines this | 289 | // FIXME: endianess determines this |
289 | PIXMAN_x8r8g8b8, | 290 | PIXMAN_x8r8g8b8, |
290 | // PIXMAN_b8g8r8x8, | 291 | // PIXMAN_b8g8r8x8, |
291 | im->cache_entry.w, im->cache_entry.h, | 292 | im->cache_entry.w, im->cache_entry.h, |
292 | im->image.data, | 293 | im->image.data, |
293 | im->cache_entry.w * 4 | 294 | im->cache_entry.w * 4 |
294 | ); | 295 | ); |
295 | } | 296 | } |
297 | # else | ||
298 | (void)ie; | ||
299 | # endif | ||
296 | #else | 300 | #else |
297 | ie = NULL; | 301 | (void)ie; |
298 | #endif | 302 | #endif |
299 | } | 303 | } |
300 | 304 | ||
@@ -306,7 +310,7 @@ _evas_common_rgba_image_surface_alloc(Image_Entry *ie, unsigned int w, unsigned | |||
306 | 310 | ||
307 | #ifdef EVAS_CSERVE | 311 | #ifdef EVAS_CSERVE |
308 | if (ie->data1) return 0; | 312 | if (ie->data1) return 0; |
309 | #endif | 313 | #endif |
310 | if (im->image.no_free) return 0; | 314 | if (im->image.no_free) return 0; |
311 | 315 | ||
312 | if (im->flags & RGBA_IMAGE_ALPHA_ONLY) | 316 | if (im->flags & RGBA_IMAGE_ALPHA_ONLY) |
@@ -328,7 +332,7 @@ _evas_common_rgba_image_surface_alloc(Image_Entry *ie, unsigned int w, unsigned | |||
328 | # endif | 332 | # endif |
329 | #endif | 333 | #endif |
330 | _evas_common_rgba_image_post_surface(ie); | 334 | _evas_common_rgba_image_post_surface(ie); |
331 | 335 | ||
332 | return 0; | 336 | return 0; |
333 | } | 337 | } |
334 | 338 | ||
@@ -338,12 +342,14 @@ _evas_common_rgba_image_surface_delete(Image_Entry *ie) | |||
338 | RGBA_Image *im = (RGBA_Image *) ie; | 342 | RGBA_Image *im = (RGBA_Image *) ie; |
339 | 343 | ||
340 | #ifdef HAVE_PIXMAN | 344 | #ifdef HAVE_PIXMAN |
345 | # ifdef PIXMAN_IMAGE | ||
341 | if (im->pixman.im) | 346 | if (im->pixman.im) |
342 | { | 347 | { |
343 | pixman_image_unref(im->pixman.im); | 348 | pixman_image_unref(im->pixman.im); |
344 | im->pixman.im = NULL; | 349 | im->pixman.im = NULL; |
345 | } | 350 | } |
346 | #endif | 351 | # endif |
352 | #endif | ||
347 | if (ie->file) | 353 | if (ie->file) |
348 | DBG("unload: [%p] %s %s", ie, ie->file, ie->key); | 354 | DBG("unload: [%p] %s %s", ie, ie->file, ie->key); |
349 | if ((im->cs.data) && (im->image.data)) | 355 | if ((im->cs.data) && (im->image.data)) |
@@ -364,7 +370,7 @@ _evas_common_rgba_image_surface_delete(Image_Entry *ie) | |||
364 | #ifdef EVAS_CSERVE | 370 | #ifdef EVAS_CSERVE |
365 | else if (ie->data1) | 371 | else if (ie->data1) |
366 | evas_cserve_image_free(ie); | 372 | evas_cserve_image_free(ie); |
367 | #endif | 373 | #endif |
368 | 374 | ||
369 | im->image.data = NULL; | 375 | im->image.data = NULL; |
370 | ie->allocated.w = 0; | 376 | ie->allocated.w = 0; |
@@ -391,7 +397,7 @@ _evas_common_rgba_image_dirty_region(Image_Entry* ie, unsigned int x __UNUSED__, | |||
391 | 397 | ||
392 | #ifdef EVAS_CSERVE | 398 | #ifdef EVAS_CSERVE |
393 | if (ie->data1) evas_cserve_image_free(ie); | 399 | if (ie->data1) evas_cserve_image_free(ie); |
394 | #endif | 400 | #endif |
395 | im->flags |= RGBA_IMAGE_IS_DIRTY; | 401 | im->flags |= RGBA_IMAGE_IS_DIRTY; |
396 | evas_common_rgba_image_scalecache_dirty(&im->cache_entry); | 402 | evas_common_rgba_image_scalecache_dirty(&im->cache_entry); |
397 | } | 403 | } |
@@ -411,13 +417,13 @@ _evas_common_rgba_image_dirty(Image_Entry *ie_dst, const Image_Entry *ie_src) | |||
411 | { | 417 | { |
412 | #ifdef EVAS_CSERVE | 418 | #ifdef EVAS_CSERVE |
413 | if (ie_src->data1) evas_cserve_image_free((Image_Entry*) ie_src); | 419 | if (ie_src->data1) evas_cserve_image_free((Image_Entry*) ie_src); |
414 | #endif | 420 | #endif |
415 | return 1; | 421 | return 1; |
416 | } | 422 | } |
417 | 423 | ||
418 | #ifdef EVAS_CSERVE | 424 | #ifdef EVAS_CSERVE |
419 | if (ie_src->data1) evas_cserve_image_free((Image_Entry*) ie_src); | 425 | if (ie_src->data1) evas_cserve_image_free((Image_Entry*) ie_src); |
420 | #endif | 426 | #endif |
421 | evas_common_image_colorspace_normalize(src); | 427 | evas_common_image_colorspace_normalize(src); |
422 | evas_common_image_colorspace_normalize(dst); | 428 | evas_common_image_colorspace_normalize(dst); |
423 | /* evas_common_blit_rectangle(src, dst, 0, 0, src->cache_entry.w, src->cache_entry.h, 0, 0); */ | 429 | /* evas_common_blit_rectangle(src, dst, 0, 0, src->cache_entry.w, src->cache_entry.h, 0, 0); */ |
@@ -431,18 +437,18 @@ _evas_common_rgba_image_ram_usage(Image_Entry *ie) | |||
431 | { | 437 | { |
432 | RGBA_Image *im = (RGBA_Image *)ie; | 438 | RGBA_Image *im = (RGBA_Image *)ie; |
433 | int size = sizeof(struct _RGBA_Image); | 439 | int size = sizeof(struct _RGBA_Image); |
434 | 440 | ||
435 | if (ie->cache_key) size += strlen(ie->cache_key); | 441 | if (ie->cache_key) size += strlen(ie->cache_key); |
436 | if (ie->file) size += strlen(ie->file); | 442 | if (ie->file) size += strlen(ie->file); |
437 | if (ie->key) size += strlen(ie->key); | 443 | if (ie->key) size += strlen(ie->key); |
438 | 444 | ||
439 | if (im->image.data) | 445 | if (im->image.data) |
440 | { | 446 | { |
441 | #ifdef EVAS_CSERVE | 447 | #ifdef EVAS_CSERVE |
442 | if ((!im->image.no_free) || (ie->data1)) | 448 | if ((!im->image.no_free) || (ie->data1)) |
443 | #else | 449 | #else |
444 | if ((!im->image.no_free)) | 450 | if ((!im->image.no_free)) |
445 | #endif | 451 | #endif |
446 | size += im->cache_entry.w * im->cache_entry.h * sizeof(DATA32); | 452 | size += im->cache_entry.w * im->cache_entry.h * sizeof(DATA32); |
447 | } | 453 | } |
448 | size += evas_common_rgba_image_scalecache_usage_get(&im->cache_entry); | 454 | size += evas_common_rgba_image_scalecache_usage_get(&im->cache_entry); |
@@ -590,7 +596,7 @@ evas_common_image_colorspace_normalize(RGBA_Image *im) | |||
590 | { | 596 | { |
591 | #ifdef EVAS_CSERVE | 597 | #ifdef EVAS_CSERVE |
592 | if (((Image_Entry *)im)->data1) evas_cserve_image_free(&im->cache_entry); | 598 | if (((Image_Entry *)im)->data1) evas_cserve_image_free(&im->cache_entry); |
593 | #endif | 599 | #endif |
594 | if (!im->image.no_free) free(im->image.data); | 600 | if (!im->image.no_free) free(im->image.data); |
595 | im->image.data = im->cs.data; | 601 | im->image.data = im->cs.data; |
596 | im->cs.no_free = im->image.no_free; | 602 | im->cs.no_free = im->image.no_free; |
diff --git a/libraries/evas/src/lib/engines/common/evas_image_scalecache.c b/libraries/evas/src/lib/engines/common/evas_image_scalecache.c index 24a4f2d..e4e4790 100644 --- a/libraries/evas/src/lib/engines/common/evas_image_scalecache.c +++ b/libraries/evas/src/lib/engines/common/evas_image_scalecache.c | |||
@@ -48,9 +48,7 @@ struct _Scaleitem | |||
48 | #ifdef SCALECACHE | 48 | #ifdef SCALECACHE |
49 | static unsigned long long use_counter = 0; | 49 | static unsigned long long use_counter = 0; |
50 | 50 | ||
51 | #ifdef BUILD_PTHREAD | ||
52 | static LK(cache_lock); | 51 | static LK(cache_lock); |
53 | #endif | ||
54 | static Eina_Inlist *cache_list = NULL; | 52 | static Eina_Inlist *cache_list = NULL; |
55 | static unsigned int cache_size = 0; | 53 | static unsigned int cache_size = 0; |
56 | static int init = 0; | 54 | static int init = 0; |
diff --git a/libraries/evas/src/lib/engines/common/evas_line_main.c b/libraries/evas/src/lib/engines/common/evas_line_main.c index 04401cb..aacf805 100644 --- a/libraries/evas/src/lib/engines/common/evas_line_main.c +++ b/libraries/evas/src/lib/engines/common/evas_line_main.c | |||
@@ -109,9 +109,24 @@ _evas_draw_point(RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y) | |||
109 | return; | 109 | return; |
110 | if ((dc->clip.use) && (!IN_RECT(x, y, dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h))) | 110 | if ((dc->clip.use) && (!IN_RECT(x, y, dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h))) |
111 | return; | 111 | return; |
112 | pfunc = evas_common_gfx_func_composite_color_pt_get(dc->col.col, dst, dc->render_op); | 112 | #ifdef HAVE_PIXMAN |
113 | if (pfunc) | 113 | # ifdef PIXMAN_LINE |
114 | pfunc(0, 255, dc->col.col, dst->image.data + (dst->cache_entry.w * y) + x); | 114 | pixman_op_t op = PIXMAN_OP_SRC; |
115 | |||
116 | if (dc->render_op == _EVAS_RENDER_BLEND) | ||
117 | op = PIXMAN_OP_OVER; | ||
118 | |||
119 | if ((dst->pixman.im) && (dc->col.pixman_color_image)) | ||
120 | pixman_image_composite(op, dc->col.pixman_color_image, NULL, | ||
121 | dst->pixman.im, x, y, 0, 0, x, y, 1, 1); | ||
122 | else | ||
123 | # endif | ||
124 | #endif | ||
125 | { | ||
126 | pfunc = evas_common_gfx_func_composite_color_pt_get(dc->col.col, dst, dc->render_op); | ||
127 | if (pfunc) | ||
128 | pfunc(0, 255, dc->col.col, dst->image.data + (dst->cache_entry.w * y) + x); | ||
129 | } | ||
115 | } | 130 | } |
116 | 131 | ||
117 | /* | 132 | /* |
@@ -130,6 +145,14 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i | |||
130 | RGBA_Gfx_Pt_Func pfunc; | 145 | RGBA_Gfx_Pt_Func pfunc; |
131 | RGBA_Gfx_Func sfunc; | 146 | RGBA_Gfx_Func sfunc; |
132 | 147 | ||
148 | #ifdef HAVE_PIXMAN | ||
149 | # ifdef PIXMAN_LINE | ||
150 | pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY | ||
151 | if (dc->render_op == _EVAS_RENDER_BLEND) | ||
152 | op = PIXMAN_OP_OVER; | ||
153 | # endif | ||
154 | #endif | ||
155 | |||
133 | dstw = dst->cache_entry.w; | 156 | dstw = dst->cache_entry.w; |
134 | color = dc->col.col; | 157 | color = dc->col.col; |
135 | 158 | ||
@@ -172,12 +195,30 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i | |||
172 | 195 | ||
173 | len = x1 - x0 + 1; | 196 | len = x1 - x0 + 1; |
174 | p = dst->image.data + (dstw * y0) + x0; | 197 | p = dst->image.data + (dstw * y0) + x0; |
175 | sfunc = evas_common_gfx_func_composite_color_span_get(color, dst, len, dc->render_op); | 198 | #ifdef HAVE_PIXMAN |
176 | if (sfunc) | 199 | # ifdef PIXMAN_LINE |
177 | sfunc(NULL, NULL, color, p, len); | 200 | if ((dst->pixman.im) && (dc->col.pixman_color_image) && |
178 | } | 201 | (!dc->mask.mask)) |
179 | } | 202 | pixman_image_composite(op, dc->col.pixman_color_image, |
180 | return; | 203 | NULL, dst->pixman.im, |
204 | x0, y0, 0, 0, x0, y0, len, 1); | ||
205 | else if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
206 | (dc->mask.mask)) | ||
207 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
208 | dc->mask.mask->pixman.im, | ||
209 | dst->pixman.im, | ||
210 | x0, y0, 0, 0, x0, y0, len, 1); | ||
211 | else | ||
212 | # endif | ||
213 | #endif | ||
214 | { | ||
215 | sfunc = evas_common_gfx_func_composite_color_span_get(color, dst, len, dc->render_op); | ||
216 | if (sfunc) | ||
217 | sfunc(NULL, NULL, color, p, len); | ||
218 | } | ||
219 | } | ||
220 | } | ||
221 | return; | ||
181 | } | 222 | } |
182 | 223 | ||
183 | pfunc = evas_common_gfx_func_composite_color_pt_get(color, dst, dc->render_op); | 224 | pfunc = evas_common_gfx_func_composite_color_pt_get(color, dst, dc->render_op); |
@@ -192,17 +233,34 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i | |||
192 | 233 | ||
193 | len = y1 - y0 + 1; | 234 | len = y1 - y0 + 1; |
194 | p = dst->image.data + (dstw * y0) + x0; | 235 | p = dst->image.data + (dstw * y0) + x0; |
195 | while (len--) | 236 | #ifdef HAVE_PIXMAN |
196 | { | 237 | # ifdef PIXMAN_LINE |
238 | if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
239 | (!dc->mask.mask)) | ||
240 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
241 | NULL, dst->pixman.im, | ||
242 | x0, y0, 0, 0, x0, y0, 1, len); | ||
243 | else if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
244 | (dc->mask.mask)) | ||
245 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
246 | dc->mask.mask->pixman.im, dst->pixman.im, | ||
247 | x0, y0, 0, 0, x0, y0, 1, len); | ||
248 | else | ||
249 | # endif | ||
250 | #endif | ||
251 | { | ||
252 | while (len--) | ||
253 | { | ||
197 | #ifdef EVAS_SLI | 254 | #ifdef EVAS_SLI |
198 | if (((y1 + 1 - len) % dc->sli.h) == dc->sli.y) | 255 | if (((y1 + 1 - len) % dc->sli.h) == dc->sli.y) |
199 | #endif | 256 | #endif |
200 | { | 257 | { |
201 | pfunc(0, 255, color, p); | 258 | pfunc(0, 255, color, p); |
202 | } | 259 | } |
203 | p += dstw; | 260 | p += dstw; |
204 | } | 261 | } |
205 | } | 262 | } |
263 | } | ||
206 | return; | 264 | return; |
207 | } | 265 | } |
208 | 266 | ||
@@ -281,16 +339,52 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i | |||
281 | if (dx > 0) dstw--; | 339 | if (dx > 0) dstw--; |
282 | else dstw++; | 340 | else dstw++; |
283 | } | 341 | } |
284 | 342 | #ifdef HAVE_PIXMAN | |
343 | # ifdef PIXMAN_LINE | ||
344 | int pixman_x_position = x0; | ||
345 | int pixman_y_position = y0; | ||
346 | int x_unit = dstw - dst->cache_entry.w; | ||
347 | # endif | ||
348 | #endif | ||
349 | |||
350 | |||
285 | while (len--) | 351 | while (len--) |
286 | { | 352 | { |
287 | #ifdef EVAS_SLI | 353 | #ifdef EVAS_SLI |
288 | if (((y1 + 1 - len) % dc->sli.h) == dc->sli.y) | 354 | if (((y1 + 1 - len) % dc->sli.h) == dc->sli.y) |
289 | #endif | 355 | #endif |
290 | { | 356 | { |
291 | pfunc(0, 255, color, p); | 357 | #ifdef HAVE_PIXMAN |
292 | } | 358 | # ifdef PIXMAN_LINE |
293 | p += dstw; | 359 | if ((dst->pixman.im) && (dc->col.pixman_color_image) && |
360 | (!dc->mask.mask)) | ||
361 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
362 | NULL, dst->pixman.im, | ||
363 | pixman_x_position, | ||
364 | pixman_y_position, | ||
365 | 0, 0, pixman_x_position, | ||
366 | pixman_y_position, 1, 1); | ||
367 | else if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
368 | (dc->mask.mask)) | ||
369 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
370 | dc->mask.mask->pixman.im, | ||
371 | dst->pixman.im, | ||
372 | pixman_x_position, | ||
373 | pixman_y_position, 0, 0, | ||
374 | pixman_x_position, | ||
375 | pixman_y_position, 1, 1); | ||
376 | else | ||
377 | # endif | ||
378 | #endif | ||
379 | pfunc(0, 255, color, p); | ||
380 | } | ||
381 | #ifdef HAVE_PIXMAN | ||
382 | # ifdef PIXMAN_LINE | ||
383 | pixman_x_position += x_unit; | ||
384 | pixman_y_position += 1; | ||
385 | # endif | ||
386 | #endif | ||
387 | p += dstw; | ||
294 | } | 388 | } |
295 | } | 389 | } |
296 | } | 390 | } |
@@ -456,6 +550,31 @@ _evas_draw_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, | |||
456 | dx = x1 - x0; | 550 | dx = x1 - x0; |
457 | dy = y1 - y0; | 551 | dy = y1 - y0; |
458 | 552 | ||
553 | #ifdef HAVE_PIXMAN | ||
554 | # ifdef PIXMAN_LINE | ||
555 | int pix_x; | ||
556 | int pix_y; | ||
557 | int pix_x_unit; | ||
558 | int pix_y_unit; | ||
559 | |||
560 | pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY | ||
561 | if (dc->render_op == _EVAS_RENDER_BLEND) | ||
562 | op = PIXMAN_OP_OVER; | ||
563 | pix_x = x0; | ||
564 | pix_y = y0; | ||
565 | |||
566 | if (dx < 0) | ||
567 | pix_x_unit = -1; | ||
568 | else | ||
569 | pix_x_unit = 1; | ||
570 | |||
571 | if (dy < 0) | ||
572 | pix_y_unit = -1; | ||
573 | else | ||
574 | pix_y_unit = 1; | ||
575 | # endif | ||
576 | #endif | ||
577 | |||
459 | if ( (dx == 0) || (dy == 0) || (dx == dy) || (dx == -dy) ) | 578 | if ( (dx == 0) || (dy == 0) || (dx == dy) || (dx == -dy) ) |
460 | { | 579 | { |
461 | _evas_draw_simple_line(dst, dc, x0, y0, x1, y1); | 580 | _evas_draw_simple_line(dst, dc, x0, y0, x1, y1); |
@@ -494,6 +613,11 @@ _evas_draw_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, | |||
494 | prev_y = y; | 613 | prev_y = y; |
495 | p += dh; | 614 | p += dh; |
496 | py += dely; | 615 | py += dely; |
616 | #ifdef HAVE_PIXMAN | ||
617 | # ifdef PIXMAN_LINE | ||
618 | pix_y += pix_y_unit; | ||
619 | # endif | ||
620 | #endif | ||
497 | } | 621 | } |
498 | if (!p1_in) | 622 | if (!p1_in) |
499 | { | 623 | { |
@@ -509,12 +633,37 @@ _evas_draw_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, | |||
509 | #endif | 633 | #endif |
510 | { | 634 | { |
511 | if (IN_RANGE(px, py, clw, clh)) | 635 | if (IN_RANGE(px, py, clw, clh)) |
512 | pfunc(0, 255, color, p); | 636 | { |
513 | } | 637 | #ifdef HAVE_PIXMAN |
514 | next_x: | 638 | # ifdef PIXMAN_LINE |
515 | yy += dyy; | 639 | if ((dst->pixman.im) && (dc->col.pixman_color_image) && |
516 | px++; | 640 | (!dc->mask.mask)) |
517 | p++; | 641 | pixman_image_composite(op, dc->col.pixman_color_image, |
642 | NULL, dst->pixman.im, | ||
643 | pix_x, pix_y, 0, 0, | ||
644 | pix_x, pix_y, 1, 1); | ||
645 | else if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
646 | (dc->mask.mask)) | ||
647 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
648 | dc->mask.mask->pixman.im, | ||
649 | dst->pixman.im, | ||
650 | pix_x, pix_y, 0, 0, | ||
651 | pix_x, pix_y, 1, 1); | ||
652 | else | ||
653 | # endif | ||
654 | #endif | ||
655 | pfunc(0, 255, color, p); | ||
656 | } | ||
657 | } | ||
658 | next_x: | ||
659 | yy += dyy; | ||
660 | px++; | ||
661 | p++; | ||
662 | #ifdef HAVE_PIXMAN | ||
663 | # ifdef PIXMAN_LINE | ||
664 | pix_x += pix_x_unit; | ||
665 | # endif | ||
666 | #endif | ||
518 | } | 667 | } |
519 | return; | 668 | return; |
520 | } | 669 | } |
@@ -529,9 +678,14 @@ _evas_draw_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, | |||
529 | x += ((xx - (x << 16)) >> 15); | 678 | x += ((xx - (x << 16)) >> 15); |
530 | if (prev_x != x) | 679 | if (prev_x != x) |
531 | { | 680 | { |
532 | prev_x = x; | 681 | prev_x = x; |
533 | px += delx; | 682 | px += delx; |
534 | p += delx; | 683 | p += delx; |
684 | #ifdef HAVE_PIXMAN | ||
685 | # ifdef PIXMAN_LINE | ||
686 | pix_x += pix_x_unit; | ||
687 | # endif | ||
688 | #endif | ||
535 | } | 689 | } |
536 | if (!p1_in) | 690 | if (!p1_in) |
537 | { | 691 | { |
@@ -547,12 +701,38 @@ _evas_draw_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, | |||
547 | #endif | 701 | #endif |
548 | { | 702 | { |
549 | if (IN_RANGE(px, py, clw, clh)) | 703 | if (IN_RANGE(px, py, clw, clh)) |
550 | pfunc(0, 255, color, p); | 704 | { |
551 | } | 705 | #ifdef HAVE_PIXMAN |
552 | next_y: | 706 | # ifdef PIXMAN_LINE |
707 | if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
708 | (!dc->mask.mask)) | ||
709 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
710 | NULL, dst->pixman.im, | ||
711 | pix_x, pix_y, 0, 0, | ||
712 | pix_x, pix_y, 1, 1); | ||
713 | else if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
714 | (dc->mask.mask)) | ||
715 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
716 | dc->mask.mask->pixman.im, | ||
717 | dst->pixman.im, | ||
718 | pix_x, pix_y, 0, 0, | ||
719 | pix_x, pix_y, 1, 1); | ||
720 | else | ||
721 | # endif | ||
722 | #endif | ||
723 | pfunc(0, 255, color, p); | ||
724 | } | ||
725 | } | ||
726 | next_y: | ||
553 | xx += dxx; | 727 | xx += dxx; |
554 | py++; | 728 | py++; |
555 | p += dstw; | 729 | p += dstw; |
730 | #ifdef HAVE_PIXMAN | ||
731 | # ifdef PIXMAN_LINE | ||
732 | pix_y += pix_y_unit; | ||
733 | # endif | ||
734 | #endif | ||
735 | |||
556 | } | 736 | } |
557 | } | 737 | } |
558 | 738 | ||
@@ -568,12 +748,43 @@ _evas_draw_line_aa(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x | |||
568 | DATA32 *p, *data, color; | 748 | DATA32 *p, *data, color; |
569 | RGBA_Gfx_Pt_Func pfunc; | 749 | RGBA_Gfx_Pt_Func pfunc; |
570 | 750 | ||
751 | dx = x1 - x0; | ||
752 | dy = y1 - y0; | ||
753 | |||
754 | #ifdef HAVE_PIXMAN | ||
755 | # ifdef PIXMAN_LINE | ||
756 | int pix_x; | ||
757 | int pix_y; | ||
758 | int pix_x_unit; | ||
759 | int pix_y_unit; | ||
760 | |||
761 | pixman_image_t *aa_mask_image; | ||
762 | int alpha_data_buffer; | ||
763 | |||
764 | pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY | ||
765 | if (dc->render_op == _EVAS_RENDER_BLEND) | ||
766 | op = PIXMAN_OP_OVER; | ||
767 | pix_x = x0; | ||
768 | pix_y = y0; | ||
769 | |||
770 | if (dx < 0) | ||
771 | pix_x_unit = -1; | ||
772 | else | ||
773 | pix_x_unit = 1; | ||
774 | |||
775 | if (dy < 0) | ||
776 | pix_y_unit = -1; | ||
777 | else | ||
778 | pix_y_unit = 1; | ||
779 | # endif | ||
780 | #endif | ||
571 | if (y0 > y1) | 781 | if (y0 > y1) |
572 | EXCHANGE_POINTS(x0, y0, x1, y1); | 782 | EXCHANGE_POINTS(x0, y0, x1, y1); |
783 | |||
573 | dx = x1 - x0; | 784 | dx = x1 - x0; |
574 | dy = y1 - y0; | 785 | dy = y1 - y0; |
575 | 786 | ||
576 | if ( (dx == 0) || (dy == 0) || (dx == dy) || (dx == -dy) ) | 787 | if ((dx == 0) || (dy == 0) || (dx == dy) || (dx == -dy)) |
577 | { | 788 | { |
578 | _evas_draw_simple_line(dst, dc, x0, y0, x1, y1); | 789 | _evas_draw_simple_line(dst, dc, x0, y0, x1, y1); |
579 | return; | 790 | return; |
@@ -609,9 +820,14 @@ _evas_draw_line_aa(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x | |||
609 | y = (yy >> 16); | 820 | y = (yy >> 16); |
610 | if (prev_y != y) | 821 | if (prev_y != y) |
611 | { | 822 | { |
612 | prev_y = y; | 823 | prev_y = y; |
613 | p += dh; | 824 | p += dh; |
614 | py += dely; | 825 | py += dely; |
826 | #ifdef HAVE_PIXMAN | ||
827 | # ifdef PIXMAN_LINE | ||
828 | pix_y += pix_y_unit; | ||
829 | # endif | ||
830 | #endif | ||
615 | } | 831 | } |
616 | if (!p1_in) | 832 | if (!p1_in) |
617 | { | 833 | { |
@@ -624,39 +840,109 @@ _evas_draw_line_aa(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x | |||
624 | } | 840 | } |
625 | if (px < clw) | 841 | if (px < clw) |
626 | { | 842 | { |
627 | aa = ((yy - (y << 16)) >> 8); | 843 | aa = ((yy - (y << 16)) >> 8); |
628 | if ((py) < clh) | 844 | if ((py) < clh) |
629 | pfunc(0, 255 - aa, color, p); | 845 | { |
630 | if ((py + 1) < clh) | 846 | #ifdef HAVE_PIXMAN |
631 | pfunc(0, aa, color, p + dstw); | 847 | # ifdef PIXMAN_LINE |
632 | } | 848 | alpha_data_buffer = 255 - aa; |
633 | 849 | aa_mask_image = pixman_image_create_bits(PIXMAN_a8, 1, 1, | |
634 | next_x: | 850 | (uint32_t *)&alpha_data_buffer, 4); |
635 | yy += dyy; | 851 | |
636 | px++; | 852 | if ((dst->pixman.im) && (dc->col.pixman_color_image ) && |
637 | p++; | 853 | (!dc->mask.mask)) |
854 | pixman_image_composite(PIXMAN_OP_OVER, | ||
855 | dc->col.pixman_color_image, | ||
856 | aa_mask_image, dst->pixman.im, | ||
857 | pix_x, pix_y, 0, 0, | ||
858 | pix_x, pix_y, 1, 1); | ||
859 | else if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
860 | (dc->mask.mask) ) | ||
861 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
862 | dc->mask.mask->pixman.im, | ||
863 | dst->pixman.im, | ||
864 | pix_x, pix_y, 0, 0, | ||
865 | pix_x, pix_y, 1, 1); | ||
866 | else | ||
867 | # endif | ||
868 | #endif | ||
869 | pfunc(0, 255 - aa, color, p); | ||
870 | #ifdef HAVE_PIXMAN | ||
871 | # ifdef PIXMAN_LINE | ||
872 | pixman_image_unref(aa_mask_image); | ||
873 | # endif | ||
874 | #endif | ||
875 | } | ||
876 | if ((py + 1) < clh) | ||
877 | { | ||
878 | #ifdef HAVE_PIXMAN | ||
879 | # ifdef PIXMAN_LINE | ||
880 | alpha_data_buffer = aa; | ||
881 | aa_mask_image = pixman_image_create_bits(PIXMAN_a8, 1, 1, | ||
882 | (uint32_t *)&alpha_data_buffer, 4); | ||
883 | |||
884 | if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
885 | (!dc->mask.mask)) | ||
886 | pixman_image_composite(PIXMAN_OP_OVER, | ||
887 | dc->col.pixman_color_image, | ||
888 | aa_mask_image, dst->pixman.im, | ||
889 | pix_x, pix_y + 1, 0, 0, | ||
890 | pix_x, pix_y + 1, 1, 1); | ||
891 | else if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
892 | (dc->mask.mask)) | ||
893 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
894 | dc->mask.mask->pixman.im, | ||
895 | dst->pixman.im, | ||
896 | pix_x, pix_y + 1, 0, 0, | ||
897 | pix_x, pix_y + 1, 1, 1); | ||
898 | else | ||
899 | # endif | ||
900 | #endif | ||
901 | pfunc(0, aa, color, p + dstw); | ||
902 | #ifdef HAVE_PIXMAN | ||
903 | # ifdef PIXMAN_LINE | ||
904 | pixman_image_unref(aa_mask_image); | ||
905 | # endif | ||
906 | #endif | ||
907 | } | ||
908 | } | ||
909 | |||
910 | next_x: | ||
911 | yy += dyy; | ||
912 | px++; | ||
913 | p++; | ||
914 | #ifdef HAVE_PIXMAN | ||
915 | # ifdef PIXMAN_LINE | ||
916 | pix_x += pix_x_unit; | ||
917 | # endif | ||
918 | #endif | ||
638 | } | 919 | } |
639 | return; | 920 | return; |
640 | } | 921 | } |
641 | 922 | ||
642 | /* steep: y-parametric */ | 923 | /* steep: y-parametric */ |
643 | SETUP_LINE_STEEP; | 924 | SETUP_LINE_STEEP; |
644 | 925 | ||
645 | while (py < by) | 926 | while (py < by) |
646 | { | 927 | { |
647 | DATA8 aa; | 928 | DATA8 aa; |
648 | 929 | ||
649 | x = (xx >> 16); | 930 | x = (xx >> 16); |
650 | if (prev_x != x) | 931 | if (prev_x != x) |
651 | { | 932 | { |
652 | prev_x = x; | 933 | prev_x = x; |
653 | px += delx; | 934 | px += delx; |
654 | p += delx; | 935 | p += delx; |
936 | #ifdef HAVE_PIXMAN | ||
937 | # ifdef PIXMAN_LINE | ||
938 | pix_x += pix_x_unit; | ||
939 | # endif | ||
940 | #endif | ||
655 | } | 941 | } |
656 | if (!p1_in) | 942 | if (!p1_in) |
657 | { | 943 | { |
658 | if ((px < 0) && (delx < 0)) return; | 944 | if ((px < 0) && (delx < 0)) return; |
659 | if ((px > rx) && (delx > 0)) return; | 945 | if ((px > rx) && (delx > 0)) return; |
660 | } | 946 | } |
661 | if (!p0_in) | 947 | if (!p0_in) |
662 | { | 948 | { |
@@ -664,15 +950,80 @@ _evas_draw_line_aa(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x | |||
664 | } | 950 | } |
665 | if (py < clh) | 951 | if (py < clh) |
666 | { | 952 | { |
667 | aa = ((xx - (x << 16)) >> 8); | 953 | aa = ((xx - (x << 16)) >> 8); |
668 | if ((px) < clw) | 954 | if ((px) < clw) |
669 | pfunc(0, 255 - aa, color, p); | 955 | { |
670 | if ((px + 1) < clw) | 956 | #ifdef HAVE_PIXMAN |
671 | pfunc(0, aa, color, p + 1); | 957 | # ifdef PIXMAN_LINE |
672 | } | 958 | alpha_data_buffer = 255 - aa; |
959 | aa_mask_image = pixman_image_create_bits(PIXMAN_a8, 1, 1, (uint32_t *)&alpha_data_buffer, 4); | ||
960 | |||
961 | if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
962 | (!dc->mask.mask)) | ||
963 | pixman_image_composite(PIXMAN_OP_OVER, | ||
964 | dc->col.pixman_color_image, | ||
965 | aa_mask_image, dst->pixman.im, | ||
966 | pix_x, pix_y, 0, 0, | ||
967 | pix_x, pix_y, 1, 1); | ||
968 | else if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
969 | (dc->mask.mask)) | ||
970 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
971 | dc->mask.mask->pixman.im, | ||
972 | dst->pixman.im, | ||
973 | pix_x, pix_y, 0, 0, | ||
974 | pix_x, pix_y, 1, 1); | ||
975 | else | ||
976 | # endif | ||
977 | #endif | ||
978 | pfunc(0, 255 - aa, color, p); | ||
979 | #ifdef HAVE_PIXMAN | ||
980 | # ifdef PIXMAN_LINE | ||
981 | pixman_image_unref(aa_mask_image); | ||
982 | # endif | ||
983 | #endif | ||
984 | |||
985 | } | ||
986 | if ((px + 1) < clw) | ||
987 | { | ||
988 | #ifdef HAVE_PIXMAN | ||
989 | # ifdef PIXMAN_LINE | ||
990 | alpha_data_buffer = aa; | ||
991 | aa_mask_image = pixman_image_create_bits(PIXMAN_a8, 1, 1, | ||
992 | (uint32_t *)&alpha_data_buffer, 4); | ||
993 | |||
994 | if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
995 | (!dc->mask.mask)) | ||
996 | pixman_image_composite(PIXMAN_OP_OVER, | ||
997 | dc->col.pixman_color_image, | ||
998 | aa_mask_image, dst->pixman.im, | ||
999 | pix_x + 1, pix_y, 0, 0, | ||
1000 | pix_x + 1, pix_y, 1, 1); | ||
1001 | else if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
1002 | (dc->mask.mask)) | ||
1003 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
1004 | dc->mask.mask->pixman.im, | ||
1005 | dst->pixman.im, | ||
1006 | pix_x + 1, pix_y, 0, 0, | ||
1007 | pix_x + 1, pix_y, 1, 1); | ||
1008 | else | ||
1009 | # endif | ||
1010 | #endif | ||
1011 | pfunc(0, aa, color, p + 1); | ||
1012 | #ifdef HAVE_PIXMAN | ||
1013 | # ifdef PIXMAN_LINE | ||
1014 | pixman_image_unref(aa_mask_image); | ||
1015 | # endif | ||
1016 | #endif | ||
1017 | } | ||
1018 | } | ||
673 | next_y: | 1019 | next_y: |
674 | xx += dxx; | 1020 | xx += dxx; |
675 | py++; | 1021 | py++; |
676 | p += dstw; | 1022 | p += dstw; |
1023 | #ifdef HAVE_PIXMAN | ||
1024 | # ifdef PIXMAN_LINE | ||
1025 | pix_y += pix_y_unit; | ||
1026 | # endif | ||
1027 | #endif | ||
677 | } | 1028 | } |
678 | } | 1029 | } |
diff --git a/libraries/evas/src/lib/engines/common/evas_op_add/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_add/Makefile.in index 4c721f9..78e893d 100644 --- a/libraries/evas/src/lib/engines/common/evas_op_add/Makefile.in +++ b/libraries/evas/src/lib/engines/common/evas_op_add/Makefile.in | |||
@@ -166,8 +166,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
167 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 167 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
168 | PKG_CONFIG = @PKG_CONFIG@ | 168 | PKG_CONFIG = @PKG_CONFIG@ |
169 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
170 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
171 | PNG_CFLAGS = @PNG_CFLAGS@ | 169 | PNG_CFLAGS = @PNG_CFLAGS@ |
172 | PNG_LIBS = @PNG_LIBS@ | 170 | PNG_LIBS = @PNG_LIBS@ |
173 | RANLIB = @RANLIB@ | 171 | RANLIB = @RANLIB@ |
@@ -184,6 +182,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
184 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 182 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
185 | VERSION = @VERSION@ | 183 | VERSION = @VERSION@ |
186 | VMAJ = @VMAJ@ | 184 | VMAJ = @VMAJ@ |
185 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
186 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
187 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 187 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
189 | XCB_CFLAGS = @XCB_CFLAGS@ | 189 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -265,6 +265,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
268 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
269 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
270 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
271 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
268 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 272 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
269 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 273 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
270 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 274 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.in index e796ef2..e00dac8 100644 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.in +++ b/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.in | |||
@@ -203,8 +203,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
203 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 203 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
204 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 204 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
205 | PKG_CONFIG = @PKG_CONFIG@ | 205 | PKG_CONFIG = @PKG_CONFIG@ |
206 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
207 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
208 | PNG_CFLAGS = @PNG_CFLAGS@ | 206 | PNG_CFLAGS = @PNG_CFLAGS@ |
209 | PNG_LIBS = @PNG_LIBS@ | 207 | PNG_LIBS = @PNG_LIBS@ |
210 | RANLIB = @RANLIB@ | 208 | RANLIB = @RANLIB@ |
@@ -221,6 +219,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
221 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 219 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
222 | VERSION = @VERSION@ | 220 | VERSION = @VERSION@ |
223 | VMAJ = @VMAJ@ | 221 | VMAJ = @VMAJ@ |
222 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
223 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
224 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 224 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
225 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 225 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
226 | XCB_CFLAGS = @XCB_CFLAGS@ | 226 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -302,6 +302,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
302 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 302 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
303 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 303 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
304 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 304 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
305 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
306 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
307 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
308 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
305 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 309 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
306 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 310 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
307 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 311 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_sse3.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_sse3.c index 64d5a86..1843265 100644 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_sse3.c +++ b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_sse3.c | |||
@@ -53,7 +53,8 @@ _op_blend_c_dp_sse3(DATA32 *s __UNUSED__, DATA8 *m __UNUSED__, DATA32 c, DATA32 | |||
53 | static void | 53 | static void |
54 | init_blend_color_span_funcs_sse3(void) | 54 | init_blend_color_span_funcs_sse3(void) |
55 | { | 55 | { |
56 | op_blend_span_funcs[SP_N][SM_N][SC][DP][CPU_SSE3] = _op_blend_c_dp_sse3; | 56 | // FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle) |
57 | // op_blend_span_funcs[SP_N][SM_N][SC][DP][CPU_SSE3] = _op_blend_c_dp_sse3; | ||
57 | op_blend_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_caa_dp_sse3; | 58 | op_blend_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_caa_dp_sse3; |
58 | 59 | ||
59 | // FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle) | 60 | // FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle) |
diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_sse3.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_sse3.c index 83230e5..5883d15 100644 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_sse3.c +++ b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_sse3.c | |||
@@ -168,7 +168,8 @@ _op_blend_mas_can_dp_sse3(DATA32 *s __UNUSED__, DATA8 *m, DATA32 c, DATA32 *d, i | |||
168 | static void | 168 | static void |
169 | init_blend_mask_color_span_funcs_sse3(void) | 169 | init_blend_mask_color_span_funcs_sse3(void) |
170 | { | 170 | { |
171 | op_blend_span_funcs[SP_N][SM_AS][SC][DP][CPU_SSE3] = _op_blend_mas_c_dp_sse3; | 171 | // FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle) |
172 | // op_blend_span_funcs[SP_N][SM_AS][SC][DP][CPU_SSE3] = _op_blend_mas_c_dp_sse3; | ||
172 | op_blend_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_SSE3] = _op_blend_mas_cn_dp_sse3; | 173 | op_blend_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_SSE3] = _op_blend_mas_cn_dp_sse3; |
173 | op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_SSE3] = _op_blend_mas_can_dp_sse3; | 174 | op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_SSE3] = _op_blend_mas_can_dp_sse3; |
174 | op_blend_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_SSE3] = _op_blend_mas_caa_dp_sse3; | 175 | op_blend_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_SSE3] = _op_blend_mas_caa_dp_sse3; |
diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_sse3.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_sse3.c index 2e72fec..69c597c 100644 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_sse3.c +++ b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_sse3.c | |||
@@ -146,7 +146,6 @@ init_blend_pixel_span_funcs_sse3(void) | |||
146 | op_blend_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_pas_dp_sse3; | 146 | op_blend_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_pas_dp_sse3; |
147 | op_blend_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_pan_dp_sse3; | 147 | op_blend_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_pan_dp_sse3; |
148 | 148 | ||
149 | |||
150 | // FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle) | 149 | // FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle) |
151 | // op_blend_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_p_dpan_sse3; | 150 | // op_blend_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_p_dpan_sse3; |
152 | op_blend_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_pas_dpan_sse3; | 151 | op_blend_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_pas_dpan_sse3; |
diff --git a/libraries/evas/src/lib/engines/common/evas_op_copy/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_copy/Makefile.in index 52658a4..40536c0 100644 --- a/libraries/evas/src/lib/engines/common/evas_op_copy/Makefile.in +++ b/libraries/evas/src/lib/engines/common/evas_op_copy/Makefile.in | |||
@@ -166,8 +166,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
167 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 167 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
168 | PKG_CONFIG = @PKG_CONFIG@ | 168 | PKG_CONFIG = @PKG_CONFIG@ |
169 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
170 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
171 | PNG_CFLAGS = @PNG_CFLAGS@ | 169 | PNG_CFLAGS = @PNG_CFLAGS@ |
172 | PNG_LIBS = @PNG_LIBS@ | 170 | PNG_LIBS = @PNG_LIBS@ |
173 | RANLIB = @RANLIB@ | 171 | RANLIB = @RANLIB@ |
@@ -184,6 +182,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
184 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 182 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
185 | VERSION = @VERSION@ | 183 | VERSION = @VERSION@ |
186 | VMAJ = @VMAJ@ | 184 | VMAJ = @VMAJ@ |
185 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
186 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
187 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 187 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
189 | XCB_CFLAGS = @XCB_CFLAGS@ | 189 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -265,6 +265,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
268 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
269 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
270 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
271 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
268 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 272 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
269 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 273 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
270 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 274 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/engines/common/evas_op_mask/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_mask/Makefile.in index 0ccd7f3..d5764b1 100644 --- a/libraries/evas/src/lib/engines/common/evas_op_mask/Makefile.in +++ b/libraries/evas/src/lib/engines/common/evas_op_mask/Makefile.in | |||
@@ -166,8 +166,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
167 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 167 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
168 | PKG_CONFIG = @PKG_CONFIG@ | 168 | PKG_CONFIG = @PKG_CONFIG@ |
169 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
170 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
171 | PNG_CFLAGS = @PNG_CFLAGS@ | 169 | PNG_CFLAGS = @PNG_CFLAGS@ |
172 | PNG_LIBS = @PNG_LIBS@ | 170 | PNG_LIBS = @PNG_LIBS@ |
173 | RANLIB = @RANLIB@ | 171 | RANLIB = @RANLIB@ |
@@ -184,6 +182,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
184 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 182 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
185 | VERSION = @VERSION@ | 183 | VERSION = @VERSION@ |
186 | VMAJ = @VMAJ@ | 184 | VMAJ = @VMAJ@ |
185 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
186 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
187 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 187 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
189 | XCB_CFLAGS = @XCB_CFLAGS@ | 189 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -265,6 +265,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
268 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
269 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
270 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
271 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
268 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 272 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
269 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 273 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
270 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 274 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/engines/common/evas_op_mul/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_mul/Makefile.in index f239cf7..d5452fe 100644 --- a/libraries/evas/src/lib/engines/common/evas_op_mul/Makefile.in +++ b/libraries/evas/src/lib/engines/common/evas_op_mul/Makefile.in | |||
@@ -166,8 +166,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
167 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 167 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
168 | PKG_CONFIG = @PKG_CONFIG@ | 168 | PKG_CONFIG = @PKG_CONFIG@ |
169 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
170 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
171 | PNG_CFLAGS = @PNG_CFLAGS@ | 169 | PNG_CFLAGS = @PNG_CFLAGS@ |
172 | PNG_LIBS = @PNG_LIBS@ | 170 | PNG_LIBS = @PNG_LIBS@ |
173 | RANLIB = @RANLIB@ | 171 | RANLIB = @RANLIB@ |
@@ -184,6 +182,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
184 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 182 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
185 | VERSION = @VERSION@ | 183 | VERSION = @VERSION@ |
186 | VMAJ = @VMAJ@ | 184 | VMAJ = @VMAJ@ |
185 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
186 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
187 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 187 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
189 | XCB_CFLAGS = @XCB_CFLAGS@ | 189 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -265,6 +265,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
268 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
269 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
270 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
271 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
268 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 272 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
269 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 273 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
270 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 274 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/engines/common/evas_op_sub/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_sub/Makefile.in index b68ed3b..4b93b1b 100644 --- a/libraries/evas/src/lib/engines/common/evas_op_sub/Makefile.in +++ b/libraries/evas/src/lib/engines/common/evas_op_sub/Makefile.in | |||
@@ -166,8 +166,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
167 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 167 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
168 | PKG_CONFIG = @PKG_CONFIG@ | 168 | PKG_CONFIG = @PKG_CONFIG@ |
169 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
170 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
171 | PNG_CFLAGS = @PNG_CFLAGS@ | 169 | PNG_CFLAGS = @PNG_CFLAGS@ |
172 | PNG_LIBS = @PNG_LIBS@ | 170 | PNG_LIBS = @PNG_LIBS@ |
173 | RANLIB = @RANLIB@ | 171 | RANLIB = @RANLIB@ |
@@ -184,6 +182,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
184 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 182 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
185 | VERSION = @VERSION@ | 183 | VERSION = @VERSION@ |
186 | VMAJ = @VMAJ@ | 184 | VMAJ = @VMAJ@ |
185 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
186 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
187 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 187 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
189 | XCB_CFLAGS = @XCB_CFLAGS@ | 189 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -265,6 +265,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
268 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
269 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
270 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
271 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
268 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 272 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
269 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 273 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
270 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 274 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/engines/common/evas_polygon_main.c b/libraries/evas/src/lib/engines/common/evas_polygon_main.c index bca3f83..ea0bf13 100644 --- a/libraries/evas/src/lib/engines/common/evas_polygon_main.c +++ b/libraries/evas/src/lib/engines/common/evas_polygon_main.c | |||
@@ -1,3 +1,7 @@ | |||
1 | #ifdef HAVE_CONFIG_H | ||
2 | # include <config.h> | ||
3 | #endif | ||
4 | |||
1 | #include <math.h> | 5 | #include <math.h> |
2 | 6 | ||
3 | #include "evas_common.h" | 7 | #include "evas_common.h" |
@@ -133,6 +137,14 @@ evas_common_polygon_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Polygon_Po | |||
133 | int ext_x, ext_y, ext_w, ext_h; | 137 | int ext_x, ext_y, ext_w, ext_h; |
134 | int *sorted_index; | 138 | int *sorted_index; |
135 | 139 | ||
140 | #ifdef HAVE_PIXMAN | ||
141 | # ifdef PIXMAN_POLY | ||
142 | pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY | ||
143 | if (dc->render_op == _EVAS_RENDER_BLEND) | ||
144 | op = PIXMAN_OP_OVER; | ||
145 | # endif | ||
146 | #endif | ||
147 | |||
136 | ext_x = 0; | 148 | ext_x = 0; |
137 | ext_y = 0; | 149 | ext_y = 0; |
138 | ext_w = dst->cache_entry.w; | 150 | ext_w = dst->cache_entry.w; |
@@ -279,10 +291,30 @@ evas_common_polygon_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Polygon_Po | |||
279 | if (((span->y) % dc->sli.h) == dc->sli.y) | 291 | if (((span->y) % dc->sli.h) == dc->sli.y) |
280 | #endif | 292 | #endif |
281 | { | 293 | { |
282 | ptr = dst->image.data + (span->y * (dst->cache_entry.w)) + span->x; | 294 | #ifdef HAVE_PIXMAN |
283 | func(NULL, NULL, dc->col.col, ptr, span->w); | 295 | # ifdef PIXMAN_POLY |
284 | } | 296 | if ((dst->pixman.im) && (dc->col.pixman_color_image) && |
285 | } | 297 | (!dc->mask.mask)) |
298 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
299 | NULL, dst->pixman.im, | ||
300 | span->x, span->y, 0, 0, | ||
301 | span->x, span->y, span->w, 1); | ||
302 | else if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
303 | (dc->mask.mask)) | ||
304 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
305 | dc->mask.mask->pixman.im, | ||
306 | dst->pixman.im, | ||
307 | span->x, span->y, 0, 0, | ||
308 | span->x, span->y, span->w, 1); | ||
309 | else | ||
310 | # endif | ||
311 | #endif | ||
312 | { | ||
313 | ptr = dst->image.data + (span->y * (dst->cache_entry.w)) + span->x; | ||
314 | func(NULL, NULL, dc->col.col, ptr, span->w); | ||
315 | } | ||
316 | } | ||
317 | } | ||
286 | while (spans) | 318 | while (spans) |
287 | { | 319 | { |
288 | span = (RGBA_Span *)spans; | 320 | span = (RGBA_Span *)spans; |
diff --git a/libraries/evas/src/lib/engines/common/evas_rectangle_main.c b/libraries/evas/src/lib/engines/common/evas_rectangle_main.c index 28aaf16..fc25fd0 100644 --- a/libraries/evas/src/lib/engines/common/evas_rectangle_main.c +++ b/libraries/evas/src/lib/engines/common/evas_rectangle_main.c | |||
@@ -58,16 +58,34 @@ rectangle_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y, in | |||
58 | RECTS_CLIP_TO_RECT(x, y, w, h, dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h); | 58 | RECTS_CLIP_TO_RECT(x, y, w, h, dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h); |
59 | if ((w <= 0) || (h <= 0)) return; | 59 | if ((w <= 0) || (h <= 0)) return; |
60 | 60 | ||
61 | func = evas_common_gfx_func_composite_color_span_get(dc->col.col, dst, w, dc->render_op); | 61 | #ifdef HAVE_PIXMAN |
62 | ptr = dst->image.data + (y * dst->cache_entry.w) + x; | 62 | # ifdef PIXMAN_RECT |
63 | for (yy = 0; yy < h; yy++) | 63 | pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY |
64 | |||
65 | if (dc->render_op == _EVAS_RENDER_BLEND) | ||
66 | op = PIXMAN_OP_OVER; | ||
67 | |||
68 | if ((dst->pixman.im) && (dc->col.pixman_color_image)) | ||
64 | { | 69 | { |
70 | pixman_image_composite(op, dc->col.pixman_color_image, NULL, | ||
71 | dst->pixman.im, x, y, 0, 0, | ||
72 | x, y, w, h); | ||
73 | } | ||
74 | else | ||
75 | # endif | ||
76 | #endif | ||
77 | { | ||
78 | func = evas_common_gfx_func_composite_color_span_get(dc->col.col, dst, w, dc->render_op); | ||
79 | ptr = dst->image.data + (y * dst->cache_entry.w) + x; | ||
80 | for (yy = 0; yy < h; yy++) | ||
81 | { | ||
65 | #ifdef EVAS_SLI | 82 | #ifdef EVAS_SLI |
66 | if (((yy + y) % dc->sli.h) == dc->sli.y) | 83 | if (((yy + y) % dc->sli.h) == dc->sli.y) |
67 | #endif | 84 | #endif |
68 | { | 85 | { |
69 | func(NULL, NULL, dc->col.col, ptr, w); | 86 | func(NULL, NULL, dc->col.col, ptr, w); |
70 | } | 87 | } |
71 | ptr += dst->cache_entry.w; | 88 | ptr += dst->cache_entry.w; |
89 | } | ||
72 | } | 90 | } |
73 | } | 91 | } |
diff --git a/libraries/evas/src/lib/engines/common/evas_scale_sample.c b/libraries/evas/src/lib/engines/common/evas_scale_sample.c index 54b8e92..a8951b8 100644 --- a/libraries/evas/src/lib/engines/common/evas_scale_sample.c +++ b/libraries/evas/src/lib/engines/common/evas_scale_sample.c | |||
@@ -154,7 +154,7 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst, | |||
154 | dst_clip_w = m_clip_w; | 154 | dst_clip_w = m_clip_w; |
155 | dst_clip_h = m_clip_h; | 155 | dst_clip_h = m_clip_h; |
156 | } | 156 | } |
157 | 157 | ||
158 | if (dst_clip_x < dst_region_x) | 158 | if (dst_clip_x < dst_region_x) |
159 | { | 159 | { |
160 | dst_clip_w += dst_clip_x - dst_region_x; | 160 | dst_clip_w += dst_clip_x - dst_region_x; |
@@ -258,7 +258,7 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst, | |||
258 | func = evas_common_gfx_func_composite_pixel_mask_span_get(src, dst, dst_clip_w, dc->render_op); | 258 | func = evas_common_gfx_func_composite_pixel_mask_span_get(src, dst, dst_clip_w, dc->render_op); |
259 | maskobj = dc->mask.mask; | 259 | maskobj = dc->mask.mask; |
260 | mask = maskobj->mask.mask; | 260 | mask = maskobj->mask.mask; |
261 | /* | 261 | /* |
262 | if (1 || dst_region_w > src_region_w || dst_region_h > src_region_h){ | 262 | if (1 || dst_region_w > src_region_w || dst_region_h > src_region_h){ |
263 | printf("Mask w/h: %d/%d\n",maskobj->cache_entry.w, | 263 | printf("Mask w/h: %d/%d\n",maskobj->cache_entry.w, |
264 | maskobj->cache_entry.h); | 264 | maskobj->cache_entry.h); |
@@ -276,26 +276,47 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst, | |||
276 | if ((dst_region_w == src_region_w) && (dst_region_h == src_region_h)) | 276 | if ((dst_region_w == src_region_w) && (dst_region_h == src_region_h)) |
277 | { | 277 | { |
278 | #ifdef HAVE_PIXMAN | 278 | #ifdef HAVE_PIXMAN |
279 | if ((1) && | 279 | # ifdef PIXMAN_IMAGE_SCALE_SAMPLE |
280 | (src->pixman.im) && (dst->pixman.im) && | 280 | if ((src->pixman.im) && (dst->pixman.im) && (!dc->mask.mask) && |
281 | ((!dc->mul.use) || | 281 | ((!dc->mul.use) || |
282 | ((dc->mul.use) && (dc->mul.col == 0xffffffff))) && | 282 | ((dc->mul.use) && (dc->mul.col == 0xffffffff))) && |
283 | ((dc->render_op == _EVAS_RENDER_COPY) || | 283 | ((dc->render_op == _EVAS_RENDER_COPY) || |
284 | (dc->render_op == _EVAS_RENDER_BLEND)) | 284 | (dc->render_op == _EVAS_RENDER_BLEND))) |
285 | ) | ||
286 | { | 285 | { |
287 | pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY | 286 | pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY |
288 | if (dc->render_op == _EVAS_RENDER_BLEND) op = PIXMAN_OP_OVER; | 287 | if (dc->render_op == _EVAS_RENDER_BLEND) |
288 | op = PIXMAN_OP_OVER; | ||
289 | |||
289 | pixman_image_composite(op, | 290 | pixman_image_composite(op, |
290 | src->pixman.im, NULL, | 291 | src->pixman.im, NULL, |
291 | dst->pixman.im, | 292 | dst->pixman.im, |
292 | (dst_clip_x - dst_region_x) + src_region_x, | 293 | (dst_clip_x - dst_region_x) + src_region_x, |
293 | (dst_clip_y - dst_region_y) + src_region_y, | 294 | (dst_clip_y - dst_region_y) + src_region_y, |
294 | 0, 0, | 295 | 0, 0, |
295 | dst_clip_x, dst_clip_y, | 296 | dst_clip_x, dst_clip_y, |
297 | dst_clip_w, dst_clip_h); | ||
298 | } | ||
299 | else if ((src->pixman.im) && (dst->pixman.im) && | ||
300 | (dc->mask.mask) && (dc->mask.mask->pixman.im) && | ||
301 | ((dc->render_op == _EVAS_RENDER_COPY) || | ||
302 | (dc->render_op == _EVAS_RENDER_BLEND))) | ||
303 | { | ||
304 | // In case of pixel and color operation. | ||
305 | pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY | ||
306 | if (dc->render_op == _EVAS_RENDER_BLEND) | ||
307 | op = PIXMAN_OP_OVER; | ||
308 | |||
309 | pixman_image_composite(op, | ||
310 | src->pixman.im, dc->mask.mask->pixman.im, | ||
311 | dst->pixman.im, | ||
312 | (dst_clip_x - dst_region_x) + src_region_x, | ||
313 | (dst_clip_y - dst_region_y) + src_region_y, | ||
314 | 0, 0, | ||
315 | dst_clip_x, dst_clip_y, | ||
296 | dst_clip_w, dst_clip_h); | 316 | dst_clip_w, dst_clip_h); |
297 | } | 317 | } |
298 | else | 318 | else |
319 | # endif | ||
299 | #endif | 320 | #endif |
300 | { | 321 | { |
301 | ptr = src_data + ((dst_clip_y - dst_region_y + src_region_y) * src_w) + (dst_clip_x - dst_region_x) + src_region_x; | 322 | ptr = src_data + ((dst_clip_y - dst_region_y + src_region_y) * src_w) + (dst_clip_x - dst_region_x) + src_region_x; |
@@ -322,59 +343,59 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst, | |||
322 | } | 343 | } |
323 | else | 344 | else |
324 | { | 345 | { |
325 | /* fill scale tables */ | 346 | /* fill scale tables */ |
326 | for (x = 0; x < dst_clip_w; x++) | 347 | for (x = 0; x < dst_clip_w; x++) |
327 | lin_ptr[x] = (((x + dst_clip_x - dst_region_x) * src_region_w) / dst_region_w) + src_region_x; | 348 | lin_ptr[x] = (((x + dst_clip_x - dst_region_x) * src_region_w) / dst_region_w) + src_region_x; |
328 | for (y = 0; y < dst_clip_h; y++) | 349 | for (y = 0; y < dst_clip_h; y++) |
329 | row_ptr[y] = src_data + (((((y + dst_clip_y - dst_region_y) * src_region_h) / dst_region_h) | 350 | row_ptr[y] = src_data + (((((y + dst_clip_y - dst_region_y) * src_region_h) / dst_region_h) |
330 | + src_region_y) * src_w); | 351 | + src_region_y) * src_w); |
331 | /* scale to dst */ | 352 | /* scale to dst */ |
332 | dptr = dst_ptr; | 353 | dptr = dst_ptr; |
333 | #ifdef DIRECT_SCALE | 354 | #ifdef DIRECT_SCALE |
334 | if ((!src->cache_entry.flags.alpha) && | 355 | if ((!src->cache_entry.flags.alpha) && |
335 | (!dst->cache_entry.flags.alpha) && | 356 | (!dst->cache_entry.flags.alpha) && |
336 | (!dc->mul.use)) | 357 | (!dc->mul.use)) |
337 | { | 358 | { |
338 | for (y = 0; y < dst_clip_h; y++) | 359 | for (y = 0; y < dst_clip_h; y++) |
339 | { | 360 | { |
340 | #ifdef EVAS_SLI | 361 | # ifdef EVAS_SLI |
341 | if (((y + dst_clip_y) % dc->sli.h) == dc->sli.y) | 362 | if (((y + dst_clip_y) % dc->sli.h) == dc->sli.y) |
342 | #endif | 363 | # endif |
343 | { | 364 | { |
344 | dst_ptr = dptr; | 365 | dst_ptr = dptr; |
345 | for (x = 0; x < dst_clip_w; x++) | 366 | for (x = 0; x < dst_clip_w; x++) |
346 | { | 367 | { |
347 | ptr = row_ptr[y] + lin_ptr[x]; | 368 | ptr = row_ptr[y] + lin_ptr[x]; |
348 | *dst_ptr = *ptr; | 369 | *dst_ptr = *ptr; |
349 | dst_ptr++; | 370 | dst_ptr++; |
350 | } | 371 | } |
351 | } | 372 | } |
352 | dptr += dst_w; | 373 | dptr += dst_w; |
353 | } | 374 | } |
354 | } | 375 | } |
355 | else | 376 | else |
356 | #endif | 377 | #endif |
357 | { | 378 | { |
358 | /* a scanline buffer */ | 379 | /* a scanline buffer */ |
359 | buf = alloca(dst_clip_w * sizeof(DATA32)); | 380 | buf = alloca(dst_clip_w * sizeof(DATA32)); |
360 | for (y = 0; y < dst_clip_h; y++) | 381 | for (y = 0; y < dst_clip_h; y++) |
361 | { | 382 | { |
362 | #ifdef EVAS_SLI | 383 | #ifdef EVAS_SLI |
363 | if (((y + dst_clip_y) % dc->sli.h) == dc->sli.y) | 384 | if (((y + dst_clip_y) % dc->sli.h) == dc->sli.y) |
364 | #endif | 385 | #endif |
365 | { | 386 | { |
366 | dst_ptr = buf; | 387 | dst_ptr = buf; |
367 | for (x = 0; x < dst_clip_w; x++) | 388 | for (x = 0; x < dst_clip_w; x++) |
368 | { | 389 | { |
369 | ptr = row_ptr[y] + lin_ptr[x]; | 390 | ptr = row_ptr[y] + lin_ptr[x]; |
370 | *dst_ptr = *ptr; | 391 | *dst_ptr = *ptr; |
371 | dst_ptr++; | 392 | dst_ptr++; |
372 | } | 393 | } |
373 | /* * blend here [clip_w *] buf -> dptr * */ | 394 | /* * blend here [clip_w *] buf -> dptr * */ |
374 | func(buf, NULL, dc->mul.col, dptr, dst_clip_w); | 395 | func(buf, NULL, dc->mul.col, dptr, dst_clip_w); |
375 | } | 396 | } |
376 | dptr += dst_w; | 397 | dptr += dst_w; |
377 | } | 398 | } |
378 | } | 399 | } |
379 | } | 400 | } |
380 | } | 401 | } |
diff --git a/libraries/evas/src/lib/engines/common/evas_tiler.c b/libraries/evas/src/lib/engines/common/evas_tiler.c index 0bbe811..ff359a4 100644 --- a/libraries/evas/src/lib/engines/common/evas_tiler.c +++ b/libraries/evas/src/lib/engines/common/evas_tiler.c | |||
@@ -19,7 +19,9 @@ static inline list_node_t *rect_list_add_split_fuzzy(list_t *rects, list_node_t | |||
19 | static inline void rect_list_merge_rects(list_t *rects, list_t *to_merge, int accepted_error); | 19 | static inline void rect_list_merge_rects(list_t *rects, list_t *to_merge, int accepted_error); |
20 | static inline void rect_list_add_split_fuzzy_and_merge(list_t *rects, list_node_t *node, int split_accepted_error, int merge_accepted_error); | 20 | static inline void rect_list_add_split_fuzzy_and_merge(list_t *rects, list_node_t *node, int split_accepted_error, int merge_accepted_error); |
21 | static inline void rect_print(const rect_t r); | 21 | static inline void rect_print(const rect_t r); |
22 | #if 0 | ||
22 | static inline void rect_list_print(const list_t rects); | 23 | static inline void rect_list_print(const list_t rects); |
24 | #endif | ||
23 | 25 | ||
24 | static const list_node_t list_node_zeroed = { NULL }; | 26 | static const list_node_t list_node_zeroed = { NULL }; |
25 | static const list_t list_zeroed = { NULL, NULL }; | 27 | static const list_t list_zeroed = { NULL, NULL }; |
@@ -117,6 +119,7 @@ rect_print(const rect_t r) | |||
117 | INF("<rect(%d, %d, %d, %d)>", r.left, r.top, r.width, r.height); | 119 | INF("<rect(%d, %d, %d, %d)>", r.left, r.top, r.width, r.height); |
118 | } | 120 | } |
119 | 121 | ||
122 | #if 0 | ||
120 | static inline void | 123 | static inline void |
121 | rect_list_print(const list_t rects) | 124 | rect_list_print(const list_t rects) |
122 | { | 125 | { |
@@ -143,6 +146,7 @@ rect_list_print(const list_t rects) | |||
143 | } | 146 | } |
144 | putchar(']'); | 147 | putchar(']'); |
145 | } | 148 | } |
149 | #endif | ||
146 | 150 | ||
147 | static inline void | 151 | static inline void |
148 | rect_list_append_node(list_t *rects, list_node_t *node) | 152 | rect_list_append_node(list_t *rects, list_node_t *node) |
diff --git a/libraries/evas/src/lib/engines/common/language/evas_bidi_utils.c b/libraries/evas/src/lib/engines/common/language/evas_bidi_utils.c index 9f7859b..002cfbe 100644 --- a/libraries/evas/src/lib/engines/common/language/evas_bidi_utils.c +++ b/libraries/evas/src/lib/engines/common/language/evas_bidi_utils.c | |||
@@ -1,3 +1,7 @@ | |||
1 | #ifdef HAVE_CONFIG_H | ||
2 | # include <config.h> | ||
3 | #endif | ||
4 | |||
1 | #include <string.h> | 5 | #include <string.h> |
2 | #include <stdlib.h> | 6 | #include <stdlib.h> |
3 | 7 | ||
diff --git a/libraries/evas/src/lib/engines/common/language/evas_language_utils.c b/libraries/evas/src/lib/engines/common/language/evas_language_utils.c index 9c9b3e3..b362f10 100644 --- a/libraries/evas/src/lib/engines/common/language/evas_language_utils.c +++ b/libraries/evas/src/lib/engines/common/language/evas_language_utils.c | |||
@@ -13,6 +13,12 @@ | |||
13 | * | 13 | * |
14 | * @{ | 14 | * @{ |
15 | */ | 15 | */ |
16 | #ifdef HAVE_CONFIG_H | ||
17 | # include <config.h> | ||
18 | #endif | ||
19 | |||
20 | #include <stdlib.h> | ||
21 | |||
16 | #include <Eina.h> | 22 | #include <Eina.h> |
17 | 23 | ||
18 | #include "evas_language_utils.h" | 24 | #include "evas_language_utils.h" |
diff --git a/libraries/evas/src/lib/engines/common_16/Makefile.in b/libraries/evas/src/lib/engines/common_16/Makefile.in index 9097a8d..313cbda 100644 --- a/libraries/evas/src/lib/engines/common_16/Makefile.in +++ b/libraries/evas/src/lib/engines/common_16/Makefile.in | |||
@@ -201,8 +201,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
201 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 201 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
202 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 202 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
203 | PKG_CONFIG = @PKG_CONFIG@ | 203 | PKG_CONFIG = @PKG_CONFIG@ |
204 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
205 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
206 | PNG_CFLAGS = @PNG_CFLAGS@ | 204 | PNG_CFLAGS = @PNG_CFLAGS@ |
207 | PNG_LIBS = @PNG_LIBS@ | 205 | PNG_LIBS = @PNG_LIBS@ |
208 | RANLIB = @RANLIB@ | 206 | RANLIB = @RANLIB@ |
@@ -219,6 +217,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
219 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 217 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
220 | VERSION = @VERSION@ | 218 | VERSION = @VERSION@ |
221 | VMAJ = @VMAJ@ | 219 | VMAJ = @VMAJ@ |
220 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
221 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
222 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 222 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
223 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 223 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
224 | XCB_CFLAGS = @XCB_CFLAGS@ | 224 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -300,6 +300,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
300 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 300 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
301 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 301 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
302 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 302 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
303 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
304 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
305 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
306 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
303 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 307 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
304 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 308 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
305 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 309 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/engines/common_8/Makefile.in b/libraries/evas/src/lib/engines/common_8/Makefile.in index 06c13de..7fa4fbb 100644 --- a/libraries/evas/src/lib/engines/common_8/Makefile.in +++ b/libraries/evas/src/lib/engines/common_8/Makefile.in | |||
@@ -200,8 +200,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
200 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 200 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
201 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 201 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
202 | PKG_CONFIG = @PKG_CONFIG@ | 202 | PKG_CONFIG = @PKG_CONFIG@ |
203 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
204 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
205 | PNG_CFLAGS = @PNG_CFLAGS@ | 203 | PNG_CFLAGS = @PNG_CFLAGS@ |
206 | PNG_LIBS = @PNG_LIBS@ | 204 | PNG_LIBS = @PNG_LIBS@ |
207 | RANLIB = @RANLIB@ | 205 | RANLIB = @RANLIB@ |
@@ -218,6 +216,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
218 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 216 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
219 | VERSION = @VERSION@ | 217 | VERSION = @VERSION@ |
220 | VMAJ = @VMAJ@ | 218 | VMAJ = @VMAJ@ |
219 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
220 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
221 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 221 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
222 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 222 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
223 | XCB_CFLAGS = @XCB_CFLAGS@ | 223 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -299,6 +299,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
299 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 299 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
300 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 300 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
301 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 301 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
302 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
303 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
304 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
305 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
302 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 306 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
303 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 307 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
304 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 308 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/file/Makefile.in b/libraries/evas/src/lib/file/Makefile.in index 599d980..2ac89b1 100644 --- a/libraries/evas/src/lib/file/Makefile.in +++ b/libraries/evas/src/lib/file/Makefile.in | |||
@@ -196,8 +196,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
196 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 196 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
197 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 197 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
198 | PKG_CONFIG = @PKG_CONFIG@ | 198 | PKG_CONFIG = @PKG_CONFIG@ |
199 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
200 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
201 | PNG_CFLAGS = @PNG_CFLAGS@ | 199 | PNG_CFLAGS = @PNG_CFLAGS@ |
202 | PNG_LIBS = @PNG_LIBS@ | 200 | PNG_LIBS = @PNG_LIBS@ |
203 | RANLIB = @RANLIB@ | 201 | RANLIB = @RANLIB@ |
@@ -214,6 +212,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
214 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 212 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
215 | VERSION = @VERSION@ | 213 | VERSION = @VERSION@ |
216 | VMAJ = @VMAJ@ | 214 | VMAJ = @VMAJ@ |
215 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
216 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
217 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 217 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
218 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 218 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
219 | XCB_CFLAGS = @XCB_CFLAGS@ | 219 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -295,6 +295,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
295 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 295 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
296 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 296 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
297 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 297 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
298 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
299 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
300 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
301 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
298 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 302 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
299 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 303 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
300 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 304 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/file/evas_module.c b/libraries/evas/src/lib/file/evas_module.c index 6b4d4f6..21d5cd0 100644 --- a/libraries/evas/src/lib/file/evas_module.c +++ b/libraries/evas/src/lib/file/evas_module.c | |||
@@ -285,7 +285,7 @@ evas_module_register(const Evas_Module_Api *module, Evas_Module_Type type) | |||
285 | if (type == EVAS_MODULE_TYPE_ENGINE) | 285 | if (type == EVAS_MODULE_TYPE_ENGINE) |
286 | { | 286 | { |
287 | eina_array_push(evas_engines, em); | 287 | eina_array_push(evas_engines, em); |
288 | em->id_engine = eina_array_count_get(evas_engines); | 288 | em->id_engine = eina_array_count(evas_engines); |
289 | } | 289 | } |
290 | 290 | ||
291 | eina_hash_direct_add(evas_modules[type], module->name, em); | 291 | eina_hash_direct_add(evas_modules[type], module->name, em); |
@@ -398,7 +398,7 @@ Evas_Module * | |||
398 | evas_module_engine_get(int render_method) | 398 | evas_module_engine_get(int render_method) |
399 | { | 399 | { |
400 | if ((render_method <= 0) || | 400 | if ((render_method <= 0) || |
401 | ((unsigned int)render_method > eina_array_count_get(evas_engines))) | 401 | ((unsigned int)render_method > eina_array_count(evas_engines))) |
402 | return NULL; | 402 | return NULL; |
403 | return eina_array_data_get(evas_engines, render_method - 1); | 403 | return eina_array_data_get(evas_engines, render_method - 1); |
404 | } | 404 | } |
diff --git a/libraries/evas/src/lib/file/evas_path.c b/libraries/evas/src/lib/file/evas_path.c index ff13e20..c663c16 100644 --- a/libraries/evas/src/lib/file/evas_path.c +++ b/libraries/evas/src/lib/file/evas_path.c | |||
@@ -123,7 +123,7 @@ evas_file_path_list(char *path, const char *match, int match_case) | |||
123 | else | 123 | else |
124 | files = eina_list_append(files, strdup(info->path + info->name_start)); | 124 | files = eina_list_append(files, strdup(info->path + info->name_start)); |
125 | } | 125 | } |
126 | eina_iterator_free(it); | 126 | if (it) eina_iterator_free(it); |
127 | return files; | 127 | return files; |
128 | } | 128 | } |
129 | 129 | ||
diff --git a/libraries/evas/src/lib/include/Makefile.in b/libraries/evas/src/lib/include/Makefile.in index 9d5c371..21f0099 100644 --- a/libraries/evas/src/lib/include/Makefile.in +++ b/libraries/evas/src/lib/include/Makefile.in | |||
@@ -166,8 +166,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
167 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 167 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
168 | PKG_CONFIG = @PKG_CONFIG@ | 168 | PKG_CONFIG = @PKG_CONFIG@ |
169 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
170 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
171 | PNG_CFLAGS = @PNG_CFLAGS@ | 169 | PNG_CFLAGS = @PNG_CFLAGS@ |
172 | PNG_LIBS = @PNG_LIBS@ | 170 | PNG_LIBS = @PNG_LIBS@ |
173 | RANLIB = @RANLIB@ | 171 | RANLIB = @RANLIB@ |
@@ -184,6 +182,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
184 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 182 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
185 | VERSION = @VERSION@ | 183 | VERSION = @VERSION@ |
186 | VMAJ = @VMAJ@ | 184 | VMAJ = @VMAJ@ |
185 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
186 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
187 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 187 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
189 | XCB_CFLAGS = @XCB_CFLAGS@ | 189 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -265,6 +265,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
268 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
269 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
270 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
271 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
268 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 272 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
269 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 273 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
270 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 274 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/include/evas_common.h b/libraries/evas/src/lib/include/evas_common.h index f817202..a9063e6 100644 --- a/libraries/evas/src/lib/include/evas_common.h +++ b/libraries/evas/src/lib/include/evas_common.h | |||
@@ -1,9 +1,9 @@ | |||
1 | #ifndef EVAS_COMMON_H | 1 | #ifndef EVAS_COMMON_H |
2 | #define EVAS_COMMON_H | 2 | #define EVAS_COMMON_H |
3 | 3 | ||
4 | #ifdef HAVE_CONFIG_H | 4 | //#ifdef HAVE_CONFIG_H |
5 | # include "config.h" /* so that EAPI in Evas.h is correctly defined */ | 5 | #include "config.h" /* so that EAPI in Evas.h is correctly defined */ |
6 | #endif | 6 | //#endif |
7 | 7 | ||
8 | #ifdef HAVE_EVIL | 8 | #ifdef HAVE_EVIL |
9 | # include <Evil.h> | 9 | # include <Evil.h> |
@@ -138,8 +138,6 @@ extern EAPI int _evas_log_dom_global; | |||
138 | # define BUILD_PTHREAD | 138 | # define BUILD_PTHREAD |
139 | #endif | 139 | #endif |
140 | 140 | ||
141 | #ifdef BUILD_PTHREAD | ||
142 | |||
143 | #define LK(x) Eina_Lock x | 141 | #define LK(x) Eina_Lock x |
144 | #define LKI(x) eina_lock_new(&(x)) | 142 | #define LKI(x) eina_lock_new(&(x)) |
145 | #define LKD(x) eina_lock_free(&(x)) | 143 | #define LKD(x) eina_lock_free(&(x)) |
@@ -148,42 +146,28 @@ extern EAPI int _evas_log_dom_global; | |||
148 | #define LKU(x) eina_lock_release(&(x)) | 146 | #define LKU(x) eina_lock_release(&(x)) |
149 | #define LKDBG(x) eina_lock_debug(&(x)) | 147 | #define LKDBG(x) eina_lock_debug(&(x)) |
150 | 148 | ||
149 | /* for rwlocks */ | ||
150 | #define RWLK(x) Eina_RWLock x | ||
151 | #define RWLKI(x) eina_rwlock_new(&(x)) | ||
152 | #define RWLKD(x) eina_rwlock_free(&(x)) | ||
153 | #define RDLKL(x) eina_rwlock_take_read(&(x)) | ||
154 | #define WRLKL(x) eina_rwlock_take_write(&(x)) | ||
155 | #define RWLKU(x) eina_rwlock_release(&(x)) | ||
156 | |||
157 | #ifdef BUILD_PTHREAD | ||
158 | |||
151 | # define TH(x) pthread_t x | 159 | # define TH(x) pthread_t x |
152 | # define THI(x) int x | 160 | # define THI(x) int x |
153 | # define TH_MAX 8 | 161 | # define TH_MAX 8 |
154 | 162 | ||
155 | /* for rwlocks */ | ||
156 | #define RWLK(x) pthread_rwlock_t x | ||
157 | #define RWLKI(x) pthread_rwlock_init(&(x), NULL) | ||
158 | #define RWLKD(x) pthread_rwlock_destroy(&(x)) | ||
159 | #define RDLKL(x) pthread_rwlock_rdlock(&(x)) | ||
160 | #define WRLKL(x) pthread_rwlock_wrlock(&(x)) | ||
161 | #define RWLKU(x) pthread_rwlock_unlock(&(x)) | ||
162 | |||
163 | |||
164 | // even though in theory having every Nth rendered line done by a different | 163 | // even though in theory having every Nth rendered line done by a different |
165 | // thread might even out load across threads - it actually slows things down. | 164 | // thread might even out load across threads - it actually slows things down. |
166 | //#define EVAS_SLI 1 | 165 | //#define EVAS_SLI 1 |
167 | 166 | ||
168 | #else | 167 | #else |
169 | # define LK(x) | ||
170 | # define LKI(x) | ||
171 | # define LKD(x) | ||
172 | # define LKL(x) | ||
173 | # define LKT(x) 1 | ||
174 | # define LKU(x) | ||
175 | # define TH(x) | 168 | # define TH(x) |
176 | # define THI(x) | 169 | # define THI(x) |
177 | # define TH_MAX 0 | 170 | # define TH_MAX 0 |
178 | # define LKDBG(x) | ||
179 | |||
180 | /* for rwlocks */ | ||
181 | #define RWLK(x) | ||
182 | #define RWLKI(x) | ||
183 | #define RWLKD(x) | ||
184 | #define RDLKL(x) | ||
185 | #define WRLKL(x) | ||
186 | #define RWLKU(x) | ||
187 | 171 | ||
188 | #endif | 172 | #endif |
189 | 173 | ||
@@ -338,6 +322,21 @@ void *alloca (size_t); | |||
338 | #define pld(addr, off) | 322 | #define pld(addr, off) |
339 | #endif /* __ARMEL__ */ | 323 | #endif /* __ARMEL__ */ |
340 | 324 | ||
325 | // these here are in config.h - just here for documentation | ||
326 | //#ifdef __ARM_ARCH__ | ||
327 | // *IF* you enable pixman, this determines which things pixman will do | ||
328 | ////#define PIXMAN_FONT 1 | ||
329 | ////#define PIXMAN_RECT 1 | ||
330 | ////#define PIXMAN_LINE 1 | ||
331 | ////#define PIXMAN_POLY 1 | ||
332 | //#define PIXMAN_IMAGE 1 | ||
333 | //#define PIXMAN_IMAGE_SCALE_SAMPLE 1 | ||
334 | //#endif | ||
335 | // not related to pixman but an alternate rotate code | ||
336 | //#define TILE_ROTATE 1 | ||
337 | |||
338 | #define TILE_CACHE_LINE_SIZE 64 | ||
339 | |||
341 | /*****************************************************************************/ | 340 | /*****************************************************************************/ |
342 | 341 | ||
343 | #define UNROLL2(op...) op op | 342 | #define UNROLL2(op...) op op |
@@ -678,6 +677,9 @@ struct _RGBA_Draw_Context | |||
678 | DATA32 col; | 677 | DATA32 col; |
679 | } mul; | 678 | } mul; |
680 | struct { | 679 | struct { |
680 | #ifdef HAVE_PIXMAN | ||
681 | pixman_image_t *pixman_color_image; | ||
682 | #endif | ||
681 | DATA32 col; | 683 | DATA32 col; |
682 | } col; | 684 | } col; |
683 | struct RGBA_Draw_Context_clip { | 685 | struct RGBA_Draw_Context_clip { |
@@ -1032,14 +1034,14 @@ struct _Tilebuf | |||
1032 | int x, y, w, h; | 1034 | int x, y, w, h; |
1033 | } prev_add, prev_del; | 1035 | } prev_add, prev_del; |
1034 | #ifdef RECTUPDATE | 1036 | #ifdef RECTUPDATE |
1035 | /* | 1037 | /* |
1036 | Regionbuf *rb; | 1038 | Regionbuf *rb; |
1037 | */ | 1039 | */ |
1038 | #elif defined(EVAS_RECT_SPLIT) | 1040 | #elif defined(EVAS_RECT_SPLIT) |
1039 | int need_merge; | 1041 | int need_merge; |
1040 | list_t rects; | 1042 | list_t rects; |
1041 | #else | 1043 | #else |
1042 | /* | 1044 | /* |
1043 | struct { | 1045 | struct { |
1044 | int w, h; | 1046 | int w, h; |
1045 | Tilebuf_Tile *tiles; | 1047 | Tilebuf_Tile *tiles; |
diff --git a/libraries/evas/src/lib/include/evas_private.h b/libraries/evas/src/lib/include/evas_private.h index 90498d0..84c1d36 100644 --- a/libraries/evas/src/lib/include/evas_private.h +++ b/libraries/evas/src/lib/include/evas_private.h | |||
@@ -301,12 +301,13 @@ struct _Evas | |||
301 | struct { | 301 | struct { |
302 | unsigned char inside : 1; | 302 | unsigned char inside : 1; |
303 | int mouse_grabbed; | 303 | int mouse_grabbed; |
304 | int downs; | ||
304 | DATA32 button; | 305 | DATA32 button; |
305 | Evas_Coord x, y; | 306 | Evas_Coord x, y; |
307 | int nogrep; | ||
306 | struct { | 308 | struct { |
307 | Eina_List *in; | 309 | Eina_List *in; |
308 | } object; | 310 | } object; |
309 | |||
310 | } pointer; | 311 | } pointer; |
311 | 312 | ||
312 | struct { | 313 | struct { |
@@ -320,6 +321,12 @@ struct _Evas | |||
320 | unsigned char changed : 1; | 321 | unsigned char changed : 1; |
321 | } output; | 322 | } output; |
322 | 323 | ||
324 | struct | ||
325 | { | ||
326 | Evas_Coord x, y, w, h; | ||
327 | Eina_Bool changed : 1; | ||
328 | } framespace; | ||
329 | |||
323 | Eina_List *damages; | 330 | Eina_List *damages; |
324 | Eina_List *obscures; | 331 | Eina_List *obscures; |
325 | 332 | ||
@@ -331,6 +338,7 @@ struct _Evas | |||
331 | 338 | ||
332 | int walking_list; | 339 | int walking_list; |
333 | int events_frozen; | 340 | int events_frozen; |
341 | Evas_Event_Flags default_event_flags; | ||
334 | 342 | ||
335 | struct { | 343 | struct { |
336 | Evas_Module *module; | 344 | Evas_Module *module; |
@@ -577,7 +585,7 @@ struct _Evas_Object | |||
577 | unsigned char recalculate_cycle; | 585 | unsigned char recalculate_cycle; |
578 | Eina_Clist calc_entry; | 586 | Eina_Clist calc_entry; |
579 | 587 | ||
580 | Evas_Object_Pointer_Mode pointer_mode : 1; | 588 | Evas_Object_Pointer_Mode pointer_mode : 2; |
581 | 589 | ||
582 | Eina_Bool store : 1; | 590 | Eina_Bool store : 1; |
583 | Eina_Bool pass_events : 1; | 591 | Eina_Bool pass_events : 1; |
@@ -608,6 +616,8 @@ struct _Evas_Object | |||
608 | Eina_Bool changed_move_only : 1; | 616 | Eina_Bool changed_move_only : 1; |
609 | Eina_Bool changed_nomove : 1; | 617 | Eina_Bool changed_nomove : 1; |
610 | Eina_Bool del_ref : 1; | 618 | Eina_Bool del_ref : 1; |
619 | |||
620 | Eina_Bool is_frame : 1; | ||
611 | }; | 621 | }; |
612 | 622 | ||
613 | struct _Evas_Func_Node | 623 | struct _Evas_Func_Node |
@@ -772,6 +782,7 @@ struct _Evas_Func | |||
772 | char *(*image_format_get) (void *data, void *image); | 782 | char *(*image_format_get) (void *data, void *image); |
773 | void (*image_colorspace_set) (void *data, void *image, int cspace); | 783 | void (*image_colorspace_set) (void *data, void *image, int cspace); |
774 | int (*image_colorspace_get) (void *data, void *image); | 784 | int (*image_colorspace_get) (void *data, void *image); |
785 | Eina_Bool (*image_can_region_get) (void *data, void *image); | ||
775 | void (*image_mask_create) (void *data, void *image); | 786 | void (*image_mask_create) (void *data, void *image); |
776 | void *(*image_native_set) (void *data, void *image, void *native); | 787 | void *(*image_native_set) (void *data, void *image, void *native); |
777 | void *(*image_native_get) (void *data, void *image); | 788 | void *(*image_native_get) (void *data, void *image); |
@@ -861,6 +872,7 @@ struct _Evas_Image_Load_Func | |||
861 | Eina_Bool (*file_head) (Image_Entry *ie, const char *file, const char *key, int *error); | 872 | Eina_Bool (*file_head) (Image_Entry *ie, const char *file, const char *key, int *error); |
862 | Eina_Bool (*file_data) (Image_Entry *ie, const char *file, const char *key, int *error); | 873 | Eina_Bool (*file_data) (Image_Entry *ie, const char *file, const char *key, int *error); |
863 | double (*frame_duration) (Image_Entry *ie, const char *file, const int start, const int frame_num); | 874 | double (*frame_duration) (Image_Entry *ie, const char *file, const int start, const int frame_num); |
875 | Eina_Bool do_region; | ||
864 | }; | 876 | }; |
865 | 877 | ||
866 | struct _Evas_Image_Save_Func | 878 | struct _Evas_Image_Save_Func |
@@ -904,7 +916,7 @@ void evas_object_clip_across_check(Evas_Object *obj); | |||
904 | void evas_object_clip_across_clippees_check(Evas_Object *obj); | 916 | void evas_object_clip_across_clippees_check(Evas_Object *obj); |
905 | void evas_object_mapped_clip_across_mark(Evas_Object *obj); | 917 | void evas_object_mapped_clip_across_mark(Evas_Object *obj); |
906 | void evas_event_callback_call(Evas *e, Evas_Callback_Type type, void *event_info); | 918 | void evas_event_callback_call(Evas *e, Evas_Callback_Type type, void *event_info); |
907 | void evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void *event_info); | 919 | void evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void *event_info, int event_id); |
908 | Eina_List *evas_event_objects_event_list(Evas *e, Evas_Object *stop, int x, int y); | 920 | Eina_List *evas_event_objects_event_list(Evas *e, Evas_Object *stop, int x, int y); |
909 | int evas_mem_free(int mem_required); | 921 | int evas_mem_free(int mem_required); |
910 | int evas_mem_degrade(int mem_required); | 922 | int evas_mem_degrade(int mem_required); |
diff --git a/libraries/evas/src/modules/Makefile.in b/libraries/evas/src/modules/Makefile.in index 9cd0201..e4f1cbc 100644 --- a/libraries/evas/src/modules/Makefile.in +++ b/libraries/evas/src/modules/Makefile.in | |||
@@ -206,8 +206,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
206 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 206 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
207 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 207 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
208 | PKG_CONFIG = @PKG_CONFIG@ | 208 | PKG_CONFIG = @PKG_CONFIG@ |
209 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
210 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
211 | PNG_CFLAGS = @PNG_CFLAGS@ | 209 | PNG_CFLAGS = @PNG_CFLAGS@ |
212 | PNG_LIBS = @PNG_LIBS@ | 210 | PNG_LIBS = @PNG_LIBS@ |
213 | RANLIB = @RANLIB@ | 211 | RANLIB = @RANLIB@ |
@@ -224,6 +222,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
224 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 222 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
225 | VERSION = @VERSION@ | 223 | VERSION = @VERSION@ |
226 | VMAJ = @VMAJ@ | 224 | VMAJ = @VMAJ@ |
225 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
226 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
227 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 227 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
228 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 228 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
229 | XCB_CFLAGS = @XCB_CFLAGS@ | 229 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -305,6 +305,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
305 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 305 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
306 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 306 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
307 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 307 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
308 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
309 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
310 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
311 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
308 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 312 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
309 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 313 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
310 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 314 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/engines/Makefile.am b/libraries/evas/src/modules/engines/Makefile.am index 7d870a1..42585cc 100644 --- a/libraries/evas/src/modules/engines/Makefile.am +++ b/libraries/evas/src/modules/engines/Makefile.am | |||
@@ -68,4 +68,9 @@ endif | |||
68 | if !EVAS_STATIC_BUILD_SOFTWARE_X11 | 68 | if !EVAS_STATIC_BUILD_SOFTWARE_X11 |
69 | SUBDIRS += software_x11 | 69 | SUBDIRS += software_x11 |
70 | endif | 70 | endif |
71 | 71 | if !EVAS_STATIC_BUILD_WAYLAND_SHM | |
72 | SUBDIRS += wayland_shm | ||
73 | endif | ||
74 | if !EVAS_STATIC_BUILD_WAYLAND_EGL | ||
75 | SUBDIRS += wayland_egl | ||
76 | endif | ||
diff --git a/libraries/evas/src/modules/engines/Makefile.in b/libraries/evas/src/modules/engines/Makefile.in index 3994fca..5820026 100644 --- a/libraries/evas/src/modules/engines/Makefile.in +++ b/libraries/evas/src/modules/engines/Makefile.in | |||
@@ -54,6 +54,8 @@ host_triplet = @host@ | |||
54 | @EVAS_STATIC_BUILD_SOFTWARE_DDRAW_FALSE@am__append_19 = software_ddraw | 54 | @EVAS_STATIC_BUILD_SOFTWARE_DDRAW_FALSE@am__append_19 = software_ddraw |
55 | @EVAS_STATIC_BUILD_SOFTWARE_GDI_FALSE@am__append_20 = software_gdi | 55 | @EVAS_STATIC_BUILD_SOFTWARE_GDI_FALSE@am__append_20 = software_gdi |
56 | @EVAS_STATIC_BUILD_SOFTWARE_X11_FALSE@am__append_21 = software_x11 | 56 | @EVAS_STATIC_BUILD_SOFTWARE_X11_FALSE@am__append_21 = software_x11 |
57 | @EVAS_STATIC_BUILD_WAYLAND_SHM_FALSE@am__append_22 = wayland_shm | ||
58 | @EVAS_STATIC_BUILD_WAYLAND_EGL_FALSE@am__append_23 = wayland_egl | ||
57 | subdir = src/modules/engines | 59 | subdir = src/modules/engines |
58 | DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in | 60 | DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in |
59 | ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 | 61 | ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 |
@@ -102,7 +104,7 @@ DIST_SUBDIRS = software_generic buffer direct3d directfb fb psl1ght \ | |||
102 | gl_common gl_x11 gl_sdl gl_cocoa software_8 software_8_x11 \ | 104 | gl_common gl_x11 gl_sdl gl_cocoa software_8 software_8_x11 \ |
103 | software_16 software_16_ddraw software_16_wince \ | 105 | software_16 software_16_ddraw software_16_wince \ |
104 | software_16_x11 software_sdl software_16_sdl software_ddraw \ | 106 | software_16_x11 software_sdl software_16_sdl software_ddraw \ |
105 | software_gdi software_x11 | 107 | software_gdi software_x11 wayland_shm wayland_egl |
106 | DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) | 108 | DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) |
107 | am__relativize = \ | 109 | am__relativize = \ |
108 | dir0=`pwd`; \ | 110 | dir0=`pwd`; \ |
@@ -231,8 +233,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 233 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
232 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 234 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
233 | PKG_CONFIG = @PKG_CONFIG@ | 235 | PKG_CONFIG = @PKG_CONFIG@ |
234 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
235 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
236 | PNG_CFLAGS = @PNG_CFLAGS@ | 236 | PNG_CFLAGS = @PNG_CFLAGS@ |
237 | PNG_LIBS = @PNG_LIBS@ | 237 | PNG_LIBS = @PNG_LIBS@ |
238 | RANLIB = @RANLIB@ | 238 | RANLIB = @RANLIB@ |
@@ -249,6 +249,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
249 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 249 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
250 | VERSION = @VERSION@ | 250 | VERSION = @VERSION@ |
251 | VMAJ = @VMAJ@ | 251 | VMAJ = @VMAJ@ |
252 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
253 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
252 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 254 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 255 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
254 | XCB_CFLAGS = @XCB_CFLAGS@ | 256 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -330,6 +332,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 332 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 333 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 334 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
335 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
336 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
337 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
338 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
333 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 339 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
334 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 340 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
335 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 341 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
@@ -411,7 +417,8 @@ SUBDIRS = $(am__append_1) $(am__append_2) $(am__append_3) \ | |||
411 | $(am__append_10) $(am__append_11) $(am__append_12) \ | 417 | $(am__append_10) $(am__append_11) $(am__append_12) \ |
412 | $(am__append_13) $(am__append_14) $(am__append_15) \ | 418 | $(am__append_13) $(am__append_14) $(am__append_15) \ |
413 | $(am__append_16) $(am__append_17) $(am__append_18) \ | 419 | $(am__append_16) $(am__append_17) $(am__append_18) \ |
414 | $(am__append_19) $(am__append_20) $(am__append_21) | 420 | $(am__append_19) $(am__append_20) $(am__append_21) \ |
421 | $(am__append_22) $(am__append_23) | ||
415 | all: all-recursive | 422 | all: all-recursive |
416 | 423 | ||
417 | .SUFFIXES: | 424 | .SUFFIXES: |
diff --git a/libraries/evas/src/modules/engines/buffer/Makefile.in b/libraries/evas/src/modules/engines/buffer/Makefile.in index 2311344..ec9c0b8 100644 --- a/libraries/evas/src/modules/engines/buffer/Makefile.in +++ b/libraries/evas/src/modules/engines/buffer/Makefile.in | |||
@@ -240,8 +240,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
240 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 240 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
241 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 241 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
242 | PKG_CONFIG = @PKG_CONFIG@ | 242 | PKG_CONFIG = @PKG_CONFIG@ |
243 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
244 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
245 | PNG_CFLAGS = @PNG_CFLAGS@ | 243 | PNG_CFLAGS = @PNG_CFLAGS@ |
246 | PNG_LIBS = @PNG_LIBS@ | 244 | PNG_LIBS = @PNG_LIBS@ |
247 | RANLIB = @RANLIB@ | 245 | RANLIB = @RANLIB@ |
@@ -258,6 +256,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
258 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 256 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
259 | VERSION = @VERSION@ | 257 | VERSION = @VERSION@ |
260 | VMAJ = @VMAJ@ | 258 | VMAJ = @VMAJ@ |
259 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
260 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
261 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 261 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
262 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 262 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
263 | XCB_CFLAGS = @XCB_CFLAGS@ | 263 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -339,6 +339,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
339 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 339 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
340 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 340 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
341 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 341 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
342 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
343 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
344 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
345 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
342 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 346 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
343 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 347 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
344 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 348 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/engines/direct3d/Makefile.in b/libraries/evas/src/modules/engines/direct3d/Makefile.in index 03d892e..85baff8 100644 --- a/libraries/evas/src/modules/engines/direct3d/Makefile.in +++ b/libraries/evas/src/modules/engines/direct3d/Makefile.in | |||
@@ -293,8 +293,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
293 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 293 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
294 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 294 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
295 | PKG_CONFIG = @PKG_CONFIG@ | 295 | PKG_CONFIG = @PKG_CONFIG@ |
296 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
297 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
298 | PNG_CFLAGS = @PNG_CFLAGS@ | 296 | PNG_CFLAGS = @PNG_CFLAGS@ |
299 | PNG_LIBS = @PNG_LIBS@ | 297 | PNG_LIBS = @PNG_LIBS@ |
300 | RANLIB = @RANLIB@ | 298 | RANLIB = @RANLIB@ |
@@ -311,6 +309,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
311 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 309 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
312 | VERSION = @VERSION@ | 310 | VERSION = @VERSION@ |
313 | VMAJ = @VMAJ@ | 311 | VMAJ = @VMAJ@ |
312 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
313 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
314 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 314 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
315 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 315 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
316 | XCB_CFLAGS = @XCB_CFLAGS@ | 316 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -392,6 +392,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
392 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 392 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
393 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 393 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
394 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 394 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
395 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
396 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
397 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
398 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
395 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 399 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
396 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 400 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
397 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 401 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/engines/directfb/Makefile.in b/libraries/evas/src/modules/engines/directfb/Makefile.in index cd5651a..df2f63b 100644 --- a/libraries/evas/src/modules/engines/directfb/Makefile.in +++ b/libraries/evas/src/modules/engines/directfb/Makefile.in | |||
@@ -240,8 +240,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
240 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 240 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
241 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 241 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
242 | PKG_CONFIG = @PKG_CONFIG@ | 242 | PKG_CONFIG = @PKG_CONFIG@ |
243 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
244 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
245 | PNG_CFLAGS = @PNG_CFLAGS@ | 243 | PNG_CFLAGS = @PNG_CFLAGS@ |
246 | PNG_LIBS = @PNG_LIBS@ | 244 | PNG_LIBS = @PNG_LIBS@ |
247 | RANLIB = @RANLIB@ | 245 | RANLIB = @RANLIB@ |
@@ -258,6 +256,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
258 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 256 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
259 | VERSION = @VERSION@ | 257 | VERSION = @VERSION@ |
260 | VMAJ = @VMAJ@ | 258 | VMAJ = @VMAJ@ |
259 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
260 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
261 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 261 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
262 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 262 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
263 | XCB_CFLAGS = @XCB_CFLAGS@ | 263 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -339,6 +339,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
339 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 339 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
340 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 340 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
341 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 341 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
342 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
343 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
344 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
345 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
342 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 346 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
343 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 347 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
344 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 348 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/engines/fb/Makefile.in b/libraries/evas/src/modules/engines/fb/Makefile.in index aec24ff..1e82b34 100644 --- a/libraries/evas/src/modules/engines/fb/Makefile.in +++ b/libraries/evas/src/modules/engines/fb/Makefile.in | |||
@@ -244,8 +244,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
244 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 244 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
245 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 245 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
246 | PKG_CONFIG = @PKG_CONFIG@ | 246 | PKG_CONFIG = @PKG_CONFIG@ |
247 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
248 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
249 | PNG_CFLAGS = @PNG_CFLAGS@ | 247 | PNG_CFLAGS = @PNG_CFLAGS@ |
250 | PNG_LIBS = @PNG_LIBS@ | 248 | PNG_LIBS = @PNG_LIBS@ |
251 | RANLIB = @RANLIB@ | 249 | RANLIB = @RANLIB@ |
@@ -262,6 +260,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
262 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 260 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
263 | VERSION = @VERSION@ | 261 | VERSION = @VERSION@ |
264 | VMAJ = @VMAJ@ | 262 | VMAJ = @VMAJ@ |
263 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
264 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
265 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 265 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
266 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 266 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
267 | XCB_CFLAGS = @XCB_CFLAGS@ | 267 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -343,6 +343,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
343 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 343 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
344 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 344 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
345 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 345 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
346 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
347 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
348 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
349 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
346 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 350 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
347 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 351 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
348 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 352 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/engines/gl_cocoa/Makefile.in b/libraries/evas/src/modules/engines/gl_cocoa/Makefile.in index ceea03d..6e616f4 100644 --- a/libraries/evas/src/modules/engines/gl_cocoa/Makefile.in +++ b/libraries/evas/src/modules/engines/gl_cocoa/Makefile.in | |||
@@ -258,8 +258,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
258 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 258 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
259 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 259 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
260 | PKG_CONFIG = @PKG_CONFIG@ | 260 | PKG_CONFIG = @PKG_CONFIG@ |
261 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
262 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
263 | PNG_CFLAGS = @PNG_CFLAGS@ | 261 | PNG_CFLAGS = @PNG_CFLAGS@ |
264 | PNG_LIBS = @PNG_LIBS@ | 262 | PNG_LIBS = @PNG_LIBS@ |
265 | RANLIB = @RANLIB@ | 263 | RANLIB = @RANLIB@ |
@@ -276,6 +274,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
276 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 274 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
277 | VERSION = @VERSION@ | 275 | VERSION = @VERSION@ |
278 | VMAJ = @VMAJ@ | 276 | VMAJ = @VMAJ@ |
277 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
278 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
279 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 279 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
280 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 280 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
281 | XCB_CFLAGS = @XCB_CFLAGS@ | 281 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -357,6 +357,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
357 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 357 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
358 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 358 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
359 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 359 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
360 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
361 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
362 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
363 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
360 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 364 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
361 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 365 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
362 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 366 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/engines/gl_common/Makefile.in b/libraries/evas/src/modules/engines/gl_common/Makefile.in index 61ed478..27284f9 100644 --- a/libraries/evas/src/modules/engines/gl_common/Makefile.in +++ b/libraries/evas/src/modules/engines/gl_common/Makefile.in | |||
@@ -245,8 +245,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
245 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 245 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
246 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 246 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
247 | PKG_CONFIG = @PKG_CONFIG@ | 247 | PKG_CONFIG = @PKG_CONFIG@ |
248 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
249 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
250 | PNG_CFLAGS = @PNG_CFLAGS@ | 248 | PNG_CFLAGS = @PNG_CFLAGS@ |
251 | PNG_LIBS = @PNG_LIBS@ | 249 | PNG_LIBS = @PNG_LIBS@ |
252 | RANLIB = @RANLIB@ | 250 | RANLIB = @RANLIB@ |
@@ -263,6 +261,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
263 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 261 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
264 | VERSION = @VERSION@ | 262 | VERSION = @VERSION@ |
265 | VMAJ = @VMAJ@ | 263 | VMAJ = @VMAJ@ |
264 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
265 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
266 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 266 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
267 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 267 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
268 | XCB_CFLAGS = @XCB_CFLAGS@ | 268 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -344,6 +344,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
344 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 344 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
345 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 345 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
346 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 346 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
347 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
348 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
349 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
350 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
347 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 351 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
348 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 352 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
349 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 353 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/engines/gl_common/evas_gl_common.h b/libraries/evas/src/modules/engines/gl_common/evas_gl_common.h index a088748..051fb3b 100644 --- a/libraries/evas/src/modules/engines/gl_common/evas_gl_common.h +++ b/libraries/evas/src/modules/engines/gl_common/evas_gl_common.h | |||
@@ -15,7 +15,7 @@ | |||
15 | 15 | ||
16 | #define GL_GLEXT_PROTOTYPES | 16 | #define GL_GLEXT_PROTOTYPES |
17 | 17 | ||
18 | #ifdef BUILD_ENGINE_GL_QUARTZ | 18 | #ifdef BUILD_ENGINE_GL_COCOA |
19 | # include <OpenGL/gl.h> | 19 | # include <OpenGL/gl.h> |
20 | # include <OpenGL/glext.h> | 20 | # include <OpenGL/glext.h> |
21 | #else | 21 | #else |
diff --git a/libraries/evas/src/modules/engines/gl_common/evas_gl_texture.c b/libraries/evas/src/modules/engines/gl_common/evas_gl_texture.c index c99f4bd..8162cd1 100644 --- a/libraries/evas/src/modules/engines/gl_common/evas_gl_texture.c +++ b/libraries/evas/src/modules/engines/gl_common/evas_gl_texture.c | |||
@@ -109,7 +109,9 @@ _tex_format_index(GLuint format) | |||
109 | static void | 109 | static void |
110 | _tex_2d(int intfmt, int w, int h, int fmt, int type) | 110 | _tex_2d(int intfmt, int w, int h, int fmt, int type) |
111 | { | 111 | { |
112 | #ifdef GL_TEXTURE_INTERNAL_FORMAT | ||
112 | int intfmtret = -1; | 113 | int intfmtret = -1; |
114 | #endif | ||
113 | glTexImage2D(GL_TEXTURE_2D, 0, intfmt, w, h, 0, fmt, type, NULL); | 115 | glTexImage2D(GL_TEXTURE_2D, 0, intfmt, w, h, 0, fmt, type, NULL); |
114 | GLERR(__FUNCTION__, __FILE__, __LINE__, ""); | 116 | GLERR(__FUNCTION__, __FILE__, __LINE__, ""); |
115 | #ifdef GL_TEXTURE_INTERNAL_FORMAT | 117 | #ifdef GL_TEXTURE_INTERNAL_FORMAT |
@@ -479,7 +481,6 @@ _pool_tex_dynamic_new(Evas_Engine_GL_Context *gc, int w, int h, int intformat, i | |||
479 | #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) | 481 | #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) |
480 | int fmt; // EGL_MAP_GL_TEXTURE_RGBA_SEC or EGL_MAP_GL_TEXTURE_RGB_SEC or bust | 482 | int fmt; // EGL_MAP_GL_TEXTURE_RGBA_SEC or EGL_MAP_GL_TEXTURE_RGB_SEC or bust |
481 | int pixtype; // EGL_MAP_GL_TEXTURE_UNSIGNED_BYTE_SEC or bust | 483 | int pixtype; // EGL_MAP_GL_TEXTURE_UNSIGNED_BYTE_SEC or bust |
482 | int glformat; | ||
483 | int attr[] = | 484 | int attr[] = |
484 | { | 485 | { |
485 | EGL_MAP_GL_TEXTURE_WIDTH_SEC, 32, | 486 | EGL_MAP_GL_TEXTURE_WIDTH_SEC, 32, |
@@ -914,7 +915,7 @@ evas_gl_common_texture_update(Evas_GL_Texture *tex, RGBA_Image *im) | |||
914 | tpix = alloca(im->cache_entry.h * sizeof(DATA32)); | 915 | tpix = alloca(im->cache_entry.h * sizeof(DATA32)); |
915 | pd = tpix; | 916 | pd = tpix; |
916 | ps = im->image.data; | 917 | ps = im->image.data; |
917 | for (i = 0; i < im->cache_entry.h; i++) | 918 | for (i = 0; i < (int)im->cache_entry.h; i++) |
918 | { | 919 | { |
919 | *pd = *ps; | 920 | *pd = *ps; |
920 | pd++; | 921 | pd++; |
@@ -929,7 +930,7 @@ evas_gl_common_texture_update(Evas_GL_Texture *tex, RGBA_Image *im) | |||
929 | tpix); | 930 | tpix); |
930 | pd = tpix; | 931 | pd = tpix; |
931 | ps = im->image.data + (im->cache_entry.w - 1); | 932 | ps = im->image.data + (im->cache_entry.w - 1); |
932 | for (i = 0; i < im->cache_entry.h; i++) | 933 | for (i = 0; i < (int)im->cache_entry.h; i++) |
933 | { | 934 | { |
934 | *pd = *ps; | 935 | *pd = *ps; |
935 | pd++; | 936 | pd++; |
diff --git a/libraries/evas/src/modules/engines/gl_sdl/Makefile.in b/libraries/evas/src/modules/engines/gl_sdl/Makefile.in index 5d4135d..bfb29ac 100644 --- a/libraries/evas/src/modules/engines/gl_sdl/Makefile.in +++ b/libraries/evas/src/modules/engines/gl_sdl/Makefile.in | |||
@@ -239,8 +239,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
239 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 239 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
240 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 240 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
241 | PKG_CONFIG = @PKG_CONFIG@ | 241 | PKG_CONFIG = @PKG_CONFIG@ |
242 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
243 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
244 | PNG_CFLAGS = @PNG_CFLAGS@ | 242 | PNG_CFLAGS = @PNG_CFLAGS@ |
245 | PNG_LIBS = @PNG_LIBS@ | 243 | PNG_LIBS = @PNG_LIBS@ |
246 | RANLIB = @RANLIB@ | 244 | RANLIB = @RANLIB@ |
@@ -257,6 +255,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
257 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 255 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
258 | VERSION = @VERSION@ | 256 | VERSION = @VERSION@ |
259 | VMAJ = @VMAJ@ | 257 | VMAJ = @VMAJ@ |
258 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
259 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
260 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 260 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
261 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 261 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
262 | XCB_CFLAGS = @XCB_CFLAGS@ | 262 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -338,6 +338,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
338 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 338 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
339 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 339 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
340 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 340 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
341 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
342 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
343 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
344 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
341 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 345 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
342 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 346 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
343 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 347 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/engines/gl_x11/Makefile.in b/libraries/evas/src/modules/engines/gl_x11/Makefile.in index f589e61..ad4944e 100644 --- a/libraries/evas/src/modules/engines/gl_x11/Makefile.in +++ b/libraries/evas/src/modules/engines/gl_x11/Makefile.in | |||
@@ -242,8 +242,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
242 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 242 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
243 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 243 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
244 | PKG_CONFIG = @PKG_CONFIG@ | 244 | PKG_CONFIG = @PKG_CONFIG@ |
245 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
246 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
247 | PNG_CFLAGS = @PNG_CFLAGS@ | 245 | PNG_CFLAGS = @PNG_CFLAGS@ |
248 | PNG_LIBS = @PNG_LIBS@ | 246 | PNG_LIBS = @PNG_LIBS@ |
249 | RANLIB = @RANLIB@ | 247 | RANLIB = @RANLIB@ |
@@ -260,6 +258,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
260 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 258 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
261 | VERSION = @VERSION@ | 259 | VERSION = @VERSION@ |
262 | VMAJ = @VMAJ@ | 260 | VMAJ = @VMAJ@ |
261 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
262 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
263 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 263 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
264 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 264 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
265 | XCB_CFLAGS = @XCB_CFLAGS@ | 265 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -341,6 +341,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
341 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 341 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
342 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 342 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
343 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 343 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
344 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
345 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
346 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
347 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
344 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 348 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
345 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 349 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
346 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 350 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/engines/gl_x11/evas_engine.c b/libraries/evas/src/modules/engines/gl_x11/evas_engine.c index 38e0c13..fbbd1a2 100644 --- a/libraries/evas/src/modules/engines/gl_x11/evas_engine.c +++ b/libraries/evas/src/modules/engines/gl_x11/evas_engine.c | |||
@@ -584,25 +584,30 @@ _extensions_init(Render_Engine *re) | |||
584 | 584 | ||
585 | #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) | 585 | #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) |
586 | // EGL Extensions | 586 | // EGL Extensions |
587 | evasglexts = glsym_eglQueryString(re->win->egl_disp, EGL_EXTENSIONS); | 587 | if (glsym_eglQueryString) |
588 | { | ||
589 | evasglexts = glsym_eglQueryString(re->win->egl_disp, EGL_EXTENSIONS); | ||
588 | #else | 590 | #else |
589 | evasglexts = glXQueryExtensionsString(re->info->info.display, | 591 | if (glsym_glXQueryExtensionsString) |
590 | re->info->info.screen); | 592 | { |
593 | evasglexts = glXQueryExtensionsString(re->info->info.display, | ||
594 | re->info->info.screen); | ||
591 | #endif | 595 | #endif |
592 | 596 | ||
593 | DBG("--------EvasGL Extensions----------"); | 597 | DBG("--------EvasGL Extensions----------"); |
594 | for (i = 0; _evasgl_ext_entries[i].name != NULL; i++) | 598 | for (i = 0; _evasgl_ext_entries[i].name != NULL; i++) |
595 | { | ||
596 | if ( (strstr(evasglexts, _evasgl_ext_entries[i].name) != NULL) || | ||
597 | (strstr(evasglexts, _evasgl_ext_entries[i].real_name) != NULL) ) | ||
598 | { | 599 | { |
599 | _evasgl_ext_entries[i].supported = 1; | 600 | if ( (strstr(evasglexts, _evasgl_ext_entries[i].name) != NULL) || |
600 | strcat(_evasgl_ext_string, _evasgl_ext_entries[i].name); | 601 | (strstr(evasglexts, _evasgl_ext_entries[i].real_name) != NULL) ) |
601 | strcat(_evasgl_ext_string, " "); | 602 | { |
602 | DBG("\t%s", _evasgl_ext_entries[i].name); | 603 | _evasgl_ext_entries[i].supported = 1; |
604 | strcat(_evasgl_ext_string, _evasgl_ext_entries[i].name); | ||
605 | strcat(_evasgl_ext_string, " "); | ||
606 | DBG("\t%s", _evasgl_ext_entries[i].name); | ||
607 | } | ||
603 | } | 608 | } |
609 | DBG(" "); | ||
604 | } | 610 | } |
605 | DBG(" "); | ||
606 | } | 611 | } |
607 | 612 | ||
608 | int _evas_engine_GL_X11_log_dom = -1; | 613 | int _evas_engine_GL_X11_log_dom = -1; |
@@ -1125,12 +1130,12 @@ eng_output_redraws_rect_add(void *data, int x, int y, int w, int h) | |||
1125 | eng_window_use(re->win); | 1130 | eng_window_use(re->win); |
1126 | evas_gl_common_context_resize(re->win->gl_context, re->win->w, re->win->h, re->win->rot); | 1131 | evas_gl_common_context_resize(re->win->gl_context, re->win->w, re->win->h, re->win->rot); |
1127 | evas_common_tilebuf_add_redraw(re->tb, x, y, w, h); | 1132 | evas_common_tilebuf_add_redraw(re->tb, x, y, w, h); |
1128 | /* | 1133 | |
1129 | RECTS_CLIP_TO_RECT(x, y, w, h, 0, 0, re->win->w, re->win->h); | 1134 | RECTS_CLIP_TO_RECT(x, y, w, h, 0, 0, re->win->w, re->win->h); |
1130 | if ((w <= 0) || (h <= 0)) return; | 1135 | if ((w <= 0) || (h <= 0)) return; |
1131 | if (!re->win->draw.redraw) | 1136 | if (!re->win->draw.redraw) |
1132 | { | 1137 | { |
1133 | #if 0 | 1138 | #if 1 |
1134 | re->win->draw.x1 = x; | 1139 | re->win->draw.x1 = x; |
1135 | re->win->draw.y1 = y; | 1140 | re->win->draw.y1 = y; |
1136 | re->win->draw.x2 = x + w - 1; | 1141 | re->win->draw.x2 = x + w - 1; |
@@ -1150,11 +1155,10 @@ eng_output_redraws_rect_add(void *data, int x, int y, int w, int h) | |||
1150 | if ((y + h - 1) > re->win->draw.y2) re->win->draw.y2 = y + h - 1; | 1155 | if ((y + h - 1) > re->win->draw.y2) re->win->draw.y2 = y + h - 1; |
1151 | } | 1156 | } |
1152 | re->win->draw.redraw = 1; | 1157 | re->win->draw.redraw = 1; |
1153 | */ | ||
1154 | } | 1158 | } |
1155 | 1159 | ||
1156 | static void | 1160 | static void |
1157 | eng_output_redraws_rect_del(void *data __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__) | 1161 | eng_output_redraws_rect_del(void *data, int x, int y, int w, int h) |
1158 | { | 1162 | { |
1159 | Render_Engine *re; | 1163 | Render_Engine *re; |
1160 | 1164 | ||
@@ -1244,10 +1248,10 @@ eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, i | |||
1244 | //#define FRAMECOUNT 1 | 1248 | //#define FRAMECOUNT 1 |
1245 | 1249 | ||
1246 | #ifdef FRAMECOUNT | 1250 | #ifdef FRAMECOUNT |
1247 | double | 1251 | static double |
1248 | get_time(void) | 1252 | get_time(void) |
1249 | { | 1253 | { |
1250 | struct timeval timev; | 1254 | struct timeval timev; |
1251 | 1255 | ||
1252 | gettimeofday(&timev, NULL); | 1256 | gettimeofday(&timev, NULL); |
1253 | return (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000); | 1257 | return (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000); |
@@ -1391,44 +1395,46 @@ eng_output_flush(void *data) | |||
1391 | { | 1395 | { |
1392 | re->info->callback.pre_swap(re->info->callback.data, re->evas); | 1396 | re->info->callback.pre_swap(re->info->callback.data, re->evas); |
1393 | } | 1397 | } |
1394 | /* | 1398 | #if 1 |
1395 | if ((1) | 1399 | if (1) |
1396 | // (re->win->draw.x1 == 0) && | 1400 | #else |
1397 | // (re->win->draw.y1 == 0) && | 1401 | if ((re->win->draw.x1 == 0) && (re->win->draw.y1 == 0) && (re->win->draw.x2 == (re->win->w - 1)) && (re->win->draw.y2 == (re->win->h - 1))) |
1398 | // (re->win->draw.x2 == (re->win->w - 1)) && | 1402 | #endif |
1399 | // (re->win->draw.y2 == (re->win->h - 1)) | ||
1400 | ) | ||
1401 | */ | ||
1402 | { | 1403 | { |
1404 | // double t, t2 = 0.0; | ||
1405 | // t = get_time(); | ||
1403 | glXSwapBuffers(re->win->disp, re->win->win); | 1406 | glXSwapBuffers(re->win->disp, re->win->win); |
1404 | if (!safe_native) glXWaitGL(); | 1407 | // t = get_time() - t; |
1408 | // if (!safe_native) | ||
1409 | // { | ||
1410 | // t2 = get_time(); | ||
1411 | // glXWaitGL(); | ||
1412 | // t2 = get_time() - t2; | ||
1413 | // } | ||
1414 | // printf("swap: %3.5f (%3.5fms), x wait gl: %3.5f (%3.5fms)\n", | ||
1415 | // t, t * 1000.0, t2, t2 * 1000.0); | ||
1405 | } | 1416 | } |
1406 | /* | ||
1407 | else | 1417 | else |
1408 | { | 1418 | { |
1409 | // FIXME: this doesn't work.. why oh why? | 1419 | // FIXME: this doesn't work.. why oh why? |
1410 | int sx, sy, sw, sh; | 1420 | int sx, sy, sw, sh; |
1411 | 1421 | ||
1412 | // fimxe - reset when done | ||
1413 | // glEnable(GL_SCISSOR_TEST); | ||
1414 | glDrawBuffer(GL_FRONT); | ||
1415 | |||
1416 | sx = re->win->draw.x1; | 1422 | sx = re->win->draw.x1; |
1417 | sy = re->win->draw.y1; | 1423 | sy = re->win->draw.y1; |
1418 | sw = (re->win->draw.x2 - re->win->draw.x1) + 1; | 1424 | sw = (re->win->draw.x2 - re->win->draw.x1) + 1; |
1419 | sh = (re->win->draw.y2 - re->win->draw.y1) + 1; | 1425 | sh = (re->win->draw.y2 - re->win->draw.y1) + 1; |
1420 | sy = re->win->h - sy - sh; | 1426 | sy = re->win->h - sy - sh; |
1421 | 1427 | ||
1422 | // glScissor(sx, sy, sw, sh); | 1428 | glBitmap(0, 0, 0, 0, sx, re->win->h - sy, NULL); |
1423 | glRasterPos2i(sx, re->win->h - sy); | 1429 | glEnable(GL_SCISSOR_TEST); |
1430 | glScissor(sx, sy, sw, sh); | ||
1431 | glDrawBuffer(GL_FRONT); | ||
1424 | glCopyPixels(sx, sy, sw, sh, GL_COLOR); | 1432 | glCopyPixels(sx, sy, sw, sh, GL_COLOR); |
1425 | glRasterPos2i(0, 0); | ||
1426 | |||
1427 | // glDisable(GL_SCISSOR_TEST); | ||
1428 | glDrawBuffer(GL_BACK); | 1433 | glDrawBuffer(GL_BACK); |
1434 | glDisable(GL_SCISSOR_TEST); | ||
1435 | glBitmap(0, 0, 0, 0, 0, 0, NULL); | ||
1429 | glFlush(); | 1436 | glFlush(); |
1430 | } | 1437 | } |
1431 | */ | ||
1432 | if (re->info->callback.post_swap) | 1438 | if (re->info->callback.post_swap) |
1433 | { | 1439 | { |
1434 | re->info->callback.post_swap(re->info->callback.data, re->evas); | 1440 | re->info->callback.post_swap(re->info->callback.data, re->evas); |
@@ -3469,7 +3475,10 @@ evgl_evasglCreateImage(int target, void* buffer, int *attrib_list) | |||
3469 | attrib_list); | 3475 | attrib_list); |
3470 | } | 3476 | } |
3471 | else | 3477 | else |
3472 | ERR("Invalid Engine... (Can't acccess EGL Display)\n"); | 3478 | { |
3479 | ERR("Invalid Engine... (Can't acccess EGL Display)\n"); | ||
3480 | return NULL; | ||
3481 | } | ||
3473 | } | 3482 | } |
3474 | 3483 | ||
3475 | static void | 3484 | static void |
@@ -3826,6 +3835,18 @@ eng_image_animated_frame_set(void *data __UNUSED__, void *image, int frame_index | |||
3826 | return EINA_TRUE; | 3835 | return EINA_TRUE; |
3827 | } | 3836 | } |
3828 | 3837 | ||
3838 | static Eina_Bool | ||
3839 | eng_image_can_region_get(void *data __UNUSED__, void *image) | ||
3840 | { | ||
3841 | Evas_GL_Image *gim = image; | ||
3842 | Image_Entry *im; | ||
3843 | if (!gim) return EINA_FALSE; | ||
3844 | im = (Image_Entry *)gim->im; | ||
3845 | if (!im) return EINA_FALSE; | ||
3846 | return ((Evas_Image_Load_Func*) im->info.loader)->do_region; | ||
3847 | } | ||
3848 | |||
3849 | |||
3829 | static void | 3850 | static void |
3830 | eng_image_max_size_get(void *data, int *maxw, int *maxh) | 3851 | eng_image_max_size_get(void *data, int *maxw, int *maxh) |
3831 | { | 3852 | { |
@@ -3903,6 +3924,7 @@ module_open(Evas_Module *em) | |||
3903 | ORD(image_format_get); | 3924 | ORD(image_format_get); |
3904 | ORD(image_colorspace_set); | 3925 | ORD(image_colorspace_set); |
3905 | ORD(image_colorspace_get); | 3926 | ORD(image_colorspace_get); |
3927 | ORD(image_can_region_get); | ||
3906 | ORD(image_mask_create); | 3928 | ORD(image_mask_create); |
3907 | ORD(image_native_set); | 3929 | ORD(image_native_set); |
3908 | ORD(image_native_get); | 3930 | ORD(image_native_get); |
diff --git a/libraries/evas/src/modules/engines/gl_x11/evas_x_main.c b/libraries/evas/src/modules/engines/gl_x11/evas_x_main.c index 323c976..c29ab67 100644 --- a/libraries/evas/src/modules/engines/gl_x11/evas_x_main.c +++ b/libraries/evas/src/modules/engines/gl_x11/evas_x_main.c | |||
@@ -531,13 +531,13 @@ eng_window_free(Evas_GL_X11_Window *gw) | |||
531 | #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) | 531 | #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) |
532 | if (gw->egl_surface[0] != EGL_NO_SURFACE) | 532 | if (gw->egl_surface[0] != EGL_NO_SURFACE) |
533 | eglDestroySurface(gw->egl_disp, gw->egl_surface[0]); | 533 | eglDestroySurface(gw->egl_disp, gw->egl_surface[0]); |
534 | eglMakeCurrent(gw->egl_disp, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); | ||
534 | if (ref == 0) | 535 | if (ref == 0) |
535 | { | 536 | { |
536 | if (context) eglDestroyContext(gw->egl_disp, context); | 537 | if (context) eglDestroyContext(gw->egl_disp, context); |
537 | eglTerminate(gw->egl_disp); | 538 | eglTerminate(gw->egl_disp); |
538 | context = EGL_NO_CONTEXT; | 539 | context = EGL_NO_CONTEXT; |
539 | } | 540 | } |
540 | eglMakeCurrent(gw->egl_disp, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); | ||
541 | #else | 541 | #else |
542 | if (gw->glxwin) glXDestroyWindow(gw->disp, gw->glxwin); | 542 | if (gw->glxwin) glXDestroyWindow(gw->disp, gw->glxwin); |
543 | if (ref == 0) | 543 | if (ref == 0) |
diff --git a/libraries/evas/src/modules/engines/psl1ght/Makefile.in b/libraries/evas/src/modules/engines/psl1ght/Makefile.in index 6b553ac..f8524a4 100644 --- a/libraries/evas/src/modules/engines/psl1ght/Makefile.in +++ b/libraries/evas/src/modules/engines/psl1ght/Makefile.in | |||
@@ -240,8 +240,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
240 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 240 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
241 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 241 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
242 | PKG_CONFIG = @PKG_CONFIG@ | 242 | PKG_CONFIG = @PKG_CONFIG@ |
243 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
244 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
245 | PNG_CFLAGS = @PNG_CFLAGS@ | 243 | PNG_CFLAGS = @PNG_CFLAGS@ |
246 | PNG_LIBS = @PNG_LIBS@ | 244 | PNG_LIBS = @PNG_LIBS@ |
247 | RANLIB = @RANLIB@ | 245 | RANLIB = @RANLIB@ |
@@ -258,6 +256,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
258 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 256 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
259 | VERSION = @VERSION@ | 257 | VERSION = @VERSION@ |
260 | VMAJ = @VMAJ@ | 258 | VMAJ = @VMAJ@ |
259 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
260 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
261 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 261 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
262 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 262 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
263 | XCB_CFLAGS = @XCB_CFLAGS@ | 263 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -339,6 +339,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
339 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 339 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
340 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 340 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
341 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 341 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
342 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
343 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
344 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
345 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
342 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 346 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
343 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 347 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
344 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 348 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/engines/software_16/Makefile.in b/libraries/evas/src/modules/engines/software_16/Makefile.in index 1fc95cf..88164e1 100644 --- a/libraries/evas/src/modules/engines/software_16/Makefile.in +++ b/libraries/evas/src/modules/engines/software_16/Makefile.in | |||
@@ -235,8 +235,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
235 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 235 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
236 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 236 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
237 | PKG_CONFIG = @PKG_CONFIG@ | 237 | PKG_CONFIG = @PKG_CONFIG@ |
238 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
239 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
240 | PNG_CFLAGS = @PNG_CFLAGS@ | 238 | PNG_CFLAGS = @PNG_CFLAGS@ |
241 | PNG_LIBS = @PNG_LIBS@ | 239 | PNG_LIBS = @PNG_LIBS@ |
242 | RANLIB = @RANLIB@ | 240 | RANLIB = @RANLIB@ |
@@ -253,6 +251,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
253 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 251 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
254 | VERSION = @VERSION@ | 252 | VERSION = @VERSION@ |
255 | VMAJ = @VMAJ@ | 253 | VMAJ = @VMAJ@ |
254 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
255 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
256 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 256 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
257 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 257 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
258 | XCB_CFLAGS = @XCB_CFLAGS@ | 258 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -334,6 +334,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
334 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 334 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
335 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 335 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
336 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 336 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
337 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
338 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
339 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
340 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
337 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 341 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
338 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 342 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
339 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 343 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/engines/software_16_ddraw/Makefile.in b/libraries/evas/src/modules/engines/software_16_ddraw/Makefile.in index f588c4f..0039410 100644 --- a/libraries/evas/src/modules/engines/software_16_ddraw/Makefile.in +++ b/libraries/evas/src/modules/engines/software_16_ddraw/Makefile.in | |||
@@ -265,8 +265,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
265 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 265 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
266 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 266 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
267 | PKG_CONFIG = @PKG_CONFIG@ | 267 | PKG_CONFIG = @PKG_CONFIG@ |
268 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
269 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
270 | PNG_CFLAGS = @PNG_CFLAGS@ | 268 | PNG_CFLAGS = @PNG_CFLAGS@ |
271 | PNG_LIBS = @PNG_LIBS@ | 269 | PNG_LIBS = @PNG_LIBS@ |
272 | RANLIB = @RANLIB@ | 270 | RANLIB = @RANLIB@ |
@@ -283,6 +281,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
283 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 281 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
284 | VERSION = @VERSION@ | 282 | VERSION = @VERSION@ |
285 | VMAJ = @VMAJ@ | 283 | VMAJ = @VMAJ@ |
284 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
285 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
286 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 286 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
287 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 287 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
288 | XCB_CFLAGS = @XCB_CFLAGS@ | 288 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -364,6 +364,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
364 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 364 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
365 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 365 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
366 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 366 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
367 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
368 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
369 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
370 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
367 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 371 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
368 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 372 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
369 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 373 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/engines/software_16_sdl/Makefile.in b/libraries/evas/src/modules/engines/software_16_sdl/Makefile.in index 219e392..6ebf0db 100644 --- a/libraries/evas/src/modules/engines/software_16_sdl/Makefile.in +++ b/libraries/evas/src/modules/engines/software_16_sdl/Makefile.in | |||
@@ -238,8 +238,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
238 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 238 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
239 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 239 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
240 | PKG_CONFIG = @PKG_CONFIG@ | 240 | PKG_CONFIG = @PKG_CONFIG@ |
241 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
242 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
243 | PNG_CFLAGS = @PNG_CFLAGS@ | 241 | PNG_CFLAGS = @PNG_CFLAGS@ |
244 | PNG_LIBS = @PNG_LIBS@ | 242 | PNG_LIBS = @PNG_LIBS@ |
245 | RANLIB = @RANLIB@ | 243 | RANLIB = @RANLIB@ |
@@ -256,6 +254,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
256 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 254 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
257 | VERSION = @VERSION@ | 255 | VERSION = @VERSION@ |
258 | VMAJ = @VMAJ@ | 256 | VMAJ = @VMAJ@ |
257 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
258 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
259 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 259 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
260 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 260 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
261 | XCB_CFLAGS = @XCB_CFLAGS@ | 261 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -337,6 +337,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
337 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 337 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
338 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 338 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
339 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 339 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
340 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
341 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
342 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
343 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
340 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 344 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
341 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 345 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
342 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 346 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/engines/software_16_wince/Makefile.in b/libraries/evas/src/modules/engines/software_16_wince/Makefile.in index 571891e..95c484e 100644 --- a/libraries/evas/src/modules/engines/software_16_wince/Makefile.in +++ b/libraries/evas/src/modules/engines/software_16_wince/Makefile.in | |||
@@ -271,8 +271,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
271 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 271 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
272 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 272 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
273 | PKG_CONFIG = @PKG_CONFIG@ | 273 | PKG_CONFIG = @PKG_CONFIG@ |
274 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
275 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
276 | PNG_CFLAGS = @PNG_CFLAGS@ | 274 | PNG_CFLAGS = @PNG_CFLAGS@ |
277 | PNG_LIBS = @PNG_LIBS@ | 275 | PNG_LIBS = @PNG_LIBS@ |
278 | RANLIB = @RANLIB@ | 276 | RANLIB = @RANLIB@ |
@@ -289,6 +287,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
289 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 287 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
290 | VERSION = @VERSION@ | 288 | VERSION = @VERSION@ |
291 | VMAJ = @VMAJ@ | 289 | VMAJ = @VMAJ@ |
290 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
291 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
292 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 292 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
293 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 293 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
294 | XCB_CFLAGS = @XCB_CFLAGS@ | 294 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -370,6 +370,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
370 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 370 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
371 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 371 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
372 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 372 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
373 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
374 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
375 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
376 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
373 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 377 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
374 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 378 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
375 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 379 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/engines/software_16_x11/Makefile.in b/libraries/evas/src/modules/engines/software_16_x11/Makefile.in index be43dad..3232681 100644 --- a/libraries/evas/src/modules/engines/software_16_x11/Makefile.in +++ b/libraries/evas/src/modules/engines/software_16_x11/Makefile.in | |||
@@ -244,8 +244,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
244 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 244 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
245 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 245 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
246 | PKG_CONFIG = @PKG_CONFIG@ | 246 | PKG_CONFIG = @PKG_CONFIG@ |
247 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
248 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
249 | PNG_CFLAGS = @PNG_CFLAGS@ | 247 | PNG_CFLAGS = @PNG_CFLAGS@ |
250 | PNG_LIBS = @PNG_LIBS@ | 248 | PNG_LIBS = @PNG_LIBS@ |
251 | RANLIB = @RANLIB@ | 249 | RANLIB = @RANLIB@ |
@@ -262,6 +260,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
262 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 260 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
263 | VERSION = @VERSION@ | 261 | VERSION = @VERSION@ |
264 | VMAJ = @VMAJ@ | 262 | VMAJ = @VMAJ@ |
263 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
264 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
265 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 265 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
266 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 266 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
267 | XCB_CFLAGS = @XCB_CFLAGS@ | 267 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -343,6 +343,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
343 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 343 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
344 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 344 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
345 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 345 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
346 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
347 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
348 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
349 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
346 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 350 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
347 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 351 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
348 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 352 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/engines/software_8/Makefile.in b/libraries/evas/src/modules/engines/software_8/Makefile.in index bf16fcf..3ee42fd 100644 --- a/libraries/evas/src/modules/engines/software_8/Makefile.in +++ b/libraries/evas/src/modules/engines/software_8/Makefile.in | |||
@@ -234,8 +234,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
234 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 234 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
235 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 235 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
236 | PKG_CONFIG = @PKG_CONFIG@ | 236 | PKG_CONFIG = @PKG_CONFIG@ |
237 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
238 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
239 | PNG_CFLAGS = @PNG_CFLAGS@ | 237 | PNG_CFLAGS = @PNG_CFLAGS@ |
240 | PNG_LIBS = @PNG_LIBS@ | 238 | PNG_LIBS = @PNG_LIBS@ |
241 | RANLIB = @RANLIB@ | 239 | RANLIB = @RANLIB@ |
@@ -252,6 +250,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
252 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 250 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
253 | VERSION = @VERSION@ | 251 | VERSION = @VERSION@ |
254 | VMAJ = @VMAJ@ | 252 | VMAJ = @VMAJ@ |
253 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
254 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
255 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 255 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
256 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 256 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
257 | XCB_CFLAGS = @XCB_CFLAGS@ | 257 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -333,6 +333,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
333 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 333 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
334 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 334 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
335 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 335 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
336 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
337 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
338 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
339 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
336 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 340 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
337 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 341 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
338 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 342 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/engines/software_8_x11/Makefile.in b/libraries/evas/src/modules/engines/software_8_x11/Makefile.in index fa88a4d..22577af 100644 --- a/libraries/evas/src/modules/engines/software_8_x11/Makefile.in +++ b/libraries/evas/src/modules/engines/software_8_x11/Makefile.in | |||
@@ -244,8 +244,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
244 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 244 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
245 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 245 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
246 | PKG_CONFIG = @PKG_CONFIG@ | 246 | PKG_CONFIG = @PKG_CONFIG@ |
247 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
248 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
249 | PNG_CFLAGS = @PNG_CFLAGS@ | 247 | PNG_CFLAGS = @PNG_CFLAGS@ |
250 | PNG_LIBS = @PNG_LIBS@ | 248 | PNG_LIBS = @PNG_LIBS@ |
251 | RANLIB = @RANLIB@ | 249 | RANLIB = @RANLIB@ |
@@ -262,6 +260,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
262 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 260 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
263 | VERSION = @VERSION@ | 261 | VERSION = @VERSION@ |
264 | VMAJ = @VMAJ@ | 262 | VMAJ = @VMAJ@ |
263 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
264 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
265 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 265 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
266 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 266 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
267 | XCB_CFLAGS = @XCB_CFLAGS@ | 267 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -343,6 +343,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
343 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 343 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
344 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 344 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
345 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 345 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
346 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
347 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
348 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
349 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
346 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 350 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
347 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 351 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
348 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 352 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/engines/software_ddraw/Makefile.in b/libraries/evas/src/modules/engines/software_ddraw/Makefile.in index be4c977..da65f92 100644 --- a/libraries/evas/src/modules/engines/software_ddraw/Makefile.in +++ b/libraries/evas/src/modules/engines/software_ddraw/Makefile.in | |||
@@ -266,8 +266,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
266 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 266 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
267 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 267 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
268 | PKG_CONFIG = @PKG_CONFIG@ | 268 | PKG_CONFIG = @PKG_CONFIG@ |
269 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
270 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
271 | PNG_CFLAGS = @PNG_CFLAGS@ | 269 | PNG_CFLAGS = @PNG_CFLAGS@ |
272 | PNG_LIBS = @PNG_LIBS@ | 270 | PNG_LIBS = @PNG_LIBS@ |
273 | RANLIB = @RANLIB@ | 271 | RANLIB = @RANLIB@ |
@@ -284,6 +282,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
284 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 282 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
285 | VERSION = @VERSION@ | 283 | VERSION = @VERSION@ |
286 | VMAJ = @VMAJ@ | 284 | VMAJ = @VMAJ@ |
285 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
286 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
287 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 287 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
288 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 288 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
289 | XCB_CFLAGS = @XCB_CFLAGS@ | 289 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -365,6 +365,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
365 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 365 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
366 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 366 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
367 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 367 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
368 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
369 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
370 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
371 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
368 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 372 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
369 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 373 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
370 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 374 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/engines/software_gdi/Makefile.in b/libraries/evas/src/modules/engines/software_gdi/Makefile.in index 5dea632..a2421ef 100644 --- a/libraries/evas/src/modules/engines/software_gdi/Makefile.in +++ b/libraries/evas/src/modules/engines/software_gdi/Makefile.in | |||
@@ -249,8 +249,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
249 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 249 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
250 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 250 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
251 | PKG_CONFIG = @PKG_CONFIG@ | 251 | PKG_CONFIG = @PKG_CONFIG@ |
252 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
253 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
254 | PNG_CFLAGS = @PNG_CFLAGS@ | 252 | PNG_CFLAGS = @PNG_CFLAGS@ |
255 | PNG_LIBS = @PNG_LIBS@ | 253 | PNG_LIBS = @PNG_LIBS@ |
256 | RANLIB = @RANLIB@ | 254 | RANLIB = @RANLIB@ |
@@ -267,6 +265,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
267 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 265 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
268 | VERSION = @VERSION@ | 266 | VERSION = @VERSION@ |
269 | VMAJ = @VMAJ@ | 267 | VMAJ = @VMAJ@ |
268 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
269 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
270 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 270 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
271 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 271 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
272 | XCB_CFLAGS = @XCB_CFLAGS@ | 272 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -348,6 +348,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
348 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 348 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
349 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 349 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
350 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 350 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
351 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
352 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
353 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
354 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
351 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 355 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
352 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 356 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
353 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 357 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/engines/software_generic/Makefile.in b/libraries/evas/src/modules/engines/software_generic/Makefile.in index 6d75f23..4f66536 100644 --- a/libraries/evas/src/modules/engines/software_generic/Makefile.in +++ b/libraries/evas/src/modules/engines/software_generic/Makefile.in | |||
@@ -236,8 +236,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
236 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 236 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
237 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 237 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
238 | PKG_CONFIG = @PKG_CONFIG@ | 238 | PKG_CONFIG = @PKG_CONFIG@ |
239 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
240 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
241 | PNG_CFLAGS = @PNG_CFLAGS@ | 239 | PNG_CFLAGS = @PNG_CFLAGS@ |
242 | PNG_LIBS = @PNG_LIBS@ | 240 | PNG_LIBS = @PNG_LIBS@ |
243 | RANLIB = @RANLIB@ | 241 | RANLIB = @RANLIB@ |
@@ -254,6 +252,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
254 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 252 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
255 | VERSION = @VERSION@ | 253 | VERSION = @VERSION@ |
256 | VMAJ = @VMAJ@ | 254 | VMAJ = @VMAJ@ |
255 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
256 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
257 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 257 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
258 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 258 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
259 | XCB_CFLAGS = @XCB_CFLAGS@ | 259 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -335,6 +335,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
335 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 335 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
336 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 336 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
337 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 337 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
338 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
339 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
340 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
341 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
338 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 342 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
339 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 343 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
340 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 344 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/engines/software_generic/evas_engine.c b/libraries/evas/src/modules/engines/software_generic/evas_engine.c index b2c53c5..48944dd 100644 --- a/libraries/evas/src/modules/engines/software_generic/evas_engine.c +++ b/libraries/evas/src/modules/engines/software_generic/evas_engine.c | |||
@@ -1,6 +1,275 @@ | |||
1 | #include "evas_common.h" /* Also includes international specific stuff */ | 1 | #include "evas_common.h" /* Also includes international specific stuff */ |
2 | #include "evas_private.h" | 2 | #include "evas_private.h" |
3 | 3 | ||
4 | #ifdef HAVE_DLSYM | ||
5 | # include <dlfcn.h> /* dlopen,dlclose,etc */ | ||
6 | |||
7 | # define EVAS_GL 1 | ||
8 | # define EVAS_GL_NO_GL_H_CHECK 1 | ||
9 | # include "Evas_GL.h" | ||
10 | |||
11 | #else | ||
12 | # warning software_generic will not be able to have Evas_GL API. | ||
13 | #endif | ||
14 | |||
15 | #ifdef EVAS_GL | ||
16 | //----------------------------------// | ||
17 | // OSMesa... | ||
18 | |||
19 | #define OSMESA_MAJOR_VERSION 6 | ||
20 | #define OSMESA_MINOR_VERSION 5 | ||
21 | #define OSMESA_PATCH_VERSION 0 | ||
22 | |||
23 | /* | ||
24 | * Values for the format parameter of OSMesaCreateContext() | ||
25 | * New in version 2.0. | ||
26 | */ | ||
27 | #define OSMESA_COLOR_INDEX GL_COLOR_INDEX | ||
28 | #define OSMESA_RGBA GL_RGBA | ||
29 | #define OSMESA_BGRA 0x1 | ||
30 | #define OSMESA_ARGB 0x2 | ||
31 | #define OSMESA_RGB GL_RGB | ||
32 | #define OSMESA_BGR 0x4 | ||
33 | #define OSMESA_RGB_565 0x5 | ||
34 | |||
35 | |||
36 | /* | ||
37 | * OSMesaPixelStore() parameters: | ||
38 | * New in version 2.0. | ||
39 | */ | ||
40 | #define OSMESA_ROW_LENGTH 0x10 | ||
41 | #define OSMESA_Y_UP 0x11 | ||
42 | |||
43 | |||
44 | /* | ||
45 | * Accepted by OSMesaGetIntegerv: | ||
46 | */ | ||
47 | #define OSMESA_WIDTH 0x20 | ||
48 | #define OSMESA_HEIGHT 0x21 | ||
49 | #define OSMESA_FORMAT 0x22 | ||
50 | #define OSMESA_TYPE 0x23 | ||
51 | #define OSMESA_MAX_WIDTH 0x24 /* new in 4.0 */ | ||
52 | #define OSMESA_MAX_HEIGHT 0x25 /* new in 4.0 */ | ||
53 | |||
54 | |||
55 | typedef void (*OSMESAproc)(); | ||
56 | typedef struct osmesa_context *OSMesaContext; | ||
57 | #endif | ||
58 | |||
59 | typedef struct _Render_Engine_GL_Surface Render_Engine_GL_Surface; | ||
60 | typedef struct _Render_Engine_GL_Context Render_Engine_GL_Context; | ||
61 | |||
62 | struct _Render_Engine_GL_Surface | ||
63 | { | ||
64 | int initialized; | ||
65 | int w, h; | ||
66 | |||
67 | #ifdef EVAS_GL | ||
68 | GLenum internal_fmt; | ||
69 | #endif | ||
70 | int internal_cpp; // Component per pixel. ie. RGB = 3 | ||
71 | |||
72 | int depth_bits; | ||
73 | int stencil_bits; | ||
74 | |||
75 | // Data | ||
76 | void *buffer; | ||
77 | |||
78 | Render_Engine_GL_Context *current_ctx; | ||
79 | }; | ||
80 | |||
81 | #ifdef EVAS_GL | ||
82 | struct _Render_Engine_GL_Context | ||
83 | { | ||
84 | int initialized; | ||
85 | |||
86 | OSMesaContext context; | ||
87 | |||
88 | Render_Engine_GL_Context *share_ctx; | ||
89 | |||
90 | Render_Engine_GL_Surface *current_sfc; | ||
91 | }; | ||
92 | |||
93 | //------------------------------------------------------// | ||
94 | typedef void (*_eng_fn) (void ); | ||
95 | typedef _eng_fn (*glsym_func_eng_fn) (); | ||
96 | typedef void (*glsym_func_void) (); | ||
97 | typedef unsigned int (*glsym_func_uint) (); | ||
98 | typedef int (*glsym_func_int) (); | ||
99 | typedef unsigned char (*glsym_func_uchar) (); | ||
100 | typedef unsigned char *(*glsym_func_uchar_ptr) (); | ||
101 | typedef const unsigned char *(*glsym_func_const_uchar_ptr) (); | ||
102 | typedef char const *(*glsym_func_char_const_ptr) (); | ||
103 | typedef GLboolean (*glsym_func_bool) (); | ||
104 | typedef OSMesaContext (*glsym_func_osm_ctx) (); | ||
105 | //------------------------------------------------------// | ||
106 | |||
107 | /* Function table for GL APIs */ | ||
108 | static Evas_GL_API gl_funcs; | ||
109 | static void *gl_lib_handle; | ||
110 | static int gl_lib_is_gles = 0; | ||
111 | static Evas_GL_API gl_funcs; | ||
112 | |||
113 | //------------------------------------------------------// | ||
114 | // OSMesa APIS... | ||
115 | static OSMesaContext (*_sym_OSMesaCreateContextExt) (GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OSMesaContext sharelist) = NULL; | ||
116 | static void (*_sym_OSMesaDestroyContext) (OSMesaContext ctx) = NULL; | ||
117 | static GLboolean (*_sym_OSMesaMakeCurrent) (OSMesaContext ctx, void *buffer, GLenum type, GLsizei width, GLsizei height) = NULL; | ||
118 | static void (*_sym_OSMesaPixelStore) (GLint pname, GLint value) = NULL; | ||
119 | static OSMESAproc (*_sym_OSMesaGetProcAddress) (const char *funcName); | ||
120 | |||
121 | |||
122 | //------------------------------------------------------// | ||
123 | // GLES 2.0 APIs... | ||
124 | static void (*_sym_glActiveTexture) (GLenum texture) = NULL; | ||
125 | static void (*_sym_glAttachShader) (GLuint program, GLuint shader) = NULL; | ||
126 | static void (*_sym_glBindAttribLocation) (GLuint program, GLuint index, const char* name) = NULL; | ||
127 | static void (*_sym_glBindBuffer) (GLenum target, GLuint buffer) = NULL; | ||
128 | static void (*_sym_glBindFramebuffer) (GLenum target, GLuint framebuffer) = NULL; | ||
129 | static void (*_sym_glBindRenderbuffer) (GLenum target, GLuint renderbuffer) = NULL; | ||
130 | static void (*_sym_glBindTexture) (GLenum target, GLuint texture) = NULL; | ||
131 | static void (*_sym_glBlendColor) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) = NULL; | ||
132 | static void (*_sym_glBlendEquation) (GLenum mode) = NULL; | ||
133 | static void (*_sym_glBlendEquationSeparate) (GLenum modeRGB, GLenum modeAlpha) = NULL; | ||
134 | static void (*_sym_glBlendFunc) (GLenum sfactor, GLenum dfactor) = NULL; | ||
135 | static void (*_sym_glBlendFuncSeparate) (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) = NULL; | ||
136 | static void (*_sym_glBufferData) (GLenum target, GLsizeiptr size, const void* data, GLenum usage) = NULL; | ||
137 | static void (*_sym_glBufferSubData) (GLenum target, GLintptr offset, GLsizeiptr size, const void* data) = NULL; | ||
138 | static GLenum (*_sym_glCheckFramebufferStatus) (GLenum target) = NULL; | ||
139 | static void (*_sym_glClear) (GLbitfield mask) = NULL; | ||
140 | static void (*_sym_glClearColor) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) = NULL; | ||
141 | static void (*_sym_glClearDepthf) (GLclampf depth) = NULL; | ||
142 | static void (*_sym_glClearStencil) (GLint s) = NULL; | ||
143 | static void (*_sym_glColorMask) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) = NULL; | ||
144 | static void (*_sym_glCompileShader) (GLuint shader) = NULL; | ||
145 | static void (*_sym_glCompressedTexImage2D) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data) = NULL; | ||
146 | static void (*_sym_glCompressedTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data) = NULL; | ||
147 | static void (*_sym_glCopyTexImage2D) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) = NULL; | ||
148 | static void (*_sym_glCopyTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) = NULL; | ||
149 | static GLuint (*_sym_glCreateProgram) (void) = NULL; | ||
150 | static GLuint (*_sym_glCreateShader) (GLenum type) = NULL; | ||
151 | static void (*_sym_glCullFace) (GLenum mode) = NULL; | ||
152 | static void (*_sym_glDeleteBuffers) (GLsizei n, const GLuint* buffers) = NULL; | ||
153 | static void (*_sym_glDeleteFramebuffers) (GLsizei n, const GLuint* framebuffers) = NULL; | ||
154 | static void (*_sym_glDeleteProgram) (GLuint program) = NULL; | ||
155 | static void (*_sym_glDeleteRenderbuffers) (GLsizei n, const GLuint* renderbuffers) = NULL; | ||
156 | static void (*_sym_glDeleteShader) (GLuint shader) = NULL; | ||
157 | static void (*_sym_glDeleteTextures) (GLsizei n, const GLuint* textures) = NULL; | ||
158 | static void (*_sym_glDepthFunc) (GLenum func) = NULL; | ||
159 | static void (*_sym_glDepthMask) (GLboolean flag) = NULL; | ||
160 | static void (*_sym_glDepthRangef) (GLclampf zNear, GLclampf zFar) = NULL; | ||
161 | static void (*_sym_glDetachShader) (GLuint program, GLuint shader) = NULL; | ||
162 | static void (*_sym_glDisable) (GLenum cap) = NULL; | ||
163 | static void (*_sym_glDisableVertexAttribArray) (GLuint index) = NULL; | ||
164 | static void (*_sym_glDrawArrays) (GLenum mode, GLint first, GLsizei count) = NULL; | ||
165 | static void (*_sym_glDrawElements) (GLenum mode, GLsizei count, GLenum type, const void* indices) = NULL; | ||
166 | static void (*_sym_glEnable) (GLenum cap) = NULL; | ||
167 | static void (*_sym_glEnableVertexAttribArray) (GLuint index) = NULL; | ||
168 | static void (*_sym_glFinish) (void) = NULL; | ||
169 | static void (*_sym_glFlush) (void) = NULL; | ||
170 | static void (*_sym_glFramebufferRenderbuffer) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) = NULL; | ||
171 | static void (*_sym_glFramebufferTexture2D) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) = NULL; | ||
172 | static void (*_sym_glFrontFace) (GLenum mode) = NULL; | ||
173 | static void (*_sym_glGenBuffers) (GLsizei n, GLuint* buffers) = NULL; | ||
174 | static void (*_sym_glGenerateMipmap) (GLenum target) = NULL; | ||
175 | static void (*_sym_glGenFramebuffers) (GLsizei n, GLuint* framebuffers) = NULL; | ||
176 | static void (*_sym_glGenRenderbuffers) (GLsizei n, GLuint* renderbuffers) = NULL; | ||
177 | static void (*_sym_glGenTextures) (GLsizei n, GLuint* textures) = NULL; | ||
178 | static void (*_sym_glGetActiveAttrib) (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name) = NULL; | ||
179 | static void (*_sym_glGetActiveUniform) (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name) = NULL; | ||
180 | static void (*_sym_glGetAttachedShaders) (GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders) = NULL; | ||
181 | static int (*_sym_glGetAttribLocation) (GLuint program, const char* name) = NULL; | ||
182 | static void (*_sym_glGetBooleanv) (GLenum pname, GLboolean* params) = NULL; | ||
183 | static void (*_sym_glGetBufferParameteriv) (GLenum target, GLenum pname, GLint* params) = NULL; | ||
184 | static GLenum (*_sym_glGetError) (void) = NULL; | ||
185 | static void (*_sym_glGetFloatv) (GLenum pname, GLfloat* params) = NULL; | ||
186 | static void (*_sym_glGetFramebufferAttachmentParameteriv) (GLenum target, GLenum attachment, GLenum pname, GLint* params) = NULL; | ||
187 | static void (*_sym_glGetIntegerv) (GLenum pname, GLint* params) = NULL; | ||
188 | static void (*_sym_glGetProgramiv) (GLuint program, GLenum pname, GLint* params) = NULL; | ||
189 | static void (*_sym_glGetProgramInfoLog) (GLuint program, GLsizei bufsize, GLsizei* length, char* infolog) = NULL; | ||
190 | static void (*_sym_glGetRenderbufferParameteriv) (GLenum target, GLenum pname, GLint* params) = NULL; | ||
191 | static void (*_sym_glGetShaderiv) (GLuint shader, GLenum pname, GLint* params) = NULL; | ||
192 | static void (*_sym_glGetShaderInfoLog) (GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog) = NULL; | ||
193 | static void (*_sym_glGetShaderPrecisionFormat) (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision) = NULL; | ||
194 | static void (*_sym_glGetShaderSource) (GLuint shader, GLsizei bufsize, GLsizei* length, char* source) = NULL; | ||
195 | static const GLubyte *(*_sym_glGetString) (GLenum name) = NULL; | ||
196 | static void (*_sym_glGetTexParameterfv) (GLenum target, GLenum pname, GLfloat* params) = NULL; | ||
197 | static void (*_sym_glGetTexParameteriv) (GLenum target, GLenum pname, GLint* params) = NULL; | ||
198 | static void (*_sym_glGetUniformfv) (GLuint program, GLint location, GLfloat* params) = NULL; | ||
199 | static void (*_sym_glGetUniformiv) (GLuint program, GLint location, GLint* params) = NULL; | ||
200 | static int (*_sym_glGetUniformLocation) (GLuint program, const char* name) = NULL; | ||
201 | static void (*_sym_glGetVertexAttribfv) (GLuint index, GLenum pname, GLfloat* params) = NULL; | ||
202 | static void (*_sym_glGetVertexAttribiv) (GLuint index, GLenum pname, GLint* params) = NULL; | ||
203 | static void (*_sym_glGetVertexAttribPointerv) (GLuint index, GLenum pname, void** pointer) = NULL; | ||
204 | static void (*_sym_glHint) (GLenum target, GLenum mode) = NULL; | ||
205 | static GLboolean (*_sym_glIsBuffer) (GLuint buffer) = NULL; | ||
206 | static GLboolean (*_sym_glIsEnabled) (GLenum cap) = NULL; | ||
207 | static GLboolean (*_sym_glIsFramebuffer) (GLuint framebuffer) = NULL; | ||
208 | static GLboolean (*_sym_glIsProgram) (GLuint program) = NULL; | ||
209 | static GLboolean (*_sym_glIsRenderbuffer) (GLuint renderbuffer) = NULL; | ||
210 | static GLboolean (*_sym_glIsShader) (GLuint shader) = NULL; | ||
211 | static GLboolean (*_sym_glIsTexture) (GLuint texture) = NULL; | ||
212 | static void (*_sym_glLineWidth) (GLfloat width) = NULL; | ||
213 | static void (*_sym_glLinkProgram) (GLuint program) = NULL; | ||
214 | static void (*_sym_glPixelStorei) (GLenum pname, GLint param) = NULL; | ||
215 | static void (*_sym_glPolygonOffset) (GLfloat factor, GLfloat units) = NULL; | ||
216 | static void (*_sym_glReadPixels) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void* pixels) = NULL; | ||
217 | static void (*_sym_glReleaseShaderCompiler) (void) = NULL; | ||
218 | static void (*_sym_glRenderbufferStorage) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height) = NULL; | ||
219 | static void (*_sym_glSampleCoverage) (GLclampf value, GLboolean invert) = NULL; | ||
220 | static void (*_sym_glScissor) (GLint x, GLint y, GLsizei width, GLsizei height) = NULL; | ||
221 | static void (*_sym_glShaderBinary) (GLsizei n, const GLuint* shaders, GLenum binaryformat, const void* binary, GLsizei length) = NULL; | ||
222 | static void (*_sym_glShaderSource) (GLuint shader, GLsizei count, const char** string, const GLint* length) = NULL; | ||
223 | static void (*_sym_glStencilFunc) (GLenum func, GLint ref, GLuint mask) = NULL; | ||
224 | static void (*_sym_glStencilFuncSeparate) (GLenum face, GLenum func, GLint ref, GLuint mask) = NULL; | ||
225 | static void (*_sym_glStencilMask) (GLuint mask) = NULL; | ||
226 | static void (*_sym_glStencilMaskSeparate) (GLenum face, GLuint mask) = NULL; | ||
227 | static void (*_sym_glStencilOp) (GLenum fail, GLenum zfail, GLenum zpass) = NULL; | ||
228 | static void (*_sym_glStencilOpSeparate) (GLenum face, GLenum fail, GLenum zfail, GLenum zpass) = NULL; | ||
229 | static void (*_sym_glTexImage2D) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels) = NULL; | ||
230 | static void (*_sym_glTexParameterf) (GLenum target, GLenum pname, GLfloat param) = NULL; | ||
231 | static void (*_sym_glTexParameterfv) (GLenum target, GLenum pname, const GLfloat* params) = NULL; | ||
232 | static void (*_sym_glTexParameteri) (GLenum target, GLenum pname, GLint param) = NULL; | ||
233 | static void (*_sym_glTexParameteriv) (GLenum target, GLenum pname, const GLint* params) = NULL; | ||
234 | static void (*_sym_glTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels) = NULL; | ||
235 | static void (*_sym_glUniform1f) (GLint location, GLfloat x) = NULL; | ||
236 | static void (*_sym_glUniform1fv) (GLint location, GLsizei count, const GLfloat* v) = NULL; | ||
237 | static void (*_sym_glUniform1i) (GLint location, GLint x) = NULL; | ||
238 | static void (*_sym_glUniform1iv) (GLint location, GLsizei count, const GLint* v) = NULL; | ||
239 | static void (*_sym_glUniform2f) (GLint location, GLfloat x, GLfloat y) = NULL; | ||
240 | static void (*_sym_glUniform2fv) (GLint location, GLsizei count, const GLfloat* v) = NULL; | ||
241 | static void (*_sym_glUniform2i) (GLint location, GLint x, GLint y) = NULL; | ||
242 | static void (*_sym_glUniform2iv) (GLint location, GLsizei count, const GLint* v) = NULL; | ||
243 | static void (*_sym_glUniform3f) (GLint location, GLfloat x, GLfloat y, GLfloat z) = NULL; | ||
244 | static void (*_sym_glUniform3fv) (GLint location, GLsizei count, const GLfloat* v) = NULL; | ||
245 | static void (*_sym_glUniform3i) (GLint location, GLint x, GLint y, GLint z) = NULL; | ||
246 | static void (*_sym_glUniform3iv) (GLint location, GLsizei count, const GLint* v) = NULL; | ||
247 | static void (*_sym_glUniform4f) (GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) = NULL; | ||
248 | static void (*_sym_glUniform4fv) (GLint location, GLsizei count, const GLfloat* v) = NULL; | ||
249 | static void (*_sym_glUniform4i) (GLint location, GLint x, GLint y, GLint z, GLint w) = NULL; | ||
250 | static void (*_sym_glUniform4iv) (GLint location, GLsizei count, const GLint* v) = NULL; | ||
251 | static void (*_sym_glUniformMatrix2fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) = NULL; | ||
252 | static void (*_sym_glUniformMatrix3fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) = NULL; | ||
253 | static void (*_sym_glUniformMatrix4fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) = NULL; | ||
254 | static void (*_sym_glUseProgram) (GLuint program) = NULL; | ||
255 | static void (*_sym_glValidateProgram) (GLuint program) = NULL; | ||
256 | static void (*_sym_glVertexAttrib1f) (GLuint indx, GLfloat x) = NULL; | ||
257 | static void (*_sym_glVertexAttrib1fv) (GLuint indx, const GLfloat* values) = NULL; | ||
258 | static void (*_sym_glVertexAttrib2f) (GLuint indx, GLfloat x, GLfloat y) = NULL; | ||
259 | static void (*_sym_glVertexAttrib2fv) (GLuint indx, const GLfloat* values) = NULL; | ||
260 | static void (*_sym_glVertexAttrib3f) (GLuint indx, GLfloat x, GLfloat y, GLfloat z) = NULL; | ||
261 | static void (*_sym_glVertexAttrib3fv) (GLuint indx, const GLfloat* values) = NULL; | ||
262 | static void (*_sym_glVertexAttrib4f) (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w) = NULL; | ||
263 | static void (*_sym_glVertexAttrib4fv) (GLuint indx, const GLfloat* values) = NULL; | ||
264 | static void (*_sym_glVertexAttribPointer) (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* ptr) = NULL; | ||
265 | static void (*_sym_glViewport) (GLint x, GLint y, GLsizei width, GLsizei height) = NULL; | ||
266 | |||
267 | // GLES Extensions... | ||
268 | /* static void (*_sym_glGetProgramBinary) (GLuint a, GLsizei b, GLsizei* c, GLenum* d, void* e) = NULL; */ | ||
269 | /* static void (*_sym_glProgramBinary) (GLuint a, GLenum b, const void* c, GLint d) = NULL; */ | ||
270 | /* static void (*_sym_glProgramParameteri) (GLuint a, GLuint b, GLint d) = NULL; */ | ||
271 | #endif | ||
272 | |||
4 | /* | 273 | /* |
5 | ***** | 274 | ***** |
6 | ** | 275 | ** |
@@ -258,6 +527,15 @@ eng_image_colorspace_get(void *data __UNUSED__, void *image) | |||
258 | return im->space; | 527 | return im->space; |
259 | } | 528 | } |
260 | 529 | ||
530 | static Eina_Bool | ||
531 | eng_image_can_region_get(void *data __UNUSED__, void *image) | ||
532 | { | ||
533 | Image_Entry *im; | ||
534 | if (!image) return EINA_FALSE; | ||
535 | im = image; | ||
536 | return ((Evas_Image_Load_Func*) im->info.loader)->do_region; | ||
537 | } | ||
538 | |||
261 | static void | 539 | static void |
262 | eng_image_mask_create(void *data __UNUSED__, void *image) | 540 | eng_image_mask_create(void *data __UNUSED__, void *image) |
263 | { | 541 | { |
@@ -349,7 +627,37 @@ eng_image_colorspace_set(void *data __UNUSED__, void *image, int cspace) | |||
349 | static void * | 627 | static void * |
350 | eng_image_native_set(void *data __UNUSED__, void *image, void *native __UNUSED__) | 628 | eng_image_native_set(void *data __UNUSED__, void *image, void *native __UNUSED__) |
351 | { | 629 | { |
352 | return image; | 630 | //return image; |
631 | Evas_Native_Surface *ns = native; | ||
632 | Image_Entry *im = image, *im2 = NULL; | ||
633 | |||
634 | if (!im) | ||
635 | { | ||
636 | if ((!ns) && (ns->data.x11.visual)) | ||
637 | { | ||
638 | im = evas_cache_image_data(evas_common_image_cache_get(), | ||
639 | im->w, im->h, | ||
640 | ns->data.x11.visual, 1, | ||
641 | EVAS_COLORSPACE_ARGB8888); | ||
642 | return im; | ||
643 | } | ||
644 | else | ||
645 | return NULL; | ||
646 | } | ||
647 | |||
648 | if ((!ns) && (!im)) return im; | ||
649 | |||
650 | if (!ns) return im; | ||
651 | |||
652 | im2 = evas_cache_image_data(evas_common_image_cache_get(), | ||
653 | im->w, im->h, | ||
654 | ns->data.x11.visual, 1, | ||
655 | EVAS_COLORSPACE_ARGB8888); | ||
656 | evas_cache_image_drop(im); | ||
657 | im = im2; | ||
658 | |||
659 | return im; | ||
660 | |||
353 | } | 661 | } |
354 | 662 | ||
355 | static void * | 663 | static void * |
@@ -1035,6 +1343,311 @@ eng_image_load_error_get(void *data __UNUSED__, void *image) | |||
1035 | return im->cache_entry.load_error; | 1343 | return im->cache_entry.load_error; |
1036 | } | 1344 | } |
1037 | 1345 | ||
1346 | //------------ Evas GL engine code ---------------// | ||
1347 | static void * | ||
1348 | eng_gl_surface_create(void *data __UNUSED__, void *config, int w, int h) | ||
1349 | { | ||
1350 | #ifdef EVAS_GL | ||
1351 | Render_Engine_GL_Surface *sfc; | ||
1352 | Evas_GL_Config *cfg; | ||
1353 | |||
1354 | sfc = calloc(1, sizeof(Render_Engine_GL_Surface)); | ||
1355 | if (!sfc) return NULL; | ||
1356 | |||
1357 | cfg = (Evas_GL_Config *)config; | ||
1358 | |||
1359 | sfc->initialized = 0; | ||
1360 | sfc->w = w; | ||
1361 | sfc->h = h; | ||
1362 | |||
1363 | // Color Format | ||
1364 | switch (cfg->color_format) | ||
1365 | { | ||
1366 | |||
1367 | case EVAS_GL_RGB_888: | ||
1368 | sfc->internal_fmt = OSMESA_RGB; | ||
1369 | sfc->internal_cpp = 3; | ||
1370 | break; | ||
1371 | case EVAS_GL_RGBA_8888: | ||
1372 | sfc->internal_fmt = OSMESA_BGRA; | ||
1373 | sfc->internal_cpp = 4; | ||
1374 | break; | ||
1375 | default: | ||
1376 | sfc->internal_fmt = OSMESA_RGBA; | ||
1377 | sfc->internal_cpp = 4; | ||
1378 | break; | ||
1379 | } | ||
1380 | |||
1381 | // Depth Bits | ||
1382 | switch (cfg->depth_bits) | ||
1383 | { | ||
1384 | case EVAS_GL_DEPTH_BIT_8: | ||
1385 | sfc->depth_bits = 8; | ||
1386 | break; | ||
1387 | case EVAS_GL_DEPTH_BIT_16: | ||
1388 | sfc->depth_bits = 16; | ||
1389 | break; | ||
1390 | case EVAS_GL_DEPTH_BIT_24: | ||
1391 | sfc->depth_bits = 24; | ||
1392 | break; | ||
1393 | case EVAS_GL_DEPTH_BIT_32: | ||
1394 | sfc->depth_bits = 32; | ||
1395 | break; | ||
1396 | case EVAS_GL_DEPTH_NONE: | ||
1397 | default: | ||
1398 | sfc->depth_bits = 0; | ||
1399 | break; | ||
1400 | } | ||
1401 | |||
1402 | // Stencil Bits | ||
1403 | switch (cfg->stencil_bits) | ||
1404 | { | ||
1405 | case EVAS_GL_STENCIL_BIT_1: | ||
1406 | sfc->stencil_bits = 1; | ||
1407 | break; | ||
1408 | case EVAS_GL_STENCIL_BIT_2: | ||
1409 | sfc->stencil_bits = 2; | ||
1410 | break; | ||
1411 | case EVAS_GL_STENCIL_BIT_4: | ||
1412 | sfc->stencil_bits = 4; | ||
1413 | break; | ||
1414 | case EVAS_GL_STENCIL_BIT_8: | ||
1415 | sfc->stencil_bits = 8; | ||
1416 | break; | ||
1417 | case EVAS_GL_STENCIL_BIT_16: | ||
1418 | sfc->stencil_bits = 16; | ||
1419 | break; | ||
1420 | case EVAS_GL_STENCIL_NONE: | ||
1421 | default: | ||
1422 | sfc->stencil_bits = 0; | ||
1423 | break; | ||
1424 | } | ||
1425 | |||
1426 | sfc->buffer = malloc(sizeof(unsigned char)*sfc->internal_cpp*w*h); | ||
1427 | |||
1428 | if (!sfc->buffer) | ||
1429 | { | ||
1430 | free(sfc); | ||
1431 | return NULL; | ||
1432 | } | ||
1433 | |||
1434 | return sfc; | ||
1435 | #else | ||
1436 | (void) config; | ||
1437 | (void) w; | ||
1438 | (void) h; | ||
1439 | return NULL; | ||
1440 | #endif | ||
1441 | } | ||
1442 | |||
1443 | static int | ||
1444 | eng_gl_surface_destroy(void *data __UNUSED__, void *surface) | ||
1445 | { | ||
1446 | #ifdef EVAS_GL | ||
1447 | Render_Engine_GL_Surface *sfc; | ||
1448 | |||
1449 | sfc = (Render_Engine_GL_Surface*)surface; | ||
1450 | |||
1451 | if (!sfc) return 0; | ||
1452 | |||
1453 | if (sfc->buffer) free(sfc->buffer); | ||
1454 | |||
1455 | free(sfc); | ||
1456 | |||
1457 | surface = NULL; | ||
1458 | |||
1459 | return 1; | ||
1460 | #else | ||
1461 | (void) surface; | ||
1462 | return 1; | ||
1463 | #endif | ||
1464 | } | ||
1465 | |||
1466 | static void * | ||
1467 | eng_gl_context_create(void *data __UNUSED__, void *share_context) | ||
1468 | { | ||
1469 | #ifdef EVAS_GL | ||
1470 | Render_Engine_GL_Context *ctx; | ||
1471 | Render_Engine_GL_Context *share_ctx; | ||
1472 | |||
1473 | ctx = calloc(1, sizeof(Render_Engine_GL_Context)); | ||
1474 | |||
1475 | if (!ctx) return NULL; | ||
1476 | |||
1477 | share_ctx = (Render_Engine_GL_Context *)share_context; | ||
1478 | |||
1479 | ctx->share_ctx = share_ctx; | ||
1480 | |||
1481 | /* | ||
1482 | if (share_ctx) | ||
1483 | ctx->context = OSMesaCreateContextExt( OSMESA_RGBA, 8, 0, 0, share_ctx->context ); | ||
1484 | else | ||
1485 | ctx->context = OSMesaCreateContextExt( OSMESA_RGBA, 8, 0, 0, NULL ); | ||
1486 | |||
1487 | |||
1488 | if (!ctx->context) | ||
1489 | { | ||
1490 | ERR("Error creating OSMesa Context."); | ||
1491 | free(ctx); | ||
1492 | return NULL; | ||
1493 | } | ||
1494 | */ | ||
1495 | |||
1496 | ctx->initialized = 0; | ||
1497 | |||
1498 | return ctx; | ||
1499 | #else | ||
1500 | (void) share_context; | ||
1501 | return NULL; | ||
1502 | #endif | ||
1503 | } | ||
1504 | |||
1505 | static int | ||
1506 | eng_gl_context_destroy(void *data __UNUSED__, void *context) | ||
1507 | { | ||
1508 | #ifdef EVAS_GL | ||
1509 | Render_Engine_GL_Context *ctx; | ||
1510 | |||
1511 | ctx = (Render_Engine_GL_Context*)context; | ||
1512 | |||
1513 | if (!ctx) return 0; | ||
1514 | |||
1515 | _sym_OSMesaDestroyContext(ctx->context); | ||
1516 | |||
1517 | free(ctx); | ||
1518 | context = NULL; | ||
1519 | |||
1520 | return 1; | ||
1521 | #else | ||
1522 | (void) context; | ||
1523 | return 0; | ||
1524 | #endif | ||
1525 | } | ||
1526 | |||
1527 | static int | ||
1528 | eng_gl_make_current(void *data __UNUSED__, void *surface, void *context) | ||
1529 | { | ||
1530 | #ifdef EVAS_GL | ||
1531 | Render_Engine_GL_Surface *sfc; | ||
1532 | Render_Engine_GL_Context *ctx; | ||
1533 | OSMesaContext share_ctx; | ||
1534 | GLboolean ret; | ||
1535 | |||
1536 | sfc = (Render_Engine_GL_Surface*)surface; | ||
1537 | ctx = (Render_Engine_GL_Context*)context; | ||
1538 | |||
1539 | // Unset surface/context | ||
1540 | if ((!sfc) || (!ctx)) | ||
1541 | { | ||
1542 | if (ctx) ctx->current_sfc = NULL; | ||
1543 | if (sfc) sfc->current_ctx = NULL; | ||
1544 | return 1; | ||
1545 | } | ||
1546 | |||
1547 | // Initialize Context if it hasn't been. | ||
1548 | if (!ctx->initialized) | ||
1549 | { | ||
1550 | if (ctx->share_ctx) | ||
1551 | share_ctx = ctx->share_ctx->context; | ||
1552 | else | ||
1553 | share_ctx = NULL; | ||
1554 | |||
1555 | ctx->context = _sym_OSMesaCreateContextExt(sfc->internal_fmt, | ||
1556 | sfc->depth_bits, | ||
1557 | sfc->stencil_bits, | ||
1558 | 0, | ||
1559 | share_ctx); | ||
1560 | if (!ctx->context) | ||
1561 | { | ||
1562 | ERR("Error initializing context."); | ||
1563 | return 0; | ||
1564 | } | ||
1565 | |||
1566 | ctx->initialized = 1; | ||
1567 | } | ||
1568 | |||
1569 | |||
1570 | // Call MakeCurrent | ||
1571 | ret = _sym_OSMesaMakeCurrent(ctx->context, sfc->buffer, GL_UNSIGNED_BYTE, | ||
1572 | sfc->w, sfc->h); | ||
1573 | |||
1574 | if (ret == GL_FALSE) | ||
1575 | { | ||
1576 | ERR("Error doing MakeCurrent."); | ||
1577 | return 0; | ||
1578 | } | ||
1579 | |||
1580 | _sym_OSMesaPixelStore(OSMESA_Y_UP, 0); | ||
1581 | |||
1582 | // Set the current surface/context | ||
1583 | ctx->current_sfc = sfc; | ||
1584 | sfc->current_ctx = ctx; | ||
1585 | |||
1586 | return 1; | ||
1587 | #else | ||
1588 | (void) surface; | ||
1589 | (void) context; | ||
1590 | return 1; | ||
1591 | #endif | ||
1592 | } | ||
1593 | |||
1594 | // FIXME!!! Implement later | ||
1595 | static void * | ||
1596 | eng_gl_string_query(void *data __UNUSED__, int name __UNUSED__) | ||
1597 | { | ||
1598 | return NULL; | ||
1599 | } | ||
1600 | |||
1601 | static void * | ||
1602 | eng_gl_proc_address_get(void *data __UNUSED__, const char *name) | ||
1603 | { | ||
1604 | #ifdef EVAS_GL | ||
1605 | if (_sym_OSMesaGetProcAddress) return _sym_OSMesaGetProcAddress(name); | ||
1606 | return dlsym(RTLD_DEFAULT, name); | ||
1607 | #else | ||
1608 | (void) name; | ||
1609 | return NULL; | ||
1610 | #endif | ||
1611 | } | ||
1612 | |||
1613 | static int | ||
1614 | eng_gl_native_surface_get(void *data __UNUSED__, void *surface, void *native_surface) | ||
1615 | { | ||
1616 | #ifdef EVAS_GL | ||
1617 | Render_Engine_GL_Surface *sfc; | ||
1618 | Evas_Native_Surface *ns; | ||
1619 | |||
1620 | sfc = (Render_Engine_GL_Surface*)surface; | ||
1621 | ns = (Evas_Native_Surface*)native_surface; | ||
1622 | |||
1623 | if (!sfc) return 0; | ||
1624 | |||
1625 | ns->type = EVAS_NATIVE_SURFACE_OPENGL; | ||
1626 | ns->version = EVAS_NATIVE_SURFACE_VERSION; | ||
1627 | ns->data.x11.visual = sfc->buffer; | ||
1628 | |||
1629 | return 1; | ||
1630 | #else | ||
1631 | (void) surface; | ||
1632 | (void) native_surface; | ||
1633 | return 1; | ||
1634 | #endif | ||
1635 | } | ||
1636 | |||
1637 | |||
1638 | static void * | ||
1639 | eng_gl_api_get(void *data __UNUSED__) | ||
1640 | { | ||
1641 | #ifdef EVAS_GL | ||
1642 | return &gl_funcs; | ||
1643 | #else | ||
1644 | return NULL; | ||
1645 | #endif | ||
1646 | } | ||
1647 | |||
1648 | //------------------------------------------------// | ||
1649 | |||
1650 | |||
1038 | /* | 1651 | /* |
1039 | ***** | 1652 | ***** |
1040 | ** | 1653 | ** |
@@ -1112,6 +1725,7 @@ static Evas_Func func = | |||
1112 | eng_image_format_get, | 1725 | eng_image_format_get, |
1113 | eng_image_colorspace_set, | 1726 | eng_image_colorspace_set, |
1114 | eng_image_colorspace_get, | 1727 | eng_image_colorspace_get, |
1728 | eng_image_can_region_get, | ||
1115 | eng_image_mask_create, | 1729 | eng_image_mask_create, |
1116 | eng_image_native_set, | 1730 | eng_image_native_set, |
1117 | eng_image_native_get, | 1731 | eng_image_native_get, |
@@ -1161,15 +1775,15 @@ static Evas_Func func = | |||
1161 | eng_image_filtered_save, | 1775 | eng_image_filtered_save, |
1162 | eng_image_filtered_free, | 1776 | eng_image_filtered_free, |
1163 | #endif | 1777 | #endif |
1164 | NULL, // FIXME: need software mesa for gl rendering <- gl_surface_create | 1778 | NULL, // need software mesa for gl rendering <- gl_surface_create |
1165 | NULL, // FIXME: need software mesa for gl rendering <- gl_surface_destroy | 1779 | NULL, // need software mesa for gl rendering <- gl_surface_destroy |
1166 | NULL, // FIXME: need software mesa for gl rendering <- gl_context_create | 1780 | NULL, // need software mesa for gl rendering <- gl_context_create |
1167 | NULL, // FIXME: need software mesa for gl rendering <- gl_context_destroy | 1781 | NULL, // need software mesa for gl rendering <- gl_context_destroy |
1168 | NULL, // FIXME: need software mesa for gl rendering <- gl_make_current | 1782 | NULL, // need software mesa for gl rendering <- gl_make_current |
1169 | NULL, // FIXME: need software mesa for gl rendering <- gl_string_query | 1783 | NULL, // need software mesa for gl rendering <- gl_string_query |
1170 | NULL, // FIXME: need software mesa for gl rendering <- gl_proc_address_get | 1784 | NULL, // need software mesa for gl rendering <- gl_proc_address_get |
1171 | NULL, // FIXME: need software mesa for gl rendering <- gl_native_surface_get | 1785 | NULL, // need software mesa for gl rendering <- gl_native_surface_get |
1172 | NULL, // FIXME: need software mesa for gl rendering <- gl_api_get | 1786 | NULL, // need software mesa for gl rendering <- gl_api_get |
1173 | eng_image_load_error_get, | 1787 | eng_image_load_error_get, |
1174 | eng_font_run_font_end_get, | 1788 | eng_font_run_font_end_get, |
1175 | eng_image_animated_get, | 1789 | eng_image_animated_get, |
@@ -1182,6 +1796,981 @@ static Evas_Func func = | |||
1182 | /* FUTURE software generic calls go here */ | 1796 | /* FUTURE software generic calls go here */ |
1183 | }; | 1797 | }; |
1184 | 1798 | ||
1799 | |||
1800 | //----------------------------------------------------------------// | ||
1801 | // // | ||
1802 | // Load Symbols // | ||
1803 | // // | ||
1804 | //----------------------------------------------------------------// | ||
1805 | #ifdef EVAS_GL | ||
1806 | static void | ||
1807 | sym_missing(void) | ||
1808 | { | ||
1809 | ERR("GL symbols missing!\n"); | ||
1810 | } | ||
1811 | |||
1812 | static int | ||
1813 | glue_sym_init(void) | ||
1814 | { | ||
1815 | //------------------------------------------------// | ||
1816 | // Use eglGetProcAddress | ||
1817 | #define FINDSYM(dst, sym, typ) \ | ||
1818 | if (!dst) dst = (typeof(dst))dlsym(gl_lib_handle, sym); \ | ||
1819 | if (!dst) \ | ||
1820 | { \ | ||
1821 | ERR("Symbol not found %s\n", sym); \ | ||
1822 | return 0; \ | ||
1823 | } | ||
1824 | #define FALLBAK(dst, typ) if (!dst) dst = (typeof(dst))sym_missing; | ||
1825 | |||
1826 | //------------------------------------------------------// | ||
1827 | // OSMesa APIs... | ||
1828 | FINDSYM(_sym_OSMesaCreateContextExt, "OSMesaCreateContextExt", glsym_func_osm_ctx); | ||
1829 | FALLBAK(_sym_OSMesaCreateContextExt, glsym_func_void); | ||
1830 | |||
1831 | FINDSYM(_sym_OSMesaDestroyContext, "OSMesaDestroyContext", glsym_func_void); | ||
1832 | FALLBAK(_sym_OSMesaDestroyContext, glsym_func_void); | ||
1833 | |||
1834 | FINDSYM(_sym_OSMesaMakeCurrent, "OSMesaMakeCurrent", glsym_func_bool); | ||
1835 | FALLBAK(_sym_OSMesaMakeCurrent, glsym_func_void); | ||
1836 | |||
1837 | FINDSYM(_sym_OSMesaPixelStore, "OSMesaPixelStore", glsym_func_void); | ||
1838 | FALLBAK(_sym_OSMesaPixelStore, glsym_func_void); | ||
1839 | |||
1840 | FINDSYM(_sym_OSMesaGetProcAddress, "OSMesaGetProcAddress", glsym_func_eng_fn); | ||
1841 | FALLBAK(_sym_OSMesaGetProcAddress, glsym_func_void); | ||
1842 | |||
1843 | #undef FINDSYM | ||
1844 | #undef FALLBAK | ||
1845 | |||
1846 | return 1; | ||
1847 | } | ||
1848 | |||
1849 | static int | ||
1850 | gl_sym_init(void) | ||
1851 | { | ||
1852 | //------------------------------------------------// | ||
1853 | #define FINDSYM(dst, sym, typ) \ | ||
1854 | if (!dst) dst = (typeof(dst))dlsym(gl_lib_handle, sym); \ | ||
1855 | if (!dst) DBG("Symbol not found %s\n", sym); | ||
1856 | #define FALLBAK(dst, typ) if (!dst) dst = (typeof(dst))sym_missing; | ||
1857 | |||
1858 | |||
1859 | //------------------------------------------------------// | ||
1860 | // GLES 2.0 APIs... | ||
1861 | FINDSYM(_sym_glActiveTexture, "glActiveTexture", glsym_func_void); | ||
1862 | FALLBAK(_sym_glActiveTexture, glsym_func_void); | ||
1863 | |||
1864 | FINDSYM(_sym_glAttachShader, "glAttachShader", glsym_func_void); | ||
1865 | FALLBAK(_sym_glAttachShader, glsym_func_void); | ||
1866 | |||
1867 | FINDSYM(_sym_glBindAttribLocation, "glBindAttribLocation", glsym_func_void); | ||
1868 | FALLBAK(_sym_glBindAttribLocation, glsym_func_void); | ||
1869 | |||
1870 | FINDSYM(_sym_glBindBuffer, "glBindBuffer", glsym_func_void); | ||
1871 | FALLBAK(_sym_glBindBuffer, glsym_func_void); | ||
1872 | |||
1873 | FINDSYM(_sym_glBindFramebuffer, "glBindFramebuffer", glsym_func_void); | ||
1874 | FALLBAK(_sym_glBindFramebuffer, glsym_func_void); | ||
1875 | |||
1876 | FINDSYM(_sym_glBindRenderbuffer, "glBindRenderbuffer", glsym_func_void); | ||
1877 | FALLBAK(_sym_glBindRenderbuffer, glsym_func_void); | ||
1878 | |||
1879 | FINDSYM(_sym_glBindTexture, "glBindTexture", glsym_func_void); | ||
1880 | FALLBAK(_sym_glBindTexture, glsym_func_void); | ||
1881 | |||
1882 | FINDSYM(_sym_glBlendColor, "glBlendColor", glsym_func_void); | ||
1883 | FALLBAK(_sym_glBlendColor, glsym_func_void); | ||
1884 | |||
1885 | FINDSYM(_sym_glBlendEquation, "glBlendEquation", glsym_func_void); | ||
1886 | FALLBAK(_sym_glBlendEquation, glsym_func_void); | ||
1887 | |||
1888 | FINDSYM(_sym_glBlendEquationSeparate, "glBlendEquationSeparate", glsym_func_void); | ||
1889 | FALLBAK(_sym_glBlendEquationSeparate, glsym_func_void); | ||
1890 | |||
1891 | FINDSYM(_sym_glBlendFunc, "glBlendFunc", glsym_func_void); | ||
1892 | FALLBAK(_sym_glBlendFunc, glsym_func_void); | ||
1893 | |||
1894 | FINDSYM(_sym_glBlendFuncSeparate, "glBlendFuncSeparate", glsym_func_void); | ||
1895 | FALLBAK(_sym_glBlendFuncSeparate, glsym_func_void); | ||
1896 | |||
1897 | FINDSYM(_sym_glBufferData, "glBufferData", glsym_func_void); | ||
1898 | FALLBAK(_sym_glBufferData, glsym_func_void); | ||
1899 | |||
1900 | FINDSYM(_sym_glBufferSubData, "glBufferSubData", glsym_func_void); | ||
1901 | FALLBAK(_sym_glBufferSubData, glsym_func_void); | ||
1902 | |||
1903 | FINDSYM(_sym_glCheckFramebufferStatus, "glCheckFramebufferStatus", glsym_func_uint); | ||
1904 | FALLBAK(_sym_glCheckFramebufferStatus, glsym_func_uint); | ||
1905 | |||
1906 | FINDSYM(_sym_glClear, "glClear", glsym_func_void); | ||
1907 | FALLBAK(_sym_glClear, glsym_func_void); | ||
1908 | |||
1909 | FINDSYM(_sym_glClearColor, "glClearColor", glsym_func_void); | ||
1910 | FALLBAK(_sym_glClearColor, glsym_func_void); | ||
1911 | |||
1912 | FINDSYM(_sym_glClearDepthf, "glClearDepthf", glsym_func_void); | ||
1913 | FINDSYM(_sym_glClearDepthf, "glClearDepth", glsym_func_void); | ||
1914 | FALLBAK(_sym_glClearDepthf, glsym_func_void); | ||
1915 | |||
1916 | FINDSYM(_sym_glClearStencil, "glClearStencil", glsym_func_void); | ||
1917 | FALLBAK(_sym_glClearStencil, glsym_func_void); | ||
1918 | |||
1919 | FINDSYM(_sym_glColorMask, "glColorMask", glsym_func_void); | ||
1920 | FALLBAK(_sym_glColorMask, glsym_func_void); | ||
1921 | |||
1922 | FINDSYM(_sym_glCompileShader, "glCompileShader", glsym_func_void); | ||
1923 | FALLBAK(_sym_glCompileShader, glsym_func_void); | ||
1924 | |||
1925 | FINDSYM(_sym_glCompressedTexImage2D, "glCompressedTexImage2D", glsym_func_void); | ||
1926 | FALLBAK(_sym_glCompressedTexImage2D, glsym_func_void); | ||
1927 | |||
1928 | FINDSYM(_sym_glCompressedTexSubImage2D, "glCompressedTexSubImage2D", glsym_func_void); | ||
1929 | FALLBAK(_sym_glCompressedTexSubImage2D, glsym_func_void); | ||
1930 | |||
1931 | FINDSYM(_sym_glCopyTexImage2D, "glCopyTexImage2D", glsym_func_void); | ||
1932 | FALLBAK(_sym_glCopyTexImage2D, glsym_func_void); | ||
1933 | |||
1934 | FINDSYM(_sym_glCopyTexSubImage2D, "glCopyTexSubImage2D", glsym_func_void); | ||
1935 | FALLBAK(_sym_glCopyTexSubImage2D, glsym_func_void); | ||
1936 | |||
1937 | FINDSYM(_sym_glCreateProgram, "glCreateProgram", glsym_func_uint); | ||
1938 | FALLBAK(_sym_glCreateProgram, glsym_func_uint); | ||
1939 | |||
1940 | FINDSYM(_sym_glCreateShader, "glCreateShader", glsym_func_uint); | ||
1941 | FALLBAK(_sym_glCreateShader, glsym_func_uint); | ||
1942 | |||
1943 | FINDSYM(_sym_glCullFace, "glCullFace", glsym_func_void); | ||
1944 | FALLBAK(_sym_glCullFace, glsym_func_void); | ||
1945 | |||
1946 | FINDSYM(_sym_glDeleteBuffers, "glDeleteBuffers", glsym_func_void); | ||
1947 | FALLBAK(_sym_glDeleteBuffers, glsym_func_void); | ||
1948 | |||
1949 | FINDSYM(_sym_glDeleteFramebuffers, "glDeleteFramebuffers", glsym_func_void); | ||
1950 | FALLBAK(_sym_glDeleteFramebuffers, glsym_func_void); | ||
1951 | |||
1952 | FINDSYM(_sym_glDeleteProgram, "glDeleteProgram", glsym_func_void); | ||
1953 | FALLBAK(_sym_glDeleteProgram, glsym_func_void); | ||
1954 | |||
1955 | FINDSYM(_sym_glDeleteRenderbuffers, "glDeleteRenderbuffers", glsym_func_void); | ||
1956 | FALLBAK(_sym_glDeleteRenderbuffers, glsym_func_void); | ||
1957 | |||
1958 | FINDSYM(_sym_glDeleteShader, "glDeleteShader", glsym_func_void); | ||
1959 | FALLBAK(_sym_glDeleteShader, glsym_func_void); | ||
1960 | |||
1961 | FINDSYM(_sym_glDeleteTextures, "glDeleteTextures", glsym_func_void); | ||
1962 | FALLBAK(_sym_glDeleteTextures, glsym_func_void); | ||
1963 | |||
1964 | FINDSYM(_sym_glDepthFunc, "glDepthFunc", glsym_func_void); | ||
1965 | FALLBAK(_sym_glDepthFunc, glsym_func_void); | ||
1966 | |||
1967 | FINDSYM(_sym_glDepthMask, "glDepthMask", glsym_func_void); | ||
1968 | FALLBAK(_sym_glDepthMask, glsym_func_void); | ||
1969 | |||
1970 | FINDSYM(_sym_glDepthRangef, "glDepthRangef", glsym_func_void); | ||
1971 | FINDSYM(_sym_glDepthRangef, "glDepthRange", glsym_func_void); | ||
1972 | FALLBAK(_sym_glDepthRangef, glsym_func_void); | ||
1973 | |||
1974 | FINDSYM(_sym_glDetachShader, "glDetachShader", glsym_func_void); | ||
1975 | FALLBAK(_sym_glDetachShader, glsym_func_void); | ||
1976 | |||
1977 | FINDSYM(_sym_glDisable, "glDisable", glsym_func_void); | ||
1978 | FALLBAK(_sym_glDisable, glsym_func_void); | ||
1979 | |||
1980 | FINDSYM(_sym_glDisableVertexAttribArray, "glDisableVertexAttribArray", glsym_func_void); | ||
1981 | FALLBAK(_sym_glDisableVertexAttribArray, glsym_func_void); | ||
1982 | |||
1983 | FINDSYM(_sym_glDrawArrays, "glDrawArrays", glsym_func_void); | ||
1984 | FALLBAK(_sym_glDrawArrays, glsym_func_void); | ||
1985 | |||
1986 | FINDSYM(_sym_glDrawElements, "glDrawElements", glsym_func_void); | ||
1987 | FALLBAK(_sym_glDrawElements, glsym_func_void); | ||
1988 | |||
1989 | FINDSYM(_sym_glEnable, "glEnable", glsym_func_void); | ||
1990 | FALLBAK(_sym_glEnable, glsym_func_void); | ||
1991 | |||
1992 | FINDSYM(_sym_glEnableVertexAttribArray, "glEnableVertexAttribArray", glsym_func_void); | ||
1993 | FALLBAK(_sym_glEnableVertexAttribArray, glsym_func_void); | ||
1994 | |||
1995 | FINDSYM(_sym_glFinish, "glFinish", glsym_func_void); | ||
1996 | FALLBAK(_sym_glFinish, glsym_func_void); | ||
1997 | |||
1998 | FINDSYM(_sym_glFlush, "glFlush", glsym_func_void); | ||
1999 | FALLBAK(_sym_glFlush, glsym_func_void); | ||
2000 | |||
2001 | FINDSYM(_sym_glFramebufferRenderbuffer, "glFramebufferRenderbuffer", glsym_func_void); | ||
2002 | FALLBAK(_sym_glFramebufferRenderbuffer, glsym_func_void); | ||
2003 | |||
2004 | FINDSYM(_sym_glFramebufferTexture2D, "glFramebufferTexture2D", glsym_func_void); | ||
2005 | FALLBAK(_sym_glFramebufferTexture2D, glsym_func_void); | ||
2006 | |||
2007 | FINDSYM(_sym_glFrontFace, "glFrontFace", glsym_func_void); | ||
2008 | FALLBAK(_sym_glFrontFace, glsym_func_void); | ||
2009 | |||
2010 | FINDSYM(_sym_glGenBuffers, "glGenBuffers", glsym_func_void); | ||
2011 | FALLBAK(_sym_glGenBuffers, glsym_func_void); | ||
2012 | |||
2013 | FINDSYM(_sym_glGenerateMipmap, "glGenerateMipmap", glsym_func_void); | ||
2014 | FALLBAK(_sym_glGenerateMipmap, glsym_func_void); | ||
2015 | |||
2016 | FINDSYM(_sym_glGenFramebuffers, "glGenFramebuffers", glsym_func_void); | ||
2017 | FALLBAK(_sym_glGenFramebuffers, glsym_func_void); | ||
2018 | |||
2019 | FINDSYM(_sym_glGenRenderbuffers, "glGenRenderbuffers", glsym_func_void); | ||
2020 | FALLBAK(_sym_glGenRenderbuffers, glsym_func_void); | ||
2021 | |||
2022 | FINDSYM(_sym_glGenTextures, "glGenTextures", glsym_func_void); | ||
2023 | FALLBAK(_sym_glGenTextures, glsym_func_void); | ||
2024 | |||
2025 | FINDSYM(_sym_glGetActiveAttrib, "glGetActiveAttrib", glsym_func_void); | ||
2026 | FALLBAK(_sym_glGetActiveAttrib, glsym_func_void); | ||
2027 | |||
2028 | FINDSYM(_sym_glGetActiveUniform, "glGetActiveUniform", glsym_func_void); | ||
2029 | FALLBAK(_sym_glGetActiveUniform, glsym_func_void); | ||
2030 | |||
2031 | FINDSYM(_sym_glGetAttachedShaders, "glGetAttachedShaders", glsym_func_void); | ||
2032 | FALLBAK(_sym_glGetAttachedShaders, glsym_func_void); | ||
2033 | |||
2034 | FINDSYM(_sym_glGetAttribLocation, "glGetAttribLocation", glsym_func_int); | ||
2035 | FALLBAK(_sym_glGetAttribLocation, glsym_func_int); | ||
2036 | |||
2037 | FINDSYM(_sym_glGetBooleanv, "glGetBooleanv", glsym_func_void); | ||
2038 | FALLBAK(_sym_glGetBooleanv, glsym_func_void); | ||
2039 | |||
2040 | FINDSYM(_sym_glGetBufferParameteriv, "glGetBufferParameteriv", glsym_func_void); | ||
2041 | FALLBAK(_sym_glGetBufferParameteriv, glsym_func_void); | ||
2042 | |||
2043 | FINDSYM(_sym_glGetError, "glGetError", glsym_func_uint); | ||
2044 | FALLBAK(_sym_glGetError, glsym_func_uint); | ||
2045 | |||
2046 | FINDSYM(_sym_glGetFloatv, "glGetFloatv", glsym_func_void); | ||
2047 | FALLBAK(_sym_glGetFloatv, glsym_func_void); | ||
2048 | |||
2049 | FINDSYM(_sym_glGetFramebufferAttachmentParameteriv, "glGetFramebufferAttachmentParameteriv", glsym_func_void); | ||
2050 | FALLBAK(_sym_glGetFramebufferAttachmentParameteriv, glsym_func_void); | ||
2051 | |||
2052 | FINDSYM(_sym_glGetIntegerv, "glGetIntegerv", glsym_func_void); | ||
2053 | FALLBAK(_sym_glGetIntegerv, glsym_func_void); | ||
2054 | |||
2055 | FINDSYM(_sym_glGetProgramiv, "glGetProgramiv", glsym_func_void); | ||
2056 | FALLBAK(_sym_glGetProgramiv, glsym_func_void); | ||
2057 | |||
2058 | FINDSYM(_sym_glGetProgramInfoLog, "glGetProgramInfoLog", glsym_func_void); | ||
2059 | FALLBAK(_sym_glGetProgramInfoLog, glsym_func_void); | ||
2060 | |||
2061 | FINDSYM(_sym_glGetRenderbufferParameteriv, "glGetRenderbufferParameteriv", glsym_func_void); | ||
2062 | FALLBAK(_sym_glGetRenderbufferParameteriv, glsym_func_void); | ||
2063 | |||
2064 | FINDSYM(_sym_glGetShaderiv, "glGetShaderiv", glsym_func_void); | ||
2065 | FALLBAK(_sym_glGetShaderiv, glsym_func_void); | ||
2066 | |||
2067 | FINDSYM(_sym_glGetShaderInfoLog, "glGetShaderInfoLog", glsym_func_void); | ||
2068 | FALLBAK(_sym_glGetShaderInfoLog, glsym_func_void); | ||
2069 | |||
2070 | FINDSYM(_sym_glGetShaderPrecisionFormat, "glGetShaderPrecisionFormat", glsym_func_void); | ||
2071 | FALLBAK(_sym_glGetShaderPrecisionFormat, glsym_func_void); | ||
2072 | |||
2073 | FINDSYM(_sym_glGetShaderSource, "glGetShaderSource", glsym_func_void); | ||
2074 | FALLBAK(_sym_glGetShaderSource, glsym_func_void); | ||
2075 | |||
2076 | FINDSYM(_sym_glGetString, "glGetString", glsym_func_uchar_ptr); | ||
2077 | FALLBAK(_sym_glGetString, glsym_func_const_uchar_ptr); | ||
2078 | |||
2079 | FINDSYM(_sym_glGetTexParameterfv, "glGetTexParameterfv", glsym_func_void); | ||
2080 | FALLBAK(_sym_glGetTexParameterfv, glsym_func_void); | ||
2081 | |||
2082 | FINDSYM(_sym_glGetTexParameteriv, "glGetTexParameteriv", glsym_func_void); | ||
2083 | FALLBAK(_sym_glGetTexParameteriv, glsym_func_void); | ||
2084 | |||
2085 | FINDSYM(_sym_glGetUniformfv, "glGetUniformfv", glsym_func_void); | ||
2086 | FALLBAK(_sym_glGetUniformfv, glsym_func_void); | ||
2087 | |||
2088 | FINDSYM(_sym_glGetUniformiv, "glGetUniformiv", glsym_func_void); | ||
2089 | FALLBAK(_sym_glGetUniformiv, glsym_func_void); | ||
2090 | |||
2091 | FINDSYM(_sym_glGetUniformLocation, "glGetUniformLocation", glsym_func_int); | ||
2092 | FALLBAK(_sym_glGetUniformLocation, glsym_func_int); | ||
2093 | |||
2094 | FINDSYM(_sym_glGetVertexAttribfv, "glGetVertexAttribfv", glsym_func_void); | ||
2095 | FALLBAK(_sym_glGetVertexAttribfv, glsym_func_void); | ||
2096 | |||
2097 | FINDSYM(_sym_glGetVertexAttribiv, "glGetVertexAttribiv", glsym_func_void); | ||
2098 | FALLBAK(_sym_glGetVertexAttribiv, glsym_func_void); | ||
2099 | |||
2100 | FINDSYM(_sym_glGetVertexAttribPointerv, "glGetVertexAttribPointerv", glsym_func_void); | ||
2101 | FALLBAK(_sym_glGetVertexAttribPointerv, glsym_func_void); | ||
2102 | |||
2103 | FINDSYM(_sym_glHint, "glHint", glsym_func_void); | ||
2104 | FALLBAK(_sym_glHint, glsym_func_void); | ||
2105 | |||
2106 | FINDSYM(_sym_glIsBuffer, "glIsBuffer", glsym_func_uchar); | ||
2107 | FALLBAK(_sym_glIsBuffer, glsym_func_uchar); | ||
2108 | |||
2109 | FINDSYM(_sym_glIsEnabled, "glIsEnabled", glsym_func_uchar); | ||
2110 | FALLBAK(_sym_glIsEnabled, glsym_func_uchar); | ||
2111 | |||
2112 | FINDSYM(_sym_glIsFramebuffer, "glIsFramebuffer", glsym_func_uchar); | ||
2113 | FALLBAK(_sym_glIsFramebuffer, glsym_func_uchar); | ||
2114 | |||
2115 | FINDSYM(_sym_glIsProgram, "glIsProgram", glsym_func_uchar); | ||
2116 | FALLBAK(_sym_glIsProgram, glsym_func_uchar); | ||
2117 | |||
2118 | FINDSYM(_sym_glIsRenderbuffer, "glIsRenderbuffer", glsym_func_uchar); | ||
2119 | FALLBAK(_sym_glIsRenderbuffer, glsym_func_uchar); | ||
2120 | |||
2121 | FINDSYM(_sym_glIsShader, "glIsShader", glsym_func_uchar); | ||
2122 | FALLBAK(_sym_glIsShader, glsym_func_uchar); | ||
2123 | |||
2124 | FINDSYM(_sym_glIsTexture, "glIsTexture", glsym_func_uchar); | ||
2125 | FALLBAK(_sym_glIsTexture, glsym_func_uchar); | ||
2126 | |||
2127 | FINDSYM(_sym_glLineWidth, "glLineWidth", glsym_func_void); | ||
2128 | FALLBAK(_sym_glLineWidth, glsym_func_void); | ||
2129 | |||
2130 | FINDSYM(_sym_glLinkProgram, "glLinkProgram", glsym_func_void); | ||
2131 | FALLBAK(_sym_glLinkProgram, glsym_func_void); | ||
2132 | |||
2133 | FINDSYM(_sym_glPixelStorei, "glPixelStorei", glsym_func_void); | ||
2134 | FALLBAK(_sym_glPixelStorei, glsym_func_void); | ||
2135 | |||
2136 | FINDSYM(_sym_glPolygonOffset, "glPolygonOffset", glsym_func_void); | ||
2137 | FALLBAK(_sym_glPolygonOffset, glsym_func_void); | ||
2138 | |||
2139 | FINDSYM(_sym_glReadPixels, "glReadPixels", glsym_func_void); | ||
2140 | FALLBAK(_sym_glReadPixels, glsym_func_void); | ||
2141 | |||
2142 | FINDSYM(_sym_glReleaseShaderCompiler, "glReleaseShaderCompiler", glsym_func_void); | ||
2143 | FALLBAK(_sym_glReleaseShaderCompiler, glsym_func_void); | ||
2144 | |||
2145 | FINDSYM(_sym_glRenderbufferStorage, "glRenderbufferStorage", glsym_func_void); | ||
2146 | FALLBAK(_sym_glRenderbufferStorage, glsym_func_void); | ||
2147 | |||
2148 | FINDSYM(_sym_glSampleCoverage, "glSampleCoverage", glsym_func_void); | ||
2149 | FALLBAK(_sym_glSampleCoverage, glsym_func_void); | ||
2150 | |||
2151 | FINDSYM(_sym_glScissor, "glScissor", glsym_func_void); | ||
2152 | FALLBAK(_sym_glScissor, glsym_func_void); | ||
2153 | |||
2154 | FINDSYM(_sym_glShaderBinary, "glShaderBinary", glsym_func_void); | ||
2155 | FALLBAK(_sym_glShaderBinary, glsym_func_void); | ||
2156 | |||
2157 | FINDSYM(_sym_glShaderSource, "glShaderSource", glsym_func_void); | ||
2158 | FALLBAK(_sym_glShaderSource, glsym_func_void); | ||
2159 | |||
2160 | FINDSYM(_sym_glStencilFunc, "glStencilFunc", glsym_func_void); | ||
2161 | FALLBAK(_sym_glStencilFunc, glsym_func_void); | ||
2162 | |||
2163 | FINDSYM(_sym_glStencilFuncSeparate, "glStencilFuncSeparate", glsym_func_void); | ||
2164 | FALLBAK(_sym_glStencilFuncSeparate, glsym_func_void); | ||
2165 | |||
2166 | FINDSYM(_sym_glStencilMask, "glStencilMask", glsym_func_void); | ||
2167 | FALLBAK(_sym_glStencilMask, glsym_func_void); | ||
2168 | |||
2169 | FINDSYM(_sym_glStencilMaskSeparate, "glStencilMaskSeparate", glsym_func_void); | ||
2170 | FALLBAK(_sym_glStencilMaskSeparate, glsym_func_void); | ||
2171 | |||
2172 | FINDSYM(_sym_glStencilOp, "glStencilOp", glsym_func_void); | ||
2173 | FALLBAK(_sym_glStencilOp, glsym_func_void); | ||
2174 | |||
2175 | FINDSYM(_sym_glStencilOpSeparate, "glStencilOpSeparate", glsym_func_void); | ||
2176 | FALLBAK(_sym_glStencilOpSeparate, glsym_func_void); | ||
2177 | |||
2178 | FINDSYM(_sym_glTexImage2D, "glTexImage2D", glsym_func_void); | ||
2179 | FALLBAK(_sym_glTexImage2D, glsym_func_void); | ||
2180 | |||
2181 | FINDSYM(_sym_glTexParameterf, "glTexParameterf", glsym_func_void); | ||
2182 | FALLBAK(_sym_glTexParameterf, glsym_func_void); | ||
2183 | |||
2184 | FINDSYM(_sym_glTexParameterfv, "glTexParameterfv", glsym_func_void); | ||
2185 | FALLBAK(_sym_glTexParameterfv, glsym_func_void); | ||
2186 | |||
2187 | FINDSYM(_sym_glTexParameteri, "glTexParameteri", glsym_func_void); | ||
2188 | FALLBAK(_sym_glTexParameteri, glsym_func_void); | ||
2189 | |||
2190 | FINDSYM(_sym_glTexParameteriv, "glTexParameteriv", glsym_func_void); | ||
2191 | FALLBAK(_sym_glTexParameteriv, glsym_func_void); | ||
2192 | |||
2193 | FINDSYM(_sym_glTexSubImage2D, "glTexSubImage2D", glsym_func_void); | ||
2194 | FALLBAK(_sym_glTexSubImage2D, glsym_func_void); | ||
2195 | |||
2196 | FINDSYM(_sym_glUniform1f, "glUniform1f", glsym_func_void); | ||
2197 | FALLBAK(_sym_glUniform1f, glsym_func_void); | ||
2198 | |||
2199 | FINDSYM(_sym_glUniform1fv, "glUniform1fv", glsym_func_void); | ||
2200 | FALLBAK(_sym_glUniform1fv, glsym_func_void); | ||
2201 | |||
2202 | FINDSYM(_sym_glUniform1i, "glUniform1i", glsym_func_void); | ||
2203 | FALLBAK(_sym_glUniform1i, glsym_func_void); | ||
2204 | |||
2205 | FINDSYM(_sym_glUniform1iv, "glUniform1iv", glsym_func_void); | ||
2206 | FALLBAK(_sym_glUniform1iv, glsym_func_void); | ||
2207 | |||
2208 | FINDSYM(_sym_glUniform2f, "glUniform2f", glsym_func_void); | ||
2209 | FALLBAK(_sym_glUniform2f, glsym_func_void); | ||
2210 | |||
2211 | FINDSYM(_sym_glUniform2fv, "glUniform2fv", glsym_func_void); | ||
2212 | FALLBAK(_sym_glUniform2fv, glsym_func_void); | ||
2213 | |||
2214 | FINDSYM(_sym_glUniform2i, "glUniform2i", glsym_func_void); | ||
2215 | FALLBAK(_sym_glUniform2i, glsym_func_void); | ||
2216 | |||
2217 | FINDSYM(_sym_glUniform2iv, "glUniform2iv", glsym_func_void); | ||
2218 | FALLBAK(_sym_glUniform2iv, glsym_func_void); | ||
2219 | |||
2220 | FINDSYM(_sym_glUniform3f, "glUniform3f", glsym_func_void); | ||
2221 | FALLBAK(_sym_glUniform3f, glsym_func_void); | ||
2222 | |||
2223 | FINDSYM(_sym_glUniform3fv, "glUniform3fv", glsym_func_void); | ||
2224 | FALLBAK(_sym_glUniform3fv, glsym_func_void); | ||
2225 | |||
2226 | FINDSYM(_sym_glUniform3i, "glUniform3i", glsym_func_void); | ||
2227 | FALLBAK(_sym_glUniform3i, glsym_func_void); | ||
2228 | |||
2229 | FINDSYM(_sym_glUniform3iv, "glUniform3iv", glsym_func_void); | ||
2230 | FALLBAK(_sym_glUniform3iv, glsym_func_void); | ||
2231 | |||
2232 | FINDSYM(_sym_glUniform4f, "glUniform4f", glsym_func_void); | ||
2233 | FALLBAK(_sym_glUniform4f, glsym_func_void); | ||
2234 | |||
2235 | FINDSYM(_sym_glUniform4fv, "glUniform4fv", glsym_func_void); | ||
2236 | FALLBAK(_sym_glUniform4fv, glsym_func_void); | ||
2237 | |||
2238 | FINDSYM(_sym_glUniform4i, "glUniform4i", glsym_func_void); | ||
2239 | FALLBAK(_sym_glUniform4i, glsym_func_void); | ||
2240 | |||
2241 | FINDSYM(_sym_glUniform4iv, "glUniform4iv", glsym_func_void); | ||
2242 | FALLBAK(_sym_glUniform4iv, glsym_func_void); | ||
2243 | |||
2244 | FINDSYM(_sym_glUniformMatrix2fv, "glUniformMatrix2fv", glsym_func_void); | ||
2245 | FALLBAK(_sym_glUniformMatrix2fv, glsym_func_void); | ||
2246 | |||
2247 | FINDSYM(_sym_glUniformMatrix3fv, "glUniformMatrix3fv", glsym_func_void); | ||
2248 | FALLBAK(_sym_glUniformMatrix3fv, glsym_func_void); | ||
2249 | |||
2250 | FINDSYM(_sym_glUniformMatrix4fv, "glUniformMatrix4fv", glsym_func_void); | ||
2251 | FALLBAK(_sym_glUniformMatrix4fv, glsym_func_void); | ||
2252 | |||
2253 | FINDSYM(_sym_glUseProgram, "glUseProgram", glsym_func_void); | ||
2254 | FALLBAK(_sym_glUseProgram, glsym_func_void); | ||
2255 | |||
2256 | FINDSYM(_sym_glValidateProgram, "glValidateProgram", glsym_func_void); | ||
2257 | FALLBAK(_sym_glValidateProgram, glsym_func_void); | ||
2258 | |||
2259 | FINDSYM(_sym_glVertexAttrib1f, "glVertexAttrib1f", glsym_func_void); | ||
2260 | FALLBAK(_sym_glVertexAttrib1f, glsym_func_void); | ||
2261 | |||
2262 | FINDSYM(_sym_glVertexAttrib1fv, "glVertexAttrib1fv", glsym_func_void); | ||
2263 | FALLBAK(_sym_glVertexAttrib1fv, glsym_func_void); | ||
2264 | |||
2265 | FINDSYM(_sym_glVertexAttrib2f, "glVertexAttrib2f", glsym_func_void); | ||
2266 | FALLBAK(_sym_glVertexAttrib2f, glsym_func_void); | ||
2267 | |||
2268 | FINDSYM(_sym_glVertexAttrib2fv, "glVertexAttrib2fv", glsym_func_void); | ||
2269 | FALLBAK(_sym_glVertexAttrib2fv, glsym_func_void); | ||
2270 | |||
2271 | FINDSYM(_sym_glVertexAttrib3f, "glVertexAttrib3f", glsym_func_void); | ||
2272 | FALLBAK(_sym_glVertexAttrib3f, glsym_func_void); | ||
2273 | |||
2274 | FINDSYM(_sym_glVertexAttrib3fv, "glVertexAttrib3fv", glsym_func_void); | ||
2275 | FALLBAK(_sym_glVertexAttrib3fv, glsym_func_void); | ||
2276 | |||
2277 | FINDSYM(_sym_glVertexAttrib4f, "glVertexAttrib4f", glsym_func_void); | ||
2278 | FALLBAK(_sym_glVertexAttrib4f, glsym_func_void); | ||
2279 | |||
2280 | FINDSYM(_sym_glVertexAttrib4fv, "glVertexAttrib4fv", glsym_func_void); | ||
2281 | FALLBAK(_sym_glVertexAttrib4fv, glsym_func_void); | ||
2282 | |||
2283 | FINDSYM(_sym_glVertexAttribPointer, "glVertexAttribPointer", glsym_func_void); | ||
2284 | FALLBAK(_sym_glVertexAttribPointer, glsym_func_void); | ||
2285 | |||
2286 | FINDSYM(_sym_glViewport, "glViewport", glsym_func_void); | ||
2287 | FALLBAK(_sym_glViewport, glsym_func_void); | ||
2288 | |||
2289 | #undef FINDSYM | ||
2290 | #undef FALLBAK | ||
2291 | |||
2292 | // Checking to see if this function exists is a poor but reasonable way to | ||
2293 | // check if it's gles but it works for now | ||
2294 | if (_sym_glGetShaderPrecisionFormat != (typeof(_sym_glGetShaderPrecisionFormat))sym_missing ) | ||
2295 | { | ||
2296 | DBG("GL Library is GLES."); | ||
2297 | gl_lib_is_gles = 1; | ||
2298 | } | ||
2299 | |||
2300 | return 1; | ||
2301 | } | ||
2302 | |||
2303 | //--------------------------------------------------------------// | ||
2304 | // Wrapped GL APIs to handle desktop compatibility | ||
2305 | |||
2306 | // Stripping precision code from GLES shader for desktop compatibility | ||
2307 | // Code adopted from Meego GL code. Temporary Fix. | ||
2308 | static const char * | ||
2309 | opengl_strtok(const char *s, int *n, char **saveptr, char *prevbuf) | ||
2310 | { | ||
2311 | char *start; | ||
2312 | char *ret; | ||
2313 | char *p; | ||
2314 | int retlen; | ||
2315 | static const char *delim = " \t\n\r/"; | ||
2316 | |||
2317 | if (prevbuf) free(prevbuf); | ||
2318 | |||
2319 | if (s) | ||
2320 | *saveptr = (char *)s; | ||
2321 | else | ||
2322 | { | ||
2323 | if (!(*saveptr) || !(*n)) | ||
2324 | return NULL; | ||
2325 | s = *saveptr; | ||
2326 | } | ||
2327 | |||
2328 | for (; *n && strchr(delim, *s); s++, (*n)--) | ||
2329 | { | ||
2330 | if (*s == '/' && *n > 1) | ||
2331 | { | ||
2332 | if (s[1] == '/') | ||
2333 | { | ||
2334 | do | ||
2335 | { | ||
2336 | s++, (*n)--; | ||
2337 | } | ||
2338 | while (*n > 1 && s[1] != '\n' && s[1] != '\r'); | ||
2339 | } | ||
2340 | else if (s[1] == '*') | ||
2341 | { | ||
2342 | do | ||
2343 | { | ||
2344 | s++, (*n)--; | ||
2345 | } | ||
2346 | while (*n > 2 && (s[1] != '*' || s[2] != '/')); | ||
2347 | s++, (*n)--; | ||
2348 | } | ||
2349 | } | ||
2350 | } | ||
2351 | |||
2352 | start = (char *)s; | ||
2353 | for (; *n && *s && !strchr(delim, *s); s++, (*n)--); | ||
2354 | if (*n > 0) s++, (*n)--; | ||
2355 | |||
2356 | *saveptr = (char *)s; | ||
2357 | |||
2358 | retlen = s - start; | ||
2359 | ret = malloc(retlen + 1); | ||
2360 | p = ret; | ||
2361 | |||
2362 | while (retlen > 0) | ||
2363 | { | ||
2364 | if (*start == '/' && retlen > 1) | ||
2365 | { | ||
2366 | if (start[1] == '/') | ||
2367 | { | ||
2368 | do | ||
2369 | { | ||
2370 | start++, retlen--; | ||
2371 | } | ||
2372 | while (retlen > 1 && start[1] != '\n' && start[1] != '\r'); | ||
2373 | start++, retlen--; | ||
2374 | continue; | ||
2375 | } | ||
2376 | else if (start[1] == '*') | ||
2377 | { | ||
2378 | do | ||
2379 | { | ||
2380 | start++, retlen--; | ||
2381 | } | ||
2382 | while (retlen > 2 && (start[1] != '*' || start[2] != '/')); | ||
2383 | start += 3, retlen -= 3; | ||
2384 | continue; | ||
2385 | } | ||
2386 | } | ||
2387 | *(p++) = *(start++), retlen--; | ||
2388 | } | ||
2389 | |||
2390 | *p = 0; | ||
2391 | return ret; | ||
2392 | } | ||
2393 | |||
2394 | static char * | ||
2395 | patch_gles_shader(const char *source, int length, int *patched_len) | ||
2396 | { | ||
2397 | char *saveptr = NULL; | ||
2398 | char *sp; | ||
2399 | char *p = NULL; | ||
2400 | |||
2401 | if (!length) length = strlen(source); | ||
2402 | |||
2403 | *patched_len = 0; | ||
2404 | int patched_size = length; | ||
2405 | char *patched = malloc(patched_size + 1); | ||
2406 | |||
2407 | if (!patched) return NULL; | ||
2408 | |||
2409 | p = (char *)opengl_strtok(source, &length, &saveptr, NULL); | ||
2410 | for (; p; p = (char *)opengl_strtok(0, &length, &saveptr, p)) | ||
2411 | { | ||
2412 | if (!strncmp(p, "lowp", 4) || !strncmp(p, "mediump", 7) || !strncmp(p, "highp", 5)) | ||
2413 | { | ||
2414 | continue; | ||
2415 | } | ||
2416 | else if (!strncmp(p, "precision", 9)) | ||
2417 | { | ||
2418 | while ((p = (char *)opengl_strtok(0, &length, &saveptr, p)) && !strchr(p, ';')); | ||
2419 | } | ||
2420 | else | ||
2421 | { | ||
2422 | if (!strncmp(p, "gl_MaxVertexUniformVectors", 26)) | ||
2423 | { | ||
2424 | p = "(gl_MaxVertexUniformComponents / 4)"; | ||
2425 | } | ||
2426 | else if (!strncmp(p, "gl_MaxFragmentUniformVectors", 28)) | ||
2427 | { | ||
2428 | p = "(gl_MaxFragmentUniformComponents / 4)"; | ||
2429 | } | ||
2430 | else if (!strncmp(p, "gl_MaxVaryingVectors", 20)) | ||
2431 | { | ||
2432 | p = "(gl_MaxVaryingFloats / 4)"; | ||
2433 | } | ||
2434 | |||
2435 | int new_len = strlen(p); | ||
2436 | if (*patched_len + new_len > patched_size) | ||
2437 | { | ||
2438 | patched_size *= 2; | ||
2439 | patched = realloc(patched, patched_size + 1); | ||
2440 | |||
2441 | if (!patched) | ||
2442 | return NULL; | ||
2443 | } | ||
2444 | |||
2445 | memcpy(patched + *patched_len, p, new_len); | ||
2446 | *patched_len += new_len; | ||
2447 | } | ||
2448 | } | ||
2449 | |||
2450 | patched[*patched_len] = 0; | ||
2451 | /* check that we don't leave dummy preprocessor lines */ | ||
2452 | for (sp = patched; *sp;) | ||
2453 | { | ||
2454 | for (; *sp == ' ' || *sp == '\t'; sp++); | ||
2455 | if (!strncmp(sp, "#define", 7)) | ||
2456 | { | ||
2457 | for (p = sp + 7; *p == ' ' || *p == '\t'; p++); | ||
2458 | if (*p == '\n' || *p == '\r' || *p == '/') | ||
2459 | { | ||
2460 | memset(sp, 0x20, 7); | ||
2461 | } | ||
2462 | } | ||
2463 | for (; *sp && *sp != '\n' && *sp != '\r'; sp++); | ||
2464 | for (; *sp == '\n' || *sp == '\r'; sp++); | ||
2465 | } | ||
2466 | return patched; | ||
2467 | } | ||
2468 | |||
2469 | static void | ||
2470 | evgl_glShaderSource(GLuint shader, GLsizei count, const char** string, const GLint* length) | ||
2471 | { | ||
2472 | int i = 0, len = 0; | ||
2473 | |||
2474 | char **s = malloc(count * sizeof(char*)); | ||
2475 | GLint *l = malloc(count * sizeof(GLint)); | ||
2476 | |||
2477 | memset(s, 0, count * sizeof(char*)); | ||
2478 | memset(l, 0, count * sizeof(GLint)); | ||
2479 | |||
2480 | for (i = 0; i < count; ++i) | ||
2481 | { | ||
2482 | if (length) | ||
2483 | { | ||
2484 | len = length[i]; | ||
2485 | if (len < 0) | ||
2486 | len = string[i] ? strlen(string[i]) : 0; | ||
2487 | } | ||
2488 | else | ||
2489 | len = string[i] ? strlen(string[i]) : 0; | ||
2490 | |||
2491 | if (string[i]) | ||
2492 | { | ||
2493 | s[i] = patch_gles_shader(string[i], len, &l[i]); | ||
2494 | if (!s[i]) | ||
2495 | { | ||
2496 | while(i) | ||
2497 | free(s[--i]); | ||
2498 | free(l); | ||
2499 | free(s); | ||
2500 | |||
2501 | DBG("Patching Shader Failed."); | ||
2502 | return; | ||
2503 | } | ||
2504 | } | ||
2505 | else | ||
2506 | { | ||
2507 | s[i] = NULL; | ||
2508 | l[i] = 0; | ||
2509 | } | ||
2510 | } | ||
2511 | |||
2512 | _sym_glShaderSource(shader, count, (const char **)s, l); | ||
2513 | |||
2514 | while(i) | ||
2515 | free(s[--i]); | ||
2516 | free(l); | ||
2517 | free(s); | ||
2518 | } | ||
2519 | |||
2520 | |||
2521 | static void | ||
2522 | evgl_glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision) | ||
2523 | { | ||
2524 | if (range) | ||
2525 | { | ||
2526 | range[0] = -126; // floor(log2(FLT_MIN)) | ||
2527 | range[1] = 127; // floor(log2(FLT_MAX)) | ||
2528 | } | ||
2529 | if (precision) | ||
2530 | { | ||
2531 | precision[0] = 24; // floor(-log2((1.0/16777218.0))); | ||
2532 | } | ||
2533 | return; | ||
2534 | shadertype = precisiontype = 0; | ||
2535 | } | ||
2536 | |||
2537 | static void | ||
2538 | evgl_glReleaseShaderCompiler(void) | ||
2539 | { | ||
2540 | DBG("Not supported in Desktop GL"); | ||
2541 | return; | ||
2542 | } | ||
2543 | |||
2544 | static void | ||
2545 | evgl_glShaderBinary(GLsizei n __UNUSED__, const GLuint* shaders __UNUSED__, GLenum binaryformat __UNUSED__, const void* binary __UNUSED__, GLsizei length __UNUSED__) | ||
2546 | { | ||
2547 | // FIXME: need to dlsym/getprocaddress for this | ||
2548 | DBG("Not supported in Desktop GL"); | ||
2549 | return; | ||
2550 | //n = binaryformat = length = 0; | ||
2551 | //shaders = binary = 0; | ||
2552 | } | ||
2553 | #endif | ||
2554 | //--------------------------------------------------------------// | ||
2555 | |||
2556 | |||
2557 | #ifdef EVAS_GL | ||
2558 | static void | ||
2559 | override_gl_apis(Evas_GL_API *api) | ||
2560 | { | ||
2561 | |||
2562 | api->version = EVAS_GL_API_VERSION; | ||
2563 | |||
2564 | #define ORD(f) EVAS_API_OVERRIDE(f, api, _sym_) | ||
2565 | // GLES 2.0 | ||
2566 | ORD(glActiveTexture); | ||
2567 | ORD(glAttachShader); | ||
2568 | ORD(glBindAttribLocation); | ||
2569 | ORD(glBindBuffer); | ||
2570 | ORD(glBindTexture); | ||
2571 | ORD(glBlendColor); | ||
2572 | ORD(glBlendEquation); | ||
2573 | ORD(glBlendEquationSeparate); | ||
2574 | ORD(glBlendFunc); | ||
2575 | ORD(glBlendFuncSeparate); | ||
2576 | ORD(glBufferData); | ||
2577 | ORD(glBufferSubData); | ||
2578 | ORD(glCheckFramebufferStatus); | ||
2579 | ORD(glClear); | ||
2580 | ORD(glClearColor); | ||
2581 | ORD(glClearDepthf); | ||
2582 | ORD(glClearStencil); | ||
2583 | ORD(glColorMask); | ||
2584 | ORD(glCompileShader); | ||
2585 | ORD(glCompressedTexImage2D); | ||
2586 | ORD(glCompressedTexSubImage2D); | ||
2587 | ORD(glCopyTexImage2D); | ||
2588 | ORD(glCopyTexSubImage2D); | ||
2589 | ORD(glCreateProgram); | ||
2590 | ORD(glCreateShader); | ||
2591 | ORD(glCullFace); | ||
2592 | ORD(glDeleteBuffers); | ||
2593 | ORD(glDeleteFramebuffers); | ||
2594 | ORD(glDeleteProgram); | ||
2595 | ORD(glDeleteRenderbuffers); | ||
2596 | ORD(glDeleteShader); | ||
2597 | ORD(glDeleteTextures); | ||
2598 | ORD(glDepthFunc); | ||
2599 | ORD(glDepthMask); | ||
2600 | ORD(glDepthRangef); | ||
2601 | ORD(glDetachShader); | ||
2602 | ORD(glDisable); | ||
2603 | ORD(glDisableVertexAttribArray); | ||
2604 | ORD(glDrawArrays); | ||
2605 | ORD(glDrawElements); | ||
2606 | ORD(glEnable); | ||
2607 | ORD(glEnableVertexAttribArray); | ||
2608 | ORD(glFinish); | ||
2609 | ORD(glFlush); | ||
2610 | ORD(glFramebufferRenderbuffer); | ||
2611 | ORD(glFramebufferTexture2D); | ||
2612 | ORD(glFrontFace); | ||
2613 | ORD(glGenBuffers); | ||
2614 | ORD(glGenerateMipmap); | ||
2615 | ORD(glGenFramebuffers); | ||
2616 | ORD(glGenRenderbuffers); | ||
2617 | ORD(glGenTextures); | ||
2618 | ORD(glGetActiveAttrib); | ||
2619 | ORD(glGetActiveUniform); | ||
2620 | ORD(glGetAttachedShaders); | ||
2621 | ORD(glGetAttribLocation); | ||
2622 | ORD(glGetBooleanv); | ||
2623 | ORD(glGetBufferParameteriv); | ||
2624 | ORD(glGetError); | ||
2625 | ORD(glGetFloatv); | ||
2626 | ORD(glGetFramebufferAttachmentParameteriv); | ||
2627 | ORD(glGetIntegerv); | ||
2628 | ORD(glGetProgramiv); | ||
2629 | ORD(glGetProgramInfoLog); | ||
2630 | ORD(glGetRenderbufferParameteriv); | ||
2631 | ORD(glGetShaderiv); | ||
2632 | ORD(glGetShaderInfoLog); | ||
2633 | ORD(glGetShaderPrecisionFormat); | ||
2634 | ORD(glGetShaderSource); | ||
2635 | ORD(glGetString); // FIXME | ||
2636 | ORD(glGetTexParameterfv); | ||
2637 | ORD(glGetTexParameteriv); | ||
2638 | ORD(glGetUniformfv); | ||
2639 | ORD(glGetUniformiv); | ||
2640 | ORD(glGetUniformLocation); | ||
2641 | ORD(glGetVertexAttribfv); | ||
2642 | ORD(glGetVertexAttribiv); | ||
2643 | ORD(glGetVertexAttribPointerv); | ||
2644 | ORD(glHint); | ||
2645 | ORD(glIsBuffer); | ||
2646 | ORD(glIsEnabled); | ||
2647 | ORD(glIsFramebuffer); | ||
2648 | ORD(glIsProgram); | ||
2649 | ORD(glIsRenderbuffer); | ||
2650 | ORD(glIsShader); | ||
2651 | ORD(glIsTexture); | ||
2652 | ORD(glLineWidth); | ||
2653 | ORD(glLinkProgram); | ||
2654 | ORD(glPixelStorei); | ||
2655 | ORD(glPolygonOffset); | ||
2656 | ORD(glReadPixels); | ||
2657 | ORD(glReleaseShaderCompiler); | ||
2658 | ORD(glRenderbufferStorage); | ||
2659 | ORD(glSampleCoverage); | ||
2660 | ORD(glScissor); | ||
2661 | ORD(glShaderBinary); | ||
2662 | ORD(glShaderSource); | ||
2663 | ORD(glStencilFunc); | ||
2664 | ORD(glStencilFuncSeparate); | ||
2665 | ORD(glStencilMask); | ||
2666 | ORD(glStencilMaskSeparate); | ||
2667 | ORD(glStencilOp); | ||
2668 | ORD(glStencilOpSeparate); | ||
2669 | ORD(glTexImage2D); | ||
2670 | ORD(glTexParameterf); | ||
2671 | ORD(glTexParameterfv); | ||
2672 | ORD(glTexParameteri); | ||
2673 | ORD(glTexParameteriv); | ||
2674 | ORD(glTexSubImage2D); | ||
2675 | ORD(glUniform1f); | ||
2676 | ORD(glUniform1fv); | ||
2677 | ORD(glUniform1i); | ||
2678 | ORD(glUniform1iv); | ||
2679 | ORD(glUniform2f); | ||
2680 | ORD(glUniform2fv); | ||
2681 | ORD(glUniform2i); | ||
2682 | ORD(glUniform2iv); | ||
2683 | ORD(glUniform3f); | ||
2684 | ORD(glUniform3fv); | ||
2685 | ORD(glUniform3i); | ||
2686 | ORD(glUniform3iv); | ||
2687 | ORD(glUniform4f); | ||
2688 | ORD(glUniform4fv); | ||
2689 | ORD(glUniform4i); | ||
2690 | ORD(glUniform4iv); | ||
2691 | ORD(glUniformMatrix2fv); | ||
2692 | ORD(glUniformMatrix3fv); | ||
2693 | ORD(glUniformMatrix4fv); | ||
2694 | ORD(glUseProgram); | ||
2695 | ORD(glValidateProgram); | ||
2696 | ORD(glVertexAttrib1f); | ||
2697 | ORD(glVertexAttrib1fv); | ||
2698 | ORD(glVertexAttrib2f); | ||
2699 | ORD(glVertexAttrib2fv); | ||
2700 | ORD(glVertexAttrib3f); | ||
2701 | ORD(glVertexAttrib3fv); | ||
2702 | ORD(glVertexAttrib4f); | ||
2703 | ORD(glVertexAttrib4fv); | ||
2704 | ORD(glVertexAttribPointer); | ||
2705 | ORD(glViewport); | ||
2706 | #undef ORD | ||
2707 | |||
2708 | #define ORD(f) EVAS_API_OVERRIDE(f, &gl_funcs, evgl_) | ||
2709 | if (!gl_lib_is_gles) | ||
2710 | { | ||
2711 | // Override functions wrapped by Evas_GL | ||
2712 | // GLES2.0 API compat on top of desktop gl | ||
2713 | ORD(glGetShaderPrecisionFormat); | ||
2714 | ORD(glReleaseShaderCompiler); | ||
2715 | ORD(glShaderBinary); | ||
2716 | } | ||
2717 | |||
2718 | ORD(glShaderSource); // Do precision stripping in both cases | ||
2719 | #undef ORD | ||
2720 | } | ||
2721 | #endif | ||
2722 | |||
2723 | //-------------------------------------------// | ||
2724 | static int | ||
2725 | gl_lib_init(void) | ||
2726 | { | ||
2727 | #ifdef EVAS_GL | ||
2728 | // dlopen OSMesa | ||
2729 | gl_lib_handle = dlopen("libOSMesa.so.1", RTLD_NOW); | ||
2730 | if (!gl_lib_handle) gl_lib_handle = dlopen("libOSMesa.so", RTLD_NOW); | ||
2731 | if (!gl_lib_handle) | ||
2732 | { | ||
2733 | DBG("Unable to open libOSMesa: %s", dlerror()); | ||
2734 | return 0; | ||
2735 | } | ||
2736 | |||
2737 | //------------------------------------------------// | ||
2738 | if (!glue_sym_init()) return 0; | ||
2739 | if (!gl_sym_init()) return 0; | ||
2740 | |||
2741 | override_gl_apis(&gl_funcs); | ||
2742 | |||
2743 | return 1; | ||
2744 | #else | ||
2745 | return 0; | ||
2746 | #endif | ||
2747 | } | ||
2748 | |||
2749 | |||
2750 | static void | ||
2751 | init_gl(void) | ||
2752 | { | ||
2753 | DBG("Initializing Software OpenGL APIs...\n"); | ||
2754 | |||
2755 | if (!gl_lib_init()) | ||
2756 | DBG("Unable to support EvasGL in this engine module. Install OSMesa to get it running"); | ||
2757 | else | ||
2758 | { | ||
2759 | #define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_) | ||
2760 | ORD(gl_surface_create); | ||
2761 | ORD(gl_surface_destroy); | ||
2762 | ORD(gl_context_create); | ||
2763 | ORD(gl_context_destroy); | ||
2764 | ORD(gl_make_current); | ||
2765 | ORD(gl_string_query); // FIXME: Need to implement | ||
2766 | ORD(gl_proc_address_get); // FIXME: Need to implement | ||
2767 | ORD(gl_native_surface_get); | ||
2768 | ORD(gl_api_get); | ||
2769 | #undef ORD | ||
2770 | } | ||
2771 | } | ||
2772 | |||
2773 | |||
1185 | /* | 2774 | /* |
1186 | ***** | 2775 | ***** |
1187 | ** | 2776 | ** |
@@ -1201,6 +2790,9 @@ module_open(Evas_Module *em) | |||
1201 | EINA_LOG_ERR("Can not create a module log domain."); | 2790 | EINA_LOG_ERR("Can not create a module log domain."); |
1202 | return 0; | 2791 | return 0; |
1203 | } | 2792 | } |
2793 | |||
2794 | init_gl(); | ||
2795 | |||
1204 | em->functions = (void *)(&func); | 2796 | em->functions = (void *)(&func); |
1205 | cpunum = eina_cpu_count(); | 2797 | cpunum = eina_cpu_count(); |
1206 | return 1; | 2798 | return 1; |
diff --git a/libraries/evas/src/modules/engines/software_sdl/Makefile.in b/libraries/evas/src/modules/engines/software_sdl/Makefile.in index d1052c1..f63f3eb 100644 --- a/libraries/evas/src/modules/engines/software_sdl/Makefile.in +++ b/libraries/evas/src/modules/engines/software_sdl/Makefile.in | |||
@@ -241,8 +241,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
241 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 241 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
242 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 242 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
243 | PKG_CONFIG = @PKG_CONFIG@ | 243 | PKG_CONFIG = @PKG_CONFIG@ |
244 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
245 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
246 | PNG_CFLAGS = @PNG_CFLAGS@ | 244 | PNG_CFLAGS = @PNG_CFLAGS@ |
247 | PNG_LIBS = @PNG_LIBS@ | 245 | PNG_LIBS = @PNG_LIBS@ |
248 | RANLIB = @RANLIB@ | 246 | RANLIB = @RANLIB@ |
@@ -259,6 +257,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
259 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 257 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
260 | VERSION = @VERSION@ | 258 | VERSION = @VERSION@ |
261 | VMAJ = @VMAJ@ | 259 | VMAJ = @VMAJ@ |
260 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
261 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
262 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 262 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
263 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 263 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
264 | XCB_CFLAGS = @XCB_CFLAGS@ | 264 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -340,6 +340,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
340 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 340 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
341 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 341 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
342 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 342 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
343 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
344 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
345 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
346 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
343 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 347 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
344 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 348 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
345 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 349 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/engines/software_x11/Makefile.in b/libraries/evas/src/modules/engines/software_x11/Makefile.in index f5c73af..5fd2971 100644 --- a/libraries/evas/src/modules/engines/software_x11/Makefile.in +++ b/libraries/evas/src/modules/engines/software_x11/Makefile.in | |||
@@ -282,8 +282,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
282 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 282 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
283 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 283 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
284 | PKG_CONFIG = @PKG_CONFIG@ | 284 | PKG_CONFIG = @PKG_CONFIG@ |
285 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
286 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
287 | PNG_CFLAGS = @PNG_CFLAGS@ | 285 | PNG_CFLAGS = @PNG_CFLAGS@ |
288 | PNG_LIBS = @PNG_LIBS@ | 286 | PNG_LIBS = @PNG_LIBS@ |
289 | RANLIB = @RANLIB@ | 287 | RANLIB = @RANLIB@ |
@@ -300,6 +298,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
300 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 298 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
301 | VERSION = @VERSION@ | 299 | VERSION = @VERSION@ |
302 | VMAJ = @VMAJ@ | 300 | VMAJ = @VMAJ@ |
301 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
302 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
303 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 303 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
304 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 304 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
305 | XCB_CFLAGS = @XCB_CFLAGS@ | 305 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -381,6 +381,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
381 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 381 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
382 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 382 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
383 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 383 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
384 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
385 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
386 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
387 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
384 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 388 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
385 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 389 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
386 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 390 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/engines/software_x11/evas_xlib_outbuf.c b/libraries/evas/src/modules/engines/software_x11/evas_xlib_outbuf.c index 1b1d3d9..24c45df 100644 --- a/libraries/evas/src/modules/engines/software_x11/evas_xlib_outbuf.c +++ b/libraries/evas/src/modules/engines/software_x11/evas_xlib_outbuf.c | |||
@@ -579,6 +579,8 @@ evas_software_xlib_outbuf_new_region_for_update(Outbuf *buf, int x, int y, int w | |||
579 | free(obr); | 579 | free(obr); |
580 | return NULL; | 580 | return NULL; |
581 | } | 581 | } |
582 | im->cache_entry.w = w; | ||
583 | im->cache_entry.h = h; | ||
582 | im->cache_entry.flags.alpha |= alpha ? 1 : 0; | 584 | im->cache_entry.flags.alpha |= alpha ? 1 : 0; |
583 | evas_cache_image_surface_alloc(&im->cache_entry, w, h); | 585 | evas_cache_image_surface_alloc(&im->cache_entry, w, h); |
584 | im->extended_info = obr; | 586 | im->extended_info = obr; |
diff --git a/libraries/evas/src/modules/engines/wayland_egl/Evas_Engine_Wayland_Egl.h b/libraries/evas/src/modules/engines/wayland_egl/Evas_Engine_Wayland_Egl.h new file mode 100644 index 0000000..92ffe25 --- /dev/null +++ b/libraries/evas/src/modules/engines/wayland_egl/Evas_Engine_Wayland_Egl.h | |||
@@ -0,0 +1,42 @@ | |||
1 | #ifndef _EVAS_ENGINE_WAYLAND_EGL_H | ||
2 | #define _EVAS_ENGINE_WAYLAND_EGL_H | ||
3 | |||
4 | #include <wayland-client.h> | ||
5 | |||
6 | typedef struct _Evas_Engine_Info_Wayland_Egl Evas_Engine_Info_Wayland_Egl; | ||
7 | |||
8 | struct _Evas_Engine_Info_Wayland_Egl | ||
9 | { | ||
10 | /* PRIVATE - don't mess with this baby or evas will poke its tongue out */ | ||
11 | /* at you and make nasty noises */ | ||
12 | Evas_Engine_Info magic; | ||
13 | |||
14 | /* engine specific data & parameters it needs to set up */ | ||
15 | struct { | ||
16 | struct wl_display *display; | ||
17 | struct wl_surface *surface; | ||
18 | int depth; | ||
19 | int screen; | ||
20 | int rotation; | ||
21 | unsigned int destination_alpha : 1; | ||
22 | } info; | ||
23 | /* engine specific function calls to query stuff about the destination */ | ||
24 | /* engine (what visual & colormap & depth to use, performance info etc. */ | ||
25 | struct { | ||
26 | int (*best_depth_get) (Evas_Engine_Info_Wayland_Egl *einfo); | ||
27 | } func; | ||
28 | |||
29 | struct { | ||
30 | void (*pre_swap) (void *data, Evas *e); | ||
31 | void (*post_swap) (void *data, Evas *e); | ||
32 | |||
33 | void *data; // data for callback calls | ||
34 | } callback; | ||
35 | |||
36 | /* non-blocking or blocking mode */ | ||
37 | Evas_Engine_Render_Mode render_mode; | ||
38 | |||
39 | unsigned char vsync : 1; // does nothing right now | ||
40 | unsigned char indirect : 1; // use indirect rendering | ||
41 | }; | ||
42 | #endif | ||
diff --git a/libraries/evas/src/modules/engines/wayland_egl/Makefile.am b/libraries/evas/src/modules/engines/wayland_egl/Makefile.am new file mode 100644 index 0000000..100614f --- /dev/null +++ b/libraries/evas/src/modules/engines/wayland_egl/Makefile.am | |||
@@ -0,0 +1,47 @@ | |||
1 | |||
2 | MAINTAINERCLEANFILES = Makefile.in | ||
3 | |||
4 | AM_CPPFLAGS = \ | ||
5 | -I. \ | ||
6 | -I$(top_srcdir)/src/lib \ | ||
7 | -I$(top_srcdir)/src/lib/include \ | ||
8 | -I$(top_srcdir)/src/modules/engines/gl_common \ | ||
9 | @FREETYPE_CFLAGS@ \ | ||
10 | @PIXMAN_CFLAGS@ \ | ||
11 | @EINA_CFLAGS@ \ | ||
12 | @GL_EET_CFLAGS@ \ | ||
13 | @evas_engine_wayland_egl_cflags@ | ||
14 | |||
15 | if BUILD_ENGINE_WAYLAND_EGL | ||
16 | |||
17 | WAYLAND_EGL_SOURCES = \ | ||
18 | evas_engine.c \ | ||
19 | evas_wl_main.c | ||
20 | |||
21 | WAYLAND_EGL_LIBADD = @FREETYPE_LIBS@ @GL_EET_LIBS@ @EINA_LIBS@ @evas_engine_wayland_egl_libs@ $(top_builddir)/src/modules/engines/gl_common/libevas_engine_gl_common.la | ||
22 | |||
23 | includes_HEADERS = Evas_Engine_Wayland_Egl.h | ||
24 | includesdir = $(includedir)/evas-@VMAJ@ | ||
25 | |||
26 | if !EVAS_STATIC_BUILD_WAYLAND_EGL | ||
27 | |||
28 | pkgdir = $(libdir)/evas/modules/engines/wayland_egl/$(MODULE_ARCH) | ||
29 | pkg_LTLIBRARIES = module.la | ||
30 | |||
31 | module_la_SOURCES = $(WAYLAND_EGL_SOURCES) | ||
32 | module_la_LIBADD = $(WAYLAND_EGL_LIBADD) $(top_builddir)/src/lib/libevas.la | ||
33 | module_la_LDFLAGS = -no-undefined -module -avoid-version | ||
34 | module_la_LIBTOOLFLAGS = --tag=disable-static | ||
35 | |||
36 | |||
37 | else | ||
38 | |||
39 | noinst_LTLIBRARIES = libevas_engine_wayland_egl.la | ||
40 | |||
41 | libevas_engine_wayland_egl_la_SOURCES = $(WAYLAND_EGL_SOURCES) | ||
42 | libevas_engine_wayland_egl_la_LIBADD = $(WAYLAND_EGL_LIBADD) | ||
43 | |||
44 | endif | ||
45 | endif | ||
46 | |||
47 | EXTRA_DIST = evas_engine.h | ||
diff --git a/libraries/evas/src/modules/engines/wayland_egl/Makefile.in b/libraries/evas/src/modules/engines/wayland_egl/Makefile.in new file mode 100644 index 0000000..0df0c63 --- /dev/null +++ b/libraries/evas/src/modules/engines/wayland_egl/Makefile.in | |||
@@ -0,0 +1,816 @@ | |||
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 | |||
18 | |||
19 | VPATH = @srcdir@ | ||
20 | pkgdatadir = $(datadir)/@PACKAGE@ | ||
21 | pkgincludedir = $(includedir)/@PACKAGE@ | ||
22 | pkglibdir = $(libdir)/@PACKAGE@ | ||
23 | pkglibexecdir = $(libexecdir)/@PACKAGE@ | ||
24 | am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd | ||
25 | install_sh_DATA = $(install_sh) -c -m 644 | ||
26 | install_sh_PROGRAM = $(install_sh) -c | ||
27 | install_sh_SCRIPT = $(install_sh) -c | ||
28 | INSTALL_HEADER = $(INSTALL_DATA) | ||
29 | transform = $(program_transform_name) | ||
30 | NORMAL_INSTALL = : | ||
31 | PRE_INSTALL = : | ||
32 | POST_INSTALL = : | ||
33 | NORMAL_UNINSTALL = : | ||
34 | PRE_UNINSTALL = : | ||
35 | POST_UNINSTALL = : | ||
36 | build_triplet = @build@ | ||
37 | host_triplet = @host@ | ||
38 | subdir = src/modules/engines/wayland_egl | ||
39 | DIST_COMMON = $(am__includes_HEADERS_DIST) $(srcdir)/Makefile.am \ | ||
40 | $(srcdir)/Makefile.in | ||
41 | ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 | ||
42 | am__aclocal_m4_deps = $(top_srcdir)/m4/efl_attribute.m4 \ | ||
43 | $(top_srcdir)/m4/efl_coverage.m4 \ | ||
44 | $(top_srcdir)/m4/efl_doxygen.m4 \ | ||
45 | $(top_srcdir)/m4/efl_fnmatch.m4 \ | ||
46 | $(top_srcdir)/m4/efl_path_max.m4 $(top_srcdir)/m4/efl_tests.m4 \ | ||
47 | $(top_srcdir)/m4/evas_check_engine.m4 \ | ||
48 | $(top_srcdir)/m4/evas_check_loader.m4 \ | ||
49 | $(top_srcdir)/m4/evas_converter.m4 \ | ||
50 | $(top_srcdir)/m4/evas_dither.m4 \ | ||
51 | $(top_srcdir)/m4/evas_scaler.m4 $(top_srcdir)/m4/libtool.m4 \ | ||
52 | $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ | ||
53 | $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ | ||
54 | $(top_srcdir)/configure.ac | ||
55 | am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ | ||
56 | $(ACLOCAL_M4) | ||
57 | mkinstalldirs = $(install_sh) -d | ||
58 | CONFIG_HEADER = $(top_builddir)/config.h | ||
59 | CONFIG_CLEAN_FILES = | ||
60 | CONFIG_CLEAN_VPATH_FILES = | ||
61 | am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; | ||
62 | am__vpath_adj = case $$p in \ | ||
63 | $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ | ||
64 | *) f=$$p;; \ | ||
65 | esac; | ||
66 | am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; | ||
67 | am__install_max = 40 | ||
68 | am__nobase_strip_setup = \ | ||
69 | srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` | ||
70 | am__nobase_strip = \ | ||
71 | for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" | ||
72 | am__nobase_list = $(am__nobase_strip_setup); \ | ||
73 | for p in $$list; do echo "$$p $$p"; done | \ | ||
74 | sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ | ||
75 | $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ | ||
76 | if (++n[$$2] == $(am__install_max)) \ | ||
77 | { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ | ||
78 | END { for (dir in files) print dir, files[dir] }' | ||
79 | am__base_list = \ | ||
80 | sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ | ||
81 | sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | ||
82 | am__installdirs = "$(DESTDIR)$(pkgdir)" "$(DESTDIR)$(includesdir)" | ||
83 | LTLIBRARIES = $(noinst_LTLIBRARIES) $(pkg_LTLIBRARIES) | ||
84 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@am__DEPENDENCIES_1 = $(top_builddir)/src/modules/engines/gl_common/libevas_engine_gl_common.la | ||
85 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@@EVAS_STATIC_BUILD_WAYLAND_EGL_TRUE@libevas_engine_wayland_egl_la_DEPENDENCIES = $(am__DEPENDENCIES_1) | ||
86 | am__libevas_engine_wayland_egl_la_SOURCES_DIST = evas_engine.c \ | ||
87 | evas_wl_main.c | ||
88 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@am__objects_1 = evas_engine.lo \ | ||
89 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@ evas_wl_main.lo | ||
90 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@@EVAS_STATIC_BUILD_WAYLAND_EGL_TRUE@am_libevas_engine_wayland_egl_la_OBJECTS = $(am__objects_1) | ||
91 | libevas_engine_wayland_egl_la_OBJECTS = \ | ||
92 | $(am_libevas_engine_wayland_egl_la_OBJECTS) | ||
93 | AM_V_lt = $(am__v_lt_$(V)) | ||
94 | am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) | ||
95 | am__v_lt_0 = --silent | ||
96 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@@EVAS_STATIC_BUILD_WAYLAND_EGL_TRUE@am_libevas_engine_wayland_egl_la_rpath = | ||
97 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@@EVAS_STATIC_BUILD_WAYLAND_EGL_FALSE@module_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ | ||
98 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@@EVAS_STATIC_BUILD_WAYLAND_EGL_FALSE@ $(top_builddir)/src/lib/libevas.la | ||
99 | am__module_la_SOURCES_DIST = evas_engine.c evas_wl_main.c | ||
100 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@am__objects_2 = \ | ||
101 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@ module_la-evas_engine.lo \ | ||
102 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@ module_la-evas_wl_main.lo | ||
103 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@@EVAS_STATIC_BUILD_WAYLAND_EGL_FALSE@am_module_la_OBJECTS = $(am__objects_2) | ||
104 | module_la_OBJECTS = $(am_module_la_OBJECTS) | ||
105 | module_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ | ||
106 | $(module_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ | ||
107 | $(AM_CFLAGS) $(CFLAGS) $(module_la_LDFLAGS) $(LDFLAGS) -o $@ | ||
108 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@@EVAS_STATIC_BUILD_WAYLAND_EGL_FALSE@am_module_la_rpath = -rpath \ | ||
109 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@@EVAS_STATIC_BUILD_WAYLAND_EGL_FALSE@ $(pkgdir) | ||
110 | DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) | ||
111 | depcomp = $(SHELL) $(top_srcdir)/depcomp | ||
112 | am__depfiles_maybe = depfiles | ||
113 | am__mv = mv -f | ||
114 | COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ | ||
115 | $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) | ||
116 | LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ | ||
117 | $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ | ||
118 | $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ | ||
119 | $(AM_CFLAGS) $(CFLAGS) | ||
120 | AM_V_CC = $(am__v_CC_$(V)) | ||
121 | am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) | ||
122 | am__v_CC_0 = @echo " CC " $@; | ||
123 | AM_V_at = $(am__v_at_$(V)) | ||
124 | am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) | ||
125 | am__v_at_0 = @ | ||
126 | CCLD = $(CC) | ||
127 | LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ | ||
128 | $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ | ||
129 | $(AM_LDFLAGS) $(LDFLAGS) -o $@ | ||
130 | AM_V_CCLD = $(am__v_CCLD_$(V)) | ||
131 | am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) | ||
132 | am__v_CCLD_0 = @echo " CCLD " $@; | ||
133 | AM_V_GEN = $(am__v_GEN_$(V)) | ||
134 | am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) | ||
135 | am__v_GEN_0 = @echo " GEN " $@; | ||
136 | SOURCES = $(libevas_engine_wayland_egl_la_SOURCES) \ | ||
137 | $(module_la_SOURCES) | ||
138 | DIST_SOURCES = $(am__libevas_engine_wayland_egl_la_SOURCES_DIST) \ | ||
139 | $(am__module_la_SOURCES_DIST) | ||
140 | am__includes_HEADERS_DIST = Evas_Engine_Wayland_Egl.h | ||
141 | HEADERS = $(includes_HEADERS) | ||
142 | ETAGS = etags | ||
143 | CTAGS = ctags | ||
144 | DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) | ||
145 | ACLOCAL = @ACLOCAL@ | ||
146 | ALLOCA = @ALLOCA@ | ||
147 | AMTAR = @AMTAR@ | ||
148 | AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ | ||
149 | AR = @AR@ | ||
150 | AS = @AS@ | ||
151 | AUTOCONF = @AUTOCONF@ | ||
152 | AUTOHEADER = @AUTOHEADER@ | ||
153 | AUTOMAKE = @AUTOMAKE@ | ||
154 | AWK = @AWK@ | ||
155 | CC = @CC@ | ||
156 | CCDEPMODE = @CCDEPMODE@ | ||
157 | CFLAGS = @CFLAGS@ | ||
158 | CHECK_CFLAGS = @CHECK_CFLAGS@ | ||
159 | CHECK_LIBS = @CHECK_LIBS@ | ||
160 | CPP = @CPP@ | ||
161 | CPPFLAGS = @CPPFLAGS@ | ||
162 | CXX = @CXX@ | ||
163 | CXXCPP = @CXXCPP@ | ||
164 | CXXDEPMODE = @CXXDEPMODE@ | ||
165 | CXXFLAGS = @CXXFLAGS@ | ||
166 | CYGPATH_W = @CYGPATH_W@ | ||
167 | DEFS = @DEFS@ | ||
168 | DEPDIR = @DEPDIR@ | ||
169 | DIRECTFB_CFLAGS = @DIRECTFB_CFLAGS@ | ||
170 | DIRECTFB_LIBS = @DIRECTFB_LIBS@ | ||
171 | DLLTOOL = @DLLTOOL@ | ||
172 | DSYMUTIL = @DSYMUTIL@ | ||
173 | DUMPBIN = @DUMPBIN@ | ||
174 | ECHO_C = @ECHO_C@ | ||
175 | ECHO_N = @ECHO_N@ | ||
176 | ECHO_T = @ECHO_T@ | ||
177 | ECORE_EVAS_CFLAGS = @ECORE_EVAS_CFLAGS@ | ||
178 | ECORE_EVAS_LIBS = @ECORE_EVAS_LIBS@ | ||
179 | EDB_CFLAGS = @EDB_CFLAGS@ | ||
180 | EDB_LIBS = @EDB_LIBS@ | ||
181 | EDJE_CFLAGS = @EDJE_CFLAGS@ | ||
182 | EDJE_LIBS = @EDJE_LIBS@ | ||
183 | EET_CFLAGS = @EET_CFLAGS@ | ||
184 | EET_LIBS = @EET_LIBS@ | ||
185 | EFL_COVERAGE_CFLAGS = @EFL_COVERAGE_CFLAGS@ | ||
186 | EFL_COVERAGE_LIBS = @EFL_COVERAGE_LIBS@ | ||
187 | EFL_FNMATCH_LIBS = @EFL_FNMATCH_LIBS@ | ||
188 | EGREP = @EGREP@ | ||
189 | EINA_CFLAGS = @EINA_CFLAGS@ | ||
190 | EINA_LIBS = @EINA_LIBS@ | ||
191 | EVAS_CFLAGS = @EVAS_CFLAGS@ | ||
192 | EVAS_LIBS = @EVAS_LIBS@ | ||
193 | EVAS_SSE3_CFLAGS = @EVAS_SSE3_CFLAGS@ | ||
194 | EVIL_CFLAGS = @EVIL_CFLAGS@ | ||
195 | EVIL_LIBS = @EVIL_LIBS@ | ||
196 | EXEEXT = @EXEEXT@ | ||
197 | FGREP = @FGREP@ | ||
198 | FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ | ||
199 | FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ | ||
200 | FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ | ||
201 | FREETYPE_LIBS = @FREETYPE_LIBS@ | ||
202 | FRIBIDI_CFLAGS = @FRIBIDI_CFLAGS@ | ||
203 | FRIBIDI_LIBS = @FRIBIDI_LIBS@ | ||
204 | GL_EET_CFLAGS = @GL_EET_CFLAGS@ | ||
205 | GL_EET_LIBS = @GL_EET_LIBS@ | ||
206 | GREP = @GREP@ | ||
207 | HARFBUZZ_CFLAGS = @HARFBUZZ_CFLAGS@ | ||
208 | HARFBUZZ_LIBS = @HARFBUZZ_LIBS@ | ||
209 | INSTALL = @INSTALL@ | ||
210 | INSTALL_DATA = @INSTALL_DATA@ | ||
211 | INSTALL_PROGRAM = @INSTALL_PROGRAM@ | ||
212 | INSTALL_SCRIPT = @INSTALL_SCRIPT@ | ||
213 | INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ | ||
214 | LD = @LD@ | ||
215 | LDFLAGS = @LDFLAGS@ | ||
216 | LIBOBJS = @LIBOBJS@ | ||
217 | LIBS = @LIBS@ | ||
218 | LIBTOOL = @LIBTOOL@ | ||
219 | LINEBREAK_CFLAGS = @LINEBREAK_CFLAGS@ | ||
220 | LINEBREAK_LIBS = @LINEBREAK_LIBS@ | ||
221 | LIPO = @LIPO@ | ||
222 | LN_S = @LN_S@ | ||
223 | LTLIBOBJS = @LTLIBOBJS@ | ||
224 | MAKEINFO = @MAKEINFO@ | ||
225 | MKDIR_P = @MKDIR_P@ | ||
226 | MODULE_ARCH = @MODULE_ARCH@ | ||
227 | NM = @NM@ | ||
228 | NMEDIT = @NMEDIT@ | ||
229 | OBJC = @OBJC@ | ||
230 | OBJCDEPMODE = @OBJCDEPMODE@ | ||
231 | OBJCFLAGS = @OBJCFLAGS@ | ||
232 | OBJDUMP = @OBJDUMP@ | ||
233 | OBJEXT = @OBJEXT@ | ||
234 | OTOOL = @OTOOL@ | ||
235 | OTOOL64 = @OTOOL64@ | ||
236 | PACKAGE = @PACKAGE@ | ||
237 | PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ | ||
238 | PACKAGE_NAME = @PACKAGE_NAME@ | ||
239 | PACKAGE_STRING = @PACKAGE_STRING@ | ||
240 | PACKAGE_TARNAME = @PACKAGE_TARNAME@ | ||
241 | PACKAGE_URL = @PACKAGE_URL@ | ||
242 | PACKAGE_VERSION = @PACKAGE_VERSION@ | ||
243 | PATH_SEPARATOR = @PATH_SEPARATOR@ | ||
244 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | ||
245 | PIXMAN_LIBS = @PIXMAN_LIBS@ | ||
246 | PKG_CONFIG = @PKG_CONFIG@ | ||
247 | PNG_CFLAGS = @PNG_CFLAGS@ | ||
248 | PNG_LIBS = @PNG_LIBS@ | ||
249 | RANLIB = @RANLIB@ | ||
250 | SDL_CFLAGS = @SDL_CFLAGS@ | ||
251 | SDL_LIBS = @SDL_LIBS@ | ||
252 | SED = @SED@ | ||
253 | SET_MAKE = @SET_MAKE@ | ||
254 | SHELL = @SHELL@ | ||
255 | SHM_OPEN_LINK = @SHM_OPEN_LINK@ | ||
256 | STRIP = @STRIP@ | ||
257 | SVG_CFLAGS = @SVG_CFLAGS@ | ||
258 | SVG_LIBS = @SVG_LIBS@ | ||
259 | VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | ||
260 | VALGRIND_LIBS = @VALGRIND_LIBS@ | ||
261 | VERSION = @VERSION@ | ||
262 | VMAJ = @VMAJ@ | ||
263 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
264 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
265 | WIN32_CFLAGS = @WIN32_CFLAGS@ | ||
266 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | ||
267 | XCB_CFLAGS = @XCB_CFLAGS@ | ||
268 | XCB_GL_CFLAGS = @XCB_GL_CFLAGS@ | ||
269 | XCB_GL_LIBS = @XCB_GL_LIBS@ | ||
270 | XCB_LIBS = @XCB_LIBS@ | ||
271 | XEXT_CFLAGS = @XEXT_CFLAGS@ | ||
272 | XEXT_LIBS = @XEXT_LIBS@ | ||
273 | XMKMF = @XMKMF@ | ||
274 | X_CFLAGS = @X_CFLAGS@ | ||
275 | X_EXTRA_LIBS = @X_EXTRA_LIBS@ | ||
276 | X_LIBS = @X_LIBS@ | ||
277 | X_PRE_LIBS = @X_PRE_LIBS@ | ||
278 | abs_builddir = @abs_builddir@ | ||
279 | abs_srcdir = @abs_srcdir@ | ||
280 | abs_top_builddir = @abs_top_builddir@ | ||
281 | abs_top_srcdir = @abs_top_srcdir@ | ||
282 | ac_ct_CC = @ac_ct_CC@ | ||
283 | ac_ct_CXX = @ac_ct_CXX@ | ||
284 | ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ | ||
285 | ac_ct_OBJC = @ac_ct_OBJC@ | ||
286 | altivec_cflags = @altivec_cflags@ | ||
287 | am__include = @am__include@ | ||
288 | am__leading_dot = @am__leading_dot@ | ||
289 | am__quote = @am__quote@ | ||
290 | am__tar = @am__tar@ | ||
291 | am__untar = @am__untar@ | ||
292 | bindir = @bindir@ | ||
293 | build = @build@ | ||
294 | build_alias = @build_alias@ | ||
295 | build_cpu = @build_cpu@ | ||
296 | build_os = @build_os@ | ||
297 | build_vendor = @build_vendor@ | ||
298 | builddir = @builddir@ | ||
299 | datadir = @datadir@ | ||
300 | datarootdir = @datarootdir@ | ||
301 | dlopen_libs = @dlopen_libs@ | ||
302 | docdir = @docdir@ | ||
303 | dvidir = @dvidir@ | ||
304 | edje_cc = @edje_cc@ | ||
305 | efl_doxygen = @efl_doxygen@ | ||
306 | efl_have_doxygen = @efl_have_doxygen@ | ||
307 | evas_engine_buffer_cflags = @evas_engine_buffer_cflags@ | ||
308 | evas_engine_buffer_libs = @evas_engine_buffer_libs@ | ||
309 | evas_engine_direct3d_cflags = @evas_engine_direct3d_cflags@ | ||
310 | evas_engine_direct3d_libs = @evas_engine_direct3d_libs@ | ||
311 | evas_engine_directfb_cflags = @evas_engine_directfb_cflags@ | ||
312 | evas_engine_directfb_libs = @evas_engine_directfb_libs@ | ||
313 | evas_engine_fb_cflags = @evas_engine_fb_cflags@ | ||
314 | evas_engine_fb_libs = @evas_engine_fb_libs@ | ||
315 | evas_engine_gl_cocoa_cflags = @evas_engine_gl_cocoa_cflags@ | ||
316 | evas_engine_gl_cocoa_libs = @evas_engine_gl_cocoa_libs@ | ||
317 | evas_engine_gl_common_libs = @evas_engine_gl_common_libs@ | ||
318 | evas_engine_gl_sdl_cflags = @evas_engine_gl_sdl_cflags@ | ||
319 | evas_engine_gl_sdl_libs = @evas_engine_gl_sdl_libs@ | ||
320 | evas_engine_gl_xcb_cflags = @evas_engine_gl_xcb_cflags@ | ||
321 | evas_engine_gl_xcb_libs = @evas_engine_gl_xcb_libs@ | ||
322 | evas_engine_gl_xlib_cflags = @evas_engine_gl_xlib_cflags@ | ||
323 | evas_engine_gl_xlib_libs = @evas_engine_gl_xlib_libs@ | ||
324 | evas_engine_psl1ght_cflags = @evas_engine_psl1ght_cflags@ | ||
325 | evas_engine_psl1ght_libs = @evas_engine_psl1ght_libs@ | ||
326 | evas_engine_software_16_ddraw_cflags = @evas_engine_software_16_ddraw_cflags@ | ||
327 | evas_engine_software_16_ddraw_libs = @evas_engine_software_16_ddraw_libs@ | ||
328 | evas_engine_software_16_sdl_cflags = @evas_engine_software_16_sdl_cflags@ | ||
329 | evas_engine_software_16_sdl_libs = @evas_engine_software_16_sdl_libs@ | ||
330 | evas_engine_software_16_wince_cflags = @evas_engine_software_16_wince_cflags@ | ||
331 | evas_engine_software_16_wince_libs = @evas_engine_software_16_wince_libs@ | ||
332 | evas_engine_software_16_x11_cflags = @evas_engine_software_16_x11_cflags@ | ||
333 | evas_engine_software_16_x11_libs = @evas_engine_software_16_x11_libs@ | ||
334 | evas_engine_software_8_x11_cflags = @evas_engine_software_8_x11_cflags@ | ||
335 | evas_engine_software_8_x11_libs = @evas_engine_software_8_x11_libs@ | ||
336 | evas_engine_software_ddraw_cflags = @evas_engine_software_ddraw_cflags@ | ||
337 | evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@ | ||
338 | evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@ | ||
339 | evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@ | ||
340 | evas_engine_software_sdl_cflags = @evas_engine_software_sdl_cflags@ | ||
341 | evas_engine_software_sdl_libs = @evas_engine_software_sdl_libs@ | ||
342 | evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | ||
343 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | ||
344 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | ||
345 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | ||
346 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
347 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
348 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
349 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
350 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | ||
351 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | ||
352 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | ||
353 | evas_image_loader_edb_libs = @evas_image_loader_edb_libs@ | ||
354 | evas_image_loader_eet_cflags = @evas_image_loader_eet_cflags@ | ||
355 | evas_image_loader_eet_libs = @evas_image_loader_eet_libs@ | ||
356 | evas_image_loader_generic_cflags = @evas_image_loader_generic_cflags@ | ||
357 | evas_image_loader_generic_libs = @evas_image_loader_generic_libs@ | ||
358 | evas_image_loader_gif_cflags = @evas_image_loader_gif_cflags@ | ||
359 | evas_image_loader_gif_libs = @evas_image_loader_gif_libs@ | ||
360 | evas_image_loader_ico_cflags = @evas_image_loader_ico_cflags@ | ||
361 | evas_image_loader_ico_libs = @evas_image_loader_ico_libs@ | ||
362 | evas_image_loader_jpeg_cflags = @evas_image_loader_jpeg_cflags@ | ||
363 | evas_image_loader_jpeg_libs = @evas_image_loader_jpeg_libs@ | ||
364 | evas_image_loader_pmaps_cflags = @evas_image_loader_pmaps_cflags@ | ||
365 | evas_image_loader_pmaps_libs = @evas_image_loader_pmaps_libs@ | ||
366 | evas_image_loader_png_cflags = @evas_image_loader_png_cflags@ | ||
367 | evas_image_loader_png_libs = @evas_image_loader_png_libs@ | ||
368 | evas_image_loader_psd_cflags = @evas_image_loader_psd_cflags@ | ||
369 | evas_image_loader_psd_libs = @evas_image_loader_psd_libs@ | ||
370 | evas_image_loader_svg_cflags = @evas_image_loader_svg_cflags@ | ||
371 | evas_image_loader_svg_libs = @evas_image_loader_svg_libs@ | ||
372 | evas_image_loader_tga_cflags = @evas_image_loader_tga_cflags@ | ||
373 | evas_image_loader_tga_libs = @evas_image_loader_tga_libs@ | ||
374 | evas_image_loader_tiff_cflags = @evas_image_loader_tiff_cflags@ | ||
375 | evas_image_loader_tiff_libs = @evas_image_loader_tiff_libs@ | ||
376 | evas_image_loader_wbmp_cflags = @evas_image_loader_wbmp_cflags@ | ||
377 | evas_image_loader_wbmp_libs = @evas_image_loader_wbmp_libs@ | ||
378 | evas_image_loader_xpm_cflags = @evas_image_loader_xpm_cflags@ | ||
379 | evas_image_loader_xpm_libs = @evas_image_loader_xpm_libs@ | ||
380 | exec_prefix = @exec_prefix@ | ||
381 | have_evas_engine_gl_x11 = @have_evas_engine_gl_x11@ | ||
382 | have_evas_engine_gl_xcb = @have_evas_engine_gl_xcb@ | ||
383 | have_evas_engine_gl_xlib = @have_evas_engine_gl_xlib@ | ||
384 | have_evas_engine_software_x11 = @have_evas_engine_software_x11@ | ||
385 | have_evas_engine_software_xcb = @have_evas_engine_software_xcb@ | ||
386 | have_evas_engine_software_xlib = @have_evas_engine_software_xlib@ | ||
387 | have_lcov = @have_lcov@ | ||
388 | host = @host@ | ||
389 | host_alias = @host_alias@ | ||
390 | host_cpu = @host_cpu@ | ||
391 | host_os = @host_os@ | ||
392 | host_vendor = @host_vendor@ | ||
393 | htmldir = @htmldir@ | ||
394 | includedir = @includedir@ | ||
395 | infodir = @infodir@ | ||
396 | install_sh = @install_sh@ | ||
397 | libdir = @libdir@ | ||
398 | libexecdir = @libexecdir@ | ||
399 | localedir = @localedir@ | ||
400 | localstatedir = @localstatedir@ | ||
401 | lt_ECHO = @lt_ECHO@ | ||
402 | lt_enable_auto_import = @lt_enable_auto_import@ | ||
403 | mandir = @mandir@ | ||
404 | mkdir_p = @mkdir_p@ | ||
405 | oldincludedir = @oldincludedir@ | ||
406 | pdfdir = @pdfdir@ | ||
407 | pkgconfig_requires_private = @pkgconfig_requires_private@ | ||
408 | prefix = @prefix@ | ||
409 | program_transform_name = @program_transform_name@ | ||
410 | psdir = @psdir@ | ||
411 | pthread_cflags = @pthread_cflags@ | ||
412 | pthread_libs = @pthread_libs@ | ||
413 | release_info = @release_info@ | ||
414 | requirement_evas = @requirement_evas@ | ||
415 | sbindir = @sbindir@ | ||
416 | sharedstatedir = @sharedstatedir@ | ||
417 | srcdir = @srcdir@ | ||
418 | sysconfdir = @sysconfdir@ | ||
419 | target_alias = @target_alias@ | ||
420 | top_build_prefix = @top_build_prefix@ | ||
421 | top_builddir = @top_builddir@ | ||
422 | top_srcdir = @top_srcdir@ | ||
423 | version_info = @version_info@ | ||
424 | MAINTAINERCLEANFILES = Makefile.in | ||
425 | AM_CPPFLAGS = \ | ||
426 | -I. \ | ||
427 | -I$(top_srcdir)/src/lib \ | ||
428 | -I$(top_srcdir)/src/lib/include \ | ||
429 | -I$(top_srcdir)/src/modules/engines/gl_common \ | ||
430 | @FREETYPE_CFLAGS@ \ | ||
431 | @PIXMAN_CFLAGS@ \ | ||
432 | @EINA_CFLAGS@ \ | ||
433 | @GL_EET_CFLAGS@ \ | ||
434 | @evas_engine_wayland_egl_cflags@ | ||
435 | |||
436 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@WAYLAND_EGL_SOURCES = \ | ||
437 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@evas_engine.c \ | ||
438 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@evas_wl_main.c | ||
439 | |||
440 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@WAYLAND_EGL_LIBADD = @FREETYPE_LIBS@ @GL_EET_LIBS@ @EINA_LIBS@ @evas_engine_wayland_egl_libs@ $(top_builddir)/src/modules/engines/gl_common/libevas_engine_gl_common.la | ||
441 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@includes_HEADERS = Evas_Engine_Wayland_Egl.h | ||
442 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@includesdir = $(includedir)/evas-@VMAJ@ | ||
443 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@@EVAS_STATIC_BUILD_WAYLAND_EGL_FALSE@pkgdir = $(libdir)/evas/modules/engines/wayland_egl/$(MODULE_ARCH) | ||
444 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@@EVAS_STATIC_BUILD_WAYLAND_EGL_FALSE@pkg_LTLIBRARIES = module.la | ||
445 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@@EVAS_STATIC_BUILD_WAYLAND_EGL_FALSE@module_la_SOURCES = $(WAYLAND_EGL_SOURCES) | ||
446 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@@EVAS_STATIC_BUILD_WAYLAND_EGL_FALSE@module_la_LIBADD = $(WAYLAND_EGL_LIBADD) $(top_builddir)/src/lib/libevas.la | ||
447 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@@EVAS_STATIC_BUILD_WAYLAND_EGL_FALSE@module_la_LDFLAGS = -no-undefined -module -avoid-version | ||
448 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@@EVAS_STATIC_BUILD_WAYLAND_EGL_FALSE@module_la_LIBTOOLFLAGS = --tag=disable-static | ||
449 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@@EVAS_STATIC_BUILD_WAYLAND_EGL_TRUE@noinst_LTLIBRARIES = libevas_engine_wayland_egl.la | ||
450 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@@EVAS_STATIC_BUILD_WAYLAND_EGL_TRUE@libevas_engine_wayland_egl_la_SOURCES = $(WAYLAND_EGL_SOURCES) | ||
451 | @BUILD_ENGINE_WAYLAND_EGL_TRUE@@EVAS_STATIC_BUILD_WAYLAND_EGL_TRUE@libevas_engine_wayland_egl_la_LIBADD = $(WAYLAND_EGL_LIBADD) | ||
452 | EXTRA_DIST = evas_engine.h | ||
453 | all: all-am | ||
454 | |||
455 | .SUFFIXES: | ||
456 | .SUFFIXES: .c .lo .o .obj | ||
457 | $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) | ||
458 | @for dep in $?; do \ | ||
459 | case '$(am__configure_deps)' in \ | ||
460 | *$$dep*) \ | ||
461 | ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ | ||
462 | && { if test -f $@; then exit 0; else break; fi; }; \ | ||
463 | exit 1;; \ | ||
464 | esac; \ | ||
465 | done; \ | ||
466 | echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/modules/engines/wayland_egl/Makefile'; \ | ||
467 | $(am__cd) $(top_srcdir) && \ | ||
468 | $(AUTOMAKE) --gnu src/modules/engines/wayland_egl/Makefile | ||
469 | .PRECIOUS: Makefile | ||
470 | Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status | ||
471 | @case '$?' in \ | ||
472 | *config.status*) \ | ||
473 | cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ | ||
474 | *) \ | ||
475 | echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ | ||
476 | cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ | ||
477 | esac; | ||
478 | |||
479 | $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) | ||
480 | cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh | ||
481 | |||
482 | $(top_srcdir)/configure: $(am__configure_deps) | ||
483 | cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh | ||
484 | $(ACLOCAL_M4): $(am__aclocal_m4_deps) | ||
485 | cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh | ||
486 | $(am__aclocal_m4_deps): | ||
487 | |||
488 | clean-noinstLTLIBRARIES: | ||
489 | -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) | ||
490 | @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ | ||
491 | dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ | ||
492 | test "$$dir" != "$$p" || dir=.; \ | ||
493 | echo "rm -f \"$${dir}/so_locations\""; \ | ||
494 | rm -f "$${dir}/so_locations"; \ | ||
495 | done | ||
496 | install-pkgLTLIBRARIES: $(pkg_LTLIBRARIES) | ||
497 | @$(NORMAL_INSTALL) | ||
498 | test -z "$(pkgdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdir)" | ||
499 | @list='$(pkg_LTLIBRARIES)'; test -n "$(pkgdir)" || list=; \ | ||
500 | list2=; for p in $$list; do \ | ||
501 | if test -f $$p; then \ | ||
502 | list2="$$list2 $$p"; \ | ||
503 | else :; fi; \ | ||
504 | done; \ | ||
505 | test -z "$$list2" || { \ | ||
506 | echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkgdir)'"; \ | ||
507 | $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkgdir)"; \ | ||
508 | } | ||
509 | |||
510 | uninstall-pkgLTLIBRARIES: | ||
511 | @$(NORMAL_UNINSTALL) | ||
512 | @list='$(pkg_LTLIBRARIES)'; test -n "$(pkgdir)" || list=; \ | ||
513 | for p in $$list; do \ | ||
514 | $(am__strip_dir) \ | ||
515 | echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkgdir)/$$f'"; \ | ||
516 | $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkgdir)/$$f"; \ | ||
517 | done | ||
518 | |||
519 | clean-pkgLTLIBRARIES: | ||
520 | -test -z "$(pkg_LTLIBRARIES)" || rm -f $(pkg_LTLIBRARIES) | ||
521 | @list='$(pkg_LTLIBRARIES)'; for p in $$list; do \ | ||
522 | dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ | ||
523 | test "$$dir" != "$$p" || dir=.; \ | ||
524 | echo "rm -f \"$${dir}/so_locations\""; \ | ||
525 | rm -f "$${dir}/so_locations"; \ | ||
526 | done | ||
527 | libevas_engine_wayland_egl.la: $(libevas_engine_wayland_egl_la_OBJECTS) $(libevas_engine_wayland_egl_la_DEPENDENCIES) | ||
528 | $(AM_V_CCLD)$(LINK) $(am_libevas_engine_wayland_egl_la_rpath) $(libevas_engine_wayland_egl_la_OBJECTS) $(libevas_engine_wayland_egl_la_LIBADD) $(LIBS) | ||
529 | module.la: $(module_la_OBJECTS) $(module_la_DEPENDENCIES) | ||
530 | $(AM_V_CCLD)$(module_la_LINK) $(am_module_la_rpath) $(module_la_OBJECTS) $(module_la_LIBADD) $(LIBS) | ||
531 | |||
532 | mostlyclean-compile: | ||
533 | -rm -f *.$(OBJEXT) | ||
534 | |||
535 | distclean-compile: | ||
536 | -rm -f *.tab.c | ||
537 | |||
538 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/evas_engine.Plo@am__quote@ | ||
539 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/evas_wl_main.Plo@am__quote@ | ||
540 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/module_la-evas_engine.Plo@am__quote@ | ||
541 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/module_la-evas_wl_main.Plo@am__quote@ | ||
542 | |||
543 | .c.o: | ||
544 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< | ||
545 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po | ||
546 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | ||
547 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ | ||
548 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | ||
549 | @am__fastdepCC_FALSE@ $(COMPILE) -c $< | ||
550 | |||
551 | .c.obj: | ||
552 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` | ||
553 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po | ||
554 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | ||
555 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ | ||
556 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | ||
557 | @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` | ||
558 | |||
559 | .c.lo: | ||
560 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< | ||
561 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo | ||
562 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | ||
563 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ | ||
564 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | ||
565 | @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< | ||
566 | |||
567 | module_la-evas_engine.lo: evas_engine.c | ||
568 | @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 | ||
569 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/module_la-evas_engine.Tpo $(DEPDIR)/module_la-evas_engine.Plo | ||
570 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | ||
571 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='evas_engine.c' object='module_la-evas_engine.lo' libtool=yes @AMDEPBACKSLASH@ | ||
572 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | ||
573 | @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 | ||
574 | |||
575 | module_la-evas_wl_main.lo: evas_wl_main.c | ||
576 | @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_wl_main.lo -MD -MP -MF $(DEPDIR)/module_la-evas_wl_main.Tpo -c -o module_la-evas_wl_main.lo `test -f 'evas_wl_main.c' || echo '$(srcdir)/'`evas_wl_main.c | ||
577 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/module_la-evas_wl_main.Tpo $(DEPDIR)/module_la-evas_wl_main.Plo | ||
578 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | ||
579 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='evas_wl_main.c' object='module_la-evas_wl_main.lo' libtool=yes @AMDEPBACKSLASH@ | ||
580 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | ||
581 | @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_wl_main.lo `test -f 'evas_wl_main.c' || echo '$(srcdir)/'`evas_wl_main.c | ||
582 | |||
583 | mostlyclean-libtool: | ||
584 | -rm -f *.lo | ||
585 | |||
586 | clean-libtool: | ||
587 | -rm -rf .libs _libs | ||
588 | install-includesHEADERS: $(includes_HEADERS) | ||
589 | @$(NORMAL_INSTALL) | ||
590 | test -z "$(includesdir)" || $(MKDIR_P) "$(DESTDIR)$(includesdir)" | ||
591 | @list='$(includes_HEADERS)'; test -n "$(includesdir)" || list=; \ | ||
592 | for p in $$list; do \ | ||
593 | if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ | ||
594 | echo "$$d$$p"; \ | ||
595 | done | $(am__base_list) | \ | ||
596 | while read files; do \ | ||
597 | echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includesdir)'"; \ | ||
598 | $(INSTALL_HEADER) $$files "$(DESTDIR)$(includesdir)" || exit $$?; \ | ||
599 | done | ||
600 | |||
601 | uninstall-includesHEADERS: | ||
602 | @$(NORMAL_UNINSTALL) | ||
603 | @list='$(includes_HEADERS)'; test -n "$(includesdir)" || list=; \ | ||
604 | files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ | ||
605 | test -n "$$files" || exit 0; \ | ||
606 | echo " ( cd '$(DESTDIR)$(includesdir)' && rm -f" $$files ")"; \ | ||
607 | cd "$(DESTDIR)$(includesdir)" && rm -f $$files | ||
608 | |||
609 | ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) | ||
610 | list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ | ||
611 | unique=`for i in $$list; do \ | ||
612 | if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ | ||
613 | done | \ | ||
614 | $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ | ||
615 | END { if (nonempty) { for (i in files) print i; }; }'`; \ | ||
616 | mkid -fID $$unique | ||
617 | tags: TAGS | ||
618 | |||
619 | TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ | ||
620 | $(TAGS_FILES) $(LISP) | ||
621 | set x; \ | ||
622 | here=`pwd`; \ | ||
623 | list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ | ||
624 | unique=`for i in $$list; do \ | ||
625 | if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ | ||
626 | done | \ | ||
627 | $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ | ||
628 | END { if (nonempty) { for (i in files) print i; }; }'`; \ | ||
629 | shift; \ | ||
630 | if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ | ||
631 | test -n "$$unique" || unique=$$empty_fix; \ | ||
632 | if test $$# -gt 0; then \ | ||
633 | $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ | ||
634 | "$$@" $$unique; \ | ||
635 | else \ | ||
636 | $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ | ||
637 | $$unique; \ | ||
638 | fi; \ | ||
639 | fi | ||
640 | ctags: CTAGS | ||
641 | CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ | ||
642 | $(TAGS_FILES) $(LISP) | ||
643 | list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ | ||
644 | unique=`for i in $$list; do \ | ||
645 | if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ | ||
646 | done | \ | ||
647 | $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ | ||
648 | END { if (nonempty) { for (i in files) print i; }; }'`; \ | ||
649 | test -z "$(CTAGS_ARGS)$$unique" \ | ||
650 | || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ | ||
651 | $$unique | ||
652 | |||
653 | GTAGS: | ||
654 | here=`$(am__cd) $(top_builddir) && pwd` \ | ||
655 | && $(am__cd) $(top_srcdir) \ | ||
656 | && gtags -i $(GTAGS_ARGS) "$$here" | ||
657 | |||
658 | distclean-tags: | ||
659 | -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags | ||
660 | |||
661 | distdir: $(DISTFILES) | ||
662 | @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ | ||
663 | topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ | ||
664 | list='$(DISTFILES)'; \ | ||
665 | dist_files=`for file in $$list; do echo $$file; done | \ | ||
666 | sed -e "s|^$$srcdirstrip/||;t" \ | ||
667 | -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ | ||
668 | case $$dist_files in \ | ||
669 | */*) $(MKDIR_P) `echo "$$dist_files" | \ | ||
670 | sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ | ||
671 | sort -u` ;; \ | ||
672 | esac; \ | ||
673 | for file in $$dist_files; do \ | ||
674 | if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ | ||
675 | if test -d $$d/$$file; then \ | ||
676 | dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ | ||
677 | if test -d "$(distdir)/$$file"; then \ | ||
678 | find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ | ||
679 | fi; \ | ||
680 | if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ | ||
681 | cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ | ||
682 | find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ | ||
683 | fi; \ | ||
684 | cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ | ||
685 | else \ | ||
686 | test -f "$(distdir)/$$file" \ | ||
687 | || cp -p $$d/$$file "$(distdir)/$$file" \ | ||
688 | || exit 1; \ | ||
689 | fi; \ | ||
690 | done | ||
691 | check-am: all-am | ||
692 | check: check-am | ||
693 | all-am: Makefile $(LTLIBRARIES) $(HEADERS) | ||
694 | installdirs: | ||
695 | for dir in "$(DESTDIR)$(pkgdir)" "$(DESTDIR)$(includesdir)"; do \ | ||
696 | test -z "$$dir" || $(MKDIR_P) "$$dir"; \ | ||
697 | done | ||
698 | install: install-am | ||
699 | install-exec: install-exec-am | ||
700 | install-data: install-data-am | ||
701 | uninstall: uninstall-am | ||
702 | |||
703 | install-am: all-am | ||
704 | @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am | ||
705 | |||
706 | installcheck: installcheck-am | ||
707 | install-strip: | ||
708 | $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ | ||
709 | install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ | ||
710 | `test -z '$(STRIP)' || \ | ||
711 | echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install | ||
712 | mostlyclean-generic: | ||
713 | |||
714 | clean-generic: | ||
715 | |||
716 | distclean-generic: | ||
717 | -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) | ||
718 | -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) | ||
719 | |||
720 | maintainer-clean-generic: | ||
721 | @echo "This command is intended for maintainers to use" | ||
722 | @echo "it deletes files that may require special tools to rebuild." | ||
723 | -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) | ||
724 | clean: clean-am | ||
725 | |||
726 | clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ | ||
727 | clean-pkgLTLIBRARIES mostlyclean-am | ||
728 | |||
729 | distclean: distclean-am | ||
730 | -rm -rf ./$(DEPDIR) | ||
731 | -rm -f Makefile | ||
732 | distclean-am: clean-am distclean-compile distclean-generic \ | ||
733 | distclean-tags | ||
734 | |||
735 | dvi: dvi-am | ||
736 | |||
737 | dvi-am: | ||
738 | |||
739 | html: html-am | ||
740 | |||
741 | html-am: | ||
742 | |||
743 | info: info-am | ||
744 | |||
745 | info-am: | ||
746 | |||
747 | install-data-am: install-includesHEADERS install-pkgLTLIBRARIES | ||
748 | |||
749 | install-dvi: install-dvi-am | ||
750 | |||
751 | install-dvi-am: | ||
752 | |||
753 | install-exec-am: | ||
754 | |||
755 | install-html: install-html-am | ||
756 | |||
757 | install-html-am: | ||
758 | |||
759 | install-info: install-info-am | ||
760 | |||
761 | install-info-am: | ||
762 | |||
763 | install-man: | ||
764 | |||
765 | install-pdf: install-pdf-am | ||
766 | |||
767 | install-pdf-am: | ||
768 | |||
769 | install-ps: install-ps-am | ||
770 | |||
771 | install-ps-am: | ||
772 | |||
773 | installcheck-am: | ||
774 | |||
775 | maintainer-clean: maintainer-clean-am | ||
776 | -rm -rf ./$(DEPDIR) | ||
777 | -rm -f Makefile | ||
778 | maintainer-clean-am: distclean-am maintainer-clean-generic | ||
779 | |||
780 | mostlyclean: mostlyclean-am | ||
781 | |||
782 | mostlyclean-am: mostlyclean-compile mostlyclean-generic \ | ||
783 | mostlyclean-libtool | ||
784 | |||
785 | pdf: pdf-am | ||
786 | |||
787 | pdf-am: | ||
788 | |||
789 | ps: ps-am | ||
790 | |||
791 | ps-am: | ||
792 | |||
793 | uninstall-am: uninstall-includesHEADERS uninstall-pkgLTLIBRARIES | ||
794 | |||
795 | .MAKE: install-am install-strip | ||
796 | |||
797 | .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ | ||
798 | clean-libtool clean-noinstLTLIBRARIES clean-pkgLTLIBRARIES \ | ||
799 | ctags distclean distclean-compile distclean-generic \ | ||
800 | distclean-libtool distclean-tags distdir dvi dvi-am html \ | ||
801 | html-am info info-am install install-am install-data \ | ||
802 | install-data-am install-dvi install-dvi-am install-exec \ | ||
803 | install-exec-am install-html install-html-am \ | ||
804 | install-includesHEADERS install-info install-info-am \ | ||
805 | install-man install-pdf install-pdf-am install-pkgLTLIBRARIES \ | ||
806 | install-ps install-ps-am install-strip installcheck \ | ||
807 | installcheck-am installdirs maintainer-clean \ | ||
808 | maintainer-clean-generic mostlyclean mostlyclean-compile \ | ||
809 | mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ | ||
810 | tags uninstall uninstall-am uninstall-includesHEADERS \ | ||
811 | uninstall-pkgLTLIBRARIES | ||
812 | |||
813 | |||
814 | # Tell versions [3.59,3.63) of GNU make to not export all variables. | ||
815 | # Otherwise a system limit (for SysV at least) may be exceeded. | ||
816 | .NOEXPORT: | ||
diff --git a/libraries/evas/src/modules/engines/wayland_egl/evas_engine.c b/libraries/evas/src/modules/engines/wayland_egl/evas_engine.c new file mode 100644 index 0000000..d2a6a0d --- /dev/null +++ b/libraries/evas/src/modules/engines/wayland_egl/evas_engine.c | |||
@@ -0,0 +1,3174 @@ | |||
1 | #include "evas_common.h" /* Also includes international specific stuff */ | ||
2 | #include "evas_engine.h" | ||
3 | |||
4 | #ifdef HAVE_DLSYM | ||
5 | # include <dlfcn.h> /* dlopen,dlclose,etc */ | ||
6 | #else | ||
7 | # error gl_x11 should not get compiled if dlsym is not found on the system! | ||
8 | #endif | ||
9 | |||
10 | #define EVAS_GL_NO_GL_H_CHECK 1 | ||
11 | #include "Evas_GL.h" | ||
12 | |||
13 | typedef struct _Render_Engine Render_Engine; | ||
14 | typedef struct _Render_Engine_GL_Surface Render_Engine_GL_Surface; | ||
15 | typedef struct _Render_Engine_GL_Context Render_Engine_GL_Context; | ||
16 | typedef struct _Render_Engine_GL_Resource Render_Engine_GL_Resource; | ||
17 | typedef struct _Extension_Entry Extension_Entry; | ||
18 | |||
19 | struct _Render_Engine | ||
20 | { | ||
21 | Evas_GL_Wl_Window *win; | ||
22 | Evas_Engine_Info_Wayland_Egl *info; | ||
23 | Evas *evas; | ||
24 | Tilebuf *tb; | ||
25 | int end; | ||
26 | int w, h; | ||
27 | int vsync; | ||
28 | |||
29 | }; | ||
30 | |||
31 | struct _Render_Engine_GL_Surface | ||
32 | { | ||
33 | int initialized; | ||
34 | int fbo_attached; | ||
35 | int w, h; | ||
36 | int depth_bits; | ||
37 | int stencil_bits; | ||
38 | |||
39 | // Render target texture/buffers | ||
40 | GLuint rt_tex; | ||
41 | GLint rt_internal_fmt; | ||
42 | GLenum rt_fmt; | ||
43 | GLuint rb_depth; | ||
44 | GLenum rb_depth_fmt; | ||
45 | GLuint rb_stencil; | ||
46 | GLenum rb_stencil_fmt; | ||
47 | |||
48 | Render_Engine_GL_Context *current_ctx; | ||
49 | }; | ||
50 | |||
51 | struct _Render_Engine_GL_Context | ||
52 | { | ||
53 | int initialized; | ||
54 | EGLContext context; | ||
55 | GLuint context_fbo; | ||
56 | GLuint current_fbo; | ||
57 | |||
58 | Render_Engine_GL_Surface *current_sfc; | ||
59 | }; | ||
60 | |||
61 | // Resources used per thread | ||
62 | struct _Render_Engine_GL_Resource | ||
63 | { | ||
64 | // Resource context/surface per Thread in TLS for evasgl use | ||
65 | EGLContext context; | ||
66 | EGLSurface surface; | ||
67 | }; | ||
68 | |||
69 | // Extension Handling | ||
70 | struct _Extension_Entry | ||
71 | { | ||
72 | const char *name; | ||
73 | const char *real_name; | ||
74 | int supported; | ||
75 | }; | ||
76 | |||
77 | static int initted = 0; | ||
78 | static int gl_wins = 0; | ||
79 | static Render_Engine_GL_Context *current_evgl_ctx; | ||
80 | static Render_Engine *current_engine; | ||
81 | |||
82 | static char _gl_ext_string[1024]; | ||
83 | static char _evasgl_ext_string[1024]; | ||
84 | |||
85 | // Resource context/surface per Thread in TLS for evasgl use | ||
86 | static Eina_TLS resource_key; | ||
87 | static Eina_List *resource_list; | ||
88 | LK(resource_lock); | ||
89 | |||
90 | typedef void (*_eng_fn) (void); | ||
91 | typedef _eng_fn (*glsym_func_eng_fn) (); | ||
92 | typedef void (*glsym_func_void) (); | ||
93 | typedef void *(*glsym_func_void_ptr) (); | ||
94 | typedef int (*glsym_func_int) (); | ||
95 | typedef unsigned int (*glsym_func_uint) (); | ||
96 | typedef unsigned char (*glsym_func_uchar) (); | ||
97 | typedef unsigned char *(*glsym_func_uchar_ptr) (); | ||
98 | typedef const char *(*glsym_func_const_char_ptr) (); | ||
99 | |||
100 | #ifndef EGL_NATIVE_PIXMAP_KHR | ||
101 | # define EGL_NATIVE_PIXMAP_KHR 0x30b0 | ||
102 | #endif | ||
103 | _eng_fn (*glsym_eglGetProcAddress) (const char *a) = NULL; | ||
104 | void (*glsym_eglBindTexImage) (EGLDisplay a, EGLSurface b, int c) = NULL; | ||
105 | void (*glsym_eglReleaseTexImage) (EGLDisplay a, EGLSurface b, int c) = NULL; | ||
106 | void *(*glsym_eglCreateImage) (EGLDisplay a, EGLContext b, EGLenum c, EGLClientBuffer d, const int *e) = NULL; | ||
107 | void (*glsym_eglDestroyImage) (EGLDisplay a, void *b) = NULL; | ||
108 | void (*glsym_glEGLImageTargetTexture2DOES) (int a, void *b) = NULL; | ||
109 | void (*glsym_glEGLImageTargetRenderbufferStorageOES) (int a, void *b) = NULL; | ||
110 | void *(*glsym_eglMapImageSEC) (void *a, void *b) = NULL; | ||
111 | unsigned int (*glsym_eglUnmapImageSEC) (void *a, void *b) = NULL; | ||
112 | const char *(*glsym_eglQueryString) (EGLDisplay a, int name) = NULL; | ||
113 | |||
114 | unsigned int (*glsym_eglLockSurface) (EGLDisplay a, EGLSurface b, const int *attrib_list) = NULL; | ||
115 | unsigned int (*glsym_eglUnlockSurface) (EGLDisplay a, EGLSurface b) = NULL; | ||
116 | |||
117 | // GLES2 Extensions | ||
118 | void (*glsym_glGetProgramBinaryOES) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary) = NULL; | ||
119 | void (*glsym_glProgramBinaryOES) (GLuint program, GLenum binaryFormat, const void *binary, GLint length) = NULL; | ||
120 | void* (*glsym_glMapBufferOES) (GLenum target, GLenum access) = NULL; | ||
121 | unsigned char (*glsym_glUnmapBufferOES) (GLenum target) = NULL; | ||
122 | void (*glsym_glGetBufferPointervOES) (GLenum target, GLenum pname, void** params) = NULL; | ||
123 | void (*glsym_glTexImage3DOES) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void* pixels) = NULL; | ||
124 | void (*glsym_glTexSubImage3DOES) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void* pixels) = NULL; | ||
125 | void (*glsym_glCopyTexSubImage3DOES) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) = NULL; | ||
126 | void (*glsym_glCompressedTexImage3DOES) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void* data) = NULL; | ||
127 | void (*glsym_glCompressedTexSubImage3DOES) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void* data) = NULL; | ||
128 | void (*glsym_glFramebufferTexture3DOES) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) = NULL; | ||
129 | void (*glsym_glGetPerfMonitorGroupsAMD) (GLint* numGroups, GLsizei groupsSize, GLuint* groups) = NULL; | ||
130 | void (*glsym_glGetPerfMonitorCountersAMD) (GLuint group, GLint* numCounters, GLint* maxActiveCounters, GLsizei counterSize, GLuint* counters) = NULL; | ||
131 | void (*glsym_glGetPerfMonitorGroupStringAMD) (GLuint group, GLsizei bufSize, GLsizei* length, char* groupString) = NULL; | ||
132 | void (*glsym_glGetPerfMonitorCounterStringAMD) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei* length, char* counterString) = NULL; | ||
133 | void (*glsym_glGetPerfMonitorCounterInfoAMD) (GLuint group, GLuint counter, GLenum pname, void* data) = NULL; | ||
134 | void (*glsym_glGenPerfMonitorsAMD) (GLsizei n, GLuint* monitors) = NULL; | ||
135 | void (*glsym_glDeletePerfMonitorsAMD) (GLsizei n, GLuint* monitors) = NULL; | ||
136 | void (*glsym_glSelectPerfMonitorCountersAMD) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint* countersList) = NULL; | ||
137 | void (*glsym_glBeginPerfMonitorAMD) (GLuint monitor) = NULL; | ||
138 | void (*glsym_glEndPerfMonitorAMD) (GLuint monitor) = NULL; | ||
139 | void (*glsym_glGetPerfMonitorCounterDataAMD) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint* data, GLint* bytesWritten) = NULL; | ||
140 | void (*glsym_glDiscardFramebufferEXT) (GLenum target, GLsizei numAttachments, const GLenum* attachments) = NULL; | ||
141 | void (*glsym_glMultiDrawArraysEXT) (GLenum mode, GLint* first, GLsizei* count, GLsizei primcount) = NULL; | ||
142 | void (*glsym_glMultiDrawElementsEXT) (GLenum mode, const GLsizei* count, GLenum type, const GLvoid** indices, GLsizei primcount) = NULL; | ||
143 | void (*glsym_glDeleteFencesNV) (GLsizei n, const GLuint* fences) = NULL; | ||
144 | void (*glsym_glGenFencesNV) (GLsizei n, GLuint* fences) = NULL; | ||
145 | unsigned char (*glsym_glIsFenceNV) (GLuint fence) = NULL; | ||
146 | unsigned char (*glsym_glTestFenceNV) (GLuint fence) = NULL; | ||
147 | void (*glsym_glGetFenceivNV) (GLuint fence, GLenum pname, GLint* params) = NULL; | ||
148 | void (*glsym_glFinishFenceNV) (GLuint fence) = NULL; | ||
149 | void (*glsym_glSetFenceNV) (GLuint, GLenum) = NULL; | ||
150 | void (*glsym_glGetDriverControlsQCOM) (GLint* num, GLsizei size, GLuint* driverControls) = NULL; | ||
151 | void (*glsym_glGetDriverControlStringQCOM) (GLuint driverControl, GLsizei bufSize, GLsizei* length, char* driverControlString) = NULL; | ||
152 | void (*glsym_glEnableDriverControlQCOM) (GLuint driverControl) = NULL; | ||
153 | void (*glsym_glDisableDriverControlQCOM) (GLuint driverControl) = NULL; | ||
154 | void (*glsym_glExtGetTexturesQCOM) (GLuint* textures, GLint maxTextures, GLint* numTextures) = NULL; | ||
155 | void (*glsym_glExtGetBuffersQCOM) (GLuint* buffers, GLint maxBuffers, GLint* numBuffers) = NULL; | ||
156 | void (*glsym_glExtGetRenderbuffersQCOM) (GLuint* renderbuffers, GLint maxRenderbuffers, GLint* numRenderbuffers) = NULL; | ||
157 | void (*glsym_glExtGetFramebuffersQCOM) (GLuint* framebuffers, GLint maxFramebuffers, GLint* numFramebuffers) = NULL; | ||
158 | void (*glsym_glExtGetTexLevelParameterivQCOM) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint* params) = NULL; | ||
159 | void (*glsym_glExtTexObjectStateOverrideiQCOM) (GLenum target, GLenum pname, GLint param) = NULL; | ||
160 | void (*glsym_glExtGetTexSubImageQCOM) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void* texels) = NULL; | ||
161 | void (*glsym_glExtGetBufferPointervQCOM) (GLenum target, void** params) = NULL; | ||
162 | void (*glsym_glExtGetShadersQCOM) (GLuint* shaders, GLint maxShaders, GLint* numShaders) = NULL; | ||
163 | void (*glsym_glExtGetProgramsQCOM) (GLuint* programs, GLint maxPrograms, GLint* numPrograms) = NULL; | ||
164 | unsigned char (*glsym_glExtIsProgramBinaryQCOM) (GLuint program) = NULL; | ||
165 | void (*glsym_glExtGetProgramBinarySourceQCOM) (GLuint program, GLenum shadertype, char* source, GLint* length) = NULL; | ||
166 | |||
167 | |||
168 | //------ GLES 2.0 Extensions supported in EvasGL -----// | ||
169 | static Extension_Entry _gl_ext_entries[] = { | ||
170 | //--- Function Extensions ---// | ||
171 | { "GL_OES_get_program_binary", "get_program_binary", 0 }, | ||
172 | { "GL_OES_mapbuffer", "mapbuffer", 0 }, | ||
173 | { "GL_OES_texture_3D", "texture_3D", 0 }, | ||
174 | { "AMD_performance_monitor", "AMD_performance_monitor", 0 }, | ||
175 | { "GL_EXT_discard_framebuffer", "discard_framebuffer", 0 }, | ||
176 | { "GL_EXT_multi_draw_arrays", "multi_draw_arrays", 0 }, | ||
177 | { "GL_NV_fence", "NV_fence", 0 }, | ||
178 | { "GL_QCOM_driver_control", "QCOM_driver_control", 0 }, | ||
179 | { "GL_QCOM_extended_get", "QCOM_extended_get", 0 }, | ||
180 | { "GL_QCOM_extended_get2", "QCOM_extended_get2", 0 }, | ||
181 | |||
182 | //--- Define Extensions ---// | ||
183 | { "GL_OES_compressed_ETC1_RGB8_texture", "compressed_ETC1_RGB8_texture", 0 }, | ||
184 | { "GL_OES_compressed_paletted_texture", "compressed_paletted_texture", 0 }, | ||
185 | { "GL_OES_depth24", "depth24", 0 }, | ||
186 | { "GL_OES_depth32", "depth32", 0 }, | ||
187 | { "GL_OES_EvasGL_image", "EGL_image", 0 }, | ||
188 | { "GL_OES_packed_depth_stencil", "packed_depth_stencil", 0 }, | ||
189 | { "GL_OES_rgb8_rgba8", "rgb8_rgba8", 0 }, | ||
190 | { "GL_OES_standard_derivatives", "standard_derivatives", 0 }, | ||
191 | { "GL_OES_stencil1", "stencil1", 0 }, | ||
192 | { "GL_OES_stencil4", "stencil4", 0 }, | ||
193 | { "GL_OES_texture_float", "texture_float", 0 }, | ||
194 | { "GL_OES_texture_half_float", "texture_half_float", 0 }, | ||
195 | { "GL_OES_texture_half_float_linear", "texture_half_float_linear", 0 }, | ||
196 | { "GL_OES_texture_npot", "texture_npot", 0 }, | ||
197 | { "GL_OES_vertex_half_float", "vertex_half_float", 0 }, | ||
198 | { "GL_OES_vertex_type_10_10_10_2", "vertex_type_10_10_10_2", 0 }, | ||
199 | { "GL_AMD_compressed_3DC_texture", "compressed_3DC_texture", 0 }, | ||
200 | { "GL_AMD_compressed_ATC_texture", "compressed_ATC_texture", 0 }, | ||
201 | { "GL_AMD_program_binary_Z400", "program_binary_Z400", 0 }, | ||
202 | { "GL_EXT_blend_minmax", "blend_minmax", 0 }, | ||
203 | { "GL_EXT_read_format_bgra", "read_format_bgra", 0 }, | ||
204 | { "GL_EXT_texture_filter_anisotropic", "texture_filter_anisotrophic", 0 }, | ||
205 | { "GL_EXT_texture_format_BGRA8888", "texture_format_BGRA8888", 0 }, | ||
206 | { "GL_EXT_texture_type_2_10_10_10_REV", "texture_type_2_10_10_10_rev", 0 }, | ||
207 | { "GL_IMG_program_binary", "IMG_program_binary", 0 }, | ||
208 | { "GL_IMG_read_format", "IMG_read_format", 0 }, | ||
209 | { "GL_IMG_shader_binary", "IMG_shader_binary", 0 }, | ||
210 | { "GL_IMG_texture_compression_pvrtc", "IMG_texture_compression_pvrtc", 0 }, | ||
211 | { "GL_QCOM_perfmon_global_mode", "QCOM_perfmon_global_mode", 0 }, | ||
212 | { "GL_QCOM_writeonly_rendering", "QCOM_writeonly_rendering", 0 }, | ||
213 | { NULL, NULL, 0} | ||
214 | }; | ||
215 | |||
216 | //------ Extensions supported in EvasGL -----// | ||
217 | static Extension_Entry _evasgl_ext_entries[] = { | ||
218 | { "EvasGL_KHR_image", "EGL_KHR_image", 0 }, | ||
219 | { "EvasGL_KHR_vg_parent_image", "EGL_KHR_vg_parent_image", 0 }, | ||
220 | { "EvasGL_KHR_gl_texture_2D_image", "EGL_KHR_gl_texture_2D_image", 0 }, | ||
221 | { "EvasGL_KHR_gl_texture_cubemap_image", "EGL_KHR_gl_texture_cubemap_image", 0 }, | ||
222 | { "EvasGL_KHR_gl_texture_3D_image", "EGL_KHR_gl_texture_3D_image", 0 }, | ||
223 | { "EvasGL_KHR_gl_renderbuffer_image", "EGL_KHR_gl_renderbuffer_image", 0 }, | ||
224 | { NULL, NULL, 0 } | ||
225 | }; | ||
226 | |||
227 | static void | ||
228 | _sym_init(void) | ||
229 | { | ||
230 | static int done = 0; | ||
231 | |||
232 | if (done) return; | ||
233 | |||
234 | #define FINDSYM(dst, sym, typ) \ | ||
235 | if ((!dst) && (glsym_eglGetProcAddress)) dst = (typ)glsym_eglGetProcAddress(sym); \ | ||
236 | if (!dst) dst = (typ)dlsym(RTLD_DEFAULT, sym) | ||
237 | |||
238 | FINDSYM(glsym_eglGetProcAddress, "eglGetProcAddress", glsym_func_eng_fn); | ||
239 | FINDSYM(glsym_eglGetProcAddress, "eglGetProcAddressEXT", glsym_func_eng_fn); | ||
240 | FINDSYM(glsym_eglGetProcAddress, "eglGetProcAddressARB", glsym_func_eng_fn); | ||
241 | FINDSYM(glsym_eglGetProcAddress, "eglGetProcAddressKHR", glsym_func_eng_fn); | ||
242 | |||
243 | FINDSYM(glsym_eglBindTexImage, "eglBindTexImage", glsym_func_void); | ||
244 | FINDSYM(glsym_eglBindTexImage, "eglBindTexImageEXT", glsym_func_void); | ||
245 | FINDSYM(glsym_eglBindTexImage, "eglBindTexImageARB", glsym_func_void); | ||
246 | FINDSYM(glsym_eglBindTexImage, "eglBindTexImageKHR", glsym_func_void); | ||
247 | |||
248 | FINDSYM(glsym_eglReleaseTexImage, "eglReleaseTexImage", glsym_func_void); | ||
249 | FINDSYM(glsym_eglReleaseTexImage, "eglReleaseTexImageEXT", glsym_func_void); | ||
250 | FINDSYM(glsym_eglReleaseTexImage, "eglReleaseTexImageARB", glsym_func_void); | ||
251 | FINDSYM(glsym_eglReleaseTexImage, "eglReleaseTexImageKHR", glsym_func_void); | ||
252 | |||
253 | FINDSYM(glsym_eglCreateImage, "eglCreateImage", glsym_func_void_ptr); | ||
254 | FINDSYM(glsym_eglCreateImage, "eglCreateImageEXT", glsym_func_void_ptr); | ||
255 | FINDSYM(glsym_eglCreateImage, "eglCreateImageARB", glsym_func_void_ptr); | ||
256 | FINDSYM(glsym_eglCreateImage, "eglCreateImageKHR", glsym_func_void_ptr); | ||
257 | |||
258 | FINDSYM(glsym_eglDestroyImage, "eglDestroyImage", glsym_func_void); | ||
259 | FINDSYM(glsym_eglDestroyImage, "eglDestroyImageEXT", glsym_func_void); | ||
260 | FINDSYM(glsym_eglDestroyImage, "eglDestroyImageARB", glsym_func_void); | ||
261 | FINDSYM(glsym_eglDestroyImage, "eglDestroyImageKHR", glsym_func_void); | ||
262 | |||
263 | FINDSYM(glsym_glEGLImageTargetTexture2DOES, "glEGLImageTargetTexture2DOES", glsym_func_void); | ||
264 | |||
265 | FINDSYM(glsym_glEGLImageTargetRenderbufferStorageOES, "glEGLImageTargetRenderbufferStorageOES", glsym_func_void); | ||
266 | |||
267 | FINDSYM(glsym_eglMapImageSEC, "eglMapImageSEC", glsym_func_void_ptr); | ||
268 | FINDSYM(glsym_eglUnmapImageSEC, "eglUnmapImageSEC", glsym_func_uint); | ||
269 | |||
270 | FINDSYM(glsym_eglQueryString, "eglQueryString", glsym_func_const_char_ptr); | ||
271 | |||
272 | FINDSYM(glsym_eglLockSurface, "eglLockSurface", glsym_func_uint); | ||
273 | FINDSYM(glsym_eglLockSurface, "eglLockSurfaceEXT", glsym_func_uint); | ||
274 | FINDSYM(glsym_eglLockSurface, "eglLockSurfaceARB", glsym_func_uint); | ||
275 | FINDSYM(glsym_eglLockSurface, "eglLockSurfaceKHR", glsym_func_uint); | ||
276 | |||
277 | FINDSYM(glsym_eglUnlockSurface, "eglUnlockSurface", glsym_func_uint); | ||
278 | FINDSYM(glsym_eglUnlockSurface, "eglUnlockSurfaceEXT", glsym_func_uint); | ||
279 | FINDSYM(glsym_eglUnlockSurface, "eglUnlockSurfaceARB", glsym_func_uint); | ||
280 | FINDSYM(glsym_eglUnlockSurface, "eglUnlockSurfaceKHR", glsym_func_uint); | ||
281 | |||
282 | //----------- GLES 2.0 Extensions ------------// | ||
283 | // If the symbol's not found, they get set to NULL | ||
284 | // If one of the functions in the extension exists, the extension in supported | ||
285 | /* GL_OES_get_program_binary */ | ||
286 | FINDSYM(glsym_glGetProgramBinaryOES, "glGetProgramBinary", glsym_func_void); | ||
287 | FINDSYM(glsym_glGetProgramBinaryOES, "glGetProgramBinaryEXT", glsym_func_void); | ||
288 | FINDSYM(glsym_glGetProgramBinaryOES, "glGetProgramBinaryARB", glsym_func_void); | ||
289 | FINDSYM(glsym_glGetProgramBinaryOES, "glGetProgramBinaryOES", glsym_func_void); | ||
290 | |||
291 | FINDSYM(glsym_glProgramBinaryOES, "glProgramBinary", glsym_func_void); | ||
292 | FINDSYM(glsym_glProgramBinaryOES, "glProgramBinaryEXT", glsym_func_void); | ||
293 | FINDSYM(glsym_glProgramBinaryOES, "glProgramBinaryARB", glsym_func_void); | ||
294 | FINDSYM(glsym_glProgramBinaryOES, "glProgramBinaryOES", glsym_func_void); | ||
295 | |||
296 | // Check the first function to see if the extension is supported... | ||
297 | if (glsym_glGetProgramBinaryOES) _gl_ext_entries[0].supported = 1; | ||
298 | |||
299 | /* GL_OES_mapbuffer */ | ||
300 | FINDSYM(glsym_glMapBufferOES, "glMapBuffer", glsym_func_void_ptr); | ||
301 | FINDSYM(glsym_glMapBufferOES, "glMapBufferEXT", glsym_func_void_ptr); | ||
302 | FINDSYM(glsym_glMapBufferOES, "glMapBufferARB", glsym_func_void_ptr); | ||
303 | FINDSYM(glsym_glMapBufferOES, "glMapBufferOES", glsym_func_void_ptr); | ||
304 | |||
305 | FINDSYM(glsym_glUnmapBufferOES, "glUnmapBuffer", glsym_func_uchar); | ||
306 | FINDSYM(glsym_glUnmapBufferOES, "glUnmapBufferEXT", glsym_func_uchar); | ||
307 | FINDSYM(glsym_glUnmapBufferOES, "glUnmapBufferARB", glsym_func_uchar); | ||
308 | FINDSYM(glsym_glUnmapBufferOES, "glUnmapBufferOES", glsym_func_uchar); | ||
309 | |||
310 | FINDSYM(glsym_glGetBufferPointervOES, "glGetBufferPointerv", glsym_func_void); | ||
311 | FINDSYM(glsym_glGetBufferPointervOES, "glGetBufferPointervEXT", glsym_func_void); | ||
312 | FINDSYM(glsym_glGetBufferPointervOES, "glGetBufferPointervARB", glsym_func_void); | ||
313 | FINDSYM(glsym_glGetBufferPointervOES, "glGetBufferPointervOES", glsym_func_void); | ||
314 | |||
315 | if (glsym_glMapBufferOES) _gl_ext_entries[1].supported = 1; | ||
316 | |||
317 | /* GL_OES_texture_3D */ | ||
318 | FINDSYM(glsym_glTexImage3DOES, "glTexImage3D", glsym_func_void); | ||
319 | FINDSYM(glsym_glTexImage3DOES, "glTexImage3DEXT", glsym_func_void); | ||
320 | FINDSYM(glsym_glTexImage3DOES, "glTexImage3DARB", glsym_func_void); | ||
321 | FINDSYM(glsym_glTexImage3DOES, "glTexImage3DOES", glsym_func_void); | ||
322 | |||
323 | FINDSYM(glsym_glTexSubImage3DOES, "glTexSubImage3D", glsym_func_void); | ||
324 | FINDSYM(glsym_glTexSubImage3DOES, "glTexSubImage3DEXT", glsym_func_void); | ||
325 | FINDSYM(glsym_glTexSubImage3DOES, "glTexSubImage3DARB", glsym_func_void); | ||
326 | FINDSYM(glsym_glTexSubImage3DOES, "glTexSubImage3DOES", glsym_func_void); | ||
327 | |||
328 | FINDSYM(glsym_glCopyTexSubImage3DOES, "glCopyTexSubImage3D", glsym_func_void); | ||
329 | FINDSYM(glsym_glCopyTexSubImage3DOES, "glCopyTexSubImage3DARB", glsym_func_void); | ||
330 | FINDSYM(glsym_glCopyTexSubImage3DOES, "glCopyTexSubImage3DEXT", glsym_func_void); | ||
331 | FINDSYM(glsym_glCopyTexSubImage3DOES, "glCopyTexSubImage3DOES", glsym_func_void); | ||
332 | |||
333 | FINDSYM(glsym_glCompressedTexImage3DOES, "glCompressedTexImage3D", glsym_func_void); | ||
334 | FINDSYM(glsym_glCompressedTexImage3DOES, "glCompressedTexImage3DARB", glsym_func_void); | ||
335 | FINDSYM(glsym_glCompressedTexImage3DOES, "glCompressedTexImage3DEXT", glsym_func_void); | ||
336 | FINDSYM(glsym_glCompressedTexImage3DOES, "glCompressedTexImage3DOES", glsym_func_void); | ||
337 | |||
338 | FINDSYM(glsym_glCompressedTexSubImage3DOES, "glCompressedTexSubImage3D", glsym_func_void); | ||
339 | FINDSYM(glsym_glCompressedTexSubImage3DOES, "glCompressedTexSubImage3DARB", glsym_func_void); | ||
340 | FINDSYM(glsym_glCompressedTexSubImage3DOES, "glCompressedTexSubImage3DEXT", glsym_func_void); | ||
341 | FINDSYM(glsym_glCompressedTexSubImage3DOES, "glCompressedTexSubImage3DOES", glsym_func_void); | ||
342 | |||
343 | FINDSYM(glsym_glFramebufferTexture3DOES, "glFramebufferTexture3D", glsym_func_void); | ||
344 | FINDSYM(glsym_glFramebufferTexture3DOES, "glFramebufferTexture3DARB", glsym_func_void); | ||
345 | FINDSYM(glsym_glFramebufferTexture3DOES, "glFramebufferTexture3DEXT", glsym_func_void); | ||
346 | FINDSYM(glsym_glFramebufferTexture3DOES, "glFramebufferTexture3DOES", glsym_func_void); | ||
347 | |||
348 | if (glsym_glTexSubImage3DOES) _gl_ext_entries[2].supported = 1; | ||
349 | |||
350 | /* AMD_performance_monitor */ | ||
351 | FINDSYM(glsym_glGetPerfMonitorGroupsAMD, "glGetPerfMonitorGroupsAMD", glsym_func_void); | ||
352 | FINDSYM(glsym_glGetPerfMonitorCountersAMD, "glGetPerfMonitorCountersAMD", glsym_func_void); | ||
353 | FINDSYM(glsym_glGetPerfMonitorGroupStringAMD, "glGetPerfMonitorGroupStringAMD", glsym_func_void); | ||
354 | FINDSYM(glsym_glGetPerfMonitorCounterStringAMD, "glGetPerfMonitorCounterStringAMD", glsym_func_void); | ||
355 | FINDSYM(glsym_glGetPerfMonitorCounterInfoAMD, "glGetPerfMonitorCounterInfoAMD", glsym_func_void); | ||
356 | FINDSYM(glsym_glGenPerfMonitorsAMD, "glGenPerfMonitorsAMD", glsym_func_void); | ||
357 | FINDSYM(glsym_glDeletePerfMonitorsAMD, "glDeletePerfMonitorsAMD", glsym_func_void); | ||
358 | FINDSYM(glsym_glSelectPerfMonitorCountersAMD, "glSelectPerfMonitorCountersAMD", glsym_func_void); | ||
359 | FINDSYM(glsym_glBeginPerfMonitorAMD, "glBeginPerfMonitorAMD", glsym_func_void); | ||
360 | FINDSYM(glsym_glEndPerfMonitorAMD, "glEndPerfMonitorAMD", glsym_func_void); | ||
361 | FINDSYM(glsym_glGetPerfMonitorCounterDataAMD, "glGetPerfMonitorCounterDataAMD", glsym_func_void); | ||
362 | |||
363 | if (glsym_glGetPerfMonitorGroupsAMD) _gl_ext_entries[3].supported = 1; | ||
364 | |||
365 | /* GL_EXT_discard_framebuffer */ | ||
366 | FINDSYM(glsym_glDiscardFramebufferEXT, "glDiscardFramebuffer", glsym_func_void); | ||
367 | FINDSYM(glsym_glDiscardFramebufferEXT, "glDiscardFramebufferARB", glsym_func_void); | ||
368 | FINDSYM(glsym_glDiscardFramebufferEXT, "glDiscardFramebufferEXT", glsym_func_void); | ||
369 | |||
370 | if (glsym_glDiscardFramebufferEXT) _gl_ext_entries[4].supported = 1; | ||
371 | |||
372 | /* GL_EXT_multi_draw_arrays */ | ||
373 | FINDSYM(glsym_glMultiDrawArraysEXT, "glMultiDrawArrays", glsym_func_void); | ||
374 | FINDSYM(glsym_glMultiDrawArraysEXT, "glMultiDrawArraysARB", glsym_func_void); | ||
375 | FINDSYM(glsym_glMultiDrawArraysEXT, "glMultiDrawArraysEXT", glsym_func_void); | ||
376 | |||
377 | FINDSYM(glsym_glMultiDrawElementsEXT, "glMultiDrawElements", glsym_func_void); | ||
378 | FINDSYM(glsym_glMultiDrawElementsEXT, "glMultiDrawElementsARB", glsym_func_void); | ||
379 | FINDSYM(glsym_glMultiDrawElementsEXT, "glMultiDrawElementsEXT", glsym_func_void); | ||
380 | |||
381 | if (glsym_glMultiDrawArraysEXT) _gl_ext_entries[5].supported = 1; | ||
382 | |||
383 | /* GL_NV_fence */ | ||
384 | FINDSYM(glsym_glDeleteFencesNV, "glDeleteFencesNV", glsym_func_void); | ||
385 | FINDSYM(glsym_glGenFencesNV, "glGenFencesNV", glsym_func_void); | ||
386 | FINDSYM(glsym_glIsFenceNV, "glIsFenceNV", glsym_func_uchar); | ||
387 | FINDSYM(glsym_glTestFenceNV, "glTestFenceNV", glsym_func_uchar); | ||
388 | FINDSYM(glsym_glGetFenceivNV, "glGetFenceivNV", glsym_func_void); | ||
389 | FINDSYM(glsym_glFinishFenceNV, "glFinishFenceNV", glsym_func_void); | ||
390 | FINDSYM(glsym_glSetFenceNV, "glSetFenceNV", glsym_func_void); | ||
391 | |||
392 | if (glsym_glDeleteFencesNV) _gl_ext_entries[6].supported = 1; | ||
393 | |||
394 | /* GL_QCOM_driver_control */ | ||
395 | FINDSYM(glsym_glGetDriverControlsQCOM, "glGetDriverControlsQCOM", glsym_func_void); | ||
396 | FINDSYM(glsym_glGetDriverControlStringQCOM, "glGetDriverControlStringQCOM", glsym_func_void); | ||
397 | FINDSYM(glsym_glEnableDriverControlQCOM, "glEnableDriverControlQCOM", glsym_func_void); | ||
398 | FINDSYM(glsym_glDisableDriverControlQCOM, "glDisableDriverControlQCOM", glsym_func_void); | ||
399 | |||
400 | if (glsym_glGetDriverControlsQCOM) _gl_ext_entries[7].supported = 1; | ||
401 | |||
402 | /* GL_QCOM_extended_get */ | ||
403 | FINDSYM(glsym_glExtGetTexturesQCOM, "glExtGetTexturesQCOM", glsym_func_void); | ||
404 | FINDSYM(glsym_glExtGetBuffersQCOM, "glExtGetBuffersQCOM", glsym_func_void); | ||
405 | FINDSYM(glsym_glExtGetRenderbuffersQCOM, "glExtGetRenderbuffersQCOM", glsym_func_void); | ||
406 | FINDSYM(glsym_glExtGetFramebuffersQCOM, "glExtGetFramebuffersQCOM", glsym_func_void); | ||
407 | FINDSYM(glsym_glExtGetTexLevelParameterivQCOM, "glExtGetTexLevelParameterivQCOM", glsym_func_void); | ||
408 | FINDSYM(glsym_glExtTexObjectStateOverrideiQCOM, "glExtTexObjectStateOverrideiQCOM", glsym_func_void); | ||
409 | FINDSYM(glsym_glExtGetTexSubImageQCOM, "glExtGetTexSubImageQCOM", glsym_func_void); | ||
410 | FINDSYM(glsym_glExtGetBufferPointervQCOM, "glExtGetBufferPointervQCOM", glsym_func_void); | ||
411 | |||
412 | if (glsym_glExtGetTexturesQCOM) _gl_ext_entries[8].supported = 1; | ||
413 | |||
414 | /* GL_QCOM_extended_get2 */ | ||
415 | FINDSYM(glsym_glExtGetShadersQCOM, "glExtGetShadersQCOM", glsym_func_void); | ||
416 | FINDSYM(glsym_glExtGetProgramsQCOM, "glExtGetProgramsQCOM", glsym_func_void); | ||
417 | FINDSYM(glsym_glExtIsProgramBinaryQCOM, "glExtIsProgramBinaryQCOM", glsym_func_uchar); | ||
418 | FINDSYM(glsym_glExtGetProgramBinarySourceQCOM, "glExtGetProgramBinarySourceQCOM", glsym_func_void); | ||
419 | |||
420 | if (glsym_glExtGetShadersQCOM) _gl_ext_entries[9].supported = 1; | ||
421 | } | ||
422 | |||
423 | static void | ||
424 | _extensions_init(Render_Engine *re) | ||
425 | { | ||
426 | int i; | ||
427 | const char *glexts, *evasglexts; | ||
428 | |||
429 | memset(_gl_ext_string, 0, 1024); | ||
430 | memset(_evasgl_ext_string, 0, 1024); | ||
431 | |||
432 | // GLES 2.0 Extensions | ||
433 | glexts = (const char*)glGetString(GL_EXTENSIONS); | ||
434 | |||
435 | DBG("--------GLES 2.0 Extensions--------"); | ||
436 | for (i = 0; _gl_ext_entries[i].name != NULL; i++) | ||
437 | { | ||
438 | if ( (strstr(glexts, _gl_ext_entries[i].name) != NULL) || | ||
439 | (strstr(glexts, _gl_ext_entries[i].real_name) != NULL) ) | ||
440 | { | ||
441 | _gl_ext_entries[i].supported = 1; | ||
442 | strcat(_gl_ext_string, _gl_ext_entries[i].name); | ||
443 | strcat(_gl_ext_string, " "); | ||
444 | DBG("\t%s", _gl_ext_entries[i].name); | ||
445 | } | ||
446 | |||
447 | } | ||
448 | DBG(" "); | ||
449 | |||
450 | // EGL Extensions | ||
451 | evasglexts = glsym_eglQueryString(re->win->egl_disp, EGL_EXTENSIONS); | ||
452 | |||
453 | DBG("--------EvasGL Extensions----------"); | ||
454 | for (i = 0; _evasgl_ext_entries[i].name != NULL; i++) | ||
455 | { | ||
456 | if ( (strstr(evasglexts, _evasgl_ext_entries[i].name) != NULL) || | ||
457 | (strstr(evasglexts, _evasgl_ext_entries[i].real_name) != NULL) ) | ||
458 | { | ||
459 | _evasgl_ext_entries[i].supported = 1; | ||
460 | strcat(_evasgl_ext_string, _evasgl_ext_entries[i].name); | ||
461 | strcat(_evasgl_ext_string, " "); | ||
462 | DBG("\t%s", _evasgl_ext_entries[i].name); | ||
463 | } | ||
464 | } | ||
465 | DBG(" "); | ||
466 | } | ||
467 | |||
468 | int _evas_engine_wl_egl_log_dom = -1; | ||
469 | |||
470 | /* function tables - filled in later (func and parent func) */ | ||
471 | static Evas_Func func, pfunc; | ||
472 | |||
473 | /* Function table for GL APIs */ | ||
474 | static Evas_GL_API gl_funcs; | ||
475 | |||
476 | static void * | ||
477 | eng_info(Evas *e) | ||
478 | { | ||
479 | Evas_Engine_Info_Wayland_Egl *info; | ||
480 | |||
481 | info = calloc(1, sizeof(Evas_Engine_Info_Wayland_Egl)); | ||
482 | info->magic.magic = rand(); | ||
483 | info->func.best_depth_get = eng_best_depth_get; | ||
484 | info->render_mode = EVAS_RENDER_MODE_BLOCKING; | ||
485 | return info; | ||
486 | e = NULL; | ||
487 | } | ||
488 | |||
489 | static void | ||
490 | eng_info_free(Evas *e __UNUSED__, void *info) | ||
491 | { | ||
492 | Evas_Engine_Info_Wayland_Egl *in; | ||
493 | // dont free! why bother? its not worth it | ||
494 | // eina_log_domain_unregister(_evas_engine_GL_X11_log_dom); | ||
495 | in = (Evas_Engine_Info_Wayland_Egl *)info; | ||
496 | free(in); | ||
497 | } | ||
498 | |||
499 | static int | ||
500 | _re_wincheck(Render_Engine *re) | ||
501 | { | ||
502 | if (!re) return 0; | ||
503 | if (re->win->surf) return 1; | ||
504 | eng_window_resurf(re->win); | ||
505 | if (!re->win->surf) | ||
506 | { | ||
507 | ERR("GL engine can't re-create window surface!"); | ||
508 | } | ||
509 | return 0; | ||
510 | } | ||
511 | |||
512 | static void | ||
513 | _re_winfree(Render_Engine *re) | ||
514 | { | ||
515 | if (!re->win->surf) return; | ||
516 | eng_window_unsurf(re->win); | ||
517 | } | ||
518 | |||
519 | static Render_Engine_GL_Resource * | ||
520 | _create_internal_glue_resources(void *data) | ||
521 | { | ||
522 | Render_Engine *re; | ||
523 | Render_Engine_GL_Resource *rsc; | ||
524 | |||
525 | if (!(re = (Render_Engine *)data)) return NULL; | ||
526 | |||
527 | rsc = calloc(1, sizeof(Render_Engine_GL_Resource)); | ||
528 | if (!rsc) return NULL; | ||
529 | |||
530 | // EGL | ||
531 | int context_attrs[3]; | ||
532 | context_attrs[0] = EGL_CONTEXT_CLIENT_VERSION; | ||
533 | context_attrs[1] = 2; | ||
534 | context_attrs[2] = EGL_NONE; | ||
535 | |||
536 | // Create resource surface for EGL | ||
537 | rsc->surface = | ||
538 | eglCreateWindowSurface(re->win->egl_disp, re->win->egl_config, | ||
539 | (EGLNativeWindowType)re->win->win, NULL); | ||
540 | if (!rsc->surface) | ||
541 | { | ||
542 | ERR("Creating internal resource surface failed."); | ||
543 | free(rsc); | ||
544 | return NULL; | ||
545 | } | ||
546 | |||
547 | // Create a resource context for EGL | ||
548 | rsc->context = | ||
549 | eglCreateContext(re->win->egl_disp, re->win->egl_config, | ||
550 | re->win->egl_context[0], context_attrs); | ||
551 | if (!rsc->context) | ||
552 | { | ||
553 | ERR("Internal Resource Context Creations Failed."); | ||
554 | free(rsc); | ||
555 | return NULL; | ||
556 | } | ||
557 | |||
558 | // Add to the resource resource list for cleanup | ||
559 | LKL(resource_lock); | ||
560 | resource_list = eina_list_prepend(resource_list, rsc); | ||
561 | LKU(resource_lock); | ||
562 | |||
563 | // Set the resource in TLS | ||
564 | if (eina_tls_set(resource_key, (void*)rsc) == EINA_FALSE) | ||
565 | { | ||
566 | ERR("Failed setting TLS Resource"); | ||
567 | free(rsc); | ||
568 | return NULL; | ||
569 | } | ||
570 | |||
571 | return rsc; | ||
572 | } | ||
573 | |||
574 | static int | ||
575 | _destroy_internal_glue_resources(void *data) | ||
576 | { | ||
577 | Render_Engine *re = (Render_Engine *)data; | ||
578 | Eina_List *l; | ||
579 | Render_Engine_GL_Resource *rsc; | ||
580 | |||
581 | // EGL | ||
582 | // Delete the Resources | ||
583 | LKL(resource_lock); | ||
584 | EINA_LIST_FOREACH(resource_list, l, rsc) | ||
585 | { | ||
586 | if (rsc->surface) eglDestroySurface(re->win->egl_disp, rsc->surface); | ||
587 | if (rsc->context) eglDestroyContext(re->win->egl_disp, rsc->context); | ||
588 | free(rsc); | ||
589 | } | ||
590 | eina_list_free(resource_list); | ||
591 | LKU(resource_lock); | ||
592 | |||
593 | // Destroy TLS | ||
594 | eina_tls_free(resource_key); | ||
595 | |||
596 | return 1; | ||
597 | } | ||
598 | |||
599 | static int | ||
600 | eng_setup(Evas *e, void *in) | ||
601 | { | ||
602 | Render_Engine *re; | ||
603 | Evas_Engine_Info_Wayland_Egl *info; | ||
604 | |||
605 | info = (Evas_Engine_Info_Wayland_Egl *)in; | ||
606 | if (!e->engine.data.output) | ||
607 | { | ||
608 | re = calloc(1, sizeof(Render_Engine)); | ||
609 | if (!re) return 0; | ||
610 | re->info = info; | ||
611 | re->evas = e; | ||
612 | e->engine.data.output = re; | ||
613 | re->w = e->output.w; | ||
614 | re->h = e->output.h; | ||
615 | |||
616 | re->win = eng_window_new(re->info->info.display, | ||
617 | re->info->info.surface, | ||
618 | re->info->info.screen, | ||
619 | re->info->info.depth, re->w, re->h, | ||
620 | re->info->indirect, | ||
621 | re->info->info.destination_alpha, | ||
622 | re->info->info.rotation); | ||
623 | if (!re->win) | ||
624 | { | ||
625 | free(re); | ||
626 | e->engine.data.output = NULL; | ||
627 | return 0; | ||
628 | } | ||
629 | |||
630 | gl_wins++; | ||
631 | if (!initted) | ||
632 | { | ||
633 | evas_common_cpu_init(); | ||
634 | evas_common_blend_init(); | ||
635 | evas_common_image_init(); | ||
636 | evas_common_convert_init(); | ||
637 | evas_common_scale_init(); | ||
638 | evas_common_rectangle_init(); | ||
639 | evas_common_polygon_init(); | ||
640 | evas_common_line_init(); | ||
641 | evas_common_font_init(); | ||
642 | evas_common_draw_init(); | ||
643 | evas_common_tilebuf_init(); | ||
644 | |||
645 | // Initialize TLS | ||
646 | if (eina_tls_new(&resource_key) == EINA_FALSE) | ||
647 | ERR("Error creating tls key"); | ||
648 | |||
649 | DBG("TLS KEY create... %d", resource_key); | ||
650 | |||
651 | initted = 1; | ||
652 | } | ||
653 | } | ||
654 | else | ||
655 | { | ||
656 | if (!(re = e->engine.data.output)) return 0; | ||
657 | if (_re_wincheck(re)) | ||
658 | { | ||
659 | if ((re->info->info.display != re->win->disp) || | ||
660 | (re->info->info.surface != re->win->surface) || | ||
661 | (re->info->info.screen != re->win->screen) || | ||
662 | (re->info->info.depth != re->win->depth) || | ||
663 | (re->info->info.destination_alpha != re->win->alpha) || | ||
664 | (re->info->info.rotation != re->win->rot)) | ||
665 | { | ||
666 | int inc = 0; | ||
667 | |||
668 | /* if we already have a window surface, check for NULL input surface. | ||
669 | * this will mean we are hiding the window and should destroy | ||
670 | * things properly */ | ||
671 | if ((re->win->surface) && (re->info->info.surface = NULL)) | ||
672 | { | ||
673 | if (re->win) | ||
674 | { | ||
675 | eng_window_free(re->win); | ||
676 | gl_wins--; | ||
677 | } | ||
678 | free(re); | ||
679 | e->engine.data.output = NULL; | ||
680 | return 0; | ||
681 | } | ||
682 | |||
683 | if (re->win) | ||
684 | { | ||
685 | re->win->gl_context->references++; | ||
686 | eng_window_free(re->win); | ||
687 | inc = 1; | ||
688 | gl_wins--; | ||
689 | } | ||
690 | re->w = e->output.w; | ||
691 | re->h = e->output.h; | ||
692 | re->win = eng_window_new(re->info->info.display, | ||
693 | re->info->info.surface, | ||
694 | re->info->info.screen, | ||
695 | re->info->info.depth, | ||
696 | re->w, re->h, | ||
697 | re->info->indirect, | ||
698 | re->info->info.destination_alpha, | ||
699 | re->info->info.rotation); | ||
700 | eng_window_use(re->win); | ||
701 | if (re->win) gl_wins++; | ||
702 | if ((re->win) && (inc)) | ||
703 | re->win->gl_context->references--; | ||
704 | } | ||
705 | else if ((re->win->w != e->output.w) || | ||
706 | (re->win->h != e->output.h)) | ||
707 | { | ||
708 | re->w = e->output.w; | ||
709 | re->h = e->output.h; | ||
710 | re->win->w = e->output.w; | ||
711 | re->win->h = e->output.h; | ||
712 | eng_window_use(re->win); | ||
713 | evas_gl_common_context_resize(re->win->gl_context, | ||
714 | re->win->w, re->win->h, | ||
715 | re->win->rot); | ||
716 | } | ||
717 | } | ||
718 | } | ||
719 | |||
720 | if (!re->win) | ||
721 | { | ||
722 | free(re); | ||
723 | e->engine.data.output = NULL; | ||
724 | return 0; | ||
725 | } | ||
726 | |||
727 | if (!e->engine.data.output) | ||
728 | { | ||
729 | if (re->win) | ||
730 | { | ||
731 | eng_window_free(re->win); | ||
732 | gl_wins--; | ||
733 | } | ||
734 | free(re); | ||
735 | e->engine.data.output = NULL; | ||
736 | return 0; | ||
737 | } | ||
738 | re->tb = evas_common_tilebuf_new(re->win->w, re->win->h); | ||
739 | if (!re->tb) | ||
740 | { | ||
741 | if (re->win) | ||
742 | { | ||
743 | eng_window_free(re->win); | ||
744 | gl_wins--; | ||
745 | } | ||
746 | free(re); | ||
747 | e->engine.data.output = NULL; | ||
748 | return 0; | ||
749 | } | ||
750 | evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE); | ||
751 | |||
752 | if (!e->engine.data.context) | ||
753 | { | ||
754 | e->engine.data.context = | ||
755 | e->engine.func->context_new(e->engine.data.output); | ||
756 | } | ||
757 | |||
758 | eng_window_use(re->win); | ||
759 | |||
760 | re->vsync = 0; | ||
761 | _sym_init(); | ||
762 | _extensions_init(re); | ||
763 | |||
764 | // This is used in extensions. Not pretty but can't get display otherwise. | ||
765 | current_engine = re; | ||
766 | |||
767 | return 1; | ||
768 | } | ||
769 | |||
770 | static void | ||
771 | eng_output_free(void *data) | ||
772 | { | ||
773 | Render_Engine *re; | ||
774 | |||
775 | re = (Render_Engine *)data; | ||
776 | |||
777 | if (re) | ||
778 | { | ||
779 | #if 0 | ||
780 | // Destroy the resource surface | ||
781 | // Only required for EGL case | ||
782 | if (re->surface) | ||
783 | eglDestroySurface(re->win->egl_disp, re->surface); | ||
784 | |||
785 | // Destroy the resource context | ||
786 | _destroy_internal_context(re, context); | ||
787 | #endif | ||
788 | if (re->win) | ||
789 | { | ||
790 | if ((initted == 1) && (gl_wins == 1)) | ||
791 | _destroy_internal_glue_resources(re); | ||
792 | eng_window_free(re->win); | ||
793 | gl_wins--; | ||
794 | } | ||
795 | evas_common_tilebuf_free(re->tb); | ||
796 | free(re); | ||
797 | } | ||
798 | if ((initted == 1) && (gl_wins == 0)) | ||
799 | { | ||
800 | evas_common_image_shutdown(); | ||
801 | evas_common_font_shutdown(); | ||
802 | initted = 0; | ||
803 | } | ||
804 | } | ||
805 | |||
806 | static void | ||
807 | eng_output_resize(void *data, int w, int h) | ||
808 | { | ||
809 | Render_Engine *re; | ||
810 | |||
811 | re = (Render_Engine *)data; | ||
812 | re->win->w = w; | ||
813 | re->win->h = h; | ||
814 | eng_window_use(re->win); | ||
815 | |||
816 | if (re->win->win) | ||
817 | wl_egl_window_resize(re->win->win, w, h, 0, 0); | ||
818 | |||
819 | evas_gl_common_context_resize(re->win->gl_context, w, h, re->win->rot); | ||
820 | evas_common_tilebuf_free(re->tb); | ||
821 | re->tb = evas_common_tilebuf_new(w, h); | ||
822 | if (re->tb) | ||
823 | evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE); | ||
824 | } | ||
825 | |||
826 | static void | ||
827 | eng_output_tile_size_set(void *data, int w, int h) | ||
828 | { | ||
829 | Render_Engine *re; | ||
830 | |||
831 | re = (Render_Engine *)data; | ||
832 | evas_common_tilebuf_set_tile_size(re->tb, w, h); | ||
833 | } | ||
834 | |||
835 | static void | ||
836 | eng_output_redraws_rect_add(void *data, int x, int y, int w, int h) | ||
837 | { | ||
838 | Render_Engine *re; | ||
839 | |||
840 | re = (Render_Engine *)data; | ||
841 | eng_window_use(re->win); | ||
842 | evas_gl_common_context_resize(re->win->gl_context, re->win->w, re->win->h, re->win->rot); | ||
843 | evas_common_tilebuf_add_redraw(re->tb, x, y, w, h); | ||
844 | |||
845 | RECTS_CLIP_TO_RECT(x, y, w, h, 0, 0, re->win->w, re->win->h); | ||
846 | if ((w <= 0) || (h <= 0)) return; | ||
847 | if (!re->win->draw.redraw) | ||
848 | { | ||
849 | #if 1 | ||
850 | re->win->draw.x1 = x; | ||
851 | re->win->draw.y1 = y; | ||
852 | re->win->draw.x2 = x + w - 1; | ||
853 | re->win->draw.y2 = y + h - 1; | ||
854 | #else | ||
855 | re->win->draw.x1 = 0; | ||
856 | re->win->draw.y1 = 0; | ||
857 | re->win->draw.x2 = re->win->w - 1; | ||
858 | re->win->draw.y2 = re->win->h - 1; | ||
859 | #endif | ||
860 | } | ||
861 | else | ||
862 | { | ||
863 | if (x < re->win->draw.x1) re->win->draw.x1 = x; | ||
864 | if (y < re->win->draw.y1) re->win->draw.y1 = y; | ||
865 | if ((x + w - 1) > re->win->draw.x2) re->win->draw.x2 = x + w - 1; | ||
866 | if ((y + h - 1) > re->win->draw.y2) re->win->draw.y2 = y + h - 1; | ||
867 | } | ||
868 | re->win->draw.redraw = 1; | ||
869 | } | ||
870 | |||
871 | static void | ||
872 | eng_output_redraws_rect_del(void *data, int x, int y, int w, int h) | ||
873 | { | ||
874 | Render_Engine *re; | ||
875 | |||
876 | re = (Render_Engine *)data; | ||
877 | evas_common_tilebuf_del_redraw(re->tb, x, y, w, h); | ||
878 | } | ||
879 | |||
880 | static void | ||
881 | eng_output_redraws_clear(void *data) | ||
882 | { | ||
883 | Render_Engine *re; | ||
884 | |||
885 | re = (Render_Engine *)data; | ||
886 | evas_common_tilebuf_clear(re->tb); | ||
887 | /* re->win->draw.redraw = 0;*/ | ||
888 | // INF("GL: finish update cycle!"); | ||
889 | } | ||
890 | |||
891 | /* vsync games - not for now though */ | ||
892 | #define VSYNC_TO_SCREEN 1 | ||
893 | |||
894 | static void * | ||
895 | eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch) | ||
896 | { | ||
897 | Render_Engine *re; | ||
898 | Tilebuf_Rect *rects; | ||
899 | |||
900 | re = (Render_Engine *)data; | ||
901 | /* get the upate rect surface - return engine data as dummy */ | ||
902 | rects = evas_common_tilebuf_get_render_rects(re->tb); | ||
903 | if (rects) | ||
904 | { | ||
905 | evas_common_tilebuf_free_render_rects(rects); | ||
906 | evas_common_tilebuf_clear(re->tb); | ||
907 | eng_window_use(re->win); | ||
908 | if (!_re_wincheck(re)) return NULL; | ||
909 | evas_gl_common_context_flush(re->win->gl_context); | ||
910 | evas_gl_common_context_newframe(re->win->gl_context); | ||
911 | if (x) *x = 0; | ||
912 | if (y) *y = 0; | ||
913 | if (w) *w = re->win->w; | ||
914 | if (h) *h = re->win->h; | ||
915 | if (cx) *cx = 0; | ||
916 | if (cy) *cy = 0; | ||
917 | if (cw) *cw = re->win->w; | ||
918 | if (ch) *ch = re->win->h; | ||
919 | return re->win->gl_context->def_surface; | ||
920 | } | ||
921 | return NULL; | ||
922 | } | ||
923 | |||
924 | //#define FRAMECOUNT 1 | ||
925 | |||
926 | #ifdef FRAMECOUNT | ||
927 | static double | ||
928 | get_time(void) | ||
929 | { | ||
930 | struct timeval timev; | ||
931 | |||
932 | gettimeofday(&timev, NULL); | ||
933 | return (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000); | ||
934 | } | ||
935 | #endif | ||
936 | |||
937 | static int safe_native = -1; | ||
938 | |||
939 | static void | ||
940 | eng_output_redraws_next_update_push(void *data, void *surface __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__) | ||
941 | { | ||
942 | Render_Engine *re; | ||
943 | #ifdef FRAMECOUNT | ||
944 | static double pt = 0.0; | ||
945 | double ta, tb; | ||
946 | #endif | ||
947 | |||
948 | re = (Render_Engine *)data; | ||
949 | /* put back update surface.. in this case just unflag redraw */ | ||
950 | if (!_re_wincheck(re)) return; | ||
951 | re->win->draw.redraw = 0; | ||
952 | re->win->draw.drew = 1; | ||
953 | evas_gl_common_context_flush(re->win->gl_context); | ||
954 | if (safe_native == -1) | ||
955 | { | ||
956 | const char *s; | ||
957 | |||
958 | s = getenv("EVAS_GL_SAFE_NATIVE"); | ||
959 | safe_native = 0; | ||
960 | if (s) | ||
961 | safe_native = atoi(s); | ||
962 | else | ||
963 | { | ||
964 | s = (const char *)glGetString(GL_RENDERER); | ||
965 | if (s) | ||
966 | { | ||
967 | if (strstr(s, "PowerVR SGX 540") || strstr(s, "Mali-400 MP")) | ||
968 | safe_native = 1; | ||
969 | } | ||
970 | } | ||
971 | } | ||
972 | // this is needed to make sure all previous rendering is flushed to | ||
973 | // buffers/surfaces | ||
974 | # ifdef FRAMECOUNT | ||
975 | double t0 = get_time(); | ||
976 | ta = t0 - pt; | ||
977 | pt = t0; | ||
978 | # endif | ||
979 | // previous rendering should be done and swapped | ||
980 | if (!safe_native) eglWaitNative(EGL_CORE_NATIVE_ENGINE); | ||
981 | # ifdef FRAMECOUNT | ||
982 | double t1 = get_time(); | ||
983 | tb = t1 - t0; | ||
984 | printf("... %1.5f -> %1.5f | ", ta, tb); | ||
985 | # endif | ||
986 | if (eglGetError() != EGL_SUCCESS) | ||
987 | { | ||
988 | printf("Error: eglWaitNative(EGL_CORE_NATIVE_ENGINE) fail.\n"); | ||
989 | } | ||
990 | } | ||
991 | |||
992 | static void | ||
993 | eng_output_flush(void *data) | ||
994 | { | ||
995 | Render_Engine *re; | ||
996 | |||
997 | re = (Render_Engine *)data; | ||
998 | if (!_re_wincheck(re)) return; | ||
999 | if (!re->win->draw.drew) return; | ||
1000 | //x// printf("frame -> flush\n"); | ||
1001 | re->win->draw.drew = 0; | ||
1002 | eng_window_use(re->win); | ||
1003 | |||
1004 | # ifdef FRAMECOUNT | ||
1005 | double t0 = get_time(); | ||
1006 | # endif | ||
1007 | |||
1008 | if (!re->vsync) | ||
1009 | { | ||
1010 | if (re->info->vsync) eglSwapInterval(re->win->egl_disp, 1); | ||
1011 | else eglSwapInterval(re->win->egl_disp, 0); | ||
1012 | re->vsync = 1; | ||
1013 | } | ||
1014 | |||
1015 | if (re->info->callback.pre_swap) | ||
1016 | re->info->callback.pre_swap(re->info->callback.data, re->evas); | ||
1017 | |||
1018 | eglSwapBuffers(re->win->egl_disp, re->win->egl_surface[0]); | ||
1019 | if (!safe_native) eglWaitGL(); | ||
1020 | |||
1021 | if (re->info->callback.post_swap) | ||
1022 | re->info->callback.post_swap(re->info->callback.data, re->evas); | ||
1023 | |||
1024 | if (eglGetError() != EGL_SUCCESS) | ||
1025 | printf("Error: eglSwapBuffers() fail.\n"); | ||
1026 | |||
1027 | # ifdef FRAMECOUNT | ||
1028 | double t1 = get_time(); | ||
1029 | printf("%1.5f\n", t1 - t0); | ||
1030 | # endif | ||
1031 | } | ||
1032 | |||
1033 | static void | ||
1034 | eng_output_idle_flush(void *data) | ||
1035 | { | ||
1036 | Render_Engine *re; | ||
1037 | |||
1038 | re = (Render_Engine *)data; | ||
1039 | } | ||
1040 | |||
1041 | static void | ||
1042 | eng_output_dump(void *data) | ||
1043 | { | ||
1044 | Render_Engine *re; | ||
1045 | |||
1046 | re = (Render_Engine *)data; | ||
1047 | evas_common_image_image_all_unload(); | ||
1048 | evas_common_font_font_all_unload(); | ||
1049 | evas_gl_common_image_all_unload(re->win->gl_context); | ||
1050 | _re_winfree(re); | ||
1051 | } | ||
1052 | |||
1053 | static void | ||
1054 | eng_context_cutout_add(void *data __UNUSED__, void *context, int x, int y, int w, int h) | ||
1055 | { | ||
1056 | // Render_Engine *re; | ||
1057 | // | ||
1058 | // re = (Render_Engine *)data; | ||
1059 | // re->win->gl_context->dc = context; | ||
1060 | evas_common_draw_context_add_cutout(context, x, y, w, h); | ||
1061 | } | ||
1062 | |||
1063 | static void | ||
1064 | eng_context_cutout_clear(void *data __UNUSED__, void *context) | ||
1065 | { | ||
1066 | // Render_Engine *re; | ||
1067 | // | ||
1068 | // re = (Render_Engine *)data; | ||
1069 | // re->win->gl_context->dc = context; | ||
1070 | evas_common_draw_context_clear_cutouts(context); | ||
1071 | } | ||
1072 | |||
1073 | static void | ||
1074 | eng_rectangle_draw(void *data, void *context, void *surface, int x, int y, int w, int h) | ||
1075 | { | ||
1076 | Render_Engine *re; | ||
1077 | |||
1078 | re = (Render_Engine *)data; | ||
1079 | eng_window_use(re->win); | ||
1080 | evas_gl_common_context_target_surface_set(re->win->gl_context, surface); | ||
1081 | re->win->gl_context->dc = context; | ||
1082 | evas_gl_common_rect_draw(re->win->gl_context, x, y, w, h); | ||
1083 | } | ||
1084 | |||
1085 | static void | ||
1086 | eng_line_draw(void *data, void *context, void *surface, int x1, int y1, int x2, int y2) | ||
1087 | { | ||
1088 | Render_Engine *re; | ||
1089 | |||
1090 | re = (Render_Engine *)data; | ||
1091 | eng_window_use(re->win); | ||
1092 | evas_gl_common_context_target_surface_set(re->win->gl_context, surface); | ||
1093 | re->win->gl_context->dc = context; | ||
1094 | evas_gl_common_line_draw(re->win->gl_context, x1, y1, x2, y2); | ||
1095 | } | ||
1096 | |||
1097 | static void * | ||
1098 | eng_polygon_point_add(void *data, void *context __UNUSED__, void *polygon, int x, int y) | ||
1099 | { | ||
1100 | Render_Engine *re; | ||
1101 | |||
1102 | re = (Render_Engine *)data; | ||
1103 | return evas_gl_common_poly_point_add(polygon, x, y); | ||
1104 | } | ||
1105 | |||
1106 | static void * | ||
1107 | eng_polygon_points_clear(void *data, void *context __UNUSED__, void *polygon) | ||
1108 | { | ||
1109 | Render_Engine *re; | ||
1110 | |||
1111 | re = (Render_Engine *)data; | ||
1112 | return evas_gl_common_poly_points_clear(polygon); | ||
1113 | } | ||
1114 | |||
1115 | static void | ||
1116 | eng_polygon_draw(void *data, void *context, void *surface __UNUSED__, void *polygon, int x, int y) | ||
1117 | { | ||
1118 | Render_Engine *re; | ||
1119 | |||
1120 | re = (Render_Engine *)data; | ||
1121 | eng_window_use(re->win); | ||
1122 | evas_gl_common_context_target_surface_set(re->win->gl_context, surface); | ||
1123 | re->win->gl_context->dc = context; | ||
1124 | evas_gl_common_poly_draw(re->win->gl_context, polygon, x, y); | ||
1125 | } | ||
1126 | |||
1127 | static int | ||
1128 | eng_image_alpha_get(void *data __UNUSED__, void *image) | ||
1129 | { | ||
1130 | // Render_Engine *re; | ||
1131 | Evas_GL_Image *im; | ||
1132 | |||
1133 | // re = (Render_Engine *)data; | ||
1134 | if (!image) return 1; | ||
1135 | im = image; | ||
1136 | return im->alpha; | ||
1137 | } | ||
1138 | |||
1139 | static int | ||
1140 | eng_image_colorspace_get(void *data __UNUSED__, void *image) | ||
1141 | { | ||
1142 | // Render_Engine *re; | ||
1143 | Evas_GL_Image *im; | ||
1144 | |||
1145 | // re = (Render_Engine *)data; | ||
1146 | if (!image) return EVAS_COLORSPACE_ARGB8888; | ||
1147 | im = image; | ||
1148 | return im->cs.space; | ||
1149 | } | ||
1150 | |||
1151 | static void | ||
1152 | eng_image_mask_create(void *data __UNUSED__, void *image) | ||
1153 | { | ||
1154 | Evas_GL_Image *im; | ||
1155 | |||
1156 | if (!image) return; | ||
1157 | im = image; | ||
1158 | if (!im->im->image.data) | ||
1159 | evas_cache_image_load_data(&im->im->cache_entry); | ||
1160 | if (!im->tex) | ||
1161 | im->tex = evas_gl_common_texture_new(im->gc, im->im); | ||
1162 | } | ||
1163 | |||
1164 | |||
1165 | static void * | ||
1166 | eng_image_alpha_set(void *data, void *image, int has_alpha) | ||
1167 | { | ||
1168 | Render_Engine *re; | ||
1169 | Evas_GL_Image *im; | ||
1170 | |||
1171 | re = (Render_Engine *)data; | ||
1172 | if (!image) return NULL; | ||
1173 | im = image; | ||
1174 | if (im->alpha == has_alpha) return image; | ||
1175 | if (im->native.data) | ||
1176 | { | ||
1177 | im->alpha = has_alpha; | ||
1178 | return image; | ||
1179 | } | ||
1180 | eng_window_use(re->win); | ||
1181 | if ((im->tex) && (im->tex->pt->dyn.img)) | ||
1182 | { | ||
1183 | im->alpha = has_alpha; | ||
1184 | im->tex->alpha = im->alpha; | ||
1185 | return image; | ||
1186 | } | ||
1187 | /* FIXME: can move to gl_common */ | ||
1188 | if (im->cs.space != EVAS_COLORSPACE_ARGB8888) return im; | ||
1189 | if ((has_alpha) && (im->im->cache_entry.flags.alpha)) return image; | ||
1190 | else if ((!has_alpha) && (!im->im->cache_entry.flags.alpha)) return image; | ||
1191 | if (im->references > 1) | ||
1192 | { | ||
1193 | Evas_GL_Image *im_new; | ||
1194 | |||
1195 | im_new = evas_gl_common_image_new_from_copied_data | ||
1196 | (im->gc, im->im->cache_entry.w, im->im->cache_entry.h, | ||
1197 | im->im->image.data, | ||
1198 | eng_image_alpha_get(data, image), | ||
1199 | eng_image_colorspace_get(data, image)); | ||
1200 | if (!im_new) return im; | ||
1201 | evas_gl_common_image_free(im); | ||
1202 | im = im_new; | ||
1203 | } | ||
1204 | else | ||
1205 | evas_gl_common_image_dirty(im, 0, 0, 0, 0); | ||
1206 | return evas_gl_common_image_alpha_set(im, has_alpha ? 1 : 0); | ||
1207 | // im->im->cache_entry.flags.alpha = has_alpha ? 1 : 0; | ||
1208 | // return image; | ||
1209 | } | ||
1210 | |||
1211 | static void * | ||
1212 | eng_image_border_set(void *data __UNUSED__, void *image, int l __UNUSED__, int r __UNUSED__, int t __UNUSED__, int b __UNUSED__) | ||
1213 | { | ||
1214 | // Render_Engine *re; | ||
1215 | // | ||
1216 | // re = (Render_Engine *)data; | ||
1217 | return image; | ||
1218 | } | ||
1219 | |||
1220 | static void | ||
1221 | eng_image_border_get(void *data __UNUSED__, void *image __UNUSED__, int *l __UNUSED__, int *r __UNUSED__, int *t __UNUSED__, int *b __UNUSED__) | ||
1222 | { | ||
1223 | // Render_Engine *re; | ||
1224 | // | ||
1225 | // re = (Render_Engine *)data; | ||
1226 | } | ||
1227 | |||
1228 | static char * | ||
1229 | eng_image_comment_get(void *data __UNUSED__, void *image, char *key __UNUSED__) | ||
1230 | { | ||
1231 | // Render_Engine *re; | ||
1232 | Evas_GL_Image *im; | ||
1233 | |||
1234 | // re = (Render_Engine *)data; | ||
1235 | if (!image) return NULL; | ||
1236 | im = image; | ||
1237 | if (!im->im) return NULL; | ||
1238 | return im->im->info.comment; | ||
1239 | } | ||
1240 | |||
1241 | static char * | ||
1242 | eng_image_format_get(void *data __UNUSED__, void *image) | ||
1243 | { | ||
1244 | // Render_Engine *re; | ||
1245 | Evas_GL_Image *im; | ||
1246 | |||
1247 | // re = (Render_Engine *)data; | ||
1248 | im = image; | ||
1249 | return NULL; | ||
1250 | } | ||
1251 | |||
1252 | static void | ||
1253 | eng_image_colorspace_set(void *data, void *image, int cspace) | ||
1254 | { | ||
1255 | Render_Engine *re; | ||
1256 | Evas_GL_Image *im; | ||
1257 | |||
1258 | re = (Render_Engine *)data; | ||
1259 | if (!image) return; | ||
1260 | im = image; | ||
1261 | if (im->native.data) return; | ||
1262 | /* FIXME: can move to gl_common */ | ||
1263 | if (im->cs.space == cspace) return; | ||
1264 | eng_window_use(re->win); | ||
1265 | evas_cache_image_colorspace(&im->im->cache_entry, cspace); | ||
1266 | switch (cspace) | ||
1267 | { | ||
1268 | case EVAS_COLORSPACE_ARGB8888: | ||
1269 | if (im->cs.data) | ||
1270 | { | ||
1271 | if (!im->cs.no_free) free(im->cs.data); | ||
1272 | im->cs.data = NULL; | ||
1273 | im->cs.no_free = 0; | ||
1274 | } | ||
1275 | break; | ||
1276 | case EVAS_COLORSPACE_YCBCR422P601_PL: | ||
1277 | case EVAS_COLORSPACE_YCBCR422P709_PL: | ||
1278 | case EVAS_COLORSPACE_YCBCR422601_PL: | ||
1279 | case EVAS_COLORSPACE_YCBCR420NV12601_PL: | ||
1280 | case EVAS_COLORSPACE_YCBCR420TM12601_PL: | ||
1281 | if (im->tex) evas_gl_common_texture_free(im->tex); | ||
1282 | im->tex = NULL; | ||
1283 | if (im->cs.data) | ||
1284 | { | ||
1285 | if (!im->cs.no_free) free(im->cs.data); | ||
1286 | } | ||
1287 | if (im->im->cache_entry.h > 0) | ||
1288 | im->cs.data = | ||
1289 | calloc(1, im->im->cache_entry.h * sizeof(unsigned char *) * 2); | ||
1290 | else | ||
1291 | im->cs.data = NULL; | ||
1292 | im->cs.no_free = 0; | ||
1293 | break; | ||
1294 | default: | ||
1295 | abort(); | ||
1296 | break; | ||
1297 | } | ||
1298 | im->cs.space = cspace; | ||
1299 | } | ||
1300 | |||
1301 | ///////////////////////////////////////////////////////////////////////// | ||
1302 | // | ||
1303 | // | ||
1304 | typedef struct _Native Native; | ||
1305 | |||
1306 | struct _Native | ||
1307 | { | ||
1308 | Evas_Native_Surface ns; | ||
1309 | struct wl_egl_pixmap *pixmap; | ||
1310 | |||
1311 | void *egl_surface; | ||
1312 | }; | ||
1313 | |||
1314 | // FIXME: this is enabled so updates happen - but its SLOOOOOOOOOOOOOOOW | ||
1315 | // (i am sure this is the reason) not to mention seemingly superfluous. but | ||
1316 | // i need to enable it for it to work on fglrx at least. havent tried nvidia. | ||
1317 | // | ||
1318 | // why is this the case? does anyone know? has anyone tried it on other gfx | ||
1319 | // drivers? | ||
1320 | // | ||
1321 | //#define GLX_TEX_PIXMAP_RECREATE 1 | ||
1322 | |||
1323 | static void | ||
1324 | _native_bind_cb(void *data, void *image) | ||
1325 | { | ||
1326 | Evas_GL_Image *im = image; | ||
1327 | Native *n = im->native.data; | ||
1328 | |||
1329 | if (n->egl_surface) | ||
1330 | { | ||
1331 | if (glsym_glEGLImageTargetTexture2DOES) | ||
1332 | { | ||
1333 | glsym_glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, n->egl_surface); | ||
1334 | if (eglGetError() != EGL_SUCCESS) | ||
1335 | ERR("glEGLImageTargetTexture2DOES() failed."); | ||
1336 | } | ||
1337 | else | ||
1338 | ERR("Try glEGLImageTargetTexture2DOES on EGL with no support"); | ||
1339 | } | ||
1340 | return; | ||
1341 | data = NULL; | ||
1342 | } | ||
1343 | |||
1344 | static void | ||
1345 | _native_unbind_cb(void *data, void *image) | ||
1346 | { | ||
1347 | Evas_GL_Image *im = image; | ||
1348 | /* Native *n = im->native.data; */ | ||
1349 | |||
1350 | /* if (n->ns.type == EVAS_NATIVE_SURFACE_X11) */ | ||
1351 | /* { */ | ||
1352 | /* // nothing */ | ||
1353 | /* } */ | ||
1354 | /* else if (n->ns.type == EVAS_NATIVE_SURFACE_OPENGL) */ | ||
1355 | /* { */ | ||
1356 | /* glBindTexture(GL_TEXTURE_2D, 0); */ | ||
1357 | /* GLERR(__FUNCTION__, __FILE__, __LINE__, ""); */ | ||
1358 | /* } */ | ||
1359 | return; | ||
1360 | data = NULL; | ||
1361 | } | ||
1362 | |||
1363 | static void | ||
1364 | _native_free_cb(void *data, void *image) | ||
1365 | { | ||
1366 | Render_Engine *re = data; | ||
1367 | Evas_GL_Image *im = image; | ||
1368 | Native *n = im->native.data; | ||
1369 | uint32_t texid; | ||
1370 | // uint32_t pmid, texid; | ||
1371 | |||
1372 | /* eina_hash_del(re->win->gl_context->shared->native_pm_hash, &pmid, im); */ | ||
1373 | if (n->egl_surface) | ||
1374 | { | ||
1375 | if (glsym_eglDestroyImage) | ||
1376 | { | ||
1377 | glsym_eglDestroyImage(re->win->egl_disp, n->egl_surface); | ||
1378 | if (eglGetError() != EGL_SUCCESS) | ||
1379 | ERR("eglDestroyImage() failed."); | ||
1380 | } | ||
1381 | else | ||
1382 | ERR("Try eglDestroyImage on EGL with no support"); | ||
1383 | } | ||
1384 | |||
1385 | im->native.data = NULL; | ||
1386 | im->native.func.data = NULL; | ||
1387 | im->native.func.bind = NULL; | ||
1388 | im->native.func.unbind = NULL; | ||
1389 | im->native.func.free = NULL; | ||
1390 | free(n); | ||
1391 | } | ||
1392 | |||
1393 | static void * | ||
1394 | eng_image_native_set(void *data, void *image, void *native) | ||
1395 | { | ||
1396 | Render_Engine *re = (Render_Engine *)data; | ||
1397 | Evas_Native_Surface *ns = native; | ||
1398 | Evas_GL_Image *im = image, *im2 = NULL; | ||
1399 | Native *n = NULL; | ||
1400 | // uint32_t pmid; | ||
1401 | // uint32_t texid; | ||
1402 | unsigned int tex = 0; | ||
1403 | unsigned int fbo = 0; | ||
1404 | |||
1405 | if (!im) | ||
1406 | { | ||
1407 | if ((!ns) && (ns->type == EVAS_NATIVE_SURFACE_OPENGL)) | ||
1408 | { | ||
1409 | im = evas_gl_common_image_new_from_data(re->win->gl_context, | ||
1410 | ns->data.opengl.w, | ||
1411 | ns->data.opengl.h, | ||
1412 | NULL, 1, | ||
1413 | EVAS_COLORSPACE_ARGB8888); | ||
1414 | } | ||
1415 | else | ||
1416 | return NULL; | ||
1417 | } | ||
1418 | |||
1419 | if (ns) | ||
1420 | { | ||
1421 | /* vis = ns->data.x11.visual; */ | ||
1422 | /* pm = ns->data.x11.pixmap; */ | ||
1423 | if (im->native.data) | ||
1424 | { | ||
1425 | Evas_Native_Surface *ens = im->native.data; | ||
1426 | /* if ((ens->data.x11.visual == vis) && */ | ||
1427 | /* (ens->data.x11.pixmap == pm)) */ | ||
1428 | return im; | ||
1429 | } | ||
1430 | } | ||
1431 | if ((!ns) && (!im->native.data)) return im; | ||
1432 | |||
1433 | eng_window_use(re->win); | ||
1434 | |||
1435 | if (im->native.data) | ||
1436 | { | ||
1437 | if (im->native.func.free) | ||
1438 | im->native.func.free(im->native.func.data, im); | ||
1439 | evas_gl_common_image_native_disable(im); | ||
1440 | } | ||
1441 | |||
1442 | if (!ns) return im; | ||
1443 | |||
1444 | /* if (ns->type == EVAS_NATIVE_SURFACE_X11) */ | ||
1445 | /* { */ | ||
1446 | /* pmid = pm; */ | ||
1447 | /* im2 = eina_hash_find(re->win->gl_context->shared->native_pm_hash, &pmid); */ | ||
1448 | if (im2 == im) return im; | ||
1449 | if (im2) | ||
1450 | { | ||
1451 | n = im2->native.data; | ||
1452 | if (n) | ||
1453 | { | ||
1454 | evas_gl_common_image_ref(im2); | ||
1455 | evas_gl_common_image_free(im); | ||
1456 | return im2; | ||
1457 | } | ||
1458 | } | ||
1459 | |||
1460 | im2 = evas_gl_common_image_new_from_data(re->win->gl_context, | ||
1461 | im->w, im->h, NULL, im->alpha, | ||
1462 | EVAS_COLORSPACE_ARGB8888); | ||
1463 | evas_gl_common_image_free(im); | ||
1464 | im = im2; | ||
1465 | /* if (native) */ | ||
1466 | /* { */ | ||
1467 | /* n = calloc(1, sizeof(Native)); */ | ||
1468 | /* if (n) */ | ||
1469 | /* { */ | ||
1470 | /* EGLConfig egl_config; */ | ||
1471 | /* int config_attrs[20]; */ | ||
1472 | /* int num_config, i = 0; */ | ||
1473 | |||
1474 | /* eina_hash_add(re->win->gl_context->shared->native_pm_hash, &pmid, im); */ | ||
1475 | |||
1476 | /* config_attrs[i++] = EGL_RED_SIZE; */ | ||
1477 | /* config_attrs[i++] = 8; */ | ||
1478 | /* config_attrs[i++] = EGL_GREEN_SIZE; */ | ||
1479 | /* config_attrs[i++] = 8; */ | ||
1480 | /* config_attrs[i++] = EGL_BLUE_SIZE; */ | ||
1481 | /* config_attrs[i++] = 8; */ | ||
1482 | /* config_attrs[i++] = EGL_ALPHA_SIZE; */ | ||
1483 | /* config_attrs[i++] = 8; */ | ||
1484 | /* config_attrs[i++] = EGL_DEPTH_SIZE; */ | ||
1485 | /* config_attrs[i++] = 0; */ | ||
1486 | /* config_attrs[i++] = EGL_STENCIL_SIZE; */ | ||
1487 | /* config_attrs[i++] = 0; */ | ||
1488 | /* config_attrs[i++] = EGL_RENDERABLE_TYPE; */ | ||
1489 | /* config_attrs[i++] = EGL_OPENGL_ES2_BIT; */ | ||
1490 | /* config_attrs[i++] = EGL_SURFACE_TYPE; */ | ||
1491 | /* config_attrs[i++] = EGL_PIXMAP_BIT; */ | ||
1492 | /* config_attrs[i++] = EGL_NONE; */ | ||
1493 | |||
1494 | /* if (!eglChooseConfig(re->win->egl_disp, config_attrs, */ | ||
1495 | /* &egl_config, 1, &num_config)) */ | ||
1496 | /* ERR("eglChooseConfig() failed for, num_config = %i", num_config); */ | ||
1497 | /* memcpy(&(n->ns), ns, sizeof(Evas_Native_Surface)); */ | ||
1498 | /* n->pixmap = pm; */ | ||
1499 | /* if (glsym_eglCreateImage) */ | ||
1500 | /* n->egl_surface = glsym_eglCreateImage(re->win->egl_disp, */ | ||
1501 | /* EGL_NO_CONTEXT, */ | ||
1502 | /* EGL_NATIVE_PIXMAP_KHR, */ | ||
1503 | /* (void *)pm, */ | ||
1504 | /* NULL); */ | ||
1505 | /* else */ | ||
1506 | /* ERR("Try eglCreateImage on EGL with no support"); */ | ||
1507 | /* if (!n->egl_surface) */ | ||
1508 | /* ERR("eglCreatePixmapSurface() for 0x%x failed", (unsigned int)pm); */ | ||
1509 | /* im->native.yinvert = 1; */ | ||
1510 | /* im->native.loose = 0; */ | ||
1511 | /* im->native.data = n; */ | ||
1512 | /* im->native.func.data = re; */ | ||
1513 | /* im->native.func.bind = _native_bind_cb; */ | ||
1514 | /* im->native.func.unbind = _native_unbind_cb; */ | ||
1515 | /* im->native.func.free = _native_free_cb; */ | ||
1516 | /* im->native.target = GL_TEXTURE_2D; */ | ||
1517 | /* im->native.mipmap = 0; */ | ||
1518 | /* evas_gl_common_image_native_enable(im); */ | ||
1519 | /* } */ | ||
1520 | /* } */ | ||
1521 | return im; | ||
1522 | } | ||
1523 | |||
1524 | static void * | ||
1525 | eng_image_native_get(void *data __UNUSED__, void *image) | ||
1526 | { | ||
1527 | Evas_GL_Image *im = image; | ||
1528 | Native *n; | ||
1529 | if (!im) return NULL; | ||
1530 | n = im->native.data; | ||
1531 | if (!n) return NULL; | ||
1532 | return &(n->ns); | ||
1533 | } | ||
1534 | |||
1535 | #if 0 // filtering disabled | ||
1536 | static void | ||
1537 | eng_image_draw_filtered(void *data, void *context, void *surface, | ||
1538 | void *image, Evas_Filter_Info *filter) | ||
1539 | { | ||
1540 | Render_Engine *re = data; | ||
1541 | |||
1542 | if (!image) return; | ||
1543 | eng_window_use(re->win); | ||
1544 | evas_gl_common_context_target_surface_set(re->win->gl_context, surface); | ||
1545 | re->win->gl_context->dc = context; | ||
1546 | |||
1547 | evas_gl_common_filter_draw(re->win->gl_context, image, filter); | ||
1548 | } | ||
1549 | |||
1550 | static Filtered_Image * | ||
1551 | eng_image_filtered_get(void *im, uint8_t *key, size_t keylen) | ||
1552 | { | ||
1553 | return evas_gl_common_image_filtered_get(im, key, keylen); | ||
1554 | } | ||
1555 | |||
1556 | static Filtered_Image * | ||
1557 | eng_image_filtered_save(void *im, void *fim, uint8_t *key, size_t keylen) | ||
1558 | { | ||
1559 | return evas_gl_common_image_filtered_save(im, fim, key, keylen); | ||
1560 | } | ||
1561 | |||
1562 | static void | ||
1563 | eng_image_filtered_free(void *im, Filtered_Image *fim) | ||
1564 | { | ||
1565 | evas_gl_common_image_filtered_free(im, fim); | ||
1566 | } | ||
1567 | #endif | ||
1568 | |||
1569 | static void * | ||
1570 | eng_image_load(void *data, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo) | ||
1571 | { | ||
1572 | Render_Engine *re; | ||
1573 | |||
1574 | re = (Render_Engine *)data; | ||
1575 | *error = EVAS_LOAD_ERROR_NONE; | ||
1576 | eng_window_use(re->win); | ||
1577 | return evas_gl_common_image_load(re->win->gl_context, file, key, lo, error); | ||
1578 | } | ||
1579 | |||
1580 | static void * | ||
1581 | eng_image_new_from_data(void *data, int w, int h, DATA32 *image_data, int alpha, int cspace) | ||
1582 | { | ||
1583 | Render_Engine *re; | ||
1584 | |||
1585 | re = (Render_Engine *)data; | ||
1586 | eng_window_use(re->win); | ||
1587 | return evas_gl_common_image_new_from_data(re->win->gl_context, w, h, image_data, alpha, cspace); | ||
1588 | } | ||
1589 | |||
1590 | static void * | ||
1591 | eng_image_new_from_copied_data(void *data, int w, int h, DATA32 *image_data, int alpha, int cspace) | ||
1592 | { | ||
1593 | Render_Engine *re; | ||
1594 | |||
1595 | re = (Render_Engine *)data; | ||
1596 | eng_window_use(re->win); | ||
1597 | return evas_gl_common_image_new_from_copied_data(re->win->gl_context, w, h, image_data, alpha, cspace); | ||
1598 | } | ||
1599 | |||
1600 | static void | ||
1601 | eng_image_free(void *data, void *image) | ||
1602 | { | ||
1603 | Render_Engine *re; | ||
1604 | |||
1605 | re = (Render_Engine *)data; | ||
1606 | if (!image) return; | ||
1607 | eng_window_use(re->win); | ||
1608 | evas_gl_common_image_free(image); | ||
1609 | } | ||
1610 | |||
1611 | static void | ||
1612 | eng_image_size_get(void *data __UNUSED__, void *image, int *w, int *h) | ||
1613 | { | ||
1614 | if (!image) | ||
1615 | { | ||
1616 | *w = 0; | ||
1617 | *h = 0; | ||
1618 | return; | ||
1619 | } | ||
1620 | if (w) *w = ((Evas_GL_Image *)image)->w; | ||
1621 | if (h) *h = ((Evas_GL_Image *)image)->h; | ||
1622 | } | ||
1623 | |||
1624 | static void * | ||
1625 | eng_image_size_set(void *data, void *image, int w, int h) | ||
1626 | { | ||
1627 | Render_Engine *re; | ||
1628 | Evas_GL_Image *im = image; | ||
1629 | Evas_GL_Image *im_old; | ||
1630 | |||
1631 | re = (Render_Engine *)data; | ||
1632 | if (!im) return NULL; | ||
1633 | if (im->native.data) | ||
1634 | { | ||
1635 | im->w = w; | ||
1636 | im->h = h; | ||
1637 | return image; | ||
1638 | } | ||
1639 | eng_window_use(re->win); | ||
1640 | if ((im->tex) && (im->tex->pt->dyn.img)) | ||
1641 | { | ||
1642 | evas_gl_common_texture_free(im->tex); | ||
1643 | im->tex = NULL; | ||
1644 | im->w = w; | ||
1645 | im->h = h; | ||
1646 | im->tex = evas_gl_common_texture_dynamic_new(im->gc, im); | ||
1647 | return image; | ||
1648 | } | ||
1649 | im_old = image; | ||
1650 | |||
1651 | switch (eng_image_colorspace_get(data, image)) | ||
1652 | { | ||
1653 | case EVAS_COLORSPACE_YCBCR422P601_PL: | ||
1654 | case EVAS_COLORSPACE_YCBCR422P709_PL: | ||
1655 | case EVAS_COLORSPACE_YCBCR422601_PL: | ||
1656 | case EVAS_COLORSPACE_YCBCR420NV12601_PL: | ||
1657 | case EVAS_COLORSPACE_YCBCR420TM12601_PL: | ||
1658 | w &= ~0x1; | ||
1659 | break; | ||
1660 | } | ||
1661 | |||
1662 | if ((im_old) && | ||
1663 | ((int)im_old->im->cache_entry.w == w) && | ||
1664 | ((int)im_old->im->cache_entry.h == h)) | ||
1665 | return image; | ||
1666 | if (im_old) | ||
1667 | { | ||
1668 | im = evas_gl_common_image_new(re->win->gl_context, w, h, | ||
1669 | eng_image_alpha_get(data, image), | ||
1670 | eng_image_colorspace_get(data, image)); | ||
1671 | /* | ||
1672 | evas_common_load_image_data_from_file(im_old->im); | ||
1673 | if (im_old->im->image->data) | ||
1674 | { | ||
1675 | evas_common_blit_rectangle(im_old->im, im->im, 0, 0, w, h, 0, 0); | ||
1676 | evas_common_cpu_end_opt(); | ||
1677 | } | ||
1678 | */ | ||
1679 | evas_gl_common_image_free(im_old); | ||
1680 | } | ||
1681 | else | ||
1682 | im = evas_gl_common_image_new(re->win->gl_context, w, h, 1, EVAS_COLORSPACE_ARGB8888); | ||
1683 | return im; | ||
1684 | } | ||
1685 | |||
1686 | static void * | ||
1687 | eng_image_dirty_region(void *data, void *image, int x, int y, int w, int h) | ||
1688 | { | ||
1689 | Render_Engine *re; | ||
1690 | Evas_GL_Image *im = image; | ||
1691 | |||
1692 | re = (Render_Engine *)data; | ||
1693 | if (!image) return NULL; | ||
1694 | if (im->native.data) return image; | ||
1695 | eng_window_use(re->win); | ||
1696 | evas_gl_common_image_dirty(image, x, y, w, h); | ||
1697 | return image; | ||
1698 | } | ||
1699 | |||
1700 | static void * | ||
1701 | eng_image_data_get(void *data, void *image, int to_write, DATA32 **image_data, int *err) | ||
1702 | { | ||
1703 | Render_Engine *re; | ||
1704 | Evas_GL_Image *im; | ||
1705 | int error; | ||
1706 | |||
1707 | re = (Render_Engine *)data; | ||
1708 | if (!image) | ||
1709 | { | ||
1710 | *image_data = NULL; | ||
1711 | if (err) *err = EVAS_LOAD_ERROR_GENERIC; | ||
1712 | return NULL; | ||
1713 | } | ||
1714 | im = image; | ||
1715 | if (im->native.data) | ||
1716 | { | ||
1717 | *image_data = NULL; | ||
1718 | if (err) *err = EVAS_LOAD_ERROR_NONE; | ||
1719 | return im; | ||
1720 | } | ||
1721 | |||
1722 | eng_window_use(re->win); | ||
1723 | |||
1724 | if ((im->tex) && (im->tex->pt) && (im->tex->pt->dyn.img) && (im->cs.space == EVAS_COLORSPACE_ARGB8888)) | ||
1725 | { | ||
1726 | if (im->tex->pt->dyn.checked_out > 0) | ||
1727 | { | ||
1728 | im->tex->pt->dyn.checked_out++; | ||
1729 | *image_data = im->tex->pt->dyn.data; | ||
1730 | if (err) *err = EVAS_LOAD_ERROR_NONE; | ||
1731 | return im; | ||
1732 | } | ||
1733 | *image_data = im->tex->pt->dyn.data = glsym_eglMapImageSEC(re->win->egl_disp, im->tex->pt->dyn.img); | ||
1734 | |||
1735 | if (!im->tex->pt->dyn.data) | ||
1736 | { | ||
1737 | if (err) *err = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; | ||
1738 | GLERR(__FUNCTION__, __FILE__, __LINE__, ""); | ||
1739 | return im; | ||
1740 | } | ||
1741 | im->tex->pt->dyn.checked_out++; | ||
1742 | |||
1743 | if (err) *err = EVAS_LOAD_ERROR_NONE; | ||
1744 | return im; | ||
1745 | } | ||
1746 | |||
1747 | /* Engine can fail to create texture after cache drop like eng_image_content_hint_set function, | ||
1748 | so it is need to add code which check im->im's NULL value*/ | ||
1749 | |||
1750 | if (!im->im) | ||
1751 | { | ||
1752 | *image_data = NULL; | ||
1753 | if (err) *err = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; | ||
1754 | return NULL; | ||
1755 | } | ||
1756 | |||
1757 | error = evas_cache_image_load_data(&im->im->cache_entry); | ||
1758 | switch (im->cs.space) | ||
1759 | { | ||
1760 | case EVAS_COLORSPACE_ARGB8888: | ||
1761 | if (to_write) | ||
1762 | { | ||
1763 | if (im->references > 1) | ||
1764 | { | ||
1765 | Evas_GL_Image *im_new; | ||
1766 | |||
1767 | im_new = evas_gl_common_image_new_from_copied_data | ||
1768 | (im->gc, im->im->cache_entry.w, im->im->cache_entry.h, | ||
1769 | im->im->image.data, | ||
1770 | eng_image_alpha_get(data, image), | ||
1771 | eng_image_colorspace_get(data, image)); | ||
1772 | if (!im_new) | ||
1773 | { | ||
1774 | *image_data = NULL; | ||
1775 | if (err) *err = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; | ||
1776 | return NULL; | ||
1777 | } | ||
1778 | evas_gl_common_image_free(im); | ||
1779 | im = im_new; | ||
1780 | } | ||
1781 | else | ||
1782 | evas_gl_common_image_dirty(im, 0, 0, 0, 0); | ||
1783 | } | ||
1784 | *image_data = im->im->image.data; | ||
1785 | break; | ||
1786 | case EVAS_COLORSPACE_YCBCR422P601_PL: | ||
1787 | case EVAS_COLORSPACE_YCBCR422P709_PL: | ||
1788 | case EVAS_COLORSPACE_YCBCR422601_PL: | ||
1789 | case EVAS_COLORSPACE_YCBCR420NV12601_PL: | ||
1790 | case EVAS_COLORSPACE_YCBCR420TM12601_PL: | ||
1791 | *image_data = im->cs.data; | ||
1792 | break; | ||
1793 | default: | ||
1794 | abort(); | ||
1795 | break; | ||
1796 | } | ||
1797 | if (err) *err = error; | ||
1798 | return im; | ||
1799 | } | ||
1800 | |||
1801 | static void * | ||
1802 | eng_image_data_put(void *data, void *image, DATA32 *image_data) | ||
1803 | { | ||
1804 | Render_Engine *re; | ||
1805 | Evas_GL_Image *im, *im2; | ||
1806 | |||
1807 | re = (Render_Engine *)data; | ||
1808 | if (!image) return NULL; | ||
1809 | im = image; | ||
1810 | if (im->native.data) return image; | ||
1811 | eng_window_use(re->win); | ||
1812 | if ((im->tex) && (im->tex->pt) | ||
1813 | && (im->tex->pt->dyn.data) | ||
1814 | && (im->cs.space == EVAS_COLORSPACE_ARGB8888)) | ||
1815 | { | ||
1816 | int w, h; | ||
1817 | |||
1818 | if (im->tex->pt->dyn.data == image_data) | ||
1819 | { | ||
1820 | im->tex->pt->dyn.checked_out--; | ||
1821 | if (im->tex->pt->dyn.checked_out == 0) | ||
1822 | glsym_eglUnmapImageSEC(re->win->egl_disp, im->tex->pt->dyn.img); | ||
1823 | return image; | ||
1824 | } | ||
1825 | |||
1826 | w = im->im->cache_entry.w; | ||
1827 | h = im->im->cache_entry.h; | ||
1828 | im2 = eng_image_new_from_data(data, w, h, image_data, | ||
1829 | eng_image_alpha_get(data, image), | ||
1830 | eng_image_colorspace_get(data, image)); | ||
1831 | if (!im2) return im; | ||
1832 | evas_gl_common_image_free(im); | ||
1833 | im = im2; | ||
1834 | evas_gl_common_image_dirty(im, 0, 0, 0, 0); | ||
1835 | return im; | ||
1836 | } | ||
1837 | switch (im->cs.space) | ||
1838 | { | ||
1839 | case EVAS_COLORSPACE_ARGB8888: | ||
1840 | if (image_data != im->im->image.data) | ||
1841 | { | ||
1842 | int w, h; | ||
1843 | |||
1844 | w = im->im->cache_entry.w; | ||
1845 | h = im->im->cache_entry.h; | ||
1846 | im2 = eng_image_new_from_data(data, w, h, image_data, | ||
1847 | eng_image_alpha_get(data, image), | ||
1848 | eng_image_colorspace_get(data, image)); | ||
1849 | if (!im2) return im; | ||
1850 | evas_gl_common_image_free(im); | ||
1851 | im = im2; | ||
1852 | } | ||
1853 | break; | ||
1854 | case EVAS_COLORSPACE_YCBCR422P601_PL: | ||
1855 | case EVAS_COLORSPACE_YCBCR422P709_PL: | ||
1856 | case EVAS_COLORSPACE_YCBCR422601_PL: | ||
1857 | case EVAS_COLORSPACE_YCBCR420NV12601_PL: | ||
1858 | case EVAS_COLORSPACE_YCBCR420TM12601_PL: | ||
1859 | if (image_data != im->cs.data) | ||
1860 | { | ||
1861 | if (im->cs.data) | ||
1862 | { | ||
1863 | if (!im->cs.no_free) free(im->cs.data); | ||
1864 | } | ||
1865 | im->cs.data = image_data; | ||
1866 | } | ||
1867 | evas_gl_common_image_dirty(im, 0, 0, 0, 0); | ||
1868 | break; | ||
1869 | default: | ||
1870 | abort(); | ||
1871 | break; | ||
1872 | } | ||
1873 | return im; | ||
1874 | } | ||
1875 | |||
1876 | static void | ||
1877 | eng_image_data_preload_request(void *data __UNUSED__, void *image, const void *target) | ||
1878 | { | ||
1879 | Evas_GL_Image *gim = image; | ||
1880 | RGBA_Image *im; | ||
1881 | |||
1882 | if (!gim) return; | ||
1883 | if (gim->native.data) return; | ||
1884 | im = (RGBA_Image *)gim->im; | ||
1885 | if (!im) return; | ||
1886 | evas_cache_image_preload_data(&im->cache_entry, target); | ||
1887 | } | ||
1888 | |||
1889 | static void | ||
1890 | eng_image_data_preload_cancel(void *data __UNUSED__, void *image, const void *target) | ||
1891 | { | ||
1892 | Evas_GL_Image *gim = image; | ||
1893 | RGBA_Image *im; | ||
1894 | |||
1895 | if (!gim) return; | ||
1896 | if (gim->native.data) return; | ||
1897 | im = (RGBA_Image *)gim->im; | ||
1898 | if (!im) return; | ||
1899 | evas_cache_image_preload_cancel(&im->cache_entry, target); | ||
1900 | } | ||
1901 | |||
1902 | static void | ||
1903 | eng_image_draw(void *data, 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) | ||
1904 | { | ||
1905 | Render_Engine *re; | ||
1906 | |||
1907 | re = (Render_Engine *)data; | ||
1908 | if (!image) return; | ||
1909 | eng_window_use(re->win); | ||
1910 | evas_gl_common_context_target_surface_set(re->win->gl_context, surface); | ||
1911 | re->win->gl_context->dc = context; | ||
1912 | evas_gl_common_image_draw(re->win->gl_context, image, | ||
1913 | src_x, src_y, src_w, src_h, | ||
1914 | dst_x, dst_y, dst_w, dst_h, | ||
1915 | smooth); | ||
1916 | } | ||
1917 | |||
1918 | static void | ||
1919 | eng_image_scale_hint_set(void *data __UNUSED__, void *image, int hint) | ||
1920 | { | ||
1921 | if (image) evas_gl_common_image_scale_hint_set(image, hint); | ||
1922 | } | ||
1923 | |||
1924 | static int | ||
1925 | eng_image_scale_hint_get(void *data __UNUSED__, void *image) | ||
1926 | { | ||
1927 | Evas_GL_Image *gim = image; | ||
1928 | if (!gim) return EVAS_IMAGE_SCALE_HINT_NONE; | ||
1929 | return gim->scale_hint; | ||
1930 | } | ||
1931 | |||
1932 | static void | ||
1933 | eng_image_map_draw(void *data, void *context, void *surface, void *image, int npoints, RGBA_Map_Point *p, int smooth, int level) | ||
1934 | { | ||
1935 | Evas_GL_Image *gim = image; | ||
1936 | Render_Engine *re; | ||
1937 | |||
1938 | re = (Render_Engine *)data; | ||
1939 | if (!image) return; | ||
1940 | eng_window_use(re->win); | ||
1941 | evas_gl_common_context_target_surface_set(re->win->gl_context, surface); | ||
1942 | re->win->gl_context->dc = context; | ||
1943 | if (npoints != 4) | ||
1944 | { | ||
1945 | // FIXME: nash - you didn't fix this | ||
1946 | abort(); | ||
1947 | } | ||
1948 | if ((p[0].x == p[3].x) && | ||
1949 | (p[1].x == p[2].x) && | ||
1950 | (p[0].y == p[1].y) && | ||
1951 | (p[3].y == p[2].y) && | ||
1952 | (p[0].x <= p[1].x) && | ||
1953 | (p[0].y <= p[2].y) && | ||
1954 | (p[0].u == 0) && | ||
1955 | (p[0].v == 0) && | ||
1956 | (p[1].u == (gim->w << FP)) && | ||
1957 | (p[1].v == 0) && | ||
1958 | (p[2].u == (gim->w << FP)) && | ||
1959 | (p[2].v == (gim->h << FP)) && | ||
1960 | (p[3].u == 0) && | ||
1961 | (p[3].v == (gim->h << FP)) && | ||
1962 | (p[0].col == 0xffffffff) && | ||
1963 | (p[1].col == 0xffffffff) && | ||
1964 | (p[2].col == 0xffffffff) && | ||
1965 | (p[3].col == 0xffffffff)) | ||
1966 | { | ||
1967 | int dx, dy, dw, dh; | ||
1968 | |||
1969 | dx = p[0].x >> FP; | ||
1970 | dy = p[0].y >> FP; | ||
1971 | dw = (p[2].x >> FP) - dx; | ||
1972 | dh = (p[2].y >> FP) - dy; | ||
1973 | eng_image_draw(data, context, surface, image, | ||
1974 | 0, 0, gim->w, gim->h, dx, dy, dw, dh, smooth); | ||
1975 | } | ||
1976 | else | ||
1977 | { | ||
1978 | evas_gl_common_image_map_draw(re->win->gl_context, image, npoints, p, | ||
1979 | smooth, level); | ||
1980 | } | ||
1981 | } | ||
1982 | |||
1983 | static void * | ||
1984 | eng_image_map_surface_new(void *data, int w, int h, int alpha) | ||
1985 | { | ||
1986 | Render_Engine *re; | ||
1987 | |||
1988 | re = (Render_Engine *)data; | ||
1989 | return evas_gl_common_image_surface_new(re->win->gl_context, w, h, alpha); | ||
1990 | } | ||
1991 | |||
1992 | static void | ||
1993 | eng_image_map_surface_free(void *data __UNUSED__, void *surface) | ||
1994 | { | ||
1995 | evas_gl_common_image_free(surface); | ||
1996 | } | ||
1997 | |||
1998 | static void | ||
1999 | eng_image_content_hint_set(void *data __UNUSED__, void *image, int hint) | ||
2000 | { | ||
2001 | if (image) evas_gl_common_image_content_hint_set(image, hint); | ||
2002 | } | ||
2003 | |||
2004 | static int | ||
2005 | eng_image_content_hint_get(void *data __UNUSED__, void *image) | ||
2006 | { | ||
2007 | Evas_GL_Image *gim = image; | ||
2008 | if (!gim) return EVAS_IMAGE_CONTENT_HINT_NONE; | ||
2009 | return gim->content_hint; | ||
2010 | } | ||
2011 | |||
2012 | static void | ||
2013 | eng_image_cache_flush(void *data) | ||
2014 | { | ||
2015 | Render_Engine *re; | ||
2016 | int tmp_size; | ||
2017 | |||
2018 | re = (Render_Engine *)data; | ||
2019 | |||
2020 | tmp_size = evas_common_image_get_cache(); | ||
2021 | evas_common_image_set_cache(0); | ||
2022 | evas_common_rgba_image_scalecache_flush(); | ||
2023 | evas_gl_common_image_cache_flush(re->win->gl_context); | ||
2024 | evas_common_image_set_cache(tmp_size); | ||
2025 | } | ||
2026 | |||
2027 | static void | ||
2028 | eng_image_cache_set(void *data, int bytes) | ||
2029 | { | ||
2030 | Render_Engine *re; | ||
2031 | |||
2032 | re = (Render_Engine *)data; | ||
2033 | evas_common_image_set_cache(bytes); | ||
2034 | evas_common_rgba_image_scalecache_size_set(bytes); | ||
2035 | evas_gl_common_image_cache_flush(re->win->gl_context); | ||
2036 | } | ||
2037 | |||
2038 | static int | ||
2039 | eng_image_cache_get(void *data __UNUSED__) | ||
2040 | { | ||
2041 | return evas_common_image_get_cache(); | ||
2042 | } | ||
2043 | |||
2044 | static void | ||
2045 | eng_image_stride_get(void *data __UNUSED__, void *image, int *stride) | ||
2046 | { | ||
2047 | Evas_GL_Image *im = image; | ||
2048 | |||
2049 | if ((im->tex) && (im->tex->pt->dyn.img)) | ||
2050 | *stride = im->tex->pt->dyn.stride; | ||
2051 | else | ||
2052 | *stride = im->w * 4; | ||
2053 | } | ||
2054 | |||
2055 | static void | ||
2056 | eng_font_draw(void *data, 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 *intl_props) | ||
2057 | { | ||
2058 | Render_Engine *re; | ||
2059 | |||
2060 | re = (Render_Engine *)data; | ||
2061 | eng_window_use(re->win); | ||
2062 | evas_gl_common_context_target_surface_set(re->win->gl_context, surface); | ||
2063 | re->win->gl_context->dc = context; | ||
2064 | { | ||
2065 | // FIXME: put im into context so we can free it | ||
2066 | static RGBA_Image *im = NULL; | ||
2067 | |||
2068 | if (!im) | ||
2069 | im = (RGBA_Image *)evas_cache_image_empty(evas_common_image_cache_get()); | ||
2070 | im->cache_entry.w = re->win->w; | ||
2071 | im->cache_entry.h = re->win->h; | ||
2072 | evas_common_draw_context_font_ext_set(context, | ||
2073 | re->win->gl_context, | ||
2074 | evas_gl_font_texture_new, | ||
2075 | evas_gl_font_texture_free, | ||
2076 | evas_gl_font_texture_draw); | ||
2077 | evas_common_font_draw(im, context, (RGBA_Font *) font, x, y, | ||
2078 | intl_props); | ||
2079 | evas_common_draw_context_font_ext_set(context, NULL, NULL, NULL, NULL); | ||
2080 | } | ||
2081 | } | ||
2082 | |||
2083 | static Eina_Bool | ||
2084 | eng_canvas_alpha_get(void *data, void *info __UNUSED__) | ||
2085 | { | ||
2086 | Render_Engine *re = (Render_Engine *)data; | ||
2087 | return re->win->alpha; | ||
2088 | } | ||
2089 | |||
2090 | static int | ||
2091 | _set_internal_config(Render_Engine_GL_Surface *sfc, Evas_GL_Config *cfg) | ||
2092 | { | ||
2093 | // Also initialize pixel format here as well... | ||
2094 | switch(cfg->color_format) | ||
2095 | { | ||
2096 | case EVAS_GL_RGB_888: | ||
2097 | sfc->rt_fmt = GL_RGB; | ||
2098 | sfc->rt_internal_fmt = GL_RGB; | ||
2099 | break; | ||
2100 | case EVAS_GL_RGBA_8888: | ||
2101 | sfc->rt_fmt = GL_RGBA; | ||
2102 | sfc->rt_internal_fmt = GL_RGBA; | ||
2103 | break; | ||
2104 | default: | ||
2105 | ERR("Invalid Color Format!"); | ||
2106 | return 0; | ||
2107 | } | ||
2108 | |||
2109 | switch(cfg->depth_bits) | ||
2110 | { | ||
2111 | case EVAS_GL_DEPTH_NONE: | ||
2112 | break; | ||
2113 | case EVAS_GL_DEPTH_BIT_8: | ||
2114 | case EVAS_GL_DEPTH_BIT_16: | ||
2115 | case EVAS_GL_DEPTH_BIT_24: | ||
2116 | // 24 bit doesn't work... just cover it with 16 for now.. | ||
2117 | sfc->rb_depth_fmt = GL_DEPTH_COMPONENT16; | ||
2118 | break; | ||
2119 | case EVAS_GL_DEPTH_BIT_32: | ||
2120 | default: | ||
2121 | ERR("Unsupported Depth Bits Format!"); | ||
2122 | return 0; | ||
2123 | } | ||
2124 | |||
2125 | switch(cfg->stencil_bits) | ||
2126 | { | ||
2127 | case EVAS_GL_STENCIL_NONE: | ||
2128 | break; | ||
2129 | case EVAS_GL_STENCIL_BIT_1: | ||
2130 | case EVAS_GL_STENCIL_BIT_2: | ||
2131 | case EVAS_GL_STENCIL_BIT_4: | ||
2132 | case EVAS_GL_STENCIL_BIT_8: | ||
2133 | sfc->rb_stencil_fmt = GL_STENCIL_INDEX8; | ||
2134 | break; | ||
2135 | case EVAS_GL_STENCIL_BIT_16: | ||
2136 | default: | ||
2137 | ERR("Unsupported Stencil Bits Format!"); | ||
2138 | return 0; | ||
2139 | } | ||
2140 | |||
2141 | // Do Packed Depth24_Stencil8 Later... | ||
2142 | |||
2143 | return 1; | ||
2144 | } | ||
2145 | |||
2146 | static int | ||
2147 | _create_rt_buffers(Render_Engine *data __UNUSED__, | ||
2148 | Render_Engine_GL_Surface *sfc) | ||
2149 | { | ||
2150 | // Render Target texture | ||
2151 | glGenTextures(1, &sfc->rt_tex ); | ||
2152 | |||
2153 | // Depth RenderBuffer - Create storage here... | ||
2154 | if (sfc->depth_bits != EVAS_GL_DEPTH_NONE) | ||
2155 | glGenRenderbuffers(1, &sfc->rb_depth); | ||
2156 | |||
2157 | // Stencil RenderBuffer - Create Storage here... | ||
2158 | if (sfc->stencil_bits != EVAS_GL_STENCIL_NONE) | ||
2159 | glGenRenderbuffers(1, &sfc->rb_stencil); | ||
2160 | |||
2161 | return 1; | ||
2162 | } | ||
2163 | |||
2164 | static int | ||
2165 | _attach_fbo_surface(Render_Engine *data __UNUSED__, | ||
2166 | Render_Engine_GL_Surface *sfc, | ||
2167 | Render_Engine_GL_Context *ctx) | ||
2168 | { | ||
2169 | int fb_status; | ||
2170 | |||
2171 | // Initialize Texture | ||
2172 | glBindTexture(GL_TEXTURE_2D, sfc->rt_tex ); | ||
2173 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); | ||
2174 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); | ||
2175 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); | ||
2176 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); | ||
2177 | glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, sfc->w, sfc->h, 0, | ||
2178 | GL_RGBA, GL_UNSIGNED_BYTE, NULL); | ||
2179 | glBindTexture(GL_TEXTURE_2D, 0); | ||
2180 | |||
2181 | |||
2182 | // Attach texture to FBO | ||
2183 | glBindFramebuffer(GL_FRAMEBUFFER, ctx->context_fbo); | ||
2184 | glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, | ||
2185 | GL_TEXTURE_2D, sfc->rt_tex, 0); | ||
2186 | |||
2187 | // Depth RenderBuffer - Attach it to FBO | ||
2188 | if (sfc->depth_bits != EVAS_GL_DEPTH_NONE) | ||
2189 | { | ||
2190 | glBindRenderbuffer(GL_RENDERBUFFER, sfc->rb_depth); | ||
2191 | glRenderbufferStorage(GL_RENDERBUFFER, sfc->rb_depth_fmt, | ||
2192 | sfc->w, sfc->h); | ||
2193 | glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, | ||
2194 | GL_RENDERBUFFER, sfc->rb_depth); | ||
2195 | glBindRenderbuffer(GL_RENDERBUFFER, 0); | ||
2196 | } | ||
2197 | |||
2198 | // Stencil RenderBuffer - Attach it to FBO | ||
2199 | if (sfc->stencil_bits != EVAS_GL_STENCIL_NONE) | ||
2200 | { | ||
2201 | glBindRenderbuffer(GL_RENDERBUFFER, sfc->rb_stencil); | ||
2202 | glRenderbufferStorage(GL_RENDERBUFFER, sfc->rb_stencil_fmt, | ||
2203 | sfc->w, sfc->h); | ||
2204 | glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, | ||
2205 | GL_RENDERBUFFER, sfc->rb_stencil); | ||
2206 | glBindRenderbuffer(GL_RENDERBUFFER, 0); | ||
2207 | } | ||
2208 | |||
2209 | // Check FBO for completeness | ||
2210 | fb_status = glCheckFramebufferStatus(GL_FRAMEBUFFER); | ||
2211 | if (fb_status != GL_FRAMEBUFFER_COMPLETE) | ||
2212 | { | ||
2213 | ERR("FBO not complete!"); | ||
2214 | return 0; | ||
2215 | } | ||
2216 | |||
2217 | return 1; | ||
2218 | } | ||
2219 | |||
2220 | |||
2221 | static void * | ||
2222 | eng_gl_surface_create(void *data, void *config, int w, int h) | ||
2223 | { | ||
2224 | Render_Engine *re; | ||
2225 | Render_Engine_GL_Surface *sfc; | ||
2226 | Render_Engine_GL_Resource *rsc; | ||
2227 | Evas_GL_Config *cfg; | ||
2228 | int ret; | ||
2229 | |||
2230 | sfc = calloc(1, sizeof(Render_Engine_GL_Surface)); | ||
2231 | if (!sfc) return NULL; | ||
2232 | |||
2233 | re = (Render_Engine *)data; | ||
2234 | cfg = (Evas_GL_Config *)config; | ||
2235 | |||
2236 | sfc->initialized = 0; | ||
2237 | sfc->fbo_attached = 0; | ||
2238 | sfc->w = w; | ||
2239 | sfc->h = h; | ||
2240 | sfc->depth_bits = cfg->depth_bits; | ||
2241 | sfc->stencil_bits = cfg->stencil_bits; | ||
2242 | sfc->rt_tex = 0; | ||
2243 | sfc->rb_depth = 0; | ||
2244 | sfc->rb_stencil = 0; | ||
2245 | |||
2246 | // Set the internal format based on the config | ||
2247 | if (!_set_internal_config(sfc, cfg)) | ||
2248 | { | ||
2249 | ERR("Unsupported Format!"); | ||
2250 | free(sfc); | ||
2251 | return NULL; | ||
2252 | } | ||
2253 | |||
2254 | // Create internal resource context if it hasn't been created already | ||
2255 | if ((rsc = eina_tls_get(resource_key)) == NULL) | ||
2256 | { | ||
2257 | if ((rsc = _create_internal_glue_resources(re)) == NULL) | ||
2258 | { | ||
2259 | ERR("Error creating internal resources."); | ||
2260 | free(sfc); | ||
2261 | return NULL; | ||
2262 | } | ||
2263 | } | ||
2264 | |||
2265 | // I'm using evas's original context to create the render target texture | ||
2266 | // This is to prevent awkwardness in using native_surface_get() function | ||
2267 | // If the rt texture creation is deferred till the context is created and | ||
2268 | // make_current called, the user can't call native_surface_get() right | ||
2269 | // after the surface is created. hence this is done here using evas' context. | ||
2270 | ret = eglMakeCurrent(re->win->egl_disp, rsc->surface, rsc->surface, rsc->context); | ||
2271 | if (!ret) | ||
2272 | { | ||
2273 | ERR("xxxMakeCurrent() failed!"); | ||
2274 | free(sfc); | ||
2275 | return NULL; | ||
2276 | } | ||
2277 | |||
2278 | // Create Render texture | ||
2279 | if (!_create_rt_buffers(re, sfc)) | ||
2280 | { | ||
2281 | ERR("_create_rt_buffers() failed."); | ||
2282 | free(sfc); | ||
2283 | return NULL; | ||
2284 | } | ||
2285 | |||
2286 | ret = eglMakeCurrent(re->win->egl_disp, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); | ||
2287 | if (!ret) | ||
2288 | { | ||
2289 | ERR("xxxMakeCurrent() failed!"); | ||
2290 | free(sfc); | ||
2291 | return NULL; | ||
2292 | } | ||
2293 | |||
2294 | return sfc; | ||
2295 | } | ||
2296 | |||
2297 | static int | ||
2298 | eng_gl_surface_destroy(void *data, void *surface) | ||
2299 | { | ||
2300 | Render_Engine *re; | ||
2301 | Render_Engine_GL_Surface *sfc; | ||
2302 | Render_Engine_GL_Resource *rsc; | ||
2303 | int ret; | ||
2304 | |||
2305 | re = (Render_Engine *)data; | ||
2306 | sfc = (Render_Engine_GL_Surface*)surface; | ||
2307 | |||
2308 | if (!sfc) return 0; | ||
2309 | |||
2310 | if ((rsc = eina_tls_get(resource_key)) == EINA_FALSE) return 0; | ||
2311 | |||
2312 | ret = eglMakeCurrent(re->win->egl_disp, rsc->surface, rsc->surface, rsc->context); | ||
2313 | if (!ret) | ||
2314 | { | ||
2315 | ERR("xxxMakeCurrent() failed!"); | ||
2316 | return 0; | ||
2317 | } | ||
2318 | |||
2319 | // Delete FBO/RBO and Texture here | ||
2320 | if (sfc->rt_tex) | ||
2321 | glDeleteTextures(1, &sfc->rt_tex); | ||
2322 | |||
2323 | if (sfc->rb_depth) | ||
2324 | glDeleteRenderbuffers(1, &sfc->rb_depth); | ||
2325 | |||
2326 | if (sfc->rb_stencil) | ||
2327 | glDeleteRenderbuffers(1, &sfc->rb_stencil); | ||
2328 | |||
2329 | ret = eglMakeCurrent(re->win->egl_disp, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); | ||
2330 | if (!ret) | ||
2331 | { | ||
2332 | ERR("xxxMakeCurrent() failed!"); | ||
2333 | free(sfc); | ||
2334 | return 0; | ||
2335 | } | ||
2336 | |||
2337 | free(sfc); | ||
2338 | surface = NULL; | ||
2339 | |||
2340 | return 1; | ||
2341 | } | ||
2342 | |||
2343 | static void * | ||
2344 | eng_gl_context_create(void *data, void *share_context) | ||
2345 | { | ||
2346 | Render_Engine *re; | ||
2347 | Render_Engine_GL_Context *ctx; | ||
2348 | Render_Engine_GL_Context *share_ctx; | ||
2349 | int context_attrs[3]; | ||
2350 | |||
2351 | ctx = calloc(1, sizeof(Render_Engine_GL_Context)); | ||
2352 | |||
2353 | if (!ctx) return NULL; | ||
2354 | |||
2355 | re = (Render_Engine *)data; | ||
2356 | share_ctx = (Render_Engine_GL_Context *)share_context; | ||
2357 | |||
2358 | // Set the share context to Evas' GL context if share_context is NULL. | ||
2359 | // Otherwise set it to the given share_context. | ||
2360 | |||
2361 | // EGL | ||
2362 | context_attrs[0] = EGL_CONTEXT_CLIENT_VERSION; | ||
2363 | context_attrs[1] = 2; | ||
2364 | context_attrs[2] = EGL_NONE; | ||
2365 | |||
2366 | if (share_ctx) | ||
2367 | { | ||
2368 | ctx->context = eglCreateContext(re->win->egl_disp, | ||
2369 | re->win->egl_config, | ||
2370 | share_ctx->context, // Share Context | ||
2371 | context_attrs); | ||
2372 | } | ||
2373 | else | ||
2374 | { | ||
2375 | ctx->context = eglCreateContext(re->win->egl_disp, | ||
2376 | re->win->egl_config, | ||
2377 | re->win->egl_context[0], // Evas' GL Context | ||
2378 | context_attrs); | ||
2379 | } | ||
2380 | |||
2381 | if (!ctx->context) | ||
2382 | { | ||
2383 | ERR("eglCreateContext() fail. code=%#x", eglGetError()); | ||
2384 | return NULL; | ||
2385 | } | ||
2386 | |||
2387 | ctx->initialized = 0; | ||
2388 | ctx->context_fbo = 0; | ||
2389 | ctx->current_sfc = NULL; | ||
2390 | |||
2391 | return ctx; | ||
2392 | } | ||
2393 | |||
2394 | static int | ||
2395 | eng_gl_context_destroy(void *data, void *context) | ||
2396 | { | ||
2397 | Render_Engine *re; | ||
2398 | Render_Engine_GL_Context *ctx; | ||
2399 | Render_Engine_GL_Resource *rsc; | ||
2400 | int ret; | ||
2401 | |||
2402 | re = (Render_Engine *)data; | ||
2403 | ctx = (Render_Engine_GL_Context*)context; | ||
2404 | |||
2405 | if (!ctx) return 0; | ||
2406 | |||
2407 | if ((rsc = eina_tls_get(resource_key)) == EINA_FALSE) return 0; | ||
2408 | |||
2409 | // 1. Do a make current with the given context | ||
2410 | ret = eglMakeCurrent(re->win->egl_disp, rsc->surface, | ||
2411 | rsc->surface, ctx->context); | ||
2412 | if (!ret) | ||
2413 | { | ||
2414 | ERR("xxxMakeCurrent() failed!"); | ||
2415 | return 0; | ||
2416 | } | ||
2417 | |||
2418 | // 2. Delete the FBO | ||
2419 | if (ctx->context_fbo) | ||
2420 | glDeleteFramebuffers(1, &ctx->context_fbo); | ||
2421 | |||
2422 | // 3. Destroy the Context | ||
2423 | eglDestroyContext(re->win->egl_disp, ctx->context); | ||
2424 | |||
2425 | ctx->context = EGL_NO_CONTEXT; | ||
2426 | |||
2427 | ret = eglMakeCurrent(re->win->egl_disp, EGL_NO_SURFACE, | ||
2428 | EGL_NO_SURFACE, EGL_NO_CONTEXT); | ||
2429 | if (!ret) | ||
2430 | { | ||
2431 | ERR("xxxMakeCurrent() failed!"); | ||
2432 | return 0; | ||
2433 | } | ||
2434 | |||
2435 | free(ctx); | ||
2436 | context = NULL; | ||
2437 | |||
2438 | return 1; | ||
2439 | } | ||
2440 | |||
2441 | static int | ||
2442 | eng_gl_make_current(void *data __UNUSED__, void *surface, void *context) | ||
2443 | { | ||
2444 | Render_Engine *re; | ||
2445 | Render_Engine_GL_Surface *sfc; | ||
2446 | Render_Engine_GL_Context *ctx; | ||
2447 | int ret = 0; | ||
2448 | Render_Engine_GL_Resource *rsc; | ||
2449 | |||
2450 | re = (Render_Engine *)data; | ||
2451 | sfc = (Render_Engine_GL_Surface*)surface; | ||
2452 | ctx = (Render_Engine_GL_Context*)context; | ||
2453 | |||
2454 | // Unset surface/context | ||
2455 | if ((!sfc) || (!ctx)) | ||
2456 | { | ||
2457 | ret = eglMakeCurrent(re->win->egl_disp, EGL_NO_SURFACE, | ||
2458 | EGL_NO_SURFACE, EGL_NO_CONTEXT); | ||
2459 | if (!ret) | ||
2460 | { | ||
2461 | ERR("xxxMakeCurrent() failed!"); | ||
2462 | return 0; | ||
2463 | } | ||
2464 | |||
2465 | if (ctx) ctx->current_sfc = NULL; | ||
2466 | if (sfc) sfc->current_ctx = NULL; | ||
2467 | current_evgl_ctx = NULL; | ||
2468 | return 1; | ||
2469 | } | ||
2470 | |||
2471 | // Do a make current only if it's not already current | ||
2472 | if ((rsc = eina_tls_get(resource_key)) == EINA_FALSE) return 0; | ||
2473 | |||
2474 | if ((eglGetCurrentContext() != ctx->context) || | ||
2475 | (eglGetCurrentSurface(EGL_READ) != rsc->surface) || | ||
2476 | (eglGetCurrentSurface(EGL_DRAW) != rsc->surface) ) | ||
2477 | { | ||
2478 | // Flush remainder of what's in Evas' pipeline | ||
2479 | if (re->win) eng_window_use(NULL); | ||
2480 | |||
2481 | // Do a make current | ||
2482 | ret = eglMakeCurrent(re->win->egl_disp, rsc->surface, | ||
2483 | rsc->surface, ctx->context); | ||
2484 | if (!ret) | ||
2485 | { | ||
2486 | ERR("xxxMakeCurrent() failed!"); | ||
2487 | return 0; | ||
2488 | } | ||
2489 | } | ||
2490 | |||
2491 | // Create FBO if not already created | ||
2492 | if (!ctx->initialized) | ||
2493 | { | ||
2494 | glGenFramebuffers(1, &ctx->context_fbo); | ||
2495 | ctx->initialized = 1; | ||
2496 | } | ||
2497 | |||
2498 | // Attach FBO if it hasn't been attached or if surface changed | ||
2499 | if ((!sfc->fbo_attached) || (ctx->current_sfc != sfc)) | ||
2500 | { | ||
2501 | if (!_attach_fbo_surface(re, sfc, ctx)) | ||
2502 | { | ||
2503 | ERR("_attach_fbo_surface() failed."); | ||
2504 | return 0; | ||
2505 | } | ||
2506 | |||
2507 | if (ctx->current_fbo) | ||
2508 | // Bind to the previously bound buffer | ||
2509 | glBindFramebuffer(GL_FRAMEBUFFER, ctx->current_fbo); | ||
2510 | else | ||
2511 | // Bind FBO | ||
2512 | glBindFramebuffer(GL_FRAMEBUFFER, ctx->context_fbo); | ||
2513 | |||
2514 | sfc->fbo_attached = 1; | ||
2515 | } | ||
2516 | |||
2517 | // Set the current surface/context | ||
2518 | ctx->current_sfc = sfc; | ||
2519 | sfc->current_ctx = ctx; | ||
2520 | current_evgl_ctx = ctx; | ||
2521 | |||
2522 | return 1; | ||
2523 | } | ||
2524 | |||
2525 | static void * | ||
2526 | eng_gl_string_query(void *data __UNUSED__, int name) | ||
2527 | { | ||
2528 | switch(name) | ||
2529 | { | ||
2530 | case EVAS_GL_EXTENSIONS: | ||
2531 | return (void*)_evasgl_ext_string; | ||
2532 | default: | ||
2533 | return NULL; | ||
2534 | }; | ||
2535 | } | ||
2536 | |||
2537 | static void * | ||
2538 | eng_gl_proc_address_get(void *data __UNUSED__, const char *name) | ||
2539 | { | ||
2540 | if (glsym_eglGetProcAddress) return glsym_eglGetProcAddress(name); | ||
2541 | return dlsym(RTLD_DEFAULT, name); | ||
2542 | } | ||
2543 | |||
2544 | static int | ||
2545 | eng_gl_native_surface_get(void *data, void *surface, void *native_surface) | ||
2546 | { | ||
2547 | Render_Engine *re; | ||
2548 | Render_Engine_GL_Surface *sfc; | ||
2549 | Evas_Native_Surface *ns; | ||
2550 | |||
2551 | re = (Render_Engine *)data; | ||
2552 | sfc = (Render_Engine_GL_Surface*)surface; | ||
2553 | ns = (Evas_Native_Surface*)native_surface; | ||
2554 | |||
2555 | ns->type = EVAS_NATIVE_SURFACE_OPENGL; | ||
2556 | ns->version = EVAS_NATIVE_SURFACE_VERSION; | ||
2557 | ns->data.opengl.texture_id = sfc->rt_tex; | ||
2558 | ns->data.opengl.x = 0; | ||
2559 | ns->data.opengl.y = 0; | ||
2560 | ns->data.opengl.w = sfc->w; | ||
2561 | ns->data.opengl.h = sfc->h; | ||
2562 | |||
2563 | return 1; | ||
2564 | } | ||
2565 | |||
2566 | |||
2567 | static const GLubyte * | ||
2568 | evgl_glGetString(GLenum name) | ||
2569 | { | ||
2570 | if (name == GL_EXTENSIONS) | ||
2571 | return (GLubyte *)_gl_ext_string; //glGetString(GL_EXTENSIONS); | ||
2572 | else | ||
2573 | return glGetString(name); | ||
2574 | } | ||
2575 | |||
2576 | static void | ||
2577 | evgl_glBindFramebuffer(GLenum target, GLuint framebuffer) | ||
2578 | { | ||
2579 | Render_Engine_GL_Context *ctx = current_evgl_ctx; | ||
2580 | |||
2581 | // Take care of BindFramebuffer 0 issue | ||
2582 | if (framebuffer==0) | ||
2583 | { | ||
2584 | if (ctx) | ||
2585 | { | ||
2586 | glBindFramebuffer(target, ctx->context_fbo); | ||
2587 | ctx->current_fbo = 0; | ||
2588 | } | ||
2589 | } | ||
2590 | else | ||
2591 | { | ||
2592 | glBindFramebuffer(target, framebuffer); | ||
2593 | |||
2594 | // Save this for restore when doing make current | ||
2595 | if (ctx) | ||
2596 | ctx->current_fbo = framebuffer; | ||
2597 | } | ||
2598 | } | ||
2599 | |||
2600 | static void | ||
2601 | evgl_glBindRenderbuffer(GLenum target, GLuint renderbuffer) | ||
2602 | { | ||
2603 | // Add logic to take care when renderbuffer=0 | ||
2604 | // On a second thought we don't need this | ||
2605 | glBindRenderbuffer(target, renderbuffer); | ||
2606 | } | ||
2607 | |||
2608 | static void | ||
2609 | evgl_glClearDepthf(GLclampf depth) | ||
2610 | { | ||
2611 | glClearDepthf(depth); | ||
2612 | } | ||
2613 | |||
2614 | static void | ||
2615 | evgl_glDepthRangef(GLclampf zNear, GLclampf zFar) | ||
2616 | { | ||
2617 | glDepthRangef(zNear, zFar); | ||
2618 | } | ||
2619 | |||
2620 | static void | ||
2621 | evgl_glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision) | ||
2622 | { | ||
2623 | glGetShaderPrecisionFormat(shadertype, precisiontype, range, precision); | ||
2624 | } | ||
2625 | |||
2626 | static void | ||
2627 | evgl_glReleaseShaderCompiler(void) | ||
2628 | { | ||
2629 | glReleaseShaderCompiler(); | ||
2630 | } | ||
2631 | |||
2632 | static void | ||
2633 | evgl_glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const void* binary, GLsizei length) | ||
2634 | { | ||
2635 | glShaderBinary(n, shaders, binaryformat, binary, length); | ||
2636 | } | ||
2637 | |||
2638 | //--------------------------------// | ||
2639 | //#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) | ||
2640 | // EGL Extensions | ||
2641 | static void * | ||
2642 | evgl_evasglCreateImage(int target, void* buffer, int *attrib_list) | ||
2643 | { | ||
2644 | if (current_engine) | ||
2645 | { | ||
2646 | return glsym_eglCreateImage(current_engine->win->egl_disp, | ||
2647 | EGL_NO_CONTEXT, | ||
2648 | target, | ||
2649 | buffer, | ||
2650 | attrib_list); | ||
2651 | } | ||
2652 | else | ||
2653 | { | ||
2654 | ERR("Invalid Engine... (Can't acccess EGL Display)\n"); | ||
2655 | return NULL; | ||
2656 | } | ||
2657 | } | ||
2658 | |||
2659 | static void | ||
2660 | evgl_evasglDestroyImage(EvasGLImage image) | ||
2661 | { | ||
2662 | if (current_engine) | ||
2663 | glsym_eglDestroyImage(current_engine->win->egl_disp, image); | ||
2664 | else | ||
2665 | ERR("Invalid Engine... (Can't acccess EGL Display)\n"); | ||
2666 | } | ||
2667 | |||
2668 | static void | ||
2669 | evgl_glEvasGLImageTargetTexture2DOES(GLenum target, EvasGLImage image) | ||
2670 | { | ||
2671 | glsym_glEGLImageTargetTexture2DOES(target, image); | ||
2672 | } | ||
2673 | |||
2674 | static void | ||
2675 | evgl_glEvasGLImageTargetRenderbufferStorageOES(GLenum target, EvasGLImage image) | ||
2676 | { | ||
2677 | glsym_glEGLImageTargetTexture2DOES(target, image); | ||
2678 | } | ||
2679 | |||
2680 | //--------------------------------// | ||
2681 | |||
2682 | |||
2683 | static void * | ||
2684 | eng_gl_api_get(void *data) | ||
2685 | { | ||
2686 | Render_Engine *re; | ||
2687 | |||
2688 | re = (Render_Engine *)data; | ||
2689 | |||
2690 | gl_funcs.version = EVAS_GL_API_VERSION; | ||
2691 | |||
2692 | #define ORD(f) EVAS_API_OVERRIDE(f, &gl_funcs, ) | ||
2693 | // GLES 2.0 | ||
2694 | ORD(glActiveTexture); | ||
2695 | ORD(glAttachShader); | ||
2696 | ORD(glBindAttribLocation); | ||
2697 | ORD(glBindBuffer); | ||
2698 | ORD(glBindTexture); | ||
2699 | ORD(glBlendColor); | ||
2700 | ORD(glBlendEquation); | ||
2701 | ORD(glBlendEquationSeparate); | ||
2702 | ORD(glBlendFunc); | ||
2703 | ORD(glBlendFuncSeparate); | ||
2704 | ORD(glBufferData); | ||
2705 | ORD(glBufferSubData); | ||
2706 | ORD(glCheckFramebufferStatus); | ||
2707 | ORD(glClear); | ||
2708 | ORD(glClearColor); | ||
2709 | // ORD(glClearDepthf); | ||
2710 | ORD(glClearStencil); | ||
2711 | ORD(glColorMask); | ||
2712 | ORD(glCompileShader); | ||
2713 | ORD(glCompressedTexImage2D); | ||
2714 | ORD(glCompressedTexSubImage2D); | ||
2715 | ORD(glCopyTexImage2D); | ||
2716 | ORD(glCopyTexSubImage2D); | ||
2717 | ORD(glCreateProgram); | ||
2718 | ORD(glCreateShader); | ||
2719 | ORD(glCullFace); | ||
2720 | ORD(glDeleteBuffers); | ||
2721 | ORD(glDeleteFramebuffers); | ||
2722 | ORD(glDeleteProgram); | ||
2723 | ORD(glDeleteRenderbuffers); | ||
2724 | ORD(glDeleteShader); | ||
2725 | ORD(glDeleteTextures); | ||
2726 | ORD(glDepthFunc); | ||
2727 | ORD(glDepthMask); | ||
2728 | // ORD(glDepthRangef); | ||
2729 | ORD(glDetachShader); | ||
2730 | ORD(glDisable); | ||
2731 | ORD(glDisableVertexAttribArray); | ||
2732 | ORD(glDrawArrays); | ||
2733 | ORD(glDrawElements); | ||
2734 | ORD(glEnable); | ||
2735 | ORD(glEnableVertexAttribArray); | ||
2736 | ORD(glFinish); | ||
2737 | ORD(glFlush); | ||
2738 | ORD(glFramebufferRenderbuffer); | ||
2739 | ORD(glFramebufferTexture2D); | ||
2740 | ORD(glFrontFace); | ||
2741 | ORD(glGenBuffers); | ||
2742 | ORD(glGenerateMipmap); | ||
2743 | ORD(glGenFramebuffers); | ||
2744 | ORD(glGenRenderbuffers); | ||
2745 | ORD(glGenTextures); | ||
2746 | ORD(glGetActiveAttrib); | ||
2747 | ORD(glGetActiveUniform); | ||
2748 | ORD(glGetAttachedShaders); | ||
2749 | ORD(glGetAttribLocation); | ||
2750 | ORD(glGetBooleanv); | ||
2751 | ORD(glGetBufferParameteriv); | ||
2752 | ORD(glGetError); | ||
2753 | ORD(glGetFloatv); | ||
2754 | ORD(glGetFramebufferAttachmentParameteriv); | ||
2755 | ORD(glGetIntegerv); | ||
2756 | ORD(glGetProgramiv); | ||
2757 | ORD(glGetProgramInfoLog); | ||
2758 | ORD(glGetRenderbufferParameteriv); | ||
2759 | ORD(glGetShaderiv); | ||
2760 | ORD(glGetShaderInfoLog); | ||
2761 | // ORD(glGetShaderPrecisionFormat); | ||
2762 | ORD(glGetShaderSource); | ||
2763 | // ORD(glGetString); | ||
2764 | ORD(glGetTexParameterfv); | ||
2765 | ORD(glGetTexParameteriv); | ||
2766 | ORD(glGetUniformfv); | ||
2767 | ORD(glGetUniformiv); | ||
2768 | ORD(glGetUniformLocation); | ||
2769 | ORD(glGetVertexAttribfv); | ||
2770 | ORD(glGetVertexAttribiv); | ||
2771 | ORD(glGetVertexAttribPointerv); | ||
2772 | ORD(glHint); | ||
2773 | ORD(glIsBuffer); | ||
2774 | ORD(glIsEnabled); | ||
2775 | ORD(glIsFramebuffer); | ||
2776 | ORD(glIsProgram); | ||
2777 | ORD(glIsRenderbuffer); | ||
2778 | ORD(glIsShader); | ||
2779 | ORD(glIsTexture); | ||
2780 | ORD(glLineWidth); | ||
2781 | ORD(glLinkProgram); | ||
2782 | ORD(glPixelStorei); | ||
2783 | ORD(glPolygonOffset); | ||
2784 | ORD(glReadPixels); | ||
2785 | // ORD(glReleaseShaderCompiler); | ||
2786 | ORD(glRenderbufferStorage); | ||
2787 | ORD(glSampleCoverage); | ||
2788 | ORD(glScissor); | ||
2789 | // ORD(glShaderBinary); | ||
2790 | ORD(glShaderSource); | ||
2791 | ORD(glStencilFunc); | ||
2792 | ORD(glStencilFuncSeparate); | ||
2793 | ORD(glStencilMask); | ||
2794 | ORD(glStencilMaskSeparate); | ||
2795 | ORD(glStencilOp); | ||
2796 | ORD(glStencilOpSeparate); | ||
2797 | ORD(glTexImage2D); | ||
2798 | ORD(glTexParameterf); | ||
2799 | ORD(glTexParameterfv); | ||
2800 | ORD(glTexParameteri); | ||
2801 | ORD(glTexParameteriv); | ||
2802 | ORD(glTexSubImage2D); | ||
2803 | ORD(glUniform1f); | ||
2804 | ORD(glUniform1fv); | ||
2805 | ORD(glUniform1i); | ||
2806 | ORD(glUniform1iv); | ||
2807 | ORD(glUniform2f); | ||
2808 | ORD(glUniform2fv); | ||
2809 | ORD(glUniform2i); | ||
2810 | ORD(glUniform2iv); | ||
2811 | ORD(glUniform3f); | ||
2812 | ORD(glUniform3fv); | ||
2813 | ORD(glUniform3i); | ||
2814 | ORD(glUniform3iv); | ||
2815 | ORD(glUniform4f); | ||
2816 | ORD(glUniform4fv); | ||
2817 | ORD(glUniform4i); | ||
2818 | ORD(glUniform4iv); | ||
2819 | ORD(glUniformMatrix2fv); | ||
2820 | ORD(glUniformMatrix3fv); | ||
2821 | ORD(glUniformMatrix4fv); | ||
2822 | ORD(glUseProgram); | ||
2823 | ORD(glValidateProgram); | ||
2824 | ORD(glVertexAttrib1f); | ||
2825 | ORD(glVertexAttrib1fv); | ||
2826 | ORD(glVertexAttrib2f); | ||
2827 | ORD(glVertexAttrib2fv); | ||
2828 | ORD(glVertexAttrib3f); | ||
2829 | ORD(glVertexAttrib3fv); | ||
2830 | ORD(glVertexAttrib4f); | ||
2831 | ORD(glVertexAttrib4fv); | ||
2832 | ORD(glVertexAttribPointer); | ||
2833 | ORD(glViewport); | ||
2834 | #undef ORD | ||
2835 | |||
2836 | #define ORD(f) EVAS_API_OVERRIDE(f, &gl_funcs, glsym_) | ||
2837 | // Extensions | ||
2838 | ORD(glGetProgramBinaryOES); | ||
2839 | ORD(glProgramBinaryOES); | ||
2840 | ORD(glMapBufferOES); | ||
2841 | ORD(glUnmapBufferOES); | ||
2842 | ORD(glGetBufferPointervOES); | ||
2843 | ORD(glTexImage3DOES); | ||
2844 | ORD(glTexSubImage3DOES); | ||
2845 | ORD(glCopyTexSubImage3DOES); | ||
2846 | ORD(glCompressedTexImage3DOES); | ||
2847 | ORD(glCompressedTexSubImage3DOES); | ||
2848 | ORD(glFramebufferTexture3DOES); | ||
2849 | ORD(glGetPerfMonitorGroupsAMD); | ||
2850 | ORD(glGetPerfMonitorCountersAMD); | ||
2851 | ORD(glGetPerfMonitorGroupStringAMD); | ||
2852 | ORD(glGetPerfMonitorCounterStringAMD); | ||
2853 | ORD(glGetPerfMonitorCounterInfoAMD); | ||
2854 | ORD(glGenPerfMonitorsAMD); | ||
2855 | ORD(glDeletePerfMonitorsAMD); | ||
2856 | ORD(glSelectPerfMonitorCountersAMD); | ||
2857 | ORD(glBeginPerfMonitorAMD); | ||
2858 | ORD(glEndPerfMonitorAMD); | ||
2859 | ORD(glGetPerfMonitorCounterDataAMD); | ||
2860 | ORD(glDiscardFramebufferEXT); | ||
2861 | ORD(glMultiDrawArraysEXT); | ||
2862 | ORD(glMultiDrawElementsEXT); | ||
2863 | ORD(glDeleteFencesNV); | ||
2864 | ORD(glGenFencesNV); | ||
2865 | ORD(glIsFenceNV); | ||
2866 | ORD(glTestFenceNV); | ||
2867 | ORD(glGetFenceivNV); | ||
2868 | ORD(glFinishFenceNV); | ||
2869 | ORD(glSetFenceNV); | ||
2870 | ORD(glGetDriverControlsQCOM); | ||
2871 | ORD(glGetDriverControlStringQCOM); | ||
2872 | ORD(glEnableDriverControlQCOM); | ||
2873 | ORD(glDisableDriverControlQCOM); | ||
2874 | ORD(glExtGetTexturesQCOM); | ||
2875 | ORD(glExtGetBuffersQCOM); | ||
2876 | ORD(glExtGetRenderbuffersQCOM); | ||
2877 | ORD(glExtGetFramebuffersQCOM); | ||
2878 | ORD(glExtGetTexLevelParameterivQCOM); | ||
2879 | ORD(glExtTexObjectStateOverrideiQCOM); | ||
2880 | ORD(glExtGetTexSubImageQCOM); | ||
2881 | ORD(glExtGetBufferPointervQCOM); | ||
2882 | ORD(glExtGetShadersQCOM); | ||
2883 | ORD(glExtGetProgramsQCOM); | ||
2884 | ORD(glExtIsProgramBinaryQCOM); | ||
2885 | ORD(glExtGetProgramBinarySourceQCOM); | ||
2886 | #undef ORD | ||
2887 | |||
2888 | // Override functions wrapped by Evas_GL | ||
2889 | #define ORD(f) EVAS_API_OVERRIDE(f, &gl_funcs, evgl_) | ||
2890 | ORD(glBindFramebuffer); | ||
2891 | ORD(glBindRenderbuffer); | ||
2892 | |||
2893 | // GLES2.0 API compat on top of desktop gl | ||
2894 | ORD(glClearDepthf); | ||
2895 | ORD(glDepthRangef); | ||
2896 | ORD(glGetShaderPrecisionFormat); | ||
2897 | ORD(glReleaseShaderCompiler); | ||
2898 | ORD(glShaderBinary); | ||
2899 | |||
2900 | ORD(glGetString); | ||
2901 | |||
2902 | // GLES 2.0 Extensions that needs wrapping | ||
2903 | ORD(evasglCreateImage); | ||
2904 | ORD(evasglDestroyImage); | ||
2905 | ORD(glEvasGLImageTargetTexture2DOES); | ||
2906 | ORD(glEvasGLImageTargetRenderbufferStorageOES); | ||
2907 | |||
2908 | #undef ORD | ||
2909 | |||
2910 | return &gl_funcs; | ||
2911 | } | ||
2912 | |||
2913 | static int | ||
2914 | eng_image_load_error_get(void *data __UNUSED__, void *image) | ||
2915 | { | ||
2916 | Evas_GL_Image *im; | ||
2917 | |||
2918 | if (!image) return EVAS_LOAD_ERROR_NONE; | ||
2919 | im = image; | ||
2920 | return im->im->cache_entry.load_error; | ||
2921 | } | ||
2922 | |||
2923 | static Eina_Bool | ||
2924 | eng_image_animated_get(void *data __UNUSED__, void *image) | ||
2925 | { | ||
2926 | Evas_GL_Image *gim = image; | ||
2927 | Image_Entry *im; | ||
2928 | |||
2929 | if (!gim) return EINA_FALSE; | ||
2930 | im = (Image_Entry *)gim->im; | ||
2931 | if (!im) return EINA_FALSE; | ||
2932 | |||
2933 | return im->flags.animated; | ||
2934 | } | ||
2935 | |||
2936 | static int | ||
2937 | eng_image_animated_frame_count_get(void *data __UNUSED__, void *image) | ||
2938 | { | ||
2939 | Evas_GL_Image *gim = image; | ||
2940 | Image_Entry *im; | ||
2941 | |||
2942 | if (!gim) return -1; | ||
2943 | im = (Image_Entry *)gim->im; | ||
2944 | if (!im) return -1; | ||
2945 | |||
2946 | if (!im->flags.animated) return -1; | ||
2947 | return im->frame_count; | ||
2948 | } | ||
2949 | |||
2950 | static Evas_Image_Animated_Loop_Hint | ||
2951 | eng_image_animated_loop_type_get(void *data __UNUSED__, void *image) | ||
2952 | { | ||
2953 | Evas_GL_Image *gim = image; | ||
2954 | Image_Entry *im; | ||
2955 | |||
2956 | if (!gim) return EVAS_IMAGE_ANIMATED_HINT_NONE; | ||
2957 | im = (Image_Entry *)gim->im; | ||
2958 | if (!im) return EVAS_IMAGE_ANIMATED_HINT_NONE; | ||
2959 | |||
2960 | if (!im->flags.animated) return EVAS_IMAGE_ANIMATED_HINT_NONE; | ||
2961 | return im->loop_hint; | ||
2962 | } | ||
2963 | |||
2964 | static int | ||
2965 | eng_image_animated_loop_count_get(void *data __UNUSED__, void *image) | ||
2966 | { | ||
2967 | Evas_GL_Image *gim = image; | ||
2968 | Image_Entry *im; | ||
2969 | |||
2970 | if (!gim) return -1; | ||
2971 | im = (Image_Entry *)gim->im; | ||
2972 | if (!im) return -1; | ||
2973 | |||
2974 | if (!im->flags.animated) return -1; | ||
2975 | return im->loop_count; | ||
2976 | } | ||
2977 | |||
2978 | static double | ||
2979 | eng_image_animated_frame_duration_get(void *data __UNUSED__, void *image, int start_frame, int frame_num) | ||
2980 | { | ||
2981 | Evas_GL_Image *gim = image; | ||
2982 | Image_Entry *im; | ||
2983 | |||
2984 | if (!gim) return -1; | ||
2985 | im = (Image_Entry *)gim->im; | ||
2986 | if (!im) return -1; | ||
2987 | |||
2988 | if (!im->flags.animated) return -1; | ||
2989 | return evas_common_load_rgba_image_frame_duration_from_file(im, start_frame, frame_num); | ||
2990 | } | ||
2991 | |||
2992 | static Eina_Bool | ||
2993 | eng_image_animated_frame_set(void *data __UNUSED__, void *image, int frame_index) | ||
2994 | { | ||
2995 | Evas_GL_Image *gim = image; | ||
2996 | Image_Entry *im; | ||
2997 | |||
2998 | if (!gim) return EINA_FALSE; | ||
2999 | im = (Image_Entry *)gim->im; | ||
3000 | if (!im) return EINA_FALSE; | ||
3001 | |||
3002 | if (!im->flags.animated) return EINA_FALSE; | ||
3003 | if (im->cur_frame == frame_index) return EINA_FALSE; | ||
3004 | |||
3005 | im->cur_frame = frame_index; | ||
3006 | return EINA_TRUE; | ||
3007 | } | ||
3008 | |||
3009 | static Eina_Bool | ||
3010 | eng_image_can_region_get(void *data __UNUSED__, void *image) | ||
3011 | { | ||
3012 | Evas_GL_Image *gim = image; | ||
3013 | Image_Entry *im; | ||
3014 | if (!gim) return EINA_FALSE; | ||
3015 | im = (Image_Entry *)gim->im; | ||
3016 | if (!im) return EINA_FALSE; | ||
3017 | return ((Evas_Image_Load_Func*) im->info.loader)->do_region; | ||
3018 | } | ||
3019 | |||
3020 | |||
3021 | static void | ||
3022 | eng_image_max_size_get(void *data, int *maxw, int *maxh) | ||
3023 | { | ||
3024 | Render_Engine *re = (Render_Engine *)data; | ||
3025 | if (maxw) *maxw = re->win->gl_context->shared->info.max_texture_size; | ||
3026 | if (maxh) *maxh = re->win->gl_context->shared->info.max_texture_size; | ||
3027 | } | ||
3028 | |||
3029 | static int | ||
3030 | module_open(Evas_Module *em) | ||
3031 | { | ||
3032 | static Eina_Bool xrm_inited = EINA_FALSE; | ||
3033 | if (!xrm_inited) | ||
3034 | { | ||
3035 | xrm_inited = EINA_TRUE; | ||
3036 | XrmInitialize(); | ||
3037 | } | ||
3038 | |||
3039 | if (!em) return 0; | ||
3040 | if (!evas_gl_common_module_open()) return 0; | ||
3041 | /* get whatever engine module we inherit from */ | ||
3042 | if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0; | ||
3043 | if (_evas_engine_wl_egl_log_dom < 0) | ||
3044 | { | ||
3045 | _evas_engine_wl_egl_log_dom = | ||
3046 | eina_log_domain_register("evas-gl_x11", EVAS_DEFAULT_LOG_COLOR); | ||
3047 | } | ||
3048 | |||
3049 | if (_evas_engine_wl_egl_log_dom < 0) | ||
3050 | { | ||
3051 | EINA_LOG_ERR("Can not create a module log domain."); | ||
3052 | return 0; | ||
3053 | } | ||
3054 | /* store it for later use */ | ||
3055 | func = pfunc; | ||
3056 | /* now to override methods */ | ||
3057 | #define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_) | ||
3058 | ORD(info); | ||
3059 | ORD(info_free); | ||
3060 | ORD(setup); | ||
3061 | ORD(canvas_alpha_get); | ||
3062 | ORD(output_free); | ||
3063 | ORD(output_resize); | ||
3064 | ORD(output_tile_size_set); | ||
3065 | ORD(output_redraws_rect_add); | ||
3066 | ORD(output_redraws_rect_del); | ||
3067 | ORD(output_redraws_clear); | ||
3068 | ORD(output_redraws_next_update_get); | ||
3069 | ORD(output_redraws_next_update_push); | ||
3070 | ORD(context_cutout_add); | ||
3071 | ORD(context_cutout_clear); | ||
3072 | ORD(output_flush); | ||
3073 | ORD(output_idle_flush); | ||
3074 | ORD(output_dump); | ||
3075 | ORD(rectangle_draw); | ||
3076 | ORD(line_draw); | ||
3077 | ORD(polygon_point_add); | ||
3078 | ORD(polygon_points_clear); | ||
3079 | ORD(polygon_draw); | ||
3080 | |||
3081 | ORD(image_load); | ||
3082 | ORD(image_new_from_data); | ||
3083 | ORD(image_new_from_copied_data); | ||
3084 | ORD(image_free); | ||
3085 | ORD(image_size_get); | ||
3086 | ORD(image_size_set); | ||
3087 | ORD(image_dirty_region); | ||
3088 | ORD(image_data_get); | ||
3089 | ORD(image_data_put); | ||
3090 | ORD(image_data_preload_request); | ||
3091 | ORD(image_data_preload_cancel); | ||
3092 | ORD(image_alpha_set); | ||
3093 | ORD(image_alpha_get); | ||
3094 | ORD(image_border_set); | ||
3095 | ORD(image_border_get); | ||
3096 | ORD(image_draw); | ||
3097 | ORD(image_comment_get); | ||
3098 | ORD(image_format_get); | ||
3099 | ORD(image_colorspace_set); | ||
3100 | ORD(image_colorspace_get); | ||
3101 | ORD(image_can_region_get); | ||
3102 | ORD(image_mask_create); | ||
3103 | ORD(image_native_set); | ||
3104 | ORD(image_native_get); | ||
3105 | #if 0 // filtering disabled | ||
3106 | ORD(image_draw_filtered); | ||
3107 | ORD(image_filtered_get); | ||
3108 | ORD(image_filtered_save); | ||
3109 | ORD(image_filtered_free); | ||
3110 | #endif | ||
3111 | |||
3112 | ORD(font_draw); | ||
3113 | |||
3114 | ORD(image_scale_hint_set); | ||
3115 | ORD(image_scale_hint_get); | ||
3116 | ORD(image_stride_get); | ||
3117 | |||
3118 | ORD(image_map_draw); | ||
3119 | ORD(image_map_surface_new); | ||
3120 | ORD(image_map_surface_free); | ||
3121 | |||
3122 | ORD(image_content_hint_set); | ||
3123 | ORD(image_content_hint_get); | ||
3124 | |||
3125 | ORD(image_cache_flush); | ||
3126 | ORD(image_cache_set); | ||
3127 | ORD(image_cache_get); | ||
3128 | |||
3129 | ORD(gl_surface_create); | ||
3130 | ORD(gl_surface_destroy); | ||
3131 | ORD(gl_context_create); | ||
3132 | ORD(gl_context_destroy); | ||
3133 | ORD(gl_make_current); | ||
3134 | ORD(gl_string_query); | ||
3135 | ORD(gl_proc_address_get); | ||
3136 | ORD(gl_native_surface_get); | ||
3137 | ORD(gl_api_get); | ||
3138 | |||
3139 | ORD(image_load_error_get); | ||
3140 | |||
3141 | /* now advertise out own api */ | ||
3142 | ORD(image_animated_get); | ||
3143 | ORD(image_animated_frame_count_get); | ||
3144 | ORD(image_animated_loop_type_get); | ||
3145 | ORD(image_animated_loop_count_get); | ||
3146 | ORD(image_animated_frame_duration_get); | ||
3147 | ORD(image_animated_frame_set); | ||
3148 | |||
3149 | ORD(image_max_size_get); | ||
3150 | |||
3151 | /* now advertise out own api */ | ||
3152 | em->functions = (void *)(&func); | ||
3153 | return 1; | ||
3154 | } | ||
3155 | |||
3156 | static void | ||
3157 | module_close(Evas_Module *em __UNUSED__) | ||
3158 | { | ||
3159 | eina_log_domain_unregister(_evas_engine_wl_egl_log_dom); | ||
3160 | evas_gl_common_module_close(); | ||
3161 | } | ||
3162 | |||
3163 | static Evas_Module_Api evas_modapi = | ||
3164 | { | ||
3165 | EVAS_MODULE_API_VERSION, "wayland_egl", "none", {module_open, module_close} | ||
3166 | }; | ||
3167 | |||
3168 | EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, gl_x11); | ||
3169 | |||
3170 | #ifndef EVAS_STATIC_BUILD_GL_XLIB | ||
3171 | EVAS_EINA_MODULE_DEFINE(engine, gl_x11); | ||
3172 | #endif | ||
3173 | |||
3174 | /* vim:set ts=8 sw=3 sts=3 expandtab cino=>5n-2f0^-2{2(0W1st0 :*/ | ||
diff --git a/libraries/evas/src/modules/engines/wayland_egl/evas_engine.h b/libraries/evas/src/modules/engines/wayland_egl/evas_engine.h new file mode 100644 index 0000000..204d793 --- /dev/null +++ b/libraries/evas/src/modules/engines/wayland_egl/evas_engine.h | |||
@@ -0,0 +1,82 @@ | |||
1 | #ifndef EVAS_ENGINE_H | ||
2 | #define EVAS_ENGINE_H | ||
3 | |||
4 | #include "config.h" | ||
5 | #include "evas_common.h" | ||
6 | #include "evas_private.h" | ||
7 | #include "evas_gl_common.h" | ||
8 | #include "Evas.h" | ||
9 | #include "Evas_Engine_Wayland_Egl.h" | ||
10 | |||
11 | #define GL_GLEXT_PROTOTYPES | ||
12 | |||
13 | #include <EGL/egl.h> | ||
14 | #include <GLES2/gl2.h> | ||
15 | #include <GLES2/gl2ext.h> | ||
16 | #include <wayland-egl.h> | ||
17 | |||
18 | extern int _evas_engine_wl_egl_log_dom; | ||
19 | #ifdef ERR | ||
20 | # undef ERR | ||
21 | #endif | ||
22 | #define ERR(...) EINA_LOG_DOM_ERR(_evas_engine_wl_egl_log_dom, __VA_ARGS__) | ||
23 | |||
24 | #ifdef DBG | ||
25 | # undef DBG | ||
26 | #endif | ||
27 | #define DBG(...) EINA_LOG_DOM_DBG(_evas_engine_wl_egl_log_dom, __VA_ARGS__) | ||
28 | |||
29 | #ifdef INF | ||
30 | # undef INF | ||
31 | #endif | ||
32 | #define INF(...) EINA_LOG_DOM_INFO(_evas_engine_wl_egl_log_dom, __VA_ARGS__) | ||
33 | |||
34 | #ifdef WRN | ||
35 | # undef WRN | ||
36 | #endif | ||
37 | #define WRN(...) EINA_LOG_DOM_WARN(_evas_engine_wl_egl_log_dom, __VA_ARGS__) | ||
38 | |||
39 | #ifdef CRIT | ||
40 | # undef CRIT | ||
41 | #endif | ||
42 | #define CRIT(...) EINA_LOG_DOM_CRIT(_evas_engine_wl_egl_log_dom, __VA_ARGS__) | ||
43 | |||
44 | typedef struct _Evas_GL_Wl_Window Evas_GL_Wl_Window; | ||
45 | |||
46 | struct _Evas_GL_Wl_Window | ||
47 | { | ||
48 | struct wl_display *disp; | ||
49 | struct wl_egl_window *win; | ||
50 | struct wl_surface *surface; | ||
51 | int w, h; | ||
52 | int screen; | ||
53 | // XVisualInfo *visualinfo; | ||
54 | // Visual *visual; | ||
55 | // Colormap colormap; | ||
56 | int depth; | ||
57 | int alpha; | ||
58 | int rot; | ||
59 | Evas_Engine_GL_Context *gl_context; | ||
60 | struct { | ||
61 | int redraw : 1; | ||
62 | int drew : 1; | ||
63 | int x1, y1, x2, y2; | ||
64 | } draw; | ||
65 | EGLContext egl_context[1]; | ||
66 | EGLSurface egl_surface[1]; | ||
67 | EGLConfig egl_config; | ||
68 | EGLDisplay egl_disp; | ||
69 | int surf : 1; | ||
70 | }; | ||
71 | |||
72 | Evas_GL_Wl_Window *eng_window_new(struct wl_display *disp, struct wl_surface *surface, int screen, | ||
73 | int depth, int w, int h, int indirect, | ||
74 | int alpha, int rot); | ||
75 | void eng_window_free(Evas_GL_Wl_Window *gw); | ||
76 | void eng_window_use(Evas_GL_Wl_Window *gw); | ||
77 | void eng_window_unsurf(Evas_GL_Wl_Window *gw); | ||
78 | void eng_window_resurf(Evas_GL_Wl_Window *gw); | ||
79 | |||
80 | int eng_best_depth_get(Evas_Engine_Info_Wayland_Egl *einfo); | ||
81 | |||
82 | #endif | ||
diff --git a/libraries/evas/src/modules/engines/wayland_egl/evas_wl_main.c b/libraries/evas/src/modules/engines/wayland_egl/evas_wl_main.c new file mode 100644 index 0000000..537fcc6 --- /dev/null +++ b/libraries/evas/src/modules/engines/wayland_egl/evas_wl_main.c | |||
@@ -0,0 +1,323 @@ | |||
1 | #include "evas_engine.h" | ||
2 | |||
3 | static Evas_GL_Wl_Window *_evas_gl_wl_window = NULL; | ||
4 | |||
5 | static EGLContext context = EGL_NO_CONTEXT; | ||
6 | |||
7 | // fixme: something is up/wrong here - dont know what tho... | ||
8 | //#define NEWGL 1 | ||
9 | |||
10 | static int win_count = 0; | ||
11 | |||
12 | Evas_GL_Wl_Window * | ||
13 | eng_window_new(struct wl_display *disp, struct wl_surface *surface, int screen, | ||
14 | int depth, int w, int h, int indirect, int alpha, int rot) | ||
15 | { | ||
16 | Evas_GL_Wl_Window *gw; | ||
17 | int context_attrs[3]; | ||
18 | int config_attrs[40]; | ||
19 | int major_version, minor_version; | ||
20 | int num_config, n = 0; | ||
21 | const GLubyte *vendor, *renderer, *version; | ||
22 | |||
23 | gw = calloc(1, sizeof(Evas_GL_Wl_Window)); | ||
24 | if (!gw) return NULL; | ||
25 | |||
26 | win_count++; | ||
27 | gw->disp = disp; | ||
28 | gw->surface = surface; | ||
29 | gw->screen = screen; | ||
30 | gw->depth = depth; | ||
31 | gw->alpha = alpha; | ||
32 | gw->w = w; | ||
33 | gw->h = h; | ||
34 | gw->rot = rot; | ||
35 | |||
36 | // EGL / GLES | ||
37 | context_attrs[0] = EGL_CONTEXT_CLIENT_VERSION; | ||
38 | context_attrs[1] = 2; | ||
39 | context_attrs[2] = EGL_NONE; | ||
40 | |||
41 | #if defined(GLES_VARIETY_S3C6410) | ||
42 | if (gw->visualinfo->depth == 16) // 16bpp | ||
43 | { | ||
44 | config_attrs[n++] = EGL_SURFACE_TYPE; | ||
45 | config_attrs[n++] = EGL_WINDOW_BIT; | ||
46 | config_attrs[n++] = EGL_RENDERABLE_TYPE; | ||
47 | config_attrs[n++] = EGL_OPENGL_ES2_BIT; | ||
48 | config_attrs[n++] = EGL_RED_SIZE; | ||
49 | config_attrs[n++] = 5; | ||
50 | config_attrs[n++] = EGL_GREEN_SIZE; | ||
51 | config_attrs[n++] = 6; | ||
52 | config_attrs[n++] = EGL_BLUE_SIZE; | ||
53 | config_attrs[n++] = 5; | ||
54 | config_attrs[n++] = EGL_DEPTH_SIZE; | ||
55 | config_attrs[n++] = 0; | ||
56 | config_attrs[n++] = EGL_STENCIL_SIZE; | ||
57 | config_attrs[n++] = 0; | ||
58 | config_attrs[n++] = EGL_NONE; | ||
59 | } | ||
60 | else // 24/32bit. no one does 8bpp anymore. and 15bpp... dead | ||
61 | { | ||
62 | config_attrs[n++] = EGL_SURFACE_TYPE; | ||
63 | config_attrs[n++] = EGL_WINDOW_BIT; | ||
64 | config_attrs[n++] = EGL_RENDERABLE_TYPE; | ||
65 | config_attrs[n++] = EGL_OPENGL_ES2_BIT; | ||
66 | config_attrs[n++] = EGL_RED_SIZE; | ||
67 | config_attrs[n++] = 8; | ||
68 | config_attrs[n++] = EGL_GREEN_SIZE; | ||
69 | config_attrs[n++] = 8; | ||
70 | config_attrs[n++] = EGL_BLUE_SIZE; | ||
71 | config_attrs[n++] = 8; | ||
72 | config_attrs[n++] = EGL_DEPTH_SIZE; | ||
73 | config_attrs[n++] = 0; | ||
74 | config_attrs[n++] = EGL_STENCIL_SIZE; | ||
75 | config_attrs[n++] = 0; | ||
76 | config_attrs[n++] = EGL_NONE; | ||
77 | } | ||
78 | #elif defined(GLES_VARIETY_SGX) | ||
79 | config_attrs[n++] = EGL_SURFACE_TYPE; | ||
80 | config_attrs[n++] = EGL_WINDOW_BIT; | ||
81 | config_attrs[n++] = EGL_RENDERABLE_TYPE; | ||
82 | config_attrs[n++] = EGL_OPENGL_ES2_BIT; | ||
83 | # if 0 | ||
84 | // FIXME: n900 - omap3 sgx libs break here | ||
85 | config_attrs[n++] = EGL_RED_SIZE; | ||
86 | config_attrs[n++] = 1; | ||
87 | config_attrs[n++] = EGL_GREEN_SIZE; | ||
88 | config_attrs[n++] = 1; | ||
89 | config_attrs[n++] = EGL_BLUE_SIZE; | ||
90 | config_attrs[n++] = 1; | ||
91 | // FIXME: end n900 breakage | ||
92 | # endif | ||
93 | if (gw->alpha) | ||
94 | { | ||
95 | config_attrs[n++] = EGL_ALPHA_SIZE; | ||
96 | config_attrs[n++] = 1; | ||
97 | } | ||
98 | else | ||
99 | { | ||
100 | config_attrs[n++] = EGL_ALPHA_SIZE; | ||
101 | config_attrs[n++] = 0; | ||
102 | } | ||
103 | config_attrs[n++] = EGL_DEPTH_SIZE; | ||
104 | config_attrs[n++] = 0; | ||
105 | config_attrs[n++] = EGL_STENCIL_SIZE; | ||
106 | config_attrs[n++] = 0; | ||
107 | config_attrs[n++] = EGL_NONE; | ||
108 | #endif | ||
109 | |||
110 | gw->egl_disp = eglGetDisplay((EGLNativeDisplayType)(gw->disp)); | ||
111 | if (!gw->egl_disp) | ||
112 | { | ||
113 | ERR("eglGetDisplay() fail. code=%#x", eglGetError()); | ||
114 | eng_window_free(gw); | ||
115 | return NULL; | ||
116 | } | ||
117 | if (!eglInitialize(gw->egl_disp, &major_version, &minor_version)) | ||
118 | { | ||
119 | ERR("eglInitialize() fail. code=%#x", eglGetError()); | ||
120 | eng_window_free(gw); | ||
121 | return NULL; | ||
122 | } | ||
123 | eglBindAPI(EGL_OPENGL_ES_API); | ||
124 | if (eglGetError() != EGL_SUCCESS) | ||
125 | { | ||
126 | ERR("eglBindAPI() fail. code=%#x", eglGetError()); | ||
127 | eng_window_free(gw); | ||
128 | return NULL; | ||
129 | } | ||
130 | |||
131 | num_config = 0; | ||
132 | if (!eglChooseConfig(gw->egl_disp, config_attrs, &gw->egl_config, | ||
133 | 1, &num_config) || (num_config != 1)) | ||
134 | { | ||
135 | ERR("eglChooseConfig() fail. code=%#x", eglGetError()); | ||
136 | eng_window_free(gw); | ||
137 | return NULL; | ||
138 | } | ||
139 | |||
140 | gw->win = wl_egl_window_create(gw->surface, gw->w, gw->h); | ||
141 | |||
142 | gw->egl_surface[0] = eglCreateWindowSurface(gw->egl_disp, gw->egl_config, | ||
143 | (EGLNativeWindowType)gw->win, | ||
144 | NULL); | ||
145 | if (gw->egl_surface[0] == EGL_NO_SURFACE) | ||
146 | { | ||
147 | ERR("eglCreateWindowSurface() fail for %#x. code=%#x", | ||
148 | (unsigned int)gw->win, eglGetError()); | ||
149 | eng_window_free(gw); | ||
150 | return NULL; | ||
151 | } | ||
152 | |||
153 | if (context == EGL_NO_CONTEXT) | ||
154 | context = eglCreateContext(gw->egl_disp, gw->egl_config, NULL, | ||
155 | context_attrs); | ||
156 | gw->egl_context[0] = context; | ||
157 | if (gw->egl_context[0] == EGL_NO_CONTEXT) | ||
158 | { | ||
159 | ERR("eglCreateContext() fail. code=%#x", eglGetError()); | ||
160 | eng_window_free(gw); | ||
161 | return NULL; | ||
162 | } | ||
163 | |||
164 | if (eglMakeCurrent(gw->egl_disp, gw->egl_surface[0], gw->egl_surface[0], | ||
165 | gw->egl_context[0]) == EGL_FALSE) | ||
166 | { | ||
167 | ERR("eglMakeCurrent() fail. code=%#x", eglGetError()); | ||
168 | eng_window_free(gw); | ||
169 | return NULL; | ||
170 | } | ||
171 | |||
172 | vendor = glGetString(GL_VENDOR); | ||
173 | renderer = glGetString(GL_RENDERER); | ||
174 | version = glGetString(GL_VERSION); | ||
175 | if (!vendor) vendor = (unsigned char *)"-UNKNOWN-"; | ||
176 | if (!renderer) renderer = (unsigned char *)"-UNKNOWN-"; | ||
177 | if (!version) version = (unsigned char *)"-UNKNOWN-"; | ||
178 | if (getenv("EVAS_GL_INFO")) | ||
179 | { | ||
180 | fprintf(stderr, "vendor: %s\n", vendor); | ||
181 | fprintf(stderr, "renderer: %s\n", renderer); | ||
182 | fprintf(stderr, "version: %s\n", version); | ||
183 | } | ||
184 | |||
185 | gw->gl_context = evas_gl_common_context_new(); | ||
186 | if (!gw->gl_context) | ||
187 | { | ||
188 | eng_window_free(gw); | ||
189 | return NULL; | ||
190 | } | ||
191 | gw->gl_context->egldisp = gw->egl_disp; | ||
192 | eng_window_use(gw); | ||
193 | evas_gl_common_context_resize(gw->gl_context, w, h, rot); | ||
194 | gw->surf = 1; | ||
195 | return gw; | ||
196 | indirect = 0; | ||
197 | } | ||
198 | |||
199 | void | ||
200 | eng_window_free(Evas_GL_Wl_Window *gw) | ||
201 | { | ||
202 | int ref = 0; | ||
203 | |||
204 | win_count--; | ||
205 | eng_window_use(gw); | ||
206 | if (gw == _evas_gl_wl_window) _evas_gl_wl_window = NULL; | ||
207 | // if (gw->win) wl_egl_window_destroy(gw->win); | ||
208 | if (gw->gl_context) | ||
209 | { | ||
210 | ref = gw->gl_context->references - 1; | ||
211 | evas_gl_common_context_free(gw->gl_context); | ||
212 | } | ||
213 | if (gw->egl_surface[0] != EGL_NO_SURFACE) | ||
214 | eglDestroySurface(gw->egl_disp, gw->egl_surface[0]); | ||
215 | eglMakeCurrent(gw->egl_disp, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); | ||
216 | if (ref == 0) | ||
217 | { | ||
218 | if (context) eglDestroyContext(gw->egl_disp, context); | ||
219 | context = EGL_NO_CONTEXT; | ||
220 | eglTerminate(gw->egl_disp); | ||
221 | eglReleaseThread(); | ||
222 | } | ||
223 | free(gw); | ||
224 | } | ||
225 | |||
226 | void | ||
227 | eng_window_use(Evas_GL_Wl_Window *gw) | ||
228 | { | ||
229 | Eina_Bool force_use = EINA_FALSE; | ||
230 | |||
231 | if (_evas_gl_wl_window) | ||
232 | { | ||
233 | if ((eglGetCurrentContext() != | ||
234 | _evas_gl_wl_window->egl_context[0]) || | ||
235 | (eglGetCurrentSurface(EGL_READ) != | ||
236 | _evas_gl_wl_window->egl_surface[0]) || | ||
237 | (eglGetCurrentSurface(EGL_DRAW) != | ||
238 | _evas_gl_wl_window->egl_surface[0])) | ||
239 | force_use = EINA_TRUE; | ||
240 | } | ||
241 | if ((_evas_gl_wl_window != gw) || (force_use)) | ||
242 | { | ||
243 | if (_evas_gl_wl_window) | ||
244 | { | ||
245 | evas_gl_common_context_use(_evas_gl_wl_window->gl_context); | ||
246 | evas_gl_common_context_flush(_evas_gl_wl_window->gl_context); | ||
247 | } | ||
248 | _evas_gl_wl_window = gw; | ||
249 | if (gw) | ||
250 | { | ||
251 | // EGL / GLES | ||
252 | if (gw->egl_surface[0] != EGL_NO_SURFACE) | ||
253 | { | ||
254 | if (eglMakeCurrent(gw->egl_disp, gw->egl_surface[0], | ||
255 | gw->egl_surface[0], | ||
256 | gw->egl_context[0]) == EGL_FALSE) | ||
257 | { | ||
258 | ERR("eglMakeCurrent() failed!"); | ||
259 | } | ||
260 | } | ||
261 | } | ||
262 | } | ||
263 | if (gw) evas_gl_common_context_use(gw->gl_context); | ||
264 | } | ||
265 | |||
266 | void | ||
267 | eng_window_unsurf(Evas_GL_Wl_Window *gw) | ||
268 | { | ||
269 | if (!gw->surf) return; | ||
270 | if (!getenv("EVAS_GL_WIN_RESURF")) return; | ||
271 | if (getenv("EVAS_GL_INFO")) printf("unsurf %p\n", gw); | ||
272 | |||
273 | if (_evas_gl_wl_window) | ||
274 | evas_gl_common_context_flush(_evas_gl_wl_window->gl_context); | ||
275 | if (_evas_gl_wl_window == gw) | ||
276 | { | ||
277 | eglMakeCurrent(gw->egl_disp, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); | ||
278 | if (gw->egl_surface[0] != EGL_NO_SURFACE) | ||
279 | eglDestroySurface(gw->egl_disp, gw->egl_surface[0]); | ||
280 | gw->egl_surface[0] = EGL_NO_SURFACE; | ||
281 | _evas_gl_wl_window = NULL; | ||
282 | } | ||
283 | gw->surf = 0; | ||
284 | } | ||
285 | |||
286 | void | ||
287 | eng_window_resurf(Evas_GL_Wl_Window *gw) | ||
288 | { | ||
289 | if (gw->surf) return; | ||
290 | if (getenv("EVAS_GL_INFO")) printf("resurf %p\n", gw); | ||
291 | |||
292 | gw->egl_surface[0] = | ||
293 | eglCreateWindowSurface(gw->egl_disp, gw->egl_config, | ||
294 | (EGLNativeWindowType)gw->win, NULL); | ||
295 | |||
296 | if (gw->egl_surface[0] == EGL_NO_SURFACE) | ||
297 | { | ||
298 | ERR("eglCreateWindowSurface() fail for %#x. code=%#x", | ||
299 | (unsigned int)gw->win, eglGetError()); | ||
300 | return; | ||
301 | } | ||
302 | if (eglMakeCurrent(gw->egl_disp, gw->egl_surface[0], gw->egl_surface[0], | ||
303 | gw->egl_context[0]) == EGL_FALSE) | ||
304 | { | ||
305 | ERR("eglMakeCurrent() failed!"); | ||
306 | } | ||
307 | gw->surf = 1; | ||
308 | } | ||
309 | |||
310 | int | ||
311 | eng_best_depth_get(Evas_Engine_Info_Wayland_Egl *einfo) | ||
312 | { | ||
313 | if (!einfo) return 0; | ||
314 | if (!einfo->info.display) return 0; | ||
315 | return 32; | ||
316 | /* if (!_evas_gl_x11_vi) eng_best_visual_get(einfo); */ | ||
317 | /* if (!_evas_gl_x11_vi) return 0; */ | ||
318 | /* if (einfo->info.destination_alpha) */ | ||
319 | /* { */ | ||
320 | /* if (_evas_gl_x11_rgba_vi) return _evas_gl_x11_rgba_vi->depth; */ | ||
321 | /* } */ | ||
322 | /* return _evas_gl_x11_vi->depth; */ | ||
323 | } | ||
diff --git a/libraries/evas/src/modules/engines/wayland_shm/Evas_Engine_Wayland_Shm.h b/libraries/evas/src/modules/engines/wayland_shm/Evas_Engine_Wayland_Shm.h new file mode 100644 index 0000000..b34b2c1 --- /dev/null +++ b/libraries/evas/src/modules/engines/wayland_shm/Evas_Engine_Wayland_Shm.h | |||
@@ -0,0 +1,20 @@ | |||
1 | #ifndef _EVAS_ENGINE_WAYLAND_SHM_H | ||
2 | # define _EVAS_ENGINE_WAYLAND_SHM_H | ||
3 | |||
4 | typedef struct _Evas_Engine_Info_Wayland_Shm Evas_Engine_Info_Wayland_Shm; | ||
5 | struct _Evas_Engine_Info_Wayland_Shm | ||
6 | { | ||
7 | Evas_Engine_Info magic; | ||
8 | |||
9 | struct | ||
10 | { | ||
11 | void *dest; | ||
12 | int rotation; | ||
13 | |||
14 | unsigned char debug : 1; | ||
15 | } info; | ||
16 | |||
17 | Evas_Engine_Render_Mode render_mode; | ||
18 | }; | ||
19 | |||
20 | #endif | ||
diff --git a/libraries/evas/src/modules/engines/wayland_shm/Makefile.am b/libraries/evas/src/modules/engines/wayland_shm/Makefile.am new file mode 100644 index 0000000..455b82c --- /dev/null +++ b/libraries/evas/src/modules/engines/wayland_shm/Makefile.am | |||
@@ -0,0 +1,45 @@ | |||
1 | |||
2 | MAINTAINERCLEANFILES = Makefile.in | ||
3 | |||
4 | AM_CPPFLAGS = \ | ||
5 | -I. \ | ||
6 | -I$(top_srcdir)/src/lib \ | ||
7 | -I$(top_srcdir)/src/lib/include \ | ||
8 | -I$(top_srcdir)/src/modules/engines \ | ||
9 | @FREETYPE_CFLAGS@ \ | ||
10 | @EINA_CFLAGS@ \ | ||
11 | @evas_engine_wayland_shm_cflags@ | ||
12 | |||
13 | if BUILD_ENGINE_WAYLAND_SHM | ||
14 | |||
15 | WAYLAND_SHM_SOURCES = \ | ||
16 | evas_engine.c \ | ||
17 | evas_outbuf.c | ||
18 | |||
19 | WAYLAND_SHM_LIBADD = @FREETYPE_LIBS@ @EINA_LIBS@ @evas_engine_wayland_shm_libs@ | ||
20 | |||
21 | includes_HEADERS = Evas_Engine_Wayland_Shm.h | ||
22 | includesdir = $(includedir)/evas-@VMAJ@ | ||
23 | |||
24 | if !EVAS_STATIC_BUILD_WAYLAND_SHM | ||
25 | |||
26 | pkgdir = $(libdir)/evas/modules/engines/wayland_shm/$(MODULE_ARCH) | ||
27 | pkg_LTLIBRARIES = module.la | ||
28 | |||
29 | module_la_SOURCES = $(WAYLAND_SHM_SOURCES) | ||
30 | module_la_LIBADD = $(WAYLAND_SHM_LIBADD) $(top_builddir)/src/lib/libevas.la | ||
31 | module_la_LDFLAGS = -no-undefined -module -avoid-version | ||
32 | module_la_LIBTOOLFLAGS = --tag=disable-static | ||
33 | |||
34 | else | ||
35 | |||
36 | noinst_LTLIBRARIES = libevas_engine_wayland_shm.la | ||
37 | |||
38 | libevas_engine_wayland_shm_la_SOURCES = $(WAYLAND_SHM_SOURCES) | ||
39 | libevas_engine_wayland_shm_la_LIBADD = $(WAYLAND_SHM_LIBADD) | ||
40 | |||
41 | endif | ||
42 | endif | ||
43 | |||
44 | EXTRA_DIST = \ | ||
45 | evas_engine.h | ||
diff --git a/libraries/evas/src/modules/engines/wayland_shm/Makefile.in b/libraries/evas/src/modules/engines/wayland_shm/Makefile.in new file mode 100644 index 0000000..4d69209 --- /dev/null +++ b/libraries/evas/src/modules/engines/wayland_shm/Makefile.in | |||
@@ -0,0 +1,816 @@ | |||
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 | |||
18 | |||
19 | VPATH = @srcdir@ | ||
20 | pkgdatadir = $(datadir)/@PACKAGE@ | ||
21 | pkgincludedir = $(includedir)/@PACKAGE@ | ||
22 | pkglibdir = $(libdir)/@PACKAGE@ | ||
23 | pkglibexecdir = $(libexecdir)/@PACKAGE@ | ||
24 | am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd | ||
25 | install_sh_DATA = $(install_sh) -c -m 644 | ||
26 | install_sh_PROGRAM = $(install_sh) -c | ||
27 | install_sh_SCRIPT = $(install_sh) -c | ||
28 | INSTALL_HEADER = $(INSTALL_DATA) | ||
29 | transform = $(program_transform_name) | ||
30 | NORMAL_INSTALL = : | ||
31 | PRE_INSTALL = : | ||
32 | POST_INSTALL = : | ||
33 | NORMAL_UNINSTALL = : | ||
34 | PRE_UNINSTALL = : | ||
35 | POST_UNINSTALL = : | ||
36 | build_triplet = @build@ | ||
37 | host_triplet = @host@ | ||
38 | subdir = src/modules/engines/wayland_shm | ||
39 | DIST_COMMON = $(am__includes_HEADERS_DIST) $(srcdir)/Makefile.am \ | ||
40 | $(srcdir)/Makefile.in | ||
41 | ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 | ||
42 | am__aclocal_m4_deps = $(top_srcdir)/m4/efl_attribute.m4 \ | ||
43 | $(top_srcdir)/m4/efl_coverage.m4 \ | ||
44 | $(top_srcdir)/m4/efl_doxygen.m4 \ | ||
45 | $(top_srcdir)/m4/efl_fnmatch.m4 \ | ||
46 | $(top_srcdir)/m4/efl_path_max.m4 $(top_srcdir)/m4/efl_tests.m4 \ | ||
47 | $(top_srcdir)/m4/evas_check_engine.m4 \ | ||
48 | $(top_srcdir)/m4/evas_check_loader.m4 \ | ||
49 | $(top_srcdir)/m4/evas_converter.m4 \ | ||
50 | $(top_srcdir)/m4/evas_dither.m4 \ | ||
51 | $(top_srcdir)/m4/evas_scaler.m4 $(top_srcdir)/m4/libtool.m4 \ | ||
52 | $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ | ||
53 | $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ | ||
54 | $(top_srcdir)/configure.ac | ||
55 | am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ | ||
56 | $(ACLOCAL_M4) | ||
57 | mkinstalldirs = $(install_sh) -d | ||
58 | CONFIG_HEADER = $(top_builddir)/config.h | ||
59 | CONFIG_CLEAN_FILES = | ||
60 | CONFIG_CLEAN_VPATH_FILES = | ||
61 | am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; | ||
62 | am__vpath_adj = case $$p in \ | ||
63 | $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ | ||
64 | *) f=$$p;; \ | ||
65 | esac; | ||
66 | am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; | ||
67 | am__install_max = 40 | ||
68 | am__nobase_strip_setup = \ | ||
69 | srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` | ||
70 | am__nobase_strip = \ | ||
71 | for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" | ||
72 | am__nobase_list = $(am__nobase_strip_setup); \ | ||
73 | for p in $$list; do echo "$$p $$p"; done | \ | ||
74 | sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ | ||
75 | $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ | ||
76 | if (++n[$$2] == $(am__install_max)) \ | ||
77 | { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ | ||
78 | END { for (dir in files) print dir, files[dir] }' | ||
79 | am__base_list = \ | ||
80 | sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ | ||
81 | sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | ||
82 | am__installdirs = "$(DESTDIR)$(pkgdir)" "$(DESTDIR)$(includesdir)" | ||
83 | LTLIBRARIES = $(noinst_LTLIBRARIES) $(pkg_LTLIBRARIES) | ||
84 | am__DEPENDENCIES_1 = | ||
85 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@@EVAS_STATIC_BUILD_WAYLAND_SHM_TRUE@libevas_engine_wayland_shm_la_DEPENDENCIES = $(am__DEPENDENCIES_1) | ||
86 | am__libevas_engine_wayland_shm_la_SOURCES_DIST = evas_engine.c \ | ||
87 | evas_outbuf.c | ||
88 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@am__objects_1 = evas_engine.lo \ | ||
89 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@ evas_outbuf.lo | ||
90 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@@EVAS_STATIC_BUILD_WAYLAND_SHM_TRUE@am_libevas_engine_wayland_shm_la_OBJECTS = $(am__objects_1) | ||
91 | libevas_engine_wayland_shm_la_OBJECTS = \ | ||
92 | $(am_libevas_engine_wayland_shm_la_OBJECTS) | ||
93 | AM_V_lt = $(am__v_lt_$(V)) | ||
94 | am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) | ||
95 | am__v_lt_0 = --silent | ||
96 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@@EVAS_STATIC_BUILD_WAYLAND_SHM_TRUE@am_libevas_engine_wayland_shm_la_rpath = | ||
97 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@@EVAS_STATIC_BUILD_WAYLAND_SHM_FALSE@module_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ | ||
98 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@@EVAS_STATIC_BUILD_WAYLAND_SHM_FALSE@ $(top_builddir)/src/lib/libevas.la | ||
99 | am__module_la_SOURCES_DIST = evas_engine.c evas_outbuf.c | ||
100 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@am__objects_2 = \ | ||
101 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@ module_la-evas_engine.lo \ | ||
102 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@ module_la-evas_outbuf.lo | ||
103 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@@EVAS_STATIC_BUILD_WAYLAND_SHM_FALSE@am_module_la_OBJECTS = $(am__objects_2) | ||
104 | module_la_OBJECTS = $(am_module_la_OBJECTS) | ||
105 | module_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ | ||
106 | $(module_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ | ||
107 | $(AM_CFLAGS) $(CFLAGS) $(module_la_LDFLAGS) $(LDFLAGS) -o $@ | ||
108 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@@EVAS_STATIC_BUILD_WAYLAND_SHM_FALSE@am_module_la_rpath = -rpath \ | ||
109 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@@EVAS_STATIC_BUILD_WAYLAND_SHM_FALSE@ $(pkgdir) | ||
110 | DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) | ||
111 | depcomp = $(SHELL) $(top_srcdir)/depcomp | ||
112 | am__depfiles_maybe = depfiles | ||
113 | am__mv = mv -f | ||
114 | COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ | ||
115 | $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) | ||
116 | LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ | ||
117 | $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ | ||
118 | $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ | ||
119 | $(AM_CFLAGS) $(CFLAGS) | ||
120 | AM_V_CC = $(am__v_CC_$(V)) | ||
121 | am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) | ||
122 | am__v_CC_0 = @echo " CC " $@; | ||
123 | AM_V_at = $(am__v_at_$(V)) | ||
124 | am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) | ||
125 | am__v_at_0 = @ | ||
126 | CCLD = $(CC) | ||
127 | LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ | ||
128 | $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ | ||
129 | $(AM_LDFLAGS) $(LDFLAGS) -o $@ | ||
130 | AM_V_CCLD = $(am__v_CCLD_$(V)) | ||
131 | am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) | ||
132 | am__v_CCLD_0 = @echo " CCLD " $@; | ||
133 | AM_V_GEN = $(am__v_GEN_$(V)) | ||
134 | am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) | ||
135 | am__v_GEN_0 = @echo " GEN " $@; | ||
136 | SOURCES = $(libevas_engine_wayland_shm_la_SOURCES) \ | ||
137 | $(module_la_SOURCES) | ||
138 | DIST_SOURCES = $(am__libevas_engine_wayland_shm_la_SOURCES_DIST) \ | ||
139 | $(am__module_la_SOURCES_DIST) | ||
140 | am__includes_HEADERS_DIST = Evas_Engine_Wayland_Shm.h | ||
141 | HEADERS = $(includes_HEADERS) | ||
142 | ETAGS = etags | ||
143 | CTAGS = ctags | ||
144 | DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) | ||
145 | ACLOCAL = @ACLOCAL@ | ||
146 | ALLOCA = @ALLOCA@ | ||
147 | AMTAR = @AMTAR@ | ||
148 | AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ | ||
149 | AR = @AR@ | ||
150 | AS = @AS@ | ||
151 | AUTOCONF = @AUTOCONF@ | ||
152 | AUTOHEADER = @AUTOHEADER@ | ||
153 | AUTOMAKE = @AUTOMAKE@ | ||
154 | AWK = @AWK@ | ||
155 | CC = @CC@ | ||
156 | CCDEPMODE = @CCDEPMODE@ | ||
157 | CFLAGS = @CFLAGS@ | ||
158 | CHECK_CFLAGS = @CHECK_CFLAGS@ | ||
159 | CHECK_LIBS = @CHECK_LIBS@ | ||
160 | CPP = @CPP@ | ||
161 | CPPFLAGS = @CPPFLAGS@ | ||
162 | CXX = @CXX@ | ||
163 | CXXCPP = @CXXCPP@ | ||
164 | CXXDEPMODE = @CXXDEPMODE@ | ||
165 | CXXFLAGS = @CXXFLAGS@ | ||
166 | CYGPATH_W = @CYGPATH_W@ | ||
167 | DEFS = @DEFS@ | ||
168 | DEPDIR = @DEPDIR@ | ||
169 | DIRECTFB_CFLAGS = @DIRECTFB_CFLAGS@ | ||
170 | DIRECTFB_LIBS = @DIRECTFB_LIBS@ | ||
171 | DLLTOOL = @DLLTOOL@ | ||
172 | DSYMUTIL = @DSYMUTIL@ | ||
173 | DUMPBIN = @DUMPBIN@ | ||
174 | ECHO_C = @ECHO_C@ | ||
175 | ECHO_N = @ECHO_N@ | ||
176 | ECHO_T = @ECHO_T@ | ||
177 | ECORE_EVAS_CFLAGS = @ECORE_EVAS_CFLAGS@ | ||
178 | ECORE_EVAS_LIBS = @ECORE_EVAS_LIBS@ | ||
179 | EDB_CFLAGS = @EDB_CFLAGS@ | ||
180 | EDB_LIBS = @EDB_LIBS@ | ||
181 | EDJE_CFLAGS = @EDJE_CFLAGS@ | ||
182 | EDJE_LIBS = @EDJE_LIBS@ | ||
183 | EET_CFLAGS = @EET_CFLAGS@ | ||
184 | EET_LIBS = @EET_LIBS@ | ||
185 | EFL_COVERAGE_CFLAGS = @EFL_COVERAGE_CFLAGS@ | ||
186 | EFL_COVERAGE_LIBS = @EFL_COVERAGE_LIBS@ | ||
187 | EFL_FNMATCH_LIBS = @EFL_FNMATCH_LIBS@ | ||
188 | EGREP = @EGREP@ | ||
189 | EINA_CFLAGS = @EINA_CFLAGS@ | ||
190 | EINA_LIBS = @EINA_LIBS@ | ||
191 | EVAS_CFLAGS = @EVAS_CFLAGS@ | ||
192 | EVAS_LIBS = @EVAS_LIBS@ | ||
193 | EVAS_SSE3_CFLAGS = @EVAS_SSE3_CFLAGS@ | ||
194 | EVIL_CFLAGS = @EVIL_CFLAGS@ | ||
195 | EVIL_LIBS = @EVIL_LIBS@ | ||
196 | EXEEXT = @EXEEXT@ | ||
197 | FGREP = @FGREP@ | ||
198 | FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ | ||
199 | FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ | ||
200 | FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ | ||
201 | FREETYPE_LIBS = @FREETYPE_LIBS@ | ||
202 | FRIBIDI_CFLAGS = @FRIBIDI_CFLAGS@ | ||
203 | FRIBIDI_LIBS = @FRIBIDI_LIBS@ | ||
204 | GL_EET_CFLAGS = @GL_EET_CFLAGS@ | ||
205 | GL_EET_LIBS = @GL_EET_LIBS@ | ||
206 | GREP = @GREP@ | ||
207 | HARFBUZZ_CFLAGS = @HARFBUZZ_CFLAGS@ | ||
208 | HARFBUZZ_LIBS = @HARFBUZZ_LIBS@ | ||
209 | INSTALL = @INSTALL@ | ||
210 | INSTALL_DATA = @INSTALL_DATA@ | ||
211 | INSTALL_PROGRAM = @INSTALL_PROGRAM@ | ||
212 | INSTALL_SCRIPT = @INSTALL_SCRIPT@ | ||
213 | INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ | ||
214 | LD = @LD@ | ||
215 | LDFLAGS = @LDFLAGS@ | ||
216 | LIBOBJS = @LIBOBJS@ | ||
217 | LIBS = @LIBS@ | ||
218 | LIBTOOL = @LIBTOOL@ | ||
219 | LINEBREAK_CFLAGS = @LINEBREAK_CFLAGS@ | ||
220 | LINEBREAK_LIBS = @LINEBREAK_LIBS@ | ||
221 | LIPO = @LIPO@ | ||
222 | LN_S = @LN_S@ | ||
223 | LTLIBOBJS = @LTLIBOBJS@ | ||
224 | MAKEINFO = @MAKEINFO@ | ||
225 | MKDIR_P = @MKDIR_P@ | ||
226 | MODULE_ARCH = @MODULE_ARCH@ | ||
227 | NM = @NM@ | ||
228 | NMEDIT = @NMEDIT@ | ||
229 | OBJC = @OBJC@ | ||
230 | OBJCDEPMODE = @OBJCDEPMODE@ | ||
231 | OBJCFLAGS = @OBJCFLAGS@ | ||
232 | OBJDUMP = @OBJDUMP@ | ||
233 | OBJEXT = @OBJEXT@ | ||
234 | OTOOL = @OTOOL@ | ||
235 | OTOOL64 = @OTOOL64@ | ||
236 | PACKAGE = @PACKAGE@ | ||
237 | PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ | ||
238 | PACKAGE_NAME = @PACKAGE_NAME@ | ||
239 | PACKAGE_STRING = @PACKAGE_STRING@ | ||
240 | PACKAGE_TARNAME = @PACKAGE_TARNAME@ | ||
241 | PACKAGE_URL = @PACKAGE_URL@ | ||
242 | PACKAGE_VERSION = @PACKAGE_VERSION@ | ||
243 | PATH_SEPARATOR = @PATH_SEPARATOR@ | ||
244 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | ||
245 | PIXMAN_LIBS = @PIXMAN_LIBS@ | ||
246 | PKG_CONFIG = @PKG_CONFIG@ | ||
247 | PNG_CFLAGS = @PNG_CFLAGS@ | ||
248 | PNG_LIBS = @PNG_LIBS@ | ||
249 | RANLIB = @RANLIB@ | ||
250 | SDL_CFLAGS = @SDL_CFLAGS@ | ||
251 | SDL_LIBS = @SDL_LIBS@ | ||
252 | SED = @SED@ | ||
253 | SET_MAKE = @SET_MAKE@ | ||
254 | SHELL = @SHELL@ | ||
255 | SHM_OPEN_LINK = @SHM_OPEN_LINK@ | ||
256 | STRIP = @STRIP@ | ||
257 | SVG_CFLAGS = @SVG_CFLAGS@ | ||
258 | SVG_LIBS = @SVG_LIBS@ | ||
259 | VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | ||
260 | VALGRIND_LIBS = @VALGRIND_LIBS@ | ||
261 | VERSION = @VERSION@ | ||
262 | VMAJ = @VMAJ@ | ||
263 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
264 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
265 | WIN32_CFLAGS = @WIN32_CFLAGS@ | ||
266 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | ||
267 | XCB_CFLAGS = @XCB_CFLAGS@ | ||
268 | XCB_GL_CFLAGS = @XCB_GL_CFLAGS@ | ||
269 | XCB_GL_LIBS = @XCB_GL_LIBS@ | ||
270 | XCB_LIBS = @XCB_LIBS@ | ||
271 | XEXT_CFLAGS = @XEXT_CFLAGS@ | ||
272 | XEXT_LIBS = @XEXT_LIBS@ | ||
273 | XMKMF = @XMKMF@ | ||
274 | X_CFLAGS = @X_CFLAGS@ | ||
275 | X_EXTRA_LIBS = @X_EXTRA_LIBS@ | ||
276 | X_LIBS = @X_LIBS@ | ||
277 | X_PRE_LIBS = @X_PRE_LIBS@ | ||
278 | abs_builddir = @abs_builddir@ | ||
279 | abs_srcdir = @abs_srcdir@ | ||
280 | abs_top_builddir = @abs_top_builddir@ | ||
281 | abs_top_srcdir = @abs_top_srcdir@ | ||
282 | ac_ct_CC = @ac_ct_CC@ | ||
283 | ac_ct_CXX = @ac_ct_CXX@ | ||
284 | ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ | ||
285 | ac_ct_OBJC = @ac_ct_OBJC@ | ||
286 | altivec_cflags = @altivec_cflags@ | ||
287 | am__include = @am__include@ | ||
288 | am__leading_dot = @am__leading_dot@ | ||
289 | am__quote = @am__quote@ | ||
290 | am__tar = @am__tar@ | ||
291 | am__untar = @am__untar@ | ||
292 | bindir = @bindir@ | ||
293 | build = @build@ | ||
294 | build_alias = @build_alias@ | ||
295 | build_cpu = @build_cpu@ | ||
296 | build_os = @build_os@ | ||
297 | build_vendor = @build_vendor@ | ||
298 | builddir = @builddir@ | ||
299 | datadir = @datadir@ | ||
300 | datarootdir = @datarootdir@ | ||
301 | dlopen_libs = @dlopen_libs@ | ||
302 | docdir = @docdir@ | ||
303 | dvidir = @dvidir@ | ||
304 | edje_cc = @edje_cc@ | ||
305 | efl_doxygen = @efl_doxygen@ | ||
306 | efl_have_doxygen = @efl_have_doxygen@ | ||
307 | evas_engine_buffer_cflags = @evas_engine_buffer_cflags@ | ||
308 | evas_engine_buffer_libs = @evas_engine_buffer_libs@ | ||
309 | evas_engine_direct3d_cflags = @evas_engine_direct3d_cflags@ | ||
310 | evas_engine_direct3d_libs = @evas_engine_direct3d_libs@ | ||
311 | evas_engine_directfb_cflags = @evas_engine_directfb_cflags@ | ||
312 | evas_engine_directfb_libs = @evas_engine_directfb_libs@ | ||
313 | evas_engine_fb_cflags = @evas_engine_fb_cflags@ | ||
314 | evas_engine_fb_libs = @evas_engine_fb_libs@ | ||
315 | evas_engine_gl_cocoa_cflags = @evas_engine_gl_cocoa_cflags@ | ||
316 | evas_engine_gl_cocoa_libs = @evas_engine_gl_cocoa_libs@ | ||
317 | evas_engine_gl_common_libs = @evas_engine_gl_common_libs@ | ||
318 | evas_engine_gl_sdl_cflags = @evas_engine_gl_sdl_cflags@ | ||
319 | evas_engine_gl_sdl_libs = @evas_engine_gl_sdl_libs@ | ||
320 | evas_engine_gl_xcb_cflags = @evas_engine_gl_xcb_cflags@ | ||
321 | evas_engine_gl_xcb_libs = @evas_engine_gl_xcb_libs@ | ||
322 | evas_engine_gl_xlib_cflags = @evas_engine_gl_xlib_cflags@ | ||
323 | evas_engine_gl_xlib_libs = @evas_engine_gl_xlib_libs@ | ||
324 | evas_engine_psl1ght_cflags = @evas_engine_psl1ght_cflags@ | ||
325 | evas_engine_psl1ght_libs = @evas_engine_psl1ght_libs@ | ||
326 | evas_engine_software_16_ddraw_cflags = @evas_engine_software_16_ddraw_cflags@ | ||
327 | evas_engine_software_16_ddraw_libs = @evas_engine_software_16_ddraw_libs@ | ||
328 | evas_engine_software_16_sdl_cflags = @evas_engine_software_16_sdl_cflags@ | ||
329 | evas_engine_software_16_sdl_libs = @evas_engine_software_16_sdl_libs@ | ||
330 | evas_engine_software_16_wince_cflags = @evas_engine_software_16_wince_cflags@ | ||
331 | evas_engine_software_16_wince_libs = @evas_engine_software_16_wince_libs@ | ||
332 | evas_engine_software_16_x11_cflags = @evas_engine_software_16_x11_cflags@ | ||
333 | evas_engine_software_16_x11_libs = @evas_engine_software_16_x11_libs@ | ||
334 | evas_engine_software_8_x11_cflags = @evas_engine_software_8_x11_cflags@ | ||
335 | evas_engine_software_8_x11_libs = @evas_engine_software_8_x11_libs@ | ||
336 | evas_engine_software_ddraw_cflags = @evas_engine_software_ddraw_cflags@ | ||
337 | evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@ | ||
338 | evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@ | ||
339 | evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@ | ||
340 | evas_engine_software_sdl_cflags = @evas_engine_software_sdl_cflags@ | ||
341 | evas_engine_software_sdl_libs = @evas_engine_software_sdl_libs@ | ||
342 | evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | ||
343 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | ||
344 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | ||
345 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | ||
346 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
347 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
348 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
349 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
350 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | ||
351 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | ||
352 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | ||
353 | evas_image_loader_edb_libs = @evas_image_loader_edb_libs@ | ||
354 | evas_image_loader_eet_cflags = @evas_image_loader_eet_cflags@ | ||
355 | evas_image_loader_eet_libs = @evas_image_loader_eet_libs@ | ||
356 | evas_image_loader_generic_cflags = @evas_image_loader_generic_cflags@ | ||
357 | evas_image_loader_generic_libs = @evas_image_loader_generic_libs@ | ||
358 | evas_image_loader_gif_cflags = @evas_image_loader_gif_cflags@ | ||
359 | evas_image_loader_gif_libs = @evas_image_loader_gif_libs@ | ||
360 | evas_image_loader_ico_cflags = @evas_image_loader_ico_cflags@ | ||
361 | evas_image_loader_ico_libs = @evas_image_loader_ico_libs@ | ||
362 | evas_image_loader_jpeg_cflags = @evas_image_loader_jpeg_cflags@ | ||
363 | evas_image_loader_jpeg_libs = @evas_image_loader_jpeg_libs@ | ||
364 | evas_image_loader_pmaps_cflags = @evas_image_loader_pmaps_cflags@ | ||
365 | evas_image_loader_pmaps_libs = @evas_image_loader_pmaps_libs@ | ||
366 | evas_image_loader_png_cflags = @evas_image_loader_png_cflags@ | ||
367 | evas_image_loader_png_libs = @evas_image_loader_png_libs@ | ||
368 | evas_image_loader_psd_cflags = @evas_image_loader_psd_cflags@ | ||
369 | evas_image_loader_psd_libs = @evas_image_loader_psd_libs@ | ||
370 | evas_image_loader_svg_cflags = @evas_image_loader_svg_cflags@ | ||
371 | evas_image_loader_svg_libs = @evas_image_loader_svg_libs@ | ||
372 | evas_image_loader_tga_cflags = @evas_image_loader_tga_cflags@ | ||
373 | evas_image_loader_tga_libs = @evas_image_loader_tga_libs@ | ||
374 | evas_image_loader_tiff_cflags = @evas_image_loader_tiff_cflags@ | ||
375 | evas_image_loader_tiff_libs = @evas_image_loader_tiff_libs@ | ||
376 | evas_image_loader_wbmp_cflags = @evas_image_loader_wbmp_cflags@ | ||
377 | evas_image_loader_wbmp_libs = @evas_image_loader_wbmp_libs@ | ||
378 | evas_image_loader_xpm_cflags = @evas_image_loader_xpm_cflags@ | ||
379 | evas_image_loader_xpm_libs = @evas_image_loader_xpm_libs@ | ||
380 | exec_prefix = @exec_prefix@ | ||
381 | have_evas_engine_gl_x11 = @have_evas_engine_gl_x11@ | ||
382 | have_evas_engine_gl_xcb = @have_evas_engine_gl_xcb@ | ||
383 | have_evas_engine_gl_xlib = @have_evas_engine_gl_xlib@ | ||
384 | have_evas_engine_software_x11 = @have_evas_engine_software_x11@ | ||
385 | have_evas_engine_software_xcb = @have_evas_engine_software_xcb@ | ||
386 | have_evas_engine_software_xlib = @have_evas_engine_software_xlib@ | ||
387 | have_lcov = @have_lcov@ | ||
388 | host = @host@ | ||
389 | host_alias = @host_alias@ | ||
390 | host_cpu = @host_cpu@ | ||
391 | host_os = @host_os@ | ||
392 | host_vendor = @host_vendor@ | ||
393 | htmldir = @htmldir@ | ||
394 | includedir = @includedir@ | ||
395 | infodir = @infodir@ | ||
396 | install_sh = @install_sh@ | ||
397 | libdir = @libdir@ | ||
398 | libexecdir = @libexecdir@ | ||
399 | localedir = @localedir@ | ||
400 | localstatedir = @localstatedir@ | ||
401 | lt_ECHO = @lt_ECHO@ | ||
402 | lt_enable_auto_import = @lt_enable_auto_import@ | ||
403 | mandir = @mandir@ | ||
404 | mkdir_p = @mkdir_p@ | ||
405 | oldincludedir = @oldincludedir@ | ||
406 | pdfdir = @pdfdir@ | ||
407 | pkgconfig_requires_private = @pkgconfig_requires_private@ | ||
408 | prefix = @prefix@ | ||
409 | program_transform_name = @program_transform_name@ | ||
410 | psdir = @psdir@ | ||
411 | pthread_cflags = @pthread_cflags@ | ||
412 | pthread_libs = @pthread_libs@ | ||
413 | release_info = @release_info@ | ||
414 | requirement_evas = @requirement_evas@ | ||
415 | sbindir = @sbindir@ | ||
416 | sharedstatedir = @sharedstatedir@ | ||
417 | srcdir = @srcdir@ | ||
418 | sysconfdir = @sysconfdir@ | ||
419 | target_alias = @target_alias@ | ||
420 | top_build_prefix = @top_build_prefix@ | ||
421 | top_builddir = @top_builddir@ | ||
422 | top_srcdir = @top_srcdir@ | ||
423 | version_info = @version_info@ | ||
424 | MAINTAINERCLEANFILES = Makefile.in | ||
425 | AM_CPPFLAGS = \ | ||
426 | -I. \ | ||
427 | -I$(top_srcdir)/src/lib \ | ||
428 | -I$(top_srcdir)/src/lib/include \ | ||
429 | -I$(top_srcdir)/src/modules/engines \ | ||
430 | @FREETYPE_CFLAGS@ \ | ||
431 | @EINA_CFLAGS@ \ | ||
432 | @evas_engine_wayland_shm_cflags@ | ||
433 | |||
434 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@WAYLAND_SHM_SOURCES = \ | ||
435 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@evas_engine.c \ | ||
436 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@evas_outbuf.c | ||
437 | |||
438 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@WAYLAND_SHM_LIBADD = @FREETYPE_LIBS@ @EINA_LIBS@ @evas_engine_wayland_shm_libs@ | ||
439 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@includes_HEADERS = Evas_Engine_Wayland_Shm.h | ||
440 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@includesdir = $(includedir)/evas-@VMAJ@ | ||
441 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@@EVAS_STATIC_BUILD_WAYLAND_SHM_FALSE@pkgdir = $(libdir)/evas/modules/engines/wayland_shm/$(MODULE_ARCH) | ||
442 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@@EVAS_STATIC_BUILD_WAYLAND_SHM_FALSE@pkg_LTLIBRARIES = module.la | ||
443 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@@EVAS_STATIC_BUILD_WAYLAND_SHM_FALSE@module_la_SOURCES = $(WAYLAND_SHM_SOURCES) | ||
444 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@@EVAS_STATIC_BUILD_WAYLAND_SHM_FALSE@module_la_LIBADD = $(WAYLAND_SHM_LIBADD) $(top_builddir)/src/lib/libevas.la | ||
445 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@@EVAS_STATIC_BUILD_WAYLAND_SHM_FALSE@module_la_LDFLAGS = -no-undefined -module -avoid-version | ||
446 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@@EVAS_STATIC_BUILD_WAYLAND_SHM_FALSE@module_la_LIBTOOLFLAGS = --tag=disable-static | ||
447 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@@EVAS_STATIC_BUILD_WAYLAND_SHM_TRUE@noinst_LTLIBRARIES = libevas_engine_wayland_shm.la | ||
448 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@@EVAS_STATIC_BUILD_WAYLAND_SHM_TRUE@libevas_engine_wayland_shm_la_SOURCES = $(WAYLAND_SHM_SOURCES) | ||
449 | @BUILD_ENGINE_WAYLAND_SHM_TRUE@@EVAS_STATIC_BUILD_WAYLAND_SHM_TRUE@libevas_engine_wayland_shm_la_LIBADD = $(WAYLAND_SHM_LIBADD) | ||
450 | EXTRA_DIST = \ | ||
451 | evas_engine.h | ||
452 | |||
453 | all: all-am | ||
454 | |||
455 | .SUFFIXES: | ||
456 | .SUFFIXES: .c .lo .o .obj | ||
457 | $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) | ||
458 | @for dep in $?; do \ | ||
459 | case '$(am__configure_deps)' in \ | ||
460 | *$$dep*) \ | ||
461 | ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ | ||
462 | && { if test -f $@; then exit 0; else break; fi; }; \ | ||
463 | exit 1;; \ | ||
464 | esac; \ | ||
465 | done; \ | ||
466 | echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/modules/engines/wayland_shm/Makefile'; \ | ||
467 | $(am__cd) $(top_srcdir) && \ | ||
468 | $(AUTOMAKE) --gnu src/modules/engines/wayland_shm/Makefile | ||
469 | .PRECIOUS: Makefile | ||
470 | Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status | ||
471 | @case '$?' in \ | ||
472 | *config.status*) \ | ||
473 | cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ | ||
474 | *) \ | ||
475 | echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ | ||
476 | cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ | ||
477 | esac; | ||
478 | |||
479 | $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) | ||
480 | cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh | ||
481 | |||
482 | $(top_srcdir)/configure: $(am__configure_deps) | ||
483 | cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh | ||
484 | $(ACLOCAL_M4): $(am__aclocal_m4_deps) | ||
485 | cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh | ||
486 | $(am__aclocal_m4_deps): | ||
487 | |||
488 | clean-noinstLTLIBRARIES: | ||
489 | -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) | ||
490 | @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ | ||
491 | dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ | ||
492 | test "$$dir" != "$$p" || dir=.; \ | ||
493 | echo "rm -f \"$${dir}/so_locations\""; \ | ||
494 | rm -f "$${dir}/so_locations"; \ | ||
495 | done | ||
496 | install-pkgLTLIBRARIES: $(pkg_LTLIBRARIES) | ||
497 | @$(NORMAL_INSTALL) | ||
498 | test -z "$(pkgdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdir)" | ||
499 | @list='$(pkg_LTLIBRARIES)'; test -n "$(pkgdir)" || list=; \ | ||
500 | list2=; for p in $$list; do \ | ||
501 | if test -f $$p; then \ | ||
502 | list2="$$list2 $$p"; \ | ||
503 | else :; fi; \ | ||
504 | done; \ | ||
505 | test -z "$$list2" || { \ | ||
506 | echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkgdir)'"; \ | ||
507 | $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkgdir)"; \ | ||
508 | } | ||
509 | |||
510 | uninstall-pkgLTLIBRARIES: | ||
511 | @$(NORMAL_UNINSTALL) | ||
512 | @list='$(pkg_LTLIBRARIES)'; test -n "$(pkgdir)" || list=; \ | ||
513 | for p in $$list; do \ | ||
514 | $(am__strip_dir) \ | ||
515 | echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkgdir)/$$f'"; \ | ||
516 | $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkgdir)/$$f"; \ | ||
517 | done | ||
518 | |||
519 | clean-pkgLTLIBRARIES: | ||
520 | -test -z "$(pkg_LTLIBRARIES)" || rm -f $(pkg_LTLIBRARIES) | ||
521 | @list='$(pkg_LTLIBRARIES)'; for p in $$list; do \ | ||
522 | dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ | ||
523 | test "$$dir" != "$$p" || dir=.; \ | ||
524 | echo "rm -f \"$${dir}/so_locations\""; \ | ||
525 | rm -f "$${dir}/so_locations"; \ | ||
526 | done | ||
527 | libevas_engine_wayland_shm.la: $(libevas_engine_wayland_shm_la_OBJECTS) $(libevas_engine_wayland_shm_la_DEPENDENCIES) | ||
528 | $(AM_V_CCLD)$(LINK) $(am_libevas_engine_wayland_shm_la_rpath) $(libevas_engine_wayland_shm_la_OBJECTS) $(libevas_engine_wayland_shm_la_LIBADD) $(LIBS) | ||
529 | module.la: $(module_la_OBJECTS) $(module_la_DEPENDENCIES) | ||
530 | $(AM_V_CCLD)$(module_la_LINK) $(am_module_la_rpath) $(module_la_OBJECTS) $(module_la_LIBADD) $(LIBS) | ||
531 | |||
532 | mostlyclean-compile: | ||
533 | -rm -f *.$(OBJEXT) | ||
534 | |||
535 | distclean-compile: | ||
536 | -rm -f *.tab.c | ||
537 | |||
538 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/evas_engine.Plo@am__quote@ | ||
539 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/evas_outbuf.Plo@am__quote@ | ||
540 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/module_la-evas_engine.Plo@am__quote@ | ||
541 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/module_la-evas_outbuf.Plo@am__quote@ | ||
542 | |||
543 | .c.o: | ||
544 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< | ||
545 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po | ||
546 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | ||
547 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ | ||
548 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | ||
549 | @am__fastdepCC_FALSE@ $(COMPILE) -c $< | ||
550 | |||
551 | .c.obj: | ||
552 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` | ||
553 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po | ||
554 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | ||
555 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ | ||
556 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | ||
557 | @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` | ||
558 | |||
559 | .c.lo: | ||
560 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< | ||
561 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo | ||
562 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | ||
563 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ | ||
564 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | ||
565 | @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< | ||
566 | |||
567 | module_la-evas_engine.lo: evas_engine.c | ||
568 | @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 | ||
569 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/module_la-evas_engine.Tpo $(DEPDIR)/module_la-evas_engine.Plo | ||
570 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | ||
571 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='evas_engine.c' object='module_la-evas_engine.lo' libtool=yes @AMDEPBACKSLASH@ | ||
572 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | ||
573 | @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 | ||
574 | |||
575 | module_la-evas_outbuf.lo: evas_outbuf.c | ||
576 | @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_outbuf.lo -MD -MP -MF $(DEPDIR)/module_la-evas_outbuf.Tpo -c -o module_la-evas_outbuf.lo `test -f 'evas_outbuf.c' || echo '$(srcdir)/'`evas_outbuf.c | ||
577 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/module_la-evas_outbuf.Tpo $(DEPDIR)/module_la-evas_outbuf.Plo | ||
578 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | ||
579 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='evas_outbuf.c' object='module_la-evas_outbuf.lo' libtool=yes @AMDEPBACKSLASH@ | ||
580 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | ||
581 | @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_outbuf.lo `test -f 'evas_outbuf.c' || echo '$(srcdir)/'`evas_outbuf.c | ||
582 | |||
583 | mostlyclean-libtool: | ||
584 | -rm -f *.lo | ||
585 | |||
586 | clean-libtool: | ||
587 | -rm -rf .libs _libs | ||
588 | install-includesHEADERS: $(includes_HEADERS) | ||
589 | @$(NORMAL_INSTALL) | ||
590 | test -z "$(includesdir)" || $(MKDIR_P) "$(DESTDIR)$(includesdir)" | ||
591 | @list='$(includes_HEADERS)'; test -n "$(includesdir)" || list=; \ | ||
592 | for p in $$list; do \ | ||
593 | if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ | ||
594 | echo "$$d$$p"; \ | ||
595 | done | $(am__base_list) | \ | ||
596 | while read files; do \ | ||
597 | echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includesdir)'"; \ | ||
598 | $(INSTALL_HEADER) $$files "$(DESTDIR)$(includesdir)" || exit $$?; \ | ||
599 | done | ||
600 | |||
601 | uninstall-includesHEADERS: | ||
602 | @$(NORMAL_UNINSTALL) | ||
603 | @list='$(includes_HEADERS)'; test -n "$(includesdir)" || list=; \ | ||
604 | files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ | ||
605 | test -n "$$files" || exit 0; \ | ||
606 | echo " ( cd '$(DESTDIR)$(includesdir)' && rm -f" $$files ")"; \ | ||
607 | cd "$(DESTDIR)$(includesdir)" && rm -f $$files | ||
608 | |||
609 | ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) | ||
610 | list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ | ||
611 | unique=`for i in $$list; do \ | ||
612 | if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ | ||
613 | done | \ | ||
614 | $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ | ||
615 | END { if (nonempty) { for (i in files) print i; }; }'`; \ | ||
616 | mkid -fID $$unique | ||
617 | tags: TAGS | ||
618 | |||
619 | TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ | ||
620 | $(TAGS_FILES) $(LISP) | ||
621 | set x; \ | ||
622 | here=`pwd`; \ | ||
623 | list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ | ||
624 | unique=`for i in $$list; do \ | ||
625 | if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ | ||
626 | done | \ | ||
627 | $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ | ||
628 | END { if (nonempty) { for (i in files) print i; }; }'`; \ | ||
629 | shift; \ | ||
630 | if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ | ||
631 | test -n "$$unique" || unique=$$empty_fix; \ | ||
632 | if test $$# -gt 0; then \ | ||
633 | $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ | ||
634 | "$$@" $$unique; \ | ||
635 | else \ | ||
636 | $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ | ||
637 | $$unique; \ | ||
638 | fi; \ | ||
639 | fi | ||
640 | ctags: CTAGS | ||
641 | CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ | ||
642 | $(TAGS_FILES) $(LISP) | ||
643 | list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ | ||
644 | unique=`for i in $$list; do \ | ||
645 | if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ | ||
646 | done | \ | ||
647 | $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ | ||
648 | END { if (nonempty) { for (i in files) print i; }; }'`; \ | ||
649 | test -z "$(CTAGS_ARGS)$$unique" \ | ||
650 | || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ | ||
651 | $$unique | ||
652 | |||
653 | GTAGS: | ||
654 | here=`$(am__cd) $(top_builddir) && pwd` \ | ||
655 | && $(am__cd) $(top_srcdir) \ | ||
656 | && gtags -i $(GTAGS_ARGS) "$$here" | ||
657 | |||
658 | distclean-tags: | ||
659 | -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags | ||
660 | |||
661 | distdir: $(DISTFILES) | ||
662 | @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ | ||
663 | topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ | ||
664 | list='$(DISTFILES)'; \ | ||
665 | dist_files=`for file in $$list; do echo $$file; done | \ | ||
666 | sed -e "s|^$$srcdirstrip/||;t" \ | ||
667 | -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ | ||
668 | case $$dist_files in \ | ||
669 | */*) $(MKDIR_P) `echo "$$dist_files" | \ | ||
670 | sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ | ||
671 | sort -u` ;; \ | ||
672 | esac; \ | ||
673 | for file in $$dist_files; do \ | ||
674 | if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ | ||
675 | if test -d $$d/$$file; then \ | ||
676 | dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ | ||
677 | if test -d "$(distdir)/$$file"; then \ | ||
678 | find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ | ||
679 | fi; \ | ||
680 | if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ | ||
681 | cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ | ||
682 | find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ | ||
683 | fi; \ | ||
684 | cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ | ||
685 | else \ | ||
686 | test -f "$(distdir)/$$file" \ | ||
687 | || cp -p $$d/$$file "$(distdir)/$$file" \ | ||
688 | || exit 1; \ | ||
689 | fi; \ | ||
690 | done | ||
691 | check-am: all-am | ||
692 | check: check-am | ||
693 | all-am: Makefile $(LTLIBRARIES) $(HEADERS) | ||
694 | installdirs: | ||
695 | for dir in "$(DESTDIR)$(pkgdir)" "$(DESTDIR)$(includesdir)"; do \ | ||
696 | test -z "$$dir" || $(MKDIR_P) "$$dir"; \ | ||
697 | done | ||
698 | install: install-am | ||
699 | install-exec: install-exec-am | ||
700 | install-data: install-data-am | ||
701 | uninstall: uninstall-am | ||
702 | |||
703 | install-am: all-am | ||
704 | @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am | ||
705 | |||
706 | installcheck: installcheck-am | ||
707 | install-strip: | ||
708 | $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ | ||
709 | install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ | ||
710 | `test -z '$(STRIP)' || \ | ||
711 | echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install | ||
712 | mostlyclean-generic: | ||
713 | |||
714 | clean-generic: | ||
715 | |||
716 | distclean-generic: | ||
717 | -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) | ||
718 | -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) | ||
719 | |||
720 | maintainer-clean-generic: | ||
721 | @echo "This command is intended for maintainers to use" | ||
722 | @echo "it deletes files that may require special tools to rebuild." | ||
723 | -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) | ||
724 | clean: clean-am | ||
725 | |||
726 | clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ | ||
727 | clean-pkgLTLIBRARIES mostlyclean-am | ||
728 | |||
729 | distclean: distclean-am | ||
730 | -rm -rf ./$(DEPDIR) | ||
731 | -rm -f Makefile | ||
732 | distclean-am: clean-am distclean-compile distclean-generic \ | ||
733 | distclean-tags | ||
734 | |||
735 | dvi: dvi-am | ||
736 | |||
737 | dvi-am: | ||
738 | |||
739 | html: html-am | ||
740 | |||
741 | html-am: | ||
742 | |||
743 | info: info-am | ||
744 | |||
745 | info-am: | ||
746 | |||
747 | install-data-am: install-includesHEADERS install-pkgLTLIBRARIES | ||
748 | |||
749 | install-dvi: install-dvi-am | ||
750 | |||
751 | install-dvi-am: | ||
752 | |||
753 | install-exec-am: | ||
754 | |||
755 | install-html: install-html-am | ||
756 | |||
757 | install-html-am: | ||
758 | |||
759 | install-info: install-info-am | ||
760 | |||
761 | install-info-am: | ||
762 | |||
763 | install-man: | ||
764 | |||
765 | install-pdf: install-pdf-am | ||
766 | |||
767 | install-pdf-am: | ||
768 | |||
769 | install-ps: install-ps-am | ||
770 | |||
771 | install-ps-am: | ||
772 | |||
773 | installcheck-am: | ||
774 | |||
775 | maintainer-clean: maintainer-clean-am | ||
776 | -rm -rf ./$(DEPDIR) | ||
777 | -rm -f Makefile | ||
778 | maintainer-clean-am: distclean-am maintainer-clean-generic | ||
779 | |||
780 | mostlyclean: mostlyclean-am | ||
781 | |||
782 | mostlyclean-am: mostlyclean-compile mostlyclean-generic \ | ||
783 | mostlyclean-libtool | ||
784 | |||
785 | pdf: pdf-am | ||
786 | |||
787 | pdf-am: | ||
788 | |||
789 | ps: ps-am | ||
790 | |||
791 | ps-am: | ||
792 | |||
793 | uninstall-am: uninstall-includesHEADERS uninstall-pkgLTLIBRARIES | ||
794 | |||
795 | .MAKE: install-am install-strip | ||
796 | |||
797 | .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ | ||
798 | clean-libtool clean-noinstLTLIBRARIES clean-pkgLTLIBRARIES \ | ||
799 | ctags distclean distclean-compile distclean-generic \ | ||
800 | distclean-libtool distclean-tags distdir dvi dvi-am html \ | ||
801 | html-am info info-am install install-am install-data \ | ||
802 | install-data-am install-dvi install-dvi-am install-exec \ | ||
803 | install-exec-am install-html install-html-am \ | ||
804 | install-includesHEADERS install-info install-info-am \ | ||
805 | install-man install-pdf install-pdf-am install-pkgLTLIBRARIES \ | ||
806 | install-ps install-ps-am install-strip installcheck \ | ||
807 | installcheck-am installdirs maintainer-clean \ | ||
808 | maintainer-clean-generic mostlyclean mostlyclean-compile \ | ||
809 | mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ | ||
810 | tags uninstall uninstall-am uninstall-includesHEADERS \ | ||
811 | uninstall-pkgLTLIBRARIES | ||
812 | |||
813 | |||
814 | # Tell versions [3.59,3.63) of GNU make to not export all variables. | ||
815 | # Otherwise a system limit (for SysV at least) may be exceeded. | ||
816 | .NOEXPORT: | ||
diff --git a/libraries/evas/src/modules/engines/wayland_shm/evas_engine.c b/libraries/evas/src/modules/engines/wayland_shm/evas_engine.c new file mode 100644 index 0000000..7c55517 --- /dev/null +++ b/libraries/evas/src/modules/engines/wayland_shm/evas_engine.c | |||
@@ -0,0 +1,370 @@ | |||
1 | #include "evas_common.h" | ||
2 | #include "evas_private.h" | ||
3 | #include "evas_engine.h" | ||
4 | #include "Evas_Engine_Wayland_Shm.h" | ||
5 | |||
6 | /* local structures */ | ||
7 | typedef struct _Render_Engine Render_Engine; | ||
8 | struct _Render_Engine | ||
9 | { | ||
10 | Tilebuf *tb; | ||
11 | Tilebuf_Rect *rects; | ||
12 | Outbuf *ob; | ||
13 | Eina_Inlist *cur_rect; | ||
14 | |||
15 | Eina_Bool end : 1; | ||
16 | |||
17 | void (*outbuf_free)(Outbuf *ob); | ||
18 | void (*outbuf_resize)(Outbuf *ob, int w, int h); | ||
19 | RGBA_Image *(*outbuf_new_region_for_update)(Outbuf *ob, int x, int y, int w, int h, int *cx, int *cy, int *cw, int *ch); | ||
20 | void (*outbuf_push_updated_region)(Outbuf *ob, RGBA_Image *surface, int x, int y, int w, int h); | ||
21 | void (*outbuf_free_region_for_update)(Outbuf *ob, RGBA_Image *update); | ||
22 | }; | ||
23 | |||
24 | /* local variables */ | ||
25 | static Evas_Func func, pfunc; | ||
26 | |||
27 | /* external variables */ | ||
28 | int _evas_engine_way_shm_log_dom = -1; | ||
29 | |||
30 | /* local function prototypes */ | ||
31 | static void *_output_setup(int w, int h, int rotation, void *dest); | ||
32 | |||
33 | /* engine function prototypes */ | ||
34 | static void *eng_info(Evas *evas __UNUSED__); | ||
35 | static void eng_info_free(Evas *evas __UNUSED__, void *info); | ||
36 | static int eng_setup(Evas *evas, void *info); | ||
37 | static void eng_output_free(void *data); | ||
38 | static void eng_output_resize(void *data, int w, int h); | ||
39 | static void eng_output_tile_size_set(void *data, int w, int h); | ||
40 | static void eng_output_redraws_rect_add(void *data, int x, int y, int w, int h); | ||
41 | static void eng_output_redraws_rect_del(void *data, int x, int y, int w, int h); | ||
42 | static void eng_output_redraws_clear(void *data); | ||
43 | static void *eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch); | ||
44 | static void eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h); | ||
45 | static void eng_output_flush(void *data); | ||
46 | static void eng_output_idle_flush(void *data); | ||
47 | static Eina_Bool eng_canvas_alpha_get(void *data, void *context __UNUSED__); | ||
48 | |||
49 | /* local functions */ | ||
50 | static void * | ||
51 | _output_setup(int w, int h, int rotation, void *dest) | ||
52 | { | ||
53 | Render_Engine *re = NULL; | ||
54 | |||
55 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
56 | |||
57 | if (!(re = calloc(1, sizeof(Render_Engine)))) return NULL; | ||
58 | |||
59 | if (!(re->ob = evas_outbuf_setup(w, h, rotation, dest))) | ||
60 | { | ||
61 | free(re); | ||
62 | return NULL; | ||
63 | } | ||
64 | |||
65 | if (!(re->tb = evas_common_tilebuf_new(w, h))) | ||
66 | { | ||
67 | evas_outbuf_free(re->ob); | ||
68 | free(re); | ||
69 | return NULL; | ||
70 | } | ||
71 | |||
72 | evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE); | ||
73 | return re; | ||
74 | } | ||
75 | |||
76 | /* engine functions */ | ||
77 | static void * | ||
78 | eng_info(Evas *evas __UNUSED__) | ||
79 | { | ||
80 | Evas_Engine_Info_Wayland_Shm *info; | ||
81 | |||
82 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
83 | |||
84 | if (!(info = calloc(1, sizeof(Evas_Engine_Info_Wayland_Shm)))) | ||
85 | return NULL; | ||
86 | |||
87 | info->magic.magic = rand(); | ||
88 | info->info.debug = EINA_FALSE; | ||
89 | info->render_mode = EVAS_RENDER_MODE_BLOCKING; | ||
90 | |||
91 | return info; | ||
92 | } | ||
93 | |||
94 | static void | ||
95 | eng_info_free(Evas *evas __UNUSED__, void *info) | ||
96 | { | ||
97 | Evas_Engine_Info_Wayland_Shm *in; | ||
98 | |||
99 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
100 | |||
101 | if (!(in = (Evas_Engine_Info_Wayland_Shm *)info)) return; | ||
102 | free(in); | ||
103 | } | ||
104 | |||
105 | static int | ||
106 | eng_setup(Evas *evas, void *info) | ||
107 | { | ||
108 | Evas_Engine_Info_Wayland_Shm *in; | ||
109 | Render_Engine *re = NULL; | ||
110 | |||
111 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
112 | |||
113 | if (!(in = (Evas_Engine_Info_Wayland_Shm *)info)) return 0; | ||
114 | |||
115 | if (!evas->engine.data.output) | ||
116 | { | ||
117 | evas_common_cpu_init(); | ||
118 | evas_common_blend_init(); | ||
119 | evas_common_image_init(); | ||
120 | evas_common_convert_init(); | ||
121 | evas_common_scale_init(); | ||
122 | evas_common_rectangle_init(); | ||
123 | evas_common_polygon_init(); | ||
124 | evas_common_line_init(); | ||
125 | evas_common_font_init(); | ||
126 | evas_common_draw_init(); | ||
127 | evas_common_tilebuf_init(); | ||
128 | |||
129 | re = _output_setup(evas->output.w, evas->output.h, | ||
130 | in->info.rotation, in->info.dest); | ||
131 | if (!re) return 0; | ||
132 | |||
133 | re->outbuf_free = evas_outbuf_free; | ||
134 | re->outbuf_resize = evas_outbuf_resize; | ||
135 | re->outbuf_new_region_for_update = evas_outbuf_new_region_for_update; | ||
136 | re->outbuf_push_updated_region = evas_outbuf_push_updated_region; | ||
137 | re->outbuf_free_region_for_update = evas_outbuf_free_region_for_update; | ||
138 | } | ||
139 | else | ||
140 | { | ||
141 | if (!(re = evas->engine.data.output)) return 0; | ||
142 | if (re->ob) re->outbuf_free(re->ob); | ||
143 | re->ob = evas_outbuf_setup(evas->output.w, evas->output.h, | ||
144 | in->info.rotation, in->info.dest); | ||
145 | if (re->tb) evas_common_tilebuf_free(re->tb); | ||
146 | if ((re->tb = evas_common_tilebuf_new(evas->output.w, evas->output.h))) | ||
147 | evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE); | ||
148 | } | ||
149 | |||
150 | evas->engine.data.output = re; | ||
151 | |||
152 | if (!evas->engine.data.context) | ||
153 | { | ||
154 | evas->engine.data.context = | ||
155 | evas->engine.func->context_new(evas->engine.data.output); | ||
156 | } | ||
157 | |||
158 | return 1; | ||
159 | } | ||
160 | |||
161 | static void | ||
162 | eng_output_free(void *data) | ||
163 | { | ||
164 | Render_Engine *re = NULL; | ||
165 | |||
166 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
167 | |||
168 | if ((re = (Render_Engine *)data)) | ||
169 | { | ||
170 | if (re->ob) re->outbuf_free(re->ob); | ||
171 | if (re->tb) evas_common_tilebuf_free(re->tb); | ||
172 | if (re->rects) evas_common_tilebuf_free_render_rects(re->rects); | ||
173 | free(re); | ||
174 | } | ||
175 | evas_common_font_shutdown(); | ||
176 | evas_common_image_shutdown(); | ||
177 | } | ||
178 | |||
179 | static void | ||
180 | eng_output_resize(void *data, int w, int h) | ||
181 | { | ||
182 | Render_Engine *re = NULL; | ||
183 | |||
184 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
185 | |||
186 | if (!(re = (Render_Engine *)data)) return; | ||
187 | |||
188 | if (re->ob) re->outbuf_resize(re->ob, w, h); | ||
189 | if (re->tb) evas_common_tilebuf_free(re->tb); | ||
190 | if ((re->tb = evas_common_tilebuf_new(w, h))) | ||
191 | evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE); | ||
192 | } | ||
193 | |||
194 | static void | ||
195 | eng_output_tile_size_set(void *data, int w, int h) | ||
196 | { | ||
197 | Render_Engine *re = NULL; | ||
198 | |||
199 | if (!(re = (Render_Engine *)data)) return; | ||
200 | if (re->tb) evas_common_tilebuf_set_tile_size(re->tb, w, h); | ||
201 | } | ||
202 | |||
203 | static void | ||
204 | eng_output_redraws_rect_add(void *data, int x, int y, int w, int h) | ||
205 | { | ||
206 | Render_Engine *re = NULL; | ||
207 | |||
208 | if (!(re = (Render_Engine *)data)) return; | ||
209 | if (re->tb) evas_common_tilebuf_add_redraw(re->tb, x, y, w, h); | ||
210 | } | ||
211 | |||
212 | static void | ||
213 | eng_output_redraws_rect_del(void *data, int x, int y, int w, int h) | ||
214 | { | ||
215 | Render_Engine *re = NULL; | ||
216 | |||
217 | if (!(re = (Render_Engine *)data)) return; | ||
218 | if (re->tb) evas_common_tilebuf_del_redraw(re->tb, x, y, w, h); | ||
219 | } | ||
220 | |||
221 | static void | ||
222 | eng_output_redraws_clear(void *data) | ||
223 | { | ||
224 | Render_Engine *re = NULL; | ||
225 | |||
226 | if (!(re = (Render_Engine *)data)) return; | ||
227 | if (re->tb) evas_common_tilebuf_clear(re->tb); | ||
228 | } | ||
229 | |||
230 | static void * | ||
231 | eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch) | ||
232 | { | ||
233 | Render_Engine *re = NULL; | ||
234 | RGBA_Image *surface; | ||
235 | Tilebuf_Rect *rect; | ||
236 | int ux = 0, uy = 0, uw = 0, uh = 0; | ||
237 | |||
238 | if (!(re = (Render_Engine *)data)) return NULL; | ||
239 | if (re->end) | ||
240 | { | ||
241 | re->end = EINA_FALSE; | ||
242 | return NULL; | ||
243 | } | ||
244 | if (!re->rects) | ||
245 | { | ||
246 | re->rects = evas_common_tilebuf_get_render_rects(re->tb); | ||
247 | re->cur_rect = EINA_INLIST_GET(re->rects); | ||
248 | } | ||
249 | if (!re->cur_rect) return NULL; | ||
250 | rect = (Tilebuf_Rect *)re->cur_rect; | ||
251 | ux = rect->x; | ||
252 | uy = rect->y; | ||
253 | uw = rect->w; | ||
254 | uh = rect->h; | ||
255 | re->cur_rect = re->cur_rect->next; | ||
256 | if (!re->cur_rect) | ||
257 | { | ||
258 | evas_common_tilebuf_free_render_rects(re->rects); | ||
259 | re->rects = NULL; | ||
260 | re->end = EINA_TRUE; | ||
261 | } | ||
262 | if ((ux + uw) > re->ob->w) uw = re->ob->w - ux; | ||
263 | if ((uy + uh) > re->ob->h) uh = re->ob->h - uy; | ||
264 | if ((uw <= 0) || (uh <= 0)) return NULL; | ||
265 | surface = | ||
266 | re->outbuf_new_region_for_update(re->ob, ux, uy, uw, uh, cx, cy, cw, ch); | ||
267 | if (x) *x = ux; | ||
268 | if (y) *y = uy; | ||
269 | if (w) *w = uw; | ||
270 | if (h) *h = uh; | ||
271 | return surface; | ||
272 | } | ||
273 | |||
274 | static void | ||
275 | eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h) | ||
276 | { | ||
277 | Render_Engine *re = NULL; | ||
278 | |||
279 | if (!(re = (Render_Engine *)data)) return; | ||
280 | #ifdef BUILD_PIPE_RENDER | ||
281 | evas_common_pipe_map_begin(surface); | ||
282 | #endif | ||
283 | if (re->ob) | ||
284 | { | ||
285 | re->outbuf_push_updated_region(re->ob, surface, x, y, w, h); | ||
286 | re->outbuf_free_region_for_update(re->ob, surface); | ||
287 | } | ||
288 | evas_common_cpu_end_opt(); | ||
289 | } | ||
290 | |||
291 | static void | ||
292 | eng_output_flush(void *data) | ||
293 | { | ||
294 | Render_Engine *re = NULL; | ||
295 | |||
296 | if (!(re = (Render_Engine *)data)) return; | ||
297 | } | ||
298 | |||
299 | static void | ||
300 | eng_output_idle_flush(void *data) | ||
301 | { | ||
302 | Render_Engine *re = NULL; | ||
303 | |||
304 | if (!(re = (Render_Engine *)data)) return; | ||
305 | } | ||
306 | |||
307 | static Eina_Bool | ||
308 | eng_canvas_alpha_get(void *data, void *context __UNUSED__) | ||
309 | { | ||
310 | Render_Engine *re = NULL; | ||
311 | |||
312 | if (!(re = (Render_Engine *)data)) return EINA_FALSE; | ||
313 | return EINA_TRUE; | ||
314 | } | ||
315 | |||
316 | /* module functions */ | ||
317 | static int | ||
318 | module_open(Evas_Module *em) | ||
319 | { | ||
320 | if (!em) return 0; | ||
321 | |||
322 | if (!_evas_module_engine_inherit(&pfunc, "software_generic")) | ||
323 | return 0; | ||
324 | |||
325 | _evas_engine_way_shm_log_dom = | ||
326 | eina_log_domain_register("evas-wayland_shm", EVAS_DEFAULT_LOG_COLOR); | ||
327 | if (_evas_engine_way_shm_log_dom < 0) | ||
328 | { | ||
329 | EINA_LOG_ERR("Could not create a module log domain."); | ||
330 | return 0; | ||
331 | } | ||
332 | |||
333 | func = pfunc; | ||
334 | |||
335 | #define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_) | ||
336 | ORD(info); | ||
337 | ORD(info_free); | ||
338 | ORD(setup); | ||
339 | ORD(canvas_alpha_get); | ||
340 | ORD(output_free); | ||
341 | ORD(output_resize); | ||
342 | ORD(output_tile_size_set); | ||
343 | ORD(output_redraws_rect_add); | ||
344 | ORD(output_redraws_rect_del); | ||
345 | ORD(output_redraws_clear); | ||
346 | ORD(output_redraws_next_update_get); | ||
347 | ORD(output_redraws_next_update_push); | ||
348 | ORD(output_flush); | ||
349 | ORD(output_idle_flush); | ||
350 | |||
351 | em->functions = (void *)(&func); | ||
352 | return 1; | ||
353 | } | ||
354 | |||
355 | static void | ||
356 | module_close(Evas_Module *em __UNUSED__) | ||
357 | { | ||
358 | eina_log_domain_unregister(_evas_engine_way_shm_log_dom); | ||
359 | } | ||
360 | |||
361 | static Evas_Module_Api evas_modapi = | ||
362 | { | ||
363 | EVAS_MODULE_API_VERSION, "wayland_shm", "none", {module_open, module_close} | ||
364 | }; | ||
365 | |||
366 | EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, wayland_shm); | ||
367 | |||
368 | #ifndef EVAS_STATIC_BUILD_WAYLAND_SHM | ||
369 | EVAS_EINA_MODULE_DEFINE(engine, wayland_shm); | ||
370 | #endif | ||
diff --git a/libraries/evas/src/modules/engines/wayland_shm/evas_engine.h b/libraries/evas/src/modules/engines/wayland_shm/evas_engine.h new file mode 100644 index 0000000..878851a --- /dev/null +++ b/libraries/evas/src/modules/engines/wayland_shm/evas_engine.h | |||
@@ -0,0 +1,60 @@ | |||
1 | #ifndef _EVAS_ENGINE_H | ||
2 | # define _EVAS_ENGINE_H | ||
3 | |||
4 | //# define LOGFNS 1 | ||
5 | |||
6 | # ifdef LOGFNS | ||
7 | # include <stdio.h> | ||
8 | # define LOGFN(fl, ln, fn) printf("-EVAS-WL: %25s: %5i - %s\n", fl, ln, fn); | ||
9 | # else | ||
10 | # define LOGFN(fl, ln, fn) | ||
11 | # endif | ||
12 | |||
13 | extern int _evas_engine_way_shm_log_dom; | ||
14 | |||
15 | # ifdef ERR | ||
16 | # undef ERR | ||
17 | # endif | ||
18 | # define ERR(...) EINA_LOG_DOM_ERR(_evas_engine_way_shm_log_dom, __VA_ARGS__) | ||
19 | |||
20 | # ifdef DBG | ||
21 | # undef DBG | ||
22 | # endif | ||
23 | # define DBG(...) EINA_LOG_DOM_DBG(_evas_engine_way_shm_log_dom, __VA_ARGS__) | ||
24 | |||
25 | # ifdef INF | ||
26 | # undef INF | ||
27 | # endif | ||
28 | # define INF(...) EINA_LOG_DOM_INFO(_evas_engine_way_shm_log_dom, __VA_ARGS__) | ||
29 | |||
30 | # ifdef WRN | ||
31 | # undef WRN | ||
32 | # endif | ||
33 | # define WRN(...) EINA_LOG_DOM_WARN(_evas_engine_way_shm_log_dom, __VA_ARGS__) | ||
34 | |||
35 | # ifdef CRIT | ||
36 | # undef CRIT | ||
37 | # endif | ||
38 | # define CRIT(...) EINA_LOG_DOM_CRIT(_evas_engine_way_shm_log_dom, __VA_ARGS__) | ||
39 | |||
40 | typedef struct _Outbuf Outbuf; | ||
41 | struct _Outbuf | ||
42 | { | ||
43 | int w, h; | ||
44 | int rotation; | ||
45 | |||
46 | struct | ||
47 | { | ||
48 | void *dest; | ||
49 | RGBA_Image *buffer; | ||
50 | } priv; | ||
51 | }; | ||
52 | |||
53 | void evas_outbuf_free(Outbuf *ob); | ||
54 | void evas_outbuf_resize(Outbuf *ob, int w, int h); | ||
55 | Outbuf *evas_outbuf_setup(int w, int h, int rot, void *dest); | ||
56 | RGBA_Image *evas_outbuf_new_region_for_update(Outbuf *ob, int x, int y, int w, int h, int *cx, int *cy, int *cw, int *ch); | ||
57 | void evas_outbuf_push_updated_region(Outbuf *ob, RGBA_Image *update, int x __UNUSED__, int y, int w, int h); | ||
58 | void evas_outbuf_free_region_for_update(Outbuf *ob, RGBA_Image *update); | ||
59 | |||
60 | #endif | ||
diff --git a/libraries/evas/src/modules/engines/wayland_shm/evas_outbuf.c b/libraries/evas/src/modules/engines/wayland_shm/evas_outbuf.c new file mode 100644 index 0000000..490a978 --- /dev/null +++ b/libraries/evas/src/modules/engines/wayland_shm/evas_outbuf.c | |||
@@ -0,0 +1,100 @@ | |||
1 | #include "evas_common.h" | ||
2 | #include "evas_engine.h" | ||
3 | |||
4 | void | ||
5 | evas_outbuf_free(Outbuf *ob) | ||
6 | { | ||
7 | if (!ob) return; | ||
8 | if (ob->priv.buffer) evas_cache_image_drop(&ob->priv.buffer->cache_entry); | ||
9 | free(ob); | ||
10 | } | ||
11 | |||
12 | void | ||
13 | evas_outbuf_resize(Outbuf *ob, int w, int h) | ||
14 | { | ||
15 | if (!ob) return; | ||
16 | if ((ob->w == w) && (ob->h == h)) return; | ||
17 | ob->w = w; | ||
18 | ob->h = h; | ||
19 | if (ob->priv.buffer) evas_cache_image_drop(&ob->priv.buffer->cache_entry); | ||
20 | ob->priv.buffer = NULL; | ||
21 | } | ||
22 | |||
23 | Outbuf * | ||
24 | evas_outbuf_setup(int w, int h, int rot, void *dest) | ||
25 | { | ||
26 | Outbuf *ob = NULL; | ||
27 | |||
28 | if (!(ob = calloc(1, sizeof(Outbuf)))) return NULL; | ||
29 | |||
30 | ob->w = w; | ||
31 | ob->h = h; | ||
32 | ob->rotation = rot; | ||
33 | ob->priv.dest = dest; | ||
34 | |||
35 | ob->priv.buffer = | ||
36 | (RGBA_Image *)evas_cache_image_data(evas_common_image_cache_get(), | ||
37 | w, h, ob->priv.dest, | ||
38 | 1, EVAS_COLORSPACE_ARGB8888); | ||
39 | |||
40 | return ob; | ||
41 | } | ||
42 | |||
43 | RGBA_Image * | ||
44 | evas_outbuf_new_region_for_update(Outbuf *ob, int x, int y, int w, int h, int *cx, int *cy, int *cw, int *ch) | ||
45 | { | ||
46 | if (ob->priv.buffer) | ||
47 | { | ||
48 | *cx = x; *cy = y; *cw = w; *ch = h; | ||
49 | return ob->priv.buffer; | ||
50 | } | ||
51 | else | ||
52 | { | ||
53 | RGBA_Image *im; | ||
54 | |||
55 | *cx = 0; *cy = 0; *cw = w; *ch = h; | ||
56 | im = (RGBA_Image *)evas_cache_image_empty(evas_common_image_cache_get()); | ||
57 | if (im) | ||
58 | { | ||
59 | im->cache_entry.flags.alpha = 1; | ||
60 | im = (RGBA_Image *)evas_cache_image_size_set(&im->cache_entry, w, h); | ||
61 | } | ||
62 | |||
63 | return im; | ||
64 | } | ||
65 | |||
66 | return NULL; | ||
67 | } | ||
68 | |||
69 | void | ||
70 | evas_outbuf_push_updated_region(Outbuf *ob, RGBA_Image *update, int x __UNUSED__, int y, int w, int h) | ||
71 | { | ||
72 | if (!ob->priv.dest) return; | ||
73 | if (!ob->priv.buffer) | ||
74 | { | ||
75 | Gfx_Func_Copy func; | ||
76 | |||
77 | func = evas_common_draw_func_copy_get(w, 0); | ||
78 | if (func) | ||
79 | { | ||
80 | DATA32 *dst, *src; | ||
81 | int yy = 0, bytes = 0; | ||
82 | |||
83 | bytes = ((w * sizeof(int)) * h); | ||
84 | for (yy = 0; yy < h; yy++) | ||
85 | { | ||
86 | src = update->image.data + (yy * update->cache_entry.w); | ||
87 | dst = (DATA32 *)((DATA8 *)(ob->priv.dest) + | ||
88 | ((y + yy) * bytes)); | ||
89 | func(src, dst, w); | ||
90 | } | ||
91 | } | ||
92 | } | ||
93 | } | ||
94 | |||
95 | void | ||
96 | evas_outbuf_free_region_for_update(Outbuf *ob, RGBA_Image *update) | ||
97 | { | ||
98 | if (!ob) return; | ||
99 | if (update != ob->priv.buffer) evas_cache_image_drop(&update->cache_entry); | ||
100 | } | ||
diff --git a/libraries/evas/src/modules/loaders/Makefile.in b/libraries/evas/src/modules/loaders/Makefile.in index 2120a33..454dcd8 100644 --- a/libraries/evas/src/modules/loaders/Makefile.in +++ b/libraries/evas/src/modules/loaders/Makefile.in | |||
@@ -49,7 +49,7 @@ host_triplet = @host@ | |||
49 | @BUILD_LOADER_WBMP_TRUE@@EVAS_STATIC_BUILD_WBMP_FALSE@am__append_14 = wbmp | 49 | @BUILD_LOADER_WBMP_TRUE@@EVAS_STATIC_BUILD_WBMP_FALSE@am__append_14 = wbmp |
50 | @BUILD_LOADER_XPM_TRUE@@EVAS_STATIC_BUILD_XPM_FALSE@am__append_15 = xpm | 50 | @BUILD_LOADER_XPM_TRUE@@EVAS_STATIC_BUILD_XPM_FALSE@am__append_15 = xpm |
51 | subdir = src/modules/loaders | 51 | subdir = src/modules/loaders |
52 | DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in TODO | 52 | DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in |
53 | ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 | 53 | ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 |
54 | am__aclocal_m4_deps = $(top_srcdir)/m4/efl_attribute.m4 \ | 54 | am__aclocal_m4_deps = $(top_srcdir)/m4/efl_attribute.m4 \ |
55 | $(top_srcdir)/m4/efl_coverage.m4 \ | 55 | $(top_srcdir)/m4/efl_coverage.m4 \ |
@@ -222,8 +222,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
222 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 222 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
223 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 223 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
224 | PKG_CONFIG = @PKG_CONFIG@ | 224 | PKG_CONFIG = @PKG_CONFIG@ |
225 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
226 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
227 | PNG_CFLAGS = @PNG_CFLAGS@ | 225 | PNG_CFLAGS = @PNG_CFLAGS@ |
228 | PNG_LIBS = @PNG_LIBS@ | 226 | PNG_LIBS = @PNG_LIBS@ |
229 | RANLIB = @RANLIB@ | 227 | RANLIB = @RANLIB@ |
@@ -240,6 +238,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
240 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 238 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
241 | VERSION = @VERSION@ | 239 | VERSION = @VERSION@ |
242 | VMAJ = @VMAJ@ | 240 | VMAJ = @VMAJ@ |
241 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
242 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
243 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 243 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
244 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 244 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
245 | XCB_CFLAGS = @XCB_CFLAGS@ | 245 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -321,6 +321,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
321 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 321 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
322 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 322 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
323 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 323 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
324 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
325 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
326 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
327 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
324 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 328 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
325 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 329 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
326 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 330 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/loaders/TODO b/libraries/evas/src/modules/loaders/TODO deleted file mode 100644 index 3b82543..0000000 --- a/libraries/evas/src/modules/loaders/TODO +++ /dev/null | |||
@@ -1,5 +0,0 @@ | |||
1 | DONE -> bmp tga ico | ||
2 | id3 gz bz2 <- extraction loaders | ||
3 | lbm <- aaah amiga days | ||
4 | ani <- why> | ||
5 | |||
diff --git a/libraries/evas/src/modules/loaders/bmp/Makefile.in b/libraries/evas/src/modules/loaders/bmp/Makefile.in index f2c3e20..943fb74 100644 --- a/libraries/evas/src/modules/loaders/bmp/Makefile.in +++ b/libraries/evas/src/modules/loaders/bmp/Makefile.in | |||
@@ -231,8 +231,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
232 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 232 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
233 | PKG_CONFIG = @PKG_CONFIG@ | 233 | PKG_CONFIG = @PKG_CONFIG@ |
234 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
235 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
236 | PNG_CFLAGS = @PNG_CFLAGS@ | 234 | PNG_CFLAGS = @PNG_CFLAGS@ |
237 | PNG_LIBS = @PNG_LIBS@ | 235 | PNG_LIBS = @PNG_LIBS@ |
238 | RANLIB = @RANLIB@ | 236 | RANLIB = @RANLIB@ |
@@ -249,6 +247,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
249 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 247 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
250 | VERSION = @VERSION@ | 248 | VERSION = @VERSION@ |
251 | VMAJ = @VMAJ@ | 249 | VMAJ = @VMAJ@ |
250 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
251 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
252 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 252 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
254 | XCB_CFLAGS = @XCB_CFLAGS@ | 254 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -330,6 +330,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
333 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
334 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
335 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
336 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
333 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 337 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
334 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 338 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
335 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 339 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/loaders/bmp/evas_image_load_bmp.c b/libraries/evas/src/modules/loaders/bmp/evas_image_load_bmp.c index 38e3680..6d15783 100644 --- a/libraries/evas/src/modules/loaders/bmp/evas_image_load_bmp.c +++ b/libraries/evas/src/modules/loaders/bmp/evas_image_load_bmp.c | |||
@@ -21,50 +21,91 @@ static Evas_Image_Load_Func evas_image_load_bmp_func = | |||
21 | EINA_TRUE, | 21 | EINA_TRUE, |
22 | evas_image_load_file_head_bmp, | 22 | evas_image_load_file_head_bmp, |
23 | evas_image_load_file_data_bmp, | 23 | evas_image_load_file_data_bmp, |
24 | NULL | 24 | NULL, |
25 | EINA_FALSE | ||
25 | }; | 26 | }; |
26 | 27 | ||
27 | static int | 28 | static Eina_Bool |
28 | read_short(FILE *file, short *ret) | 29 | read_short(unsigned char *map, size_t length, size_t *position, short *ret) |
29 | { | 30 | { |
30 | unsigned char b[2]; | 31 | unsigned char b[2]; |
31 | if (fread(b, sizeof(unsigned char), 2, file) != 2) return 0; | 32 | |
33 | if (*position + 2 > length) return EINA_FALSE; | ||
34 | b[0] = map[(*position)++]; | ||
35 | b[1] = map[(*position)++]; | ||
32 | *ret = (b[1] << 8) | b[0]; | 36 | *ret = (b[1] << 8) | b[0]; |
33 | return 1; | 37 | return EINA_TRUE; |
34 | } | 38 | } |
35 | 39 | ||
36 | static int | 40 | static Eina_Bool |
37 | read_ushort(FILE *file, unsigned short *ret) | 41 | read_ushort(unsigned char *map, size_t length, size_t *position, unsigned short *ret) |
38 | { | 42 | { |
39 | unsigned char b[2]; | 43 | unsigned char b[2]; |
40 | if (fread(b, sizeof(unsigned char), 2, file) != 2) return 0; | 44 | |
45 | if (*position + 2 > length) return EINA_FALSE; | ||
46 | b[0] = map[(*position)++]; | ||
47 | b[1] = map[(*position)++]; | ||
41 | *ret = (b[1] << 8) | b[0]; | 48 | *ret = (b[1] << 8) | b[0]; |
42 | return 1; | 49 | return EINA_TRUE; |
43 | } | 50 | } |
44 | 51 | ||
45 | static int | 52 | static Eina_Bool |
46 | read_int(FILE *file, int *ret) | 53 | read_int(unsigned char *map, size_t length, size_t *position, int *ret) |
47 | { | 54 | { |
48 | unsigned char b[4]; | 55 | unsigned char b[4]; |
49 | if (fread(b, sizeof(unsigned char), 4, file) != 4) return 0; | 56 | int i; |
57 | |||
58 | if (*position + 4 > length) return EINA_FALSE; | ||
59 | for (i = 0; i < 4; i++) | ||
60 | b[i] = map[(*position)++]; | ||
50 | *ret = ARGB_JOIN(b[3], b[2], b[1], b[0]); | 61 | *ret = ARGB_JOIN(b[3], b[2], b[1], b[0]); |
51 | return 1; | 62 | return EINA_TRUE; |
52 | } | 63 | } |
53 | 64 | ||
54 | static int | 65 | static Eina_Bool |
55 | read_uint(FILE *file, unsigned int *ret) | 66 | read_uint(unsigned char *map, size_t length, size_t *position, unsigned int *ret) |
56 | { | 67 | { |
57 | unsigned char b[4]; | 68 | unsigned char b[4]; |
58 | if (fread(b, sizeof(unsigned char), 4, file) != 4) return 0; | 69 | int i; |
70 | |||
71 | if (*position + 4 > length) return EINA_FALSE; | ||
72 | for (i = 0; i < 4; i++) | ||
73 | b[i] = map[(*position)++]; | ||
59 | *ret = ARGB_JOIN(b[3], b[2], b[1], b[0]); | 74 | *ret = ARGB_JOIN(b[3], b[2], b[1], b[0]); |
60 | return 1; | 75 | return EINA_TRUE; |
76 | } | ||
77 | |||
78 | static Eina_Bool | ||
79 | read_uchar(unsigned char *map, size_t length, size_t *position, unsigned char *ret) | ||
80 | { | ||
81 | if (*position + 1 > length) return EINA_FALSE; | ||
82 | *ret = map[(*position)++]; | ||
83 | return EINA_TRUE; | ||
84 | } | ||
85 | |||
86 | static Eina_Bool | ||
87 | read_skip(size_t length, size_t *position, int skip) | ||
88 | { | ||
89 | if (*position + skip > length) return EINA_FALSE; | ||
90 | *position += skip; | ||
91 | return EINA_TRUE; | ||
92 | } | ||
93 | |||
94 | static Eina_Bool | ||
95 | read_mem(unsigned char *map, size_t length, size_t *position, void *buffer, int size) | ||
96 | { | ||
97 | if (*position + size > length) return EINA_FALSE; | ||
98 | memcpy(buffer, map + *position, size); | ||
99 | *position += size; | ||
100 | return EINA_TRUE; | ||
61 | } | 101 | } |
62 | 102 | ||
63 | static Eina_Bool | 103 | static Eina_Bool |
64 | evas_image_load_file_head_bmp(Image_Entry *ie, const char *file, const char *key __UNUSED__, int *error) | 104 | evas_image_load_file_head_bmp(Image_Entry *ie, const char *file, const char *key __UNUSED__, int *error) |
65 | { | 105 | { |
66 | FILE *f; | 106 | Eina_File *f; |
67 | char buf[4096]; | 107 | void *map = NULL; |
108 | size_t position = 0; | ||
68 | char hasa = 0; | 109 | char hasa = 0; |
69 | int w = 0, h = 0, planes = 0, bit_count = 0, | 110 | int w = 0, h = 0, planes = 0, bit_count = 0, |
70 | image_size = 0, comp = 0, hdpi = 0, vdpi = 0, | 111 | image_size = 0, comp = 0, hdpi = 0, vdpi = 0, |
@@ -76,7 +117,7 @@ evas_image_load_file_head_bmp(Image_Entry *ie, const char *file, const char *key | |||
76 | unsigned int bmpsize; | 117 | unsigned int bmpsize; |
77 | unsigned short res1, res2; | 118 | unsigned short res1, res2; |
78 | 119 | ||
79 | f = fopen(file, "rb"); | 120 | f = eina_file_open(file, 0); |
80 | if (!f) | 121 | if (!f) |
81 | { | 122 | { |
82 | *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; | 123 | *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; |
@@ -84,84 +125,85 @@ evas_image_load_file_head_bmp(Image_Entry *ie, const char *file, const char *key | |||
84 | } | 125 | } |
85 | 126 | ||
86 | *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT; | 127 | *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT; |
87 | fseek(f, 0, SEEK_END); | 128 | fsize = eina_file_size_get(f); |
88 | fsize = ftell(f); | ||
89 | fseek(f, 0, SEEK_SET); | ||
90 | if (fsize < 2) goto close_file; | 129 | if (fsize < 2) goto close_file; |
91 | 130 | ||
92 | if (fread(buf, 2, 1, f) != 1) goto close_file; | 131 | map = eina_file_map_all(f, EINA_FILE_SEQUENTIAL); |
93 | if (strncmp(buf, "BM", 2)) goto close_file; // magic number | 132 | if (!map) goto close_file; |
133 | |||
134 | if (strncmp(map, "BM", 2)) goto close_file; // magic number | ||
135 | position += 2; | ||
94 | *error = EVAS_LOAD_ERROR_CORRUPT_FILE; | 136 | *error = EVAS_LOAD_ERROR_CORRUPT_FILE; |
95 | if (!read_uint(f, &bmpsize)) goto close_file; | 137 | if (!read_uint(map, fsize, &position, &bmpsize)) goto close_file; |
96 | if (!read_ushort(f, &res1)) goto close_file; | 138 | if (!read_ushort(map, fsize, &position, &res1)) goto close_file; |
97 | if (!read_ushort(f, &res2)) goto close_file; | 139 | if (!read_ushort(map, fsize, &position, &res2)) goto close_file; |
98 | if (!read_uint(f, &offset)) goto close_file; | 140 | if (!read_uint(map, fsize, &position, &offset)) goto close_file; |
99 | if (!read_uint(f, &head_size)) goto close_file; | 141 | if (!read_uint(map, fsize, &position, &head_size)) goto close_file; |
100 | if (head_size == 12) // OS/2 V1 + Windows 3.0 | 142 | if (head_size == 12) // OS/2 V1 + Windows 3.0 |
101 | { | 143 | { |
102 | short tmp; | 144 | short tmp; |
103 | 145 | ||
104 | if (!read_short(f, &tmp)) goto close_file; | 146 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
105 | w = tmp; // width | 147 | w = tmp; // width |
106 | if (!read_short(f, &tmp)) goto close_file; | 148 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
107 | h = tmp; // height | 149 | h = tmp; // height |
108 | if (!read_short(f, &tmp)) goto close_file; | 150 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
109 | planes = tmp; // must be 1 | 151 | planes = tmp; // must be 1 |
110 | if (!read_short(f, &tmp)) goto close_file; | 152 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
111 | bit_count = tmp; // bits per pixel: 1, 4, 8 & 24 | 153 | bit_count = tmp; // bits per pixel: 1, 4, 8 & 24 |
112 | } | 154 | } |
113 | else if (head_size == 64) // OS/2 V2 | 155 | else if (head_size == 64) // OS/2 V2 |
114 | { | 156 | { |
115 | short tmp; | 157 | short tmp; |
116 | int tmp2; | 158 | int tmp2; |
117 | 159 | ||
118 | if (!read_int(f, &tmp2)) goto close_file; | 160 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
119 | w = tmp2; // width | 161 | w = tmp2; // width |
120 | if (!read_int(f, &tmp2)) goto close_file; | 162 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
121 | h = tmp2; // height | 163 | h = tmp2; // height |
122 | if (!read_short(f, &tmp)) goto close_file; | 164 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
123 | planes = tmp; // must be 1 | 165 | planes = tmp; // must be 1 |
124 | if (!read_short(f, &tmp)) goto close_file; | 166 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
125 | bit_count = tmp; // bits per pixel: 1, 4, 8, 16, 24 & 32 | 167 | bit_count = tmp; // bits per pixel: 1, 4, 8, 16, 24 & 32 |
126 | if (!read_int(f, &tmp2)) goto close_file; | 168 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
127 | comp = tmp2; // compression method | 169 | comp = tmp2; // compression method |
128 | if (!read_int(f, &tmp2)) goto close_file; | 170 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
129 | image_size = tmp2; // bitmap data size | 171 | image_size = tmp2; // bitmap data size |
130 | if (!read_int(f, &tmp2)) goto close_file; | 172 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
131 | hdpi = (tmp2 * 254) / 10000; // horizontal pixels/meter | 173 | hdpi = (tmp2 * 254) / 10000; // horizontal pixels/meter |
132 | if (!read_int(f, &tmp2)) goto close_file; | 174 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
133 | vdpi = (tmp2 * 254) / 10000; // vertical pixles/meter | 175 | vdpi = (tmp2 * 254) / 10000; // vertical pixles/meter |
134 | if (!read_int(f, &tmp2)) goto close_file; | 176 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
135 | palette_size = tmp2; // number of palette colors power (2^n - so 0 - 8) | 177 | palette_size = tmp2; // number of palette colors power (2^n - so 0 - 8) |
136 | if (!read_int(f, &tmp2)) goto close_file; | 178 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
137 | important_colors = tmp2; // number of important colors - 0 if all | 179 | important_colors = tmp2; // number of important colors - 0 if all |
138 | if (fread(buf, 24, 1, f) != 1) goto close_file; // skip unused header | 180 | if (!read_skip(fsize, &position, 24)) goto close_file; // skip unused header |
139 | if (image_size == 0) image_size = fsize - offset; | 181 | if (image_size == 0) image_size = fsize - offset; |
140 | } | 182 | } |
141 | else if (head_size == 40) // Windows 3.0 + (v3) | 183 | else if (head_size == 40) // Windows 3.0 + (v3) |
142 | { | 184 | { |
143 | short tmp; | 185 | short tmp; |
144 | int tmp2; | 186 | int tmp2; |
145 | 187 | ||
146 | if (!read_int(f, &tmp2)) goto close_file; | 188 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
147 | w = tmp2; // width | 189 | w = tmp2; // width |
148 | if (!read_int(f, &tmp2)) goto close_file; | 190 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
149 | h = tmp2; // height | 191 | h = tmp2; // height |
150 | if (!read_short(f, &tmp)) goto close_file; | 192 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
151 | planes = tmp; // must be 1 | 193 | planes = tmp; // must be 1 |
152 | if (!read_short(f, &tmp)) goto close_file; | 194 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
153 | bit_count = tmp; // bits per pixel: 1, 4, 8, 16, 24 & 32 | 195 | bit_count = tmp; // bits per pixel: 1, 4, 8, 16, 24 & 32 |
154 | if (!read_int(f, &tmp2)) goto close_file; | 196 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
155 | comp = tmp2; // compression method | 197 | comp = tmp2; // compression method |
156 | if (!read_int(f, &tmp2)) goto close_file; | 198 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
157 | image_size = tmp2; // bitmap data size | 199 | image_size = tmp2; // bitmap data size |
158 | if (!read_int(f, &tmp2)) goto close_file; | 200 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
159 | hdpi = (tmp2 * 254) / 10000; // horizontal pixels/meter | 201 | hdpi = (tmp2 * 254) / 10000; // horizontal pixels/meter |
160 | if (!read_int(f, &tmp2)) goto close_file; | 202 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
161 | vdpi = (tmp2 * 254) / 10000; // vertical pixles/meter | 203 | vdpi = (tmp2 * 254) / 10000; // vertical pixles/meter |
162 | if (!read_int(f, &tmp2)) goto close_file; | 204 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
163 | palette_size = tmp2; // number of palette colors power (2^n - so 0 - 8) | 205 | palette_size = tmp2; // number of palette colors power (2^n - so 0 - 8) |
164 | if (!read_int(f, &tmp2)) goto close_file; | 206 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
165 | important_colors = tmp2; // number of important colors - 0 if all | 207 | important_colors = tmp2; // number of important colors - 0 if all |
166 | if (image_size == 0) image_size = fsize - offset; | 208 | if (image_size == 0) image_size = fsize - offset; |
167 | if ((comp == 0) && (bit_count == 32)) hasa = 1; // GIMP seems to store it this way | 209 | if ((comp == 0) && (bit_count == 32)) hasa = 1; // GIMP seems to store it this way |
@@ -170,37 +212,37 @@ evas_image_load_file_head_bmp(Image_Entry *ie, const char *file, const char *key | |||
170 | { | 212 | { |
171 | short tmp; | 213 | short tmp; |
172 | int tmp2; | 214 | int tmp2; |
173 | 215 | ||
174 | if (!read_int(f, &tmp2)) goto close_file; | 216 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
175 | w = tmp2; // width | 217 | w = tmp2; // width |
176 | if (!read_int(f, &tmp2)) goto close_file; | 218 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
177 | h = tmp2; // height | 219 | h = tmp2; // height |
178 | if (!read_short(f, &tmp)) goto close_file; | 220 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
179 | planes = tmp; // must be 1 | 221 | planes = tmp; // must be 1 |
180 | if (!read_short(f, &tmp)) goto close_file; | 222 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
181 | bit_count = tmp; // bits per pixel: 1, 4, 8, 16, 24 & 32 | 223 | bit_count = tmp; // bits per pixel: 1, 4, 8, 16, 24 & 32 |
182 | if (!read_int(f, &tmp2)) goto close_file; | 224 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
183 | comp = tmp2; // compression method | 225 | comp = tmp2; // compression method |
184 | if (!read_int(f, &tmp2)) goto close_file; | 226 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
185 | image_size = tmp2; // bitmap data size | 227 | image_size = tmp2; // bitmap data size |
186 | if (!read_int(f, &tmp2)) goto close_file; | 228 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
187 | hdpi = (tmp2 * 254) / 10000; // horizontal pixels/meter | 229 | hdpi = (tmp2 * 254) / 10000; // horizontal pixels/meter |
188 | if (!read_int(f, &tmp2)) goto close_file; | 230 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
189 | vdpi = (tmp2 * 254) / 10000; // vertical pixles/meter | 231 | vdpi = (tmp2 * 254) / 10000; // vertical pixles/meter |
190 | if (!read_int(f, &tmp2)) goto close_file; | 232 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
191 | palette_size = tmp2; // number of palette colors power (2^n - so 0 - 8) | 233 | palette_size = tmp2; // number of palette colors power (2^n - so 0 - 8) |
192 | if (!read_int(f, &tmp2)) goto close_file; | 234 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
193 | important_colors = tmp2; // number of important colors - 0 if all | 235 | important_colors = tmp2; // number of important colors - 0 if all |
194 | if (!read_int(f, &tmp2)) goto close_file; | 236 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
195 | rmask = tmp2; // red mask | 237 | rmask = tmp2; // red mask |
196 | if (!read_int(f, &tmp2)) goto close_file; | 238 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
197 | gmask = tmp2; // green mask | 239 | gmask = tmp2; // green mask |
198 | if (!read_int(f, &tmp2)) goto close_file; | 240 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
199 | bmask = tmp2; // blue mask | 241 | bmask = tmp2; // blue mask |
200 | if (!read_int(f, &tmp2)) goto close_file; | 242 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
201 | amask = tmp2; // alpha mask | 243 | amask = tmp2; // alpha mask |
202 | if (fread(buf, 36, 1, f) != 1) goto close_file; // skip unused cie | 244 | if (!read_skip(fsize, &position, 36)) goto close_file; // skip unused cie |
203 | if (fread(buf, 12, 1, f) != 1) goto close_file; // skip unused gamma | 245 | if (!read_skip(fsize, &position, 12)) goto close_file; // skip unused gamma |
204 | if (image_size == 0) image_size = fsize - offset; | 246 | if (image_size == 0) image_size = fsize - offset; |
205 | if ((amask) && (bit_count == 32)) hasa = 1; | 247 | if ((amask) && (bit_count == 32)) hasa = 1; |
206 | } | 248 | } |
@@ -208,38 +250,38 @@ evas_image_load_file_head_bmp(Image_Entry *ie, const char *file, const char *key | |||
208 | { | 250 | { |
209 | short tmp; | 251 | short tmp; |
210 | int tmp2; | 252 | int tmp2; |
211 | 253 | ||
212 | if (!read_int(f, &tmp2)) goto close_file; | 254 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
213 | w = tmp2; // width | 255 | w = tmp2; // width |
214 | if (!read_int(f, &tmp2)) goto close_file; | 256 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
215 | h = tmp2; // height | 257 | h = tmp2; // height |
216 | if (!read_short(f, &tmp)) goto close_file; | 258 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
217 | planes = tmp; // must be 1 | 259 | planes = tmp; // must be 1 |
218 | if (!read_short(f, &tmp)) goto close_file; | 260 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
219 | bit_count = tmp; // bits per pixel: 1, 4, 8, 16, 24 & 32 | 261 | bit_count = tmp; // bits per pixel: 1, 4, 8, 16, 24 & 32 |
220 | if (!read_int(f, &tmp2)) goto close_file; | 262 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
221 | comp = tmp2; // compression method | 263 | comp = tmp2; // compression method |
222 | if (!read_int(f, &tmp2)) goto close_file; | 264 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
223 | image_size = tmp2; // bitmap data size | 265 | image_size = tmp2; // bitmap data size |
224 | if (!read_int(f, &tmp2)) goto close_file; | 266 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
225 | hdpi = (tmp2 * 254) / 10000; // horizontal pixels/meter | 267 | hdpi = (tmp2 * 254) / 10000; // horizontal pixels/meter |
226 | if (!read_int(f, &tmp2)) goto close_file; | 268 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
227 | vdpi = (tmp2 * 254) / 10000; // vertical pixles/meter | 269 | vdpi = (tmp2 * 254) / 10000; // vertical pixles/meter |
228 | if (!read_int(f, &tmp2)) goto close_file; | 270 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
229 | palette_size = tmp2; // number of palette colors power (2^n - so 0 - 8) | 271 | palette_size = tmp2; // number of palette colors power (2^n - so 0 - 8) |
230 | if (!read_int(f, &tmp2)) goto close_file; | 272 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
231 | important_colors = tmp2; // number of important colors - 0 if all | 273 | important_colors = tmp2; // number of important colors - 0 if all |
232 | if (!read_int(f, &tmp2)) goto close_file; | 274 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
233 | rmask = tmp2; // red mask | 275 | rmask = tmp2; // red mask |
234 | if (!read_int(f, &tmp2)) goto close_file; | 276 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
235 | gmask = tmp2; // green mask | 277 | gmask = tmp2; // green mask |
236 | if (!read_int(f, &tmp2)) goto close_file; | 278 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
237 | bmask = tmp2; // blue mask | 279 | bmask = tmp2; // blue mask |
238 | if (!read_int(f, &tmp2)) goto close_file; | 280 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
239 | amask = tmp2; // alpha mask | 281 | amask = tmp2; // alpha mask |
240 | if (fread(buf, 36, 1, f) != 1) goto close_file; // skip unused cie | 282 | if (!read_skip(fsize, &position, 36)) goto close_file; // skip unused cie |
241 | if (fread(buf, 12, 1, f) != 1) goto close_file; // skip unused gamma | 283 | if (!read_skip(fsize, &position, 12)) goto close_file; // skip unused gamma |
242 | if (fread(buf, 16, 1, f) != 1) goto close_file; // skip others | 284 | if (!read_skip(fsize, &position, 16)) goto close_file; // skip others |
243 | if (image_size == 0) image_size = fsize - offset; | 285 | if (image_size == 0) image_size = fsize - offset; |
244 | if ((amask) && (bit_count == 32)) hasa = 1; | 286 | if ((amask) && (bit_count == 32)) hasa = 1; |
245 | } | 287 | } |
@@ -251,7 +293,7 @@ evas_image_load_file_head_bmp(Image_Entry *ie, const char *file, const char *key | |||
251 | h = -h; | 293 | h = -h; |
252 | right_way_up = 1; | 294 | right_way_up = 1; |
253 | } | 295 | } |
254 | 296 | ||
255 | if ((w < 1) || (h < 1) || (w > IMG_MAX_SIZE) || (h > IMG_MAX_SIZE) || | 297 | if ((w < 1) || (h < 1) || (w > IMG_MAX_SIZE) || (h > IMG_MAX_SIZE) || |
256 | IMG_TOO_BIG(w, h)) | 298 | IMG_TOO_BIG(w, h)) |
257 | { | 299 | { |
@@ -327,21 +369,24 @@ evas_image_load_file_head_bmp(Image_Entry *ie, const char *file, const char *key | |||
327 | ie->w = w; | 369 | ie->w = w; |
328 | ie->h = h; | 370 | ie->h = h; |
329 | if (hasa) ie->flags.alpha = 1; | 371 | if (hasa) ie->flags.alpha = 1; |
330 | 372 | ||
331 | fclose(f); | 373 | eina_file_map_free(f, map); |
374 | eina_file_close(f); | ||
332 | *error = EVAS_LOAD_ERROR_NONE; | 375 | *error = EVAS_LOAD_ERROR_NONE; |
333 | return EINA_TRUE; | 376 | return EINA_TRUE; |
334 | 377 | ||
335 | close_file: | 378 | close_file: |
336 | fclose(f); | 379 | if (map) eina_file_map_free(f, map); |
380 | eina_file_close(f); | ||
337 | return EINA_FALSE; | 381 | return EINA_FALSE; |
338 | } | 382 | } |
339 | 383 | ||
340 | static Eina_Bool | 384 | static Eina_Bool |
341 | evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key __UNUSED__, int *error) | 385 | evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key __UNUSED__, int *error) |
342 | { | 386 | { |
343 | FILE *f; | 387 | Eina_File *f; |
344 | char buf[4096]; | 388 | void *map = NULL; |
389 | size_t position = 0; | ||
345 | unsigned char *buffer = NULL, *buffer_end = NULL, *p; | 390 | unsigned char *buffer = NULL, *buffer_end = NULL, *p; |
346 | char hasa = 0; | 391 | char hasa = 0; |
347 | int x = 0, y = 0, w = 0, h = 0, planes = 0, bit_count = 0, image_size = 0, | 392 | int x = 0, y = 0, w = 0, h = 0, planes = 0, bit_count = 0, image_size = 0, |
@@ -361,96 +406,96 @@ evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key | |||
361 | int row_size = 0; /* Row size is rounded up to a multiple of 4bytes */ | 406 | int row_size = 0; /* Row size is rounded up to a multiple of 4bytes */ |
362 | int read_line = 0; /* total read line */ | 407 | int read_line = 0; /* total read line */ |
363 | 408 | ||
364 | 409 | f = eina_file_open(file, 0); | |
365 | f = fopen(file, "rb"); | ||
366 | if (!f) | 410 | if (!f) |
367 | { | 411 | { |
368 | *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; | 412 | *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; |
369 | return EINA_FALSE; | 413 | return EINA_FALSE; |
370 | } | 414 | } |
371 | 415 | ||
372 | *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT; | 416 | *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT; |
373 | fseek(f, 0, SEEK_END); | 417 | fsize = eina_file_size_get(f); |
374 | fsize = ftell(f); | ||
375 | fseek(f, 0, SEEK_SET); | ||
376 | if (fsize < 2) goto close_file; | 418 | if (fsize < 2) goto close_file; |
419 | |||
420 | map = eina_file_map_all(f, EINA_FILE_SEQUENTIAL); | ||
421 | if (!map) goto close_file; | ||
377 | 422 | ||
378 | if (fread(buf, 2, 1, f) != 1) goto close_file; | 423 | if (strncmp(map, "BM", 2)) goto close_file; // magic number |
379 | if (strncmp(buf, "BM", 2)) goto close_file; // magic number | 424 | position += 2; |
380 | *error = EVAS_LOAD_ERROR_CORRUPT_FILE; | 425 | *error = EVAS_LOAD_ERROR_CORRUPT_FILE; |
381 | if (!read_uint(f, &bmpsize)) goto close_file; | 426 | if (!read_uint(map, fsize, &position, &bmpsize)) goto close_file; |
382 | if (!read_ushort(f, &res1)) goto close_file; | 427 | if (!read_ushort(map, fsize, &position, &res1)) goto close_file; |
383 | if (!read_ushort(f, &res2)) goto close_file; | 428 | if (!read_ushort(map, fsize, &position, &res2)) goto close_file; |
384 | if (!read_uint(f, &offset)) goto close_file; | 429 | if (!read_uint(map, fsize, &position, &offset)) goto close_file; |
385 | if (!read_uint(f, &head_size)) goto close_file; | 430 | if (!read_uint(map, fsize, &position, &head_size)) goto close_file; |
386 | image_size = fsize - offset; | 431 | image_size = fsize - offset; |
387 | if (image_size < 1) goto close_file; | 432 | if (image_size < 1) goto close_file; |
388 | 433 | ||
389 | if (head_size == 12) // OS/2 V1 + Windows 3.0 | 434 | if (head_size == 12) // OS/2 V1 + Windows 3.0 |
390 | { | 435 | { |
391 | short tmp; | 436 | short tmp; |
392 | 437 | ||
393 | if (!read_short(f, &tmp)) goto close_file; | 438 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
394 | w = tmp; // width | 439 | w = tmp; // width |
395 | if (!read_short(f, &tmp)) goto close_file; | 440 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
396 | h = tmp; // height | 441 | h = tmp; // height |
397 | if (!read_short(f, &tmp)) goto close_file; | 442 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
398 | planes = tmp; // must be 1 | 443 | planes = tmp; // must be 1 |
399 | if (!read_short(f, &tmp)) goto close_file; | 444 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
400 | bit_count = tmp; // bits per pixel: 1, 4, 8 & 24 | 445 | bit_count = tmp; // bits per pixel: 1, 4, 8 & 24 |
401 | } | 446 | } |
402 | else if (head_size == 64) // OS/2 V2 | 447 | else if (head_size == 64) // OS/2 V2 |
403 | { | 448 | { |
404 | short tmp; | 449 | short tmp; |
405 | int tmp2; | 450 | int tmp2; |
406 | 451 | ||
407 | if (!read_int(f, &tmp2)) goto close_file; | 452 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
408 | w = tmp2; // width | 453 | w = tmp2; // width |
409 | if (!read_int(f, &tmp2)) goto close_file; | 454 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
410 | h = tmp2; // height | 455 | h = tmp2; // height |
411 | if (!read_short(f, &tmp)) goto close_file; | 456 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
412 | planes = tmp; // must be 1 | 457 | planes = tmp; // must be 1 |
413 | if (!read_short(f, &tmp)) goto close_file; | 458 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
414 | bit_count = tmp; // bits per pixel: 1, 4, 8, 16, 24 & 32 | 459 | bit_count = tmp; // bits per pixel: 1, 4, 8, 16, 24 & 32 |
415 | if (!read_int(f, &tmp2)) goto close_file; | 460 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
416 | comp = tmp2; // compression method | 461 | comp = tmp2; // compression method |
417 | if (!read_int(f, &tmp2)) goto close_file; | 462 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
418 | image_size = tmp2; // bitmap data size | 463 | image_size = tmp2; // bitmap data size |
419 | if (!read_int(f, &tmp2)) goto close_file; | 464 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
420 | hdpi = (tmp2 * 254) / 10000; // horizontal pixels/meter | 465 | hdpi = (tmp2 * 254) / 10000; // horizontal pixels/meter |
421 | if (!read_int(f, &tmp2)) goto close_file; | 466 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
422 | vdpi = (tmp2 * 254) / 10000; // vertical pixles/meter | 467 | vdpi = (tmp2 * 254) / 10000; // vertical pixles/meter |
423 | if (!read_int(f, &tmp2)) goto close_file; | 468 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
424 | palette_size = tmp2; // number of palette colors power (2^n - so 0 - 8) | 469 | palette_size = tmp2; // number of palette colors power (2^n - so 0 - 8) |
425 | if (!read_int(f, &tmp2)) goto close_file; | 470 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
426 | important_colors = tmp2; // number of important colors - 0 if all | 471 | important_colors = tmp2; // number of important colors - 0 if all |
427 | if (fread(buf, 24, 1, f) != 1) goto close_file; // skip unused header | 472 | if (!read_skip(fsize, &position, 24)) goto close_file; // skip unused header |
428 | if (image_size == 0) image_size = fsize - offset; | 473 | if (image_size == 0) image_size = fsize - offset; |
429 | } | 474 | } |
430 | else if (head_size == 40) // Windows 3.0 + (v3) | 475 | else if (head_size == 40) // Windows 3.0 + (v3) |
431 | { | 476 | { |
432 | short tmp; | 477 | short tmp; |
433 | int tmp2; | 478 | int tmp2; |
434 | 479 | ||
435 | if (!read_int(f, &tmp2)) goto close_file; | 480 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
436 | w = tmp2; // width | 481 | w = tmp2; // width |
437 | if (!read_int(f, &tmp2)) goto close_file; | 482 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
438 | h = tmp2; // height | 483 | h = tmp2; // height |
439 | if (!read_short(f, &tmp)) goto close_file; | 484 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
440 | planes = tmp; // must be 1 | 485 | planes = tmp; // must be 1 |
441 | if (!read_short(f, &tmp)) goto close_file; | 486 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
442 | bit_count = tmp; // bits per pixel: 1, 4, 8, 16, 24 & 32 | 487 | bit_count = tmp; // bits per pixel: 1, 4, 8, 16, 24 & 32 |
443 | if (!read_int(f, &tmp2)) goto close_file; | 488 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
444 | comp = tmp2; // compression method | 489 | comp = tmp2; // compression method |
445 | if (!read_int(f, &tmp2)) goto close_file; | 490 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
446 | image_size = tmp2; // bitmap data size | 491 | image_size = tmp2; // bitmap data size |
447 | if (!read_int(f, &tmp2)) goto close_file; | 492 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
448 | hdpi = (tmp2 * 254) / 10000; // horizontal pixels/meter | 493 | hdpi = (tmp2 * 254) / 10000; // horizontal pixels/meter |
449 | if (!read_int(f, &tmp2)) goto close_file; | 494 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
450 | vdpi = (tmp2 * 254) / 10000; // vertical pixles/meter | 495 | vdpi = (tmp2 * 254) / 10000; // vertical pixles/meter |
451 | if (!read_int(f, &tmp2)) goto close_file; | 496 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
452 | palette_size = tmp2; // number of palette colors power (2^n - so 0 - 8) | 497 | palette_size = tmp2; // number of palette colors power (2^n - so 0 - 8) |
453 | if (!read_int(f, &tmp2)) goto close_file; | 498 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
454 | important_colors = tmp2; // number of important colors - 0 if all | 499 | important_colors = tmp2; // number of important colors - 0 if all |
455 | if (image_size == 0) image_size = fsize - offset; | 500 | if (image_size == 0) image_size = fsize - offset; |
456 | if ((comp == 0) && (bit_count == 32)) hasa = 1; // GIMP seems to store it this way | 501 | if ((comp == 0) && (bit_count == 32)) hasa = 1; // GIMP seems to store it this way |
@@ -459,37 +504,37 @@ evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key | |||
459 | { | 504 | { |
460 | short tmp; | 505 | short tmp; |
461 | int tmp2; | 506 | int tmp2; |
462 | 507 | ||
463 | if (!read_int(f, &tmp2)) goto close_file; | 508 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
464 | w = tmp2; // width | 509 | w = tmp2; // width |
465 | if (!read_int(f, &tmp2)) goto close_file; | 510 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
466 | h = tmp2; // height | 511 | h = tmp2; // height |
467 | if (!read_short(f, &tmp)) goto close_file; | 512 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
468 | planes = tmp; // must be 1 | 513 | planes = tmp; // must be 1 |
469 | if (!read_short(f, &tmp)) goto close_file; | 514 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
470 | bit_count = tmp; // bits per pixel: 1, 4, 8, 16, 24 & 32 | 515 | bit_count = tmp; // bits per pixel: 1, 4, 8, 16, 24 & 32 |
471 | if (!read_int(f, &tmp2)) goto close_file; | 516 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
472 | comp = tmp2; // compression method | 517 | comp = tmp2; // compression method |
473 | if (!read_int(f, &tmp2)) goto close_file; | 518 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
474 | image_size = tmp2; // bitmap data size | 519 | image_size = tmp2; // bitmap data size |
475 | if (!read_int(f, &tmp2)) goto close_file; | 520 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
476 | hdpi = (tmp2 * 254) / 10000; // horizontal pixels/meter | 521 | hdpi = (tmp2 * 254) / 10000; // horizontal pixels/meter |
477 | if (!read_int(f, &tmp2)) goto close_file; | 522 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
478 | vdpi = (tmp2 * 254) / 10000; // vertical pixles/meter | 523 | vdpi = (tmp2 * 254) / 10000; // vertical pixles/meter |
479 | if (!read_int(f, &tmp2)) goto close_file; | 524 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
480 | palette_size = tmp2; // number of palette colors power (2^n - so 0 - 8) | 525 | palette_size = tmp2; // number of palette colors power (2^n - so 0 - 8) |
481 | if (!read_int(f, &tmp2)) goto close_file; | 526 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
482 | important_colors = tmp2; // number of important colors - 0 if all | 527 | important_colors = tmp2; // number of important colors - 0 if all |
483 | if (!read_int(f, &tmp2)) goto close_file; | 528 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
484 | rmask = tmp2; // red mask | 529 | rmask = tmp2; // red mask |
485 | if (!read_int(f, &tmp2)) goto close_file; | 530 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
486 | gmask = tmp2; // green mask | 531 | gmask = tmp2; // green mask |
487 | if (!read_int(f, &tmp2)) goto close_file; | 532 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
488 | bmask = tmp2; // blue mask | 533 | bmask = tmp2; // blue mask |
489 | if (!read_int(f, &tmp2)) goto close_file; | 534 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
490 | amask = tmp2; // alpha mask | 535 | amask = tmp2; // alpha mask |
491 | if (fread(buf, 36, 1, f) != 1) goto close_file; // skip unused cie | 536 | if (!read_skip(fsize, &position, 36)) goto close_file; // skip unused cie |
492 | if (fread(buf, 12, 1, f) != 1) goto close_file; // skip unused gamma | 537 | if (!read_skip(fsize, &position, 12)) goto close_file; // skip unused gamma |
493 | if (image_size == 0) image_size = fsize - offset; | 538 | if (image_size == 0) image_size = fsize - offset; |
494 | if ((amask) && (bit_count == 32)) hasa = 1; | 539 | if ((amask) && (bit_count == 32)) hasa = 1; |
495 | } | 540 | } |
@@ -497,38 +542,38 @@ evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key | |||
497 | { | 542 | { |
498 | short tmp; | 543 | short tmp; |
499 | int tmp2; | 544 | int tmp2; |
500 | 545 | ||
501 | if (!read_int(f, &tmp2)) goto close_file; | 546 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
502 | w = tmp2; // width | 547 | w = tmp2; // width |
503 | if (!read_int(f, &tmp2)) goto close_file; | 548 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
504 | h = tmp2; // height | 549 | h = tmp2; // height |
505 | if (!read_short(f, &tmp)) goto close_file; | 550 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
506 | planes = tmp; // must be 1 | 551 | planes = tmp; // must be 1 |
507 | if (!read_short(f, &tmp)) goto close_file; | 552 | if (!read_short(map, fsize, &position, &tmp)) goto close_file; |
508 | bit_count = tmp; // bits per pixel: 1, 4, 8, 16, 24 & 32 | 553 | bit_count = tmp; // bits per pixel: 1, 4, 8, 16, 24 & 32 |
509 | if (!read_int(f, &tmp2)) goto close_file; | 554 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
510 | comp = tmp2; // compression method | 555 | comp = tmp2; // compression method |
511 | if (!read_int(f, &tmp2)) goto close_file; | 556 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
512 | image_size = tmp2; // bitmap data size | 557 | image_size = tmp2; // bitmap data size |
513 | if (!read_int(f, &tmp2)) goto close_file; | 558 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
514 | hdpi = (tmp2 * 254) / 10000; // horizontal pixels/meter | 559 | hdpi = (tmp2 * 254) / 10000; // horizontal pixels/meter |
515 | if (!read_int(f, &tmp2)) goto close_file; | 560 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
516 | vdpi = (tmp2 * 254) / 10000; // vertical pixles/meter | 561 | vdpi = (tmp2 * 254) / 10000; // vertical pixles/meter |
517 | if (!read_int(f, &tmp2)) goto close_file; | 562 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
518 | palette_size = tmp2; // number of palette colors power (2^n - so 0 - 8) | 563 | palette_size = tmp2; // number of palette colors power (2^n - so 0 - 8) |
519 | if (!read_int(f, &tmp2)) goto close_file; | 564 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
520 | important_colors = tmp2; // number of important colors - 0 if all | 565 | important_colors = tmp2; // number of important colors - 0 if all |
521 | if (!read_int(f, &tmp2)) goto close_file; | 566 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
522 | rmask = tmp2; // red mask | 567 | rmask = tmp2; // red mask |
523 | if (!read_int(f, &tmp2)) goto close_file; | 568 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
524 | gmask = tmp2; // green mask | 569 | gmask = tmp2; // green mask |
525 | if (!read_int(f, &tmp2)) goto close_file; | 570 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
526 | bmask = tmp2; // blue mask | 571 | bmask = tmp2; // blue mask |
527 | if (!read_int(f, &tmp2)) goto close_file; | 572 | if (!read_int(map, fsize, &position, &tmp2)) goto close_file; |
528 | amask = tmp2; // alpha mask | 573 | amask = tmp2; // alpha mask |
529 | if (fread(buf, 36, 1, f) != 1) goto close_file; // skip unused cie | 574 | if (!read_skip(fsize, &position, 36)) goto close_file; // skip unused cie |
530 | if (fread(buf, 12, 1, f) != 1) goto close_file; // skip unused gamma | 575 | if (!read_skip(fsize, &position, 12)) goto close_file; // skip unused gamma |
531 | if (fread(buf, 16, 1, f) != 1) goto close_file; // skip others | 576 | if (!read_skip(fsize, &position, 16)) goto close_file; // skip others |
532 | if (image_size == 0) image_size = fsize - offset; | 577 | if (image_size == 0) image_size = fsize - offset; |
533 | if ((amask) && (bit_count == 32)) hasa = 1; | 578 | if ((amask) && (bit_count == 32)) hasa = 1; |
534 | } | 579 | } |
@@ -605,17 +650,17 @@ evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key | |||
605 | pal = alloca(256 * 4); | 650 | pal = alloca(256 * 4); |
606 | for (i = 0; i < pal_num; i++) | 651 | for (i = 0; i < pal_num; i++) |
607 | { | 652 | { |
608 | if (fread(&b, 1, 1, f) != 1) goto close_file; | 653 | if (!read_uchar(map, fsize, &position, &b)) goto close_file; |
609 | if (fread(&g, 1, 1, f) != 1) goto close_file; | 654 | if (!read_uchar(map, fsize, &position, &g)) goto close_file; |
610 | if (fread(&r, 1, 1, f) != 1) goto close_file; | 655 | if (!read_uchar(map, fsize, &position, &r)) goto close_file; |
611 | if ((head_size != 12) /*&& (palette_size != 0)*/) | 656 | if ((head_size != 12) /*&& (palette_size != 0)*/) |
612 | { // OS/2 V1 doesn't do the pad byte | 657 | { // OS/2 V1 doesn't do the pad byte |
613 | if (fread(&a, 1, 1, f) != 1) goto close_file; | 658 | if (!read_uchar(map, fsize, &position, &a)) goto close_file; |
614 | } | 659 | } |
615 | a = 0xff; // fillin a as solid for paletted images | 660 | a = 0xff; // fillin a as solid for paletted images |
616 | pal[i] = ARGB_JOIN(a, r, g, b); | 661 | pal[i] = ARGB_JOIN(a, r, g, b); |
617 | } | 662 | } |
618 | fseek(f, offset, SEEK_SET); | 663 | position = offset; |
619 | 664 | ||
620 | if ((scale_ratio == 1) || (comp !=0)) | 665 | if ((scale_ratio == 1) || (comp !=0)) |
621 | buffer = malloc(image_size + 8); // add 8 for padding to avoid checks | 666 | buffer = malloc(image_size + 8); // add 8 for padding to avoid checks |
@@ -643,11 +688,11 @@ evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key | |||
643 | 688 | ||
644 | if ((scale_ratio == 1) || (comp !=0)) | 689 | if ((scale_ratio == 1) || (comp !=0)) |
645 | { | 690 | { |
646 | if (fread(buffer, image_size, 1, f) != 1) goto close_file; | 691 | if (!read_mem(map, fsize, &position, buffer, image_size)) goto close_file; |
647 | } | 692 | } |
648 | else | 693 | else |
649 | { | 694 | { |
650 | if (fread(buffer, row_size, 1, f) != 1) goto close_file; | 695 | if (!read_mem(map, fsize, &position, buffer, row_size)) goto close_file; |
651 | } | 696 | } |
652 | 697 | ||
653 | if (bit_count == 1) | 698 | if (bit_count == 1) |
@@ -715,8 +760,8 @@ evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key | |||
715 | read_line += scale_ratio; | 760 | read_line += scale_ratio; |
716 | if (read_line >= image_h) break; | 761 | if (read_line >= image_h) break; |
717 | 762 | ||
718 | fseek(f, row_size * (scale_ratio - 1), SEEK_CUR); | 763 | position += row_size * (scale_ratio - 1); |
719 | if (fread(buffer, row_size, 1, f) != 1) goto close_file; | 764 | if (!read_mem(map, fsize, &position, buffer, row_size)) goto close_file; |
720 | p = buffer; | 765 | p = buffer; |
721 | buffer_end = buffer + row_size; | 766 | buffer_end = buffer + row_size; |
722 | } | 767 | } |
@@ -770,8 +815,8 @@ evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key | |||
770 | read_line += scale_ratio; | 815 | read_line += scale_ratio; |
771 | if (read_line >= image_h) break; | 816 | if (read_line >= image_h) break; |
772 | 817 | ||
773 | fseek(f, row_size * (scale_ratio - 1), SEEK_CUR); | 818 | position += row_size * (scale_ratio - 1); |
774 | if (fread(buffer, row_size, 1, f) != 1) goto close_file; | 819 | if (!read_mem(map, fsize, &position, buffer, row_size)) goto close_file; |
775 | p = buffer; | 820 | p = buffer; |
776 | buffer_end = buffer + row_size; | 821 | buffer_end = buffer + row_size; |
777 | } | 822 | } |
@@ -960,8 +1005,8 @@ evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key | |||
960 | read_line += scale_ratio; | 1005 | read_line += scale_ratio; |
961 | if (read_line >= image_h) break; | 1006 | if (read_line >= image_h) break; |
962 | 1007 | ||
963 | fseek(f, row_size * (scale_ratio - 1), SEEK_CUR); | 1008 | position += row_size * (scale_ratio - 1); |
964 | if (fread(buffer, row_size, 1, f) != 1) goto close_file; | 1009 | if (!read_mem(map, fsize, &position, buffer, row_size)) goto close_file; |
965 | p = buffer; | 1010 | p = buffer; |
966 | buffer_end = buffer + row_size; | 1011 | buffer_end = buffer + row_size; |
967 | } | 1012 | } |
@@ -1088,7 +1133,7 @@ evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key | |||
1088 | { | 1133 | { |
1089 | if (comp == 0) // no compression | 1134 | if (comp == 0) // no compression |
1090 | { | 1135 | { |
1091 | fseek(f, offset, SEEK_SET); | 1136 | position = offset; |
1092 | if (scale_ratio == 1) | 1137 | if (scale_ratio == 1) |
1093 | buffer = malloc(image_size + 8); // add 8 for padding to avoid checks | 1138 | buffer = malloc(image_size + 8); // add 8 for padding to avoid checks |
1094 | else | 1139 | else |
@@ -1106,11 +1151,11 @@ evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key | |||
1106 | p = buffer; | 1151 | p = buffer; |
1107 | if (scale_ratio == 1) | 1152 | if (scale_ratio == 1) |
1108 | { | 1153 | { |
1109 | if (fread(buffer, image_size, 1, f) != 1) goto close_file; | 1154 | if (!read_mem(map, fsize, &position, buffer, image_size)) goto close_file; |
1110 | } | 1155 | } |
1111 | else | 1156 | else |
1112 | { | 1157 | { |
1113 | if (fread(buffer, row_size, 1, f) != 1) goto close_file; | 1158 | if (!read_mem(map, fsize, &position, buffer, row_size)) goto close_file; |
1114 | } | 1159 | } |
1115 | if (bit_count == 16) | 1160 | if (bit_count == 16) |
1116 | { | 1161 | { |
@@ -1139,8 +1184,8 @@ evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key | |||
1139 | read_line += scale_ratio; | 1184 | read_line += scale_ratio; |
1140 | if (read_line >= image_h) break; | 1185 | if (read_line >= image_h) break; |
1141 | 1186 | ||
1142 | fseek(f, row_size * (scale_ratio - 1), SEEK_CUR); | 1187 | position += row_size * (scale_ratio - 1); |
1143 | if (fread(buffer, row_size, 1, f) != 1) goto close_file; | 1188 | if (!read_mem(map, fsize, &position, buffer, row_size)) goto close_file; |
1144 | p = buffer; | 1189 | p = buffer; |
1145 | buffer_end = buffer + row_size; | 1190 | buffer_end = buffer + row_size; |
1146 | } | 1191 | } |
@@ -1173,8 +1218,8 @@ evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key | |||
1173 | read_line += scale_ratio; | 1218 | read_line += scale_ratio; |
1174 | if (read_line >= image_h) break; | 1219 | if (read_line >= image_h) break; |
1175 | 1220 | ||
1176 | fseek(f, row_size * (scale_ratio - 1), SEEK_CUR); | 1221 | position += row_size * (scale_ratio - 1); |
1177 | if (fread(buffer, row_size, 1, f) != 1) goto close_file; | 1222 | if (!read_mem(map, fsize, &position, buffer, row_size)) goto close_file; |
1178 | p = buffer; | 1223 | p = buffer; |
1179 | buffer_end = buffer + row_size; | 1224 | buffer_end = buffer + row_size; |
1180 | } | 1225 | } |
@@ -1212,8 +1257,8 @@ evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key | |||
1212 | read_line += scale_ratio; | 1257 | read_line += scale_ratio; |
1213 | if (read_line >= image_h) break; | 1258 | if (read_line >= image_h) break; |
1214 | 1259 | ||
1215 | fseek(f, row_size * (scale_ratio - 1), SEEK_CUR); | 1260 | position += row_size * (scale_ratio - 1); |
1216 | if (fread(buffer, row_size, 1, f) != 1) goto close_file; | 1261 | if (!read_mem(map, fsize, &position, buffer, row_size)) goto close_file; |
1217 | p = buffer; | 1262 | p = buffer; |
1218 | buffer_end = buffer + row_size; | 1263 | buffer_end = buffer + row_size; |
1219 | } | 1264 | } |
@@ -1230,7 +1275,7 @@ evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key | |||
1230 | if (hasa) | 1275 | if (hasa) |
1231 | { | 1276 | { |
1232 | unsigned int *pixend = surface + (w * h); | 1277 | unsigned int *pixend = surface + (w * h); |
1233 | 1278 | ||
1234 | for (pix = surface; pix < pixend; pix++) | 1279 | for (pix = surface; pix < pixend; pix++) |
1235 | A_VAL(pix) = 0xff; | 1280 | A_VAL(pix) = 0xff; |
1236 | } | 1281 | } |
@@ -1241,11 +1286,11 @@ evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key | |||
1241 | } | 1286 | } |
1242 | else if (comp == 3) // bit field | 1287 | else if (comp == 3) // bit field |
1243 | { | 1288 | { |
1244 | if (!read_uint(f, &rmask)) goto close_file; | 1289 | if (!read_uint(map, fsize, &position, &rmask)) goto close_file; |
1245 | if (!read_uint(f, &gmask)) goto close_file; | 1290 | if (!read_uint(map, fsize, &position, &gmask)) goto close_file; |
1246 | if (!read_uint(f, &bmask)) goto close_file; | 1291 | if (!read_uint(map, fsize, &position, &bmask)) goto close_file; |
1247 | 1292 | ||
1248 | fseek(f, offset, SEEK_SET); | 1293 | position = offset; |
1249 | if (scale_ratio == 1) | 1294 | if (scale_ratio == 1) |
1250 | buffer = malloc(image_size + 8); // add 8 for padding to avoid checks | 1295 | buffer = malloc(image_size + 8); // add 8 for padding to avoid checks |
1251 | else | 1296 | else |
@@ -1264,14 +1309,14 @@ evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key | |||
1264 | p = buffer; | 1309 | p = buffer; |
1265 | if (scale_ratio == 1) | 1310 | if (scale_ratio == 1) |
1266 | { | 1311 | { |
1267 | if (fread(buffer, image_size, 1, f) != 1) goto close_file; | 1312 | if (!read_mem(map, fsize, &position, buffer, image_size)) goto close_file; |
1268 | } | 1313 | } |
1269 | else | 1314 | else |
1270 | { | 1315 | { |
1271 | if (fread(buffer, row_size, 1, f) != 1) goto close_file; | 1316 | if (!read_mem(map, fsize, &position, buffer, row_size)) goto close_file; |
1272 | } | 1317 | } |
1273 | 1318 | ||
1274 | if ((bit_count == 16) && | 1319 | if ((bit_count == 16) && |
1275 | (rmask == 0xf800) && (gmask == 0x07e0) && (bmask == 0x001f) | 1320 | (rmask == 0xf800) && (gmask == 0x07e0) && (bmask == 0x001f) |
1276 | ) | 1321 | ) |
1277 | { | 1322 | { |
@@ -1299,8 +1344,9 @@ evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key | |||
1299 | { | 1344 | { |
1300 | read_line += scale_ratio; | 1345 | read_line += scale_ratio; |
1301 | if (read_line >= image_h) break; | 1346 | if (read_line >= image_h) break; |
1302 | fseek(f, row_size * (scale_ratio - 1), SEEK_CUR); | 1347 | |
1303 | if (fread(buffer, row_size, 1, f) != 1) goto close_file; | 1348 | position += row_size * (scale_ratio - 1); |
1349 | if (!read_mem(map, fsize, &position, buffer, row_size)) goto close_file; | ||
1304 | p = buffer; | 1350 | p = buffer; |
1305 | buffer_end = buffer + row_size; | 1351 | buffer_end = buffer + row_size; |
1306 | } | 1352 | } |
@@ -1338,8 +1384,9 @@ evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key | |||
1338 | { | 1384 | { |
1339 | read_line += scale_ratio; | 1385 | read_line += scale_ratio; |
1340 | if (read_line >= image_h) break; | 1386 | if (read_line >= image_h) break; |
1341 | fseek(f, row_size * (scale_ratio - 1), SEEK_CUR); | 1387 | |
1342 | if (fread(buffer, row_size, 1, f) != 1) goto close_file; | 1388 | position += row_size * (scale_ratio - 1); |
1389 | if (!read_mem(map, fsize, &position, buffer_end, row_size)) goto close_file; | ||
1343 | p = buffer; | 1390 | p = buffer; |
1344 | buffer_end = buffer + row_size; | 1391 | buffer_end = buffer + row_size; |
1345 | } | 1392 | } |
@@ -1375,8 +1422,9 @@ evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key | |||
1375 | { | 1422 | { |
1376 | read_line += scale_ratio; | 1423 | read_line += scale_ratio; |
1377 | if (read_line >= image_h) break; | 1424 | if (read_line >= image_h) break; |
1378 | fseek(f, row_size * (scale_ratio - 1), SEEK_CUR); | 1425 | |
1379 | if (fread(buffer, row_size, 1, f) != 1) goto close_file; | 1426 | position += row_size * (scale_ratio - 1); |
1427 | if (!read_mem(map, fsize, &position, buffer, row_size)) goto close_file; | ||
1380 | p = buffer; | 1428 | p = buffer; |
1381 | buffer_end = buffer + row_size; | 1429 | buffer_end = buffer + row_size; |
1382 | } | 1430 | } |
@@ -1404,10 +1452,12 @@ evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key | |||
1404 | } | 1452 | } |
1405 | else | 1453 | else |
1406 | goto close_file; | 1454 | goto close_file; |
1407 | 1455 | ||
1408 | if (buffer) free(buffer); | 1456 | if (buffer) free(buffer); |
1409 | if (scale_surface) free(scale_surface); | 1457 | if (scale_surface) free(scale_surface); |
1410 | fclose(f); | 1458 | |
1459 | eina_file_map_free(f, map); | ||
1460 | eina_file_close(f); | ||
1411 | 1461 | ||
1412 | evas_common_image_premul(ie); | 1462 | evas_common_image_premul(ie); |
1413 | *error = EVAS_LOAD_ERROR_NONE; | 1463 | *error = EVAS_LOAD_ERROR_NONE; |
@@ -1416,7 +1466,8 @@ evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key | |||
1416 | close_file: | 1466 | close_file: |
1417 | if (buffer) free(buffer); | 1467 | if (buffer) free(buffer); |
1418 | if (scale_surface) free(scale_surface); | 1468 | if (scale_surface) free(scale_surface); |
1419 | fclose(f); | 1469 | if (map) eina_file_map_free(f, map); |
1470 | eina_file_close(f); | ||
1420 | return EINA_FALSE; | 1471 | return EINA_FALSE; |
1421 | } | 1472 | } |
1422 | 1473 | ||
diff --git a/libraries/evas/src/modules/loaders/edb/Makefile.in b/libraries/evas/src/modules/loaders/edb/Makefile.in index 38c1fa2..87356b4 100644 --- a/libraries/evas/src/modules/loaders/edb/Makefile.in +++ b/libraries/evas/src/modules/loaders/edb/Makefile.in | |||
@@ -231,8 +231,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
232 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 232 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
233 | PKG_CONFIG = @PKG_CONFIG@ | 233 | PKG_CONFIG = @PKG_CONFIG@ |
234 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
235 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
236 | PNG_CFLAGS = @PNG_CFLAGS@ | 234 | PNG_CFLAGS = @PNG_CFLAGS@ |
237 | PNG_LIBS = @PNG_LIBS@ | 235 | PNG_LIBS = @PNG_LIBS@ |
238 | RANLIB = @RANLIB@ | 236 | RANLIB = @RANLIB@ |
@@ -249,6 +247,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
249 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 247 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
250 | VERSION = @VERSION@ | 248 | VERSION = @VERSION@ |
251 | VMAJ = @VMAJ@ | 249 | VMAJ = @VMAJ@ |
250 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
251 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
252 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 252 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
254 | XCB_CFLAGS = @XCB_CFLAGS@ | 254 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -330,6 +330,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
333 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
334 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
335 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
336 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
333 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 337 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
334 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 338 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
335 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 339 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/loaders/edb/evas_image_load_edb.c b/libraries/evas/src/modules/loaders/edb/evas_image_load_edb.c index 94b121e..521161f 100644 --- a/libraries/evas/src/modules/loaders/edb/evas_image_load_edb.c +++ b/libraries/evas/src/modules/loaders/edb/evas_image_load_edb.c | |||
@@ -16,7 +16,8 @@ static Evas_Image_Load_Func evas_image_load_edb_func = | |||
16 | EINA_TRUE, | 16 | EINA_TRUE, |
17 | evas_image_load_file_head_edb, | 17 | evas_image_load_file_head_edb, |
18 | evas_image_load_file_data_edb, | 18 | evas_image_load_file_data_edb, |
19 | NULL | 19 | NULL, |
20 | EINA_FALSE | ||
20 | }; | 21 | }; |
21 | 22 | ||
22 | static Eina_Bool | 23 | static Eina_Bool |
diff --git a/libraries/evas/src/modules/loaders/eet/Makefile.in b/libraries/evas/src/modules/loaders/eet/Makefile.in index 6a6c40e..25a30cf 100644 --- a/libraries/evas/src/modules/loaders/eet/Makefile.in +++ b/libraries/evas/src/modules/loaders/eet/Makefile.in | |||
@@ -231,8 +231,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
232 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 232 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
233 | PKG_CONFIG = @PKG_CONFIG@ | 233 | PKG_CONFIG = @PKG_CONFIG@ |
234 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
235 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
236 | PNG_CFLAGS = @PNG_CFLAGS@ | 234 | PNG_CFLAGS = @PNG_CFLAGS@ |
237 | PNG_LIBS = @PNG_LIBS@ | 235 | PNG_LIBS = @PNG_LIBS@ |
238 | RANLIB = @RANLIB@ | 236 | RANLIB = @RANLIB@ |
@@ -249,6 +247,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
249 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 247 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
250 | VERSION = @VERSION@ | 248 | VERSION = @VERSION@ |
251 | VMAJ = @VMAJ@ | 249 | VMAJ = @VMAJ@ |
250 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
251 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
252 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 252 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
254 | XCB_CFLAGS = @XCB_CFLAGS@ | 254 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -330,6 +330,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
333 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
334 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
335 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
336 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
333 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 337 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
334 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 338 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
335 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 339 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/loaders/eet/evas_image_load_eet.c b/libraries/evas/src/modules/loaders/eet/evas_image_load_eet.c index a187b9e..f86246a 100644 --- a/libraries/evas/src/modules/loaders/eet/evas_image_load_eet.c +++ b/libraries/evas/src/modules/loaders/eet/evas_image_load_eet.c | |||
@@ -16,7 +16,8 @@ Evas_Image_Load_Func evas_image_load_eet_func = | |||
16 | EINA_TRUE, | 16 | EINA_TRUE, |
17 | evas_image_load_file_head_eet, | 17 | evas_image_load_file_head_eet, |
18 | evas_image_load_file_data_eet, | 18 | evas_image_load_file_data_eet, |
19 | NULL | 19 | NULL, |
20 | EINA_FALSE | ||
20 | }; | 21 | }; |
21 | 22 | ||
22 | 23 | ||
diff --git a/libraries/evas/src/modules/loaders/generic/Makefile.in b/libraries/evas/src/modules/loaders/generic/Makefile.in index 65a0bac..dfd5294 100644 --- a/libraries/evas/src/modules/loaders/generic/Makefile.in +++ b/libraries/evas/src/modules/loaders/generic/Makefile.in | |||
@@ -232,8 +232,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
232 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 232 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
233 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 233 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
234 | PKG_CONFIG = @PKG_CONFIG@ | 234 | PKG_CONFIG = @PKG_CONFIG@ |
235 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
236 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
237 | PNG_CFLAGS = @PNG_CFLAGS@ | 235 | PNG_CFLAGS = @PNG_CFLAGS@ |
238 | PNG_LIBS = @PNG_LIBS@ | 236 | PNG_LIBS = @PNG_LIBS@ |
239 | RANLIB = @RANLIB@ | 237 | RANLIB = @RANLIB@ |
@@ -250,6 +248,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
250 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 248 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
251 | VERSION = @VERSION@ | 249 | VERSION = @VERSION@ |
252 | VMAJ = @VMAJ@ | 250 | VMAJ = @VMAJ@ |
251 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
252 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
253 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 253 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
254 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 254 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
255 | XCB_CFLAGS = @XCB_CFLAGS@ | 255 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -331,6 +331,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
331 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 331 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
332 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 332 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
333 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 333 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
334 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
335 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
336 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
337 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
334 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 338 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
335 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 339 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
336 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 340 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/loaders/generic/evas_image_load_generic.c b/libraries/evas/src/modules/loaders/generic/evas_image_load_generic.c index 88c189d..2bbfd3e 100644 --- a/libraries/evas/src/modules/loaders/generic/evas_image_load_generic.c +++ b/libraries/evas/src/modules/loaders/generic/evas_image_load_generic.c | |||
@@ -24,7 +24,8 @@ Evas_Image_Load_Func evas_image_load_generic_func = | |||
24 | EINA_TRUE, | 24 | EINA_TRUE, |
25 | evas_image_load_file_head_generic, | 25 | evas_image_load_file_head_generic, |
26 | evas_image_load_file_data_generic, | 26 | evas_image_load_file_data_generic, |
27 | NULL | 27 | NULL, |
28 | EINA_FALSE | ||
28 | }; | 29 | }; |
29 | 30 | ||
30 | static Eina_Bool | 31 | static Eina_Bool |
@@ -117,7 +118,7 @@ _load(Image_Entry *ie, const char *file, const char *key, int *error, Eina_Bool | |||
117 | int read_data = 0; | 118 | int read_data = 0; |
118 | char *tmpfname = NULL, *shmfname = NULL; | 119 | char *tmpfname = NULL, *shmfname = NULL; |
119 | DATA32 *body; | 120 | DATA32 *body; |
120 | FILE *f; | 121 | FILE *f = NULL; |
121 | 122 | ||
122 | libdir = _evas_module_libdir_get(); | 123 | libdir = _evas_module_libdir_get(); |
123 | cmd_len = strlen(libdir); | 124 | cmd_len = strlen(libdir); |
@@ -125,6 +126,7 @@ _load(Image_Entry *ie, const char *file, const char *key, int *error, Eina_Bool | |||
125 | img_loader = alloca(cmd_len + 1); | 126 | img_loader = alloca(cmd_len + 1); |
126 | strcpy(img_loader, libdir); | 127 | strcpy(img_loader, libdir); |
127 | strcat(img_loader, loader); | 128 | strcat(img_loader, loader); |
129 | |||
128 | // params excluding file, key and loadopts | 130 | // params excluding file, key and loadopts |
129 | cmd_len += 1024; | 131 | cmd_len += 1024; |
130 | cmd_len += strlen(file) * 2; | 132 | cmd_len += strlen(file) * 2; |
@@ -188,6 +190,8 @@ _load(Image_Entry *ie, const char *file, const char *key, int *error, Eina_Bool | |||
188 | // will interpret shell stuff and path hunt that will then exec the | 190 | // will interpret shell stuff and path hunt that will then exec the |
189 | // program itself that will dynamically link that will again | 191 | // program itself that will dynamically link that will again |
190 | // parse the arguments and finally do something... | 192 | // parse the arguments and finally do something... |
193 | if (access(decoders[try_count], X_OK)) continue; | ||
194 | |||
191 | strcpy(cmd, decoders[try_count]); | 195 | strcpy(cmd, decoders[try_count]); |
192 | strcat(cmd, " "); | 196 | strcat(cmd, " "); |
193 | // filename first arg | 197 | // filename first arg |
diff --git a/libraries/evas/src/modules/loaders/gif/Makefile.in b/libraries/evas/src/modules/loaders/gif/Makefile.in index 7fcd6a7..f32fcf4 100644 --- a/libraries/evas/src/modules/loaders/gif/Makefile.in +++ b/libraries/evas/src/modules/loaders/gif/Makefile.in | |||
@@ -231,8 +231,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
232 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 232 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
233 | PKG_CONFIG = @PKG_CONFIG@ | 233 | PKG_CONFIG = @PKG_CONFIG@ |
234 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
235 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
236 | PNG_CFLAGS = @PNG_CFLAGS@ | 234 | PNG_CFLAGS = @PNG_CFLAGS@ |
237 | PNG_LIBS = @PNG_LIBS@ | 235 | PNG_LIBS = @PNG_LIBS@ |
238 | RANLIB = @RANLIB@ | 236 | RANLIB = @RANLIB@ |
@@ -249,6 +247,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
249 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 247 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
250 | VERSION = @VERSION@ | 248 | VERSION = @VERSION@ |
251 | VMAJ = @VMAJ@ | 249 | VMAJ = @VMAJ@ |
250 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
251 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
252 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 252 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
254 | XCB_CFLAGS = @XCB_CFLAGS@ | 254 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -330,6 +330,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
333 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
334 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
335 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
336 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
333 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 337 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
334 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 338 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
335 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 339 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/loaders/gif/evas_image_load_gif.c b/libraries/evas/src/modules/loaders/gif/evas_image_load_gif.c index 976df0d..9cd6f6e 100644 --- a/libraries/evas/src/modules/loaders/gif/evas_image_load_gif.c +++ b/libraries/evas/src/modules/loaders/gif/evas_image_load_gif.c | |||
@@ -50,7 +50,8 @@ static Evas_Image_Load_Func evas_image_load_gif_func = | |||
50 | EINA_TRUE, | 50 | EINA_TRUE, |
51 | evas_image_load_file_head_gif, | 51 | evas_image_load_file_head_gif, |
52 | evas_image_load_file_data_gif, | 52 | evas_image_load_file_data_gif, |
53 | evas_image_load_frame_duration_gif | 53 | evas_image_load_frame_duration_gif, |
54 | EINA_FALSE | ||
54 | }; | 55 | }; |
55 | #define byte2_to_int(a,b) (((b)<<8)|(a)) | 56 | #define byte2_to_int(a,b) (((b)<<8)|(a)) |
56 | 57 | ||
diff --git a/libraries/evas/src/modules/loaders/ico/Makefile.in b/libraries/evas/src/modules/loaders/ico/Makefile.in index 5c26adf..f65ace0 100644 --- a/libraries/evas/src/modules/loaders/ico/Makefile.in +++ b/libraries/evas/src/modules/loaders/ico/Makefile.in | |||
@@ -231,8 +231,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
232 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 232 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
233 | PKG_CONFIG = @PKG_CONFIG@ | 233 | PKG_CONFIG = @PKG_CONFIG@ |
234 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
235 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
236 | PNG_CFLAGS = @PNG_CFLAGS@ | 234 | PNG_CFLAGS = @PNG_CFLAGS@ |
237 | PNG_LIBS = @PNG_LIBS@ | 235 | PNG_LIBS = @PNG_LIBS@ |
238 | RANLIB = @RANLIB@ | 236 | RANLIB = @RANLIB@ |
@@ -249,6 +247,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
249 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 247 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
250 | VERSION = @VERSION@ | 248 | VERSION = @VERSION@ |
251 | VMAJ = @VMAJ@ | 249 | VMAJ = @VMAJ@ |
250 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
251 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
252 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 252 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
254 | XCB_CFLAGS = @XCB_CFLAGS@ | 254 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -330,6 +330,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
333 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
334 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
335 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
336 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
333 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 337 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
334 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 338 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
335 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 339 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/loaders/ico/evas_image_load_ico.c b/libraries/evas/src/modules/loaders/ico/evas_image_load_ico.c index 17a7f7e..6e31191 100644 --- a/libraries/evas/src/modules/loaders/ico/evas_image_load_ico.c +++ b/libraries/evas/src/modules/loaders/ico/evas_image_load_ico.c | |||
@@ -19,32 +19,57 @@ static Evas_Image_Load_Func evas_image_load_ico_func = | |||
19 | EINA_TRUE, | 19 | EINA_TRUE, |
20 | evas_image_load_file_head_ico, | 20 | evas_image_load_file_head_ico, |
21 | evas_image_load_file_data_ico, | 21 | evas_image_load_file_data_ico, |
22 | NULL | 22 | NULL, |
23 | EINA_FALSE | ||
23 | }; | 24 | }; |
24 | 25 | ||
25 | static int | 26 | static Eina_Bool |
26 | read_ushort(FILE *file, unsigned short *ret) | 27 | read_ushort(unsigned char *map, size_t length, size_t *position, unsigned short *ret) |
27 | { | 28 | { |
28 | unsigned char b[2]; | 29 | unsigned char b[2]; |
29 | if (fread(b, sizeof(unsigned char), 2, file) != 2) return 0; | 30 | |
31 | if (*position + 2 > length) return EINA_FALSE; | ||
32 | b[0] = map[(*position)++]; | ||
33 | b[1] = map[(*position)++]; | ||
30 | *ret = (b[1] << 8) | b[0]; | 34 | *ret = (b[1] << 8) | b[0]; |
31 | return 1; | 35 | return EINA_TRUE; |
32 | } | 36 | } |
33 | 37 | ||
34 | static int | 38 | static Eina_Bool |
35 | read_uint(FILE *file, unsigned int *ret) | 39 | read_uint(unsigned char *map, size_t length, size_t *position, unsigned int *ret) |
36 | { | 40 | { |
37 | unsigned char b[4]; | 41 | unsigned char b[4]; |
38 | if (fread(b, sizeof(unsigned char), 4, file) != 4) return 0; | 42 | unsigned int i; |
43 | |||
44 | if (*position + 4 > length) return EINA_FALSE; | ||
45 | for (i = 0; i < 4; i++) | ||
46 | b[i] = map[(*position)++]; | ||
39 | *ret = ARGB_JOIN(b[3], b[2], b[1], b[0]); | 47 | *ret = ARGB_JOIN(b[3], b[2], b[1], b[0]); |
40 | return 1; | 48 | return EINA_TRUE; |
49 | } | ||
50 | |||
51 | static Eina_Bool | ||
52 | read_uchar(unsigned char *map, size_t length, size_t *position, unsigned char *ret) | ||
53 | { | ||
54 | if (*position + 1 > length) return EINA_FALSE; | ||
55 | *ret = map[(*position)++]; | ||
56 | return EINA_TRUE; | ||
57 | } | ||
58 | |||
59 | static Eina_Bool | ||
60 | read_mem(unsigned char *map, size_t length, size_t *position, void *buffer, int size) | ||
61 | { | ||
62 | if (*position + size > length) return EINA_FALSE; | ||
63 | memcpy(buffer, map + *position, size); | ||
64 | *position += size; | ||
65 | return EINA_TRUE; | ||
41 | } | 66 | } |
42 | 67 | ||
43 | enum | 68 | enum |
44 | { | 69 | { |
45 | SMALLEST, | 70 | SMALLEST, |
46 | BIGGEST, | 71 | BIGGEST, |
47 | SMALLER, | 72 | SMALLER, |
48 | BIGGER | 73 | BIGGER |
49 | }; | 74 | }; |
50 | 75 | ||
@@ -57,9 +82,11 @@ enum | |||
57 | static Eina_Bool | 82 | static Eina_Bool |
58 | evas_image_load_file_head_ico(Image_Entry *ie, const char *file, const char *key, int *error) | 83 | evas_image_load_file_head_ico(Image_Entry *ie, const char *file, const char *key, int *error) |
59 | { | 84 | { |
85 | Eina_File *f; | ||
86 | void *map = NULL; | ||
87 | size_t position = 0; | ||
60 | unsigned short word; | 88 | unsigned short word; |
61 | unsigned char byte; | 89 | unsigned char byte; |
62 | FILE *f; | ||
63 | int wanted_w = 0, wanted_h = 0, w, h, cols, i, planes = 0, | 90 | int wanted_w = 0, wanted_h = 0, w, h, cols, i, planes = 0, |
64 | hot_x = 0, hot_y = 0, bpp = 0, pdelta, search = -1, have_choice = 0, | 91 | hot_x = 0, hot_y = 0, bpp = 0, pdelta, search = -1, have_choice = 0, |
65 | hasa = 1; | 92 | hasa = 1; |
@@ -74,7 +101,7 @@ evas_image_load_file_head_ico(Image_Entry *ie, const char *file, const char *key | |||
74 | unsigned int bmoffset, bmsize; | 101 | unsigned int bmoffset, bmsize; |
75 | } chosen = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; | 102 | } chosen = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; |
76 | 103 | ||
77 | f = fopen(file, "rb"); | 104 | f = eina_file_open(file, EINA_FALSE); |
78 | if (!f) | 105 | if (!f) |
79 | { | 106 | { |
80 | *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; | 107 | *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; |
@@ -82,16 +109,17 @@ evas_image_load_file_head_ico(Image_Entry *ie, const char *file, const char *key | |||
82 | } | 109 | } |
83 | 110 | ||
84 | *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT; | 111 | *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT; |
85 | fseek(f, 0, SEEK_END); | 112 | fsize = eina_file_size_get(f); |
86 | fsize = ftell(f); | ||
87 | fseek(f, 0, SEEK_SET); | ||
88 | if (fsize < (6 + 16 + 40)) goto close_file; | 113 | if (fsize < (6 + 16 + 40)) goto close_file; |
89 | 114 | ||
115 | map = eina_file_map_all(f, EINA_FILE_SEQUENTIAL); | ||
116 | if (!map) goto close_file; | ||
117 | |||
90 | // key: | 118 | // key: |
91 | // NULL == highest res | 119 | // NULL == highest res |
92 | // biggest == highest res | 120 | // biggest == highest res |
93 | // smallest == lowest res | 121 | // smallest == lowest res |
94 | // | 122 | // |
95 | // smaller == next size SMALLER than load opts WxH (if possible) | 123 | // smaller == next size SMALLER than load opts WxH (if possible) |
96 | // bigger == next size BIGGER than load opts WxH (if possible) | 124 | // bigger == next size BIGGER than load opts WxH (if possible) |
97 | // more ? | 125 | // more ? |
@@ -103,10 +131,10 @@ evas_image_load_file_head_ico(Image_Entry *ie, const char *file, const char *key | |||
103 | wanted_h = ie->load_opts.h; | 131 | wanted_h = ie->load_opts.h; |
104 | search = SMALLER; | 132 | search = SMALLER; |
105 | } | 133 | } |
106 | 134 | ||
107 | if (!read_ushort(f, &reserved)) goto close_file; | 135 | if (!read_ushort(map, fsize, &position, &reserved)) goto close_file; |
108 | if (!read_ushort(f, &type)) goto close_file; | 136 | if (!read_ushort(map, fsize, &position, &type)) goto close_file; |
109 | if (!read_ushort(f, &count)) goto close_file; | 137 | if (!read_ushort(map, fsize, &position, &count)) goto close_file; |
110 | if (!((reserved == 0) && | 138 | if (!((reserved == 0) && |
111 | ((type == ICON) || (type == CURSOR)) && (count > 0))) | 139 | ((type == ICON) || (type == CURSOR)) && (count > 0))) |
112 | goto close_file; | 140 | goto close_file; |
@@ -141,24 +169,25 @@ evas_image_load_file_head_ico(Image_Entry *ie, const char *file, const char *key | |||
141 | } | 169 | } |
142 | for (i = 0; i < count; i++) | 170 | for (i = 0; i < count; i++) |
143 | { | 171 | { |
144 | if (fread(&byte, 1, 1, f) != 1) goto close_file; | 172 | unsigned char tw = 0, th = 0, tcols = 0; |
145 | w = byte; | 173 | if (!read_uchar(map, fsize, &position, &tw)) goto close_file; |
174 | w = tw; | ||
146 | if (w <= 0) w = 256; | 175 | if (w <= 0) w = 256; |
147 | if (fread(&byte, 1, 1, f) != 1) goto close_file; | 176 | if (!read_uchar(map, fsize, &position, &th)) goto close_file; |
148 | h = byte; | 177 | h = th; |
149 | if (h <= 0) h = 256; | 178 | if (h <= 0) h = 256; |
150 | if (fread(&byte, 1, 1, f) != 1) goto close_file; | 179 | if (!read_uchar(map, fsize, &position, &tcols)) goto close_file; |
151 | cols = byte; | 180 | cols = tcols; |
152 | if (cols <= 0) cols = 256; | 181 | if (cols <= 0) cols = 256; |
153 | if (fread(&byte, 1, 1, f) != 1) goto close_file; | 182 | if (!read_uchar(map, fsize, &position, &byte)) goto close_file; |
154 | if (!read_ushort(f, &word)) goto close_file; | 183 | if (!read_ushort(map, fsize, &position, &word)) goto close_file; |
155 | if (type == CURSOR) planes = word; | 184 | if (type == CURSOR) planes = word; |
156 | else hot_x = word; | 185 | else hot_x = word; |
157 | if (!read_ushort(f, &word)) goto close_file; | 186 | if (!read_ushort(map, fsize, &position, &word)) goto close_file; |
158 | if (type == CURSOR) bpp = word; | 187 | if (type == CURSOR) bpp = word; |
159 | else hot_y = word; | 188 | else hot_y = word; |
160 | if (!read_uint(f, &bmsize)) goto close_file; | 189 | if (!read_uint(map, fsize, &position, &bmsize)) goto close_file; |
161 | if (!read_uint(f, &bmoffset)) goto close_file; | 190 | if (!read_uint(map, fsize, &position, &bmoffset)) goto close_file; |
162 | if ((bmsize <= 0) || (bmoffset <= 0) || (bmoffset >= fsize)) goto close_file; | 191 | if ((bmsize <= 0) || (bmoffset <= 0) || (bmoffset >= fsize)) goto close_file; |
163 | if (search == BIGGEST) | 192 | if (search == BIGGEST) |
164 | { | 193 | { |
@@ -245,7 +274,7 @@ evas_image_load_file_head_ico(Image_Entry *ie, const char *file, const char *key | |||
245 | } | 274 | } |
246 | } | 275 | } |
247 | if (chosen.bmoffset == 0) goto close_file; | 276 | if (chosen.bmoffset == 0) goto close_file; |
248 | if (fseek(f, chosen.bmoffset, SEEK_SET) != 0) goto close_file; | 277 | position = chosen.bmoffset; |
249 | 278 | ||
250 | w = chosen.w; | 279 | w = chosen.w; |
251 | h = chosen.h; | 280 | h = chosen.h; |
@@ -263,23 +292,28 @@ evas_image_load_file_head_ico(Image_Entry *ie, const char *file, const char *key | |||
263 | ie->w = w; | 292 | ie->w = w; |
264 | ie->h = h; | 293 | ie->h = h; |
265 | if (hasa) ie->flags.alpha = 1; | 294 | if (hasa) ie->flags.alpha = 1; |
266 | 295 | ||
267 | fclose(f); | 296 | eina_file_map_free(f, map); |
297 | eina_file_close(f); | ||
298 | |||
268 | *error = EVAS_LOAD_ERROR_NONE; | 299 | *error = EVAS_LOAD_ERROR_NONE; |
269 | return EINA_TRUE; | 300 | return EINA_TRUE; |
270 | 301 | ||
271 | close_file: | 302 | close_file: |
272 | fclose(f); | 303 | if (map) eina_file_map_free(f, map); |
304 | eina_file_close(f); | ||
273 | return EINA_FALSE; | 305 | return EINA_FALSE; |
274 | } | 306 | } |
275 | 307 | ||
276 | static Eina_Bool | 308 | static Eina_Bool |
277 | evas_image_load_file_data_ico(Image_Entry *ie, const char *file, const char *key, int *error) | 309 | evas_image_load_file_data_ico(Image_Entry *ie, const char *file, const char *key, int *error) |
278 | { | 310 | { |
311 | Eina_File *f; | ||
312 | void *map = NULL; | ||
313 | size_t position = 0; | ||
279 | unsigned short word; | 314 | unsigned short word; |
280 | unsigned char byte; | 315 | unsigned char byte; |
281 | unsigned int dword; | 316 | unsigned int dword; |
282 | FILE *f; | ||
283 | int wanted_w = 0, wanted_h = 0, w, h, cols, i, planes = 0, | 317 | int wanted_w = 0, wanted_h = 0, w, h, cols, i, planes = 0, |
284 | hot_x = 0, hot_y = 0, bpp = 0, pdelta, search = -1, have_choice = 0, | 318 | hot_x = 0, hot_y = 0, bpp = 0, pdelta, search = -1, have_choice = 0, |
285 | stride, pstride, j, right_way_up = 0, diff_size = 0, cols2; | 319 | stride, pstride, j, right_way_up = 0, diff_size = 0, cols2; |
@@ -296,7 +330,7 @@ evas_image_load_file_data_ico(Image_Entry *ie, const char *file, const char *key | |||
296 | unsigned int bmoffset, bmsize; | 330 | unsigned int bmoffset, bmsize; |
297 | } chosen = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; | 331 | } chosen = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; |
298 | 332 | ||
299 | f = fopen(file, "rb"); | 333 | f = eina_file_open(file, EINA_FALSE); |
300 | if (!f) | 334 | if (!f) |
301 | { | 335 | { |
302 | *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; | 336 | *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; |
@@ -304,11 +338,12 @@ evas_image_load_file_data_ico(Image_Entry *ie, const char *file, const char *key | |||
304 | } | 338 | } |
305 | 339 | ||
306 | *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT; | 340 | *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT; |
307 | fseek(f, 0, SEEK_END); | 341 | fsize = eina_file_size_get(f); |
308 | fsize = ftell(f); | ||
309 | fseek(f, 0, SEEK_SET); | ||
310 | if (fsize < (6 + 16 + 40)) goto close_file; | 342 | if (fsize < (6 + 16 + 40)) goto close_file; |
311 | 343 | ||
344 | map = eina_file_map_all(f, EINA_FILE_SEQUENTIAL); | ||
345 | if (!map) goto close_file; | ||
346 | |||
312 | // key: | 347 | // key: |
313 | // NULL == highest res | 348 | // NULL == highest res |
314 | // biggest == highest res | 349 | // biggest == highest res |
@@ -325,11 +360,11 @@ evas_image_load_file_data_ico(Image_Entry *ie, const char *file, const char *key | |||
325 | wanted_h = ie->load_opts.h; | 360 | wanted_h = ie->load_opts.h; |
326 | search = SMALLER; | 361 | search = SMALLER; |
327 | } | 362 | } |
328 | 363 | ||
329 | if (!read_ushort(f, &reserved)) goto close_file; | 364 | if (!read_ushort(map, fsize, &position, &reserved)) goto close_file; |
330 | if (!read_ushort(f, &type)) goto close_file; | 365 | if (!read_ushort(map, fsize, &position, &type)) goto close_file; |
331 | if (!read_ushort(f, &count)) goto close_file; | 366 | if (!read_ushort(map, fsize, &position, &count)) goto close_file; |
332 | if (!((reserved == 0) && | 367 | if (!((reserved == 0) && |
333 | ((type == ICON) || (type == CURSOR)) && (count > 0))) | 368 | ((type == ICON) || (type == CURSOR)) && (count > 0))) |
334 | goto close_file; | 369 | goto close_file; |
335 | *error = EVAS_LOAD_ERROR_CORRUPT_FILE; | 370 | *error = EVAS_LOAD_ERROR_CORRUPT_FILE; |
@@ -363,24 +398,25 @@ evas_image_load_file_data_ico(Image_Entry *ie, const char *file, const char *key | |||
363 | } | 398 | } |
364 | for (i = 0; i < count; i++) | 399 | for (i = 0; i < count; i++) |
365 | { | 400 | { |
366 | if (fread(&byte, 1, 1, f) != 1) goto close_file; | 401 | unsigned char tw = 0, th = 0, tcols = 0; |
367 | w = byte; | 402 | if (!read_uchar(map, fsize, &position, &tw)) goto close_file; |
403 | w = tw; | ||
368 | if (w <= 0) w = 256; | 404 | if (w <= 0) w = 256; |
369 | if (fread(&byte, 1, 1, f) != 1) goto close_file; | 405 | if (!read_uchar(map, fsize, &position, &th)) goto close_file; |
370 | h = byte; | 406 | h = th; |
371 | if (h <= 0) h = 256; | 407 | if (h <= 0) h = 256; |
372 | if (fread(&byte, 1, 1, f) != 1) goto close_file; | 408 | if (!read_uchar(map, fsize, &position, &tcols)) goto close_file; |
373 | cols = byte; | 409 | cols = tcols; |
374 | if (cols <= 0) cols = 256; | 410 | if (cols <= 0) cols = 256; |
375 | if (fread(&byte, 1, 1, f) != 1) goto close_file; | 411 | if (!read_uchar(map, fsize, &position, &byte)) goto close_file; |
376 | if (!read_ushort(f, &word)) goto close_file; | 412 | if (!read_ushort(map, fsize, &position, &word)) goto close_file; |
377 | if (type == 1) planes = word; | 413 | if (type == 1) planes = word; |
378 | else hot_x = word; | 414 | else hot_x = word; |
379 | if (!read_ushort(f, &word)) goto close_file; | 415 | if (!read_ushort(map, fsize, &position, &word)) goto close_file; |
380 | if (type == 1) bpp = word; | 416 | if (type == 1) bpp = word; |
381 | else hot_y = word; | 417 | else hot_y = word; |
382 | if (!read_uint(f, &bmsize)) goto close_file; | 418 | if (!read_uint(map, fsize, &position, &bmsize)) goto close_file; |
383 | if (!read_uint(f, &bmoffset)) goto close_file; | 419 | if (!read_uint(map, fsize, &position, &bmoffset)) goto close_file; |
384 | if ((bmsize <= 0) || (bmoffset <= 0) || (bmoffset >= fsize)) goto close_file; | 420 | if ((bmsize <= 0) || (bmoffset <= 0) || (bmoffset >= fsize)) goto close_file; |
385 | if (search == BIGGEST) | 421 | if (search == BIGGEST) |
386 | { | 422 | { |
@@ -467,7 +503,7 @@ evas_image_load_file_data_ico(Image_Entry *ie, const char *file, const char *key | |||
467 | } | 503 | } |
468 | } | 504 | } |
469 | if (chosen.bmoffset == 0) goto close_file; | 505 | if (chosen.bmoffset == 0) goto close_file; |
470 | if (fseek(f, chosen.bmoffset, SEEK_SET) != 0) goto close_file; | 506 | position = chosen.bmoffset; |
471 | 507 | ||
472 | w = chosen.w; | 508 | w = chosen.w; |
473 | h = chosen.h; | 509 | h = chosen.h; |
@@ -477,8 +513,8 @@ evas_image_load_file_data_ico(Image_Entry *ie, const char *file, const char *key | |||
477 | if (((int)ie->w != w) || ((int)ie->h != h)) goto close_file; | 513 | if (((int)ie->w != w) || ((int)ie->h != h)) goto close_file; |
478 | 514 | ||
479 | // read bmp header time... let's do some checking | 515 | // read bmp header time... let's do some checking |
480 | if (!read_uint(f, &dword)) goto close_file; // headersize - dont care | 516 | if (!read_uint(map, fsize, &position, &dword)) goto close_file; // headersize - dont care |
481 | if (!read_uint(f, &dword)) goto close_file; // width | 517 | if (!read_uint(map, fsize, &position, &dword)) goto close_file; // width |
482 | if (dword > 0) | 518 | if (dword > 0) |
483 | { | 519 | { |
484 | if ((int)dword != w) | 520 | if ((int)dword != w) |
@@ -487,7 +523,7 @@ evas_image_load_file_data_ico(Image_Entry *ie, const char *file, const char *key | |||
487 | diff_size = 1; | 523 | diff_size = 1; |
488 | } | 524 | } |
489 | } | 525 | } |
490 | if (!read_uint(f, &dword)) goto close_file; // height | 526 | if (!read_uint(map, fsize, &position, &dword)) goto close_file; // height |
491 | if (dword > 0) | 527 | if (dword > 0) |
492 | { | 528 | { |
493 | if ((int)dword != (h * 2)) | 529 | if ((int)dword != (h * 2)) |
@@ -503,19 +539,19 @@ evas_image_load_file_data_ico(Image_Entry *ie, const char *file, const char *key | |||
503 | " May be expanded or cropped.", | 539 | " May be expanded or cropped.", |
504 | file, ie->w, ie->h, w, h); | 540 | file, ie->w, ie->h, w, h); |
505 | } | 541 | } |
506 | if (!read_ushort(f, &word)) goto close_file; // planes | 542 | if (!read_ushort(map, fsize, &position, &word)) goto close_file; // planes |
507 | planes2 = word; | 543 | planes2 = word; |
508 | if (!read_ushort(f, &word)) goto close_file; // bitcount | 544 | if (!read_ushort(map, fsize, &position, &word)) goto close_file; // bitcount |
509 | bitcount = word; | 545 | bitcount = word; |
510 | if (!read_uint(f, &dword)) goto close_file; // compression | 546 | if (!read_uint(map, fsize, &position, &dword)) goto close_file; // compression |
511 | compression = dword; | 547 | compression = dword; |
512 | if (!read_uint(f, &dword)) goto close_file; // imagesize | 548 | if (!read_uint(map, fsize, &position, &dword)) goto close_file; // imagesize |
513 | imagesize = dword; | 549 | imagesize = dword; |
514 | if (!read_uint(f, &dword)) goto close_file; // z pixels per m | 550 | if (!read_uint(map, fsize, &position, &dword)) goto close_file; // z pixels per m |
515 | if (!read_uint(f, &dword)) goto close_file; // y pizels per m | 551 | if (!read_uint(map, fsize, &position, &dword)) goto close_file; // y pizels per m |
516 | if (!read_uint(f, &dword)) goto close_file; // colors used | 552 | if (!read_uint(map, fsize, &position, &dword)) goto close_file; // colors used |
517 | colorsused = dword; | 553 | colorsused = dword; |
518 | if (!read_uint(f, &dword)) goto close_file; // colors important | 554 | if (!read_uint(map, fsize, &position, &dword)) goto close_file; // colors important |
519 | colorsimportant = dword; | 555 | colorsimportant = dword; |
520 | 556 | ||
521 | evas_cache_image_surface_alloc(ie, ie->w, ie->h); | 557 | evas_cache_image_surface_alloc(ie, ie->w, ie->h); |
@@ -545,11 +581,11 @@ evas_image_load_file_data_ico(Image_Entry *ie, const char *file, const char *key | |||
545 | for (i = 0; i < cols; i++) | 581 | for (i = 0; i < cols; i++) |
546 | { | 582 | { |
547 | unsigned char a, r, g, b; | 583 | unsigned char a, r, g, b; |
548 | 584 | ||
549 | if (fread(&b, 1, 1, f) != 1) goto close_file; | 585 | if (!read_uchar(map, fsize, &position, &b)) goto close_file; |
550 | if (fread(&g, 1, 1, f) != 1) goto close_file; | 586 | if (!read_uchar(map, fsize, &position, &g)) goto close_file; |
551 | if (fread(&r, 1, 1, f) != 1) goto close_file; | 587 | if (!read_uchar(map, fsize, &position, &r)) goto close_file; |
552 | if (fread(&a, 1, 1, f) != 1) goto close_file; | 588 | if (!read_uchar(map, fsize, &position, &a)) goto close_file; |
553 | a = 0xff; | 589 | a = 0xff; |
554 | pal[i] = ARGB_JOIN(a, r, g, b); | 590 | pal[i] = ARGB_JOIN(a, r, g, b); |
555 | } | 591 | } |
@@ -563,7 +599,7 @@ evas_image_load_file_data_ico(Image_Entry *ie, const char *file, const char *key | |||
563 | { | 599 | { |
564 | pix = surface + (i * ie->w); | 600 | pix = surface + (i * ie->w); |
565 | if (!right_way_up) pix = surface + ((ie->h - 1 - i) * ie->w); | 601 | if (!right_way_up) pix = surface + ((ie->h - 1 - i) * ie->w); |
566 | if (fread(pixbuf, pstride, 1, f) != 1) goto close_file; | 602 | if (!read_mem(map, fsize, &position, pixbuf, pstride)) goto close_file; |
567 | p = pixbuf; | 603 | p = pixbuf; |
568 | if (i >= (int)ie->h) continue; | 604 | if (i >= (int)ie->h) continue; |
569 | for (j = 0; j < w; j++) | 605 | for (j = 0; j < w; j++) |
@@ -613,7 +649,7 @@ evas_image_load_file_data_ico(Image_Entry *ie, const char *file, const char *key | |||
613 | { | 649 | { |
614 | pix = surface + (i * ie->w); | 650 | pix = surface + (i * ie->w); |
615 | if (!right_way_up) pix = surface + ((ie->h - 1 - i) * ie->w); | 651 | if (!right_way_up) pix = surface + ((ie->h - 1 - i) * ie->w); |
616 | if (fread(pixbuf, pstride, 1, f) != 1) goto close_file; | 652 | if (!read_mem(map, fsize, &position, pixbuf, pstride)) goto close_file; |
617 | p = pixbuf; | 653 | p = pixbuf; |
618 | if (i >= (int)ie->h) continue; | 654 | if (i >= (int)ie->h) continue; |
619 | for (j = 0; j < w; j++) | 655 | for (j = 0; j < w; j++) |
@@ -639,7 +675,7 @@ evas_image_load_file_data_ico(Image_Entry *ie, const char *file, const char *key | |||
639 | { | 675 | { |
640 | pix = surface + (i * ie->w); | 676 | pix = surface + (i * ie->w); |
641 | if (!right_way_up) pix = surface + ((ie->h - 1 - i) * ie->w); | 677 | if (!right_way_up) pix = surface + ((ie->h - 1 - i) * ie->w); |
642 | if (fread(pixbuf, pstride, 1, f) != 1) goto close_file; | 678 | if (!read_mem(map, fsize, &position, pixbuf, pstride)) goto close_file; |
643 | p = pixbuf; | 679 | p = pixbuf; |
644 | if (i >= (int)ie->h) continue; | 680 | if (i >= (int)ie->h) continue; |
645 | for (j = 0; j < w; j++) | 681 | for (j = 0; j < w; j++) |
@@ -658,13 +694,13 @@ evas_image_load_file_data_ico(Image_Entry *ie, const char *file, const char *key | |||
658 | { | 694 | { |
659 | pix = surface + (i * ie->w); | 695 | pix = surface + (i * ie->w); |
660 | if (!right_way_up) pix = surface + ((ie->h - 1 - i) * ie->w); | 696 | if (!right_way_up) pix = surface + ((ie->h - 1 - i) * ie->w); |
661 | if (fread(pixbuf, pstride, 1, f) != 1) goto close_file; | 697 | if (!read_mem(map, fsize, &position, pixbuf, pstride)) goto close_file; |
662 | p = pixbuf; | 698 | p = pixbuf; |
663 | if (i >= (int)ie->h) continue; | 699 | if (i >= (int)ie->h) continue; |
664 | for (j = 0; j < w; j++) | 700 | for (j = 0; j < w; j++) |
665 | { | 701 | { |
666 | unsigned char a, r, g, b; | 702 | unsigned char a, r, g, b; |
667 | 703 | ||
668 | if (j >= (int)ie->w) break; | 704 | if (j >= (int)ie->w) break; |
669 | b = p[0]; | 705 | b = p[0]; |
670 | g = p[1]; | 706 | g = p[1]; |
@@ -683,13 +719,13 @@ evas_image_load_file_data_ico(Image_Entry *ie, const char *file, const char *key | |||
683 | { | 719 | { |
684 | pix = surface + (i * ie->w); | 720 | pix = surface + (i * ie->w); |
685 | if (!right_way_up) pix = surface + ((ie->h - 1 - i) * ie->w); | 721 | if (!right_way_up) pix = surface + ((ie->h - 1 - i) * ie->w); |
686 | if (fread(pixbuf, pstride, 1, f) != 1) goto close_file; | 722 | if (!read_mem(map, fsize, &position, pixbuf, pstride)) goto close_file; |
687 | p = pixbuf; | 723 | p = pixbuf; |
688 | if (i >= (int)ie->h) continue; | 724 | if (i >= (int)ie->h) continue; |
689 | for (j = 0; j < w; j++) | 725 | for (j = 0; j < w; j++) |
690 | { | 726 | { |
691 | unsigned char a, r, g, b; | 727 | unsigned char a, r, g, b; |
692 | 728 | ||
693 | if (j >= (int)ie->w) break; | 729 | if (j >= (int)ie->w) break; |
694 | b = p[0]; | 730 | b = p[0]; |
695 | g = p[1]; | 731 | g = p[1]; |
@@ -704,13 +740,13 @@ evas_image_load_file_data_ico(Image_Entry *ie, const char *file, const char *key | |||
704 | } | 740 | } |
705 | if (!none_zero_alpha) | 741 | if (!none_zero_alpha) |
706 | { | 742 | { |
707 | if (fread(maskbuf, stride * 4 * h, 1, f) != 1) goto close_file; | 743 | if (!read_mem(map, fsize, &position, maskbuf, stride * 4 * h)) goto close_file; |
708 | // apply mask | 744 | // apply mask |
709 | pix = surface; | 745 | pix = surface; |
710 | for (i = 0; i < h; i++) | 746 | for (i = 0; i < h; i++) |
711 | { | 747 | { |
712 | unsigned char *m; | 748 | unsigned char *m; |
713 | 749 | ||
714 | pix = surface + (i * ie->w); | 750 | pix = surface + (i * ie->w); |
715 | if (!right_way_up) pix = surface + ((ie->h - 1 - i) * ie->w); | 751 | if (!right_way_up) pix = surface + ((ie->h - 1 - i) * ie->w); |
716 | m = maskbuf + (stride * i * 4); | 752 | m = maskbuf + (stride * i * 4); |
@@ -727,15 +763,17 @@ evas_image_load_file_data_ico(Image_Entry *ie, const char *file, const char *key | |||
727 | } | 763 | } |
728 | } | 764 | } |
729 | } | 765 | } |
730 | 766 | ||
731 | fclose(f); | 767 | eina_file_map_free(f, map); |
732 | 768 | eina_file_close(f); | |
769 | |||
733 | evas_common_image_premul(ie); | 770 | evas_common_image_premul(ie); |
734 | *error = EVAS_LOAD_ERROR_NONE; | 771 | *error = EVAS_LOAD_ERROR_NONE; |
735 | return EINA_TRUE; | 772 | return EINA_TRUE; |
736 | 773 | ||
737 | close_file: | 774 | close_file: |
738 | fclose(f); | 775 | if (map) eina_file_map_free(f, map); |
776 | eina_file_close(f); | ||
739 | return EINA_FALSE; | 777 | return EINA_FALSE; |
740 | } | 778 | } |
741 | 779 | ||
diff --git a/libraries/evas/src/modules/loaders/jpeg/Makefile.in b/libraries/evas/src/modules/loaders/jpeg/Makefile.in index ce4b194..7c0ca18 100644 --- a/libraries/evas/src/modules/loaders/jpeg/Makefile.in +++ b/libraries/evas/src/modules/loaders/jpeg/Makefile.in | |||
@@ -231,8 +231,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
232 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 232 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
233 | PKG_CONFIG = @PKG_CONFIG@ | 233 | PKG_CONFIG = @PKG_CONFIG@ |
234 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
235 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
236 | PNG_CFLAGS = @PNG_CFLAGS@ | 234 | PNG_CFLAGS = @PNG_CFLAGS@ |
237 | PNG_LIBS = @PNG_LIBS@ | 235 | PNG_LIBS = @PNG_LIBS@ |
238 | RANLIB = @RANLIB@ | 236 | RANLIB = @RANLIB@ |
@@ -249,6 +247,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
249 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 247 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
250 | VERSION = @VERSION@ | 248 | VERSION = @VERSION@ |
251 | VMAJ = @VMAJ@ | 249 | VMAJ = @VMAJ@ |
250 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
251 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
252 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 252 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
254 | XCB_CFLAGS = @XCB_CFLAGS@ | 254 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -330,6 +330,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
333 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
334 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
335 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
336 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
333 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 337 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
334 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 338 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
335 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 339 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/loaders/jpeg/evas_image_load_jpeg.c b/libraries/evas/src/modules/loaders/jpeg/evas_image_load_jpeg.c index 0dbabab..797c76d 100644 --- a/libraries/evas/src/modules/loaders/jpeg/evas_image_load_jpeg.c +++ b/libraries/evas/src/modules/loaders/jpeg/evas_image_load_jpeg.c | |||
@@ -46,7 +46,8 @@ static Evas_Image_Load_Func evas_image_load_jpeg_func = | |||
46 | EINA_TRUE, | 46 | EINA_TRUE, |
47 | evas_image_load_file_head_jpeg, | 47 | evas_image_load_file_head_jpeg, |
48 | evas_image_load_file_data_jpeg, | 48 | evas_image_load_file_data_jpeg, |
49 | NULL | 49 | NULL, |
50 | EINA_TRUE | ||
50 | }; | 51 | }; |
51 | 52 | ||
52 | 53 | ||
diff --git a/libraries/evas/src/modules/loaders/pmaps/Makefile.in b/libraries/evas/src/modules/loaders/pmaps/Makefile.in index de7b779..745e79b 100644 --- a/libraries/evas/src/modules/loaders/pmaps/Makefile.in +++ b/libraries/evas/src/modules/loaders/pmaps/Makefile.in | |||
@@ -231,8 +231,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
232 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 232 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
233 | PKG_CONFIG = @PKG_CONFIG@ | 233 | PKG_CONFIG = @PKG_CONFIG@ |
234 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
235 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
236 | PNG_CFLAGS = @PNG_CFLAGS@ | 234 | PNG_CFLAGS = @PNG_CFLAGS@ |
237 | PNG_LIBS = @PNG_LIBS@ | 235 | PNG_LIBS = @PNG_LIBS@ |
238 | RANLIB = @RANLIB@ | 236 | RANLIB = @RANLIB@ |
@@ -249,6 +247,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
249 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 247 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
250 | VERSION = @VERSION@ | 248 | VERSION = @VERSION@ |
251 | VMAJ = @VMAJ@ | 249 | VMAJ = @VMAJ@ |
250 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
251 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
252 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 252 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
254 | XCB_CFLAGS = @XCB_CFLAGS@ | 254 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -330,6 +330,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
333 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
334 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
335 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
336 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
333 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 337 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
334 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 338 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
335 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 339 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/loaders/pmaps/evas_image_load_pmaps.c b/libraries/evas/src/modules/loaders/pmaps/evas_image_load_pmaps.c index 9ba8f81..393e407 100644 --- a/libraries/evas/src/modules/loaders/pmaps/evas_image_load_pmaps.c +++ b/libraries/evas/src/modules/loaders/pmaps/evas_image_load_pmaps.c | |||
@@ -19,7 +19,8 @@ Evas_Image_Load_Func evas_image_load_pmaps_func = { | |||
19 | EINA_TRUE, | 19 | EINA_TRUE, |
20 | evas_image_load_file_head_pmaps, | 20 | evas_image_load_file_head_pmaps, |
21 | evas_image_load_file_data_pmaps, | 21 | evas_image_load_file_data_pmaps, |
22 | NULL | 22 | NULL, |
23 | EINA_FALSE | ||
23 | }; | 24 | }; |
24 | 25 | ||
25 | /* The buffer to load pmaps images */ | 26 | /* The buffer to load pmaps images */ |
@@ -27,7 +28,9 @@ typedef struct Pmaps_Buffer Pmaps_Buffer; | |||
27 | 28 | ||
28 | struct Pmaps_Buffer | 29 | struct Pmaps_Buffer |
29 | { | 30 | { |
30 | FILE *file; | 31 | Eina_File *file; |
32 | void *map; | ||
33 | size_t position; | ||
31 | 34 | ||
32 | /* the buffer */ | 35 | /* the buffer */ |
33 | DATA8 buffer[FILE_BUFFER_SIZE]; | 36 | DATA8 buffer[FILE_BUFFER_SIZE]; |
@@ -160,13 +163,23 @@ pmaps_buffer_open(Pmaps_Buffer *b, const char *filename, int *error) | |||
160 | { | 163 | { |
161 | size_t len; | 164 | size_t len; |
162 | 165 | ||
163 | b->file = fopen(filename, "rb"); | 166 | b->file = eina_file_open(filename, EINA_FALSE); |
164 | if (!b->file) | 167 | if (!b->file) |
165 | { | 168 | { |
166 | *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; | 169 | *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; |
167 | return EINA_FALSE; | 170 | return EINA_FALSE; |
168 | } | 171 | } |
169 | 172 | ||
173 | b->map = eina_file_map_all(b->file, EINA_FILE_SEQUENTIAL); | ||
174 | if (!b->map) | ||
175 | { | ||
176 | *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; | ||
177 | eina_file_close(b->file); | ||
178 | b->file = NULL; | ||
179 | return EINA_FALSE; | ||
180 | } | ||
181 | |||
182 | b->position = 0; | ||
170 | *b->buffer = 0; | 183 | *b->buffer = 0; |
171 | *b->unread = 0; | 184 | *b->unread = 0; |
172 | b->last_buffer = 0; | 185 | b->last_buffer = 0; |
@@ -177,7 +190,9 @@ pmaps_buffer_open(Pmaps_Buffer *b, const char *filename, int *error) | |||
177 | if (len < 3) | 190 | if (len < 3) |
178 | { | 191 | { |
179 | *error = EVAS_LOAD_ERROR_CORRUPT_FILE; | 192 | *error = EVAS_LOAD_ERROR_CORRUPT_FILE; |
180 | fclose(b->file); | 193 | eina_file_map_free(b->file, b->map); |
194 | eina_file_close(b->file); | ||
195 | b->map = NULL; | ||
181 | b->file = NULL; | 196 | b->file = NULL; |
182 | return EINA_FALSE; | 197 | return EINA_FALSE; |
183 | } | 198 | } |
@@ -197,7 +212,12 @@ static void | |||
197 | pmaps_buffer_close(Pmaps_Buffer *b) | 212 | pmaps_buffer_close(Pmaps_Buffer *b) |
198 | { | 213 | { |
199 | if (b->file) | 214 | if (b->file) |
200 | fclose(b->file); | 215 | { |
216 | if (b->map) eina_file_map_free(b->file, b->map); | ||
217 | b->map = NULL; | ||
218 | eina_file_close(b->file); | ||
219 | b->file = NULL; | ||
220 | } | ||
201 | } | 221 | } |
202 | 222 | ||
203 | static Eina_Bool | 223 | static Eina_Bool |
@@ -295,6 +315,7 @@ static size_t | |||
295 | pmaps_buffer_plain_update(Pmaps_Buffer *b) | 315 | pmaps_buffer_plain_update(Pmaps_Buffer *b) |
296 | { | 316 | { |
297 | size_t r; | 317 | size_t r; |
318 | size_t max; | ||
298 | 319 | ||
299 | /* if we already are in the last buffer we can not update it */ | 320 | /* if we already are in the last buffer we can not update it */ |
300 | if (b->last_buffer) | 321 | if (b->last_buffer) |
@@ -304,9 +325,14 @@ pmaps_buffer_plain_update(Pmaps_Buffer *b) | |||
304 | * stuff */ | 325 | * stuff */ |
305 | if (b->unread_len) | 326 | if (b->unread_len) |
306 | memcpy(b->buffer, b->unread, b->unread_len); | 327 | memcpy(b->buffer, b->unread, b->unread_len); |
307 | 328 | ||
308 | r = fread(&b->buffer[b->unread_len], 1, | 329 | max = FILE_BUFFER_SIZE - b->unread_len - 1; |
309 | FILE_BUFFER_SIZE - b->unread_len - 1, b->file) + b->unread_len; | 330 | if (b->position + max > eina_file_size_get(b->file)) |
331 | max = eina_file_size_get(b->file) - b->position; | ||
332 | |||
333 | memcpy(&b->buffer[b->unread_len], b->map + b->position, max); | ||
334 | b->position += max; | ||
335 | r = max + b->unread_len; | ||
310 | 336 | ||
311 | /* we haven't read anything nor have we bytes in the unread buffer */ | 337 | /* we haven't read anything nor have we bytes in the unread buffer */ |
312 | if (r == 0) | 338 | if (r == 0) |
@@ -324,7 +350,7 @@ pmaps_buffer_plain_update(Pmaps_Buffer *b) | |||
324 | } | 350 | } |
325 | 351 | ||
326 | b->buffer[r] = 0; | 352 | b->buffer[r] = 0; |
327 | 353 | ||
328 | b->unread[0] = '\0'; | 354 | b->unread[0] = '\0'; |
329 | b->unread_len = 0; | 355 | b->unread_len = 0; |
330 | 356 | ||
@@ -339,6 +365,7 @@ static size_t | |||
339 | pmaps_buffer_raw_update(Pmaps_Buffer *b) | 365 | pmaps_buffer_raw_update(Pmaps_Buffer *b) |
340 | { | 366 | { |
341 | size_t r; | 367 | size_t r; |
368 | size_t max; | ||
342 | 369 | ||
343 | if (b->last_buffer) | 370 | if (b->last_buffer) |
344 | return 0; | 371 | return 0; |
@@ -346,8 +373,13 @@ pmaps_buffer_raw_update(Pmaps_Buffer *b) | |||
346 | if (b->unread_len) | 373 | if (b->unread_len) |
347 | memcpy(b->buffer, b->unread, b->unread_len); | 374 | memcpy(b->buffer, b->unread, b->unread_len); |
348 | 375 | ||
349 | r = fread(&b->buffer[b->unread_len], 1, FILE_BUFFER_SIZE - b->unread_len, | 376 | max = FILE_BUFFER_SIZE - b->unread_len; |
350 | b->file) + b->unread_len; | 377 | if (b->position + max > eina_file_size_get(b->file)) |
378 | max = eina_file_size_get(b->file) - b->position; | ||
379 | |||
380 | memcpy(&b->buffer[b->unread_len], b->map + b->position, max); | ||
381 | b->position += max; | ||
382 | r = max + b->unread_len; | ||
351 | 383 | ||
352 | if (r < FILE_BUFFER_SIZE) | 384 | if (r < FILE_BUFFER_SIZE) |
353 | { | 385 | { |
diff --git a/libraries/evas/src/modules/loaders/png/Makefile.in b/libraries/evas/src/modules/loaders/png/Makefile.in index 0717299..3bd4919 100644 --- a/libraries/evas/src/modules/loaders/png/Makefile.in +++ b/libraries/evas/src/modules/loaders/png/Makefile.in | |||
@@ -231,8 +231,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
232 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 232 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
233 | PKG_CONFIG = @PKG_CONFIG@ | 233 | PKG_CONFIG = @PKG_CONFIG@ |
234 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
235 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
236 | PNG_CFLAGS = @PNG_CFLAGS@ | 234 | PNG_CFLAGS = @PNG_CFLAGS@ |
237 | PNG_LIBS = @PNG_LIBS@ | 235 | PNG_LIBS = @PNG_LIBS@ |
238 | RANLIB = @RANLIB@ | 236 | RANLIB = @RANLIB@ |
@@ -249,6 +247,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
249 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 247 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
250 | VERSION = @VERSION@ | 248 | VERSION = @VERSION@ |
251 | VMAJ = @VMAJ@ | 249 | VMAJ = @VMAJ@ |
250 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
251 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
252 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 252 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
254 | XCB_CFLAGS = @XCB_CFLAGS@ | 254 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -330,6 +330,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
333 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
334 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
335 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
336 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
333 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 337 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
334 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 338 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
335 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 339 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/loaders/png/evas_image_load_png.c b/libraries/evas/src/modules/loaders/png/evas_image_load_png.c index a1480ae..3007a57 100644 --- a/libraries/evas/src/modules/loaders/png/evas_image_load_png.c +++ b/libraries/evas/src/modules/loaders/png/evas_image_load_png.c | |||
@@ -35,7 +35,8 @@ static Evas_Image_Load_Func evas_image_load_png_func = | |||
35 | EINA_TRUE, | 35 | EINA_TRUE, |
36 | evas_image_load_file_head_png, | 36 | evas_image_load_file_head_png, |
37 | evas_image_load_file_data_png, | 37 | evas_image_load_file_data_png, |
38 | NULL | 38 | NULL, |
39 | EINA_FALSE | ||
39 | }; | 40 | }; |
40 | 41 | ||
41 | static Eina_Bool | 42 | static Eina_Bool |
diff --git a/libraries/evas/src/modules/loaders/psd/Makefile.in b/libraries/evas/src/modules/loaders/psd/Makefile.in index 98d340a..3dc9c38 100644 --- a/libraries/evas/src/modules/loaders/psd/Makefile.in +++ b/libraries/evas/src/modules/loaders/psd/Makefile.in | |||
@@ -231,8 +231,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
232 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 232 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
233 | PKG_CONFIG = @PKG_CONFIG@ | 233 | PKG_CONFIG = @PKG_CONFIG@ |
234 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
235 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
236 | PNG_CFLAGS = @PNG_CFLAGS@ | 234 | PNG_CFLAGS = @PNG_CFLAGS@ |
237 | PNG_LIBS = @PNG_LIBS@ | 235 | PNG_LIBS = @PNG_LIBS@ |
238 | RANLIB = @RANLIB@ | 236 | RANLIB = @RANLIB@ |
@@ -249,6 +247,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
249 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 247 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
250 | VERSION = @VERSION@ | 248 | VERSION = @VERSION@ |
251 | VMAJ = @VMAJ@ | 249 | VMAJ = @VMAJ@ |
250 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
251 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
252 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 252 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
254 | XCB_CFLAGS = @XCB_CFLAGS@ | 254 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -330,6 +330,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
333 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
334 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
335 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
336 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
333 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 337 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
334 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 338 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
335 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 339 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/loaders/psd/evas_image_load_psd.c b/libraries/evas/src/modules/loaders/psd/evas_image_load_psd.c index 5a85e17..27f5f24 100644 --- a/libraries/evas/src/modules/loaders/psd/evas_image_load_psd.c +++ b/libraries/evas/src/modules/loaders/psd/evas_image_load_psd.c | |||
@@ -61,48 +61,57 @@ enum { | |||
61 | }; | 61 | }; |
62 | 62 | ||
63 | static Eina_Bool get_compressed_channels_length(PSD_Header *Head, | 63 | static Eina_Bool get_compressed_channels_length(PSD_Header *Head, |
64 | FILE *file, | 64 | const unsigned char *map, size_t length, size_t *position, |
65 | unsigned short *rle_table, | 65 | unsigned short *rle_table, |
66 | unsigned int *chanlen); | 66 | unsigned int *chanlen); |
67 | 67 | ||
68 | static int | 68 | static int |
69 | read_ushort(FILE *file, unsigned short *ret) | 69 | read_ushort(const unsigned char *map, size_t length, size_t *position, unsigned short *ret) |
70 | { | 70 | { |
71 | unsigned char b[2]; | 71 | if (*position + 2 > length) return 0; |
72 | if (fread(b, sizeof(unsigned char), 2, file) != 2) return 0; | ||
73 | // FIXME: need to check order | 72 | // FIXME: need to check order |
74 | *ret = (b[0] << 8) | b[1]; | 73 | *ret = (map[(*position) + 0] << 8) | map[(*position) + 1]; |
74 | *position += 2; | ||
75 | return 1; | 75 | return 1; |
76 | } | 76 | } |
77 | 77 | ||
78 | static int | 78 | static int |
79 | read_uint(FILE *file, unsigned int *ret) | 79 | read_uint(const unsigned char *map, size_t length, size_t *position, unsigned int *ret) |
80 | { | 80 | { |
81 | unsigned char b[4]; | 81 | if (*position + 4 > length) return 0; |
82 | if (fread(b, sizeof(unsigned char), 4, file) != 4) return 0; | ||
83 | // FIXME: need to check order | 82 | // FIXME: need to check order |
84 | *ret = ARGB_JOIN(b[0], b[1], b[2], b[3]); | 83 | *ret = ARGB_JOIN(map[(*position) + 0], map[(*position) + 1], map[(*position) + 2], map[(*position) + 3]); |
84 | *position += 4; | ||
85 | return 1; | ||
86 | } | ||
87 | |||
88 | static int | ||
89 | read_block(const unsigned char *map, size_t length, size_t *position, void *target, size_t size) | ||
90 | { | ||
91 | if (*position + size > length) return 0; | ||
92 | memcpy(target, map + *position, size); | ||
93 | *position += size; | ||
85 | return 1; | 94 | return 1; |
86 | } | 95 | } |
87 | 96 | ||
88 | // Internal function used to get the Psd header from the current file. | 97 | // Internal function used to get the Psd header from the current file. |
89 | Eina_Bool | 98 | Eina_Bool |
90 | psd_get_header(PSD_Header *header, FILE * file) | 99 | psd_get_header(PSD_Header *header, const unsigned char *map, size_t length, size_t *position) |
91 | { | 100 | { |
92 | unsigned short tmp; | 101 | unsigned short tmp; |
93 | 102 | ||
94 | #define CHECK_RET(Call, Value) \ | 103 | #define CHECK_RET(Call) \ |
95 | if (Call != Value) return EINA_FALSE; | 104 | if (!Call) return EINA_FALSE; |
96 | 105 | ||
97 | CHECK_RET(fread(header->signature, sizeof (unsigned char), 4, file), 4); | 106 | CHECK_RET(read_block(map, length, position, header->signature, 4)); |
98 | CHECK_RET(read_ushort(file, &header->version), 1); | 107 | CHECK_RET(read_ushort(map, length, position, &header->version)); |
99 | CHECK_RET(fread(header->reserved, sizeof (unsigned char), 6, file), 6); | 108 | CHECK_RET(read_block(map, length, position, header->reserved, 6)); |
100 | CHECK_RET(read_ushort(file, &header->channels), 1); | 109 | CHECK_RET(read_ushort(map, length, position, &header->channels)); |
101 | CHECK_RET(read_uint(file, &header->height), 1); | 110 | CHECK_RET(read_uint(map, length, position, &header->height)); |
102 | CHECK_RET(read_uint(file, &header->width), 1); | 111 | CHECK_RET(read_uint(map, length, position, &header->width)); |
103 | CHECK_RET(read_ushort(file, &header->depth), 1); | 112 | CHECK_RET(read_ushort(map, length, position, &header->depth)); |
104 | 113 | ||
105 | CHECK_RET(read_ushort(file, &tmp), 1); | 114 | CHECK_RET(read_ushort(map, length, position, &tmp)); |
106 | header->mode = tmp; | 115 | header->mode = tmp; |
107 | 116 | ||
108 | #undef CHECK_RET | 117 | #undef CHECK_RET |
@@ -144,20 +153,35 @@ static Eina_Bool | |||
144 | evas_image_load_file_head_psd(Image_Entry *ie, const char *FileName, | 153 | evas_image_load_file_head_psd(Image_Entry *ie, const char *FileName, |
145 | const char *key __UNUSED__, int *error) | 154 | const char *key __UNUSED__, int *error) |
146 | { | 155 | { |
147 | FILE *f; | 156 | Eina_File *f; |
157 | void *map; | ||
158 | size_t length; | ||
159 | size_t position; | ||
148 | PSD_Header header; | 160 | PSD_Header header; |
149 | Eina_Bool correct; | 161 | Eina_Bool correct; |
150 | 162 | ||
151 | *error = EVAS_LOAD_ERROR_NONE; | 163 | *error = EVAS_LOAD_ERROR_NONE; |
152 | 164 | ||
153 | f = fopen(FileName, "rb"); | 165 | f = eina_file_open(FileName, 0); |
154 | if (f == NULL) | 166 | if (f == NULL) |
155 | { | 167 | { |
156 | *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; | 168 | *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; |
157 | return EINA_FALSE; | 169 | return EINA_FALSE; |
158 | } | 170 | } |
159 | correct = psd_get_header(&header, f); | 171 | |
160 | fclose(f); | 172 | map = eina_file_map_all(f, EINA_FILE_SEQUENTIAL); |
173 | length = eina_file_size_get(f); | ||
174 | position = 0; | ||
175 | if (!map || length < 1) | ||
176 | { | ||
177 | eina_file_close(f); | ||
178 | *error = EVAS_LOAD_ERROR_CORRUPT_FILE; | ||
179 | return EINA_FALSE; | ||
180 | } | ||
181 | correct = psd_get_header(&header, map, length, &position); | ||
182 | |||
183 | eina_file_map_free(f, map); | ||
184 | eina_file_close(f); | ||
161 | 185 | ||
162 | if (!correct || !is_psd(&header)) | 186 | if (!correct || !is_psd(&header)) |
163 | { | 187 | { |
@@ -174,7 +198,7 @@ evas_image_load_file_head_psd(Image_Entry *ie, const char *FileName, | |||
174 | } | 198 | } |
175 | 199 | ||
176 | static unsigned int | 200 | static unsigned int |
177 | read_compressed_channel(FILE* file, | 201 | read_compressed_channel(const unsigned char *map, size_t length, size_t *position, |
178 | const unsigned int channel_length __UNUSED__, | 202 | const unsigned int channel_length __UNUSED__, |
179 | unsigned int size, | 203 | unsigned int size, |
180 | unsigned char* channel) | 204 | unsigned char* channel) |
@@ -183,19 +207,18 @@ read_compressed_channel(FILE* file, | |||
183 | unsigned int i; | 207 | unsigned int i; |
184 | char headbyte, c; | 208 | char headbyte, c; |
185 | 209 | ||
186 | #define CHECK_RET(Call, Value) \ | 210 | #define CHECK_RET(Call) \ |
187 | if (Call != Value) return READ_COMPRESSED_ERROR_FILE_READ_ERROR; | 211 | if (!Call) return READ_COMPRESSED_ERROR_FILE_READ_ERROR; \ |
188 | 212 | ||
189 | for (i = 0; i < size; ) | 213 | for (i = 0; i < size; ) |
190 | { | 214 | { |
191 | CHECK_RET(fread(&headbyte, 1, 1, file), 1); | 215 | CHECK_RET(read_block(map, length, position, &headbyte, 1)); |
192 | 216 | ||
193 | if (headbyte >= 0) | 217 | if (headbyte >= 0) |
194 | { | 218 | { |
195 | if (i + headbyte > size) | 219 | if (i + headbyte > size) |
196 | return READ_COMPRESSED_ERROR_FILE_CORRUPT; | 220 | return READ_COMPRESSED_ERROR_FILE_CORRUPT; |
197 | 221 | CHECK_RET(read_block(map, length, position, channel + i, headbyte + 1)); | |
198 | CHECK_RET(fread(channel + i, headbyte + 1, 1, file), 1); | ||
199 | 222 | ||
200 | i += headbyte + 1; | 223 | i += headbyte + 1; |
201 | } | 224 | } |
@@ -203,14 +226,14 @@ read_compressed_channel(FILE* file, | |||
203 | { | 226 | { |
204 | int run; | 227 | int run; |
205 | 228 | ||
206 | CHECK_RET(fread(&c, 1, 1, file), 1); | 229 | CHECK_RET(read_block(map, length, position, &c, 1)); |
207 | 230 | ||
208 | run = c; | 231 | run = c; |
209 | /* if (run == -1) */ | 232 | /* if (run == -1) */ |
210 | /* return READ_COMPRESSED_ERROR_FILE_READ_ERROR; */ | 233 | /* return READ_COMPRESSED_ERROR_FILE_READ_ERROR; */ |
211 | 234 | ||
212 | if (i + (-headbyte + 1) > size) | 235 | if (i + (-headbyte + 1) > size) |
213 | return READ_COMPRESSED_ERROR_FILE_CORRUPT; | 236 | return READ_COMPRESSED_ERROR_FILE_CORRUPT; |
214 | 237 | ||
215 | memset(channel + i, run, -headbyte + 1); | 238 | memset(channel + i, run, -headbyte + 1); |
216 | i += -headbyte + 1; | 239 | i += -headbyte + 1; |
@@ -226,7 +249,7 @@ read_compressed_channel(FILE* file, | |||
226 | Eina_Bool | 249 | Eina_Bool |
227 | psd_get_data(Image_Entry *ie __UNUSED__, | 250 | psd_get_data(Image_Entry *ie __UNUSED__, |
228 | PSD_Header *head, | 251 | PSD_Header *head, |
229 | FILE *f, | 252 | const unsigned char *map, size_t length, size_t *position, |
230 | unsigned char *buffer, Eina_Bool compressed, | 253 | unsigned char *buffer, Eina_Bool compressed, |
231 | int *error) | 254 | int *error) |
232 | { | 255 | { |
@@ -268,13 +291,12 @@ psd_get_data(Image_Entry *ie __UNUSED__, | |||
268 | { | 291 | { |
269 | free(data); | 292 | free(data); |
270 | free(channel); | 293 | free(channel); |
271 | fprintf(stderr, "unsupported file format.\n"); | ||
272 | *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT; | 294 | *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT; |
273 | return EINA_FALSE; | 295 | return EINA_FALSE; |
274 | } | 296 | } |
275 | 297 | ||
276 | #define CHECK_RET(Call, Value) \ | 298 | #define CHECK_RET(Call) \ |
277 | if (Call != Value) \ | 299 | if (!Call) \ |
278 | { \ | 300 | { \ |
279 | free(data); \ | 301 | free(data); \ |
280 | free(channel); \ | 302 | free(channel); \ |
@@ -289,7 +311,7 @@ psd_get_data(Image_Entry *ie __UNUSED__, | |||
289 | { | 311 | { |
290 | unsigned char *tmp = channel; | 312 | unsigned char *tmp = channel; |
291 | 313 | ||
292 | CHECK_RET(fread(tmp, pixels_count, 1, f), 1); | 314 | CHECK_RET(read_block(map, length, position, tmp, pixels_count)); |
293 | 315 | ||
294 | for (y = 0; y < head->height * bps; y += bps) | 316 | for (y = 0; y < head->height * bps; y += bps) |
295 | { | 317 | { |
@@ -306,7 +328,7 @@ psd_get_data(Image_Entry *ie __UNUSED__, | |||
306 | { | 328 | { |
307 | unsigned char *tmp = channel; | 329 | unsigned char *tmp = channel; |
308 | 330 | ||
309 | CHECK_RET(fread(channel, pixels_count, 1, f), 1); | 331 | CHECK_RET(read_block(map, length, position, channel, pixels_count)); |
310 | 332 | ||
311 | for (y = 0; y < head->height * bps; y += bps) | 333 | for (y = 0; y < head->height * bps; y += bps) |
312 | { | 334 | { |
@@ -333,7 +355,7 @@ psd_get_data(Image_Entry *ie __UNUSED__, | |||
333 | { | 355 | { |
334 | unsigned short *shortptr = (unsigned short*) channel; | 356 | unsigned short *shortptr = (unsigned short*) channel; |
335 | 357 | ||
336 | CHECK_RET(fread(channel, pixels_count * 2, 1, f), 1); | 358 | CHECK_RET(read_block(map, length, position, channel, pixels_count * 2)); |
337 | 359 | ||
338 | for (y = 0; y < head->height * bps2; y += bps2) | 360 | for (y = 0; y < head->height * bps2; y += bps2) |
339 | { | 361 | { |
@@ -350,7 +372,7 @@ psd_get_data(Image_Entry *ie __UNUSED__, | |||
350 | { | 372 | { |
351 | unsigned short *shortptr = (unsigned short*) channel; | 373 | unsigned short *shortptr = (unsigned short*) channel; |
352 | 374 | ||
353 | CHECK_RET(fread(channel, pixels_count * 2, 1, f), 1); | 375 | CHECK_RET(read_block(map, length, position, channel, pixels_count * 2)); |
354 | 376 | ||
355 | for (y = 0; y < head->height * bps2; y += bps2) | 377 | for (y = 0; y < head->height * bps2; y += bps2) |
356 | { | 378 | { |
@@ -373,7 +395,7 @@ psd_get_data(Image_Entry *ie __UNUSED__, | |||
373 | 395 | ||
374 | rle_table = alloca(head->height * head->channel_num * sizeof (unsigned short)); | 396 | rle_table = alloca(head->height * head->channel_num * sizeof (unsigned short)); |
375 | chanlen = alloca(head->channel_num * sizeof (unsigned int)); | 397 | chanlen = alloca(head->channel_num * sizeof (unsigned int)); |
376 | if (!get_compressed_channels_length(head, f, rle_table, chanlen)) | 398 | if (!get_compressed_channels_length(head, map, length, position, rle_table, chanlen)) |
377 | goto file_read_error; | 399 | goto file_read_error; |
378 | 400 | ||
379 | for (c = 0; c < numchan; c++) | 401 | for (c = 0; c < numchan; c++) |
@@ -381,7 +403,7 @@ psd_get_data(Image_Entry *ie __UNUSED__, | |||
381 | unsigned char *tmp = channel; | 403 | unsigned char *tmp = channel; |
382 | int err; | 404 | int err; |
383 | 405 | ||
384 | err = read_compressed_channel(f, | 406 | err = read_compressed_channel(map, length, position, |
385 | chanlen[c], | 407 | chanlen[c], |
386 | pixels_count, | 408 | pixels_count, |
387 | channel); | 409 | channel); |
@@ -416,7 +438,7 @@ psd_get_data(Image_Entry *ie __UNUSED__, | |||
416 | unsigned char *tmp = channel; | 438 | unsigned char *tmp = channel; |
417 | int err; | 439 | int err; |
418 | 440 | ||
419 | err = read_compressed_channel(f, | 441 | err = read_compressed_channel(map, length, position, |
420 | chanlen[c], | 442 | chanlen[c], |
421 | pixels_count, | 443 | pixels_count, |
422 | channel); | 444 | channel); |
@@ -482,7 +504,7 @@ psd_get_data(Image_Entry *ie __UNUSED__, | |||
482 | Eina_Bool | 504 | Eina_Bool |
483 | get_single_channel(Image_Entry *ie __UNUSED__, | 505 | get_single_channel(Image_Entry *ie __UNUSED__, |
484 | PSD_Header *head, | 506 | PSD_Header *head, |
485 | FILE *f, | 507 | const unsigned char *map, size_t length, size_t *position, |
486 | unsigned char *buffer, | 508 | unsigned char *buffer, |
487 | Eina_Bool compressed) | 509 | Eina_Bool compressed) |
488 | { | 510 | { |
@@ -496,29 +518,29 @@ get_single_channel(Image_Entry *ie __UNUSED__, | |||
496 | bpc = (head->depth / 8); | 518 | bpc = (head->depth / 8); |
497 | pixels_count = head->width * head->height; | 519 | pixels_count = head->width * head->height; |
498 | 520 | ||
499 | #define CHECK_RET(Call, Value) \ | 521 | #define CHECK_RET(Call) \ |
500 | if (Call != Value) return EINA_FALSE; | 522 | if (!Call) return EINA_FALSE; |
501 | 523 | ||
502 | if (!compressed) | 524 | if (!compressed) |
503 | { | 525 | { |
504 | if (bpc == 1) | 526 | if (bpc == 1) |
505 | { | 527 | { |
506 | CHECK_RET(fread(buffer, pixels_count, 1, f), 1); | 528 | CHECK_RET(read_block(map, length, position, buffer, pixels_count)); |
507 | } | 529 | } |
508 | else | 530 | else |
509 | { // Bpc == 2 | 531 | { // Bpc == 2 |
510 | CHECK_RET(fread(buffer, pixels_count * 2, 1, f), 1); | 532 | CHECK_RET(read_block(map, length, position, buffer, pixels_count * 2)); |
511 | } | 533 | } |
512 | } | 534 | } |
513 | else | 535 | else |
514 | { | 536 | { |
515 | for (i = 0; i < (unsigned int)pixels_count; ) | 537 | for (i = 0; i < (unsigned int)pixels_count; ) |
516 | { | 538 | { |
517 | CHECK_RET(fread(&headbyte, 1, 1, f), 1); | 539 | CHECK_RET(read_block(map, length, position, &headbyte, 1)); |
518 | 540 | ||
519 | if (headbyte >= 0) | 541 | if (headbyte >= 0) |
520 | { // && HeadByte <= 127 | 542 | { // && HeadByte <= 127 |
521 | CHECK_RET(fread(buffer + i, headbyte + 1, 1, f), 1); | 543 | CHECK_RET(read_block(map, length, position, buffer + i, headbyte + 1)); |
522 | 544 | ||
523 | i += headbyte + 1; | 545 | i += headbyte + 1; |
524 | } | 546 | } |
@@ -526,7 +548,7 @@ get_single_channel(Image_Entry *ie __UNUSED__, | |||
526 | { | 548 | { |
527 | int run; | 549 | int run; |
528 | 550 | ||
529 | CHECK_RET(fread(&c, 1, 1, f), 1); | 551 | CHECK_RET(read_block(map, length, position, &c, 1)); |
530 | 552 | ||
531 | run = c; | 553 | run = c; |
532 | if (run == -1) return EINA_FALSE; | 554 | if (run == -1) return EINA_FALSE; |
@@ -543,7 +565,7 @@ get_single_channel(Image_Entry *ie __UNUSED__, | |||
543 | } | 565 | } |
544 | 566 | ||
545 | Eina_Bool | 567 | Eina_Bool |
546 | read_psd_grey(Image_Entry *ie, PSD_Header *head, FILE * f, int *error) | 568 | read_psd_grey(Image_Entry *ie, PSD_Header *head, const unsigned char *map, size_t length, size_t *position, int *error) |
547 | { | 569 | { |
548 | unsigned int color_mode, resource_size, misc_info; | 570 | unsigned int color_mode, resource_size, misc_info; |
549 | unsigned short compressed; | 571 | unsigned short compressed; |
@@ -552,22 +574,21 @@ read_psd_grey(Image_Entry *ie, PSD_Header *head, FILE * f, int *error) | |||
552 | 574 | ||
553 | *error = EVAS_LOAD_ERROR_CORRUPT_FILE; | 575 | *error = EVAS_LOAD_ERROR_CORRUPT_FILE; |
554 | 576 | ||
555 | #define CHECK_RET(Call, Value) \ | 577 | #define CHECK_RET(Call) \ |
556 | if (Call != Value) return EINA_FALSE; | 578 | if (!Call) return EINA_FALSE; |
557 | 579 | ||
558 | CHECK_RET(read_uint(f, &color_mode), 1); | 580 | CHECK_RET(read_uint(map, length, position, &color_mode)); |
559 | // Skip over the 'color mode data section' | 581 | // Skip over the 'color mode data section' |
560 | CHECK_RET(fseek(f, color_mode, SEEK_CUR), 0); | 582 | *position += color_mode; |
561 | 583 | ||
562 | CHECK_RET(read_uint(f, &resource_size), 1); | 584 | CHECK_RET(read_uint(map, length, position, &resource_size)); |
563 | // Read the 'image resources section' | 585 | // Read the 'image resources section' |
586 | *position += resource_size; | ||
564 | 587 | ||
565 | CHECK_RET(fseek(f, resource_size, SEEK_CUR), 0); | 588 | CHECK_RET(read_uint(map, length, position, &misc_info)); |
589 | *position += misc_info; | ||
566 | 590 | ||
567 | CHECK_RET(read_uint(f, &misc_info), 1); | 591 | CHECK_RET(read_ushort(map, length, position, &compressed)); |
568 | CHECK_RET(fseek(f, misc_info, SEEK_CUR), 0); | ||
569 | |||
570 | CHECK_RET(read_ushort(f, &compressed), 1); | ||
571 | 592 | ||
572 | ie->w = head->width; | 593 | ie->w = head->width; |
573 | ie->h = head->height; | 594 | ie->h = head->height; |
@@ -599,7 +620,7 @@ read_psd_grey(Image_Entry *ie, PSD_Header *head, FILE * f, int *error) | |||
599 | goto cleanup_error; | 620 | goto cleanup_error; |
600 | } | 621 | } |
601 | 622 | ||
602 | if (!psd_get_data(ie, head, f, surface, compressed, error)) | 623 | if (!psd_get_data(ie, head, map, length, position, surface, compressed, error)) |
603 | goto cleanup_error; | 624 | goto cleanup_error; |
604 | 625 | ||
605 | return EINA_TRUE; | 626 | return EINA_TRUE; |
@@ -612,7 +633,7 @@ read_psd_grey(Image_Entry *ie, PSD_Header *head, FILE * f, int *error) | |||
612 | 633 | ||
613 | 634 | ||
614 | Eina_Bool | 635 | Eina_Bool |
615 | read_psd_indexed(Image_Entry *ie, PSD_Header *head, FILE * f, int *error) | 636 | read_psd_indexed(Image_Entry *ie, PSD_Header *head, const unsigned char *map, size_t length, size_t *position, int *error) |
616 | { | 637 | { |
617 | unsigned int color_mode, resource_size, misc_info; | 638 | unsigned int color_mode, resource_size, misc_info; |
618 | unsigned short compressed; | 639 | unsigned short compressed; |
@@ -620,11 +641,11 @@ read_psd_indexed(Image_Entry *ie, PSD_Header *head, FILE * f, int *error) | |||
620 | 641 | ||
621 | *error = EVAS_LOAD_ERROR_CORRUPT_FILE; | 642 | *error = EVAS_LOAD_ERROR_CORRUPT_FILE; |
622 | 643 | ||
623 | #define CHECK_RET(Call, Value) \ | 644 | #define CHECK_RET(Call) \ |
624 | if (Call != Value) return EINA_FALSE; | 645 | if (!(Call)) return EINA_FALSE; |
625 | 646 | ||
626 | CHECK_RET(read_uint(f, &color_mode), 1); | 647 | CHECK_RET(read_uint(map, length, position, &color_mode)); |
627 | CHECK_RET((color_mode % 3), 0); | 648 | CHECK_RET(!(color_mode % 3)); |
628 | /* | 649 | /* |
629 | Palette = (unsigned char*)malloc(Colormode); | 650 | Palette = (unsigned char*)malloc(Colormode); |
630 | if (Palette == NULL) | 651 | if (Palette == NULL) |
@@ -633,16 +654,16 @@ read_psd_indexed(Image_Entry *ie, PSD_Header *head, FILE * f, int *error) | |||
633 | goto cleanup_error; | 654 | goto cleanup_error; |
634 | */ | 655 | */ |
635 | // Skip over the 'color mode data section' | 656 | // Skip over the 'color mode data section' |
636 | CHECK_RET(fseek(f, color_mode, SEEK_CUR), 0); | 657 | *position += color_mode; |
637 | 658 | ||
638 | // Read the 'image resources section' | 659 | // Read the 'image resources section' |
639 | CHECK_RET(read_uint(f, &resource_size), 1); | 660 | CHECK_RET(read_uint(map, length, position, &resource_size)); |
640 | CHECK_RET(fseek(f, resource_size, SEEK_CUR), 0); | 661 | *position += resource_size; |
641 | 662 | ||
642 | CHECK_RET(read_uint(f, &misc_info), 1); | 663 | CHECK_RET(read_uint(map, length, position, &misc_info)); |
643 | CHECK_RET(fseek(f, misc_info, SEEK_CUR), 0); | 664 | *position += misc_info; |
644 | 665 | ||
645 | CHECK_RET(read_ushort(f, &compressed), 1); | 666 | CHECK_RET(read_ushort(map, length, position, &compressed)); |
646 | 667 | ||
647 | if (head->channels != 1 || head->depth != 8) | 668 | if (head->channels != 1 || head->depth != 8) |
648 | { | 669 | { |
@@ -664,7 +685,7 @@ read_psd_indexed(Image_Entry *ie, PSD_Header *head, FILE * f, int *error) | |||
664 | return EINA_FALSE; | 685 | return EINA_FALSE; |
665 | } | 686 | } |
666 | 687 | ||
667 | if (!psd_get_data(ie, head, f, surface, compressed, error)) | 688 | if (!psd_get_data(ie, head, map, length, position, surface, compressed, error)) |
668 | return EINA_FALSE; | 689 | return EINA_FALSE; |
669 | return EINA_TRUE; | 690 | return EINA_TRUE; |
670 | 691 | ||
@@ -672,28 +693,28 @@ read_psd_indexed(Image_Entry *ie, PSD_Header *head, FILE * f, int *error) | |||
672 | } | 693 | } |
673 | 694 | ||
674 | Eina_Bool | 695 | Eina_Bool |
675 | read_psd_rgb(Image_Entry *ie, PSD_Header *head, FILE *f, int *error) | 696 | read_psd_rgb(Image_Entry *ie, PSD_Header *head, const unsigned char *map, size_t length, size_t *position, int *error) |
676 | { | 697 | { |
677 | unsigned int color_mode, resource_size, misc_info; | 698 | unsigned int color_mode, resource_size, misc_info; |
678 | unsigned short compressed; | 699 | unsigned short compressed; |
679 | unsigned int type; | 700 | unsigned int type; |
680 | void *surface; | 701 | void *surface; |
681 | 702 | ||
682 | #define CHECK_RET(Call, Value) \ | 703 | #define CHECK_RET(Call) \ |
683 | if (Call != Value) return EINA_FALSE; | 704 | if (!Call) return EINA_FALSE; |
684 | 705 | ||
685 | CHECK_RET(read_uint(f, &color_mode), 1); | 706 | CHECK_RET(read_uint(map, length, position, &color_mode)); |
686 | // Skip over the 'color mode data section' | 707 | // Skip over the 'color mode data section' |
687 | CHECK_RET(fseek(f, color_mode, SEEK_CUR), 0); | 708 | *position += color_mode; |
688 | 709 | ||
689 | // Read the 'image resources section' | 710 | // Read the 'image resources section' |
690 | CHECK_RET(read_uint(f, &resource_size), 1); | 711 | CHECK_RET(read_uint(map, length, position, &resource_size)); |
691 | CHECK_RET(fseek(f, resource_size, SEEK_CUR), 0); | 712 | *position += resource_size; |
692 | 713 | ||
693 | CHECK_RET(read_uint(f, &misc_info), 1); | 714 | CHECK_RET(read_uint(map, length, position, &misc_info)); |
694 | CHECK_RET(fseek(f, misc_info, SEEK_CUR), 0); | 715 | *position += misc_info; |
695 | 716 | ||
696 | CHECK_RET(read_ushort(f, &compressed), 1); | 717 | CHECK_RET(read_ushort(map, length, position, &compressed)); |
697 | 718 | ||
698 | head->channel_num = head->channels; | 719 | head->channel_num = head->channels; |
699 | 720 | ||
@@ -722,7 +743,7 @@ read_psd_rgb(Image_Entry *ie, PSD_Header *head, FILE *f, int *error) | |||
722 | goto cleanup_error; | 743 | goto cleanup_error; |
723 | } | 744 | } |
724 | 745 | ||
725 | if (!psd_get_data(ie, head, f, surface, compressed, error)) | 746 | if (!psd_get_data(ie, head, map, length, position, surface, compressed, error)) |
726 | goto cleanup_error; | 747 | goto cleanup_error; |
727 | 748 | ||
728 | evas_common_image_premul(ie); | 749 | evas_common_image_premul(ie); |
@@ -735,7 +756,7 @@ read_psd_rgb(Image_Entry *ie, PSD_Header *head, FILE *f, int *error) | |||
735 | } | 756 | } |
736 | 757 | ||
737 | Eina_Bool | 758 | Eina_Bool |
738 | read_psd_cmyk(Image_Entry *ie, PSD_Header *head, FILE *f, int *error) | 759 | read_psd_cmyk(Image_Entry *ie, PSD_Header *head, const unsigned char *map, size_t length, size_t *position, int *error) |
739 | { | 760 | { |
740 | unsigned int color_mode, resource_size, misc_info, size, i, j, data_size; | 761 | unsigned int color_mode, resource_size, misc_info, size, i, j, data_size; |
741 | unsigned short compressed; | 762 | unsigned short compressed; |
@@ -745,21 +766,21 @@ read_psd_cmyk(Image_Entry *ie, PSD_Header *head, FILE *f, int *error) | |||
745 | 766 | ||
746 | *error = EVAS_LOAD_ERROR_CORRUPT_FILE; | 767 | *error = EVAS_LOAD_ERROR_CORRUPT_FILE; |
747 | 768 | ||
748 | #define CHECK_RET(Call, Value) \ | 769 | #define CHECK_RET(Call) \ |
749 | if (Call != Value) return EINA_FALSE; | 770 | if (!Call) return EINA_FALSE; |
750 | 771 | ||
751 | CHECK_RET(read_uint(f, &color_mode), 1); | 772 | CHECK_RET(read_uint(map, length, position, &color_mode)); |
752 | // Skip over the 'color mode data section' | 773 | // Skip over the 'color mode data section' |
753 | CHECK_RET(fseek(f, color_mode, SEEK_CUR), 0); | 774 | *position += color_mode; |
754 | 775 | ||
755 | CHECK_RET(read_uint(f, &resource_size), 1); | 776 | CHECK_RET(read_uint(map, length, position, &resource_size)); |
756 | // Read the 'image resources section' | 777 | // Read the 'image resources section' |
757 | CHECK_RET(fseek(f, resource_size, SEEK_CUR), 0); | 778 | *position += resource_size; |
758 | 779 | ||
759 | CHECK_RET(read_uint(f, &misc_info), 1); | 780 | CHECK_RET(read_uint(map, length, position, &misc_info)); |
760 | CHECK_RET(fseek(f, misc_info, SEEK_CUR), 0); | 781 | *position += misc_info; |
761 | 782 | ||
762 | CHECK_RET(read_ushort(f, &compressed), 1); | 783 | CHECK_RET(read_ushort(map, length, position, &compressed)); |
763 | 784 | ||
764 | switch (head->channels) | 785 | switch (head->channels) |
765 | { | 786 | { |
@@ -804,14 +825,14 @@ read_psd_cmyk(Image_Entry *ie, PSD_Header *head, FILE *f, int *error) | |||
804 | goto cleanup_error; | 825 | goto cleanup_error; |
805 | } | 826 | } |
806 | 827 | ||
807 | if (!psd_get_data(ie, head, f, surface, compressed, error)) | 828 | if (!psd_get_data(ie, head, map, length, position, surface, compressed, error)) |
808 | goto cleanup_error; | 829 | goto cleanup_error; |
809 | 830 | ||
810 | size = type * ie->w * ie->h; | 831 | size = type * ie->w * ie->h; |
811 | kchannel = malloc(size); | 832 | kchannel = malloc(size); |
812 | if (kchannel == NULL) | 833 | if (kchannel == NULL) |
813 | goto cleanup_error; | 834 | goto cleanup_error; |
814 | if (!get_single_channel(ie, head, f, kchannel, compressed)) | 835 | if (!get_single_channel(ie, head, map, length, position, kchannel, compressed)) |
815 | goto cleanup_error; | 836 | goto cleanup_error; |
816 | 837 | ||
817 | data_size = head->channels * type * ie->w * ie->h; | 838 | data_size = head->channels * type * ie->w * ie->h; |
@@ -861,20 +882,34 @@ evas_image_load_file_data_psd(Image_Entry *ie, | |||
861 | const char *key __UNUSED__, | 882 | const char *key __UNUSED__, |
862 | int *error) | 883 | int *error) |
863 | { | 884 | { |
864 | FILE *f; | 885 | Eina_File *f; |
886 | void *map; | ||
887 | size_t length; | ||
888 | size_t position; | ||
865 | PSD_Header header; | 889 | PSD_Header header; |
866 | Eina_Bool bpsd = EINA_FALSE; | 890 | Eina_Bool bpsd = EINA_FALSE; |
867 | 891 | ||
868 | f = fopen(file, "rb"); | 892 | f = eina_file_open(file, 0); |
869 | if (f == NULL) | 893 | if (f == NULL) |
870 | { | 894 | { |
871 | *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; | 895 | *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; |
872 | return bpsd; | 896 | return bpsd; |
873 | } | 897 | } |
874 | 898 | ||
875 | if (!psd_get_header(&header, f) || !is_psd(&header)) | 899 | map = eina_file_map_all(f, EINA_FILE_SEQUENTIAL); |
900 | length = eina_file_size_get(f); | ||
901 | position = 0; | ||
902 | if (!map || length < 1) | ||
903 | { | ||
904 | eina_file_close(f); | ||
905 | *error = EVAS_LOAD_ERROR_CORRUPT_FILE; | ||
906 | return EINA_FALSE; | ||
907 | } | ||
908 | |||
909 | if (!psd_get_header(&header, map, length, &position) || !is_psd(&header)) | ||
876 | { | 910 | { |
877 | fclose(f); | 911 | eina_file_map_free(f, map); |
912 | eina_file_close(f); | ||
878 | *error = EVAS_LOAD_ERROR_GENERIC; | 913 | *error = EVAS_LOAD_ERROR_GENERIC; |
879 | return EINA_FALSE; | 914 | return EINA_FALSE; |
880 | } | 915 | } |
@@ -887,39 +922,39 @@ evas_image_load_file_data_psd(Image_Entry *ie, | |||
887 | switch (header.mode) | 922 | switch (header.mode) |
888 | { | 923 | { |
889 | case PSD_GREYSCALE: // Greyscale | 924 | case PSD_GREYSCALE: // Greyscale |
890 | bpsd = read_psd_grey(ie, &header, f, error); | 925 | bpsd = read_psd_grey(ie, &header, map, length, &position, error); |
891 | break; | 926 | break; |
892 | case PSD_INDEXED: // Indexed | 927 | case PSD_INDEXED: // Indexed |
893 | bpsd = read_psd_indexed(ie, &header, f, error); | 928 | bpsd = read_psd_indexed(ie, &header, map, length, &position, error); |
894 | break; | 929 | break; |
895 | case PSD_RGB: // RGB | 930 | case PSD_RGB: // RGB |
896 | bpsd = read_psd_rgb(ie, &header, f, error); | 931 | bpsd = read_psd_rgb(ie, &header, map, length, &position, error); |
897 | break; | 932 | break; |
898 | case PSD_CMYK: // CMYK | 933 | case PSD_CMYK: // CMYK |
899 | bpsd = read_psd_cmyk(ie, &header, f, error); | 934 | bpsd = read_psd_cmyk(ie, &header, map, length, &position, error); |
900 | break; | 935 | break; |
901 | default : | 936 | default : |
902 | *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT; | 937 | *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT; |
903 | bpsd = EINA_FALSE; | 938 | bpsd = EINA_FALSE; |
904 | } | 939 | } |
905 | fclose(f); | 940 | |
941 | eina_file_map_free(f, map); | ||
942 | eina_file_close(f); | ||
906 | 943 | ||
907 | return bpsd; | 944 | return bpsd; |
908 | } | 945 | } |
909 | 946 | ||
910 | static Eina_Bool | 947 | static Eina_Bool |
911 | get_compressed_channels_length(PSD_Header *head, | 948 | get_compressed_channels_length(PSD_Header *head, |
912 | FILE * file, | 949 | const unsigned char *map, size_t length, size_t *position, |
913 | unsigned short *rle_table, | 950 | unsigned short *rle_table, |
914 | unsigned int *chanlen) | 951 | unsigned int *chanlen) |
915 | { | 952 | { |
916 | unsigned int j; | 953 | unsigned int j; |
917 | unsigned int c; | 954 | unsigned int c; |
918 | 955 | ||
919 | if (fread(rle_table, | 956 | if (!read_block(map, length, position, rle_table, |
920 | sizeof(unsigned short), | 957 | sizeof (unsigned short) * head->height * head->channel_num)) |
921 | head->height * head->channel_num, | ||
922 | file) != head->height * head->channel_num) | ||
923 | return EINA_FALSE; | 958 | return EINA_FALSE; |
924 | 959 | ||
925 | memset(chanlen, 0, head->channel_num * sizeof(unsigned int)); | 960 | memset(chanlen, 0, head->channel_num * sizeof(unsigned int)); |
@@ -941,7 +976,8 @@ static const Evas_Image_Load_Func evas_image_load_psd_func = { | |||
941 | EINA_TRUE, | 976 | EINA_TRUE, |
942 | evas_image_load_file_head_psd, | 977 | evas_image_load_file_head_psd, |
943 | evas_image_load_file_data_psd, | 978 | evas_image_load_file_data_psd, |
944 | NULL | 979 | NULL, |
980 | EINA_FALSE | ||
945 | }; | 981 | }; |
946 | 982 | ||
947 | static int | 983 | static int |
diff --git a/libraries/evas/src/modules/loaders/svg/Makefile.in b/libraries/evas/src/modules/loaders/svg/Makefile.in index f81a3c3..b742842 100644 --- a/libraries/evas/src/modules/loaders/svg/Makefile.in +++ b/libraries/evas/src/modules/loaders/svg/Makefile.in | |||
@@ -231,8 +231,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
232 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 232 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
233 | PKG_CONFIG = @PKG_CONFIG@ | 233 | PKG_CONFIG = @PKG_CONFIG@ |
234 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
235 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
236 | PNG_CFLAGS = @PNG_CFLAGS@ | 234 | PNG_CFLAGS = @PNG_CFLAGS@ |
237 | PNG_LIBS = @PNG_LIBS@ | 235 | PNG_LIBS = @PNG_LIBS@ |
238 | RANLIB = @RANLIB@ | 236 | RANLIB = @RANLIB@ |
@@ -249,6 +247,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
249 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 247 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
250 | VERSION = @VERSION@ | 248 | VERSION = @VERSION@ |
251 | VMAJ = @VMAJ@ | 249 | VMAJ = @VMAJ@ |
250 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
251 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
252 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 252 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
254 | XCB_CFLAGS = @XCB_CFLAGS@ | 254 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -330,6 +330,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
333 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
334 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
335 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
336 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
333 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 337 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
334 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 338 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
335 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 339 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/loaders/svg/evas_image_load_svg.c b/libraries/evas/src/modules/loaders/svg/evas_image_load_svg.c index f1c8452..dc0fc8d 100644 --- a/libraries/evas/src/modules/loaders/svg/evas_image_load_svg.c +++ b/libraries/evas/src/modules/loaders/svg/evas_image_load_svg.c | |||
@@ -13,7 +13,8 @@ Evas_Image_Load_Func evas_image_load_svg_func = | |||
13 | EINA_FALSE, | 13 | EINA_FALSE, |
14 | evas_image_load_file_head_svg, | 14 | evas_image_load_file_head_svg, |
15 | evas_image_load_file_data_svg, | 15 | evas_image_load_file_data_svg, |
16 | NULL | 16 | NULL, |
17 | EINA_FALSE | ||
17 | }; | 18 | }; |
18 | 19 | ||
19 | static int rsvg_initialized = 0; | 20 | static int rsvg_initialized = 0; |
diff --git a/libraries/evas/src/modules/loaders/tga/Makefile.in b/libraries/evas/src/modules/loaders/tga/Makefile.in index 645c77a..4d822d1 100644 --- a/libraries/evas/src/modules/loaders/tga/Makefile.in +++ b/libraries/evas/src/modules/loaders/tga/Makefile.in | |||
@@ -231,8 +231,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
232 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 232 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
233 | PKG_CONFIG = @PKG_CONFIG@ | 233 | PKG_CONFIG = @PKG_CONFIG@ |
234 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
235 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
236 | PNG_CFLAGS = @PNG_CFLAGS@ | 234 | PNG_CFLAGS = @PNG_CFLAGS@ |
237 | PNG_LIBS = @PNG_LIBS@ | 235 | PNG_LIBS = @PNG_LIBS@ |
238 | RANLIB = @RANLIB@ | 236 | RANLIB = @RANLIB@ |
@@ -249,6 +247,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
249 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 247 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
250 | VERSION = @VERSION@ | 248 | VERSION = @VERSION@ |
251 | VMAJ = @VMAJ@ | 249 | VMAJ = @VMAJ@ |
250 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
251 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
252 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 252 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
254 | XCB_CFLAGS = @XCB_CFLAGS@ | 254 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -330,6 +330,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
333 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
334 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
335 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
336 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
333 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 337 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
334 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 338 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
335 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 339 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/loaders/tga/evas_image_load_tga.c b/libraries/evas/src/modules/loaders/tga/evas_image_load_tga.c index 61b99f6..9b4073c 100644 --- a/libraries/evas/src/modules/loaders/tga/evas_image_load_tga.c +++ b/libraries/evas/src/modules/loaders/tga/evas_image_load_tga.c | |||
@@ -65,7 +65,8 @@ static Evas_Image_Load_Func evas_image_load_tga_func = | |||
65 | EINA_TRUE, | 65 | EINA_TRUE, |
66 | evas_image_load_file_head_tga, | 66 | evas_image_load_file_head_tga, |
67 | evas_image_load_file_data_tga, | 67 | evas_image_load_file_data_tga, |
68 | NULL | 68 | NULL, |
69 | EINA_FALSE | ||
69 | }; | 70 | }; |
70 | 71 | ||
71 | static Eina_Bool | 72 | static Eina_Bool |
diff --git a/libraries/evas/src/modules/loaders/tiff/Makefile.in b/libraries/evas/src/modules/loaders/tiff/Makefile.in index a2deea7..2b102a1 100644 --- a/libraries/evas/src/modules/loaders/tiff/Makefile.in +++ b/libraries/evas/src/modules/loaders/tiff/Makefile.in | |||
@@ -231,8 +231,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
232 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 232 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
233 | PKG_CONFIG = @PKG_CONFIG@ | 233 | PKG_CONFIG = @PKG_CONFIG@ |
234 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
235 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
236 | PNG_CFLAGS = @PNG_CFLAGS@ | 234 | PNG_CFLAGS = @PNG_CFLAGS@ |
237 | PNG_LIBS = @PNG_LIBS@ | 235 | PNG_LIBS = @PNG_LIBS@ |
238 | RANLIB = @RANLIB@ | 236 | RANLIB = @RANLIB@ |
@@ -249,6 +247,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
249 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 247 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
250 | VERSION = @VERSION@ | 248 | VERSION = @VERSION@ |
251 | VMAJ = @VMAJ@ | 249 | VMAJ = @VMAJ@ |
250 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
251 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
252 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 252 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
254 | XCB_CFLAGS = @XCB_CFLAGS@ | 254 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -330,6 +330,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
333 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
334 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
335 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
336 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
333 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 337 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
334 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 338 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
335 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 339 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/loaders/tiff/evas_image_load_tiff.c b/libraries/evas/src/modules/loaders/tiff/evas_image_load_tiff.c index b9bea91..e17d5a6 100644 --- a/libraries/evas/src/modules/loaders/tiff/evas_image_load_tiff.c +++ b/libraries/evas/src/modules/loaders/tiff/evas_image_load_tiff.c | |||
@@ -34,7 +34,8 @@ static Evas_Image_Load_Func evas_image_load_tiff_func = | |||
34 | EINA_TRUE, | 34 | EINA_TRUE, |
35 | evas_image_load_file_head_tiff, | 35 | evas_image_load_file_head_tiff, |
36 | evas_image_load_file_data_tiff, | 36 | evas_image_load_file_data_tiff, |
37 | NULL | 37 | NULL, |
38 | EINA_FALSE | ||
38 | }; | 39 | }; |
39 | 40 | ||
40 | typedef struct TIFFRGBAImage_Extra TIFFRGBAImage_Extra; | 41 | typedef struct TIFFRGBAImage_Extra TIFFRGBAImage_Extra; |
diff --git a/libraries/evas/src/modules/loaders/wbmp/Makefile.in b/libraries/evas/src/modules/loaders/wbmp/Makefile.in index 41a3bb9..5c01e1c 100644 --- a/libraries/evas/src/modules/loaders/wbmp/Makefile.in +++ b/libraries/evas/src/modules/loaders/wbmp/Makefile.in | |||
@@ -231,8 +231,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
232 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 232 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
233 | PKG_CONFIG = @PKG_CONFIG@ | 233 | PKG_CONFIG = @PKG_CONFIG@ |
234 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
235 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
236 | PNG_CFLAGS = @PNG_CFLAGS@ | 234 | PNG_CFLAGS = @PNG_CFLAGS@ |
237 | PNG_LIBS = @PNG_LIBS@ | 235 | PNG_LIBS = @PNG_LIBS@ |
238 | RANLIB = @RANLIB@ | 236 | RANLIB = @RANLIB@ |
@@ -249,6 +247,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
249 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 247 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
250 | VERSION = @VERSION@ | 248 | VERSION = @VERSION@ |
251 | VMAJ = @VMAJ@ | 249 | VMAJ = @VMAJ@ |
250 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
251 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
252 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 252 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
254 | XCB_CFLAGS = @XCB_CFLAGS@ | 254 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -330,6 +330,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
333 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
334 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
335 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
336 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
333 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 337 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
334 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 338 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
335 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 339 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/loaders/wbmp/evas_image_load_wbmp.c b/libraries/evas/src/modules/loaders/wbmp/evas_image_load_wbmp.c index fa6fab2..54e28d5 100644 --- a/libraries/evas/src/modules/loaders/wbmp/evas_image_load_wbmp.c +++ b/libraries/evas/src/modules/loaders/wbmp/evas_image_load_wbmp.c | |||
@@ -19,21 +19,22 @@ static Evas_Image_Load_Func evas_image_load_wbmp_func = | |||
19 | EINA_TRUE, | 19 | EINA_TRUE, |
20 | evas_image_load_file_head_wbmp, | 20 | evas_image_load_file_head_wbmp, |
21 | evas_image_load_file_data_wbmp, | 21 | evas_image_load_file_data_wbmp, |
22 | NULL | 22 | NULL, |
23 | EINA_FALSE | ||
23 | }; | 24 | }; |
24 | 25 | ||
25 | 26 | ||
26 | static int | 27 | static int |
27 | read_mb(unsigned int *data, FILE *f) | 28 | read_mb(unsigned int *data, void *map, size_t length, size_t *position) |
28 | { | 29 | { |
29 | int ac = 0, ct; | 30 | int ac = 0, ct; |
30 | unsigned char buf; | 31 | unsigned char buf; |
31 | 32 | ||
32 | for (ct = 0;;) | 33 | for (ct = 0;;) |
33 | { | 34 | { |
34 | if ((ct++) == 5) return -1; | 35 | if ((ct++) == 5) return -1; |
35 | if ((fread(&buf, 1, 1, f)) < 1) | 36 | if (*position > length) return -1; |
36 | return -1; | 37 | buf = ((unsigned char *) map)[(*position)++]; |
37 | ac = (ac << 7) | (buf & 0x7f); | 38 | ac = (ac << 7) | (buf & 0x7f); |
38 | if ((buf & 0x80) == 0) break; | 39 | if ((buf & 0x80) == 0) break; |
39 | } | 40 | } |
@@ -44,70 +45,105 @@ read_mb(unsigned int *data, FILE *f) | |||
44 | static Eina_Bool | 45 | static Eina_Bool |
45 | evas_image_load_file_head_wbmp(Image_Entry *ie, const char *file, const char *key __UNUSED__, int *error) | 46 | evas_image_load_file_head_wbmp(Image_Entry *ie, const char *file, const char *key __UNUSED__, int *error) |
46 | { | 47 | { |
47 | FILE *f; | 48 | Eina_File *f; |
49 | void *map = NULL; | ||
50 | size_t position = 0; | ||
51 | size_t length; | ||
48 | unsigned int type, w, h; | 52 | unsigned int type, w, h; |
49 | unsigned char fixed_header; | 53 | |
50 | struct stat statbuf; | ||
51 | |||
52 | *error = EVAS_LOAD_ERROR_GENERIC; | 54 | *error = EVAS_LOAD_ERROR_GENERIC; |
53 | f = fopen(file, "rb"); | 55 | f = eina_file_open(file, 0); |
54 | if (!f) | 56 | if (!f) |
55 | { | 57 | { |
56 | *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; | 58 | *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; |
57 | return EINA_FALSE; | 59 | return EINA_FALSE; |
58 | } | 60 | } |
59 | 61 | ||
60 | if (stat(file, &statbuf) == -1) goto bail; | 62 | length = eina_file_size_get(f); |
61 | if (read_mb(&type, f) < 0) goto bail; | 63 | if (length <= 4) goto bail; |
62 | 64 | ||
65 | map = eina_file_map_all(f, EINA_FILE_SEQUENTIAL); | ||
66 | if (!map) goto bail; | ||
67 | |||
68 | if (read_mb(&type, map, length, &position) < 0) goto bail; | ||
69 | |||
63 | if (type != 0) | 70 | if (type != 0) |
64 | { | 71 | { |
65 | *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT; | 72 | *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT; |
66 | goto bail; | 73 | goto bail; |
67 | } | 74 | } |
68 | 75 | ||
69 | if (fread(&fixed_header, 1, 1, f) != 1) goto bail; | 76 | position++; /* skipping one byte */ |
70 | if (read_mb(&w, f) < 0) goto bail; | 77 | if (read_mb(&w, map, length, &position) < 0) goto bail; |
71 | if (read_mb(&h, f) < 0) goto bail; | 78 | if (read_mb(&h, map, length, &position) < 0) goto bail; |
72 | if ((w < 1) || (h < 1) || (w > IMG_MAX_SIZE) || (h > IMG_MAX_SIZE) || | 79 | if ((w < 1) || (h < 1) || (w > IMG_MAX_SIZE) || (h > IMG_MAX_SIZE) || |
73 | IMG_TOO_BIG(w, h)) | 80 | IMG_TOO_BIG(w, h)) |
74 | { | 81 | { |
75 | *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; | 82 | *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; |
76 | goto bail; | 83 | goto bail; |
77 | } | 84 | } |
78 | 85 | ||
79 | fclose(f); | 86 | eina_file_map_free(f, map); |
87 | eina_file_close(f); | ||
80 | ie->w = w; | 88 | ie->w = w; |
81 | ie->h = h; | 89 | ie->h = h; |
82 | 90 | ||
83 | *error = EVAS_LOAD_ERROR_NONE; | 91 | *error = EVAS_LOAD_ERROR_NONE; |
84 | return EINA_TRUE; | 92 | return EINA_TRUE; |
85 | bail: | 93 | bail: |
86 | fclose(f); | 94 | if (map) eina_file_map_free(f, map); |
95 | eina_file_close(f); | ||
87 | return EINA_FALSE; | 96 | return EINA_FALSE; |
88 | } | 97 | } |
89 | 98 | ||
90 | static Eina_Bool | 99 | static Eina_Bool |
91 | evas_image_load_file_data_wbmp(Image_Entry *ie, const char *file, const char *key __UNUSED__, int *error) | 100 | evas_image_load_file_data_wbmp(Image_Entry *ie, const char *file, const char *key __UNUSED__, int *error) |
92 | { | 101 | { |
93 | FILE *f; | 102 | Eina_File *f; |
94 | unsigned int dummy, line_length; | 103 | void *map = NULL; |
104 | size_t position = 0; | ||
105 | size_t length; | ||
106 | unsigned int type, w, h; | ||
107 | unsigned int line_length; | ||
95 | unsigned char *line = NULL; | 108 | unsigned char *line = NULL; |
96 | int cur = 0, x, y; | 109 | int cur = 0, x, y; |
97 | DATA32 *dst_data; | 110 | DATA32 *dst_data; |
98 | 111 | ||
99 | *error = EVAS_LOAD_ERROR_GENERIC; | 112 | *error = EVAS_LOAD_ERROR_GENERIC; |
100 | f = fopen(file, "rb"); | 113 | f = eina_file_open(file, EINA_FALSE); |
101 | if (!f) | 114 | if (!f) |
102 | { | 115 | { |
103 | *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; | 116 | *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; |
104 | return EINA_FALSE; | 117 | return EINA_FALSE; |
105 | } | 118 | } |
106 | if (read_mb(&dummy, f) < 0) goto bail; | 119 | |
107 | if (fread(&dummy, 1, 1, f) != 1) goto bail; | 120 | length = eina_file_size_get(f); |
108 | if (read_mb(&dummy, f) < 0) goto bail; | 121 | if (length <= 4) goto bail; |
109 | if (read_mb(&dummy, f) < 0) goto bail; | 122 | |
110 | 123 | map = eina_file_map_all(f, EINA_FILE_SEQUENTIAL); | |
124 | if (!map) goto bail; | ||
125 | |||
126 | if (read_mb(&type, map, length, &position) < 0) goto bail; | ||
127 | position++; /* skipping one byte */ | ||
128 | if (read_mb(&w, map, length, &position) < 0) goto bail; | ||
129 | if (read_mb(&h, map, length, &position) < 0) goto bail; | ||
130 | |||
131 | if (type != 0) | ||
132 | { | ||
133 | *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT; | ||
134 | goto bail; | ||
135 | } | ||
136 | |||
137 | if ((w < 1) || (h < 1) || (w > IMG_MAX_SIZE) || (h > IMG_MAX_SIZE) || | ||
138 | IMG_TOO_BIG(w, h)) | ||
139 | { | ||
140 | *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; | ||
141 | goto bail; | ||
142 | } | ||
143 | |||
144 | ie->w = w; | ||
145 | ie->h = h; | ||
146 | |||
111 | evas_cache_image_surface_alloc(ie, ie->w, ie->h); | 147 | evas_cache_image_surface_alloc(ie, ie->w, ie->h); |
112 | dst_data = evas_cache_image_pixels(ie); | 148 | dst_data = evas_cache_image_pixels(ie); |
113 | if (!dst_data) | 149 | if (!dst_data) |
@@ -115,13 +151,14 @@ evas_image_load_file_data_wbmp(Image_Entry *ie, const char *file, const char *ke | |||
115 | *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; | 151 | *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; |
116 | goto bail; | 152 | goto bail; |
117 | } | 153 | } |
118 | 154 | ||
119 | line_length = (ie->w + 7) >> 3; | 155 | line_length = (ie->w + 7) >> 3; |
120 | line = alloca(line_length); | 156 | |
121 | |||
122 | for (y = 0; y < (int)ie->h; y++) | 157 | for (y = 0; y < (int)ie->h; y++) |
123 | { | 158 | { |
124 | if (fread(line, 1, line_length, f) != line_length) goto bail; | 159 | if (position + line_length > length) goto bail; |
160 | line = ((unsigned char*) map) + position; | ||
161 | position += line_length; | ||
125 | for (x = 0; x < (int)ie->w; x++) | 162 | for (x = 0; x < (int)ie->w; x++) |
126 | { | 163 | { |
127 | int idx = x >> 3; | 164 | int idx = x >> 3; |
@@ -131,11 +168,13 @@ evas_image_load_file_data_wbmp(Image_Entry *ie, const char *file, const char *ke | |||
131 | cur++; | 168 | cur++; |
132 | } | 169 | } |
133 | } | 170 | } |
134 | fclose(f); | 171 | eina_file_map_free(f, map); |
172 | eina_file_close(f); | ||
135 | *error = EVAS_LOAD_ERROR_NONE; | 173 | *error = EVAS_LOAD_ERROR_NONE; |
136 | return EINA_TRUE; | 174 | return EINA_TRUE; |
137 | bail: | 175 | bail: |
138 | fclose(f); | 176 | if (map) eina_file_map_free(f, map); |
177 | eina_file_close(f); | ||
139 | return EINA_FALSE; | 178 | return EINA_FALSE; |
140 | } | 179 | } |
141 | 180 | ||
diff --git a/libraries/evas/src/modules/loaders/xpm/Makefile.in b/libraries/evas/src/modules/loaders/xpm/Makefile.in index eba8f60..6383d9e 100644 --- a/libraries/evas/src/modules/loaders/xpm/Makefile.in +++ b/libraries/evas/src/modules/loaders/xpm/Makefile.in | |||
@@ -231,8 +231,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
232 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 232 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
233 | PKG_CONFIG = @PKG_CONFIG@ | 233 | PKG_CONFIG = @PKG_CONFIG@ |
234 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
235 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
236 | PNG_CFLAGS = @PNG_CFLAGS@ | 234 | PNG_CFLAGS = @PNG_CFLAGS@ |
237 | PNG_LIBS = @PNG_LIBS@ | 235 | PNG_LIBS = @PNG_LIBS@ |
238 | RANLIB = @RANLIB@ | 236 | RANLIB = @RANLIB@ |
@@ -249,6 +247,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
249 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 247 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
250 | VERSION = @VERSION@ | 248 | VERSION = @VERSION@ |
251 | VMAJ = @VMAJ@ | 249 | VMAJ = @VMAJ@ |
250 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
251 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
252 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 252 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
254 | XCB_CFLAGS = @XCB_CFLAGS@ | 254 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -330,6 +330,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
333 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
334 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
335 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
336 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
333 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 337 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
334 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 338 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
335 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 339 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/loaders/xpm/evas_image_load_xpm.c b/libraries/evas/src/modules/loaders/xpm/evas_image_load_xpm.c index 3a04f84..c764f6d 100644 --- a/libraries/evas/src/modules/loaders/xpm/evas_image_load_xpm.c +++ b/libraries/evas/src/modules/loaders/xpm/evas_image_load_xpm.c | |||
@@ -24,16 +24,20 @@ static Evas_Image_Load_Func evas_image_load_xpm_func = | |||
24 | EINA_FALSE, | 24 | EINA_FALSE, |
25 | evas_image_load_file_head_xpm, | 25 | evas_image_load_file_head_xpm, |
26 | evas_image_load_file_data_xpm, | 26 | evas_image_load_file_data_xpm, |
27 | NULL | 27 | NULL, |
28 | EINA_FALSE | ||
28 | }; | 29 | }; |
29 | 30 | ||
30 | // TODO: REWRITE THIS WITH THREAD SAFE VERSION NOT USING THIS HANDLE!!!! | 31 | static Eina_File *rgb_txt; |
31 | static FILE *rgb_txt = NULL; | 32 | static void *rgb_txt_map; |
32 | 33 | ||
33 | static void | 34 | static void |
34 | xpm_parse_color(char *color, int *r, int *g, int *b) | 35 | xpm_parse_color(char *color, int *r, int *g, int *b) |
35 | { | 36 | { |
36 | char buf[4096]; | 37 | char *tmp; |
38 | char *max; | ||
39 | char *endline; | ||
40 | char buf[4096]; | ||
37 | 41 | ||
38 | /* is a #ff00ff like color */ | 42 | /* is a #ff00ff like color */ |
39 | if (color[0] == '#') | 43 | if (color[0] == '#') |
@@ -75,20 +79,23 @@ xpm_parse_color(char *color, int *r, int *g, int *b) | |||
75 | return; | 79 | return; |
76 | } | 80 | } |
77 | /* look in rgb txt database */ | 81 | /* look in rgb txt database */ |
78 | if (!rgb_txt) rgb_txt = fopen("/usr/lib/X11/rgb.txt", "r"); | ||
79 | if (!rgb_txt) rgb_txt = fopen("/usr/X11/lib/X11/rgb.txt", "r"); | ||
80 | if (!rgb_txt) rgb_txt = fopen("/usr/X11R6/lib/X11/rgb.txt", "r"); | ||
81 | if (!rgb_txt) rgb_txt = fopen("/usr/openwin/lib/X11/rgb.txt", "r"); | ||
82 | if (!rgb_txt) return; | 82 | if (!rgb_txt) return; |
83 | fseek(rgb_txt, 0, SEEK_SET); | 83 | tmp = rgb_txt_map; |
84 | while (fgets(buf, sizeof(buf), rgb_txt)) | 84 | max = tmp + eina_file_size_get(rgb_txt); |
85 | |||
86 | while (tmp < max) | ||
85 | { | 87 | { |
86 | buf[sizeof(buf) - 1] = 0; | 88 | endline = memchr(tmp, '\n', max - tmp); |
87 | if (buf[0] != '!') | 89 | if (!endline) endline = max; |
90 | if ((*tmp != '!') && ((endline - tmp) < (int) (sizeof(buf) - 1))) | ||
88 | { | 91 | { |
89 | int rr, gg, bb; | 92 | int rr, gg, bb; |
90 | char name[4096]; | 93 | char name[4096]; |
91 | 94 | ||
95 | /* FIXME: not really efficient */ | ||
96 | memcpy(buf, tmp, endline - tmp); | ||
97 | buf[endline - tmp + 1] = '\0'; | ||
98 | |||
92 | if (sscanf(buf, "%i %i %i %[^\n]", &rr, &gg, &bb, name) == 4) | 99 | if (sscanf(buf, "%i %i %i %[^\n]", &rr, &gg, &bb, name) == 4) |
93 | { | 100 | { |
94 | if (!strcasecmp(name, color)) | 101 | if (!strcasecmp(name, color)) |
@@ -100,33 +107,30 @@ xpm_parse_color(char *color, int *r, int *g, int *b) | |||
100 | } | 107 | } |
101 | } | 108 | } |
102 | } | 109 | } |
110 | tmp = endline + 1; | ||
103 | } | 111 | } |
104 | } | 112 | } |
105 | 113 | ||
106 | static void | ||
107 | xpm_parse_done(void) | ||
108 | { | ||
109 | if (rgb_txt) fclose(rgb_txt); | ||
110 | rgb_txt = NULL; | ||
111 | } | ||
112 | |||
113 | |||
114 | /** FIXME: clean this up and make more efficient **/ | 114 | /** FIXME: clean this up and make more efficient **/ |
115 | static Eina_Bool | 115 | static Eina_Bool |
116 | evas_image_load_file_xpm(Image_Entry *ie, const char *file, const char *key __UNUSED__, int load_data, int *error) | 116 | evas_image_load_file_xpm(Image_Entry *ie, const char *file, const char *key __UNUSED__, int load_data, int *error) |
117 | { | 117 | { |
118 | DATA32 *ptr, *end; | 118 | DATA32 *ptr, *end; |
119 | FILE *f; | 119 | Eina_File *f; |
120 | const char *map; | ||
121 | size_t length; | ||
122 | size_t position; | ||
120 | 123 | ||
121 | int pc, c, i, j, k, w, h, ncolors, cpp, comment, transp, | 124 | int pc, c, i, j, k, w, h, ncolors, cpp, comment, transp, |
122 | quote, context, len, done, r, g, b, backslash, lu1, lu2; | 125 | quote, context, len, done, r, g, b, backslash, lu1, lu2; |
123 | char *line, s[256], tok[128], col[256], *tl; | 126 | char *line = NULL; |
127 | char s[256], tok[128], col[256], *tl; | ||
124 | int lsz = 256; | 128 | int lsz = 256; |
125 | struct _cmap { | 129 | struct _cmap { |
126 | char str[6]; | 130 | char str[6]; |
127 | unsigned char transp; | 131 | unsigned char transp; |
128 | short r, g, b; | 132 | short r, g, b; |
129 | } *cmap; | 133 | } *cmap = NULL; |
130 | 134 | ||
131 | short lookup[128 - 32][128 - 32]; | 135 | short lookup[128 - 32][128 - 32]; |
132 | int count, pixels; | 136 | int count, pixels; |
@@ -138,30 +142,39 @@ evas_image_load_file_xpm(Image_Entry *ie, const char *file, const char *key __UN | |||
138 | /* if immediate_load is 1, then dont delay image laoding as below, or */ | 142 | /* if immediate_load is 1, then dont delay image laoding as below, or */ |
139 | /* already data in this image - dont load it again */ | 143 | /* already data in this image - dont load it again */ |
140 | 144 | ||
141 | f = fopen(file, "rb"); | 145 | f = eina_file_open(file, 0); |
142 | if (!f) | 146 | if (!f) |
143 | { | 147 | { |
144 | xpm_parse_done(); | 148 | ERR("XPM ERROR: file failed to open"); |
145 | *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; | 149 | *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; |
146 | return EINA_FALSE; | 150 | return EINA_FALSE; |
147 | } | 151 | } |
148 | if (fread(s, 9, 1, f) != 1) | 152 | length = eina_file_size_get(f); |
153 | position = 0; | ||
154 | if (length < 9) | ||
149 | { | 155 | { |
150 | fclose(f); | 156 | ERR("XPM ERROR: file size, %i, is to small", length); |
151 | xpm_parse_done(); | 157 | eina_file_close(f); |
152 | *error = EVAS_LOAD_ERROR_CORRUPT_FILE; | 158 | *error = EVAS_LOAD_ERROR_CORRUPT_FILE; |
153 | return EINA_FALSE; | 159 | return EINA_FALSE; |
154 | } | 160 | } |
155 | rewind(f); | 161 | |
156 | s[9] = 0; | 162 | map = eina_file_map_all(f, EINA_FILE_SEQUENTIAL); |
157 | if (strcmp("/* XPM */", s)) | 163 | if (!map) |
158 | { | 164 | { |
159 | fclose(f); | 165 | ERR("XPM ERROR: file failed to mmap"); |
160 | xpm_parse_done(); | 166 | eina_file_close(f); |
161 | *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT; | 167 | *error = EVAS_LOAD_ERROR_CORRUPT_FILE; |
162 | return EINA_FALSE; | 168 | return EINA_FALSE; |
163 | } | 169 | } |
164 | 170 | ||
171 | if (strncmp("/* XPM */", map, 9)) | ||
172 | { | ||
173 | ERR("XPM ERROR: header not found"); | ||
174 | *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT; | ||
175 | goto on_error; | ||
176 | } | ||
177 | |||
165 | i = 0; | 178 | i = 0; |
166 | j = 0; | 179 | j = 0; |
167 | cmap = NULL; | 180 | cmap = NULL; |
@@ -178,10 +191,8 @@ evas_image_load_file_xpm(Image_Entry *ie, const char *file, const char *key __UN | |||
178 | line = malloc(lsz); | 191 | line = malloc(lsz); |
179 | if (!line) | 192 | if (!line) |
180 | { | 193 | { |
181 | fclose(f); | ||
182 | xpm_parse_done(); | ||
183 | *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; | 194 | *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; |
184 | return EINA_FALSE; | 195 | goto on_error; |
185 | } | 196 | } |
186 | 197 | ||
187 | backslash = 0; | 198 | backslash = 0; |
@@ -189,8 +200,8 @@ evas_image_load_file_xpm(Image_Entry *ie, const char *file, const char *key __UN | |||
189 | while (!done) | 200 | while (!done) |
190 | { | 201 | { |
191 | pc = c; | 202 | pc = c; |
192 | c = fgetc(f); | 203 | if (position == length) break ; |
193 | if (c == EOF) break; | 204 | c = (char) map[position++]; |
194 | if (!quote) | 205 | if (!quote) |
195 | { | 206 | { |
196 | if ((pc == '/') && (c == '*')) | 207 | if ((pc == '/') && (c == '*')) |
@@ -215,56 +226,38 @@ evas_image_load_file_xpm(Image_Entry *ie, const char *file, const char *key __UN | |||
215 | if (sscanf(line, "%i %i %i %i", &w, &h, &ncolors, &cpp) != 4) | 226 | if (sscanf(line, "%i %i %i %i", &w, &h, &ncolors, &cpp) != 4) |
216 | { | 227 | { |
217 | ERR("XPM ERROR: XPM file malformed header"); | 228 | ERR("XPM ERROR: XPM file malformed header"); |
218 | free(line); | ||
219 | fclose(f); | ||
220 | xpm_parse_done(); | ||
221 | *error = EVAS_LOAD_ERROR_CORRUPT_FILE; | 229 | *error = EVAS_LOAD_ERROR_CORRUPT_FILE; |
222 | return EINA_FALSE; | 230 | goto on_error; |
223 | } | 231 | } |
224 | if ((ncolors > 32766) || (ncolors < 1)) | 232 | if ((ncolors > 32766) || (ncolors < 1)) |
225 | { | 233 | { |
226 | ERR("XPM ERROR: XPM files with colors > 32766 or < 1 not supported"); | 234 | ERR("XPM ERROR: XPM files with colors > 32766 or < 1 not supported"); |
227 | free(line); | ||
228 | fclose(f); | ||
229 | xpm_parse_done(); | ||
230 | *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT; | 235 | *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT; |
231 | return EINA_FALSE; | 236 | goto on_error; |
232 | } | 237 | } |
233 | if ((cpp > 5) || (cpp < 1)) | 238 | if ((cpp > 5) || (cpp < 1)) |
234 | { | 239 | { |
235 | ERR("XPM ERROR: XPM files with characters per pixel > 5 or < 1not supported"); | 240 | ERR("XPM ERROR: XPM files with characters per pixel > 5 or < 1not supported"); |
236 | free(line); | ||
237 | fclose(f); | ||
238 | xpm_parse_done(); | ||
239 | *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT; | 241 | *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT; |
240 | return EINA_FALSE; | 242 | goto on_error; |
241 | } | 243 | } |
242 | if ((w > IMG_MAX_SIZE) || (w < 1)) | 244 | if ((w > IMG_MAX_SIZE) || (w < 1)) |
243 | { | 245 | { |
244 | ERR("XPM ERROR: Image width > IMG_MAX_SIZE or < 1 pixels for file"); | 246 | ERR("XPM ERROR: Image width > IMG_MAX_SIZE or < 1 pixels for file"); |
245 | free(line); | ||
246 | fclose(f); | ||
247 | xpm_parse_done(); | ||
248 | *error = EVAS_LOAD_ERROR_GENERIC; | 247 | *error = EVAS_LOAD_ERROR_GENERIC; |
249 | return EINA_FALSE; | 248 | goto on_error; |
250 | } | 249 | } |
251 | if ((h > IMG_MAX_SIZE) || (h < 1)) | 250 | if ((h > IMG_MAX_SIZE) || (h < 1)) |
252 | { | 251 | { |
253 | ERR("XPM ERROR: Image height > IMG_MAX_SIZE or < 1 pixels for file"); | 252 | ERR("XPM ERROR: Image height > IMG_MAX_SIZE or < 1 pixels for file"); |
254 | free(line); | ||
255 | fclose(f); | ||
256 | xpm_parse_done(); | ||
257 | *error = EVAS_LOAD_ERROR_GENERIC; | 253 | *error = EVAS_LOAD_ERROR_GENERIC; |
258 | return EINA_FALSE; | 254 | goto on_error; |
259 | } | 255 | } |
260 | if (IMG_TOO_BIG(w, h)) | 256 | if (IMG_TOO_BIG(w, h)) |
261 | { | 257 | { |
262 | ERR("XPM ERROR: Image just too big to ever allocate"); | 258 | ERR("XPM ERROR: Image just too big to ever allocate"); |
263 | free(line); | ||
264 | fclose(f); | ||
265 | xpm_parse_done(); | ||
266 | *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; | 259 | *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; |
267 | return EINA_FALSE; | 260 | goto on_error; |
268 | } | 261 | } |
269 | 262 | ||
270 | if (!cmap) | 263 | if (!cmap) |
@@ -272,11 +265,8 @@ evas_image_load_file_xpm(Image_Entry *ie, const char *file, const char *key __UN | |||
272 | cmap = malloc(sizeof(struct _cmap) * ncolors); | 265 | cmap = malloc(sizeof(struct _cmap) * ncolors); |
273 | if (!cmap) | 266 | if (!cmap) |
274 | { | 267 | { |
275 | free(line); | ||
276 | fclose(f); | ||
277 | xpm_parse_done(); | ||
278 | *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; | 268 | *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; |
279 | return EINA_FALSE; | 269 | goto on_error; |
280 | } | 270 | } |
281 | } | 271 | } |
282 | ie->w = w; | 272 | ie->w = w; |
@@ -398,24 +388,16 @@ evas_image_load_file_xpm(Image_Entry *ie, const char *file, const char *key __UN | |||
398 | ptr = evas_cache_image_pixels(ie); | 388 | ptr = evas_cache_image_pixels(ie); |
399 | if (!ptr) | 389 | if (!ptr) |
400 | { | 390 | { |
401 | free(cmap); | ||
402 | free(line); | ||
403 | fclose(f); | ||
404 | xpm_parse_done(); | ||
405 | *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; | 391 | *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; |
406 | return EINA_FALSE; | 392 | goto on_error; |
407 | } | 393 | } |
408 | pixels = w * h; | 394 | pixels = w * h; |
409 | end = ptr + pixels; | 395 | end = ptr + pixels; |
410 | } | 396 | } |
411 | else | 397 | else |
412 | { | 398 | { |
413 | free(cmap); | ||
414 | free(line); | ||
415 | fclose(f); | ||
416 | xpm_parse_done(); | ||
417 | *error = EVAS_LOAD_ERROR_NONE; | 399 | *error = EVAS_LOAD_ERROR_NONE; |
418 | return EINA_TRUE; | 400 | goto on_success; |
419 | } | 401 | } |
420 | } | 402 | } |
421 | else | 403 | else |
@@ -631,13 +613,21 @@ evas_image_load_file_xpm(Image_Entry *ie, const char *file, const char *key __UN | |||
631 | break; | 613 | break; |
632 | } | 614 | } |
633 | 615 | ||
616 | on_success: | ||
634 | free(cmap); | 617 | free(cmap); |
635 | free(line); | 618 | free(line); |
636 | fclose(f); | ||
637 | 619 | ||
638 | xpm_parse_done(); | 620 | eina_file_map_free(f, (void*) map); |
621 | eina_file_close(f); | ||
622 | |||
639 | *error = EVAS_LOAD_ERROR_NONE; | 623 | *error = EVAS_LOAD_ERROR_NONE; |
640 | return EINA_TRUE; | 624 | return EINA_TRUE; |
625 | |||
626 | on_error: | ||
627 | free(line); | ||
628 | eina_file_map_free(f, (void*) map); | ||
629 | eina_file_close(f); | ||
630 | return EINA_FALSE; | ||
641 | } | 631 | } |
642 | 632 | ||
643 | static Eina_Bool | 633 | static Eina_Bool |
@@ -663,6 +653,14 @@ module_open(Evas_Module *em) | |||
663 | EINA_LOG_ERR("Can not create a module log domain."); | 653 | EINA_LOG_ERR("Can not create a module log domain."); |
664 | return 0; | 654 | return 0; |
665 | } | 655 | } |
656 | |||
657 | /* Shouldn't we make that PATH configurable ? */ | ||
658 | rgb_txt = eina_file_open("/usr/lib/X11/rgb.txt", 0); | ||
659 | if (!rgb_txt) rgb_txt = eina_file_open("/usr/X11/lib/X11/rgb.txt", 0); | ||
660 | if (!rgb_txt) rgb_txt = eina_file_open("/usr/X11R6/lib/X11/rgb.txt", 0); | ||
661 | if (!rgb_txt) rgb_txt = eina_file_open("/usr/openwin/lib/X11/rgb.txt", 0); | ||
662 | if (rgb_txt) | ||
663 | rgb_txt_map = eina_file_map_all(rgb_txt, EINA_FILE_SEQUENTIAL); | ||
666 | em->functions = (void *)(&evas_image_load_xpm_func); | 664 | em->functions = (void *)(&evas_image_load_xpm_func); |
667 | return 1; | 665 | return 1; |
668 | } | 666 | } |
@@ -670,6 +668,12 @@ module_open(Evas_Module *em) | |||
670 | static void | 668 | static void |
671 | module_close(Evas_Module *em __UNUSED__) | 669 | module_close(Evas_Module *em __UNUSED__) |
672 | { | 670 | { |
671 | if (rgb_txt) | ||
672 | { | ||
673 | eina_file_map_free(rgb_txt, rgb_txt_map); | ||
674 | eina_file_close(rgb_txt); | ||
675 | rgb_txt = NULL; | ||
676 | } | ||
673 | eina_log_domain_unregister(_evas_loader_xpm_log_dom); | 677 | eina_log_domain_unregister(_evas_loader_xpm_log_dom); |
674 | } | 678 | } |
675 | 679 | ||
diff --git a/libraries/evas/src/modules/savers/Makefile.in b/libraries/evas/src/modules/savers/Makefile.in index 6d64b4c..28236d9 100644 --- a/libraries/evas/src/modules/savers/Makefile.in +++ b/libraries/evas/src/modules/savers/Makefile.in | |||
@@ -211,8 +211,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
211 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 211 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
212 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 212 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
213 | PKG_CONFIG = @PKG_CONFIG@ | 213 | PKG_CONFIG = @PKG_CONFIG@ |
214 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
215 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
216 | PNG_CFLAGS = @PNG_CFLAGS@ | 214 | PNG_CFLAGS = @PNG_CFLAGS@ |
217 | PNG_LIBS = @PNG_LIBS@ | 215 | PNG_LIBS = @PNG_LIBS@ |
218 | RANLIB = @RANLIB@ | 216 | RANLIB = @RANLIB@ |
@@ -229,6 +227,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
229 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 227 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
230 | VERSION = @VERSION@ | 228 | VERSION = @VERSION@ |
231 | VMAJ = @VMAJ@ | 229 | VMAJ = @VMAJ@ |
230 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
231 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
232 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 232 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
233 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 233 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
234 | XCB_CFLAGS = @XCB_CFLAGS@ | 234 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -310,6 +310,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
310 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 310 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
311 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 311 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
312 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 312 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
313 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
314 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
315 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
316 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
313 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 317 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
314 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 318 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
315 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 319 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/savers/edb/Makefile.in b/libraries/evas/src/modules/savers/edb/Makefile.in index e319b56..2ed29ec 100644 --- a/libraries/evas/src/modules/savers/edb/Makefile.in +++ b/libraries/evas/src/modules/savers/edb/Makefile.in | |||
@@ -231,8 +231,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
232 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 232 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
233 | PKG_CONFIG = @PKG_CONFIG@ | 233 | PKG_CONFIG = @PKG_CONFIG@ |
234 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
235 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
236 | PNG_CFLAGS = @PNG_CFLAGS@ | 234 | PNG_CFLAGS = @PNG_CFLAGS@ |
237 | PNG_LIBS = @PNG_LIBS@ | 235 | PNG_LIBS = @PNG_LIBS@ |
238 | RANLIB = @RANLIB@ | 236 | RANLIB = @RANLIB@ |
@@ -249,6 +247,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
249 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 247 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
250 | VERSION = @VERSION@ | 248 | VERSION = @VERSION@ |
251 | VMAJ = @VMAJ@ | 249 | VMAJ = @VMAJ@ |
250 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
251 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
252 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 252 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
254 | XCB_CFLAGS = @XCB_CFLAGS@ | 254 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -330,6 +330,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
333 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
334 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
335 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
336 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
333 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 337 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
334 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 338 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
335 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 339 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/savers/eet/Makefile.in b/libraries/evas/src/modules/savers/eet/Makefile.in index c80e946..6564c18 100644 --- a/libraries/evas/src/modules/savers/eet/Makefile.in +++ b/libraries/evas/src/modules/savers/eet/Makefile.in | |||
@@ -231,8 +231,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
232 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 232 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
233 | PKG_CONFIG = @PKG_CONFIG@ | 233 | PKG_CONFIG = @PKG_CONFIG@ |
234 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
235 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
236 | PNG_CFLAGS = @PNG_CFLAGS@ | 234 | PNG_CFLAGS = @PNG_CFLAGS@ |
237 | PNG_LIBS = @PNG_LIBS@ | 235 | PNG_LIBS = @PNG_LIBS@ |
238 | RANLIB = @RANLIB@ | 236 | RANLIB = @RANLIB@ |
@@ -249,6 +247,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
249 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 247 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
250 | VERSION = @VERSION@ | 248 | VERSION = @VERSION@ |
251 | VMAJ = @VMAJ@ | 249 | VMAJ = @VMAJ@ |
250 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
251 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
252 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 252 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
254 | XCB_CFLAGS = @XCB_CFLAGS@ | 254 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -330,6 +330,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
333 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
334 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
335 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
336 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
333 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 337 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
334 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 338 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
335 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 339 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/savers/jpeg/Makefile.in b/libraries/evas/src/modules/savers/jpeg/Makefile.in index 3c1bd8b..e57c4f9 100644 --- a/libraries/evas/src/modules/savers/jpeg/Makefile.in +++ b/libraries/evas/src/modules/savers/jpeg/Makefile.in | |||
@@ -231,8 +231,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
232 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 232 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
233 | PKG_CONFIG = @PKG_CONFIG@ | 233 | PKG_CONFIG = @PKG_CONFIG@ |
234 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
235 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
236 | PNG_CFLAGS = @PNG_CFLAGS@ | 234 | PNG_CFLAGS = @PNG_CFLAGS@ |
237 | PNG_LIBS = @PNG_LIBS@ | 235 | PNG_LIBS = @PNG_LIBS@ |
238 | RANLIB = @RANLIB@ | 236 | RANLIB = @RANLIB@ |
@@ -249,6 +247,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
249 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 247 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
250 | VERSION = @VERSION@ | 248 | VERSION = @VERSION@ |
251 | VMAJ = @VMAJ@ | 249 | VMAJ = @VMAJ@ |
250 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
251 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
252 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 252 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
254 | XCB_CFLAGS = @XCB_CFLAGS@ | 254 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -330,6 +330,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
333 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
334 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
335 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
336 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
333 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 337 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
334 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 338 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
335 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 339 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/savers/png/Makefile.in b/libraries/evas/src/modules/savers/png/Makefile.in index 3b905a5..da04ff2 100644 --- a/libraries/evas/src/modules/savers/png/Makefile.in +++ b/libraries/evas/src/modules/savers/png/Makefile.in | |||
@@ -231,8 +231,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
232 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 232 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
233 | PKG_CONFIG = @PKG_CONFIG@ | 233 | PKG_CONFIG = @PKG_CONFIG@ |
234 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
235 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
236 | PNG_CFLAGS = @PNG_CFLAGS@ | 234 | PNG_CFLAGS = @PNG_CFLAGS@ |
237 | PNG_LIBS = @PNG_LIBS@ | 235 | PNG_LIBS = @PNG_LIBS@ |
238 | RANLIB = @RANLIB@ | 236 | RANLIB = @RANLIB@ |
@@ -249,6 +247,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
249 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 247 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
250 | VERSION = @VERSION@ | 248 | VERSION = @VERSION@ |
251 | VMAJ = @VMAJ@ | 249 | VMAJ = @VMAJ@ |
250 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
251 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
252 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 252 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
254 | XCB_CFLAGS = @XCB_CFLAGS@ | 254 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -330,6 +330,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
333 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
334 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
335 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
336 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
333 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 337 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
334 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 338 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
335 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 339 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/modules/savers/tiff/Makefile.in b/libraries/evas/src/modules/savers/tiff/Makefile.in index 27acddd..8f4411f 100644 --- a/libraries/evas/src/modules/savers/tiff/Makefile.in +++ b/libraries/evas/src/modules/savers/tiff/Makefile.in | |||
@@ -231,8 +231,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 231 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
232 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 232 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
233 | PKG_CONFIG = @PKG_CONFIG@ | 233 | PKG_CONFIG = @PKG_CONFIG@ |
234 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
235 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
236 | PNG_CFLAGS = @PNG_CFLAGS@ | 234 | PNG_CFLAGS = @PNG_CFLAGS@ |
237 | PNG_LIBS = @PNG_LIBS@ | 235 | PNG_LIBS = @PNG_LIBS@ |
238 | RANLIB = @RANLIB@ | 236 | RANLIB = @RANLIB@ |
@@ -249,6 +247,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
249 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 247 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
250 | VERSION = @VERSION@ | 248 | VERSION = @VERSION@ |
251 | VMAJ = @VMAJ@ | 249 | VMAJ = @VMAJ@ |
250 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
251 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
252 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 252 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 253 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
254 | XCB_CFLAGS = @XCB_CFLAGS@ | 254 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -330,6 +330,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 330 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 331 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 332 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
333 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
334 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
335 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
336 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
333 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 337 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
334 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 338 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
335 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 339 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/static_deps/Makefile.in b/libraries/evas/src/static_deps/Makefile.in index 94f534e..514e79c 100644 --- a/libraries/evas/src/static_deps/Makefile.in +++ b/libraries/evas/src/static_deps/Makefile.in | |||
@@ -207,8 +207,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
207 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 207 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
208 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 208 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
209 | PKG_CONFIG = @PKG_CONFIG@ | 209 | PKG_CONFIG = @PKG_CONFIG@ |
210 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
211 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
212 | PNG_CFLAGS = @PNG_CFLAGS@ | 210 | PNG_CFLAGS = @PNG_CFLAGS@ |
213 | PNG_LIBS = @PNG_LIBS@ | 211 | PNG_LIBS = @PNG_LIBS@ |
214 | RANLIB = @RANLIB@ | 212 | RANLIB = @RANLIB@ |
@@ -225,6 +223,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
225 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 223 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
226 | VERSION = @VERSION@ | 224 | VERSION = @VERSION@ |
227 | VMAJ = @VMAJ@ | 225 | VMAJ = @VMAJ@ |
226 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
227 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
228 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 228 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
229 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 229 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
230 | XCB_CFLAGS = @XCB_CFLAGS@ | 230 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -306,6 +306,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
306 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 306 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
307 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 307 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
308 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 308 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
309 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
310 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
311 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
312 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
309 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 313 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
310 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 314 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
311 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 315 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/static_deps/liblinebreak/AUTHORS b/libraries/evas/src/static_deps/liblinebreak/AUTHORS index 523106f..22786d4 100644 --- a/libraries/evas/src/static_deps/liblinebreak/AUTHORS +++ b/libraries/evas/src/static_deps/liblinebreak/AUTHORS | |||
@@ -4,3 +4,5 @@ Nikolay Pultsin. Put forward the original requirements on liblinebreak, | |||
4 | performed tests, and made a lot of suggestions on the initial versions. | 4 | performed tests, and made a lot of suggestions on the initial versions. |
5 | 5 | ||
6 | Thomas Klausner. Autoconfiscated and libtoolized liblinebreak. | 6 | Thomas Klausner. Autoconfiscated and libtoolized liblinebreak. |
7 | |||
8 | Tom Hacohen. Added word boundaries support. | ||
diff --git a/libraries/evas/src/static_deps/liblinebreak/Makefile.am b/libraries/evas/src/static_deps/liblinebreak/Makefile.am index f386455..68e9c4a 100644 --- a/libraries/evas/src/static_deps/liblinebreak/Makefile.am +++ b/libraries/evas/src/static_deps/liblinebreak/Makefile.am | |||
@@ -1,13 +1,15 @@ | |||
1 | MAINTAINERCLEANFILES = Makefile.in | 1 | MAINTAINERCLEANFILES = Makefile.in |
2 | 2 | ||
3 | #noinst_PROGRAMS = filter_dup | 3 | #noinst_PROGRAMS = filter_dup |
4 | noinst_HEADERS = linebreak.h linebreakdef.h | 4 | noinst_HEADERS = linebreak.h linebreakdef.h wordbreakdef.h wordbreak.h |
5 | noinst_LTLIBRARIES = liblinebreak.la | 5 | noinst_LTLIBRARIES = liblinebreak.la |
6 | 6 | ||
7 | liblinebreak_la_SOURCES = \ | 7 | liblinebreak_la_SOURCES = \ |
8 | linebreak.c \ | 8 | linebreak.c \ |
9 | linebreakdata.c \ | 9 | linebreakdata.c \ |
10 | linebreakdef.c | 10 | linebreakdef.c \ |
11 | wordbreak.c \ | ||
12 | wordbreakdata.x | ||
11 | 13 | ||
12 | EXTRA_DIST = \ | 14 | EXTRA_DIST = \ |
13 | LineBreak1.sed \ | 15 | LineBreak1.sed \ |
diff --git a/libraries/evas/src/static_deps/liblinebreak/Makefile.in b/libraries/evas/src/static_deps/liblinebreak/Makefile.in index 909f75e..9d44327 100644 --- a/libraries/evas/src/static_deps/liblinebreak/Makefile.in +++ b/libraries/evas/src/static_deps/liblinebreak/Makefile.in | |||
@@ -61,7 +61,7 @@ CONFIG_CLEAN_VPATH_FILES = | |||
61 | LTLIBRARIES = $(noinst_LTLIBRARIES) | 61 | LTLIBRARIES = $(noinst_LTLIBRARIES) |
62 | liblinebreak_la_LIBADD = | 62 | liblinebreak_la_LIBADD = |
63 | am_liblinebreak_la_OBJECTS = linebreak.lo linebreakdata.lo \ | 63 | am_liblinebreak_la_OBJECTS = linebreak.lo linebreakdata.lo \ |
64 | linebreakdef.lo | 64 | linebreakdef.lo wordbreak.lo |
65 | liblinebreak_la_OBJECTS = $(am_liblinebreak_la_OBJECTS) | 65 | liblinebreak_la_OBJECTS = $(am_liblinebreak_la_OBJECTS) |
66 | AM_V_lt = $(am__v_lt_$(V)) | 66 | AM_V_lt = $(am__v_lt_$(V)) |
67 | am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) | 67 | am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) |
@@ -200,8 +200,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
200 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 200 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
201 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 201 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
202 | PKG_CONFIG = @PKG_CONFIG@ | 202 | PKG_CONFIG = @PKG_CONFIG@ |
203 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
204 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
205 | PNG_CFLAGS = @PNG_CFLAGS@ | 203 | PNG_CFLAGS = @PNG_CFLAGS@ |
206 | PNG_LIBS = @PNG_LIBS@ | 204 | PNG_LIBS = @PNG_LIBS@ |
207 | RANLIB = @RANLIB@ | 205 | RANLIB = @RANLIB@ |
@@ -218,6 +216,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
218 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 216 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
219 | VERSION = @VERSION@ | 217 | VERSION = @VERSION@ |
220 | VMAJ = @VMAJ@ | 218 | VMAJ = @VMAJ@ |
219 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
220 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
221 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 221 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
222 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 222 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
223 | XCB_CFLAGS = @XCB_CFLAGS@ | 223 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -299,6 +299,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
299 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 299 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
300 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 300 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
301 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 301 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
302 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
303 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
304 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
305 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
302 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 306 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
303 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 307 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
304 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 308 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
@@ -376,12 +380,14 @@ version_info = @version_info@ | |||
376 | MAINTAINERCLEANFILES = Makefile.in | 380 | MAINTAINERCLEANFILES = Makefile.in |
377 | 381 | ||
378 | #noinst_PROGRAMS = filter_dup | 382 | #noinst_PROGRAMS = filter_dup |
379 | noinst_HEADERS = linebreak.h linebreakdef.h | 383 | noinst_HEADERS = linebreak.h linebreakdef.h wordbreakdef.h wordbreak.h |
380 | noinst_LTLIBRARIES = liblinebreak.la | 384 | noinst_LTLIBRARIES = liblinebreak.la |
381 | liblinebreak_la_SOURCES = \ | 385 | liblinebreak_la_SOURCES = \ |
382 | linebreak.c \ | 386 | linebreak.c \ |
383 | linebreakdata.c \ | 387 | linebreakdata.c \ |
384 | linebreakdef.c | 388 | linebreakdef.c \ |
389 | wordbreak.c \ | ||
390 | wordbreakdata.x | ||
385 | 391 | ||
386 | EXTRA_DIST = \ | 392 | EXTRA_DIST = \ |
387 | LineBreak1.sed \ | 393 | LineBreak1.sed \ |
@@ -446,6 +452,7 @@ distclean-compile: | |||
446 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linebreak.Plo@am__quote@ | 452 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linebreak.Plo@am__quote@ |
447 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linebreakdata.Plo@am__quote@ | 453 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linebreakdata.Plo@am__quote@ |
448 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linebreakdef.Plo@am__quote@ | 454 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linebreakdef.Plo@am__quote@ |
455 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wordbreak.Plo@am__quote@ | ||
449 | 456 | ||
450 | .c.o: | 457 | .c.o: |
451 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< | 458 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< |
diff --git a/libraries/evas/src/static_deps/liblinebreak/wordbreak.c b/libraries/evas/src/static_deps/liblinebreak/wordbreak.c new file mode 100644 index 0000000..bbbb7f4 --- /dev/null +++ b/libraries/evas/src/static_deps/liblinebreak/wordbreak.c | |||
@@ -0,0 +1,435 @@ | |||
1 | /* vim: set tabstop=4 shiftwidth=4: */ | ||
2 | |||
3 | /* | ||
4 | * Word breaking in a Unicode sequence. Designed to be used in a | ||
5 | * generic text renderer. | ||
6 | * | ||
7 | * Copyright (C) 2011-2011 Tom Hacohen <tom@stosb.com> | ||
8 | * | ||
9 | * This software is provided 'as-is', without any express or implied | ||
10 | * warranty. In no event will the author be held liable for any damages | ||
11 | * arising from the use of this software. | ||
12 | * | ||
13 | * Permission is granted to anyone to use this software for any purpose, | ||
14 | * including commercial applications, and to alter it and redistribute | ||
15 | * it freely, subject to the following restrictions: | ||
16 | * | ||
17 | * 1. The origin of this software must not be misrepresented; you must | ||
18 | * not claim that you wrote the original software. If you use this | ||
19 | * software in a product, an acknowledgement in the product | ||
20 | * documentation would be appreciated but is not required. | ||
21 | * 2. Altered source versions must be plainly marked as such, and must | ||
22 | * not be misrepresented as being the original software. | ||
23 | * 3. This notice may not be removed or altered from any source | ||
24 | * distribution. | ||
25 | * | ||
26 | * The main reference is Unicode Standard Annex 29 (UAX #29): | ||
27 | * <URL:http://unicode.org/reports/tr29> | ||
28 | * | ||
29 | * When this library was designed, this annex was at Revision 17, for | ||
30 | * Unicode 6.0.0: | ||
31 | * <URL:http://www.unicode.org/reports/tr29/tr29-17.html> | ||
32 | * | ||
33 | * The Unicode Terms of Use are available at | ||
34 | * <URL:http://www.unicode.org/copyright.html> | ||
35 | */ | ||
36 | |||
37 | /** | ||
38 | * @file wordbreak.c | ||
39 | * | ||
40 | * Implementation of the word breaking algorithm as described in Unicode | ||
41 | * Standard Annex 29. | ||
42 | * | ||
43 | * @version 2.0, 2011/12/12 | ||
44 | * @author Tom Hacohen | ||
45 | */ | ||
46 | |||
47 | |||
48 | #include <assert.h> | ||
49 | #include <stddef.h> | ||
50 | #include <string.h> | ||
51 | #include "linebreak.h" | ||
52 | #include "linebreakdef.h" | ||
53 | |||
54 | #include "wordbreak.h" | ||
55 | #include "wordbreakdata.x" | ||
56 | |||
57 | #define ARRAY_LEN(x) (sizeof(x) / sizeof(x[0])) | ||
58 | |||
59 | /* Init the wordbreak internals. */ | ||
60 | void init_wordbreak(void) | ||
61 | { | ||
62 | /* Currently does nothing, may be needed in the future. */ | ||
63 | return; | ||
64 | } | ||
65 | |||
66 | /** | ||
67 | * Gets the word breaking class of a character. | ||
68 | * | ||
69 | * @param ch character to check | ||
70 | * @param wbp pointer to the wbp breaking properties array | ||
71 | * @param len the size of the wbp array in number of items. | ||
72 | * @return the word breaking class if found; \c WBP_Any otherwise | ||
73 | */ | ||
74 | static enum WordBreakClass get_char_wb_class( | ||
75 | utf32_t ch, | ||
76 | struct WordBreakProperties *wbp, | ||
77 | size_t len) | ||
78 | { | ||
79 | int min = 0; | ||
80 | int max = len - 1; | ||
81 | int mid; | ||
82 | |||
83 | do | ||
84 | { | ||
85 | mid = (min + max) / 2; | ||
86 | |||
87 | if (ch < wbp[mid].start) | ||
88 | max = mid - 1; | ||
89 | else if (ch > wbp[mid].end) | ||
90 | min = mid + 1; | ||
91 | else | ||
92 | return wbp[mid].prop; | ||
93 | } | ||
94 | while (min <= max); | ||
95 | |||
96 | return WBP_Any; | ||
97 | } | ||
98 | |||
99 | /** | ||
100 | * Sets the break types in brks starting from posLast up to posStop. | ||
101 | * | ||
102 | * It sets the inside chars to #WORDBREAK_INSIDECHAR and the rest to brkType. | ||
103 | * Assumes brks is initialized - all the cells with #WORDBREAK_NOBREAK are | ||
104 | * cells that we really don't want to break after. | ||
105 | * | ||
106 | * @param s the string | ||
107 | * @param brks[out] the breaks array to fill. | ||
108 | * @param posStart the start position | ||
109 | * @param posEnd the end position | ||
110 | * @param len the length of the string | ||
111 | * @param brkType the breaks type to use | ||
112 | * @param get_next_char function to get the next UTF-32 character | ||
113 | */ | ||
114 | static void set_brks_to(const void *s, | ||
115 | char *brks, | ||
116 | size_t posStart, | ||
117 | size_t posEnd, | ||
118 | size_t len, | ||
119 | char brkType, | ||
120 | get_next_char_t get_next_char) | ||
121 | { | ||
122 | size_t posCur = posStart; | ||
123 | while (posCur < posEnd) | ||
124 | { | ||
125 | get_next_char(s, len, &posCur); | ||
126 | for ( ; posStart < posCur - 1; ++posStart) | ||
127 | { | ||
128 | brks[posStart] = WORDBREAK_INSIDECHAR; | ||
129 | } | ||
130 | assert(posStart == posCur - 1); | ||
131 | |||
132 | /* Only set it if we haven't set it not to break before. */ | ||
133 | if (brks[posStart] != WORDBREAK_NOBREAK) | ||
134 | brks[posStart] = brkType; | ||
135 | posStart = posCur; | ||
136 | } | ||
137 | } | ||
138 | |||
139 | /* Checks to see if newline, cr, or lf. for WB3a and b */ | ||
140 | #define IS_WB3ab(cls) ((cls == WBP_Newline) || (cls == WBP_CR) || \ | ||
141 | (cls == WBP_LF)) | ||
142 | |||
143 | /** | ||
144 | * Sets the word breaking information for a generic input string. | ||
145 | * | ||
146 | * @param[in] s input string | ||
147 | * @param[in] len length of the input | ||
148 | * @param[in] lang language of the input | ||
149 | * @param[out] brks pointer to the output breaking data, containing | ||
150 | * #WORDBREAK_BREAK, #WORDBREAK_NOBREAK, or | ||
151 | * #WORDBREAK_INSIDEACHAR | ||
152 | * @param[in] get_next_char function to get the next UTF-32 character | ||
153 | */ | ||
154 | static void set_wordbreaks( | ||
155 | const void *s, | ||
156 | size_t len, | ||
157 | const char *lang, | ||
158 | char *brks, | ||
159 | get_next_char_t get_next_char) | ||
160 | { | ||
161 | /* Previous class */ | ||
162 | enum WordBreakClass p_cls = WBP_Undefined; | ||
163 | /* Strong previous class. */ | ||
164 | enum WordBreakClass sp_cls = WBP_Undefined; | ||
165 | utf32_t ch; | ||
166 | size_t posCur = 0; | ||
167 | size_t posCurSt = 0; | ||
168 | size_t posLast = 0; | ||
169 | |||
170 | /* FIXME: unused atm. */ | ||
171 | (void) lang; | ||
172 | |||
173 | |||
174 | /* Init brks */ | ||
175 | memset(brks, WORDBREAK_BREAK, len); | ||
176 | |||
177 | ch = get_next_char(s, len, &posCur); | ||
178 | |||
179 | /* WB3a, WB3b are implied. */ | ||
180 | for ( ; ch != EOS ; ) | ||
181 | { | ||
182 | /* Current class */ | ||
183 | enum WordBreakClass c_cls; | ||
184 | c_cls = get_char_wb_class(ch, wb_prop_default, | ||
185 | ARRAY_LEN(wb_prop_default)); | ||
186 | |||
187 | switch (c_cls) | ||
188 | { | ||
189 | case WBP_CR: | ||
190 | set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_BREAK, | ||
191 | get_next_char); | ||
192 | sp_cls = c_cls; | ||
193 | posLast = posCurSt; | ||
194 | break; | ||
195 | |||
196 | case WBP_LF: | ||
197 | if (sp_cls == WBP_CR) /* WB3 */ | ||
198 | { | ||
199 | set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_NOBREAK, | ||
200 | get_next_char); | ||
201 | sp_cls = c_cls; | ||
202 | posLast = posCurSt; | ||
203 | } | ||
204 | sp_cls = c_cls; | ||
205 | posLast = posCurSt; | ||
206 | break; | ||
207 | |||
208 | case WBP_Newline: | ||
209 | /* WB3a, WB3b */ | ||
210 | set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_BREAK, | ||
211 | get_next_char); | ||
212 | sp_cls = c_cls; | ||
213 | posLast = posCurSt; | ||
214 | break; | ||
215 | |||
216 | case WBP_Extend: | ||
217 | case WBP_Format: | ||
218 | /* WB4 - If not the first char/after a newline (W3ab), | ||
219 | * skip this class, set it to be the same as the prev, and mark | ||
220 | * brks not to break before them. */ | ||
221 | if ((sp_cls == WBP_Undefined) || IS_WB3ab(sp_cls)) | ||
222 | { | ||
223 | set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_BREAK, | ||
224 | get_next_char); | ||
225 | sp_cls = c_cls; | ||
226 | } | ||
227 | else | ||
228 | { | ||
229 | /* It's surely not the first */ | ||
230 | brks[posCurSt - 1] = WORDBREAK_NOBREAK; | ||
231 | /* "inherit" the previous class. */ | ||
232 | c_cls = p_cls; | ||
233 | } | ||
234 | break; | ||
235 | |||
236 | case WBP_Katakana: | ||
237 | if ((sp_cls == WBP_Katakana) || /* WB13 */ | ||
238 | (sp_cls == WBP_ExtendNumLet)) /* WB13b */ | ||
239 | { | ||
240 | set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_NOBREAK, | ||
241 | get_next_char); | ||
242 | } | ||
243 | /* No rule found, reset */ | ||
244 | else | ||
245 | { | ||
246 | set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_BREAK, | ||
247 | get_next_char); | ||
248 | } | ||
249 | sp_cls = c_cls; | ||
250 | posLast = posCurSt; | ||
251 | break; | ||
252 | |||
253 | case WBP_ALetter: | ||
254 | if ((sp_cls == WBP_ALetter) || /* WB5,6,7 */ | ||
255 | ((sp_cls == WBP_Numeric) && (p_cls == WBP_Numeric)) || /* WB10 */ | ||
256 | (sp_cls == WBP_ExtendNumLet)) /* WB13b */ | ||
257 | { | ||
258 | set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_NOBREAK, | ||
259 | get_next_char); | ||
260 | } | ||
261 | /* No rule found, reset */ | ||
262 | else | ||
263 | { | ||
264 | set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_BREAK, | ||
265 | get_next_char); | ||
266 | } | ||
267 | sp_cls = c_cls; | ||
268 | posLast = posCurSt; | ||
269 | break; | ||
270 | |||
271 | case WBP_MidNumLet: | ||
272 | if ((p_cls == WBP_ALetter) || /* WBP6,7 */ | ||
273 | (p_cls == WBP_Numeric)) /* WBP11,12 */ | ||
274 | { | ||
275 | /* Go on */ | ||
276 | } | ||
277 | else | ||
278 | { | ||
279 | set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_BREAK, | ||
280 | get_next_char); | ||
281 | sp_cls = c_cls; | ||
282 | posLast = posCurSt; | ||
283 | } | ||
284 | break; | ||
285 | |||
286 | case WBP_MidLetter: | ||
287 | if (p_cls == WBP_ALetter) /* WBP6,7 */ | ||
288 | { | ||
289 | /* Go on */ | ||
290 | } | ||
291 | else | ||
292 | { | ||
293 | set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_BREAK, | ||
294 | get_next_char); | ||
295 | sp_cls = c_cls; | ||
296 | posLast = posCurSt; | ||
297 | } | ||
298 | break; | ||
299 | |||
300 | case WBP_MidNum: | ||
301 | if (p_cls == WBP_Numeric) /* WBP11,12 */ | ||
302 | { | ||
303 | /* Go on */ | ||
304 | } | ||
305 | else | ||
306 | { | ||
307 | set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_BREAK, | ||
308 | get_next_char); | ||
309 | sp_cls = c_cls; | ||
310 | posLast = posCurSt; | ||
311 | } | ||
312 | break; | ||
313 | |||
314 | case WBP_Numeric: | ||
315 | if ((sp_cls == WBP_Numeric) || /* WB8,11,12 */ | ||
316 | ((sp_cls == WBP_ALetter) && (p_cls == WBP_ALetter)) || /* WB9 */ | ||
317 | (sp_cls == WBP_ExtendNumLet)) /* WB13b */ | ||
318 | { | ||
319 | set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_NOBREAK, | ||
320 | get_next_char); | ||
321 | } | ||
322 | /* No rule found, reset */ | ||
323 | else | ||
324 | { | ||
325 | set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_BREAK, | ||
326 | get_next_char); | ||
327 | } | ||
328 | sp_cls = c_cls; | ||
329 | posLast = posCurSt; | ||
330 | break; | ||
331 | |||
332 | case WBP_ExtendNumLet: | ||
333 | /* WB13a,13b */ | ||
334 | if ((sp_cls == p_cls) && | ||
335 | ((p_cls == WBP_ALetter) || | ||
336 | (p_cls == WBP_Numeric) || | ||
337 | (p_cls == WBP_Katakana) || | ||
338 | (p_cls == WBP_ExtendNumLet))) | ||
339 | { | ||
340 | set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_NOBREAK, | ||
341 | get_next_char); | ||
342 | } | ||
343 | /* No rule found, reset */ | ||
344 | else | ||
345 | { | ||
346 | set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_BREAK, | ||
347 | get_next_char); | ||
348 | } | ||
349 | sp_cls = c_cls; | ||
350 | posLast = posCurSt; | ||
351 | break; | ||
352 | |||
353 | case WBP_Any: | ||
354 | /* Allow breaks and reset */ | ||
355 | set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_BREAK, | ||
356 | get_next_char); | ||
357 | sp_cls = c_cls; | ||
358 | posLast = posCurSt; | ||
359 | break; | ||
360 | |||
361 | default: | ||
362 | /* Error, should never get here! */ | ||
363 | assert(0); | ||
364 | break; | ||
365 | } | ||
366 | |||
367 | p_cls = c_cls; | ||
368 | posCurSt = posCur; | ||
369 | ch = get_next_char(s, len, &posCur); | ||
370 | } | ||
371 | |||
372 | /* WB2 */ | ||
373 | set_brks_to(s, brks, posLast, posCur, len, WORDBREAK_BREAK, | ||
374 | get_next_char); | ||
375 | } | ||
376 | |||
377 | /** | ||
378 | * Sets the word breaking information for a UTF-8 input string. | ||
379 | * | ||
380 | * @param[in] s input UTF-8 string | ||
381 | * @param[in] len length of the input | ||
382 | * @param[in] lang language of the input | ||
383 | * @param[out] brks pointer to the output breaking data, containing | ||
384 | * #WORDBREAK_BREAK, #WORDBREAK_NOBREAK, or | ||
385 | * #WORDBREAK_INSIDEACHAR | ||
386 | */ | ||
387 | void set_wordbreaks_utf8( | ||
388 | const utf8_t *s, | ||
389 | size_t len, | ||
390 | const char *lang, | ||
391 | char *brks) | ||
392 | { | ||
393 | set_wordbreaks(s, len, lang, brks, | ||
394 | (get_next_char_t)lb_get_next_char_utf8); | ||
395 | } | ||
396 | |||
397 | /** | ||
398 | * Sets the word breaking information for a UTF-16 input string. | ||
399 | * | ||
400 | * @param[in] s input UTF-16 string | ||
401 | * @param[in] len length of the input | ||
402 | * @param[in] lang language of the input | ||
403 | * @param[out] brks pointer to the output breaking data, containing | ||
404 | * #WORDBREAK_BREAK, #WORDBREAK_NOBREAK, or | ||
405 | * #WORDBREAK_INSIDEACHAR | ||
406 | */ | ||
407 | void set_wordbreaks_utf16( | ||
408 | const utf16_t *s, | ||
409 | size_t len, | ||
410 | const char *lang, | ||
411 | char *brks) | ||
412 | { | ||
413 | set_wordbreaks(s, len, lang, brks, | ||
414 | (get_next_char_t)lb_get_next_char_utf16); | ||
415 | } | ||
416 | |||
417 | /** | ||
418 | * Sets the word breaking information for a UTF-32 input string. | ||
419 | * | ||
420 | * @param[in] s input UTF-32 string | ||
421 | * @param[in] len length of the input | ||
422 | * @param[in] lang language of the input | ||
423 | * @param[out] brks pointer to the output breaking data, containing | ||
424 | * #WORDBREAK_BREAK, #WORDBREAK_NOBREAK, or | ||
425 | * #WORDBREAK_INSIDEACHAR | ||
426 | */ | ||
427 | void set_wordbreaks_utf32( | ||
428 | const utf32_t *s, | ||
429 | size_t len, | ||
430 | const char *lang, | ||
431 | char *brks) | ||
432 | { | ||
433 | set_wordbreaks(s, len, lang, brks, | ||
434 | (get_next_char_t)lb_get_next_char_utf32); | ||
435 | } | ||
diff --git a/libraries/evas/src/static_deps/liblinebreak/wordbreak.h b/libraries/evas/src/static_deps/liblinebreak/wordbreak.h new file mode 100644 index 0000000..7b7bea7 --- /dev/null +++ b/libraries/evas/src/static_deps/liblinebreak/wordbreak.h | |||
@@ -0,0 +1,72 @@ | |||
1 | /* vim: set tabstop=4 shiftwidth=4: */ | ||
2 | |||
3 | /* | ||
4 | * Word breaking in a Unicode sequence. Designed to be used in a | ||
5 | * generic text renderer. | ||
6 | * | ||
7 | * Copyright (C) 2011-2011 Tom Hacohen <tom@stosb.com> | ||
8 | * | ||
9 | * This software is provided 'as-is', without any express or implied | ||
10 | * warranty. In no event will the author be held liable for any damages | ||
11 | * arising from the use of this software. | ||
12 | * | ||
13 | * Permission is granted to anyone to use this software for any purpose, | ||
14 | * including commercial applications, and to alter it and redistribute | ||
15 | * it freely, subject to the following restrictions: | ||
16 | * | ||
17 | * 1. The origin of this software must not be misrepresented; you must | ||
18 | * not claim that you wrote the original software. If you use this | ||
19 | * software in a product, an acknowledgement in the product | ||
20 | * documentation would be appreciated but is not required. | ||
21 | * 2. Altered source versions must be plainly marked as such, and must | ||
22 | * not be misrepresented as being the original software. | ||
23 | * 3. This notice may not be removed or altered from any source | ||
24 | * distribution. | ||
25 | * | ||
26 | * The main reference is Unicode Standard Annex 29 (UAX #29): | ||
27 | * <URL:http://unicode.org/reports/tr29> | ||
28 | * | ||
29 | * When this library was designed, this annex was at Revision 17, for | ||
30 | * Unicode 6.0.0: | ||
31 | * <URL:http://www.unicode.org/reports/tr29/tr29-17.html> | ||
32 | * | ||
33 | * The Unicode Terms of Use are available at | ||
34 | * <URL:http://www.unicode.org/copyright.html> | ||
35 | */ | ||
36 | |||
37 | /** | ||
38 | * @file wordbreak.h | ||
39 | * | ||
40 | * Header file for the word breaking (segmentation) algorithm. | ||
41 | * | ||
42 | * @version 2.0, 2011/12/12 | ||
43 | * @author Tom Hacohen | ||
44 | */ | ||
45 | |||
46 | #ifndef WORDBREAK_H | ||
47 | #define WORDBREAK_H | ||
48 | |||
49 | #include <stddef.h> | ||
50 | #include <linebreak.h> | ||
51 | |||
52 | #ifdef __cplusplus | ||
53 | extern "C" { | ||
54 | #endif | ||
55 | |||
56 | #define WORDBREAK_BREAK 0 /* Break found */ | ||
57 | #define WORDBREAK_NOBREAK 1 /**< Break not found */ | ||
58 | #define WORDBREAK_INSIDECHAR 2 /**< A UTF-8/16 sequence is unfinished */ | ||
59 | |||
60 | void init_wordbreak(void); | ||
61 | void set_wordbreaks_utf8( | ||
62 | const utf8_t *s, size_t len, const char* lang, char *brks); | ||
63 | void set_wordbreaks_utf16( | ||
64 | const utf16_t *s, size_t len, const char* lang, char *brks); | ||
65 | void set_wordbreaks_utf32( | ||
66 | const utf32_t *s, size_t len, const char* lang, char *brks); | ||
67 | |||
68 | #ifdef __cplusplus | ||
69 | } | ||
70 | #endif | ||
71 | |||
72 | #endif | ||
diff --git a/libraries/evas/src/static_deps/liblinebreak/wordbreakdata.x b/libraries/evas/src/static_deps/liblinebreak/wordbreakdata.x new file mode 100644 index 0000000..c7278ef --- /dev/null +++ b/libraries/evas/src/static_deps/liblinebreak/wordbreakdata.x | |||
@@ -0,0 +1,858 @@ | |||
1 | /* The content of this file is generated from: | ||
2 | # WordBreakProperty-6.0.0.txt | ||
3 | # Date: 2010-08-19, 00:48:48 GMT [MD] | ||
4 | */ | ||
5 | #include "linebreak.h" | ||
6 | #include "wordbreakdef.h" | ||
7 | static struct WordBreakProperties wb_prop_default[] = { | ||
8 | {0x000A, 0x000A, WBP_LF}, | ||
9 | {0x000B, 0x000C, WBP_Newline}, | ||
10 | {0x000D, 0x000D, WBP_CR}, | ||
11 | {0x0027, 0x0027, WBP_MidNumLet}, | ||
12 | {0x002C, 0x002C, WBP_MidNum}, | ||
13 | {0x002E, 0x002E, WBP_MidNumLet}, | ||
14 | {0x0030, 0x0039, WBP_Numeric}, | ||
15 | {0x003A, 0x003A, WBP_MidLetter}, | ||
16 | {0x003B, 0x003B, WBP_MidNum}, | ||
17 | {0x0041, 0x005A, WBP_ALetter}, | ||
18 | {0x005F, 0x005F, WBP_ExtendNumLet}, | ||
19 | {0x0061, 0x007A, WBP_ALetter}, | ||
20 | {0x0085, 0x0085, WBP_Newline}, | ||
21 | {0x00AA, 0x00AA, WBP_ALetter}, | ||
22 | {0x00AD, 0x00AD, WBP_Format}, | ||
23 | {0x00B5, 0x00B5, WBP_ALetter}, | ||
24 | {0x00B7, 0x00B7, WBP_MidLetter}, | ||
25 | {0x00BA, 0x00BA, WBP_ALetter}, | ||
26 | {0x00C0, 0x00D6, WBP_ALetter}, | ||
27 | {0x00D8, 0x00F6, WBP_ALetter}, | ||
28 | {0x00F8, 0x01BA, WBP_ALetter}, | ||
29 | {0x01BB, 0x01BB, WBP_ALetter}, | ||
30 | {0x01BC, 0x01BF, WBP_ALetter}, | ||
31 | {0x01C0, 0x01C3, WBP_ALetter}, | ||
32 | {0x01C4, 0x0293, WBP_ALetter}, | ||
33 | {0x0294, 0x0294, WBP_ALetter}, | ||
34 | {0x0295, 0x02AF, WBP_ALetter}, | ||
35 | {0x02B0, 0x02C1, WBP_ALetter}, | ||
36 | {0x02C6, 0x02D1, WBP_ALetter}, | ||
37 | {0x02E0, 0x02E4, WBP_ALetter}, | ||
38 | {0x02EC, 0x02EC, WBP_ALetter}, | ||
39 | {0x02EE, 0x02EE, WBP_ALetter}, | ||
40 | {0x0300, 0x036F, WBP_Extend}, | ||
41 | {0x0370, 0x0373, WBP_ALetter}, | ||
42 | {0x0374, 0x0374, WBP_ALetter}, | ||
43 | {0x0376, 0x0377, WBP_ALetter}, | ||
44 | {0x037A, 0x037A, WBP_ALetter}, | ||
45 | {0x037B, 0x037D, WBP_ALetter}, | ||
46 | {0x037E, 0x037E, WBP_MidNum}, | ||
47 | {0x0386, 0x0386, WBP_ALetter}, | ||
48 | {0x0387, 0x0387, WBP_MidLetter}, | ||
49 | {0x0388, 0x038A, WBP_ALetter}, | ||
50 | {0x038C, 0x038C, WBP_ALetter}, | ||
51 | {0x038E, 0x03A1, WBP_ALetter}, | ||
52 | {0x03A3, 0x03F5, WBP_ALetter}, | ||
53 | {0x03F7, 0x0481, WBP_ALetter}, | ||
54 | {0x0483, 0x0487, WBP_Extend}, | ||
55 | {0x0488, 0x0489, WBP_Extend}, | ||
56 | {0x048A, 0x0527, WBP_ALetter}, | ||
57 | {0x0531, 0x0556, WBP_ALetter}, | ||
58 | {0x0559, 0x0559, WBP_ALetter}, | ||
59 | {0x0561, 0x0587, WBP_ALetter}, | ||
60 | {0x0589, 0x0589, WBP_MidNum}, | ||
61 | {0x0591, 0x05BD, WBP_Extend}, | ||
62 | {0x05BF, 0x05BF, WBP_Extend}, | ||
63 | {0x05C1, 0x05C2, WBP_Extend}, | ||
64 | {0x05C4, 0x05C5, WBP_Extend}, | ||
65 | {0x05C7, 0x05C7, WBP_Extend}, | ||
66 | {0x05D0, 0x05EA, WBP_ALetter}, | ||
67 | {0x05F0, 0x05F2, WBP_ALetter}, | ||
68 | {0x05F3, 0x05F3, WBP_ALetter}, | ||
69 | {0x05F4, 0x05F4, WBP_MidLetter}, | ||
70 | {0x0600, 0x0603, WBP_Format}, | ||
71 | {0x060C, 0x060D, WBP_MidNum}, | ||
72 | {0x0610, 0x061A, WBP_Extend}, | ||
73 | {0x0620, 0x063F, WBP_ALetter}, | ||
74 | {0x0640, 0x0640, WBP_ALetter}, | ||
75 | {0x0641, 0x064A, WBP_ALetter}, | ||
76 | {0x064B, 0x065F, WBP_Extend}, | ||
77 | {0x0660, 0x0669, WBP_Numeric}, | ||
78 | {0x066B, 0x066B, WBP_Numeric}, | ||
79 | {0x066C, 0x066C, WBP_MidNum}, | ||
80 | {0x066E, 0x066F, WBP_ALetter}, | ||
81 | {0x0670, 0x0670, WBP_Extend}, | ||
82 | {0x0671, 0x06D3, WBP_ALetter}, | ||
83 | {0x06D5, 0x06D5, WBP_ALetter}, | ||
84 | {0x06D6, 0x06DC, WBP_Extend}, | ||
85 | {0x06DD, 0x06DD, WBP_Format}, | ||
86 | {0x06DF, 0x06E4, WBP_Extend}, | ||
87 | {0x06E5, 0x06E6, WBP_ALetter}, | ||
88 | {0x06E7, 0x06E8, WBP_Extend}, | ||
89 | {0x06EA, 0x06ED, WBP_Extend}, | ||
90 | {0x06EE, 0x06EF, WBP_ALetter}, | ||
91 | {0x06F0, 0x06F9, WBP_Numeric}, | ||
92 | {0x06FA, 0x06FC, WBP_ALetter}, | ||
93 | {0x06FF, 0x06FF, WBP_ALetter}, | ||
94 | {0x070F, 0x070F, WBP_Format}, | ||
95 | {0x0710, 0x0710, WBP_ALetter}, | ||
96 | {0x0711, 0x0711, WBP_Extend}, | ||
97 | {0x0712, 0x072F, WBP_ALetter}, | ||
98 | {0x0730, 0x074A, WBP_Extend}, | ||
99 | {0x074D, 0x07A5, WBP_ALetter}, | ||
100 | {0x07A6, 0x07B0, WBP_Extend}, | ||
101 | {0x07B1, 0x07B1, WBP_ALetter}, | ||
102 | {0x07C0, 0x07C9, WBP_Numeric}, | ||
103 | {0x07CA, 0x07EA, WBP_ALetter}, | ||
104 | {0x07EB, 0x07F3, WBP_Extend}, | ||
105 | {0x07F4, 0x07F5, WBP_ALetter}, | ||
106 | {0x07F8, 0x07F8, WBP_MidNum}, | ||
107 | {0x07FA, 0x07FA, WBP_ALetter}, | ||
108 | {0x0800, 0x0815, WBP_ALetter}, | ||
109 | {0x0816, 0x0819, WBP_Extend}, | ||
110 | {0x081A, 0x081A, WBP_ALetter}, | ||
111 | {0x081B, 0x0823, WBP_Extend}, | ||
112 | {0x0824, 0x0824, WBP_ALetter}, | ||
113 | {0x0825, 0x0827, WBP_Extend}, | ||
114 | {0x0828, 0x0828, WBP_ALetter}, | ||
115 | {0x0829, 0x082D, WBP_Extend}, | ||
116 | {0x0840, 0x0858, WBP_ALetter}, | ||
117 | {0x0859, 0x085B, WBP_Extend}, | ||
118 | {0x0900, 0x0902, WBP_Extend}, | ||
119 | {0x0903, 0x0903, WBP_Extend}, | ||
120 | {0x0904, 0x0939, WBP_ALetter}, | ||
121 | {0x093A, 0x093A, WBP_Extend}, | ||
122 | {0x093B, 0x093B, WBP_Extend}, | ||
123 | {0x093C, 0x093C, WBP_Extend}, | ||
124 | {0x093D, 0x093D, WBP_ALetter}, | ||
125 | {0x093E, 0x0940, WBP_Extend}, | ||
126 | {0x0941, 0x0948, WBP_Extend}, | ||
127 | {0x0949, 0x094C, WBP_Extend}, | ||
128 | {0x094D, 0x094D, WBP_Extend}, | ||
129 | {0x094E, 0x094F, WBP_Extend}, | ||
130 | {0x0950, 0x0950, WBP_ALetter}, | ||
131 | {0x0951, 0x0957, WBP_Extend}, | ||
132 | {0x0958, 0x0961, WBP_ALetter}, | ||
133 | {0x0962, 0x0963, WBP_Extend}, | ||
134 | {0x0966, 0x096F, WBP_Numeric}, | ||
135 | {0x0971, 0x0971, WBP_ALetter}, | ||
136 | {0x0972, 0x0977, WBP_ALetter}, | ||
137 | {0x0979, 0x097F, WBP_ALetter}, | ||
138 | {0x0981, 0x0981, WBP_Extend}, | ||
139 | {0x0982, 0x0983, WBP_Extend}, | ||
140 | {0x0985, 0x098C, WBP_ALetter}, | ||
141 | {0x098F, 0x0990, WBP_ALetter}, | ||
142 | {0x0993, 0x09A8, WBP_ALetter}, | ||
143 | {0x09AA, 0x09B0, WBP_ALetter}, | ||
144 | {0x09B2, 0x09B2, WBP_ALetter}, | ||
145 | {0x09B6, 0x09B9, WBP_ALetter}, | ||
146 | {0x09BC, 0x09BC, WBP_Extend}, | ||
147 | {0x09BD, 0x09BD, WBP_ALetter}, | ||
148 | {0x09BE, 0x09C0, WBP_Extend}, | ||
149 | {0x09C1, 0x09C4, WBP_Extend}, | ||
150 | {0x09C7, 0x09C8, WBP_Extend}, | ||
151 | {0x09CB, 0x09CC, WBP_Extend}, | ||
152 | {0x09CD, 0x09CD, WBP_Extend}, | ||
153 | {0x09CE, 0x09CE, WBP_ALetter}, | ||
154 | {0x09D7, 0x09D7, WBP_Extend}, | ||
155 | {0x09DC, 0x09DD, WBP_ALetter}, | ||
156 | {0x09DF, 0x09E1, WBP_ALetter}, | ||
157 | {0x09E2, 0x09E3, WBP_Extend}, | ||
158 | {0x09E6, 0x09EF, WBP_Numeric}, | ||
159 | {0x09F0, 0x09F1, WBP_ALetter}, | ||
160 | {0x0A01, 0x0A02, WBP_Extend}, | ||
161 | {0x0A03, 0x0A03, WBP_Extend}, | ||
162 | {0x0A05, 0x0A0A, WBP_ALetter}, | ||
163 | {0x0A0F, 0x0A10, WBP_ALetter}, | ||
164 | {0x0A13, 0x0A28, WBP_ALetter}, | ||
165 | {0x0A2A, 0x0A30, WBP_ALetter}, | ||
166 | {0x0A32, 0x0A33, WBP_ALetter}, | ||
167 | {0x0A35, 0x0A36, WBP_ALetter}, | ||
168 | {0x0A38, 0x0A39, WBP_ALetter}, | ||
169 | {0x0A3C, 0x0A3C, WBP_Extend}, | ||
170 | {0x0A3E, 0x0A40, WBP_Extend}, | ||
171 | {0x0A41, 0x0A42, WBP_Extend}, | ||
172 | {0x0A47, 0x0A48, WBP_Extend}, | ||
173 | {0x0A4B, 0x0A4D, WBP_Extend}, | ||
174 | {0x0A51, 0x0A51, WBP_Extend}, | ||
175 | {0x0A59, 0x0A5C, WBP_ALetter}, | ||
176 | {0x0A5E, 0x0A5E, WBP_ALetter}, | ||
177 | {0x0A66, 0x0A6F, WBP_Numeric}, | ||
178 | {0x0A70, 0x0A71, WBP_Extend}, | ||
179 | {0x0A72, 0x0A74, WBP_ALetter}, | ||
180 | {0x0A75, 0x0A75, WBP_Extend}, | ||
181 | {0x0A81, 0x0A82, WBP_Extend}, | ||
182 | {0x0A83, 0x0A83, WBP_Extend}, | ||
183 | {0x0A85, 0x0A8D, WBP_ALetter}, | ||
184 | {0x0A8F, 0x0A91, WBP_ALetter}, | ||
185 | {0x0A93, 0x0AA8, WBP_ALetter}, | ||
186 | {0x0AAA, 0x0AB0, WBP_ALetter}, | ||
187 | {0x0AB2, 0x0AB3, WBP_ALetter}, | ||
188 | {0x0AB5, 0x0AB9, WBP_ALetter}, | ||
189 | {0x0ABC, 0x0ABC, WBP_Extend}, | ||
190 | {0x0ABD, 0x0ABD, WBP_ALetter}, | ||
191 | {0x0ABE, 0x0AC0, WBP_Extend}, | ||
192 | {0x0AC1, 0x0AC5, WBP_Extend}, | ||
193 | {0x0AC7, 0x0AC8, WBP_Extend}, | ||
194 | {0x0AC9, 0x0AC9, WBP_Extend}, | ||
195 | {0x0ACB, 0x0ACC, WBP_Extend}, | ||
196 | {0x0ACD, 0x0ACD, WBP_Extend}, | ||
197 | {0x0AD0, 0x0AD0, WBP_ALetter}, | ||
198 | {0x0AE0, 0x0AE1, WBP_ALetter}, | ||
199 | {0x0AE2, 0x0AE3, WBP_Extend}, | ||
200 | {0x0AE6, 0x0AEF, WBP_Numeric}, | ||
201 | {0x0B01, 0x0B01, WBP_Extend}, | ||
202 | {0x0B02, 0x0B03, WBP_Extend}, | ||
203 | {0x0B05, 0x0B0C, WBP_ALetter}, | ||
204 | {0x0B0F, 0x0B10, WBP_ALetter}, | ||
205 | {0x0B13, 0x0B28, WBP_ALetter}, | ||
206 | {0x0B2A, 0x0B30, WBP_ALetter}, | ||
207 | {0x0B32, 0x0B33, WBP_ALetter}, | ||
208 | {0x0B35, 0x0B39, WBP_ALetter}, | ||
209 | {0x0B3C, 0x0B3C, WBP_Extend}, | ||
210 | {0x0B3D, 0x0B3D, WBP_ALetter}, | ||
211 | {0x0B3E, 0x0B3E, WBP_Extend}, | ||
212 | {0x0B3F, 0x0B3F, WBP_Extend}, | ||
213 | {0x0B40, 0x0B40, WBP_Extend}, | ||
214 | {0x0B41, 0x0B44, WBP_Extend}, | ||
215 | {0x0B47, 0x0B48, WBP_Extend}, | ||
216 | {0x0B4B, 0x0B4C, WBP_Extend}, | ||
217 | {0x0B4D, 0x0B4D, WBP_Extend}, | ||
218 | {0x0B56, 0x0B56, WBP_Extend}, | ||
219 | {0x0B57, 0x0B57, WBP_Extend}, | ||
220 | {0x0B5C, 0x0B5D, WBP_ALetter}, | ||
221 | {0x0B5F, 0x0B61, WBP_ALetter}, | ||
222 | {0x0B62, 0x0B63, WBP_Extend}, | ||
223 | {0x0B66, 0x0B6F, WBP_Numeric}, | ||
224 | {0x0B71, 0x0B71, WBP_ALetter}, | ||
225 | {0x0B82, 0x0B82, WBP_Extend}, | ||
226 | {0x0B83, 0x0B83, WBP_ALetter}, | ||
227 | {0x0B85, 0x0B8A, WBP_ALetter}, | ||
228 | {0x0B8E, 0x0B90, WBP_ALetter}, | ||
229 | {0x0B92, 0x0B95, WBP_ALetter}, | ||
230 | {0x0B99, 0x0B9A, WBP_ALetter}, | ||
231 | {0x0B9C, 0x0B9C, WBP_ALetter}, | ||
232 | {0x0B9E, 0x0B9F, WBP_ALetter}, | ||
233 | {0x0BA3, 0x0BA4, WBP_ALetter}, | ||
234 | {0x0BA8, 0x0BAA, WBP_ALetter}, | ||
235 | {0x0BAE, 0x0BB9, WBP_ALetter}, | ||
236 | {0x0BBE, 0x0BBF, WBP_Extend}, | ||
237 | {0x0BC0, 0x0BC0, WBP_Extend}, | ||
238 | {0x0BC1, 0x0BC2, WBP_Extend}, | ||
239 | {0x0BC6, 0x0BC8, WBP_Extend}, | ||
240 | {0x0BCA, 0x0BCC, WBP_Extend}, | ||
241 | {0x0BCD, 0x0BCD, WBP_Extend}, | ||
242 | {0x0BD0, 0x0BD0, WBP_ALetter}, | ||
243 | {0x0BD7, 0x0BD7, WBP_Extend}, | ||
244 | {0x0BE6, 0x0BEF, WBP_Numeric}, | ||
245 | {0x0C01, 0x0C03, WBP_Extend}, | ||
246 | {0x0C05, 0x0C0C, WBP_ALetter}, | ||
247 | {0x0C0E, 0x0C10, WBP_ALetter}, | ||
248 | {0x0C12, 0x0C28, WBP_ALetter}, | ||
249 | {0x0C2A, 0x0C33, WBP_ALetter}, | ||
250 | {0x0C35, 0x0C39, WBP_ALetter}, | ||
251 | {0x0C3D, 0x0C3D, WBP_ALetter}, | ||
252 | {0x0C3E, 0x0C40, WBP_Extend}, | ||
253 | {0x0C41, 0x0C44, WBP_Extend}, | ||
254 | {0x0C46, 0x0C48, WBP_Extend}, | ||
255 | {0x0C4A, 0x0C4D, WBP_Extend}, | ||
256 | {0x0C55, 0x0C56, WBP_Extend}, | ||
257 | {0x0C58, 0x0C59, WBP_ALetter}, | ||
258 | {0x0C60, 0x0C61, WBP_ALetter}, | ||
259 | {0x0C62, 0x0C63, WBP_Extend}, | ||
260 | {0x0C66, 0x0C6F, WBP_Numeric}, | ||
261 | {0x0C82, 0x0C83, WBP_Extend}, | ||
262 | {0x0C85, 0x0C8C, WBP_ALetter}, | ||
263 | {0x0C8E, 0x0C90, WBP_ALetter}, | ||
264 | {0x0C92, 0x0CA8, WBP_ALetter}, | ||
265 | {0x0CAA, 0x0CB3, WBP_ALetter}, | ||
266 | {0x0CB5, 0x0CB9, WBP_ALetter}, | ||
267 | {0x0CBC, 0x0CBC, WBP_Extend}, | ||
268 | {0x0CBD, 0x0CBD, WBP_ALetter}, | ||
269 | {0x0CBE, 0x0CBE, WBP_Extend}, | ||
270 | {0x0CBF, 0x0CBF, WBP_Extend}, | ||
271 | {0x0CC0, 0x0CC4, WBP_Extend}, | ||
272 | {0x0CC6, 0x0CC6, WBP_Extend}, | ||
273 | {0x0CC7, 0x0CC8, WBP_Extend}, | ||
274 | {0x0CCA, 0x0CCB, WBP_Extend}, | ||
275 | {0x0CCC, 0x0CCD, WBP_Extend}, | ||
276 | {0x0CD5, 0x0CD6, WBP_Extend}, | ||
277 | {0x0CDE, 0x0CDE, WBP_ALetter}, | ||
278 | {0x0CE0, 0x0CE1, WBP_ALetter}, | ||
279 | {0x0CE2, 0x0CE3, WBP_Extend}, | ||
280 | {0x0CE6, 0x0CEF, WBP_Numeric}, | ||
281 | {0x0CF1, 0x0CF2, WBP_ALetter}, | ||
282 | {0x0D02, 0x0D03, WBP_Extend}, | ||
283 | {0x0D05, 0x0D0C, WBP_ALetter}, | ||
284 | {0x0D0E, 0x0D10, WBP_ALetter}, | ||
285 | {0x0D12, 0x0D3A, WBP_ALetter}, | ||
286 | {0x0D3D, 0x0D3D, WBP_ALetter}, | ||
287 | {0x0D3E, 0x0D40, WBP_Extend}, | ||
288 | {0x0D41, 0x0D44, WBP_Extend}, | ||
289 | {0x0D46, 0x0D48, WBP_Extend}, | ||
290 | {0x0D4A, 0x0D4C, WBP_Extend}, | ||
291 | {0x0D4D, 0x0D4D, WBP_Extend}, | ||
292 | {0x0D4E, 0x0D4E, WBP_ALetter}, | ||
293 | {0x0D57, 0x0D57, WBP_Extend}, | ||
294 | {0x0D60, 0x0D61, WBP_ALetter}, | ||
295 | {0x0D62, 0x0D63, WBP_Extend}, | ||
296 | {0x0D66, 0x0D6F, WBP_Numeric}, | ||
297 | {0x0D7A, 0x0D7F, WBP_ALetter}, | ||
298 | {0x0D82, 0x0D83, WBP_Extend}, | ||
299 | {0x0D85, 0x0D96, WBP_ALetter}, | ||
300 | {0x0D9A, 0x0DB1, WBP_ALetter}, | ||
301 | {0x0DB3, 0x0DBB, WBP_ALetter}, | ||
302 | {0x0DBD, 0x0DBD, WBP_ALetter}, | ||
303 | {0x0DC0, 0x0DC6, WBP_ALetter}, | ||
304 | {0x0DCA, 0x0DCA, WBP_Extend}, | ||
305 | {0x0DCF, 0x0DD1, WBP_Extend}, | ||
306 | {0x0DD2, 0x0DD4, WBP_Extend}, | ||
307 | {0x0DD6, 0x0DD6, WBP_Extend}, | ||
308 | {0x0DD8, 0x0DDF, WBP_Extend}, | ||
309 | {0x0DF2, 0x0DF3, WBP_Extend}, | ||
310 | {0x0E31, 0x0E31, WBP_Extend}, | ||
311 | {0x0E34, 0x0E3A, WBP_Extend}, | ||
312 | {0x0E47, 0x0E4E, WBP_Extend}, | ||
313 | {0x0E50, 0x0E59, WBP_Numeric}, | ||
314 | {0x0EB1, 0x0EB1, WBP_Extend}, | ||
315 | {0x0EB4, 0x0EB9, WBP_Extend}, | ||
316 | {0x0EBB, 0x0EBC, WBP_Extend}, | ||
317 | {0x0EC8, 0x0ECD, WBP_Extend}, | ||
318 | {0x0ED0, 0x0ED9, WBP_Numeric}, | ||
319 | {0x0F00, 0x0F00, WBP_ALetter}, | ||
320 | {0x0F18, 0x0F19, WBP_Extend}, | ||
321 | {0x0F20, 0x0F29, WBP_Numeric}, | ||
322 | {0x0F35, 0x0F35, WBP_Extend}, | ||
323 | {0x0F37, 0x0F37, WBP_Extend}, | ||
324 | {0x0F39, 0x0F39, WBP_Extend}, | ||
325 | {0x0F3E, 0x0F3F, WBP_Extend}, | ||
326 | {0x0F40, 0x0F47, WBP_ALetter}, | ||
327 | {0x0F49, 0x0F6C, WBP_ALetter}, | ||
328 | {0x0F71, 0x0F7E, WBP_Extend}, | ||
329 | {0x0F7F, 0x0F7F, WBP_Extend}, | ||
330 | {0x0F80, 0x0F84, WBP_Extend}, | ||
331 | {0x0F86, 0x0F87, WBP_Extend}, | ||
332 | {0x0F88, 0x0F8C, WBP_ALetter}, | ||
333 | {0x0F8D, 0x0F97, WBP_Extend}, | ||
334 | {0x0F99, 0x0FBC, WBP_Extend}, | ||
335 | {0x0FC6, 0x0FC6, WBP_Extend}, | ||
336 | {0x102B, 0x102C, WBP_Extend}, | ||
337 | {0x102D, 0x1030, WBP_Extend}, | ||
338 | {0x1031, 0x1031, WBP_Extend}, | ||
339 | {0x1032, 0x1037, WBP_Extend}, | ||
340 | {0x1038, 0x1038, WBP_Extend}, | ||
341 | {0x1039, 0x103A, WBP_Extend}, | ||
342 | {0x103B, 0x103C, WBP_Extend}, | ||
343 | {0x103D, 0x103E, WBP_Extend}, | ||
344 | {0x1040, 0x1049, WBP_Numeric}, | ||
345 | {0x1056, 0x1057, WBP_Extend}, | ||
346 | {0x1058, 0x1059, WBP_Extend}, | ||
347 | {0x105E, 0x1060, WBP_Extend}, | ||
348 | {0x1062, 0x1064, WBP_Extend}, | ||
349 | {0x1067, 0x106D, WBP_Extend}, | ||
350 | {0x1071, 0x1074, WBP_Extend}, | ||
351 | {0x1082, 0x1082, WBP_Extend}, | ||
352 | {0x1083, 0x1084, WBP_Extend}, | ||
353 | {0x1085, 0x1086, WBP_Extend}, | ||
354 | {0x1087, 0x108C, WBP_Extend}, | ||
355 | {0x108D, 0x108D, WBP_Extend}, | ||
356 | {0x108F, 0x108F, WBP_Extend}, | ||
357 | {0x1090, 0x1099, WBP_Numeric}, | ||
358 | {0x109A, 0x109C, WBP_Extend}, | ||
359 | {0x109D, 0x109D, WBP_Extend}, | ||
360 | {0x10A0, 0x10C5, WBP_ALetter}, | ||
361 | {0x10D0, 0x10FA, WBP_ALetter}, | ||
362 | {0x10FC, 0x10FC, WBP_ALetter}, | ||
363 | {0x1100, 0x1248, WBP_ALetter}, | ||
364 | {0x124A, 0x124D, WBP_ALetter}, | ||
365 | {0x1250, 0x1256, WBP_ALetter}, | ||
366 | {0x1258, 0x1258, WBP_ALetter}, | ||
367 | {0x125A, 0x125D, WBP_ALetter}, | ||
368 | {0x1260, 0x1288, WBP_ALetter}, | ||
369 | {0x128A, 0x128D, WBP_ALetter}, | ||
370 | {0x1290, 0x12B0, WBP_ALetter}, | ||
371 | {0x12B2, 0x12B5, WBP_ALetter}, | ||
372 | {0x12B8, 0x12BE, WBP_ALetter}, | ||
373 | {0x12C0, 0x12C0, WBP_ALetter}, | ||
374 | {0x12C2, 0x12C5, WBP_ALetter}, | ||
375 | {0x12C8, 0x12D6, WBP_ALetter}, | ||
376 | {0x12D8, 0x1310, WBP_ALetter}, | ||
377 | {0x1312, 0x1315, WBP_ALetter}, | ||
378 | {0x1318, 0x135A, WBP_ALetter}, | ||
379 | {0x135D, 0x135F, WBP_Extend}, | ||
380 | {0x1380, 0x138F, WBP_ALetter}, | ||
381 | {0x13A0, 0x13F4, WBP_ALetter}, | ||
382 | {0x1401, 0x166C, WBP_ALetter}, | ||
383 | {0x166F, 0x167F, WBP_ALetter}, | ||
384 | {0x1681, 0x169A, WBP_ALetter}, | ||
385 | {0x16A0, 0x16EA, WBP_ALetter}, | ||
386 | {0x16EE, 0x16F0, WBP_ALetter}, | ||
387 | {0x1700, 0x170C, WBP_ALetter}, | ||
388 | {0x170E, 0x1711, WBP_ALetter}, | ||
389 | {0x1712, 0x1714, WBP_Extend}, | ||
390 | {0x1720, 0x1731, WBP_ALetter}, | ||
391 | {0x1732, 0x1734, WBP_Extend}, | ||
392 | {0x1740, 0x1751, WBP_ALetter}, | ||
393 | {0x1752, 0x1753, WBP_Extend}, | ||
394 | {0x1760, 0x176C, WBP_ALetter}, | ||
395 | {0x176E, 0x1770, WBP_ALetter}, | ||
396 | {0x1772, 0x1773, WBP_Extend}, | ||
397 | {0x17B4, 0x17B5, WBP_Format}, | ||
398 | {0x17B6, 0x17B6, WBP_Extend}, | ||
399 | {0x17B7, 0x17BD, WBP_Extend}, | ||
400 | {0x17BE, 0x17C5, WBP_Extend}, | ||
401 | {0x17C6, 0x17C6, WBP_Extend}, | ||
402 | {0x17C7, 0x17C8, WBP_Extend}, | ||
403 | {0x17C9, 0x17D3, WBP_Extend}, | ||
404 | {0x17DD, 0x17DD, WBP_Extend}, | ||
405 | {0x17E0, 0x17E9, WBP_Numeric}, | ||
406 | {0x180B, 0x180D, WBP_Extend}, | ||
407 | {0x1810, 0x1819, WBP_Numeric}, | ||
408 | {0x1820, 0x1842, WBP_ALetter}, | ||
409 | {0x1843, 0x1843, WBP_ALetter}, | ||
410 | {0x1844, 0x1877, WBP_ALetter}, | ||
411 | {0x1880, 0x18A8, WBP_ALetter}, | ||
412 | {0x18A9, 0x18A9, WBP_Extend}, | ||
413 | {0x18AA, 0x18AA, WBP_ALetter}, | ||
414 | {0x18B0, 0x18F5, WBP_ALetter}, | ||
415 | {0x1900, 0x191C, WBP_ALetter}, | ||
416 | {0x1920, 0x1922, WBP_Extend}, | ||
417 | {0x1923, 0x1926, WBP_Extend}, | ||
418 | {0x1927, 0x1928, WBP_Extend}, | ||
419 | {0x1929, 0x192B, WBP_Extend}, | ||
420 | {0x1930, 0x1931, WBP_Extend}, | ||
421 | {0x1932, 0x1932, WBP_Extend}, | ||
422 | {0x1933, 0x1938, WBP_Extend}, | ||
423 | {0x1939, 0x193B, WBP_Extend}, | ||
424 | {0x1946, 0x194F, WBP_Numeric}, | ||
425 | {0x19B0, 0x19C0, WBP_Extend}, | ||
426 | {0x19C8, 0x19C9, WBP_Extend}, | ||
427 | {0x19D0, 0x19D9, WBP_Numeric}, | ||
428 | {0x1A00, 0x1A16, WBP_ALetter}, | ||
429 | {0x1A17, 0x1A18, WBP_Extend}, | ||
430 | {0x1A19, 0x1A1B, WBP_Extend}, | ||
431 | {0x1A55, 0x1A55, WBP_Extend}, | ||
432 | {0x1A56, 0x1A56, WBP_Extend}, | ||
433 | {0x1A57, 0x1A57, WBP_Extend}, | ||
434 | {0x1A58, 0x1A5E, WBP_Extend}, | ||
435 | {0x1A60, 0x1A60, WBP_Extend}, | ||
436 | {0x1A61, 0x1A61, WBP_Extend}, | ||
437 | {0x1A62, 0x1A62, WBP_Extend}, | ||
438 | {0x1A63, 0x1A64, WBP_Extend}, | ||
439 | {0x1A65, 0x1A6C, WBP_Extend}, | ||
440 | {0x1A6D, 0x1A72, WBP_Extend}, | ||
441 | {0x1A73, 0x1A7C, WBP_Extend}, | ||
442 | {0x1A7F, 0x1A7F, WBP_Extend}, | ||
443 | {0x1A80, 0x1A89, WBP_Numeric}, | ||
444 | {0x1A90, 0x1A99, WBP_Numeric}, | ||
445 | {0x1B00, 0x1B03, WBP_Extend}, | ||
446 | {0x1B04, 0x1B04, WBP_Extend}, | ||
447 | {0x1B05, 0x1B33, WBP_ALetter}, | ||
448 | {0x1B34, 0x1B34, WBP_Extend}, | ||
449 | {0x1B35, 0x1B35, WBP_Extend}, | ||
450 | {0x1B36, 0x1B3A, WBP_Extend}, | ||
451 | {0x1B3B, 0x1B3B, WBP_Extend}, | ||
452 | {0x1B3C, 0x1B3C, WBP_Extend}, | ||
453 | {0x1B3D, 0x1B41, WBP_Extend}, | ||
454 | {0x1B42, 0x1B42, WBP_Extend}, | ||
455 | {0x1B43, 0x1B44, WBP_Extend}, | ||
456 | {0x1B45, 0x1B4B, WBP_ALetter}, | ||
457 | {0x1B50, 0x1B59, WBP_Numeric}, | ||
458 | {0x1B6B, 0x1B73, WBP_Extend}, | ||
459 | {0x1B80, 0x1B81, WBP_Extend}, | ||
460 | {0x1B82, 0x1B82, WBP_Extend}, | ||
461 | {0x1B83, 0x1BA0, WBP_ALetter}, | ||
462 | {0x1BA1, 0x1BA1, WBP_Extend}, | ||
463 | {0x1BA2, 0x1BA5, WBP_Extend}, | ||
464 | {0x1BA6, 0x1BA7, WBP_Extend}, | ||
465 | {0x1BA8, 0x1BA9, WBP_Extend}, | ||
466 | {0x1BAA, 0x1BAA, WBP_Extend}, | ||
467 | {0x1BAE, 0x1BAF, WBP_ALetter}, | ||
468 | {0x1BB0, 0x1BB9, WBP_Numeric}, | ||
469 | {0x1BC0, 0x1BE5, WBP_ALetter}, | ||
470 | {0x1BE6, 0x1BE6, WBP_Extend}, | ||
471 | {0x1BE7, 0x1BE7, WBP_Extend}, | ||
472 | {0x1BE8, 0x1BE9, WBP_Extend}, | ||
473 | {0x1BEA, 0x1BEC, WBP_Extend}, | ||
474 | {0x1BED, 0x1BED, WBP_Extend}, | ||
475 | {0x1BEE, 0x1BEE, WBP_Extend}, | ||
476 | {0x1BEF, 0x1BF1, WBP_Extend}, | ||
477 | {0x1BF2, 0x1BF3, WBP_Extend}, | ||
478 | {0x1C00, 0x1C23, WBP_ALetter}, | ||
479 | {0x1C24, 0x1C2B, WBP_Extend}, | ||
480 | {0x1C2C, 0x1C33, WBP_Extend}, | ||
481 | {0x1C34, 0x1C35, WBP_Extend}, | ||
482 | {0x1C36, 0x1C37, WBP_Extend}, | ||
483 | {0x1C40, 0x1C49, WBP_Numeric}, | ||
484 | {0x1C4D, 0x1C4F, WBP_ALetter}, | ||
485 | {0x1C50, 0x1C59, WBP_Numeric}, | ||
486 | {0x1C5A, 0x1C77, WBP_ALetter}, | ||
487 | {0x1C78, 0x1C7D, WBP_ALetter}, | ||
488 | {0x1CD0, 0x1CD2, WBP_Extend}, | ||
489 | {0x1CD4, 0x1CE0, WBP_Extend}, | ||
490 | {0x1CE1, 0x1CE1, WBP_Extend}, | ||
491 | {0x1CE2, 0x1CE8, WBP_Extend}, | ||
492 | {0x1CE9, 0x1CEC, WBP_ALetter}, | ||
493 | {0x1CED, 0x1CED, WBP_Extend}, | ||
494 | {0x1CEE, 0x1CF1, WBP_ALetter}, | ||
495 | {0x1CF2, 0x1CF2, WBP_Extend}, | ||
496 | {0x1D00, 0x1D2B, WBP_ALetter}, | ||
497 | {0x1D2C, 0x1D61, WBP_ALetter}, | ||
498 | {0x1D62, 0x1D77, WBP_ALetter}, | ||
499 | {0x1D78, 0x1D78, WBP_ALetter}, | ||
500 | {0x1D79, 0x1D9A, WBP_ALetter}, | ||
501 | {0x1D9B, 0x1DBF, WBP_ALetter}, | ||
502 | {0x1DC0, 0x1DE6, WBP_Extend}, | ||
503 | {0x1DFC, 0x1DFF, WBP_Extend}, | ||
504 | {0x1E00, 0x1F15, WBP_ALetter}, | ||
505 | {0x1F18, 0x1F1D, WBP_ALetter}, | ||
506 | {0x1F20, 0x1F45, WBP_ALetter}, | ||
507 | {0x1F48, 0x1F4D, WBP_ALetter}, | ||
508 | {0x1F50, 0x1F57, WBP_ALetter}, | ||
509 | {0x1F59, 0x1F59, WBP_ALetter}, | ||
510 | {0x1F5B, 0x1F5B, WBP_ALetter}, | ||
511 | {0x1F5D, 0x1F5D, WBP_ALetter}, | ||
512 | {0x1F5F, 0x1F7D, WBP_ALetter}, | ||
513 | {0x1F80, 0x1FB4, WBP_ALetter}, | ||
514 | {0x1FB6, 0x1FBC, WBP_ALetter}, | ||
515 | {0x1FBE, 0x1FBE, WBP_ALetter}, | ||
516 | {0x1FC2, 0x1FC4, WBP_ALetter}, | ||
517 | {0x1FC6, 0x1FCC, WBP_ALetter}, | ||
518 | {0x1FD0, 0x1FD3, WBP_ALetter}, | ||
519 | {0x1FD6, 0x1FDB, WBP_ALetter}, | ||
520 | {0x1FE0, 0x1FEC, WBP_ALetter}, | ||
521 | {0x1FF2, 0x1FF4, WBP_ALetter}, | ||
522 | {0x1FF6, 0x1FFC, WBP_ALetter}, | ||
523 | {0x200C, 0x200D, WBP_Extend}, | ||
524 | {0x200E, 0x200F, WBP_Format}, | ||
525 | {0x2018, 0x2018, WBP_MidNumLet}, | ||
526 | {0x2019, 0x2019, WBP_MidNumLet}, | ||
527 | {0x2024, 0x2024, WBP_MidNumLet}, | ||
528 | {0x2027, 0x2027, WBP_MidLetter}, | ||
529 | {0x2028, 0x2028, WBP_Newline}, | ||
530 | {0x2029, 0x2029, WBP_Newline}, | ||
531 | {0x202A, 0x202E, WBP_Format}, | ||
532 | {0x203F, 0x2040, WBP_ExtendNumLet}, | ||
533 | {0x2044, 0x2044, WBP_MidNum}, | ||
534 | {0x2054, 0x2054, WBP_ExtendNumLet}, | ||
535 | {0x2060, 0x2064, WBP_Format}, | ||
536 | {0x206A, 0x206F, WBP_Format}, | ||
537 | {0x2071, 0x2071, WBP_ALetter}, | ||
538 | {0x207F, 0x207F, WBP_ALetter}, | ||
539 | {0x2090, 0x209C, WBP_ALetter}, | ||
540 | {0x20D0, 0x20DC, WBP_Extend}, | ||
541 | {0x20DD, 0x20E0, WBP_Extend}, | ||
542 | {0x20E1, 0x20E1, WBP_Extend}, | ||
543 | {0x20E2, 0x20E4, WBP_Extend}, | ||
544 | {0x20E5, 0x20F0, WBP_Extend}, | ||
545 | {0x2102, 0x2102, WBP_ALetter}, | ||
546 | {0x2107, 0x2107, WBP_ALetter}, | ||
547 | {0x210A, 0x2113, WBP_ALetter}, | ||
548 | {0x2115, 0x2115, WBP_ALetter}, | ||
549 | {0x2119, 0x211D, WBP_ALetter}, | ||
550 | {0x2124, 0x2124, WBP_ALetter}, | ||
551 | {0x2126, 0x2126, WBP_ALetter}, | ||
552 | {0x2128, 0x2128, WBP_ALetter}, | ||
553 | {0x212A, 0x212D, WBP_ALetter}, | ||
554 | {0x212F, 0x2134, WBP_ALetter}, | ||
555 | {0x2135, 0x2138, WBP_ALetter}, | ||
556 | {0x2139, 0x2139, WBP_ALetter}, | ||
557 | {0x213C, 0x213F, WBP_ALetter}, | ||
558 | {0x2145, 0x2149, WBP_ALetter}, | ||
559 | {0x214E, 0x214E, WBP_ALetter}, | ||
560 | {0x2160, 0x2182, WBP_ALetter}, | ||
561 | {0x2183, 0x2184, WBP_ALetter}, | ||
562 | {0x2185, 0x2188, WBP_ALetter}, | ||
563 | {0x24B6, 0x24E9, WBP_ALetter}, | ||
564 | {0x2C00, 0x2C2E, WBP_ALetter}, | ||
565 | {0x2C30, 0x2C5E, WBP_ALetter}, | ||
566 | {0x2C60, 0x2C7C, WBP_ALetter}, | ||
567 | {0x2C7D, 0x2C7D, WBP_ALetter}, | ||
568 | {0x2C7E, 0x2CE4, WBP_ALetter}, | ||
569 | {0x2CEB, 0x2CEE, WBP_ALetter}, | ||
570 | {0x2CEF, 0x2CF1, WBP_Extend}, | ||
571 | {0x2D00, 0x2D25, WBP_ALetter}, | ||
572 | {0x2D30, 0x2D65, WBP_ALetter}, | ||
573 | {0x2D6F, 0x2D6F, WBP_ALetter}, | ||
574 | {0x2D7F, 0x2D7F, WBP_Extend}, | ||
575 | {0x2D80, 0x2D96, WBP_ALetter}, | ||
576 | {0x2DA0, 0x2DA6, WBP_ALetter}, | ||
577 | {0x2DA8, 0x2DAE, WBP_ALetter}, | ||
578 | {0x2DB0, 0x2DB6, WBP_ALetter}, | ||
579 | {0x2DB8, 0x2DBE, WBP_ALetter}, | ||
580 | {0x2DC0, 0x2DC6, WBP_ALetter}, | ||
581 | {0x2DC8, 0x2DCE, WBP_ALetter}, | ||
582 | {0x2DD0, 0x2DD6, WBP_ALetter}, | ||
583 | {0x2DD8, 0x2DDE, WBP_ALetter}, | ||
584 | {0x2DE0, 0x2DFF, WBP_Extend}, | ||
585 | {0x2E2F, 0x2E2F, WBP_ALetter}, | ||
586 | {0x3005, 0x3005, WBP_ALetter}, | ||
587 | {0x302A, 0x302F, WBP_Extend}, | ||
588 | {0x3031, 0x3035, WBP_Katakana}, | ||
589 | {0x303B, 0x303B, WBP_ALetter}, | ||
590 | {0x303C, 0x303C, WBP_ALetter}, | ||
591 | {0x3099, 0x309A, WBP_Extend}, | ||
592 | {0x309B, 0x309C, WBP_Katakana}, | ||
593 | {0x30A0, 0x30A0, WBP_Katakana}, | ||
594 | {0x30A1, 0x30FA, WBP_Katakana}, | ||
595 | {0x30FC, 0x30FE, WBP_Katakana}, | ||
596 | {0x30FF, 0x30FF, WBP_Katakana}, | ||
597 | {0x3105, 0x312D, WBP_ALetter}, | ||
598 | {0x3131, 0x318E, WBP_ALetter}, | ||
599 | {0x31A0, 0x31BA, WBP_ALetter}, | ||
600 | {0x31F0, 0x31FF, WBP_Katakana}, | ||
601 | {0x32D0, 0x32FE, WBP_Katakana}, | ||
602 | {0x3300, 0x3357, WBP_Katakana}, | ||
603 | {0xA000, 0xA014, WBP_ALetter}, | ||
604 | {0xA015, 0xA015, WBP_ALetter}, | ||
605 | {0xA016, 0xA48C, WBP_ALetter}, | ||
606 | {0xA4D0, 0xA4F7, WBP_ALetter}, | ||
607 | {0xA4F8, 0xA4FD, WBP_ALetter}, | ||
608 | {0xA500, 0xA60B, WBP_ALetter}, | ||
609 | {0xA60C, 0xA60C, WBP_ALetter}, | ||
610 | {0xA610, 0xA61F, WBP_ALetter}, | ||
611 | {0xA620, 0xA629, WBP_Numeric}, | ||
612 | {0xA62A, 0xA62B, WBP_ALetter}, | ||
613 | {0xA640, 0xA66D, WBP_ALetter}, | ||
614 | {0xA66E, 0xA66E, WBP_ALetter}, | ||
615 | {0xA66F, 0xA66F, WBP_Extend}, | ||
616 | {0xA670, 0xA672, WBP_Extend}, | ||
617 | {0xA67C, 0xA67D, WBP_Extend}, | ||
618 | {0xA67F, 0xA67F, WBP_ALetter}, | ||
619 | {0xA680, 0xA697, WBP_ALetter}, | ||
620 | {0xA6A0, 0xA6E5, WBP_ALetter}, | ||
621 | {0xA6E6, 0xA6EF, WBP_ALetter}, | ||
622 | {0xA6F0, 0xA6F1, WBP_Extend}, | ||
623 | {0xA717, 0xA71F, WBP_ALetter}, | ||
624 | {0xA722, 0xA76F, WBP_ALetter}, | ||
625 | {0xA770, 0xA770, WBP_ALetter}, | ||
626 | {0xA771, 0xA787, WBP_ALetter}, | ||
627 | {0xA788, 0xA788, WBP_ALetter}, | ||
628 | {0xA78B, 0xA78E, WBP_ALetter}, | ||
629 | {0xA790, 0xA791, WBP_ALetter}, | ||
630 | {0xA7A0, 0xA7A9, WBP_ALetter}, | ||
631 | {0xA7FA, 0xA7FA, WBP_ALetter}, | ||
632 | {0xA7FB, 0xA801, WBP_ALetter}, | ||
633 | {0xA802, 0xA802, WBP_Extend}, | ||
634 | {0xA803, 0xA805, WBP_ALetter}, | ||
635 | {0xA806, 0xA806, WBP_Extend}, | ||
636 | {0xA807, 0xA80A, WBP_ALetter}, | ||
637 | {0xA80B, 0xA80B, WBP_Extend}, | ||
638 | {0xA80C, 0xA822, WBP_ALetter}, | ||
639 | {0xA823, 0xA824, WBP_Extend}, | ||
640 | {0xA825, 0xA826, WBP_Extend}, | ||
641 | {0xA827, 0xA827, WBP_Extend}, | ||
642 | {0xA840, 0xA873, WBP_ALetter}, | ||
643 | {0xA880, 0xA881, WBP_Extend}, | ||
644 | {0xA882, 0xA8B3, WBP_ALetter}, | ||
645 | {0xA8B4, 0xA8C3, WBP_Extend}, | ||
646 | {0xA8C4, 0xA8C4, WBP_Extend}, | ||
647 | {0xA8D0, 0xA8D9, WBP_Numeric}, | ||
648 | {0xA8E0, 0xA8F1, WBP_Extend}, | ||
649 | {0xA8F2, 0xA8F7, WBP_ALetter}, | ||
650 | {0xA8FB, 0xA8FB, WBP_ALetter}, | ||
651 | {0xA900, 0xA909, WBP_Numeric}, | ||
652 | {0xA90A, 0xA925, WBP_ALetter}, | ||
653 | {0xA926, 0xA92D, WBP_Extend}, | ||
654 | {0xA930, 0xA946, WBP_ALetter}, | ||
655 | {0xA947, 0xA951, WBP_Extend}, | ||
656 | {0xA952, 0xA953, WBP_Extend}, | ||
657 | {0xA960, 0xA97C, WBP_ALetter}, | ||
658 | {0xA980, 0xA982, WBP_Extend}, | ||
659 | {0xA983, 0xA983, WBP_Extend}, | ||
660 | {0xA984, 0xA9B2, WBP_ALetter}, | ||
661 | {0xA9B3, 0xA9B3, WBP_Extend}, | ||
662 | {0xA9B4, 0xA9B5, WBP_Extend}, | ||
663 | {0xA9B6, 0xA9B9, WBP_Extend}, | ||
664 | {0xA9BA, 0xA9BB, WBP_Extend}, | ||
665 | {0xA9BC, 0xA9BC, WBP_Extend}, | ||
666 | {0xA9BD, 0xA9C0, WBP_Extend}, | ||
667 | {0xA9CF, 0xA9CF, WBP_ALetter}, | ||
668 | {0xA9D0, 0xA9D9, WBP_Numeric}, | ||
669 | {0xAA00, 0xAA28, WBP_ALetter}, | ||
670 | {0xAA29, 0xAA2E, WBP_Extend}, | ||
671 | {0xAA2F, 0xAA30, WBP_Extend}, | ||
672 | {0xAA31, 0xAA32, WBP_Extend}, | ||
673 | {0xAA33, 0xAA34, WBP_Extend}, | ||
674 | {0xAA35, 0xAA36, WBP_Extend}, | ||
675 | {0xAA40, 0xAA42, WBP_ALetter}, | ||
676 | {0xAA43, 0xAA43, WBP_Extend}, | ||
677 | {0xAA44, 0xAA4B, WBP_ALetter}, | ||
678 | {0xAA4C, 0xAA4C, WBP_Extend}, | ||
679 | {0xAA4D, 0xAA4D, WBP_Extend}, | ||
680 | {0xAA50, 0xAA59, WBP_Numeric}, | ||
681 | {0xAA7B, 0xAA7B, WBP_Extend}, | ||
682 | {0xAAB0, 0xAAB0, WBP_Extend}, | ||
683 | {0xAAB2, 0xAAB4, WBP_Extend}, | ||
684 | {0xAAB7, 0xAAB8, WBP_Extend}, | ||
685 | {0xAABE, 0xAABF, WBP_Extend}, | ||
686 | {0xAAC1, 0xAAC1, WBP_Extend}, | ||
687 | {0xAB01, 0xAB06, WBP_ALetter}, | ||
688 | {0xAB09, 0xAB0E, WBP_ALetter}, | ||
689 | {0xAB11, 0xAB16, WBP_ALetter}, | ||
690 | {0xAB20, 0xAB26, WBP_ALetter}, | ||
691 | {0xAB28, 0xAB2E, WBP_ALetter}, | ||
692 | {0xABC0, 0xABE2, WBP_ALetter}, | ||
693 | {0xABE3, 0xABE4, WBP_Extend}, | ||
694 | {0xABE5, 0xABE5, WBP_Extend}, | ||
695 | {0xABE6, 0xABE7, WBP_Extend}, | ||
696 | {0xABE8, 0xABE8, WBP_Extend}, | ||
697 | {0xABE9, 0xABEA, WBP_Extend}, | ||
698 | {0xABEC, 0xABEC, WBP_Extend}, | ||
699 | {0xABED, 0xABED, WBP_Extend}, | ||
700 | {0xABF0, 0xABF9, WBP_Numeric}, | ||
701 | {0xAC00, 0xD7A3, WBP_ALetter}, | ||
702 | {0xD7B0, 0xD7C6, WBP_ALetter}, | ||
703 | {0xD7CB, 0xD7FB, WBP_ALetter}, | ||
704 | {0xFB00, 0xFB06, WBP_ALetter}, | ||
705 | {0xFB13, 0xFB17, WBP_ALetter}, | ||
706 | {0xFB1D, 0xFB1D, WBP_ALetter}, | ||
707 | {0xFB1E, 0xFB1E, WBP_Extend}, | ||
708 | {0xFB1F, 0xFB28, WBP_ALetter}, | ||
709 | {0xFB2A, 0xFB36, WBP_ALetter}, | ||
710 | {0xFB38, 0xFB3C, WBP_ALetter}, | ||
711 | {0xFB3E, 0xFB3E, WBP_ALetter}, | ||
712 | {0xFB40, 0xFB41, WBP_ALetter}, | ||
713 | {0xFB43, 0xFB44, WBP_ALetter}, | ||
714 | {0xFB46, 0xFBB1, WBP_ALetter}, | ||
715 | {0xFBD3, 0xFD3D, WBP_ALetter}, | ||
716 | {0xFD50, 0xFD8F, WBP_ALetter}, | ||
717 | {0xFD92, 0xFDC7, WBP_ALetter}, | ||
718 | {0xFDF0, 0xFDFB, WBP_ALetter}, | ||
719 | {0xFE00, 0xFE0F, WBP_Extend}, | ||
720 | {0xFE10, 0xFE10, WBP_MidNum}, | ||
721 | {0xFE13, 0xFE13, WBP_MidLetter}, | ||
722 | {0xFE14, 0xFE14, WBP_MidNum}, | ||
723 | {0xFE20, 0xFE26, WBP_Extend}, | ||
724 | {0xFE33, 0xFE34, WBP_ExtendNumLet}, | ||
725 | {0xFE4D, 0xFE4F, WBP_ExtendNumLet}, | ||
726 | {0xFE50, 0xFE50, WBP_MidNum}, | ||
727 | {0xFE52, 0xFE52, WBP_MidNumLet}, | ||
728 | {0xFE54, 0xFE54, WBP_MidNum}, | ||
729 | {0xFE55, 0xFE55, WBP_MidLetter}, | ||
730 | {0xFE70, 0xFE74, WBP_ALetter}, | ||
731 | {0xFE76, 0xFEFC, WBP_ALetter}, | ||
732 | {0xFEFF, 0xFEFF, WBP_Format}, | ||
733 | {0xFF07, 0xFF07, WBP_MidNumLet}, | ||
734 | {0xFF0C, 0xFF0C, WBP_MidNum}, | ||
735 | {0xFF0E, 0xFF0E, WBP_MidNumLet}, | ||
736 | {0xFF1A, 0xFF1A, WBP_MidLetter}, | ||
737 | {0xFF1B, 0xFF1B, WBP_MidNum}, | ||
738 | {0xFF21, 0xFF3A, WBP_ALetter}, | ||
739 | {0xFF3F, 0xFF3F, WBP_ExtendNumLet}, | ||
740 | {0xFF41, 0xFF5A, WBP_ALetter}, | ||
741 | {0xFF66, 0xFF6F, WBP_Katakana}, | ||
742 | {0xFF70, 0xFF70, WBP_Katakana}, | ||
743 | {0xFF71, 0xFF9D, WBP_Katakana}, | ||
744 | {0xFF9E, 0xFF9F, WBP_Extend}, | ||
745 | {0xFFA0, 0xFFBE, WBP_ALetter}, | ||
746 | {0xFFC2, 0xFFC7, WBP_ALetter}, | ||
747 | {0xFFCA, 0xFFCF, WBP_ALetter}, | ||
748 | {0xFFD2, 0xFFD7, WBP_ALetter}, | ||
749 | {0xFFDA, 0xFFDC, WBP_ALetter}, | ||
750 | {0xFFF9, 0xFFFB, WBP_Format}, | ||
751 | {0x10000, 0x1000B, WBP_ALetter}, | ||
752 | {0x1000D, 0x10026, WBP_ALetter}, | ||
753 | {0x10028, 0x1003A, WBP_ALetter}, | ||
754 | {0x1003C, 0x1003D, WBP_ALetter}, | ||
755 | {0x1003F, 0x1004D, WBP_ALetter}, | ||
756 | {0x10050, 0x1005D, WBP_ALetter}, | ||
757 | {0x10080, 0x100FA, WBP_ALetter}, | ||
758 | {0x10140, 0x10174, WBP_ALetter}, | ||
759 | {0x101FD, 0x101FD, WBP_Extend}, | ||
760 | {0x10280, 0x1029C, WBP_ALetter}, | ||
761 | {0x102A0, 0x102D0, WBP_ALetter}, | ||
762 | {0x10300, 0x1031E, WBP_ALetter}, | ||
763 | {0x10330, 0x10340, WBP_ALetter}, | ||
764 | {0x10341, 0x10341, WBP_ALetter}, | ||
765 | {0x10342, 0x10349, WBP_ALetter}, | ||
766 | {0x1034A, 0x1034A, WBP_ALetter}, | ||
767 | {0x10380, 0x1039D, WBP_ALetter}, | ||
768 | {0x103A0, 0x103C3, WBP_ALetter}, | ||
769 | {0x103C8, 0x103CF, WBP_ALetter}, | ||
770 | {0x103D1, 0x103D5, WBP_ALetter}, | ||
771 | {0x10400, 0x1044F, WBP_ALetter}, | ||
772 | {0x10450, 0x1049D, WBP_ALetter}, | ||
773 | {0x104A0, 0x104A9, WBP_Numeric}, | ||
774 | {0x10800, 0x10805, WBP_ALetter}, | ||
775 | {0x10808, 0x10808, WBP_ALetter}, | ||
776 | {0x1080A, 0x10835, WBP_ALetter}, | ||
777 | {0x10837, 0x10838, WBP_ALetter}, | ||
778 | {0x1083C, 0x1083C, WBP_ALetter}, | ||
779 | {0x1083F, 0x10855, WBP_ALetter}, | ||
780 | {0x10900, 0x10915, WBP_ALetter}, | ||
781 | {0x10920, 0x10939, WBP_ALetter}, | ||
782 | {0x10A00, 0x10A00, WBP_ALetter}, | ||
783 | {0x10A01, 0x10A03, WBP_Extend}, | ||
784 | {0x10A05, 0x10A06, WBP_Extend}, | ||
785 | {0x10A0C, 0x10A0F, WBP_Extend}, | ||
786 | {0x10A10, 0x10A13, WBP_ALetter}, | ||
787 | {0x10A15, 0x10A17, WBP_ALetter}, | ||
788 | {0x10A19, 0x10A33, WBP_ALetter}, | ||
789 | {0x10A38, 0x10A3A, WBP_Extend}, | ||
790 | {0x10A3F, 0x10A3F, WBP_Extend}, | ||
791 | {0x10A60, 0x10A7C, WBP_ALetter}, | ||
792 | {0x10B00, 0x10B35, WBP_ALetter}, | ||
793 | {0x10B40, 0x10B55, WBP_ALetter}, | ||
794 | {0x10B60, 0x10B72, WBP_ALetter}, | ||
795 | {0x10C00, 0x10C48, WBP_ALetter}, | ||
796 | {0x11000, 0x11000, WBP_Extend}, | ||
797 | {0x11001, 0x11001, WBP_Extend}, | ||
798 | {0x11002, 0x11002, WBP_Extend}, | ||
799 | {0x11003, 0x11037, WBP_ALetter}, | ||
800 | {0x11038, 0x11046, WBP_Extend}, | ||
801 | {0x11066, 0x1106F, WBP_Numeric}, | ||
802 | {0x11080, 0x11081, WBP_Extend}, | ||
803 | {0x11082, 0x11082, WBP_Extend}, | ||
804 | {0x11083, 0x110AF, WBP_ALetter}, | ||
805 | {0x110B0, 0x110B2, WBP_Extend}, | ||
806 | {0x110B3, 0x110B6, WBP_Extend}, | ||
807 | {0x110B7, 0x110B8, WBP_Extend}, | ||
808 | {0x110B9, 0x110BA, WBP_Extend}, | ||
809 | {0x110BD, 0x110BD, WBP_Format}, | ||
810 | {0x12000, 0x1236E, WBP_ALetter}, | ||
811 | {0x12400, 0x12462, WBP_ALetter}, | ||
812 | {0x13000, 0x1342E, WBP_ALetter}, | ||
813 | {0x16800, 0x16A38, WBP_ALetter}, | ||
814 | {0x1B000, 0x1B000, WBP_Katakana}, | ||
815 | {0x1D165, 0x1D166, WBP_Extend}, | ||
816 | {0x1D167, 0x1D169, WBP_Extend}, | ||
817 | {0x1D16D, 0x1D172, WBP_Extend}, | ||
818 | {0x1D173, 0x1D17A, WBP_Format}, | ||
819 | {0x1D17B, 0x1D182, WBP_Extend}, | ||
820 | {0x1D185, 0x1D18B, WBP_Extend}, | ||
821 | {0x1D1AA, 0x1D1AD, WBP_Extend}, | ||
822 | {0x1D242, 0x1D244, WBP_Extend}, | ||
823 | {0x1D400, 0x1D454, WBP_ALetter}, | ||
824 | {0x1D456, 0x1D49C, WBP_ALetter}, | ||
825 | {0x1D49E, 0x1D49F, WBP_ALetter}, | ||
826 | {0x1D4A2, 0x1D4A2, WBP_ALetter}, | ||
827 | {0x1D4A5, 0x1D4A6, WBP_ALetter}, | ||
828 | {0x1D4A9, 0x1D4AC, WBP_ALetter}, | ||
829 | {0x1D4AE, 0x1D4B9, WBP_ALetter}, | ||
830 | {0x1D4BB, 0x1D4BB, WBP_ALetter}, | ||
831 | {0x1D4BD, 0x1D4C3, WBP_ALetter}, | ||
832 | {0x1D4C5, 0x1D505, WBP_ALetter}, | ||
833 | {0x1D507, 0x1D50A, WBP_ALetter}, | ||
834 | {0x1D50D, 0x1D514, WBP_ALetter}, | ||
835 | {0x1D516, 0x1D51C, WBP_ALetter}, | ||
836 | {0x1D51E, 0x1D539, WBP_ALetter}, | ||
837 | {0x1D53B, 0x1D53E, WBP_ALetter}, | ||
838 | {0x1D540, 0x1D544, WBP_ALetter}, | ||
839 | {0x1D546, 0x1D546, WBP_ALetter}, | ||
840 | {0x1D54A, 0x1D550, WBP_ALetter}, | ||
841 | {0x1D552, 0x1D6A5, WBP_ALetter}, | ||
842 | {0x1D6A8, 0x1D6C0, WBP_ALetter}, | ||
843 | {0x1D6C2, 0x1D6DA, WBP_ALetter}, | ||
844 | {0x1D6DC, 0x1D6FA, WBP_ALetter}, | ||
845 | {0x1D6FC, 0x1D714, WBP_ALetter}, | ||
846 | {0x1D716, 0x1D734, WBP_ALetter}, | ||
847 | {0x1D736, 0x1D74E, WBP_ALetter}, | ||
848 | {0x1D750, 0x1D76E, WBP_ALetter}, | ||
849 | {0x1D770, 0x1D788, WBP_ALetter}, | ||
850 | {0x1D78A, 0x1D7A8, WBP_ALetter}, | ||
851 | {0x1D7AA, 0x1D7C2, WBP_ALetter}, | ||
852 | {0x1D7C4, 0x1D7CB, WBP_ALetter}, | ||
853 | {0x1D7CE, 0x1D7FF, WBP_Numeric}, | ||
854 | {0xE0001, 0xE0001, WBP_Format}, | ||
855 | {0xE0020, 0xE007F, WBP_Format}, | ||
856 | {0xE0100, 0xE01EF, WBP_Extend}, | ||
857 | {0xFFFFFFFF, 0xFFFFFFFF, WBP_Undefined} | ||
858 | }; | ||
diff --git a/libraries/evas/src/static_deps/liblinebreak/wordbreakdef.h b/libraries/evas/src/static_deps/liblinebreak/wordbreakdef.h new file mode 100644 index 0000000..331cd01 --- /dev/null +++ b/libraries/evas/src/static_deps/liblinebreak/wordbreakdef.h | |||
@@ -0,0 +1,80 @@ | |||
1 | /* vim: set tabstop=4 shiftwidth=4: */ | ||
2 | |||
3 | /* | ||
4 | * Word breaking in a Unicode sequence. Designed to be used in a | ||
5 | * generic text renderer. | ||
6 | * | ||
7 | * Copyright (C) 2011-2011 Tom Hacohen <tom@stosb.com> | ||
8 | * | ||
9 | * This software is provided 'as-is', without any express or implied | ||
10 | * warranty. In no event will the author be held liable for any damages | ||
11 | * arising from the use of this software. | ||
12 | * | ||
13 | * Permission is granted to anyone to use this software for any purpose, | ||
14 | * including commercial applications, and to alter it and redistribute | ||
15 | * it freely, subject to the following restrictions: | ||
16 | * | ||
17 | * 1. The origin of this software must not be misrepresented; you must | ||
18 | * not claim that you wrote the original software. If you use this | ||
19 | * software in a product, an acknowledgement in the product | ||
20 | * documentation would be appreciated but is not required. | ||
21 | * 2. Altered source versions must be plainly marked as such, and must | ||
22 | * not be misrepresented as being the original software. | ||
23 | * 3. This notice may not be removed or altered from any source | ||
24 | * distribution. | ||
25 | * | ||
26 | * The main reference is Unicode Standard Annex 29 (UAX #29): | ||
27 | * <URL:http://unicode.org/reports/tr29> | ||
28 | * | ||
29 | * When this library was designed, this annex was at Revision 17, for | ||
30 | * Unicode 6.0.0: | ||
31 | * <URL:http://www.unicode.org/reports/tr29/tr29-17.html> | ||
32 | * | ||
33 | * The Unicode Terms of Use are available at | ||
34 | * <URL:http://www.unicode.org/copyright.html> | ||
35 | */ | ||
36 | |||
37 | /** | ||
38 | * @file wordbreakdef.h | ||
39 | * | ||
40 | * Definitions of internal data structures, declarations of global | ||
41 | * variables, and function prototypes for the word breaking algorithm. | ||
42 | * | ||
43 | * @version 2.0, 2011/12/12 | ||
44 | * @author Tom Hacohen | ||
45 | */ | ||
46 | |||
47 | /** | ||
48 | * Word break classes. This is a direct mapping of Table 3 of Unicode | ||
49 | * Standard Annex 29, Revision 17. | ||
50 | */ | ||
51 | enum WordBreakClass | ||
52 | { | ||
53 | WBP_Undefined, | ||
54 | |||
55 | /* The following break classes are treated in the pair table. */ | ||
56 | WBP_CR, | ||
57 | WBP_LF, | ||
58 | WBP_Newline, | ||
59 | WBP_Extend, | ||
60 | WBP_Format, | ||
61 | WBP_Katakana, | ||
62 | WBP_ALetter, | ||
63 | WBP_MidNumLet, | ||
64 | WBP_MidLetter, | ||
65 | WBP_MidNum, | ||
66 | WBP_Numeric, | ||
67 | WBP_ExtendNumLet, | ||
68 | WBP_Any | ||
69 | }; | ||
70 | |||
71 | /** | ||
72 | * Struct for entries of word break properties. The array of the | ||
73 | * entries \e must be sorted. | ||
74 | */ | ||
75 | struct WordBreakProperties | ||
76 | { | ||
77 | utf32_t start; /**< Starting coding point */ | ||
78 | utf32_t end; /**< End coding point */ | ||
79 | enum WordBreakClass prop; /**< The word breaking property */ | ||
80 | }; | ||
diff --git a/libraries/evas/src/tests/Makefile.in b/libraries/evas/src/tests/Makefile.in index c598c3d..8790c33 100644 --- a/libraries/evas/src/tests/Makefile.in +++ b/libraries/evas/src/tests/Makefile.in | |||
@@ -203,8 +203,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
203 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 203 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
204 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 204 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
205 | PKG_CONFIG = @PKG_CONFIG@ | 205 | PKG_CONFIG = @PKG_CONFIG@ |
206 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
207 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
208 | PNG_CFLAGS = @PNG_CFLAGS@ | 206 | PNG_CFLAGS = @PNG_CFLAGS@ |
209 | PNG_LIBS = @PNG_LIBS@ | 207 | PNG_LIBS = @PNG_LIBS@ |
210 | RANLIB = @RANLIB@ | 208 | RANLIB = @RANLIB@ |
@@ -221,6 +219,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
221 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 219 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
222 | VERSION = @VERSION@ | 220 | VERSION = @VERSION@ |
223 | VMAJ = @VMAJ@ | 221 | VMAJ = @VMAJ@ |
222 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
223 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
224 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 224 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
225 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 225 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
226 | XCB_CFLAGS = @XCB_CFLAGS@ | 226 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -302,6 +302,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
302 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 302 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
303 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 303 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
304 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 304 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
305 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
306 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
307 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
308 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
305 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 309 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
306 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 310 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
307 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 311 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/tests/evas_test_callbacks.c b/libraries/evas/src/tests/evas_test_callbacks.c index 675ee1c..164851e 100644 --- a/libraries/evas/src/tests/evas_test_callbacks.c +++ b/libraries/evas/src/tests/evas_test_callbacks.c | |||
@@ -28,7 +28,7 @@ do \ | |||
28 | } \ | 28 | } \ |
29 | while (0) | 29 | while (0) |
30 | 30 | ||
31 | static int counter = 1; | 31 | static uintptr_t counter = 1; |
32 | 32 | ||
33 | static void | 33 | static void |
34 | _obj_event_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) | 34 | _obj_event_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) |
@@ -37,7 +37,7 @@ _obj_event_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) | |||
37 | (void) obj; | 37 | (void) obj; |
38 | (void) event_info; | 38 | (void) event_info; |
39 | 39 | ||
40 | fail_if(((int) data) != counter); | 40 | fail_if(((uintptr_t) data) != counter); |
41 | 41 | ||
42 | counter++; | 42 | counter++; |
43 | } | 43 | } |
@@ -83,7 +83,7 @@ _event_cb(void *data, Evas *e, void *event_info) | |||
83 | (void) e; | 83 | (void) e; |
84 | (void) event_info; | 84 | (void) event_info; |
85 | 85 | ||
86 | fail_if(((int) data) != counter); | 86 | fail_if(((uintptr_t) data) != counter); |
87 | 87 | ||
88 | counter++; | 88 | counter++; |
89 | } | 89 | } |
diff --git a/libraries/evas/src/tests/evas_test_textblock.c b/libraries/evas/src/tests/evas_test_textblock.c index 6a28353..cf6a78b 100644 --- a/libraries/evas/src/tests/evas_test_textblock.c +++ b/libraries/evas/src/tests/evas_test_textblock.c | |||
@@ -21,9 +21,7 @@ _evas_textblock_format_offset_get(const Evas_Object_Textblock_Node_Format *n); | |||
21 | 21 | ||
22 | static const char *style_buf = | 22 | static const char *style_buf = |
23 | "DEFAULT='font=Sans font_size=10 color=#000 text_class=entry'" | 23 | "DEFAULT='font=Sans font_size=10 color=#000 text_class=entry'" |
24 | "br='\n'" | 24 | "newline='br'" |
25 | "ps='ps'" | ||
26 | "tab='\t'" | ||
27 | "b='+ font=Sans:style=bold'"; | 25 | "b='+ font=Sans:style=bold'"; |
28 | 26 | ||
29 | #define START_TB_TEST() \ | 27 | #define START_TB_TEST() \ |
@@ -61,7 +59,7 @@ while (0) | |||
61 | START_TEST(evas_textblock_simple) | 59 | START_TEST(evas_textblock_simple) |
62 | { | 60 | { |
63 | START_TB_TEST(); | 61 | START_TB_TEST(); |
64 | const char *buf = "Th<i>i</i>s is a <br> te<b>s</b>t."; | 62 | const char *buf = "Th<i>i</i>s is a <br/> te<b>s</b>t."; |
65 | evas_object_textblock_text_markup_set(tb, buf); | 63 | evas_object_textblock_text_markup_set(tb, buf); |
66 | fail_if(strcmp(evas_object_textblock_text_markup_get(tb), buf)); | 64 | fail_if(strcmp(evas_object_textblock_text_markup_get(tb), buf)); |
67 | END_TB_TEST(); | 65 | END_TB_TEST(); |
@@ -95,12 +93,12 @@ START_TEST(evas_textblock_cursor) | |||
95 | Evas_Coord x, y, w, h; | 93 | Evas_Coord x, y, w, h; |
96 | size_t i, len; | 94 | size_t i, len; |
97 | Evas_Coord nw, nh; | 95 | Evas_Coord nw, nh; |
98 | const char *buf = "This is a<br> test.<ps>Lets see if this works.<ps>עוד פסקה."; | 96 | const char *buf = "This is a<br/> test.<ps/>Lets see if this works.<ps/>עוד פסקה."; |
99 | 97 | ||
100 | /* Walk the textblock using cursor_char_next */ | 98 | /* Walk the textblock using cursor_char_next */ |
101 | evas_object_textblock_text_markup_set(tb, buf); | 99 | evas_object_textblock_text_markup_set(tb, buf); |
102 | fail_if(strcmp(evas_object_textblock_text_markup_get(tb), buf)); | 100 | fail_if(strcmp(evas_object_textblock_text_markup_get(tb), buf)); |
103 | len = eina_unicode_utf8_get_len(buf) - 9; /* 9 because len(<br>) == 1 and len(<ps>) == 1 */ | 101 | len = eina_unicode_utf8_get_len(buf) - 12; /* 12 because len(<br/>) == 1 and len(<ps/>) == 1 */ |
104 | for (i = 0 ; i < len ; i++) | 102 | for (i = 0 ; i < len ; i++) |
105 | { | 103 | { |
106 | _CHECK_CURSOR_COORDS(); | 104 | _CHECK_CURSOR_COORDS(); |
@@ -284,7 +282,7 @@ START_TEST(evas_textblock_cursor) | |||
284 | /* Paragraph text get */ | 282 | /* Paragraph text get */ |
285 | evas_textblock_cursor_paragraph_first(cur); | 283 | evas_textblock_cursor_paragraph_first(cur); |
286 | fail_if(strcmp(evas_textblock_cursor_paragraph_text_get(cur), | 284 | fail_if(strcmp(evas_textblock_cursor_paragraph_text_get(cur), |
287 | "This is a<br> test.")); | 285 | "This is a<br/> test.")); |
288 | evas_textblock_cursor_paragraph_next(cur); | 286 | evas_textblock_cursor_paragraph_next(cur); |
289 | fail_if(strcmp(evas_textblock_cursor_paragraph_text_get(cur), | 287 | fail_if(strcmp(evas_textblock_cursor_paragraph_text_get(cur), |
290 | "Lets see if this works.")); | 288 | "Lets see if this works.")); |
@@ -294,9 +292,9 @@ START_TEST(evas_textblock_cursor) | |||
294 | 292 | ||
295 | /* Paragraph length get */ | 293 | /* Paragraph length get */ |
296 | evas_textblock_cursor_paragraph_first(cur); | 294 | evas_textblock_cursor_paragraph_first(cur); |
297 | /* -3 because len(<br>) == 1 */ | 295 | /* -4 because len(<br/>) == 1 */ |
298 | fail_if(evas_textblock_cursor_paragraph_text_length_get(cur) != | 296 | fail_if(evas_textblock_cursor_paragraph_text_length_get(cur) != |
299 | eina_unicode_utf8_get_len("This is a<br> test.") - 3); | 297 | eina_unicode_utf8_get_len("This is a<br/> test.") - 4); |
300 | evas_textblock_cursor_paragraph_next(cur); | 298 | evas_textblock_cursor_paragraph_next(cur); |
301 | fail_if(evas_textblock_cursor_paragraph_text_length_get(cur) != | 299 | fail_if(evas_textblock_cursor_paragraph_text_length_get(cur) != |
302 | eina_unicode_utf8_get_len("Lets see if this works.")); | 300 | eina_unicode_utf8_get_len("Lets see if this works.")); |
@@ -308,7 +306,7 @@ START_TEST(evas_textblock_cursor) | |||
308 | evas_textblock_cursor_pos_set(cur, 0); | 306 | evas_textblock_cursor_pos_set(cur, 0); |
309 | fail_if(strcmp(evas_textblock_cursor_content_get(cur), "T")); | 307 | fail_if(strcmp(evas_textblock_cursor_content_get(cur), "T")); |
310 | evas_textblock_cursor_pos_set(cur, 9); | 308 | evas_textblock_cursor_pos_set(cur, 9); |
311 | fail_if(strcmp(evas_textblock_cursor_content_get(cur), "<br>")); | 309 | fail_if(strcmp(evas_textblock_cursor_content_get(cur), "<br/>")); |
312 | evas_textblock_cursor_pos_set(cur, 43); | 310 | evas_textblock_cursor_pos_set(cur, 43); |
313 | fail_if(strcmp(evas_textblock_cursor_content_get(cur), "ד")); | 311 | fail_if(strcmp(evas_textblock_cursor_content_get(cur), "ד")); |
314 | 312 | ||
@@ -414,12 +412,12 @@ START_TEST(evas_textblock_cursor) | |||
414 | 412 | ||
415 | #ifdef HAVE_FRIBIDI | 413 | #ifdef HAVE_FRIBIDI |
416 | evas_object_textblock_text_markup_set(tb, | 414 | evas_object_textblock_text_markup_set(tb, |
417 | "testנסיוןtestנסיון<ps>" | 415 | "testנסיוןtestנסיון<ps/>" |
418 | "נסיוןtestנסיוןtest<ps>" | 416 | "נסיוןtestנסיוןtest<ps/>" |
419 | "testנסיוןtest<ps>" | 417 | "testנסיוןtest<ps/>" |
420 | "נסיוןtestנסיון<ps>" | 418 | "נסיוןtestנסיון<ps/>" |
421 | "testנסיון<br>נסיון<ps>" | 419 | "testנסיון<br/>נסיון<ps/>" |
422 | "נסיוןtest<br>test" | 420 | "נסיוןtest<br/>test" |
423 | ); | 421 | ); |
424 | 422 | ||
425 | for (i = 0 ; i < 8 ; i++) | 423 | for (i = 0 ; i < 8 ; i++) |
@@ -568,6 +566,32 @@ START_TEST(evas_textblock_cursor) | |||
568 | fail_if(evas_textblock_cursor_compare(main_cur, cur)); | 566 | fail_if(evas_textblock_cursor_compare(main_cur, cur)); |
569 | } | 567 | } |
570 | 568 | ||
569 | { | ||
570 | const char *buf_wb = "a This is_a t:e.s't a"; | ||
571 | evas_object_textblock_text_markup_set(tb, buf_wb); | ||
572 | |||
573 | /* Word start/end */ | ||
574 | evas_textblock_cursor_pos_set(cur, 3); | ||
575 | evas_textblock_cursor_word_start(cur); | ||
576 | fail_if(2 != evas_textblock_cursor_pos_get(cur)); | ||
577 | evas_textblock_cursor_word_end(cur); | ||
578 | fail_if(5 != evas_textblock_cursor_pos_get(cur)); | ||
579 | |||
580 | evas_textblock_cursor_pos_set(cur, 13); | ||
581 | evas_textblock_cursor_word_end(cur); | ||
582 | fail_if(18 != evas_textblock_cursor_pos_get(cur)); | ||
583 | evas_textblock_cursor_word_start(cur); | ||
584 | fail_if(12 != evas_textblock_cursor_pos_get(cur)); | ||
585 | evas_textblock_cursor_word_start(cur); | ||
586 | fail_if(12 != evas_textblock_cursor_pos_get(cur)); | ||
587 | evas_textblock_cursor_word_start(cur); | ||
588 | fail_if(12 != evas_textblock_cursor_pos_get(cur)); | ||
589 | evas_textblock_cursor_word_end(cur); | ||
590 | fail_if(18 != evas_textblock_cursor_pos_get(cur)); | ||
591 | evas_textblock_cursor_word_end(cur); | ||
592 | fail_if(18 != evas_textblock_cursor_pos_get(cur)); | ||
593 | } | ||
594 | |||
571 | END_TB_TEST(); | 595 | END_TB_TEST(); |
572 | } | 596 | } |
573 | END_TEST | 597 | END_TEST |
@@ -723,7 +747,7 @@ START_TEST(evas_textblock_format_removal) | |||
723 | 747 | ||
724 | /* Range deletion across paragraphs */ | 748 | /* Range deletion across paragraphs */ |
725 | evas_object_textblock_text_markup_set(tb, | 749 | evas_object_textblock_text_markup_set(tb, |
726 | "Th<b>is a<a>te<ps>" | 750 | "Th<b>is a<a>te<ps/>" |
727 | "s</a>st</b>."); | 751 | "s</a>st</b>."); |
728 | evas_textblock_cursor_pos_set(cur, 6); | 752 | evas_textblock_cursor_pos_set(cur, 6); |
729 | evas_textblock_cursor_pos_set(main_cur, 10); | 753 | evas_textblock_cursor_pos_set(main_cur, 10); |
@@ -749,14 +773,14 @@ START_TEST(evas_textblock_format_removal) | |||
749 | fail_if (fnode); | 773 | fail_if (fnode); |
750 | 774 | ||
751 | /* Two formats across different paragraphs with notihng in between. */ | 775 | /* Two formats across different paragraphs with notihng in between. */ |
752 | evas_object_textblock_text_markup_set(tb, "<b><ps></b>"); | 776 | evas_object_textblock_text_markup_set(tb, "<b><ps/></b>"); |
753 | evas_textblock_cursor_pos_set(cur, 0); | 777 | evas_textblock_cursor_pos_set(cur, 0); |
754 | evas_textblock_cursor_char_delete(cur); | 778 | evas_textblock_cursor_char_delete(cur); |
755 | fnode = evas_textblock_node_format_first_get(tb); | 779 | fnode = evas_textblock_node_format_first_get(tb); |
756 | fail_if (fnode); | 780 | fail_if (fnode); |
757 | 781 | ||
758 | /* Try with range */ | 782 | /* Try with range */ |
759 | evas_object_textblock_text_markup_set(tb, "<b><ps></b>"); | 783 | evas_object_textblock_text_markup_set(tb, "<b><ps/></b>"); |
760 | evas_textblock_cursor_pos_set(cur, 0); | 784 | evas_textblock_cursor_pos_set(cur, 0); |
761 | evas_textblock_cursor_pos_set(main_cur, 1); | 785 | evas_textblock_cursor_pos_set(main_cur, 1); |
762 | evas_textblock_cursor_range_delete(cur, main_cur); | 786 | evas_textblock_cursor_range_delete(cur, main_cur); |
@@ -765,7 +789,7 @@ START_TEST(evas_textblock_format_removal) | |||
765 | 789 | ||
766 | /* Verify fmt position and REP_CHAR positions are the same */ | 790 | /* Verify fmt position and REP_CHAR positions are the same */ |
767 | evas_object_textblock_text_markup_set(tb, | 791 | evas_object_textblock_text_markup_set(tb, |
768 | "This is<ps>an <item absize=93x152 vsize=ascent></>a."); | 792 | "This is<ps/>an <item absize=93x152 vsize=ascent></>a."); |
769 | evas_textblock_cursor_pos_set(cur, 7); | 793 | evas_textblock_cursor_pos_set(cur, 7); |
770 | evas_textblock_cursor_char_delete(cur); | 794 | evas_textblock_cursor_char_delete(cur); |
771 | fnode = evas_textblock_node_format_first_get(tb); | 795 | fnode = evas_textblock_node_format_first_get(tb); |
@@ -1091,9 +1115,9 @@ START_TEST(evas_textblock_wrapping) | |||
1091 | evas_object_textblock_text_markup_set(tb, "a"); | 1115 | evas_object_textblock_text_markup_set(tb, "a"); |
1092 | evas_object_textblock_size_formatted_get(tb, &bw, &bh); | 1116 | evas_object_textblock_size_formatted_get(tb, &bw, &bh); |
1093 | evas_object_textblock_text_markup_set(tb, | 1117 | evas_object_textblock_text_markup_set(tb, |
1094 | "aaaa aaaa aaa aa aaa<ps>" | 1118 | "aaaa aaaa aaa aa aaa<ps/>" |
1095 | "aaaa aaa aaa aaa aaa<ps>" | 1119 | "aaaa aaa aaa aaa aaa<ps/>" |
1096 | "a aaaaa aaaaaaaaaaaaaa<br>aaaaa<ps>" | 1120 | "a aaaaa aaaaaaaaaaaaaa<br/>aaaaa<ps/>" |
1097 | "aaaaaa" | 1121 | "aaaaaa" |
1098 | ); | 1122 | ); |
1099 | evas_textblock_cursor_format_prepend(cur, "+ wrap=char"); | 1123 | evas_textblock_cursor_format_prepend(cur, "+ wrap=char"); |
@@ -1113,9 +1137,9 @@ START_TEST(evas_textblock_wrapping) | |||
1113 | evas_object_textblock_text_markup_set(tb, "aaaaaa"); | 1137 | evas_object_textblock_text_markup_set(tb, "aaaaaa"); |
1114 | evas_object_textblock_size_formatted_get(tb, &bw, &bh); | 1138 | evas_object_textblock_size_formatted_get(tb, &bw, &bh); |
1115 | evas_object_textblock_text_markup_set(tb, | 1139 | evas_object_textblock_text_markup_set(tb, |
1116 | "aaaa aaaa aaa aa aaa<ps>" | 1140 | "aaaa aaaa aaa aa aaa<ps/>" |
1117 | "aaaa aaa aaa aaa aaa<ps>" | 1141 | "aaaa aaa aaa aaa aaa<ps/>" |
1118 | "a aaaaa aaaaaa<br>aaaaa<ps>" | 1142 | "a aaaaa aaaaaa<br/>aaaaa<ps/>" |
1119 | "aaaaa" | 1143 | "aaaaa" |
1120 | ); | 1144 | ); |
1121 | evas_textblock_cursor_format_prepend(cur, "+ wrap=word"); | 1145 | evas_textblock_cursor_format_prepend(cur, "+ wrap=word"); |
@@ -1134,9 +1158,9 @@ START_TEST(evas_textblock_wrapping) | |||
1134 | evas_object_textblock_text_markup_set(tb, "a"); | 1158 | evas_object_textblock_text_markup_set(tb, "a"); |
1135 | evas_object_textblock_size_formatted_get(tb, &bw, &bh); | 1159 | evas_object_textblock_size_formatted_get(tb, &bw, &bh); |
1136 | evas_object_textblock_text_markup_set(tb, | 1160 | evas_object_textblock_text_markup_set(tb, |
1137 | "aaaa aaaa aaa aa aaa<ps>" | 1161 | "aaaa aaaa aaa aa aaa<ps/>" |
1138 | "aaaa aaa aaa aaa aaa<ps>" | 1162 | "aaaa aaa aaa aaa aaa<ps/>" |
1139 | "a aaaaa aaaaaa<br>aaaaa<ps>" | 1163 | "a aaaaa aaaaaa<br/>aaaaa<ps/>" |
1140 | "aaaaa" | 1164 | "aaaaa" |
1141 | ); | 1165 | ); |
1142 | evas_textblock_cursor_format_prepend(cur, "+ wrap=mixed"); | 1166 | evas_textblock_cursor_format_prepend(cur, "+ wrap=mixed"); |
@@ -1156,26 +1180,26 @@ START_TEST(evas_textblock_wrapping) | |||
1156 | int wrap_items = sizeof(wrap_style) / sizeof(*wrap_style); | 1180 | int wrap_items = sizeof(wrap_style) / sizeof(*wrap_style); |
1157 | 1181 | ||
1158 | evas_object_textblock_text_markup_set(tb, | 1182 | evas_object_textblock_text_markup_set(tb, |
1159 | "This is an entry widget in this window that<br>" | 1183 | "This is an entry widget in this window that<br/>" |
1160 | "uses markup <b>like this</> for styling and<br>" | 1184 | "uses markup <b>like this</> for styling and<br/>" |
1161 | "formatting <em>like this</>, as well as<br>" | 1185 | "formatting <em>like this</>, as well as<br/>" |
1162 | "<a href=X><link>links in the text</></a>, so enter text<br>" | 1186 | "<a href=X><link>links in the text</></a>, so enter text<br/>" |
1163 | "in here to edit it. By the way, links are<br>" | 1187 | "in here to edit it. By the way, links are<br/>" |
1164 | "called <a href=anc-02>Anchors</a> so you will need<br>" | 1188 | "called <a href=anc-02>Anchors</a> so you will need<br/>" |
1165 | "to refer to them this way.<br>" | 1189 | "to refer to them this way.<br/>" |
1166 | "<br>" | 1190 | "<br/>" |
1167 | 1191 | ||
1168 | "Also you can stick in items with (relsize + ascent): " | 1192 | "Also you can stick in items with (relsize + ascent): " |
1169 | "<item relsize=16x16 vsize=ascent href=emoticon/evil-laugh></item>" | 1193 | "<item relsize=16x16 vsize=ascent href=emoticon/evil-laugh></item>" |
1170 | " (full) " | 1194 | " (full) " |
1171 | "<item relsize=16x16 vsize=full href=emoticon/guilty-smile></item>" | 1195 | "<item relsize=16x16 vsize=full href=emoticon/guilty-smile></item>" |
1172 | " (to the left)<br>" | 1196 | " (to the left)<br/>" |
1173 | 1197 | ||
1174 | "Also (size + ascent): " | 1198 | "Also (size + ascent): " |
1175 | "<item size=16x16 vsize=ascent href=emoticon/haha></item>" | 1199 | "<item size=16x16 vsize=ascent href=emoticon/haha></item>" |
1176 | " (full) " | 1200 | " (full) " |
1177 | "<item size=16x16 vsize=full href=emoticon/happy-panting></item>" | 1201 | "<item size=16x16 vsize=full href=emoticon/happy-panting></item>" |
1178 | " (before this)<br>" | 1202 | " (before this)<br/>" |
1179 | 1203 | ||
1180 | "And as well (absize + ascent): " | 1204 | "And as well (absize + ascent): " |
1181 | "<item absize=64x64 vsize=ascent href=emoticon/knowing-grin></item>" | 1205 | "<item absize=64x64 vsize=ascent href=emoticon/knowing-grin></item>" |
@@ -1214,6 +1238,13 @@ START_TEST(evas_textblock_wrapping) | |||
1214 | evas_object_textblock_size_formatted_get(tb, &w, &h); | 1238 | evas_object_textblock_size_formatted_get(tb, &w, &h); |
1215 | fail_if((w > (nw / 2)) || (h != nh)); | 1239 | fail_if((w > (nw / 2)) || (h != nh)); |
1216 | 1240 | ||
1241 | evas_object_textblock_text_markup_set(tb, "aaaaaaaaaaaaaaaaaa<br/>b"); | ||
1242 | evas_textblock_cursor_format_prepend(cur, "+ ellipsis=1.0 wrap=word"); | ||
1243 | evas_object_textblock_size_native_get(tb, &nw, &nh); | ||
1244 | evas_object_resize(tb, nw / 2, nh * 2); | ||
1245 | evas_object_textblock_size_formatted_get(tb, &w, &h); | ||
1246 | fail_if(w > (nw / 2)); | ||
1247 | |||
1217 | END_TB_TEST(); | 1248 | END_TB_TEST(); |
1218 | } | 1249 | } |
1219 | END_TEST | 1250 | END_TEST |
@@ -1223,7 +1254,7 @@ START_TEST(evas_textblock_various) | |||
1223 | { | 1254 | { |
1224 | Evas_Coord w, h, bw, bh; | 1255 | Evas_Coord w, h, bw, bh; |
1225 | START_TB_TEST(); | 1256 | START_TB_TEST(); |
1226 | const char *buf = "This<ps>textblock<ps>has<ps>a<ps>lot<ps>of<ps>lines<ps>."; | 1257 | const char *buf = "This<ps/>textblock<ps/>has<ps/>a<ps/>lot<ps/>of<ps/>lines<ps/>."; |
1227 | evas_object_textblock_text_markup_set(tb, buf); | 1258 | evas_object_textblock_text_markup_set(tb, buf); |
1228 | evas_object_textblock_size_formatted_get(tb, &w, &h); | 1259 | evas_object_textblock_size_formatted_get(tb, &w, &h); |
1229 | /* Move outside of the screen so it'll have to search for the correct | 1260 | /* Move outside of the screen so it'll have to search for the correct |
@@ -1241,15 +1272,15 @@ START_TEST(evas_textblock_various) | |||
1241 | /* Items have correct text node information */ | 1272 | /* Items have correct text node information */ |
1242 | evas_object_textblock_text_markup_set(tb, ""); | 1273 | evas_object_textblock_text_markup_set(tb, ""); |
1243 | fail_if(!_evas_textblock_check_item_node_link(tb)); | 1274 | fail_if(!_evas_textblock_check_item_node_link(tb)); |
1244 | evas_object_textblock_text_markup_set(tb, "<ps>"); | 1275 | evas_object_textblock_text_markup_set(tb, "<ps/>"); |
1245 | fail_if(!_evas_textblock_check_item_node_link(tb)); | 1276 | fail_if(!_evas_textblock_check_item_node_link(tb)); |
1246 | evas_object_textblock_text_markup_set(tb, "a<ps>"); | 1277 | evas_object_textblock_text_markup_set(tb, "a<ps/>"); |
1247 | fail_if(!_evas_textblock_check_item_node_link(tb)); | 1278 | fail_if(!_evas_textblock_check_item_node_link(tb)); |
1248 | evas_object_textblock_text_markup_set(tb, "a<ps>a"); | 1279 | evas_object_textblock_text_markup_set(tb, "a<ps/>a"); |
1249 | fail_if(!_evas_textblock_check_item_node_link(tb)); | 1280 | fail_if(!_evas_textblock_check_item_node_link(tb)); |
1250 | evas_object_textblock_text_markup_set(tb, "a<ps>a<ps>"); | 1281 | evas_object_textblock_text_markup_set(tb, "a<ps/>a<ps/>"); |
1251 | fail_if(!_evas_textblock_check_item_node_link(tb)); | 1282 | fail_if(!_evas_textblock_check_item_node_link(tb)); |
1252 | evas_object_textblock_text_markup_set(tb, "a<ps>a<ps>a"); | 1283 | evas_object_textblock_text_markup_set(tb, "a<ps/>a<ps/>a"); |
1253 | fail_if(!_evas_textblock_check_item_node_link(tb)); | 1284 | fail_if(!_evas_textblock_check_item_node_link(tb)); |
1254 | 1285 | ||
1255 | END_TB_TEST(); | 1286 | END_TB_TEST(); |
@@ -1260,7 +1291,7 @@ END_TEST | |||
1260 | START_TEST(evas_textblock_geometries) | 1291 | START_TEST(evas_textblock_geometries) |
1261 | { | 1292 | { |
1262 | START_TB_TEST(); | 1293 | START_TB_TEST(); |
1263 | const char *buf = "This is a <br> test."; | 1294 | const char *buf = "This is a <br/> test."; |
1264 | evas_object_textblock_text_markup_set(tb, buf); | 1295 | evas_object_textblock_text_markup_set(tb, buf); |
1265 | 1296 | ||
1266 | /* Single line range */ | 1297 | /* Single line range */ |
@@ -1327,7 +1358,7 @@ END_TEST | |||
1327 | START_TEST(evas_textblock_editing) | 1358 | START_TEST(evas_textblock_editing) |
1328 | { | 1359 | { |
1329 | START_TB_TEST(); | 1360 | START_TB_TEST(); |
1330 | const char *buf = "First par.<ps>Second par."; | 1361 | const char *buf = "First par.<ps/>Second par."; |
1331 | evas_object_textblock_text_markup_set(tb, buf); | 1362 | evas_object_textblock_text_markup_set(tb, buf); |
1332 | Evas_Textblock_Cursor *main_cur = evas_object_textblock_cursor_get(tb); | 1363 | Evas_Textblock_Cursor *main_cur = evas_object_textblock_cursor_get(tb); |
1333 | 1364 | ||
@@ -1346,7 +1377,7 @@ START_TEST(evas_textblock_editing) | |||
1346 | evas_textblock_cursor_paragraph_first(cur); | 1377 | evas_textblock_cursor_paragraph_first(cur); |
1347 | evas_textblock_cursor_char_delete(cur); | 1378 | evas_textblock_cursor_char_delete(cur); |
1348 | fail_if(strcmp(evas_object_textblock_text_markup_get(tb), | 1379 | fail_if(strcmp(evas_object_textblock_text_markup_get(tb), |
1349 | "irst par.<ps>Second par.")); | 1380 | "irst par.<ps/>Second par.")); |
1350 | 1381 | ||
1351 | /* Delete some arbitrary char */ | 1382 | /* Delete some arbitrary char */ |
1352 | evas_textblock_cursor_char_next(cur); | 1383 | evas_textblock_cursor_char_next(cur); |
@@ -1354,14 +1385,14 @@ START_TEST(evas_textblock_editing) | |||
1354 | evas_textblock_cursor_char_next(cur); | 1385 | evas_textblock_cursor_char_next(cur); |
1355 | evas_textblock_cursor_char_delete(cur); | 1386 | evas_textblock_cursor_char_delete(cur); |
1356 | fail_if(strcmp(evas_object_textblock_text_markup_get(tb), | 1387 | fail_if(strcmp(evas_object_textblock_text_markup_get(tb), |
1357 | "irs par.<ps>Second par.")); | 1388 | "irs par.<ps/>Second par.")); |
1358 | 1389 | ||
1359 | /* Delete a range */ | 1390 | /* Delete a range */ |
1360 | evas_textblock_cursor_pos_set(main_cur, 1); | 1391 | evas_textblock_cursor_pos_set(main_cur, 1); |
1361 | evas_textblock_cursor_pos_set(cur, 6); | 1392 | evas_textblock_cursor_pos_set(cur, 6); |
1362 | evas_textblock_cursor_range_delete(cur, main_cur); | 1393 | evas_textblock_cursor_range_delete(cur, main_cur); |
1363 | fail_if(strcmp(evas_object_textblock_text_markup_get(tb), | 1394 | fail_if(strcmp(evas_object_textblock_text_markup_get(tb), |
1364 | "ir.<ps>Second par.")); | 1395 | "ir.<ps/>Second par.")); |
1365 | evas_textblock_cursor_paragraph_char_first(main_cur); | 1396 | evas_textblock_cursor_paragraph_char_first(main_cur); |
1366 | evas_textblock_cursor_paragraph_char_last(cur); | 1397 | evas_textblock_cursor_paragraph_char_last(cur); |
1367 | evas_textblock_cursor_char_next(cur); | 1398 | evas_textblock_cursor_char_next(cur); |
@@ -1376,7 +1407,7 @@ START_TEST(evas_textblock_editing) | |||
1376 | evas_textblock_cursor_paragraph_char_first(main_cur); | 1407 | evas_textblock_cursor_paragraph_char_first(main_cur); |
1377 | evas_textblock_cursor_range_delete(cur, main_cur); | 1408 | evas_textblock_cursor_range_delete(cur, main_cur); |
1378 | fail_if(strcmp(evas_object_textblock_text_markup_get(tb), | 1409 | fail_if(strcmp(evas_object_textblock_text_markup_get(tb), |
1379 | "First par.<ps>")); | 1410 | "First par.<ps/>")); |
1380 | 1411 | ||
1381 | /* Merging paragraphs */ | 1412 | /* Merging paragraphs */ |
1382 | evas_object_textblock_text_markup_set(tb, buf); | 1413 | evas_object_textblock_text_markup_set(tb, buf); |
@@ -1406,6 +1437,27 @@ START_TEST(evas_textblock_editing) | |||
1406 | evas_textblock_cursor_paragraph_first(cur); | 1437 | evas_textblock_cursor_paragraph_first(cur); |
1407 | fail_if(evas_textblock_cursor_paragraph_next(cur)); | 1438 | fail_if(evas_textblock_cursor_paragraph_next(cur)); |
1408 | 1439 | ||
1440 | /* Insert illegal characters inside the format. */ | ||
1441 | { | ||
1442 | const char *content; | ||
1443 | evas_object_textblock_text_markup_set(tb, "a\n"); | ||
1444 | evas_textblock_cursor_pos_set(cur, 1); | ||
1445 | content = evas_textblock_cursor_content_get(cur); | ||
1446 | |||
1447 | evas_object_textblock_text_markup_set(tb, "a\t"); | ||
1448 | evas_textblock_cursor_pos_set(cur, 1); | ||
1449 | content = evas_textblock_cursor_content_get(cur); | ||
1450 | |||
1451 | evas_object_textblock_text_markup_set(tb, "a\xEF\xBF\xBC"); | ||
1452 | evas_textblock_cursor_pos_set(cur, 1); | ||
1453 | content = evas_textblock_cursor_content_get(cur); | ||
1454 | |||
1455 | evas_object_textblock_text_markup_set(tb, "a\xE2\x80\xA9"); | ||
1456 | evas_textblock_cursor_pos_set(cur, 1); | ||
1457 | content = evas_textblock_cursor_content_get(cur); | ||
1458 | (void) content; | ||
1459 | } | ||
1460 | |||
1409 | /* FIXME: Also add text appending/prepending */ | 1461 | /* FIXME: Also add text appending/prepending */ |
1410 | 1462 | ||
1411 | END_TB_TEST(); | 1463 | END_TB_TEST(); |
@@ -1416,13 +1468,13 @@ END_TEST | |||
1416 | START_TEST(evas_textblock_text_getters) | 1468 | START_TEST(evas_textblock_text_getters) |
1417 | { | 1469 | { |
1418 | START_TB_TEST(); | 1470 | START_TB_TEST(); |
1419 | const char *buf = "This is a <br> test.<ps>" | 1471 | const char *buf = "This is a <br/> test.<ps/>" |
1420 | "טקסט בעברית<ps>and now in english."; | 1472 | "טקסט בעברית<ps/>and now in english."; |
1421 | evas_object_textblock_text_markup_set(tb, buf); | 1473 | evas_object_textblock_text_markup_set(tb, buf); |
1422 | evas_textblock_cursor_paragraph_first(cur); | 1474 | evas_textblock_cursor_paragraph_first(cur); |
1423 | 1475 | ||
1424 | fail_if(strcmp(evas_textblock_cursor_paragraph_text_get(cur), | 1476 | fail_if(strcmp(evas_textblock_cursor_paragraph_text_get(cur), |
1425 | "This is a <br> test.")); | 1477 | "This is a <br/> test.")); |
1426 | 1478 | ||
1427 | evas_textblock_cursor_paragraph_next(cur); | 1479 | evas_textblock_cursor_paragraph_next(cur); |
1428 | fail_if(strcmp(evas_textblock_cursor_paragraph_text_get(cur), | 1480 | fail_if(strcmp(evas_textblock_cursor_paragraph_text_get(cur), |
@@ -1447,17 +1499,17 @@ START_TEST(evas_textblock_text_getters) | |||
1447 | evas_textblock_cursor_pos_set(main_cur, 5); | 1499 | evas_textblock_cursor_pos_set(main_cur, 5); |
1448 | evas_textblock_cursor_pos_set(cur, 14); | 1500 | evas_textblock_cursor_pos_set(cur, 14); |
1449 | fail_if(strcmp(evas_textblock_cursor_range_text_get(main_cur, cur, | 1501 | fail_if(strcmp(evas_textblock_cursor_range_text_get(main_cur, cur, |
1450 | EVAS_TEXTBLOCK_TEXT_MARKUP), "is a <br> te")); | 1502 | EVAS_TEXTBLOCK_TEXT_MARKUP), "is a <br/> te")); |
1451 | 1503 | ||
1452 | evas_textblock_cursor_pos_set(main_cur, 14); | 1504 | evas_textblock_cursor_pos_set(main_cur, 14); |
1453 | evas_textblock_cursor_pos_set(cur, 20); | 1505 | evas_textblock_cursor_pos_set(cur, 20); |
1454 | fail_if(strcmp(evas_textblock_cursor_range_text_get(main_cur, cur, | 1506 | fail_if(strcmp(evas_textblock_cursor_range_text_get(main_cur, cur, |
1455 | EVAS_TEXTBLOCK_TEXT_MARKUP), "st.<ps>טק")); | 1507 | EVAS_TEXTBLOCK_TEXT_MARKUP), "st.<ps/>טק")); |
1456 | 1508 | ||
1457 | evas_textblock_cursor_pos_set(main_cur, 14); | 1509 | evas_textblock_cursor_pos_set(main_cur, 14); |
1458 | evas_textblock_cursor_pos_set(cur, 32); | 1510 | evas_textblock_cursor_pos_set(cur, 32); |
1459 | fail_if(strcmp(evas_textblock_cursor_range_text_get(main_cur, cur, | 1511 | fail_if(strcmp(evas_textblock_cursor_range_text_get(main_cur, cur, |
1460 | EVAS_TEXTBLOCK_TEXT_MARKUP), "st.<ps>טקסט בעברית<ps>an")); | 1512 | EVAS_TEXTBLOCK_TEXT_MARKUP), "st.<ps/>טקסט בעברית<ps/>an")); |
1461 | 1513 | ||
1462 | /* Backward range get */ | 1514 | /* Backward range get */ |
1463 | evas_textblock_cursor_pos_set(main_cur, 2); | 1515 | evas_textblock_cursor_pos_set(main_cur, 2); |
@@ -1473,17 +1525,17 @@ START_TEST(evas_textblock_text_getters) | |||
1473 | evas_textblock_cursor_pos_set(main_cur, 5); | 1525 | evas_textblock_cursor_pos_set(main_cur, 5); |
1474 | evas_textblock_cursor_pos_set(cur, 14); | 1526 | evas_textblock_cursor_pos_set(cur, 14); |
1475 | fail_if(strcmp(evas_textblock_cursor_range_text_get(cur, main_cur, | 1527 | fail_if(strcmp(evas_textblock_cursor_range_text_get(cur, main_cur, |
1476 | EVAS_TEXTBLOCK_TEXT_MARKUP), "is a <br> te")); | 1528 | EVAS_TEXTBLOCK_TEXT_MARKUP), "is a <br/> te")); |
1477 | 1529 | ||
1478 | evas_textblock_cursor_pos_set(main_cur, 14); | 1530 | evas_textblock_cursor_pos_set(main_cur, 14); |
1479 | evas_textblock_cursor_pos_set(cur, 20); | 1531 | evas_textblock_cursor_pos_set(cur, 20); |
1480 | fail_if(strcmp(evas_textblock_cursor_range_text_get(cur, main_cur, | 1532 | fail_if(strcmp(evas_textblock_cursor_range_text_get(cur, main_cur, |
1481 | EVAS_TEXTBLOCK_TEXT_MARKUP), "st.<ps>טק")); | 1533 | EVAS_TEXTBLOCK_TEXT_MARKUP), "st.<ps/>טק")); |
1482 | 1534 | ||
1483 | evas_textblock_cursor_pos_set(main_cur, 14); | 1535 | evas_textblock_cursor_pos_set(main_cur, 14); |
1484 | evas_textblock_cursor_pos_set(cur, 32); | 1536 | evas_textblock_cursor_pos_set(cur, 32); |
1485 | fail_if(strcmp(evas_textblock_cursor_range_text_get(cur, main_cur, | 1537 | fail_if(strcmp(evas_textblock_cursor_range_text_get(cur, main_cur, |
1486 | EVAS_TEXTBLOCK_TEXT_MARKUP), "st.<ps>טקסט בעברית<ps>an")); | 1538 | EVAS_TEXTBLOCK_TEXT_MARKUP), "st.<ps/>טקסט בעברית<ps/>an")); |
1487 | 1539 | ||
1488 | /* Uninit cursors and other weird cases */ | 1540 | /* Uninit cursors and other weird cases */ |
1489 | evas_object_textblock_clear(tb); | 1541 | evas_object_textblock_clear(tb); |
@@ -1492,6 +1544,97 @@ START_TEST(evas_textblock_text_getters) | |||
1492 | fail_if(strcmp(evas_textblock_cursor_range_text_get(cur, main_cur, | 1544 | fail_if(strcmp(evas_textblock_cursor_range_text_get(cur, main_cur, |
1493 | EVAS_TEXTBLOCK_TEXT_MARKUP), "aaa")); | 1545 | EVAS_TEXTBLOCK_TEXT_MARKUP), "aaa")); |
1494 | 1546 | ||
1547 | /* Markup to plain and vice versa */ | ||
1548 | { | ||
1549 | char *tmp, *tmp2; | ||
1550 | |||
1551 | /* Real textblock object */ | ||
1552 | tmp = evas_textblock_text_markup_to_utf8(tb, "<br/>aa<\n/>bb<\t/>"); | ||
1553 | fail_if(strcmp(tmp, "\naa\nbb\t")); | ||
1554 | tmp2 = evas_textblock_text_utf8_to_markup(tb, tmp); | ||
1555 | fail_if(strcmp(tmp2, "<br/>aa<br/>bb<tab/>")); | ||
1556 | free(tmp2); | ||
1557 | free(tmp); | ||
1558 | |||
1559 | tmp = evas_textblock_text_markup_to_utf8(tb, "a<item></item>"); | ||
1560 | fail_if(strcmp(tmp, "a\xEF\xBF\xBC")); | ||
1561 | tmp2 = evas_textblock_text_utf8_to_markup(tb, tmp); | ||
1562 | fail_if(strcmp(tmp2, "a")); | ||
1563 | free(tmp2); | ||
1564 | free(tmp); | ||
1565 | |||
1566 | tmp = evas_textblock_text_markup_to_utf8(tb, "a "); | ||
1567 | fail_if(strcmp(tmp, "a\xC2\xA0")); | ||
1568 | tmp2 = evas_textblock_text_utf8_to_markup(tb, tmp); | ||
1569 | fail_if(strcmp(tmp2, "a\xC2\xA0")); | ||
1570 | free(tmp2); | ||
1571 | free(tmp); | ||
1572 | |||
1573 | tmp = evas_textblock_text_markup_to_utf8(tb, "a<b>b</b><more></>a"); | ||
1574 | fail_if(strcmp(tmp, "aba")); | ||
1575 | tmp2 = evas_textblock_text_utf8_to_markup(tb, tmp); | ||
1576 | fail_if(strcmp(tmp2, "aba")); | ||
1577 | free(tmp2); | ||
1578 | free(tmp); | ||
1579 | |||
1580 | tmp = evas_textblock_text_markup_to_utf8(tb, "a&a"); | ||
1581 | fail_if(strcmp(tmp, "a&a")); | ||
1582 | tmp2 = evas_textblock_text_utf8_to_markup(tb, tmp); | ||
1583 | fail_if(strcmp(tmp2, "a&a")); | ||
1584 | free(tmp2); | ||
1585 | free(tmp); | ||
1586 | |||
1587 | tmp = evas_textblock_text_markup_to_utf8(tb, "a<newline/>a"); | ||
1588 | fail_if(strcmp(tmp, "a\na")); | ||
1589 | tmp2 = evas_textblock_text_utf8_to_markup(tb, tmp); | ||
1590 | fail_if(strcmp(tmp2, "a<br/>a")); | ||
1591 | free(tmp2); | ||
1592 | free(tmp); | ||
1593 | |||
1594 | /* NULL textblock object */ | ||
1595 | tmp = evas_textblock_text_markup_to_utf8(NULL, "<br/>aa<\n/>bb<\t/>"); | ||
1596 | fail_if(strcmp(tmp, "\naa\nbb\t")); | ||
1597 | tmp2 = evas_textblock_text_utf8_to_markup(NULL, tmp); | ||
1598 | fail_if(strcmp(tmp2, "<br/>aa<br/>bb<tab/>")); | ||
1599 | free(tmp2); | ||
1600 | free(tmp); | ||
1601 | |||
1602 | tmp = evas_textblock_text_markup_to_utf8(NULL, "a<item></item>"); | ||
1603 | fail_if(strcmp(tmp, "a\xEF\xBF\xBC")); | ||
1604 | tmp2 = evas_textblock_text_utf8_to_markup(NULL, tmp); | ||
1605 | fail_if(strcmp(tmp2, "a")); | ||
1606 | free(tmp2); | ||
1607 | free(tmp); | ||
1608 | |||
1609 | tmp = evas_textblock_text_markup_to_utf8(NULL, "a "); | ||
1610 | fail_if(strcmp(tmp, "a\xC2\xA0")); | ||
1611 | tmp2 = evas_textblock_text_utf8_to_markup(NULL, tmp); | ||
1612 | fail_if(strcmp(tmp2, "a\xC2\xA0")); | ||
1613 | free(tmp2); | ||
1614 | free(tmp); | ||
1615 | |||
1616 | tmp = evas_textblock_text_markup_to_utf8(NULL, "a<b>b</b><more></>a"); | ||
1617 | fail_if(strcmp(tmp, "aba")); | ||
1618 | tmp2 = evas_textblock_text_utf8_to_markup(NULL, tmp); | ||
1619 | fail_if(strcmp(tmp2, "aba")); | ||
1620 | free(tmp2); | ||
1621 | free(tmp); | ||
1622 | |||
1623 | tmp = evas_textblock_text_markup_to_utf8(tb, "a&a"); | ||
1624 | fail_if(strcmp(tmp, "a&a")); | ||
1625 | tmp2 = evas_textblock_text_utf8_to_markup(tb, tmp); | ||
1626 | fail_if(strcmp(tmp2, "a&a")); | ||
1627 | free(tmp2); | ||
1628 | free(tmp); | ||
1629 | |||
1630 | tmp = evas_textblock_text_markup_to_utf8(NULL, "a<newline/>a"); | ||
1631 | fail_if(strcmp(tmp, "aa")); | ||
1632 | tmp2 = evas_textblock_text_utf8_to_markup(NULL, tmp); | ||
1633 | fail_if(strcmp(tmp2, "aa")); | ||
1634 | free(tmp2); | ||
1635 | free(tmp); | ||
1636 | } | ||
1637 | |||
1495 | END_TB_TEST(); | 1638 | END_TB_TEST(); |
1496 | } | 1639 | } |
1497 | END_TEST | 1640 | END_TEST |
@@ -1500,7 +1643,7 @@ END_TEST | |||
1500 | START_TEST(evas_textblock_formats) | 1643 | START_TEST(evas_textblock_formats) |
1501 | { | 1644 | { |
1502 | START_TB_TEST(); | 1645 | START_TB_TEST(); |
1503 | const char *buf = "Th<b>i<font_size=15 wrap=none>s i</font_size=13>s</> a <br> te<ps>st<item></>."; | 1646 | const char *buf = "Th<b>i<font_size=15 wrap=none>s i</font_size=13>s</> a <br/> te<ps/>st<item></>."; |
1504 | const Evas_Object_Textblock_Node_Format *fnode; | 1647 | const Evas_Object_Textblock_Node_Format *fnode; |
1505 | evas_object_textblock_text_markup_set(tb, buf); | 1648 | evas_object_textblock_text_markup_set(tb, buf); |
1506 | 1649 | ||
@@ -1652,25 +1795,25 @@ START_TEST(evas_textblock_formats) | |||
1652 | * verify them visually, well, we can some of them. Possibly in the | 1795 | * verify them visually, well, we can some of them. Possibly in the |
1653 | * future we will */ | 1796 | * future we will */ |
1654 | evas_object_textblock_text_markup_set(tb, | 1797 | evas_object_textblock_text_markup_set(tb, |
1655 | "<font_size=40>font_size=40</><ps>" | 1798 | "<font_size=40>font_size=40</><ps/>" |
1656 | "<color=#F210B3FF>color=#F210B3FF</><ps>" | 1799 | "<color=#F210B3FF>color=#F210B3FF</><ps/>" |
1657 | "<underline=single underline_color=#A2B3C4>underline=single underline_color=#A2B3C4</><ps>" | 1800 | "<underline=single underline_color=#A2B3C4>underline=single underline_color=#A2B3C4</><ps/>" |
1658 | "<underline=double underline_color=#F00 underline2_color=#00F>underline=double underline_color=#F00 underline2_color=#00F</><ps>" | 1801 | "<underline=double underline_color=#F00 underline2_color=#00F>underline=double underline_color=#F00 underline2_color=#00F</><ps/>" |
1659 | "<underline=dashed underline_dash_color=#0F0 underline_dash_width=2 underline_dash_gap=1>underline=dashed underline_dash_color=#0F0 underline_dash_width=2 underline_dash_gap=1</><ps>" | 1802 | "<underline=dashed underline_dash_color=#0F0 underline_dash_width=2 underline_dash_gap=1>underline=dashed underline_dash_color=#0F0 underline_dash_width=2 underline_dash_gap=1</><ps/>" |
1660 | "<style=outline outline_color=#F0FA>style=outline outline_color=#F0FA</><ps>" | 1803 | "<style=outline outline_color=#F0FA>style=outline outline_color=#F0FA</><ps/>" |
1661 | "<style=shadow shadow_color=#F0F>style=shadow shadow_color=#F0F</><ps>" | 1804 | "<style=shadow shadow_color=#F0F>style=shadow shadow_color=#F0F</><ps/>" |
1662 | "<style=glow glow_color=#BBB>style=glow glow_color=#BBB</><ps>" | 1805 | "<style=glow glow_color=#BBB>style=glow glow_color=#BBB</><ps/>" |
1663 | "<style=glow glow2_color=#0F0>style=glow glow2_color=#0F0</><ps>" | 1806 | "<style=glow glow2_color=#0F0>style=glow glow2_color=#0F0</><ps/>" |
1664 | "<style=glow color=#fff glow2_color=#fe87 glow_color=#f214>style=glow color=#fff glow2_color=#fe87 glow_color=#f214</><ps>" | 1807 | "<style=glow color=#fff glow2_color=#fe87 glow_color=#f214>style=glow color=#fff glow2_color=#fe87 glow_color=#f214</><ps/>" |
1665 | "<backing=on backing_color=#00F>backing=on backing_color=#00F</><ps>" | 1808 | "<backing=on backing_color=#00F>backing=on backing_color=#00F</><ps/>" |
1666 | "<strikethrough=on strikethrough_color=#FF0>strikethrough=on strikethrough_color=#FF0</><ps>" | 1809 | "<strikethrough=on strikethrough_color=#FF0>strikethrough=on strikethrough_color=#FF0</><ps/>" |
1667 | "<align=right>align=right</><ps>" | 1810 | "<align=right>align=right</><ps/>" |
1668 | "<backing=on backing_color=#F008 valign=0.0>valign=0.0</><ps>" | 1811 | "<backing=on backing_color=#F008 valign=0.0>valign=0.0</><ps/>" |
1669 | "<backing=on backing_color=#0F08 tabstops=50>tabstops=<\\t></>50</><ps>" | 1812 | "<backing=on backing_color=#0F08 tabstops=50>tabstops=<\\t></>50</><ps/>" |
1670 | "<backing=on backing_color=#00F8 linesize=40>linesize=40</><ps>" | 1813 | "<backing=on backing_color=#00F8 linesize=40>linesize=40</><ps/>" |
1671 | "<backing=on backing_color=#F0F8 linerelsize=200%>linerelsize=200%</><ps>" | 1814 | "<backing=on backing_color=#F0F8 linerelsize=200%>linerelsize=200%</><ps/>" |
1672 | "<backing=on backing_color=#0FF8 linegap=20>linegap=20</><ps>" | 1815 | "<backing=on backing_color=#0FF8 linegap=20>linegap=20</><ps/>" |
1673 | "<backing=on backing_color=#FF08 linerelgap=100%>linerelgap=100%</><ps>"); | 1816 | "<backing=on backing_color=#FF08 linerelgap=100%>linerelgap=100%</><ps/>"); |
1674 | 1817 | ||
1675 | /* Force a relayout */ | 1818 | /* Force a relayout */ |
1676 | evas_object_textblock_size_formatted_get(tb, NULL, NULL); | 1819 | evas_object_textblock_size_formatted_get(tb, NULL, NULL); |
@@ -1714,22 +1857,22 @@ START_TEST(evas_textblock_formats) | |||
1714 | } | 1857 | } |
1715 | 1858 | ||
1716 | /* Make sure we get all the types of visible formats correctly. */ | 1859 | /* Make sure we get all the types of visible formats correctly. */ |
1717 | evas_object_textblock_text_markup_set(tb, "<ps>a<br>a<tab>a<item></>"); | 1860 | evas_object_textblock_text_markup_set(tb, "<ps/>a<br/>a<tab/>a<item></>"); |
1718 | fail_if(strcmp(evas_textblock_node_format_text_get( | 1861 | fail_if(strcmp(evas_textblock_node_format_text_get( |
1719 | evas_textblock_cursor_format_get(cur)), "ps")); | 1862 | evas_textblock_cursor_format_get(cur)), "ps")); |
1720 | fail_if(strcmp(evas_textblock_cursor_content_get(cur), "<ps>")); | 1863 | fail_if(strcmp(evas_textblock_cursor_content_get(cur), "<ps/>")); |
1721 | fail_if(!evas_textblock_cursor_format_is_visible_get(cur)); | 1864 | fail_if(!evas_textblock_cursor_format_is_visible_get(cur)); |
1722 | fail_if(!evas_textblock_cursor_char_next(cur)); | 1865 | fail_if(!evas_textblock_cursor_char_next(cur)); |
1723 | fail_if(!evas_textblock_cursor_char_next(cur)); | 1866 | fail_if(!evas_textblock_cursor_char_next(cur)); |
1724 | fail_if(strcmp(evas_textblock_node_format_text_get( | 1867 | fail_if(strcmp(evas_textblock_node_format_text_get( |
1725 | evas_textblock_cursor_format_get(cur)), "br")); | 1868 | evas_textblock_cursor_format_get(cur)), "br")); |
1726 | fail_if(strcmp(evas_textblock_cursor_content_get(cur), "<br>")); | 1869 | fail_if(strcmp(evas_textblock_cursor_content_get(cur), "<br/>")); |
1727 | fail_if(!evas_textblock_cursor_format_is_visible_get(cur)); | 1870 | fail_if(!evas_textblock_cursor_format_is_visible_get(cur)); |
1728 | fail_if(!evas_textblock_cursor_char_next(cur)); | 1871 | fail_if(!evas_textblock_cursor_char_next(cur)); |
1729 | fail_if(!evas_textblock_cursor_char_next(cur)); | 1872 | fail_if(!evas_textblock_cursor_char_next(cur)); |
1730 | fail_if(strcmp(evas_textblock_node_format_text_get( | 1873 | fail_if(strcmp(evas_textblock_node_format_text_get( |
1731 | evas_textblock_cursor_format_get(cur)), "tab")); | 1874 | evas_textblock_cursor_format_get(cur)), "tab")); |
1732 | fail_if(strcmp(evas_textblock_cursor_content_get(cur), "<tab>")); | 1875 | fail_if(strcmp(evas_textblock_cursor_content_get(cur), "<tab/>")); |
1733 | fail_if(!evas_textblock_cursor_format_is_visible_get(cur)); | 1876 | fail_if(!evas_textblock_cursor_format_is_visible_get(cur)); |
1734 | fail_if(!evas_textblock_cursor_char_next(cur)); | 1877 | fail_if(!evas_textblock_cursor_char_next(cur)); |
1735 | fail_if(!evas_textblock_cursor_char_next(cur)); | 1878 | fail_if(!evas_textblock_cursor_char_next(cur)); |
@@ -1749,7 +1892,7 @@ START_TEST(evas_textblock_style) | |||
1749 | Evas_Coord l, r, t, b; | 1892 | Evas_Coord l, r, t, b; |
1750 | START_TB_TEST(); | 1893 | START_TB_TEST(); |
1751 | Evas_Textblock_Style *newst; | 1894 | Evas_Textblock_Style *newst; |
1752 | const char *buf = "Test<ps>Test2<ps>נסיון"; | 1895 | const char *buf = "Test<ps/>Test2<ps/>נסיון"; |
1753 | evas_object_textblock_text_markup_set(tb, buf); | 1896 | evas_object_textblock_text_markup_set(tb, buf); |
1754 | fail_if(strcmp(evas_object_textblock_text_markup_get(tb), buf)); | 1897 | fail_if(strcmp(evas_object_textblock_text_markup_get(tb), buf)); |
1755 | 1898 | ||
@@ -1850,7 +1993,7 @@ START_TEST(evas_textblock_set_get) | |||
1850 | fail_if(strcmp(evas_object_textblock_bidi_delimiters_get(tb), ",|")); | 1993 | fail_if(strcmp(evas_object_textblock_bidi_delimiters_get(tb), ",|")); |
1851 | 1994 | ||
1852 | /* Hinting */ | 1995 | /* Hinting */ |
1853 | evas_object_textblock_text_markup_set(tb, "This is<ps>a test<br>bla"); | 1996 | evas_object_textblock_text_markup_set(tb, "This is<ps/>a test<br/>bla"); |
1854 | /* Force relayout */ | 1997 | /* Force relayout */ |
1855 | evas_object_textblock_size_formatted_get(tb, NULL, NULL); | 1998 | evas_object_textblock_size_formatted_get(tb, NULL, NULL); |
1856 | evas_font_hinting_set(evas, EVAS_FONT_HINTING_NONE); | 1999 | evas_font_hinting_set(evas, EVAS_FONT_HINTING_NONE); |
@@ -1923,7 +2066,7 @@ START_TEST(evas_textblock_size) | |||
1923 | { | 2066 | { |
1924 | START_TB_TEST(); | 2067 | START_TB_TEST(); |
1925 | Evas_Coord w, h, h2, nw, nh; | 2068 | Evas_Coord w, h, h2, nw, nh; |
1926 | const char *buf = "This is a <br> test.<br>גם בעברית"; | 2069 | const char *buf = "This is a <br/> test.<br/>גם בעברית"; |
1927 | /* When wrapping is off, native size should be the same as formatted | 2070 | /* When wrapping is off, native size should be the same as formatted |
1928 | * size */ | 2071 | * size */ |
1929 | 2072 | ||
@@ -1932,7 +2075,7 @@ START_TEST(evas_textblock_size) | |||
1932 | fail_if((w != nw) || (h != nh)); | 2075 | fail_if((w != nw) || (h != nh)); |
1933 | fail_if(w != 0); | 2076 | fail_if(w != 0); |
1934 | 2077 | ||
1935 | evas_object_textblock_text_markup_set(tb, "a<br>a"); | 2078 | evas_object_textblock_text_markup_set(tb, "a<br/>a"); |
1936 | evas_object_textblock_size_formatted_get(tb, &w, &h2); | 2079 | evas_object_textblock_size_formatted_get(tb, &w, &h2); |
1937 | evas_object_textblock_size_native_get(tb, &nw, &nh); | 2080 | evas_object_textblock_size_native_get(tb, &nw, &nh); |
1938 | fail_if((w != nw) || (h2 != nh)); | 2081 | fail_if((w != nw) || (h2 != nh)); |