diff options
author | Carsten Haitzler <raster@rasterman.com> | 2012-11-13 23:52:18 +0000 |
---|---|---|
committer | Carsten Haitzler <raster@rasterman.com> | 2012-11-13 23:52:18 +0000 |
commit | cd926b304dc8f072d99d55f90ef4bd6ad9d3a62f (patch) | |
tree | ab108ceeb5d9b72e9998c7e5c58d7ba3aaeed5e7 /legacy/evas | |
parent | 30965869f0e3aaea6adb2765e98a6797e9f03749 (diff) |
move libs already in EFL into... IN-EFL - this will stop/prevent/limit
thnigs like people using them and patching them, etc.
SVN revision: 79255
Diffstat (limited to '')
243 files changed, 0 insertions, 420174 deletions
diff --git a/legacy/evas/.gitignore b/legacy/evas/.gitignore deleted file mode 100644 index 542535ff87..0000000000 --- a/legacy/evas/.gitignore +++ /dev/null | |||
@@ -1,71 +0,0 @@ | |||
1 | *~ | ||
2 | *.o | ||
3 | *.lo | ||
4 | *.la | ||
5 | .libs | ||
6 | .deps | ||
7 | *.pc | ||
8 | Makefile | ||
9 | Makefile.in | ||
10 | *.so | ||
11 | *.sw[po] | ||
12 | /README | ||
13 | /aclocal.m4 | ||
14 | /autom4te.cache/ | ||
15 | /config.cache | ||
16 | /config.guess | ||
17 | /config.h | ||
18 | /config.h.in | ||
19 | /config.log | ||
20 | /config.status | ||
21 | /config.sub | ||
22 | /configure | ||
23 | /depcomp | ||
24 | /doc/evas.dox | ||
25 | /evas.spec | ||
26 | /install-sh | ||
27 | /libtool | ||
28 | /ltmain.sh | ||
29 | /missing | ||
30 | /stamp-h1 | ||
31 | tags | ||
32 | cscope.* | ||
33 | /config.cache | ||
34 | /ABOUT-NLS | ||
35 | /config.cache-env | ||
36 | doc/Doxyfile | ||
37 | m4/libtool.m4 | ||
38 | m4/ltoptions.m4 | ||
39 | m4/ltsugar.m4 | ||
40 | m4/ltversion.m4 | ||
41 | m4/lt~obsolete.m4 | ||
42 | src/bin/evas_cserve | ||
43 | src/bin/evas_cserve_tool | ||
44 | src/bin/evas_cserve2 | ||
45 | src/bin/evas_cserve2_slave | ||
46 | src/bin/evas_cserve2_debug | ||
47 | src/bin/evas_cserve2_client | ||
48 | src/bin/evas_cserve2_usage | ||
49 | src/bin/dummy_slave | ||
50 | *.gcno | ||
51 | *.gcov | ||
52 | src/tests/evas_suite | ||
53 | coverage | ||
54 | src/examples/aspect.edj | ||
55 | src/examples/evas-smart-object | ||
56 | src/examples/evas-stacking | ||
57 | src/examples/evas_aspect_hints | ||
58 | src/examples/evas_box | ||
59 | src/examples/evas_buffer_simple | ||
60 | src/examples/evas_events | ||
61 | src/examples/evas_hints | ||
62 | src/examples/evas_images | ||
63 | src/examples/evas_images2 | ||
64 | src/examples/evas_images3 | ||
65 | src/examples/evas_init_shutdown | ||
66 | src/examples/evas_map_utils | ||
67 | src/examples/evas_object_manipulation | ||
68 | src/examples/evas_smart_object | ||
69 | src/examples/evas_stacking | ||
70 | src/examples/evas_text | ||
71 | |||
diff --git a/legacy/evas/AUTHORS b/legacy/evas/AUTHORS deleted file mode 100644 index 11e948c511..0000000000 --- a/legacy/evas/AUTHORS +++ /dev/null | |||
@@ -1,44 +0,0 @@ | |||
1 | Carsten Haitzler <raster@rasterman.com> | ||
2 | Till Adam <till@adam-lilienthal.de> | ||
3 | Steve Ireland <sireland@pobox.com> | ||
4 | Brett Nash <nash@fluffyspider.com.au> | ||
5 | Tilman Sauerbeck <tilman@code-monkey.de> | ||
6 | Corey Donohoe <atmos@atmos.org> | ||
7 | Yuri Hudobin <glassy_ape@users.sourceforge.net> | ||
8 | Nathan Ingersoll <ningerso@d.umn.edu> | ||
9 | Willem Monsuwe <willem@stack.nl> | ||
10 | Jose O Gonzalez <jose_ogp@juno.com> | ||
11 | Bernhard Nemec <Bernhard.Nemec@viasyshc.com> | ||
12 | Jorge Luis Zapata Muga <jorgeluis.zapata@gmail.com> | ||
13 | Cedric Bail <cedric.bail@free.fr> | ||
14 | Gustavo Sverzut Barbieri <barbieri@gmail.com> | ||
15 | Vincent Torri <vtorri at univ-evry dot fr> | ||
16 | Tim Horton <hortont424@gmail.com> | ||
17 | Tom Hacohen <tom@stosb.com> | ||
18 | Mathieu Taillefumier <mathieu.taillefumier@free.fr> | ||
19 | Iván Briano <ivan@profusion.mobi> | ||
20 | Gustavo Lima Chaves <glima@profusion.mobi> | ||
21 | Samsung Electronics | ||
22 | Samsung SAIT | ||
23 | Sung W. Park <sungwoo@gmail.com> | ||
24 | Jiyoun Park <jy0703.park@samsung.com> | ||
25 | Myoungwoon Roy Kim(roy_kim) <myoungwoon.kim@samsung.com> <myoungwoon@gmail.com> | ||
26 | Thierry el Borgi <thierry@substantiel.fr> | ||
27 | Shilpa Singh <shilpa.singh@samsung.com> <shilpasingh.o@gmail.com> | ||
28 | ChunEon Park <hermet@hermet.pe.kr> | ||
29 | Christopher 'devilhorns' Michael <cpmichael1@comcast.net> | ||
30 | Seungsoo Woo <om101.woo@samsung.com> | ||
31 | Youness Alaoui <kakaroto@kakaroto.homelinux.net> | ||
32 | Jim Kukunas <james.t.kukunas@linux.intel.com> | ||
33 | Nicolas Aguirre <aguirre.nicolas@gmail.com> | ||
34 | Rafal Krypa <r.krypa@samsung.com> | ||
35 | Hyoyoung Chang <hyoyoung@gmail.com> | ||
36 | Jérôme Pinot <ngc891@gmail.com> | ||
37 | Rafael Antognolli <antognolli@profusion.mobi> | ||
38 | Daniel Zaoui <daniel.zaoui@samsung.com> | ||
39 | Christophe Sadoine <chris@indefini.org> | ||
40 | Igor Murzov <e-mail@date.by> | ||
41 | Sohyun Kim <anna1014.kim@samsung.com> | ||
42 | Boris Faure <billiob@gmail.com> | ||
43 | Eduardo Lima (Etrunko) <eblima@gmail.com> | ||
44 | Leandro Dorileo (dorileo) <dorileo@profusion.mobi> | ||
diff --git a/legacy/evas/COPYING b/legacy/evas/COPYING deleted file mode 100644 index 8ba768812c..0000000000 --- a/legacy/evas/COPYING +++ /dev/null | |||
@@ -1,25 +0,0 @@ | |||
1 | Copyright notice for Evas: | ||
2 | |||
3 | Copyright (C) 2000-2011 Carsten Haitzler and various contributors (see AUTHORS) | ||
4 | |||
5 | All rights reserved. | ||
6 | |||
7 | Redistribution and use in source and binary forms, with or without | ||
8 | modification, are permitted provided that the following conditions are met: | ||
9 | |||
10 | 1. Redistributions of source code must retain the above copyright | ||
11 | notice, this list of conditions and the following disclaimer. | ||
12 | 2. Redistributions in binary form must reproduce the above copyright | ||
13 | notice, this list of conditions and the following disclaimer in the | ||
14 | documentation and/or other materials provided with the distribution. | ||
15 | |||
16 | THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, | ||
17 | INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | ||
18 | FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE | ||
19 | COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
20 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||
21 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, | ||
22 | OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | ||
23 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | ||
24 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, | ||
25 | EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
diff --git a/legacy/evas/INSTALL b/legacy/evas/INSTALL deleted file mode 100644 index 23e5f25d0e..0000000000 --- a/legacy/evas/INSTALL +++ /dev/null | |||
@@ -1,236 +0,0 @@ | |||
1 | Installation Instructions | ||
2 | ************************* | ||
3 | |||
4 | Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free | ||
5 | Software Foundation, Inc. | ||
6 | |||
7 | This file is free documentation; the Free Software Foundation gives | ||
8 | unlimited permission to copy, distribute and modify it. | ||
9 | |||
10 | Basic Installation | ||
11 | ================== | ||
12 | |||
13 | These are generic installation instructions. | ||
14 | |||
15 | The `configure' shell script attempts to guess correct values for | ||
16 | various system-dependent variables used during compilation. It uses | ||
17 | those values to create a `Makefile' in each directory of the package. | ||
18 | It may also create one or more `.h' files containing system-dependent | ||
19 | definitions. Finally, it creates a shell script `config.status' that | ||
20 | you can run in the future to recreate the current configuration, and a | ||
21 | file `config.log' containing compiler output (useful mainly for | ||
22 | debugging `configure'). | ||
23 | |||
24 | It can also use an optional file (typically called `config.cache' | ||
25 | and enabled with `--cache-file=config.cache' or simply `-C') that saves | ||
26 | the results of its tests to speed up reconfiguring. (Caching is | ||
27 | disabled by default to prevent problems with accidental use of stale | ||
28 | cache files.) | ||
29 | |||
30 | If you need to do unusual things to compile the package, please try | ||
31 | to figure out how `configure' could check whether to do them, and mail | ||
32 | diffs or instructions to the address given in the `README' so they can | ||
33 | be considered for the next release. If you are using the cache, and at | ||
34 | some point `config.cache' contains results you don't want to keep, you | ||
35 | may remove or edit it. | ||
36 | |||
37 | The file `configure.ac' (or `configure.in') is used to create | ||
38 | `configure' by a program called `autoconf'. You only need | ||
39 | `configure.ac' if you want to change it or regenerate `configure' using | ||
40 | a newer version of `autoconf'. | ||
41 | |||
42 | The simplest way to compile this package is: | ||
43 | |||
44 | 1. `cd' to the directory containing the package's source code and type | ||
45 | `./configure' to configure the package for your system. If you're | ||
46 | using `csh' on an old version of System V, you might need to type | ||
47 | `sh ./configure' instead to prevent `csh' from trying to execute | ||
48 | `configure' itself. | ||
49 | |||
50 | Running `configure' takes awhile. While running, it prints some | ||
51 | messages telling which features it is checking for. | ||
52 | |||
53 | 2. Type `make' to compile the package. | ||
54 | |||
55 | 3. Optionally, type `make check' to run any self-tests that come with | ||
56 | the package. | ||
57 | |||
58 | 4. Type `make install' to install the programs and any data files and | ||
59 | documentation. | ||
60 | |||
61 | 5. You can remove the program binaries and object files from the | ||
62 | source code directory by typing `make clean'. To also remove the | ||
63 | files that `configure' created (so you can compile the package for | ||
64 | a different kind of computer), type `make distclean'. There is | ||
65 | also a `make maintainer-clean' target, but that is intended mainly | ||
66 | for the package's developers. If you use it, you may have to get | ||
67 | all sorts of other programs in order to regenerate files that came | ||
68 | with the distribution. | ||
69 | |||
70 | Compilers and Options | ||
71 | ===================== | ||
72 | |||
73 | Some systems require unusual options for compilation or linking that the | ||
74 | `configure' script does not know about. Run `./configure --help' for | ||
75 | details on some of the pertinent environment variables. | ||
76 | |||
77 | You can give `configure' initial values for configuration parameters | ||
78 | by setting variables in the command line or in the environment. Here | ||
79 | is an example: | ||
80 | |||
81 | ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix | ||
82 | |||
83 | *Note Defining Variables::, for more details. | ||
84 | |||
85 | Compiling For Multiple Architectures | ||
86 | ==================================== | ||
87 | |||
88 | You can compile the package for more than one kind of computer at the | ||
89 | same time, by placing the object files for each architecture in their | ||
90 | own directory. To do this, you must use a version of `make' that | ||
91 | supports the `VPATH' variable, such as GNU `make'. `cd' to the | ||
92 | directory where you want the object files and executables to go and run | ||
93 | the `configure' script. `configure' automatically checks for the | ||
94 | source code in the directory that `configure' is in and in `..'. | ||
95 | |||
96 | If you have to use a `make' that does not support the `VPATH' | ||
97 | variable, you have to compile the package for one architecture at a | ||
98 | time in the source code directory. After you have installed the | ||
99 | package for one architecture, use `make distclean' before reconfiguring | ||
100 | for another architecture. | ||
101 | |||
102 | Installation Names | ||
103 | ================== | ||
104 | |||
105 | By default, `make install' installs the package's commands under | ||
106 | `/usr/local/bin', include files under `/usr/local/include', etc. You | ||
107 | can specify an installation prefix other than `/usr/local' by giving | ||
108 | `configure' the option `--prefix=PREFIX'. | ||
109 | |||
110 | You can specify separate installation prefixes for | ||
111 | architecture-specific files and architecture-independent files. If you | ||
112 | pass the option `--exec-prefix=PREFIX' to `configure', the package uses | ||
113 | PREFIX as the prefix for installing programs and libraries. | ||
114 | Documentation and other data files still use the regular prefix. | ||
115 | |||
116 | In addition, if you use an unusual directory layout you can give | ||
117 | options like `--bindir=DIR' to specify different values for particular | ||
118 | kinds of files. Run `configure --help' for a list of the directories | ||
119 | you can set and what kinds of files go in them. | ||
120 | |||
121 | If the package supports it, you can cause programs to be installed | ||
122 | with an extra prefix or suffix on their names by giving `configure' the | ||
123 | option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. | ||
124 | |||
125 | Optional Features | ||
126 | ================= | ||
127 | |||
128 | Some packages pay attention to `--enable-FEATURE' options to | ||
129 | `configure', where FEATURE indicates an optional part of the package. | ||
130 | They may also pay attention to `--with-PACKAGE' options, where PACKAGE | ||
131 | is something like `gnu-as' or `x' (for the X Window System). The | ||
132 | `README' should mention any `--enable-' and `--with-' options that the | ||
133 | package recognizes. | ||
134 | |||
135 | For packages that use the X Window System, `configure' can usually | ||
136 | find the X include and library files automatically, but if it doesn't, | ||
137 | you can use the `configure' options `--x-includes=DIR' and | ||
138 | `--x-libraries=DIR' to specify their locations. | ||
139 | |||
140 | Specifying the System Type | ||
141 | ========================== | ||
142 | |||
143 | There may be some features `configure' cannot figure out automatically, | ||
144 | but needs to determine by the type of machine the package will run on. | ||
145 | Usually, assuming the package is built to be run on the _same_ | ||
146 | architectures, `configure' can figure that out, but if it prints a | ||
147 | message saying it cannot guess the machine type, give it the | ||
148 | `--build=TYPE' option. TYPE can either be a short name for the system | ||
149 | type, such as `sun4', or a canonical name which has the form: | ||
150 | |||
151 | CPU-COMPANY-SYSTEM | ||
152 | |||
153 | where SYSTEM can have one of these forms: | ||
154 | |||
155 | OS KERNEL-OS | ||
156 | |||
157 | See the file `config.sub' for the possible values of each field. If | ||
158 | `config.sub' isn't included in this package, then this package doesn't | ||
159 | need to know the machine type. | ||
160 | |||
161 | If you are _building_ compiler tools for cross-compiling, you should | ||
162 | use the option `--target=TYPE' to select the type of system they will | ||
163 | produce code for. | ||
164 | |||
165 | If you want to _use_ a cross compiler, that generates code for a | ||
166 | platform different from the build platform, you should specify the | ||
167 | "host" platform (i.e., that on which the generated programs will | ||
168 | eventually be run) with `--host=TYPE'. | ||
169 | |||
170 | Sharing Defaults | ||
171 | ================ | ||
172 | |||
173 | If you want to set default values for `configure' scripts to share, you | ||
174 | can create a site shell script called `config.site' that gives default | ||
175 | values for variables like `CC', `cache_file', and `prefix'. | ||
176 | `configure' looks for `PREFIX/share/config.site' if it exists, then | ||
177 | `PREFIX/etc/config.site' if it exists. Or, you can set the | ||
178 | `CONFIG_SITE' environment variable to the location of the site script. | ||
179 | A warning: not all `configure' scripts look for a site script. | ||
180 | |||
181 | Defining Variables | ||
182 | ================== | ||
183 | |||
184 | Variables not defined in a site shell script can be set in the | ||
185 | environment passed to `configure'. However, some packages may run | ||
186 | configure again during the build, and the customized values of these | ||
187 | variables may be lost. In order to avoid this problem, you should set | ||
188 | them in the `configure' command line, using `VAR=value'. For example: | ||
189 | |||
190 | ./configure CC=/usr/local2/bin/gcc | ||
191 | |||
192 | causes the specified `gcc' to be used as the C compiler (unless it is | ||
193 | overridden in the site shell script). Here is a another example: | ||
194 | |||
195 | /bin/bash ./configure CONFIG_SHELL=/bin/bash | ||
196 | |||
197 | Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent | ||
198 | configuration-related scripts to be executed by `/bin/bash'. | ||
199 | |||
200 | `configure' Invocation | ||
201 | ====================== | ||
202 | |||
203 | `configure' recognizes the following options to control how it operates. | ||
204 | |||
205 | `--help' | ||
206 | `-h' | ||
207 | Print a summary of the options to `configure', and exit. | ||
208 | |||
209 | `--version' | ||
210 | `-V' | ||
211 | Print the version of Autoconf used to generate the `configure' | ||
212 | script, and exit. | ||
213 | |||
214 | `--cache-file=FILE' | ||
215 | Enable the cache: use and save the results of the tests in FILE, | ||
216 | traditionally `config.cache'. FILE defaults to `/dev/null' to | ||
217 | disable caching. | ||
218 | |||
219 | `--config-cache' | ||
220 | `-C' | ||
221 | Alias for `--cache-file=config.cache'. | ||
222 | |||
223 | `--quiet' | ||
224 | `--silent' | ||
225 | `-q' | ||
226 | Do not print messages saying which checks are being made. To | ||
227 | suppress all normal output, redirect it to `/dev/null' (any error | ||
228 | messages will still be shown). | ||
229 | |||
230 | `--srcdir=DIR' | ||
231 | Look for the package's source code in directory DIR. Usually | ||
232 | `configure' can determine that directory automatically. | ||
233 | |||
234 | `configure' also accepts some other, not widely useful, options. Run | ||
235 | `configure --help' for more details. | ||
236 | |||
diff --git a/legacy/evas/Makefile.am b/legacy/evas/Makefile.am deleted file mode 100644 index 85f34c4280..0000000000 --- a/legacy/evas/Makefile.am +++ /dev/null | |||
@@ -1,167 +0,0 @@ | |||
1 | ACLOCAL_AMFLAGS = -I m4 | ||
2 | |||
3 | SUBDIRS = src doc data | ||
4 | |||
5 | MAINTAINERCLEANFILES = \ | ||
6 | Makefile.in \ | ||
7 | aclocal.m4 \ | ||
8 | config.cache-env \ | ||
9 | config.guess \ | ||
10 | config.h.in \ | ||
11 | config.h.in~ \ | ||
12 | config.sub \ | ||
13 | configure \ | ||
14 | depcomp \ | ||
15 | install-sh \ | ||
16 | ltmain.sh \ | ||
17 | missing \ | ||
18 | $(PACKAGE_TARNAME)-$(PACKAGE_VERSION).tar.gz \ | ||
19 | $(PACKAGE_TARNAME)-$(PACKAGE_VERSION).tar.bz2 \ | ||
20 | $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)-doc.tar.bz2 \ | ||
21 | m4/libtool.m4 \ | ||
22 | m4/lt~obsolete.m4 \ | ||
23 | m4/ltoptions.m4 \ | ||
24 | m4/ltsugar.m4 \ | ||
25 | m4/ltversion.m4 | ||
26 | |||
27 | bin_SCRIPTS = | ||
28 | |||
29 | EXTRA_DIST = \ | ||
30 | AUTHORS \ | ||
31 | COPYING \ | ||
32 | autogen.sh \ | ||
33 | evas.pc.in \ | ||
34 | evas-directfb.pc.in \ | ||
35 | evas-fb.pc.in \ | ||
36 | evas-opengl-x11.pc.in \ | ||
37 | evas-opengl-sdl.pc.in \ | ||
38 | evas-software-buffer.pc.in \ | ||
39 | evas-software-x11.pc.in \ | ||
40 | evas-software-gdi.pc.in \ | ||
41 | evas-software-ddraw.pc.in \ | ||
42 | evas-direct3d.pc.in \ | ||
43 | evas-psl1ght.pc.in \ | ||
44 | evas-wayland-shm.pc.in \ | ||
45 | evas-wayland-egl.pc.in \ | ||
46 | evas.spec.in \ | ||
47 | evas.spec \ | ||
48 | m4/efl_attribute.m4 \ | ||
49 | m4/efl_coverage.m4 \ | ||
50 | m4/efl_doxygen.m4 \ | ||
51 | m4/efl_fnmatch.m4 \ | ||
52 | m4/efl_path_max.m4 \ | ||
53 | m4/efl_pthread.m4 \ | ||
54 | m4/efl_shm_open.m4 \ | ||
55 | m4/efl_tests.m4 \ | ||
56 | m4/evas_check_engine.m4 \ | ||
57 | m4/evas_check_loader.m4 \ | ||
58 | m4/evas_dither.m4 | ||
59 | |||
60 | pkgconfigdir = $(libdir)/pkgconfig | ||
61 | pkgconfig_DATA = evas.pc | ||
62 | |||
63 | if BUILD_ENGINE_SOFTWARE_X11 | ||
64 | pkgconfig_DATA += evas-software-x11.pc | ||
65 | endif | ||
66 | |||
67 | if BUILD_ENGINE_DIRECTFB | ||
68 | pkgconfig_DATA += evas-directfb.pc | ||
69 | endif | ||
70 | |||
71 | if BUILD_ENGINE_FB | ||
72 | pkgconfig_DATA += evas-fb.pc | ||
73 | endif | ||
74 | |||
75 | if BUILD_ENGINE_BUFFER | ||
76 | pkgconfig_DATA += evas-software-buffer.pc | ||
77 | endif | ||
78 | |||
79 | if BUILD_ENGINE_GL_X11 | ||
80 | pkgconfig_DATA += evas-opengl-x11.pc | ||
81 | endif | ||
82 | |||
83 | if BUILD_ENGINE_GL_SDL | ||
84 | pkgconfig_DATA += evas-opengl-sdl.pc | ||
85 | endif | ||
86 | |||
87 | if BUILD_ENGINE_GL_COCOA | ||
88 | pkgconfig_DATA += evas-opengl-cocoa.pc | ||
89 | endif | ||
90 | |||
91 | if BUILD_ENGINE_SOFTWARE_GDI | ||
92 | pkgconfig_DATA += evas-software-gdi.pc | ||
93 | endif | ||
94 | |||
95 | if BUILD_ENGINE_SOFTWARE_DDRAW | ||
96 | pkgconfig_DATA += evas-software-ddraw.pc | ||
97 | endif | ||
98 | |||
99 | if BUILD_ENGINE_DIRECT3D | ||
100 | pkgconfig_DATA += evas-direct3d.pc | ||
101 | endif | ||
102 | |||
103 | if BUILD_ENGINE_PSL1GHT | ||
104 | pkgconfig_DATA += evas-psl1ght.pc | ||
105 | endif | ||
106 | |||
107 | if BUILD_ENGINE_WAYLAND_SHM | ||
108 | pkgconfig_DATA += evas-wayland-shm.pc | ||
109 | endif | ||
110 | |||
111 | if BUILD_ENGINE_WAYLAND_EGL | ||
112 | pkgconfig_DATA += evas-wayland-egl.pc | ||
113 | endif | ||
114 | |||
115 | .PHONY: doc coverage | ||
116 | |||
117 | doc: | ||
118 | @echo "entering doc/" | ||
119 | $(MAKE) -C doc doc | ||
120 | |||
121 | # Unit tests | ||
122 | |||
123 | if EFL_ENABLE_TESTS | ||
124 | |||
125 | check-local: | ||
126 | @./src/tests/evas_suite | ||
127 | |||
128 | else | ||
129 | |||
130 | check-local: | ||
131 | @echo "reconfigure with --enable-tests" | ||
132 | |||
133 | endif | ||
134 | |||
135 | # Coverage report | ||
136 | |||
137 | if EFL_ENABLE_COVERAGE | ||
138 | lcov-reset: | ||
139 | @rm -rf $(top_builddir)/coverage | ||
140 | @find $(top_builddir) -name "*.gcda" -delete | ||
141 | @lcov --zerocounters --directory $(top_builddir) | ||
142 | |||
143 | lcov-report: | ||
144 | @mkdir $(top_builddir)/coverage | ||
145 | lcov --capture --compat-libtool --output-file $(top_builddir)/coverage/coverage.info --directory $(top_builddir) | ||
146 | lcov --remove $(top_builddir)/coverage/coverage.info '*.h' --output-file $(top_builddir)/coverage/coverage.cleaned.info | ||
147 | genhtml -t "$(PACKAGE_STRING)" -o $(top_builddir)/coverage/html $(top_builddir)/coverage/coverage.cleaned.info | ||
148 | @echo "Coverage Report at $(top_builddir)/coverage/html" | ||
149 | |||
150 | |||
151 | coverage: | ||
152 | @$(MAKE) lcov-reset | ||
153 | @$(MAKE) check | ||
154 | @$(MAKE) lcov-report | ||
155 | else | ||
156 | lcov-reset: | ||
157 | @echo "reconfigure with --enable-coverage" | ||
158 | |||
159 | lcov-report: | ||
160 | @echo "reconfigure with --enable-coverage" | ||
161 | |||
162 | coverage: | ||
163 | @echo "reconfigure with --enable-tests --enable-coverage" | ||
164 | endif | ||
165 | |||
166 | maintainer-clean-local: | ||
167 | rm -rf coverage | ||
diff --git a/legacy/evas/autogen.sh b/legacy/evas/autogen.sh deleted file mode 100755 index 72e10332c4..0000000000 --- a/legacy/evas/autogen.sh +++ /dev/null | |||
@@ -1,38 +0,0 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | rm -rf autom4te.cache | ||
4 | rm -f aclocal.m4 ltmain.sh | ||
5 | |||
6 | touch ABOUT-NLS | ||
7 | |||
8 | echo "Running aclocal..." ; aclocal $ACLOCAL_FLAGS -I m4 || exit 1 | ||
9 | echo "Running autoheader..." ; autoheader || exit 1 | ||
10 | echo "Running autoconf..." ; autoconf || exit 1 | ||
11 | echo "Running libtoolize..." ; (libtoolize --copy --automake || glibtoolize --automake) || exit 1 | ||
12 | echo "Running automake..." ; automake --add-missing --copy --gnu || exit 1 | ||
13 | |||
14 | W=0 | ||
15 | |||
16 | rm -f config.cache-env.tmp | ||
17 | echo "OLD_PARM=\"$@\"" >> config.cache-env.tmp | ||
18 | echo "OLD_CFLAGS=\"$CFLAGS\"" >> config.cache-env.tmp | ||
19 | echo "OLD_PATH=\"$PATH\"" >> config.cache-env.tmp | ||
20 | echo "OLD_PKG_CONFIG_PATH=\"$PKG_CONFIG_PATH\"" >> config.cache-env.tmp | ||
21 | echo "OLD_LDFLAGS=\"$LDFLAGS\"" >> config.cache-env.tmp | ||
22 | |||
23 | cmp config.cache-env.tmp config.cache-env >> /dev/null | ||
24 | if [ $? -ne 0 ]; then | ||
25 | W=1; | ||
26 | fi | ||
27 | |||
28 | if [ $W -ne 0 ]; then | ||
29 | echo "Cleaning configure cache..."; | ||
30 | rm -f config.cache config.cache-env | ||
31 | mv config.cache-env.tmp config.cache-env | ||
32 | else | ||
33 | rm -f config.cache-env.tmp | ||
34 | fi | ||
35 | |||
36 | if [ -z "$NOCONFIGURE" ]; then | ||
37 | ./configure -C "$@" | ||
38 | fi | ||
diff --git a/legacy/evas/configure.ac b/legacy/evas/configure.ac deleted file mode 100644 index f47e866a83..0000000000 --- a/legacy/evas/configure.ac +++ /dev/null | |||
@@ -1,1461 +0,0 @@ | |||
1 | ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## | ||
2 | ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## | ||
3 | m4_define([v_maj], [1]) | ||
4 | m4_define([v_min], [7]) | ||
5 | m4_define([v_mic], [99]) | ||
6 | m4_define([v_rev], m4_esyscmd([(svnversion "${SVN_REPO_PATH:-.}" | grep -v '\(export\|Unversioned directory\)' || echo 0) | awk -F : '{printf("%s\n", $1);}' | tr -d ' :MSP\n'])) | ||
7 | m4_if(v_rev, [0], [m4_define([v_rev], m4_esyscmd([git log 2> /dev/null | (grep -m1 git-svn-id || echo 0) | sed -e 's/.*@\([0-9]*\).*/\1/' | tr -d '\n']))]) | ||
8 | ##-- When released, remove the dnl on the below line | ||
9 | dnl m4_undefine([v_rev]) | ||
10 | ##-- When doing snapshots - change soname. remove dnl on below line | ||
11 | dnl m4_define([relname], [ver-pre-svn-07]) | ||
12 | dnl m4_define([v_rel], [-release relname]) | ||
13 | ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## | ||
14 | m4_ifdef([v_rev], [m4_define([v_ver], [v_maj.v_min.v_mic.v_rev])], [m4_define([v_ver], [v_maj.v_min.v_mic])]) | ||
15 | m4_define([lt_cur], m4_eval(v_maj + v_min)) | ||
16 | m4_define([lt_rev], v_mic) | ||
17 | m4_define([lt_age], v_min) | ||
18 | ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## | ||
19 | ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## | ||
20 | |||
21 | # rw_PROG_OBJC_WORKS | ||
22 | # Check whether the Objective C compiler works. | ||
23 | AC_DEFUN([rw_PROG_OBJC_WORKS], | ||
24 | [m4_ifdef([AC_PROG_OBJC], [AC_REQUIRE([AC_PROG_OBJC])dnl | ||
25 | AC_CACHE_CHECK([whether the Objective C compiler works], | ||
26 | [rw_cv_prog_objc_works], | ||
27 | [AC_LANG_PUSH([Objective C]) | ||
28 | AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], | ||
29 | [rw_cv_prog_objc_works=yes], | ||
30 | [rw_cv_prog_objc_works=no]) | ||
31 | AC_LANG_POP([Objective C])])], [rw_cv_prog_objc_works=no]) | ||
32 | ]) | ||
33 | |||
34 | AC_INIT([evas], [v_ver], [enlightenment-devel@lists.sourceforge.net]) | ||
35 | AC_PREREQ([2.52]) | ||
36 | AC_CONFIG_SRCDIR([configure.ac]) | ||
37 | AC_CONFIG_MACRO_DIR([m4]) | ||
38 | |||
39 | AC_CONFIG_HEADERS([config.h]) | ||
40 | AH_TOP([ | ||
41 | #ifndef EFL_CONFIG_H__ | ||
42 | #define EFL_CONFIG_H__ | ||
43 | ]) | ||
44 | AH_BOTTOM([ | ||
45 | #endif /* EFL_CONFIG_H__ */ | ||
46 | ]) | ||
47 | |||
48 | AM_INIT_AUTOMAKE([1.6 dist-bzip2]) | ||
49 | m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) | ||
50 | |||
51 | AC_GNU_SOURCE | ||
52 | |||
53 | AC_LIBTOOL_WIN32_DLL | ||
54 | define([AC_LIBTOOL_LANG_F77_CONFIG], [:])dnl | ||
55 | AC_PROG_LIBTOOL | ||
56 | |||
57 | ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## | ||
58 | ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## | ||
59 | m4_ifdef([v_rev], , [m4_define([v_rev], [0])]) | ||
60 | m4_ifdef([v_rel], , [m4_define([v_rel], [])]) | ||
61 | AC_DEFINE_UNQUOTED(VMAJ, [v_maj], [Major version]) | ||
62 | AC_DEFINE_UNQUOTED(VMIN, [v_min], [Minor version]) | ||
63 | AC_DEFINE_UNQUOTED(VMIC, [v_mic], [Micro version]) | ||
64 | AC_DEFINE_UNQUOTED(VREV, [v_rev], [Revison]) | ||
65 | version_info="lt_cur:lt_rev:lt_age" | ||
66 | release_info="v_rel" | ||
67 | AC_SUBST(version_info) | ||
68 | AC_SUBST(release_info) | ||
69 | ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## | ||
70 | ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## | ||
71 | VMAJ=v_maj | ||
72 | AC_SUBST(VMAJ) | ||
73 | |||
74 | ### Needed information | ||
75 | |||
76 | AC_CANONICAL_BUILD | ||
77 | AC_CANONICAL_HOST | ||
78 | |||
79 | case "$host_os" in | ||
80 | mingw32ce*) | ||
81 | MODULE_ARCH="$host_os-$host_cpu" | ||
82 | ;; | ||
83 | *) | ||
84 | MODULE_ARCH="$host_os-$host_cpu-v_maj.v_min.v_mic" | ||
85 | ;; | ||
86 | esac | ||
87 | AC_SUBST(MODULE_ARCH) | ||
88 | AC_DEFINE_UNQUOTED(MODULE_ARCH, "$MODULE_ARCH", "Module architecture") | ||
89 | |||
90 | want_fontconfig="yes" | ||
91 | want_fribidi="yes" | ||
92 | want_harfbuzz="auto" | ||
93 | want_pixman="no" | ||
94 | want_evas_cserve2="yes" | ||
95 | |||
96 | want_evas_engine_buffer="yes" | ||
97 | want_evas_engine_software_xlib="no" | ||
98 | want_evas_engine_software_xcb="no" | ||
99 | want_evas_engine_software_gdi="no" | ||
100 | want_evas_engine_software_ddraw="no" | ||
101 | want_evas_engine_gl_xlib="no" | ||
102 | want_evas_engine_gl_xcb="no" | ||
103 | want_evas_engine_gl_sdl="no" | ||
104 | want_evas_engine_gl_cocoa="no" | ||
105 | want_evas_engine_direct3d="no" | ||
106 | want_evas_engine_fb="no" | ||
107 | want_evas_engine_directfb="no" | ||
108 | want_evas_engine_psl1ght="no" | ||
109 | want_evas_engine_wayland_shm="no" | ||
110 | want_evas_engine_wayland_egl="no" | ||
111 | |||
112 | want_evas_image_loader_webp="yes" | ||
113 | want_evas_image_loader_gif="yes" | ||
114 | want_evas_image_loader_tiff="yes" | ||
115 | want_evas_image_loader_svg="yes" | ||
116 | |||
117 | case "$host_os" in | ||
118 | mingw32ce*) | ||
119 | want_fontconfig="no" | ||
120 | want_evas_image_loader_gif="no" | ||
121 | want_evas_image_loader_tiff="no" | ||
122 | want_evas_image_loader_svg="no" | ||
123 | ;; | ||
124 | mingw*) | ||
125 | want_evas_engine_software_gdi="yes" | ||
126 | want_evas_engine_software_ddraw="yes" | ||
127 | want_evas_engine_direct3d="yes" | ||
128 | want_evas_image_loader_svg="yes" | ||
129 | ;; | ||
130 | darwin*) | ||
131 | want_evas_engine_software_xlib="auto" | ||
132 | want_evas_engine_gl_cocoa="auto" | ||
133 | ;; | ||
134 | *) | ||
135 | want_evas_engine_software_xlib="auto" | ||
136 | want_evas_engine_gl_xlib="auto" | ||
137 | want_evas_engine_software_xcb="no" | ||
138 | want_evas_engine_gl_xcb="no" | ||
139 | want_evas_engine_fb="auto" | ||
140 | want_evas_engine_wayland_shm="auto" | ||
141 | want_evas_engine_wayland_egl="auto" | ||
142 | ;; | ||
143 | esac | ||
144 | |||
145 | case "$host_vendor" in | ||
146 | ps3*) | ||
147 | want_evas_engine_psl1ght="static" | ||
148 | ;; | ||
149 | esac | ||
150 | |||
151 | requirement_evas="" | ||
152 | |||
153 | |||
154 | ### Additional options to configure | ||
155 | |||
156 | # when used, that option makes configure script fails when | ||
157 | # a requirement is selected, but not met. | ||
158 | use_strict="no" | ||
159 | AC_ARG_ENABLE([strict], | ||
160 | AC_HELP_STRING([--enable-strict], [enable strict checking mode. @<:@default==disabled@:>@]), | ||
161 | [use_strict="yes"], | ||
162 | [use_strict="no"]) | ||
163 | |||
164 | # Simple X11 build/link | ||
165 | AC_ARG_ENABLE([simple-x11], | ||
166 | AC_HELP_STRING([--enable-simple-x11], [enable simple x11 linking]), | ||
167 | [ | ||
168 | if test "x${enableval}" = "xyes" ; then | ||
169 | want_evas_simple_x11="yes" | ||
170 | else | ||
171 | want_evas_simple_x11="no" | ||
172 | fi | ||
173 | ]) | ||
174 | |||
175 | |||
176 | ### Checks for programs | ||
177 | |||
178 | m4_ifdef([AC_PROG_OBJC], | ||
179 | [ | ||
180 | AC_PROG_OBJC | ||
181 | _AM_DEPENDENCIES(OBJC) | ||
182 | ], | ||
183 | [ | ||
184 | dnl#AC_CHECK_TOOL([OBJC], [gcc]) | ||
185 | dnl#AC_SUBST([OBJC]) | ||
186 | dnl#AC_SUBST([OBJCFLAGS]) | ||
187 | ]) | ||
188 | |||
189 | rw_PROG_OBJC_WORKS | ||
190 | |||
191 | AC_PROG_CXX | ||
192 | AC_PROG_CC | ||
193 | |||
194 | # pkg-config | ||
195 | PKG_PROG_PKG_CONFIG | ||
196 | |||
197 | # Check whether pkg-config supports Requires.private | ||
198 | if $PKG_CONFIG --atleast-pkgconfig-version 0.22; then | ||
199 | pkgconfig_requires_private="Requires.private" | ||
200 | else | ||
201 | pkgconfig_requires_private="Requires" | ||
202 | fi | ||
203 | AC_SUBST(pkgconfig_requires_private) | ||
204 | |||
205 | # doxygen program for documentation building | ||
206 | EFL_CHECK_DOXYGEN([build_doc="yes"], [build_doc="no"]) | ||
207 | |||
208 | |||
209 | ### Checks for libraries | ||
210 | |||
211 | # Evil library for compilation on Windows CE | ||
212 | |||
213 | case "$host_os" in | ||
214 | mingw*) | ||
215 | PKG_CHECK_MODULES([EVIL], [evil >= 1.0.0]) | ||
216 | AC_DEFINE(HAVE_EVIL, 1, [Set to 1 if evil package is installed]) | ||
217 | requirement_evas="evil ${requirement_evas}" | ||
218 | ;; | ||
219 | esac | ||
220 | |||
221 | ### Checks for portability layer | ||
222 | |||
223 | PKG_CHECK_MODULES([EXOTIC], | ||
224 | [exotic], | ||
225 | [enable_exotic="yes"], | ||
226 | [enable_exotic="no"]) | ||
227 | |||
228 | if test "x${enable_exotic}" = "xyes"; then | ||
229 | requirement_evas="exotic ${requirement_evas}" | ||
230 | |||
231 | AC_DEFINE([HAVE_EXOTIC], [1], [Define to 1 if you have Exotic.]) | ||
232 | fi | ||
233 | AM_CONDITIONAL([EVAS_HAVE_EXOTIC], [test "x${enable_exotic}" = "xyes"]) | ||
234 | |||
235 | ## strong dependencies | ||
236 | |||
237 | # Eina | ||
238 | PKG_CHECK_MODULES([EINA], [eina >= 1.6.0]) | ||
239 | CPPFLAGS_SAVE="$CPPFLAGS" | ||
240 | CPPFLAGS="$CPPFLAGS $EINA_CFLAGS" | ||
241 | AC_CHECK_SIZEOF(Eina_Unicode,, [#include <Eina.h>]) | ||
242 | CPPFLAGS="$CPPFLAGS_SAVE" | ||
243 | |||
244 | # Freetype | ||
245 | PKG_CHECK_MODULES([FREETYPE], [freetype2 >= 9.3.0]) | ||
246 | |||
247 | requirement_evas="freetype2 eina >= 1.6.0 ${requirement_evas}" | ||
248 | |||
249 | # Eo | ||
250 | |||
251 | PKG_CHECK_MODULES([EO], [eo]) | ||
252 | requirement_evas="eo ${requirement_evas}" | ||
253 | |||
254 | ## optional dependencies | ||
255 | |||
256 | # FontConfig | ||
257 | have_fontconfig="no" | ||
258 | AC_ARG_ENABLE([fontconfig], | ||
259 | AC_HELP_STRING([--disable-fontconfig], | ||
260 | [disable fontconfig for finding fonts. @<:@default=enabled@:>@]), | ||
261 | [ | ||
262 | if test "x${enableval}" = "xyes" ; then | ||
263 | want_fontconfig="yes" | ||
264 | else | ||
265 | want_fontconfig="no" | ||
266 | fi | ||
267 | ]) | ||
268 | |||
269 | if test "x${want_fontconfig}" = "xyes"; then | ||
270 | PKG_CHECK_MODULES([FONTCONFIG], | ||
271 | [fontconfig >= 2.5.0], | ||
272 | [ | ||
273 | have_fontconfig="yes" | ||
274 | AC_DEFINE(HAVE_FONTCONFIG, 1, [have fontconfig searching capabilities]) | ||
275 | requirement_evas="fontconfig ${requirement_evas}" | ||
276 | ], | ||
277 | [AC_MSG_ERROR([Fontconfig not found])]) | ||
278 | fi | ||
279 | |||
280 | LINEBREAK_CFLAGS='-I$(top_srcdir)/src/static_deps/liblinebreak' | ||
281 | LINEBREAK_LIBS='$(top_builddir)/src/static_deps/liblinebreak/liblinebreak.la' | ||
282 | AC_SUBST(LINEBREAK_CFLAGS) | ||
283 | AC_SUBST(LINEBREAK_LIBS) | ||
284 | |||
285 | # fribidi support | ||
286 | have_fribidi="no" | ||
287 | AC_ARG_ENABLE([fribidi], | ||
288 | AC_HELP_STRING([--disable-fribidi], | ||
289 | [disable bidirectional text support. @<:@default=enabled@:>@]), | ||
290 | [ | ||
291 | if test "x${enableval}" = "xyes" ; then | ||
292 | want_fribidi="yes" | ||
293 | else | ||
294 | want_fribidi="no" | ||
295 | fi | ||
296 | ]) | ||
297 | |||
298 | if test "x${want_fribidi}" = "xyes"; then | ||
299 | PKG_CHECK_MODULES([FRIBIDI], | ||
300 | [fribidi >= 0.19.2], | ||
301 | [ | ||
302 | have_fribidi="yes" | ||
303 | AC_DEFINE(HAVE_FRIBIDI, 1, [have fribidi support]) | ||
304 | requirement_evas="fribidi ${requirement_evas}" | ||
305 | CPPFLAGS_SAVE="$CPPFLAGS" | ||
306 | CPPFLAGS="$CPPFLAGS $FRIBIDI_CFLAGS" | ||
307 | AC_CHECK_SIZEOF(FriBidiChar,, [#include <fribidi/fribidi.h>]) | ||
308 | CPPFLAGS="$CPPFLAGS_SAVE" | ||
309 | ], | ||
310 | [AC_MSG_ERROR([Fribidi not found])]) | ||
311 | fi | ||
312 | |||
313 | # harfbuzz support | ||
314 | have_harfbuzz="no" | ||
315 | have_harfbuzz_ft="no" | ||
316 | AC_ARG_ENABLE([harfbuzz], | ||
317 | AC_HELP_STRING([--disable-harfbuzz], | ||
318 | [disable complex text shaping and layouting support. @<:@default=enabled@:>@]), | ||
319 | [ | ||
320 | if test "x${enableval}" = "xyes" ; then | ||
321 | want_harfbuzz="yes" | ||
322 | else | ||
323 | want_harfbuzz="no" | ||
324 | fi | ||
325 | ]) | ||
326 | |||
327 | if test "x${want_harfbuzz}" = "xyes" -o "x${want_harfbuzz}" = "xauto" ; then | ||
328 | PKG_CHECK_MODULES([HARFBUZZ], | ||
329 | [harfbuzz >= 0.9.0], | ||
330 | [ | ||
331 | have_harfbuzz="yes" | ||
332 | requirement_evas="harfbuzz ${requirement_evas}" | ||
333 | ], | ||
334 | [ | ||
335 | if test "x$want_harfbuzz" = "xyes" -a "x$use_strict" = "xyes" ; then | ||
336 | AC_MSG_ERROR([Harfbuzz not found (strict dependencies checking)]) | ||
337 | fi | ||
338 | ]) | ||
339 | if test "x$have_harfbuzz" = "xyes" ; then | ||
340 | |||
341 | CPPFLAGS_SAVE="$CPPFLAGS" | ||
342 | CPPFLAGS="$CPPFLAGS $HARFBUZZ_CFLAGS $FREETYPE_CFLAGS" | ||
343 | # must have for usage with harfbuzz although harfbuzz may not have it. | ||
344 | |||
345 | AC_CHECK_HEADER(hb-ft.h, | ||
346 | [ | ||
347 | have_harfbuzz_ft="yes" | ||
348 | #Depend on harfbuzz ft for harfbuzz support | ||
349 | AC_DEFINE(HAVE_HARFBUZZ, 1, [have harfbuzz support]) | ||
350 | ], | ||
351 | [ | ||
352 | if test "x$want_harfbuzz" = "xyes" -a "x$use_strict" = "xyes" ; then | ||
353 | AC_MSG_ERROR([Harfbuzz-ft not found (strict dependencies checking)]) | ||
354 | fi | ||
355 | have_harfbuzz="no" | ||
356 | ]) | ||
357 | CPPFLAGS="$CPPFLAGS_SAVE" | ||
358 | fi | ||
359 | fi | ||
360 | |||
361 | if test "x${have_harfbuzz}" = "xno"; then | ||
362 | HAS_HARFBUZZ=0 | ||
363 | fi | ||
364 | |||
365 | # Pixman | ||
366 | have_pixman="no" | ||
367 | AC_ARG_ENABLE([pixman], | ||
368 | AC_HELP_STRING([--enable-pixman], | ||
369 | [enable pixman for software rendering. @<:@default=enabled@:>@]), | ||
370 | [ | ||
371 | if test "x${enableval}" = "xyes" ; then | ||
372 | want_pixman="yes" | ||
373 | else | ||
374 | want_pixman="no" | ||
375 | fi | ||
376 | ]) | ||
377 | |||
378 | if test "x${want_pixman}" = "xyes" -o "x${want_pixman}" = "xauto" ; then | ||
379 | PKG_CHECK_MODULES([PIXMAN], | ||
380 | [pixman-1], | ||
381 | [ | ||
382 | have_pixman="yes" | ||
383 | AC_DEFINE(HAVE_PIXMAN, 1, [have pixman for rendering]) | ||
384 | requirement_evas="pixman-1 ${requirement_evas}" | ||
385 | ], | ||
386 | [ | ||
387 | if test "x${want_pixman}" = "xyes" -a "x${use_strict}" = "xyes" ; then | ||
388 | AC_MSG_ERROR([Pixman not found (strict dependencies checking)]) | ||
389 | fi | ||
390 | ]) | ||
391 | fi | ||
392 | |||
393 | have_pixman_font="no" | ||
394 | AC_ARG_ENABLE(pixman-font, | ||
395 | AC_HELP_STRING([--enable-pixman-font], [Allow pixman to render fonts]), | ||
396 | [ | ||
397 | have_pixman_font="yes" | ||
398 | AC_DEFINE(PIXMAN_FONT, 1, [Allow pixman to render fonts]) | ||
399 | ] | ||
400 | ) | ||
401 | |||
402 | have_pixman_rect="no" | ||
403 | AC_ARG_ENABLE(pixman-rect, | ||
404 | AC_HELP_STRING([--enable-pixman-rect], [Allow pixman to render rects]), | ||
405 | [ | ||
406 | have_pixman_rect="yes" | ||
407 | AC_DEFINE(PIXMAN_RECT, 1, [Allow pixman to render rects]) | ||
408 | ] | ||
409 | ) | ||
410 | |||
411 | have_pixman_line="no" | ||
412 | AC_ARG_ENABLE(pixman-line, | ||
413 | AC_HELP_STRING([--enable-pixman-line], [Allow pixman to render lines]), | ||
414 | [ | ||
415 | have_pixman_line="yes" | ||
416 | AC_DEFINE(PIXMAN_LINE, 1, [Allow pixman to render lines]) | ||
417 | ] | ||
418 | ) | ||
419 | |||
420 | have_pixman_poly="no" | ||
421 | AC_ARG_ENABLE(pixman-poly, | ||
422 | AC_HELP_STRING([--enable-pixman-poly], [Allow pixman to render polys]), | ||
423 | [ | ||
424 | have_pixman_poly="yes" | ||
425 | AC_DEFINE(PIXMAN_POLY, 1, [Allow pixman to render polys]) | ||
426 | ] | ||
427 | ) | ||
428 | |||
429 | have_pixman_image="no" | ||
430 | AC_ARG_ENABLE(pixman-image, | ||
431 | AC_HELP_STRING([--enable-pixman-image], [Allow pixman to render images]), | ||
432 | [ | ||
433 | have_pixman_image="yes" | ||
434 | AC_DEFINE(PIXMAN_IMAGE, 1, [Allow pixman to render images]) | ||
435 | ] | ||
436 | ) | ||
437 | |||
438 | have_pixman_image_scale_sample="no" | ||
439 | AC_ARG_ENABLE(pixman-image-scale-sample, | ||
440 | AC_HELP_STRING([--enable-pixman-image-scale-sample], [Allow pixman to render sampled scaled images]), | ||
441 | [ | ||
442 | have_pixman_image_scale_sample="yes" | ||
443 | AC_DEFINE(PIXMAN_IMAGE_SCALE_SAMPLE, 1, [Allow pixman to render image sampled scaling]) | ||
444 | ] | ||
445 | ) | ||
446 | |||
447 | have_tile_rotate="no" | ||
448 | AC_ARG_ENABLE(tile-rotate, | ||
449 | AC_HELP_STRING([--enable-tile-rotate], [Enable tiled rotate algorithm]), | ||
450 | [ | ||
451 | have_tile_rotate="yes" | ||
452 | AC_DEFINE(TILE_ROTATE, 1, [Enable tiled rotate algorithm]) | ||
453 | ] | ||
454 | ) | ||
455 | |||
456 | ### Checks for header files | ||
457 | AC_HEADER_STDC | ||
458 | AC_CHECK_HEADERS([unistd.h stdint.h sys/param.h netinet/in.h sys/mman.h]) | ||
459 | EFL_CHECK_PATH_MAX | ||
460 | |||
461 | ### Checks for types | ||
462 | AC_CHECK_TYPES([struct sigaction], [], [], | ||
463 | [[#include <signal.h>]]) | ||
464 | |||
465 | |||
466 | ### Checks for structures | ||
467 | |||
468 | |||
469 | ### Checks for compiler characteristics | ||
470 | AC_C_CONST | ||
471 | AC_C_BIGENDIAN | ||
472 | AC_PROG_CC_STDC | ||
473 | EFL_ATTRIBUTE_UNUSED | ||
474 | EFL_ATTRIBUTE_VECTOR | ||
475 | EFL_ATTRIBUTE_ALWAYS_INLINE | ||
476 | |||
477 | |||
478 | ### Checks for linker characteristics | ||
479 | lt_enable_auto_import="" | ||
480 | case "${host_os}" in | ||
481 | mingw*) | ||
482 | AC_DEFINE(EFL_EVAS_BUILD, 1, [Define to mention that evas is built]) | ||
483 | lt_enable_auto_import="-Wl,--enable-auto-import" | ||
484 | ;; | ||
485 | esac | ||
486 | AC_SUBST(lt_enable_auto_import) | ||
487 | |||
488 | |||
489 | ### Checks for library functions | ||
490 | |||
491 | AC_ISC_POSIX | ||
492 | AC_CHECK_FUNCS([siglongjmp]) | ||
493 | |||
494 | # alloca | ||
495 | AC_FUNC_ALLOCA | ||
496 | |||
497 | # fnmatch | ||
498 | EFL_CHECK_FNMATCH([], [AC_MSG_ERROR([Cannot find fnmatch()])]) | ||
499 | |||
500 | # dlopen | ||
501 | dlopen_libs="" | ||
502 | case "$host_os" in | ||
503 | mingw32ce*) | ||
504 | # managed by evil | ||
505 | AC_DEFINE(HAVE_DLSYM) | ||
506 | ;; | ||
507 | mingw*) | ||
508 | # nothing on mingw platform | ||
509 | ;; | ||
510 | *) | ||
511 | AC_CHECK_FUNCS(dlsym, res=yes, res=no) | ||
512 | if test "x$res" = "xyes"; then | ||
513 | AC_DEFINE(HAVE_DLSYM) | ||
514 | else | ||
515 | AC_CHECK_LIB(dl, dlsym, res=yes, res=no) | ||
516 | if test "x$res" = "xyes"; then | ||
517 | dlopen_libs=-ldl | ||
518 | AC_DEFINE(HAVE_DLSYM) | ||
519 | else | ||
520 | want_evas_engine_gl_xlib="no" | ||
521 | want_evas_engine_gl_xcb="no" | ||
522 | want_evas_engine_gl_sdl="no" | ||
523 | fi | ||
524 | fi | ||
525 | esac | ||
526 | AC_SUBST(dlopen_libs) | ||
527 | |||
528 | res=no | ||
529 | AC_CHECK_LIB(m, lround, res=yes, res=no) | ||
530 | if test "x$res" = "xyes"; then | ||
531 | AC_DEFINE(HAVE_LROUND, 1, C99 lround function exists) | ||
532 | fi | ||
533 | |||
534 | if test "x${want_evas_image_loader_generic}" = "xyes" ; then | ||
535 | EFL_CHECK_SHM_OPEN | ||
536 | fi | ||
537 | |||
538 | want_evas_cserve2="yes" | ||
539 | # cserve2 only works on Linux so far. | ||
540 | if test "x${want_evas_cserve2}" = "xyes" ; then | ||
541 | AC_CHECK_HEADERS( | ||
542 | [sys/epoll.h sys/inotify.h sys/signalfd.h], | ||
543 | [], | ||
544 | [ want_evas_cserve2="no" ] | ||
545 | ) | ||
546 | fi | ||
547 | |||
548 | shm_open_libs="" | ||
549 | if test "x${want_evas_cserve2}" = "xyes" ; then | ||
550 | EFL_CHECK_SHM_OPEN( | ||
551 | [ shm_open_libs=${EFL_SHM_OPEN_LIBS} ], | ||
552 | [ want_evas_cserve2="no" ]) | ||
553 | fi | ||
554 | AC_SUBST([shm_open_libs]) | ||
555 | |||
556 | if test "x${want_evas_cserve2}" = "xyes" ; then | ||
557 | AC_DEFINE(EVAS_CSERVE2, 1, [Shared cache server.]) | ||
558 | fi | ||
559 | AM_CONDITIONAL([EVAS_CSERVE2], [test "x${want_evas_cserve2}" = "xyes"]) | ||
560 | |||
561 | ####################################### | ||
562 | ## GL force flavor gles | ||
563 | gl_flavor_gles="no" | ||
564 | AC_MSG_CHECKING(whether to build GLES flavor of GL) | ||
565 | AC_ARG_ENABLE(gl-flavor-gles, | ||
566 | AC_HELP_STRING([--enable-gl-flavor-gles], [enable gles flavor of gl instead of standard]), | ||
567 | [ | ||
568 | if test "x$enableval" = "xyes" ; then | ||
569 | AC_MSG_RESULT(yes) | ||
570 | AC_DEFINE(GL_GLES, 1, [GLSL runtime shader GLES2 support]) | ||
571 | gl_flavor_gles="yes" | ||
572 | gles_variety_sgx="yes" | ||
573 | else | ||
574 | AC_MSG_RESULT(no) | ||
575 | gl_flavor_gles="no" | ||
576 | fi | ||
577 | ], [ | ||
578 | AC_MSG_RESULT(no) | ||
579 | gl_flavor_gles="no" | ||
580 | ] | ||
581 | ) | ||
582 | |||
583 | ##################################################################### | ||
584 | ## Engines | ||
585 | |||
586 | EVAS_CHECK_ENGINE([buffer], [${want_evas_engine_buffer}], [yes], [Buffer]) | ||
587 | EVAS_CHECK_ENGINE([software-gdi], [${want_evas_engine_software_gdi}], [no], [Software GDI]) | ||
588 | EVAS_CHECK_ENGINE([software-ddraw], [${want_evas_engine_software_ddraw}], [no], [Software DirectDraw]) | ||
589 | EVAS_CHECK_ENGINE([direct3d], [${want_evas_engine_direct3d}], [no], [Direct3D]) | ||
590 | EVAS_CHECK_ENGINE([psl1ght], [${want_evas_engine_psl1ght}], [no], [PSL1GHT]) | ||
591 | EVAS_CHECK_ENGINE([gl-sdl], [${want_evas_engine_gl_sdl}], [no], [OpenGL SDL]) | ||
592 | EVAS_CHECK_ENGINE([gl-cocoa], [${want_evas_engine_gl_cocoa}], [no], [OpenGL Cocoa]) | ||
593 | EVAS_CHECK_ENGINE([fb], [${want_evas_engine_fb}], [no], [Framebuffer]) | ||
594 | EVAS_CHECK_ENGINE([directfb], [${want_evas_engine_directfb}], [no], [DirectFB]) | ||
595 | EVAS_CHECK_ENGINE([wayland-shm], [${want_evas_engine_wayland_shm}], [no], [Wayland Shm]) | ||
596 | EVAS_CHECK_ENGINE([wayland-egl], [${want_evas_engine_wayland_egl}], [no], [Wayland Egl]) | ||
597 | |||
598 | # SDL primitive | ||
599 | sdl_primitive="no" | ||
600 | |||
601 | AC_ARG_ENABLE([sdl-primitive], | ||
602 | [AC_HELP_STRING([--enable-sdl-primitive], [])], | ||
603 | [sdl_primitive=${enableval}] | ||
604 | ) | ||
605 | AC_MSG_CHECKING([whether to use SDL primitive when possible]) | ||
606 | AC_MSG_RESULT([${sdl_primitive}]) | ||
607 | |||
608 | if test "x${sdl_primitive}" = "xyes" ; then | ||
609 | AC_DEFINE([ENGINE_SDL_PRIMITIVE], [1], [Use SDL primitive when possible]) | ||
610 | fi | ||
611 | |||
612 | # if software generic need to be build as part of libevas.so | ||
613 | have_static_software_generic="no" | ||
614 | AC_ARG_ENABLE([static-software-generic], | ||
615 | [AC_HELP_STRING([--enable-static-software-generic], [Build software generic engine as part of libevas])], | ||
616 | [have_static_software_generic=${enableval}] | ||
617 | ) | ||
618 | AC_MSG_CHECKING([Whether to build software generic engine as part of libevas]) | ||
619 | AC_MSG_RESULT([${have_static_software_generic}]) | ||
620 | |||
621 | if test "x${have_static_module}" = "xyes" -a "x${have_static_software_generic}" = "xno"; then | ||
622 | AC_MSG_WARN([Forcing --enable-static-software-generic as engines must be compiled statically]) | ||
623 | have_static_software_generic="yes" | ||
624 | fi | ||
625 | |||
626 | AM_CONDITIONAL(EVAS_STATIC_BUILD_SOFTWARE_GENERIC, test "x${have_static_software_generic}" = "xyes") | ||
627 | if test "x${have_static_software_generic}" = "xyes"; then | ||
628 | AC_DEFINE(EVAS_STATIC_BUILD_SOFTWARE_GENERIC, [1], [Build software generic engine as part of libevas]) | ||
629 | fi | ||
630 | |||
631 | |||
632 | ######## Software Engine ######## | ||
633 | have_evas_engine_software_x11="no" | ||
634 | have_evas_engine_software_xcb="no" | ||
635 | have_evas_engine_software_xlib="no" | ||
636 | build_software_xcb= | ||
637 | |||
638 | ## XCB Checks ## | ||
639 | want_xcb="no" | ||
640 | AC_MSG_CHECKING(whether to build Software XCB Engine) | ||
641 | AC_ARG_ENABLE(software-xcb, | ||
642 | AC_HELP_STRING([--enable-software-xcb], [enable Software XCB Engine. @<:@default=disabled@:>@]), [want_xcb=$enableval] | ||
643 | ) | ||
644 | if test "x$want_xcb" != "xno" ; then | ||
645 | EVAS_CHECK_ENGINE([software-xcb], [${want_evas_engine_software_xcb}], [no], [Software XCB]) | ||
646 | if test "x$have_evas_engine_software_xcb" != "xno" ; then | ||
647 | build_software_xcb="yes" | ||
648 | have_evas_engine_software_x11="yes" | ||
649 | AC_DEFINE_UNQUOTED(BUILD_ENGINE_SOFTWARE_X11, [1], [Build software X11 engine]) | ||
650 | AC_DEFINE_UNQUOTED(BUILD_ENGINE_SOFTWARE_XCB, [1], [Build software XCB backend]) | ||
651 | fi | ||
652 | else | ||
653 | AC_MSG_RESULT(no) | ||
654 | build_software_xcb="no" | ||
655 | fi | ||
656 | |||
657 | ## If we are not building XCB, then we can build XLib ## | ||
658 | |||
659 | if test "x$build_software_xcb" = "xno" ; then | ||
660 | EVAS_CHECK_ENGINE([software-xlib], [${want_evas_engine_software_xlib}], [no], [Software Xlib]) | ||
661 | # if software_x11 is available, define everything needed for X11 | ||
662 | if test "x$have_evas_engine_software_xlib" != "xno" ; then | ||
663 | have_evas_engine_software_x11="yes" | ||
664 | AC_DEFINE_UNQUOTED(BUILD_ENGINE_SOFTWARE_X11, [1], [Build software X11 engine]) | ||
665 | AC_DEFINE_UNQUOTED(BUILD_ENGINE_SOFTWARE_XLIB, [1], [Build software Xlib backend]) | ||
666 | fi | ||
667 | else | ||
668 | have_evas_engine_software_xlib="no" | ||
669 | fi | ||
670 | |||
671 | if test "x$have_evas_engine_software_xlib" = "xstatic" -o "x$have_evas_engine_software_xcb" = "xstatic"; then | ||
672 | AC_DEFINE_UNQUOTED(EVAS_STATIC_BUILD_SOFTWARE_X11, [1], [Build software X11 engine as part of libevas]) | ||
673 | fi | ||
674 | |||
675 | AC_SUBST(have_evas_engine_software_xcb) | ||
676 | AC_SUBST(have_evas_engine_software_xlib) | ||
677 | |||
678 | AM_CONDITIONAL([BUILD_ENGINE_SOFTWARE_XLIB], [test "x${have_evas_engine_software_xlib}" != "xno"]) | ||
679 | AM_CONDITIONAL([BUILD_ENGINE_SOFTWARE_XCB], [test "x${have_evas_engine_software_xcb}" != "xno"]) | ||
680 | AM_CONDITIONAL([BUILD_ENGINE_SOFTWARE_X11], [test "x${have_evas_engine_software_x11}" != "xno"]) | ||
681 | |||
682 | AM_CONDITIONAL([EVAS_STATIC_BUILD_SOFTWARE_X11], [test "x${have_evas_engine_software_xcb}" = "xstatic" -o "x${have_evas_engine_software_xlib}" = "xstatic"]) | ||
683 | AM_CONDITIONAL([EVAS_STATIC_BUILD_SOFTWARE_XLIB], [test "x${have_evas_engine_software_xlib}" = "xstatic"]) | ||
684 | AM_CONDITIONAL([EVAS_STATIC_BUILD_SOFTWARE_XCB], [test "x${have_evas_engine_software_xcb}" = "xstatic"]) | ||
685 | |||
686 | AC_SUBST(have_evas_engine_software_x11) | ||
687 | |||
688 | |||
689 | ######## OpenGL Engine ######## | ||
690 | have_evas_engine_gl_x11="no" | ||
691 | have_evas_engine_gl_xcb="no" | ||
692 | build_gl_xcb="no" | ||
693 | |||
694 | ## XCB Checks ## | ||
695 | want_gl_xcb="no" | ||
696 | AC_MSG_CHECKING(whether to build OpenGL XCB Engine) | ||
697 | AC_ARG_ENABLE(gl-xcb, | ||
698 | AC_HELP_STRING([--enable-gl-xcb], [enable OpenGL XCB Engine. @<:@default=disabled@:>@]), [want_gl_xcb=$enableval] | ||
699 | ) | ||
700 | if test "x$want_gl_xcb" = "xyes" ; then | ||
701 | EVAS_CHECK_ENGINE([gl-xcb], [${want_evas_engine_gl_xcb}], [no], [OpenGL XCB]) | ||
702 | if test "x$have_evas_engine_gl_xcb" != "xno" ; then | ||
703 | build_gl_xcb="yes" | ||
704 | have_evas_engine_gl_x11="yes" | ||
705 | AC_DEFINE(BUILD_ENGINE_GL_X11, [1], [Build GL X11 engine]) | ||
706 | AC_DEFINE(BUILD_ENGINE_GL_XCB, [1], [Build GL Xcb backend]) | ||
707 | if test "x$have_evas_engine_gl_xcb" = "xstatic" ; then | ||
708 | AC_DEFINE(EVAS_STATIC_BUILD_GL_X11, [1], [Build GL X11 engine as part of libevas]) | ||
709 | fi | ||
710 | fi | ||
711 | AC_SUBST(have_evas_engine_gl_xcb) | ||
712 | else | ||
713 | AC_MSG_RESULT(no) | ||
714 | build_gl_xcb="no" | ||
715 | fi | ||
716 | |||
717 | ## If we are not building XCB, then we can build XLib ## | ||
718 | |||
719 | if test "x$build_gl_xcb" = "xno" ; then | ||
720 | EVAS_CHECK_ENGINE([gl-xlib], [${want_evas_engine_gl_xlib}], [no], [OpenGL XLib]) | ||
721 | if test "x$have_evas_engine_gl_xlib" != "xno" ; then | ||
722 | have_evas_engine_gl_x11="yes" | ||
723 | AC_DEFINE_UNQUOTED(BUILD_ENGINE_GL_X11, [1], [Build OpenGL X11 engine]) | ||
724 | AC_DEFINE_UNQUOTED(BUILD_ENGINE_GL_XLIB, [1], [Build OpenGL Xlib backend]) | ||
725 | if test "x$have_evas_engine_gl_xlib" = "xstatic" ; then | ||
726 | AC_DEFINE_UNQUOTED(EVAS_STATIC_BUILD_GL_X11, [1], [Build OpenGL X11 engine as part of libevas]) | ||
727 | fi | ||
728 | fi | ||
729 | else | ||
730 | have_evas_engine_gl_xlib="no" | ||
731 | fi | ||
732 | AC_SUBST(have_evas_engine_gl_xlib) | ||
733 | |||
734 | AM_CONDITIONAL([BUILD_ENGINE_GL_XLIB], [test "x${have_evas_engine_gl_xlib}" != "xno"]) | ||
735 | AM_CONDITIONAL([BUILD_ENGINE_GL_XCB], [test "x${have_evas_engine_gl_xcb}" != "xno"]) | ||
736 | AM_CONDITIONAL([BUILD_ENGINE_GL_X11], [test "x${have_evas_engine_gl_x11}" != "xno"]) | ||
737 | |||
738 | AM_CONDITIONAL([EVAS_STATIC_BUILD_GL_X11], [test "x${have_evas_engine_gl_xcb}" = "xstatic" -o "x${have_evas_engine_gl_xlib}" = "xstatic"]) | ||
739 | AM_CONDITIONAL([EVAS_STATIC_BUILD_GL_XLIB], [test "x${have_evas_engine_gl_xlib}" = "xstatic"]) | ||
740 | AM_CONDITIONAL([EVAS_STATIC_BUILD_GL_XCB], [test "x${have_evas_engine_gl_xcb}" = "xstatic"]) | ||
741 | |||
742 | AC_SUBST(have_evas_engine_gl_x11) | ||
743 | |||
744 | # common gl | ||
745 | have_evas_engine_gl_common="no" | ||
746 | have_static_evas_engine_gl_common="no" | ||
747 | if test "x$have_evas_engine_gl_xlib" = "xyes" \ | ||
748 | || test "x$have_evas_engine_gl_xcb" = "xyes" \ | ||
749 | || test "x$have_evas_engine_gl_sdl" = "xyes" \ | ||
750 | || test "x$have_evas_engine_gl_cocoa" = "xyes" \ | ||
751 | || test "x$have_evas_engine_wayland_egl" = "xyes"; then | ||
752 | have_evas_engine_gl_common="yes" | ||
753 | fi | ||
754 | if test "x$have_evas_engine_gl_xlib" = "xstatic" \ | ||
755 | || test "x$have_evas_engine_gl_xcb" = "xstatic" \ | ||
756 | || test "x$have_evas_engine_gl_sdl" = "xstatic" \ | ||
757 | || test "x$have_evas_engine_gl_cocoa" = "xstatic" \ | ||
758 | || test "x$have_evas_engine_wayland_egl" = "xstatic"; then | ||
759 | have_evas_engine_gl_common="yes" | ||
760 | have_static_evas_engine_gl_common="yes" | ||
761 | fi | ||
762 | |||
763 | if test "x$have_evas_engine_gl_common" = "xyes"; then | ||
764 | evas_engine_gl_common_libs="" | ||
765 | AC_DEFINE(BUILD_ENGINE_GL_COMMON, [1], [Generic OpenGL Rendering Support]) | ||
766 | fi | ||
767 | |||
768 | AC_SUBST([evas_engine_gl_common_libs]) | ||
769 | |||
770 | AM_CONDITIONAL(BUILD_ENGINE_GL_COMMON, [test "x$have_evas_engine_gl_common" = "xyes"]) | ||
771 | |||
772 | AM_CONDITIONAL(EVAS_STATIC_BUILD_GL_COMMON, test "x${have_static_evas_engine_gl_common}" = "xyes") | ||
773 | if test "x${have_static_evas_engine_gl_common}" = "xyes"; then | ||
774 | AC_DEFINE(EVAS_STATIC_BUILD_GL_COMMON, [1], [Build GL generic engine as part of libevas]) | ||
775 | fi | ||
776 | |||
777 | # gl_sdl | ||
778 | if test "x$have_evas_engine_gl_sdl" = "xyes" || test "x$have_evas_engine_gl_sdl" = "xstatic" ; then | ||
779 | AC_CHECK_DECL(SDL_GL_CONTEXT_MAJOR_VERSION, | ||
780 | [AC_DEFINE(HAVE_SDL_GL_CONTEXT_VERSION, [1], [SDL_GL version attributes present])],, | ||
781 | [#include <SDL/SDL_video.h>]) | ||
782 | fi | ||
783 | |||
784 | if test "x$gl_flavor_gles" = "xyes"; then | ||
785 | AC_CHECK_DECL(SDL_OPENGLES, | ||
786 | [AC_DEFINE(HAVE_SDL_FLAG_OPENGLES, [1], [SDL_OPENGLES flag is present])],, | ||
787 | [#include <SDL/SDL_video.h>]) | ||
788 | fi | ||
789 | |||
790 | ##################################################################### | ||
791 | ## Font Loaders | ||
792 | |||
793 | PKG_CHECK_MODULES([EET], [eet >= 1.7.0]) | ||
794 | requirement_evas="eet >= 1.7.0 ${requirement_evas}" | ||
795 | |||
796 | ##################################################################### | ||
797 | ## Image loaders | ||
798 | |||
799 | #have_static_module="yes" | ||
800 | do_module="true" | ||
801 | do_static="false" | ||
802 | |||
803 | ##################################################################### | ||
804 | evas_image_loader_generic_cflags="" | ||
805 | evas_image_loader_generic_libs="" | ||
806 | AC_SUBST([evas_image_loader_generic_cflags]) | ||
807 | AC_SUBST([evas_image_loader_generic_libs]) | ||
808 | AM_CONDITIONAL(BUILD_LOADER_GENERIC, [${do_module}]) | ||
809 | AM_CONDITIONAL(EVAS_STATIC_BUILD_GENERIC, [${do_static}]) | ||
810 | if test "x${do_static}" = "xtrue"; then | ||
811 | AC_DEFINE(EVAS_STATIC_BUILD_GENERIC, [1], [Static Generic Loader]) | ||
812 | fi | ||
813 | AC_DEFINE(BUILD_LOADER_GENERIC, [1], [Generic Loader]) | ||
814 | |||
815 | ##################################################################### | ||
816 | evas_image_loader_xpm_cflags="" | ||
817 | evas_image_loader_xpm_libs="" | ||
818 | AC_SUBST([evas_image_loader_xpm_cflags]) | ||
819 | AC_SUBST([evas_image_loader_xpm_libs]) | ||
820 | AM_CONDITIONAL(BUILD_LOADER_XPM, [${do_module}]) | ||
821 | AM_CONDITIONAL(EVAS_STATIC_BUILD_XPM, [${do_static}]) | ||
822 | if test "x${do_static}" = "xtrue"; then | ||
823 | AC_DEFINE(EVAS_STATIC_BUILD_XPM, [1], [StaticXPM Loader]) | ||
824 | fi | ||
825 | AC_DEFINE(BUILD_LOADER_XPM, [1], [XPM Loader]) | ||
826 | |||
827 | ##################################################################### | ||
828 | evas_image_loader_bmp_cflags="" | ||
829 | evas_image_loader_bmp_libs="" | ||
830 | AC_SUBST([evas_image_loader_bmp_cflags]) | ||
831 | AC_SUBST([evas_image_loader_bmp_libs]) | ||
832 | AM_CONDITIONAL(BUILD_LOADER_BMP, [${do_module}]) | ||
833 | AM_CONDITIONAL(EVAS_STATIC_BUILD_BMP, [${do_static}]) | ||
834 | if test "x${do_static}" = "xtrue"; then | ||
835 | AC_DEFINE(EVAS_STATIC_BUILD_BMP, [1], [Static BMP Loader]) | ||
836 | fi | ||
837 | AC_DEFINE(BUILD_LOADER_BMP, [1], [BMP Loader]) | ||
838 | |||
839 | ##################################################################### | ||
840 | evas_image_loader_ico_cflags="" | ||
841 | evas_image_loader_ico_libs="" | ||
842 | AC_SUBST([evas_image_loader_ico_cflags]) | ||
843 | AC_SUBST([evas_image_loader_ico_libs]) | ||
844 | AM_CONDITIONAL(BUILD_LOADER_ICO, [${do_module}]) | ||
845 | AM_CONDITIONAL(EVAS_STATIC_BUILD_ICO, [${do_static}]) | ||
846 | if test "x${do_static}" = "xtrue"; then | ||
847 | AC_DEFINE(EVAS_STATIC_BUILD_ICO, [1], [Static ICO Loader]) | ||
848 | fi | ||
849 | AC_DEFINE(BUILD_LOADER_ICO, [1], [ICO Loader]) | ||
850 | |||
851 | ##################################################################### | ||
852 | evas_image_loader_pmaps_cflags="" | ||
853 | evas_image_loader_pmaps_libs="" | ||
854 | AC_SUBST([evas_image_loader_pmaps_cflags]) | ||
855 | AC_SUBST([evas_image_loader_pmaps_libs]) | ||
856 | AM_CONDITIONAL(BUILD_LOADER_PMAPS, [${do_module}]) | ||
857 | AM_CONDITIONAL(EVAS_STATIC_BUILD_PMAPS, [${do_static}]) | ||
858 | if test "x${do_static}" = "xtrue"; then | ||
859 | AC_DEFINE(EVAS_STATIC_BUILD_PMAPS, [1], [Static PMAPS Loader]) | ||
860 | fi | ||
861 | AC_DEFINE(BUILD_LOADER_PMAPS, [1], [PMAPS Loader]) | ||
862 | |||
863 | ##################################################################### | ||
864 | evas_image_loader_psd_cflags="" | ||
865 | evas_image_loader_psd_libs="" | ||
866 | AC_SUBST([evas_image_loader_psd_cflags]) | ||
867 | AC_SUBST([evas_image_loader_psd_libs]) | ||
868 | AM_CONDITIONAL(BUILD_LOADER_PSD, [${do_module}]) | ||
869 | AM_CONDITIONAL(EVAS_STATIC_BUILD_PSD, [${do_static}]) | ||
870 | if test "x${do_static}" = "xtrue"; then | ||
871 | AC_DEFINE(EVAS_STATIC_BUILD_PSD, [1], [Static PSD Loader]) | ||
872 | fi | ||
873 | AC_DEFINE(BUILD_LOADER_PSD, [1], [PSD Loader]) | ||
874 | |||
875 | ##################################################################### | ||
876 | evas_image_loader_tga_cflags="" | ||
877 | evas_image_loader_tga_libs="" | ||
878 | AC_SUBST([evas_image_loader_tga_cflags]) | ||
879 | AC_SUBST([evas_image_loader_tga_libs]) | ||
880 | AM_CONDITIONAL(BUILD_LOADER_TGA, [${do_module}]) | ||
881 | AM_CONDITIONAL(EVAS_STATIC_BUILD_TGA, [${do_static}]) | ||
882 | if test "x${do_static}" = "xtrue"; then | ||
883 | AC_DEFINE(EVAS_STATIC_BUILD_TGA, [1], [Static TGA Loader]) | ||
884 | fi | ||
885 | AC_DEFINE(BUILD_LOADER_TGA, [1], [TGA Loader]) | ||
886 | |||
887 | ##################################################################### | ||
888 | evas_image_loader_wbmp_cflags="" | ||
889 | evas_image_loader_wbmp_libs="" | ||
890 | AC_SUBST([evas_image_loader_wbmp_cflags]) | ||
891 | AC_SUBST([evas_image_loader_wbmp_libs]) | ||
892 | AM_CONDITIONAL(BUILD_LOADER_WBMP, [${do_module}]) | ||
893 | AM_CONDITIONAL(EVAS_STATIC_BUILD_WBMP, [${do_static}]) | ||
894 | if test "x${do_static}" = "xtrue"; then | ||
895 | AC_DEFINE(EVAS_STATIC_BUILD_WBMP, [1], [Static WBMP Loader]) | ||
896 | fi | ||
897 | AC_DEFINE(BUILD_LOADER_WBMP, [1], [WBMP Loader]) | ||
898 | |||
899 | ##################################################################### | ||
900 | evas_image_loader_eet_cflags="${EET_CFLAGS}" | ||
901 | evas_image_loader_eet_libs="${EET_LIBS}" | ||
902 | AC_SUBST([evas_image_loader_eet_cflags]) | ||
903 | AC_SUBST([evas_image_loader_eet_libs]) | ||
904 | AM_CONDITIONAL(BUILD_LOADER_EET, [${do_module}]) | ||
905 | AM_CONDITIONAL(EVAS_STATIC_BUILD_EET, [${do_static}]) | ||
906 | if test "x${do_static}" = "xtrue"; then | ||
907 | AC_DEFINE(EVAS_STATIC_BUILD_EET, [1], [Static EET Loader]) | ||
908 | fi | ||
909 | AC_DEFINE(BUILD_LOADER_EET, [1], [EET Loader]) | ||
910 | |||
911 | ##################################################################### | ||
912 | have_evas_image_saver_jpeg="no" | ||
913 | evas_image_loader_jpeg_cflags="" | ||
914 | AC_CHECK_HEADER([jpeglib.h], [], [AC_MSG_ERROR([JPEG header not found])]) | ||
915 | AC_CHECK_LIB([jpeg], [jpeg_CreateDecompress], | ||
916 | [ evas_image_loader_jpeg_libs="-ljpeg" | ||
917 | AC_COMPILE_IFELSE( | ||
918 | [ AC_LANG_PROGRAM([[ | ||
919 | #include <stdio.h> | ||
920 | #include <jpeglib.h> | ||
921 | #include <setjmp.h> | ||
922 | ]], | ||
923 | [[ | ||
924 | struct jpeg_decompress_struct decomp; | ||
925 | decomp.region_x = 0; | ||
926 | ]])], | ||
927 | [have_jpeg_region="yes"], | ||
928 | [have_jpeg_region="no"]) | ||
929 | ],[ AC_MSG_ERROR([JPEG missing jpeg_CreateDecompress]) ]) | ||
930 | AC_SUBST([evas_image_loader_jpeg_cflags]) | ||
931 | AC_SUBST([evas_image_loader_jpeg_libs]) | ||
932 | AM_CONDITIONAL(BUILD_LOADER_JPEG, [${do_module}]) | ||
933 | AM_CONDITIONAL(EVAS_STATIC_BUILD_JPEG, [${do_static}]) | ||
934 | if test "x${do_static}" = "xtrue"; then | ||
935 | AC_DEFINE(EVAS_STATIC_BUILD_JPEG, [1], [Static JPEG Loader]) | ||
936 | fi | ||
937 | AC_DEFINE(BUILD_LOADER_JPEG, [1], [JPEG Loader]) | ||
938 | case "$host_os" in | ||
939 | mingw*) | ||
940 | ;; | ||
941 | *) | ||
942 | AC_DEFINE(EVAS_BUILD_SAVER_JPEG, [1], [Build JPEG saver]) | ||
943 | AM_CONDITIONAL([BUILD_SAVER_JPEG], [true]) | ||
944 | have_evas_image_saver_jpeg="yes" | ||
945 | ;; | ||
946 | esac | ||
947 | |||
948 | ##################################################################### | ||
949 | PKG_CHECK_MODULES([PNG], [libpng >= 1.2.10], [requirement="libpng >= 1.2.10"], [ | ||
950 | PKG_CHECK_MODULES([PNG], [libpng15], [requirement="libpng15"], [ | ||
951 | PKG_CHECK_MODULES([PNG], [libpng14], [requirement="libpng14"], [ | ||
952 | PKG_CHECK_MODULES([PNG], [libpng12], [requirement="libpng12"], [ | ||
953 | AC_MSG_ERROR([PNG not found]) | ||
954 | ]) | ||
955 | ]) | ||
956 | ]) | ||
957 | ]) | ||
958 | dnl requirement_evas="${requirement} ${requirement_evas}" | ||
959 | evas_image_loader_png_cflags="${PNG_CFLAGS}" | ||
960 | evas_image_loader_png_libs="${PNG_LIBS}" | ||
961 | AC_SUBST([evas_image_loader_png_cflags]) | ||
962 | AC_SUBST([evas_image_loader_png_libs]) | ||
963 | AM_CONDITIONAL(BUILD_LOADER_PNG, [${do_module}]) | ||
964 | AM_CONDITIONAL(EVAS_STATIC_BUILD_PNG, [${do_static}]) | ||
965 | if test "x${do_static}" = "xtrue"; then | ||
966 | AC_DEFINE(EVAS_STATIC_BUILD_PNG, [1], [Static PNG Loader]) | ||
967 | fi | ||
968 | AC_DEFINE(BUILD_LOADER_PNG, [1], [PNG Loader]) | ||
969 | |||
970 | EVAS_CHECK_IMAGE_LOADER([WEBP], [${want_evas_image_loader_webp}]) | ||
971 | EVAS_CHECK_IMAGE_LOADER([Gif], [${want_evas_image_loader_gif}]) | ||
972 | EVAS_CHECK_IMAGE_LOADER([Tiff], [${want_evas_image_loader_tiff}]) | ||
973 | EVAS_CHECK_IMAGE_LOADER([SVG], [${want_evas_image_loader_svg}]) | ||
974 | |||
975 | ##################################################################### | ||
976 | ## Cpu based optimizations | ||
977 | |||
978 | ####################################### | ||
979 | ## Pipe Renderer | ||
980 | build_pipe_render="no" | ||
981 | |||
982 | # Let disable pipe render strongly as it doesn't massively improve performance, but | ||
983 | # just hammer more watt for a few more percent. The code is kept as the understanding | ||
984 | # is that with an async pipeline things will be better. | ||
985 | # | ||
986 | #AC_MSG_CHECKING(whether to build Threaded Pipe Rendering support) | ||
987 | #AC_ARG_ENABLE(pipe-render, | ||
988 | # AC_HELP_STRING([--enable-pipe-render], [enable threaded pipe rendering support]), | ||
989 | # [ build_pipe_render=$enableval ] | ||
990 | #) | ||
991 | #AC_MSG_RESULT($build_pipe_render) | ||
992 | #AC_MSG_CHECKING(whether we can build Threaded Pipe Rendering support) | ||
993 | #if test \( "x$build_pipe_render" = "xyes" -o "x$build_pipe_render" = "xauto" \); then | ||
994 | # AC_MSG_RESULT(yes) | ||
995 | # AC_DEFINE(BUILD_PIPE_RENDER, 1, [Build pipe render support]) | ||
996 | # build_pipe_render="yes" | ||
997 | #else | ||
998 | # AC_MSG_RESULT(no) | ||
999 | # build_pipe_render="no" | ||
1000 | #fi | ||
1001 | dnl AC_DEFINE(BUILD_PIPE_RENDER, 1, [Build pipe render support]) | ||
1002 | dnl build_pipe_render="yes" | ||
1003 | |||
1004 | ####################################### | ||
1005 | ## CPU architecture specific assembly | ||
1006 | |||
1007 | build_cpu_mmx="no" | ||
1008 | build_cpu_sse3="no" | ||
1009 | build_cpu_altivec="no" | ||
1010 | build_cpu_neon="no" | ||
1011 | |||
1012 | case $host_cpu in | ||
1013 | i*86|x86_64|amd64) | ||
1014 | AC_DEFINE(BUILD_MMX, 1, [Build MMX Code]) | ||
1015 | build_cpu_mmx="yes" | ||
1016 | build_cpu_sse3="yes" | ||
1017 | ;; | ||
1018 | |||
1019 | *power* | *ppc*) | ||
1020 | build_cpu_altivec="yes" | ||
1021 | AC_CHECK_HEADER(altivec.h, | ||
1022 | [ | ||
1023 | AC_DEFINE(BUILD_ALTIVEC, 1, [Build Altivec Code]) | ||
1024 | AC_DEFINE(HAVE_ALTIVEC_H, 1, [Have altivec.h header file]) | ||
1025 | build_cpu_altivec="yes" | ||
1026 | ], | ||
1027 | [ | ||
1028 | save_CFLAGS=$CFLAGS | ||
1029 | save_CPPFLAGS=$CPPFLAGS | ||
1030 | CFLAGS=$CFLAGS" -maltivec" | ||
1031 | CPPFLAGS=$CPPFLAGS" -maltivec" | ||
1032 | unset ac_cv_header_altivec_h | ||
1033 | AC_CHECK_HEADER(altivec.h, | ||
1034 | [ | ||
1035 | AC_DEFINE(BUILD_ALTIVEC, 1, [Build Altivec Code]) | ||
1036 | AC_DEFINE(HAVE_ALTIVEC_H, 1, [Have altivec.h header file]) | ||
1037 | build_cpu_altivec="yes" | ||
1038 | ], | ||
1039 | [build_cpu_altivec="no"] | ||
1040 | ) | ||
1041 | CFLAGS=$save_CFLAGS | ||
1042 | CPPFLAGS=$save_CPPFLAGS | ||
1043 | ] | ||
1044 | ) | ||
1045 | if test "x$build_cpu_altivec" = "xyes"; then | ||
1046 | AC_MSG_CHECKING(whether to use altivec compiler flag) | ||
1047 | if test "x$GCC" = "xyes"; then | ||
1048 | if echo "int main(){return 0;}" | ${CPP} -faltivec - > /dev/null 2>&1; then | ||
1049 | altivec_cflags="-faltivec" | ||
1050 | AC_DEFINE(BUILD_ALTIVEC, 1, [Build Altivec Code]) | ||
1051 | elif echo "int main(){return 0;}" | ${CPP} -maltivec - > /dev/null 2>&1; then | ||
1052 | altivec_cflags="-maltivec" | ||
1053 | AC_DEFINE(BUILD_ALTIVEC, 1, [Build Altivec Code]) | ||
1054 | fi | ||
1055 | fi | ||
1056 | AC_MSG_RESULT($altivec_cflags) | ||
1057 | CFLAGS="$CFLAGS $altivec_cflags" | ||
1058 | fi | ||
1059 | ;; | ||
1060 | |||
1061 | arm*) | ||
1062 | build_cpu_neon="yes" | ||
1063 | AC_TRY_COMPILE([#include <arm_neon.h>], | ||
1064 | [asm volatile ("vqadd.u8 d0, d1, d0\n")], | ||
1065 | [ | ||
1066 | AC_MSG_RESULT(yes) | ||
1067 | AC_DEFINE(BUILD_NEON, 1, [Build NEON Code]) | ||
1068 | build_cpu_neon="yes" | ||
1069 | ],[ | ||
1070 | AC_MSG_RESULT(no) | ||
1071 | build_cpu_neon="no" | ||
1072 | ]) | ||
1073 | ;; | ||
1074 | esac | ||
1075 | |||
1076 | ####################################### | ||
1077 | ## CHECK SSE3 | ||
1078 | ## sse3 is still an option because older gcc's dont have support for | ||
1079 | ## intrinsics used | ||
1080 | AC_MSG_CHECKING(whether to build sse3 code) | ||
1081 | AC_ARG_ENABLE(cpu-sse3, | ||
1082 | AS_HELP_STRING([--enable-cpu-sse3], [enable sse3 code]), | ||
1083 | [ | ||
1084 | if test "x$enableval" = "xyes" ; then | ||
1085 | AC_CHECK_HEADER(immintrin.h, | ||
1086 | [ | ||
1087 | AC_MSG_RESULT(yes) | ||
1088 | AC_DEFINE(BUILD_SSE3, 1, [Build SSE3 Code]) | ||
1089 | build_cpu_sse3="yes" | ||
1090 | ], | ||
1091 | [ | ||
1092 | AC_MSG_RESULT(no) | ||
1093 | build_cpu_sse3="no" | ||
1094 | ]) | ||
1095 | else | ||
1096 | AC_MSG_RESULT(no) | ||
1097 | build_cpu_sse3="no" | ||
1098 | fi | ||
1099 | ], | ||
1100 | [ | ||
1101 | AC_MSG_RESULT($build_cpu_sse3) | ||
1102 | if test "x$build_cpu_sse3" = "xyes" ; then | ||
1103 | AC_CHECK_HEADER(immintrin.h, | ||
1104 | [ | ||
1105 | AC_MSG_RESULT(yes) | ||
1106 | AC_DEFINE(BUILD_SSE3, 1, [Build SSE3 Code]) | ||
1107 | build_cpu_sse3="yes" | ||
1108 | ], | ||
1109 | [ | ||
1110 | AC_MSG_RESULT(no) | ||
1111 | build_cpu_sse3="no" | ||
1112 | ]) | ||
1113 | fi | ||
1114 | ] | ||
1115 | ) | ||
1116 | |||
1117 | EVAS_SSE3_CFLAGS=" " | ||
1118 | EVAS_ALTIVEC_CFLAGS=" " | ||
1119 | |||
1120 | if test "x$build_cpu_sse3" = "xyes" ; then | ||
1121 | EVAS_SSE3_CFLAGS="-msse3 " | ||
1122 | fi | ||
1123 | if test "x$build_cpu_altivec" = "xyes" ; then | ||
1124 | EVAS_ALTIVEC_CFLAGS="-maltivec " | ||
1125 | fi | ||
1126 | |||
1127 | AC_SUBST(CFLAGS) | ||
1128 | AC_SUBST(EVAS_ALTIVEC_CFLAGS) | ||
1129 | AC_SUBST(EVAS_SSE3_CFLAGS) | ||
1130 | |||
1131 | ####################################### | ||
1132 | ## MAGIC_DEBUG | ||
1133 | want_evas_magic_debug="yes" | ||
1134 | AC_MSG_CHECKING(whether to check magic for evas object) | ||
1135 | AC_ARG_ENABLE(evas-magic-debug, | ||
1136 | AC_HELP_STRING( | ||
1137 | [--disable-evas-magic-debug], | ||
1138 | [disable MAGIC_DEBUG check when people pass in wrong object type. [[default=enabled]]] | ||
1139 | ), | ||
1140 | [ want_evas_magic_debug="$enableval" ] | ||
1141 | ) | ||
1142 | AC_MSG_RESULT($want_evas_magic_debug) | ||
1143 | |||
1144 | AM_CONDITIONAL(EVAS_MAGIC_DEBUG, test "x$want_evas_magic_debug" = "xyes") | ||
1145 | if test "x$want_evas_magic_debug" = "xyes"; then | ||
1146 | AC_DEFINE(EVAS_MAGIC_DEBUG, 1, [complain when people pass in wrong object types etc.]) | ||
1147 | fi | ||
1148 | |||
1149 | ##################################################################### | ||
1150 | ## dither options | ||
1151 | |||
1152 | ## Small dither mask instead of big one (lower quality) | ||
1153 | EVAS_CHECK_DITHER([small-dither-mask], [small dither mask], [conv_small_dither="yes"], [conv_small_dither="no"]) | ||
1154 | ## Alternate Line dither mask instead of big one (lower quality - but fastest) | ||
1155 | EVAS_CHECK_DITHER([line-dither-mask], [line dither mask], [conv_line_dither="yes"], [conv_line_dither="no"]) | ||
1156 | ## No dither mask at all for 16bpp | ||
1157 | EVAS_CHECK_DITHER([no-dither-mask], [conversion to 16bpp without dither mask], [conv_no_dither="yes"], [conv_no_dither="no"]) | ||
1158 | |||
1159 | ##################################################################### | ||
1160 | ## valgrind | ||
1161 | want_valgrind="no" | ||
1162 | have_valgrind="no" | ||
1163 | |||
1164 | AC_MSG_CHECKING(whether to enable build with valgrind) | ||
1165 | AC_ARG_ENABLE(valgrind, | ||
1166 | AC_HELP_STRING([--enable-valgrind], [enable valgrind fixes to stop false reports]), | ||
1167 | [ want_valgrind=$enableval ] | ||
1168 | ) | ||
1169 | AC_MSG_RESULT($want_valgrind) | ||
1170 | |||
1171 | if test x$want_valgrind = "xyes"; then | ||
1172 | PKG_CHECK_MODULES(VALGRIND, valgrind >= 2.4.0, | ||
1173 | [ | ||
1174 | AC_DEFINE(HAVE_VALGRIND, 1, [Valgrind support]) | ||
1175 | have_valgrind=yes | ||
1176 | requirement_evas="valgrind ${requirement_evas}" | ||
1177 | ], | ||
1178 | [ | ||
1179 | if test "x$want_valgrind" = "xyes" -a "x$use_strict" = "xyes" ; then | ||
1180 | AC_MSG_ERROR([Valgrind not found (strict dependencies checking)]) | ||
1181 | fi | ||
1182 | ] | ||
1183 | ) | ||
1184 | fi | ||
1185 | |||
1186 | ## Examples | ||
1187 | |||
1188 | install_examples="yes" | ||
1189 | AC_ARG_ENABLE([install-examples], | ||
1190 | AC_HELP_STRING([--disable-install-examples], | ||
1191 | [disable installing examples (compiled or just source). | ||
1192 | @<:@default==enabled@:>@]), | ||
1193 | [ | ||
1194 | if test "x${enableval}" = "xyes" ; then | ||
1195 | install_examples="yes" | ||
1196 | else | ||
1197 | install_examples="no" | ||
1198 | fi | ||
1199 | ], | ||
1200 | [install_examples="yes"]) | ||
1201 | AM_CONDITIONAL([INSTALL_EXAMPLES], [test "x${install_examples}" = "xyes"]) | ||
1202 | |||
1203 | build_examples="no" | ||
1204 | AC_ARG_ENABLE([build-examples], | ||
1205 | AC_HELP_STRING([--enable-build-examples], | ||
1206 | [enable building examples (this requires extra denpendencies. if you don't have them installed yet, don't build with this option or it will fail. build again when you have it, overriding the previous installation). @<:@default==disabled@:>@]), | ||
1207 | [ | ||
1208 | if test "x${enableval}" = "xyes" ; then | ||
1209 | build_examples="yes" | ||
1210 | # put in here the dependencies for Evas' examples. they are | ||
1211 | # meant to be 'real world' usage examples, thus one will be | ||
1212 | # using higher level libraries on these programs | ||
1213 | PKG_CHECK_MODULES([ECORE_EVAS], [ecore-evas ecore], | ||
1214 | [], [build_examples="no"]) | ||
1215 | PKG_CHECK_MODULES([EDJE], [edje], | ||
1216 | [edje_cc=$($PKG_CONFIG --variable=prefix edje)/bin/edje_cc], | ||
1217 | [], [build_examples="no"]) | ||
1218 | AC_SUBST(edje_cc) | ||
1219 | else | ||
1220 | build_examples="no" | ||
1221 | fi | ||
1222 | ], | ||
1223 | [build_examples="no"]) | ||
1224 | AM_CONDITIONAL([BUILD_EXAMPLES], [test "x${build_examples}" = "xyes"]) | ||
1225 | |||
1226 | ## Unit tests, coverage | ||
1227 | |||
1228 | EFL_CHECK_TESTS([enable_tests="yes"], [enable_tests="no"]) | ||
1229 | |||
1230 | EFL_CHECK_COVERAGE([${enable_tests}], [enable_coverage="yes"], [enable_coverage="no"]) | ||
1231 | EVAS_CFLAGS="${EVAS_CFLAGS} ${EFL_COVERAGE_CFLAGS} ${EXOTIC_CFLAGS}" | ||
1232 | EVAS_LIBS="${EVAS_LIBS} ${EFL_COVERAGE_LIBS} ${EXOTIC_LIBS}" | ||
1233 | if test "x$enable_coverage" = "xyes" ; then | ||
1234 | EVAS_CFLAGS="${EVAS_CFLAGS} ${EFL_DEBUG_CFLAGS}" | ||
1235 | fi | ||
1236 | |||
1237 | AC_SUBST(EVAS_CFLAGS) | ||
1238 | AC_SUBST(EVAS_LIBS) | ||
1239 | |||
1240 | # General CFLAGS | ||
1241 | |||
1242 | EVAS_GENERAL_CFLAGS="${EINA_CFLAGS} ${EO_CFLAGS}" | ||
1243 | EVAS_GENERAL_LIBS="${EINA_LIBS} ${EO_LIBS}" | ||
1244 | AC_SUBST(EVAS_GENERAL_CFLAGS) | ||
1245 | AC_SUBST(EVAS_GENERAL_LIBS) | ||
1246 | |||
1247 | ##################################################################### | ||
1248 | ## Fill in flags | ||
1249 | |||
1250 | AC_SUBST(altivec_cflags) | ||
1251 | AC_SUBST(pthread_cflags) | ||
1252 | AC_SUBST(pthread_libs) | ||
1253 | AC_SUBST(requirement_evas) | ||
1254 | |||
1255 | ##################################################################### | ||
1256 | ## Output | ||
1257 | |||
1258 | AC_OUTPUT([ | ||
1259 | Makefile | ||
1260 | evas-directfb.pc | ||
1261 | evas-fb.pc | ||
1262 | evas-opengl-x11.pc | ||
1263 | evas-opengl-sdl.pc | ||
1264 | evas-opengl-cocoa.pc | ||
1265 | evas-software-buffer.pc | ||
1266 | evas-software-x11.pc | ||
1267 | evas-software-gdi.pc | ||
1268 | evas-software-ddraw.pc | ||
1269 | evas-direct3d.pc | ||
1270 | evas-software-sdl.pc | ||
1271 | evas-psl1ght.pc | ||
1272 | evas-wayland-shm.pc | ||
1273 | evas-wayland-egl.pc | ||
1274 | evas.pc | ||
1275 | doc/evas.dox | ||
1276 | doc/Makefile | ||
1277 | doc/Doxyfile | ||
1278 | src/Makefile | ||
1279 | src/bin/Makefile | ||
1280 | src/bin/loaders/Makefile | ||
1281 | src/bin/loaders/jpeg/Makefile | ||
1282 | src/bin/loaders/png/Makefile | ||
1283 | src/bin/loaders/eet/Makefile | ||
1284 | src/bin/loaders/tiff/Makefile | ||
1285 | src/bin/loaders/xpm/Makefile | ||
1286 | src/bin/loaders/bmp/Makefile | ||
1287 | src/bin/loaders/ico/Makefile | ||
1288 | src/bin/loaders/tga/Makefile | ||
1289 | src/bin/loaders/pmaps/Makefile | ||
1290 | src/bin/loaders/wbmp/Makefile | ||
1291 | src/bin/loaders/webp/Makefile | ||
1292 | src/bin/loaders/psd/Makefile | ||
1293 | src/lib/Makefile | ||
1294 | src/lib/canvas/Makefile | ||
1295 | src/lib/file/Makefile | ||
1296 | src/lib/cache/Makefile | ||
1297 | src/lib/cache2/Makefile | ||
1298 | src/lib/cserve2/Makefile | ||
1299 | src/lib/engines/Makefile | ||
1300 | src/lib/engines/common/Makefile | ||
1301 | src/lib/engines/common/evas_op_add/Makefile | ||
1302 | src/lib/engines/common/evas_op_blend/Makefile | ||
1303 | src/lib/engines/common/evas_op_copy/Makefile | ||
1304 | src/lib/engines/common/evas_op_mask/Makefile | ||
1305 | src/lib/engines/common/evas_op_mul/Makefile | ||
1306 | src/lib/engines/common/evas_op_sub/Makefile | ||
1307 | src/modules/Makefile | ||
1308 | src/modules/engines/Makefile | ||
1309 | src/modules/engines/software_generic/Makefile | ||
1310 | src/modules/engines/software_gdi/Makefile | ||
1311 | src/modules/engines/software_ddraw/Makefile | ||
1312 | src/modules/engines/direct3d/Makefile | ||
1313 | src/modules/engines/software_x11/Makefile | ||
1314 | src/modules/engines/fb/Makefile | ||
1315 | src/modules/engines/buffer/Makefile | ||
1316 | src/modules/engines/directfb/Makefile | ||
1317 | src/modules/engines/gl_common/Makefile | ||
1318 | src/modules/engines/gl_x11/Makefile | ||
1319 | src/modules/engines/gl_sdl/Makefile | ||
1320 | src/modules/engines/gl_cocoa/Makefile | ||
1321 | src/modules/engines/psl1ght/Makefile | ||
1322 | src/modules/engines/wayland_shm/Makefile | ||
1323 | src/modules/engines/wayland_egl/Makefile | ||
1324 | src/modules/loaders/Makefile | ||
1325 | src/modules/loaders/eet/Makefile | ||
1326 | src/modules/loaders/gif/Makefile | ||
1327 | src/modules/loaders/jpeg/Makefile | ||
1328 | src/modules/loaders/png/Makefile | ||
1329 | src/modules/loaders/tiff/Makefile | ||
1330 | src/modules/loaders/xpm/Makefile | ||
1331 | src/modules/loaders/bmp/Makefile | ||
1332 | src/modules/loaders/ico/Makefile | ||
1333 | src/modules/loaders/tga/Makefile | ||
1334 | src/modules/loaders/svg/Makefile | ||
1335 | src/modules/loaders/pmaps/Makefile | ||
1336 | src/modules/loaders/wbmp/Makefile | ||
1337 | src/modules/loaders/webp/Makefile | ||
1338 | src/modules/loaders/psd/Makefile | ||
1339 | src/modules/loaders/generic/Makefile | ||
1340 | src/modules/savers/Makefile | ||
1341 | src/modules/savers/eet/Makefile | ||
1342 | src/modules/savers/jpeg/Makefile | ||
1343 | src/modules/savers/png/Makefile | ||
1344 | src/modules/savers/tiff/Makefile | ||
1345 | src/static_deps/Makefile | ||
1346 | src/static_deps/liblinebreak/Makefile | ||
1347 | src/lib/include/Makefile | ||
1348 | src/examples/Makefile | ||
1349 | src/tests/Makefile | ||
1350 | data/Makefile | ||
1351 | evas.spec | ||
1352 | ]) | ||
1353 | |||
1354 | ##################################################################### | ||
1355 | ## Info | ||
1356 | |||
1357 | echo | ||
1358 | echo | ||
1359 | echo | ||
1360 | echo "------------------------------------------------------------------------" | ||
1361 | echo "$PACKAGE $VERSION" | ||
1362 | echo "------------------------------------------------------------------------" | ||
1363 | echo | ||
1364 | echo "Configuration Options Summary:" | ||
1365 | echo | ||
1366 | echo "Engines:" | ||
1367 | echo " Software Memory Buffer.....: $have_evas_engine_buffer" | ||
1368 | echo " Software X11...............: $have_evas_engine_software_x11 (Xlib: $have_evas_engine_software_xlib) (XCB: $have_evas_engine_software_xcb)" | ||
1369 | echo $ECHO_N " OpenGL X11.................: $have_evas_engine_gl_x11 (Xlib: $have_evas_engine_gl_xlib) (XCB: $have_evas_engine_gl_xcb) $ECHO_C" | ||
1370 | if test "x$have_evas_engine_gl_x11" = "xyes"; then | ||
1371 | echo "(GLES: $gl_flavor_gles)" | ||
1372 | else | ||
1373 | echo | ||
1374 | fi | ||
1375 | echo " Software GDI...............: $have_evas_engine_software_gdi" | ||
1376 | echo " Software DirectDraw........: $have_evas_engine_software_ddraw" | ||
1377 | echo " Direct3d...................: $have_evas_engine_direct3d" | ||
1378 | echo " OpenGL SDL.................: $have_evas_engine_gl_sdl $ECHO_C" | ||
1379 | if test "x$have_evas_engine_gl_sdl" = "xyes"; then | ||
1380 | echo "(GLES: $gl_flavor_gles)" | ||
1381 | else | ||
1382 | echo | ||
1383 | fi | ||
1384 | echo " OpenGL Cocoa...............: $have_evas_engine_gl_cocoa" | ||
1385 | echo " Software Framebuffer.......: $have_evas_engine_fb" | ||
1386 | echo " DirectFB...................: $have_evas_engine_directfb" | ||
1387 | echo " PSL1GHT....................: $have_evas_engine_psl1ght" | ||
1388 | echo " Wayland Shm................: $have_evas_engine_wayland_shm" | ||
1389 | echo " Wayland Egl................: $have_evas_engine_wayland_egl" | ||
1390 | echo | ||
1391 | echo "Image Loaders:" | ||
1392 | echo " JPEG region decode......: $have_jpeg_region" | ||
1393 | echo " WEBP....................: $have_evas_image_loader_webp" | ||
1394 | echo " GIF.....................: $have_evas_image_loader_gif" | ||
1395 | echo " TIFF....................: $have_evas_image_loader_tiff" | ||
1396 | echo " SVG.....................: $have_evas_image_loader_svg" | ||
1397 | echo | ||
1398 | echo "Font Searching Systems:" | ||
1399 | echo " Fontconfig..............: $have_fontconfig" | ||
1400 | echo | ||
1401 | echo "Font Rendering Helpers:" | ||
1402 | echo " Fribidi.................: $have_fribidi" | ||
1403 | echo " Harfbuzz................: $have_harfbuzz" | ||
1404 | # FIXME: add non freetype2 font engine support | ||
1405 | # FIXME: make freetype2 optional | ||
1406 | echo | ||
1407 | echo "CPU Specific Extensions:" | ||
1408 | echo " MMX/SSE.................: $build_cpu_mmx" | ||
1409 | echo " SSE3....................: $build_cpu_sse3" | ||
1410 | echo " ALTIVEC.................: $build_cpu_altivec" | ||
1411 | echo " NEON....................: $build_cpu_neon" | ||
1412 | echo | ||
1413 | echo "Features:" | ||
1414 | echo " MAGIC_DEBUG.............: $want_evas_magic_debug" | ||
1415 | echo " Cache Server 2..........: $want_evas_cserve2" | ||
1416 | echo " Threaded Pipe Rendering.: $build_pipe_render" | ||
1417 | echo | ||
1418 | echo "Optional pixman rendering path:" | ||
1419 | echo " Pixman..................: $have_pixman" | ||
1420 | echo " Pixman Fonts............: $have_pixman_font" | ||
1421 | echo " Pixman Rects............: $have_pixman_rect" | ||
1422 | echo " Pixman Lines............: $have_pixman_line" | ||
1423 | echo " Pixman Polygons.........: $have_pixman_poly" | ||
1424 | echo " Pixman Images...........: $have_pixman_image" | ||
1425 | echo " Pixman Image ScaleSample: $have_pixman_image_scale_sample" | ||
1426 | echo | ||
1427 | echo "Conversion Options:" | ||
1428 | echo " Smaller Dither Mask.....: $conv_small_dither" | ||
1429 | echo " Line Dither Mask........: $conv_line_dither" | ||
1430 | echo " No Dither Mask for 16bpp: $conv_no_dither" | ||
1431 | echo " Tiled 32BPP rotate......: $have_tile_rotate" | ||
1432 | echo | ||
1433 | echo "Documentation.............: ${build_doc}" | ||
1434 | echo "Examples..................: install:${install_examples} build:${build_examples}" | ||
1435 | if test "x${enable_tests}" = "xyes" ; then | ||
1436 | echo "Tests.....................: ${enable_tests} (make check)" | ||
1437 | else | ||
1438 | echo "Tests.....................: ${enable_tests}" | ||
1439 | fi | ||
1440 | if test "x${enable_coverage}" = "xyes" ; then | ||
1441 | echo "Coverage..................: ${enable_coverage} (make coverage)" | ||
1442 | else | ||
1443 | echo "Coverage..................: ${enable_coverage}" | ||
1444 | fi | ||
1445 | echo | ||
1446 | echo "Compilation............: make (or gmake)" | ||
1447 | echo " CPPFLAGS.............: $CPPFLAGS" | ||
1448 | echo " CFLAGS...............: $CFLAGS" | ||
1449 | echo " CXXFLAGS.............: $CXXFLAGS" | ||
1450 | echo " LDFLAGS..............: $LDFLAGS" | ||
1451 | echo | ||
1452 | echo "Installation...........: make install (as root if needed, with 'su' or 'sudo')" | ||
1453 | echo " prefix...............: $prefix" | ||
1454 | echo | ||
1455 | if test "x${have_static_module}" = "xyes" ; then | ||
1456 | echo -e "\0033\01331;31mWarning\0033\01331;0m: You are trying to link statically one or more modules to Evas." | ||
1457 | echo " You must know what you are doing, or else you will have a lot of" | ||
1458 | echo " problems. And Kenny will be killed." | ||
1459 | echo " Think about that." | ||
1460 | echo | ||
1461 | fi | ||
diff --git a/legacy/evas/data/Makefile.am b/legacy/evas/data/Makefile.am deleted file mode 100644 index 80a8cc6a07..0000000000 --- a/legacy/evas/data/Makefile.am +++ /dev/null | |||
@@ -1,6 +0,0 @@ | |||
1 | MAINTAINERCLEANFILES = Makefile.in | ||
2 | |||
3 | filesdir = $(datadir)/evas | ||
4 | files_DATA = checkme | ||
5 | |||
6 | EXTRA_DIST = $(files_DATA) | ||
diff --git a/legacy/evas/doc/Doxyfile.in b/legacy/evas/doc/Doxyfile.in deleted file mode 100644 index 1c6dd11ae1..0000000000 --- a/legacy/evas/doc/Doxyfile.in +++ /dev/null | |||
@@ -1,136 +0,0 @@ | |||
1 | PROJECT_NAME = Evas | ||
2 | PROJECT_NUMBER = @PACKAGE_VERSION@ | ||
3 | OUTPUT_DIRECTORY = . | ||
4 | INPUT = @builddir@/evas.dox @srcdir@/examples.dox @top_srcdir@/src/lib | ||
5 | IMAGE_PATH = @srcdir@/img | ||
6 | OUTPUT_LANGUAGE = English | ||
7 | GENERATE_HTML = YES | ||
8 | HTML_OUTPUT = html | ||
9 | HTML_FILE_EXTENSION = .html | ||
10 | HTML_HEADER = @srcdir@/head.html | ||
11 | HTML_FOOTER = @srcdir@/foot.html | ||
12 | HTML_STYLESHEET = @srcdir@/e.css | ||
13 | ENUM_VALUES_PER_LINE = 1 | ||
14 | GENERATE_HTMLHELP = NO | ||
15 | CHM_FILE = | ||
16 | HHC_LOCATION = | ||
17 | GENERATE_CHI = NO | ||
18 | BINARY_TOC = NO | ||
19 | TOC_EXPAND = NO | ||
20 | DISABLE_INDEX = YES | ||
21 | EXTRACT_ALL = NO | ||
22 | EXTRACT_PRIVATE = NO | ||
23 | EXTRACT_STATIC = NO | ||
24 | EXTRACT_LOCAL_CLASSES = NO | ||
25 | HIDE_UNDOC_MEMBERS = YES | ||
26 | HIDE_UNDOC_CLASSES = YES | ||
27 | HIDE_FRIEND_COMPOUNDS = YES | ||
28 | BRIEF_MEMBER_DESC = YES | ||
29 | REPEAT_BRIEF = YES | ||
30 | ALWAYS_DETAILED_SEC = NO | ||
31 | INLINE_INHERITED_MEMB = NO | ||
32 | FULL_PATH_NAMES = NO | ||
33 | STRIP_FROM_PATH = | ||
34 | INTERNAL_DOCS = NO | ||
35 | STRIP_CODE_COMMENTS = NO | ||
36 | CASE_SENSE_NAMES = YES | ||
37 | SHORT_NAMES = NO | ||
38 | HIDE_SCOPE_NAMES = NO | ||
39 | VERBATIM_HEADERS = NO | ||
40 | SHOW_INCLUDE_FILES = NO | ||
41 | JAVADOC_AUTOBRIEF = YES | ||
42 | MULTILINE_CPP_IS_BRIEF = NO | ||
43 | INHERIT_DOCS = YES | ||
44 | INLINE_INFO = YES | ||
45 | SORT_MEMBER_DOCS = YES | ||
46 | DISTRIBUTE_GROUP_DOC = NO | ||
47 | TAB_SIZE = 8 | ||
48 | GENERATE_TODOLIST = YES | ||
49 | GENERATE_TESTLIST = YES | ||
50 | GENERATE_BUGLIST = YES | ||
51 | GENERATE_DEPRECATEDLIST= YES | ||
52 | ALIASES = | ||
53 | ENABLED_SECTIONS = | ||
54 | MAX_INITIALIZER_LINES = 30 | ||
55 | OPTIMIZE_OUTPUT_FOR_C = YES | ||
56 | OPTIMIZE_OUTPUT_JAVA = NO | ||
57 | SHOW_USED_FILES = NO | ||
58 | QUIET = NO | ||
59 | WARNINGS = YES | ||
60 | WARN_IF_UNDOCUMENTED = YES | ||
61 | WARN_FORMAT = "$file:$line: $text" | ||
62 | WARN_LOGFILE = | ||
63 | FILE_PATTERNS = | ||
64 | RECURSIVE = YES | ||
65 | EXCLUDE = | ||
66 | EXCLUDE_SYMLINKS = NO | ||
67 | EXCLUDE_PATTERNS = | ||
68 | EXAMPLE_PATH = @top_srcdir@/src/examples | ||
69 | EXAMPLE_PATTERNS = | ||
70 | EXAMPLE_RECURSIVE = YES | ||
71 | INPUT_FILTER = | ||
72 | FILTER_SOURCE_FILES = NO | ||
73 | SOURCE_BROWSER = NO | ||
74 | INLINE_SOURCES = NO | ||
75 | REFERENCED_BY_RELATION = YES | ||
76 | REFERENCES_RELATION = YES | ||
77 | ALPHABETICAL_INDEX = YES | ||
78 | COLS_IN_ALPHA_INDEX = 2 | ||
79 | IGNORE_PREFIX = evas_ _evas_ Evas_ _Evas_ EVAS_ _EVAS_ | ||
80 | GENERATE_TREEVIEW = NO | ||
81 | TREEVIEW_WIDTH = 250 | ||
82 | GENERATE_LATEX = YES | ||
83 | LATEX_OUTPUT = latex | ||
84 | LATEX_CMD_NAME = latex | ||
85 | MAKEINDEX_CMD_NAME = makeindex | ||
86 | COMPACT_LATEX = NO | ||
87 | PAPER_TYPE = a4wide | ||
88 | EXTRA_PACKAGES = | ||
89 | LATEX_HEADER = | ||
90 | PDF_HYPERLINKS = YES | ||
91 | USE_PDFLATEX = NO | ||
92 | LATEX_BATCHMODE = NO | ||
93 | GENERATE_RTF = NO | ||
94 | RTF_OUTPUT = rtf | ||
95 | COMPACT_RTF = NO | ||
96 | RTF_HYPERLINKS = NO | ||
97 | RTF_STYLESHEET_FILE = | ||
98 | RTF_EXTENSIONS_FILE = | ||
99 | GENERATE_MAN = YES | ||
100 | MAN_OUTPUT = man | ||
101 | MAN_EXTENSION = .3 | ||
102 | MAN_LINKS = YES | ||
103 | GENERATE_XML = NO | ||
104 | XML_SCHEMA = | ||
105 | XML_DTD = | ||
106 | GENERATE_AUTOGEN_DEF = NO | ||
107 | ENABLE_PREPROCESSING = YES | ||
108 | MACRO_EXPANSION = YES | ||
109 | EXPAND_ONLY_PREDEF = YES | ||
110 | SEARCH_INCLUDES = NO | ||
111 | INCLUDE_PATH = | ||
112 | INCLUDE_FILE_PATTERNS = | ||
113 | PREDEFINED = __UNUSED__= EINA_ARG_NONNULL()= EINA_MALLOC= EINA_WARN_UNUSED_RESULT= EAPI= | ||
114 | EXPAND_AS_DEFINED = | ||
115 | SKIP_FUNCTION_MACROS = YES | ||
116 | TAGFILES = | ||
117 | GENERATE_TAGFILE = | ||
118 | ALLEXTERNALS = NO | ||
119 | EXTERNAL_GROUPS = YES | ||
120 | PERL_PATH = /usr/bin/perl | ||
121 | CLASS_DIAGRAMS = NO | ||
122 | HIDE_UNDOC_RELATIONS = YES | ||
123 | HAVE_DOT = NO | ||
124 | CLASS_GRAPH = NO | ||
125 | COLLABORATION_GRAPH = NO | ||
126 | TEMPLATE_RELATIONS = NO | ||
127 | INCLUDE_GRAPH = NO | ||
128 | INCLUDED_BY_GRAPH = NO | ||
129 | GRAPHICAL_HIERARCHY = NO | ||
130 | DOT_IMAGE_FORMAT = png | ||
131 | DOT_PATH = | ||
132 | DOTFILE_DIRS = | ||
133 | DOT_GRAPH_MAX_NODES = 50 | ||
134 | GENERATE_LEGEND = YES | ||
135 | DOT_CLEANUP = YES | ||
136 | SEARCHENGINE = NO | ||
diff --git a/legacy/evas/doc/Makefile.am b/legacy/evas/doc/Makefile.am deleted file mode 100644 index 10b19d577b..0000000000 --- a/legacy/evas/doc/Makefile.am +++ /dev/null | |||
@@ -1,41 +0,0 @@ | |||
1 | MAINTAINERCLEANFILES = Makefile.in evas.dox | ||
2 | |||
3 | .PHONY: doc | ||
4 | |||
5 | PACKAGE_DOCNAME = $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)-doc | ||
6 | |||
7 | if EFL_BUILD_DOC | ||
8 | |||
9 | doc-clean: | ||
10 | rm -rf html/ latex/ man/ xml/ $(PACKAGE_DOCNAME).tar* | ||
11 | |||
12 | doc: all doc-clean | ||
13 | $(efl_doxygen) | ||
14 | cp $(srcdir)/img/* html/ | ||
15 | cp $(srcdir)/img/* latex/ | ||
16 | rm -rf $(PACKAGE_DOCNAME).tar* | ||
17 | mkdir -p $(PACKAGE_DOCNAME)/doc | ||
18 | cp -R html/ latex/ man/ $(PACKAGE_DOCNAME)/doc | ||
19 | tar cf $(PACKAGE_DOCNAME).tar $(PACKAGE_DOCNAME)/ | ||
20 | bzip2 -9 $(PACKAGE_DOCNAME).tar | ||
21 | rm -rf $(PACKAGE_DOCNAME)/ | ||
22 | mv $(PACKAGE_DOCNAME).tar.bz2 $(top_builddir) | ||
23 | @echo "Documentation Package: doc/$(PACKAGE_DOCNAME).tar.bz2" | ||
24 | @echo "Documentation HTML: doc/html" | ||
25 | |||
26 | clean-local: doc-clean | ||
27 | |||
28 | else | ||
29 | |||
30 | doc: | ||
31 | @echo "Documentation not built. Run ./configure --help" | ||
32 | |||
33 | endif | ||
34 | |||
35 | EXTRA_DIST = $(srcdir)/Doxyfile.in \ | ||
36 | $(wildcard $(srcdir)/img/*.*) \ | ||
37 | $(srcdir)/e.css \ | ||
38 | $(srcdir)/head.html \ | ||
39 | $(srcdir)/foot.html \ | ||
40 | $(srcdir)/evas.dox.in \ | ||
41 | $(srcdir)/examples.dox | ||
diff --git a/legacy/evas/doc/e.css b/legacy/evas/doc/e.css deleted file mode 100644 index 2dd6b44798..0000000000 --- a/legacy/evas/doc/e.css +++ /dev/null | |||
@@ -1,273 +0,0 @@ | |||
1 | /* | ||
2 | Author: | ||
3 | Andres Blanc <andresblanc@gmail.com> | ||
4 | DaveMDS Andreoli <dave@gurumeditation.it> | ||
5 | |||
6 | Supported Browsers: | ||
7 | ie7, opera9, konqueror4 and firefox3 | ||
8 | |||
9 | Please use a different file for ie6, ie5, etc. hacks. | ||
10 | */ | ||
11 | |||
12 | |||
13 | /* Necessary to place the footer at the bottom of the page */ | ||
14 | html, body { | ||
15 | height: 100%; | ||
16 | margin: 0px; | ||
17 | padding: 0px; | ||
18 | } | ||
19 | |||
20 | #container { | ||
21 | min-height: 100%; | ||
22 | height: auto !important; | ||
23 | height: 100%; | ||
24 | margin: 0 auto -53px; | ||
25 | } | ||
26 | |||
27 | #footer, #push { | ||
28 | height: 53px; | ||
29 | } | ||
30 | |||
31 | |||
32 | * html #container { | ||
33 | height: 100%; | ||
34 | } | ||
35 | |||
36 | /* Prevent floating elements overflowing containers */ | ||
37 | .clear { | ||
38 | clear: both; | ||
39 | width: 0px; | ||
40 | height: 0px; | ||
41 | } | ||
42 | |||
43 | /* Flexible & centered layout from 750 to 960 pixels */ | ||
44 | .layout { | ||
45 | max-width: 960px; | ||
46 | min-width: 760px; | ||
47 | margin-left: auto; | ||
48 | margin-right: auto; | ||
49 | } | ||
50 | |||
51 | body { | ||
52 | /*font-family: Lucida Grande, Helvetica, sans-serif;*/ | ||
53 | font-family: "Bitstream Vera","Vera","Trebuchet MS",Trebuchet,Tahoma,sans-serif | ||
54 | } | ||
55 | |||
56 | /* Prevent design overflowing the viewport in small resolutions */ | ||
57 | #container { | ||
58 | padding-right: 17px; | ||
59 | padding-left: 17px; | ||
60 | background-image: url(head_bg.png); | ||
61 | background-repeat: repeat-x; | ||
62 | } | ||
63 | |||
64 | /****************************/ | ||
65 | /* Top main menu */ | ||
66 | /****************************/ | ||
67 | #header_logo { | ||
68 | background-image : url(logo.png); | ||
69 | width : 61px; | ||
70 | } | ||
71 | |||
72 | #header_logo a { | ||
73 | position : absolute; | ||
74 | border : 0px; | ||
75 | background-color : transparent; | ||
76 | top : 0px; | ||
77 | width : 60px; | ||
78 | height : 60px; | ||
79 | } | ||
80 | |||
81 | #header_menu { | ||
82 | background-image : url(header_menu_background.png); | ||
83 | font : normal 10pt verdana,'Bitstream Vera Sans',helvetica,arial,sans-serif; | ||
84 | text-align : right; | ||
85 | } | ||
86 | |||
87 | #header_last { | ||
88 | background-image : url(header_menu_background_last.png); | ||
89 | width : 15px; | ||
90 | } | ||
91 | |||
92 | td.nav_passive { | ||
93 | background : url(header_menu_unselected_background.png) 0 0 no-repeat; | ||
94 | height : 63px; | ||
95 | font-family : "Bitstream Vera","Vera","Trebuchet MS",Trebuchet,Tahoma,sans-serif; | ||
96 | font-size : 11px; | ||
97 | padding : 20px 10px 20px 10px; | ||
98 | vertical-align : middle; | ||
99 | } | ||
100 | |||
101 | td.nav_active { | ||
102 | background : url(header_menu_current_background.png) 0 0 no-repeat; | ||
103 | height : 63px; | ||
104 | color : #646464; | ||
105 | font-family : "Bitstream Vera","Vera","Trebuchet MS",Trebuchet,Tahoma,sans-serif; | ||
106 | font-size : 11px; | ||
107 | font-weight : bold; | ||
108 | padding : 20px 10px 20px 10px; | ||
109 | vertical-align : middle; | ||
110 | } | ||
111 | |||
112 | #header_menu a { | ||
113 | display : block; | ||
114 | text-decoration : none; | ||
115 | cursor : pointer; | ||
116 | color : #cdcdcd; | ||
117 | } | ||
118 | |||
119 | |||
120 | |||
121 | #header { | ||
122 | width: 100%; | ||
123 | height: 102px; | ||
124 | } | ||
125 | |||
126 | #header h1 { | ||
127 | width: 63px; | ||
128 | height: 63px; | ||
129 | position: absolute; | ||
130 | margin: 0px; | ||
131 | } | ||
132 | |||
133 | #header h1 span { | ||
134 | display: none; | ||
135 | } | ||
136 | |||
137 | #header h2 { | ||
138 | display: none; | ||
139 | } | ||
140 | |||
141 | /* .menu-container is used to set properties common to .menu and .submenu */ | ||
142 | #header .menu-container { | ||
143 | } | ||
144 | |||
145 | #header .menu-container ul { | ||
146 | list-style-type: none; | ||
147 | list-style-position: inside; | ||
148 | margin: 0; | ||
149 | } | ||
150 | |||
151 | #header .menu-container li { | ||
152 | display: block; | ||
153 | float: right; | ||
154 | } | ||
155 | |||
156 | #header .menu { | ||
157 | height: 63px; | ||
158 | display: block; | ||
159 | background-image: url(menu_bg.png); | ||
160 | background-repeat: repeat-x; | ||
161 | } | ||
162 | |||
163 | #header .menu ul { | ||
164 | height: 100%; | ||
165 | display: block; | ||
166 | background-image: url(menu_bg_last.png); | ||
167 | background-repeat: no-repeat; | ||
168 | background-position: top right; | ||
169 | padding-right: 17px; | ||
170 | } | ||
171 | |||
172 | #header .menu li { | ||
173 | height: 100%; | ||
174 | text-align: center; | ||
175 | background-image: url(menu_bg_unsel.png); | ||
176 | background-repeat: no-repeat; | ||
177 | } | ||
178 | |||
179 | #header .menu a { | ||
180 | height: 100%; | ||
181 | display: block; | ||
182 | color: #cdcdcd; | ||
183 | text-decoration: none; | ||
184 | font-size: 10pt; | ||
185 | line-height: 59px; | ||
186 | text-align: center; | ||
187 | padding: 0px 15px 0px 15px; | ||
188 | } | ||
189 | |||
190 | #header .menu li:hover { | ||
191 | background-image: url(menu_bg_hover.png); | ||
192 | background-repeat: no-repeat; | ||
193 | } | ||
194 | |||
195 | #header .menu li:hover a { | ||
196 | color: #FFFFFF; | ||
197 | } | ||
198 | |||
199 | #header .menu li.current { | ||
200 | background-image: url(menu_bg_current.png); | ||
201 | background-repeat: no-repeat; | ||
202 | } | ||
203 | |||
204 | #header .menu li.current a { | ||
205 | color: #646464; | ||
206 | } | ||
207 | |||
208 | |||
209 | /* Hide all the submenus but the current */ | ||
210 | #header .submenu ul { | ||
211 | display: none; | ||
212 | } | ||
213 | |||
214 | #header .submenu .current { | ||
215 | display: block; | ||
216 | } | ||
217 | |||
218 | #header .submenu { | ||
219 | font: bold 10px verdana,'Bitstream Vera Sans',helvetica,arial,sans-serif; | ||
220 | margin-top: 10px; | ||
221 | } | ||
222 | |||
223 | #header .submenu a { | ||
224 | color: #888888; | ||
225 | text-decoration: none; | ||
226 | font-size: 0.9em; | ||
227 | line-height: 15px; | ||
228 | padding:0px 5px 0px 5px; | ||
229 | } | ||
230 | |||
231 | #header .submenu a:hover { | ||
232 | color: #444444; | ||
233 | } | ||
234 | |||
235 | #header .submenu li { | ||
236 | border-left: 1px solid #DDDDDD; | ||
237 | } | ||
238 | |||
239 | #header .submenu li:last-child { | ||
240 | border-left: 0; | ||
241 | } | ||
242 | |||
243 | #header .doxytitle { | ||
244 | position: absolute; | ||
245 | font-size: 1.8em; | ||
246 | font-weight: bold; | ||
247 | color: #444444; | ||
248 | line-height: 35px; | ||
249 | } | ||
250 | |||
251 | #header small { | ||
252 | font-size: 0.4em; | ||
253 | } | ||
254 | |||
255 | #footer { | ||
256 | background-image: url(foot_bg.png); | ||
257 | width: 100%; | ||
258 | } | ||
259 | |||
260 | #footer table { | ||
261 | width: 100%; | ||
262 | text-align: center; | ||
263 | white-space: nowrap; | ||
264 | padding: 5px 30px 5px 30px; | ||
265 | font-size: 0.8em; | ||
266 | font-family: "Bitstream Vera","Vera","Trebuchet MS",Trebuchet,Tahoma,sans-serif; | ||
267 | color: #888888; | ||
268 | } | ||
269 | |||
270 | #footer td.copyright { | ||
271 | width: 100%; | ||
272 | } | ||
273 | |||
diff --git a/legacy/evas/doc/evas.dox.in b/legacy/evas/doc/evas.dox.in deleted file mode 100644 index e69de29bb2..0000000000 --- a/legacy/evas/doc/evas.dox.in +++ /dev/null | |||
diff --git a/legacy/evas/doc/examples.dox b/legacy/evas/doc/examples.dox deleted file mode 100644 index 65dd513409..0000000000 --- a/legacy/evas/doc/examples.dox +++ /dev/null | |||
@@ -1,1073 +0,0 @@ | |||
1 | /** | ||
2 | * @page Examples Examples | ||
3 | * | ||
4 | * Here is a page with examples. | ||
5 | * | ||
6 | * @ref Example_Evas_Buffer_Simple | ||
7 | * | ||
8 | * @ref Example_Evas_Init_Shutdown | ||
9 | * | ||
10 | * @ref Example_Evas_Text | ||
11 | * | ||
12 | * @ref Example_Evas_Images | ||
13 | * | ||
14 | * @ref Example_Evas_Images_2 | ||
15 | * | ||
16 | * @ref Example_Evas_Events | ||
17 | * | ||
18 | * @ref Example_Evas_Object_Manipulation | ||
19 | * | ||
20 | * @ref Example_Evas_Aspect_Hints | ||
21 | * | ||
22 | * @ref Example_Evas_Size_Hints | ||
23 | * | ||
24 | * @ref Example_Evas_Stacking | ||
25 | * | ||
26 | * @ref Example_Evas_Smart_Objects | ||
27 | * | ||
28 | * @ref Example_Evas_Box Evas box | ||
29 | */ | ||
30 | |||
31 | /** | ||
32 | * @page Example_Evas_Buffer_Simple Simple Evas canvas example | ||
33 | * | ||
34 | * The canvas will here use the buffer engine. | ||
35 | * | ||
36 | * @include evas-buffer-simple.c | ||
37 | * @example evas-buffer-simple.c | ||
38 | */ | ||
39 | |||
40 | /** | ||
41 | * @page Example_Evas_Init_Shutdown Evas' init/shutdown routines example | ||
42 | * | ||
43 | * @include evas-init-shutdown.c | ||
44 | * @example evas-init-shutdown.c | ||
45 | */ | ||
46 | |||
47 | /** | ||
48 | * @page Example_Evas_Images Some image object functions examples | ||
49 | * @dontinclude evas-images.c | ||
50 | * | ||
51 | * In this example, we add two images to a canvas, each one having a | ||
52 | * quarter of the canvas' size, positioned on the top left and bottom | ||
53 | * right corners, respectively: | ||
54 | * @skip img1 = evas_object_image_add(d.evas); | ||
55 | * @until ecore_main_loop_begin | ||
56 | * See there is a border image around the top left one, <b>which is | ||
57 | * the one that should be displayed</b>. The other one will (on | ||
58 | * purpose) fail to load, because we set a wrong file path as image | ||
59 | * source on it: | ||
60 | * @dontinclude evas-images.c | ||
61 | * @skip valid_path | ||
62 | * @until bogus_path | ||
63 | * This is how one is supposed to test for success when binding source | ||
64 | * images to image objects: evas_object_image_load_error_get(), | ||
65 | * followed by evas_load_error_str(), if one wants to pretty print/log | ||
66 | * the error. We'll talk about the border image further. | ||
67 | * | ||
68 | * To interact with the program, there's a command line interface. | ||
69 | * A help string can be asked for with the 'h' key: | ||
70 | * @dontinclude evas-images.c | ||
71 | * @skip commands | ||
72 | * @until ; | ||
73 | * The first four commands will change the top left images's @b fill property | ||
74 | * values, which dictate how the source image (Enlightenment's logo) | ||
75 | * is to be displayed through the image object's area. Experiment with | ||
76 | * those switches until you get the idea of evas_object_fill_set(). | ||
77 | * | ||
78 | * The 'f' command will toggle that image's "filled" property, which | ||
79 | * is whether it should track its size and set the fill one to fit the | ||
80 | * object's boundaries perfectly (stretching). Note that this command | ||
81 | * and the four above it will conflict: in real usage one would use | ||
82 | * one or other ways of setting an image object's viewport with regard | ||
83 | * to its image source. | ||
84 | * | ||
85 | * There are four commands which deal with the border image. This red | ||
86 | * frame is there to illustrate <b>image borders</b>. The image source | ||
87 | * for the border is a solid red rectangle, with a transparent @b | ||
88 | * rectangular area in its middle. See how we use it to get a 3 pixel | ||
89 | * wide frame with <code>evas_object_image_border_set(d.border, 3, 3, | ||
90 | * 3, 3)</code>. To finish the effect of showing it as a border, we | ||
91 | * issue <code>evas_object_image_border_center_fill_set(d.border, | ||
92 | * EVAS_BORDER_FILL_NONE)</code>. | ||
93 | * | ||
94 | * Use 't' to change the border's thickness. 'b' will change the | ||
95 | * border image's center region rendering schema: either a hole (no | ||
96 | * rendering), blending (see the original transparent area, in this | ||
97 | * case) or solid (the transparent area gets filled). Finally, 'c' | ||
98 | * will change the border's scaling factor. | ||
99 | * | ||
100 | * While you have the border in 'blending mode', test the command 'm': | ||
101 | * it will set whether to use or not smooth scaling on the border's | ||
102 | * source image. Since the image is small originally (30 x 30), we're | ||
103 | * obviously up-scaling it (except the border pixels, do you | ||
104 | * remember?). With this last switch, you'll either see the | ||
105 | * transparent shape in the middle flat (no smoothing) or blurry | ||
106 | * (smoothed). | ||
107 | * | ||
108 | * The full example follows. | ||
109 | * | ||
110 | * @include evas-images.c | ||
111 | * @example evas-images.c | ||
112 | */ | ||
113 | |||
114 | /** | ||
115 | * @page Example_Evas_Images_2 Some more image object functions examples (2nd block) | ||
116 | * @dontinclude evas-images2.c | ||
117 | * | ||
118 | * In this example, we have three images on the canvas, but one of | ||
119 | * them is special -- we're using it as a <b>proxy image | ||
120 | * object</b>. It will mirror the contents of the other two images | ||
121 | * (which are the ones on the top of the canvas), one at a time: | ||
122 | * @skip d.proxy_img = evas_object_image_filled_add(d.evas); | ||
123 | * @until evas_object_show(d.proxy_img); | ||
124 | * As in other examples, we have a command line interface on it. | ||
125 | * @dontinclude evas-images2.c | ||
126 | * @skip commands | ||
127 | * @until ; | ||
128 | * The 'p' one will change the source of the proxy image to one of the | ||
129 | * other two, as seem above. | ||
130 | * @skip if (strcmp(ev->keyname, "p") == 0) | ||
131 | * @until } | ||
132 | * Note the top right image, the smaller one: | ||
133 | * @dontinclude evas-images2.c | ||
134 | * @skip noise_img = | ||
135 | * @until show | ||
136 | * Since we are creating the data for its pixel buffer ourselves, we | ||
137 | * have to set its size with evas_object_image_size_set(), first. We | ||
138 | * set our data with the function evas_object_image_data_set(), where | ||
139 | * the second argument is a buffer with random data. There's a last | ||
140 | * command to print it's @b stride value. Since its created with one | ||
141 | * quarter of the canvas's original width | ||
142 | * @dontinclude evas-images2.c | ||
143 | * @skip define WIDTH | ||
144 | * @until define HEIGHT | ||
145 | * you can check this value. | ||
146 | * | ||
147 | * The image on the top left also has a subtlety: it is @b pre-loaded | ||
148 | * on this example. | ||
149 | * @dontinclude evas-images2.c | ||
150 | * @skip d.logo = | ||
151 | * @until show | ||
152 | * On real use cases we wouldn't be just printing something like this | ||
153 | * @dontinclude evas-images2.c | ||
154 | * @skip static void | ||
155 | * @until } | ||
156 | * naturally. | ||
157 | * | ||
158 | * The 's' command will save one of the images on the disk, in the png | ||
159 | * format: | ||
160 | * @dontinclude evas-images2.c | ||
161 | * @skip if (strcmp(ev->keyname, "a") == 0) | ||
162 | * @until } | ||
163 | * | ||
164 | * The full example follows. | ||
165 | * | ||
166 | * @include evas-images2.c | ||
167 | * @example evas-images2.c | ||
168 | */ | ||
169 | |||
170 | /** | ||
171 | * @page Example_Evas_Events Evas events (canvas and object ones) and some canvas operations example | ||
172 | * @dontinclude evas-events.c | ||
173 | * | ||
174 | * In this example we illustrate how to interact with canvas' (and its | ||
175 | * objects') events, including the key input ones. We also demonstrate | ||
176 | * precise point collision on objects and canvas "obscured regions", | ||
177 | * here. | ||
178 | * | ||
179 | * The example application consists of a window with a white | ||
180 | * background and an image -- the Enlightenment logo. The application | ||
181 | * begins with this image switching back and forth into two sizes: the | ||
182 | * exact canvas' size and one quarter of it (when it's placed on the | ||
183 | * top left quadrant). Thus, we'll have an @b animation going on, | ||
184 | * with image states set to change each 2 elapsed seconds. | ||
185 | * | ||
186 | * There's a global variable to aid accessing our desired context | ||
187 | * variables from anywhere in the code: | ||
188 | * @dontinclude evas-events.c | ||
189 | * @skip test_data | ||
190 | * @until {0} | ||
191 | * | ||
192 | * What interests us there are the @c canvas pointer, our image handle | ||
193 | * -- @c img -- and the background one, @c bg. | ||
194 | * | ||
195 | * The first interesting thing on the example is the registration of a | ||
196 | * callback on each canvas resizing event, where we put our canvas' | ||
197 | * size and the background rectangle's one in synchrony, so that we | ||
198 | * don't get bogus content on rendering with canvas resizes: | ||
199 | * @dontinclude evas-events.c | ||
200 | * @skip resize_set | ||
201 | * @until resize_set | ||
202 | * @dontinclude evas-events.c | ||
203 | * @skip here to keep | ||
204 | * @until } | ||
205 | * | ||
206 | * Than, after grabbing our canvas pointer from the Ecore Evas helper | ||
207 | * infrastructure, we registrate an event callbacks on it: | ||
208 | * @skip evas_event_callback_add(d.canvas, EVAS_CALLBACK_RENDER_FLUSH_PRE, | ||
209 | * @until two canvas event callbacks | ||
210 | * @dontinclude evas-events.c | ||
211 | * @skip render flush callback | ||
212 | * @until } | ||
213 | * It will be called whenever our canvas has to flush its rendering | ||
214 | * pipeline. In this example, two ways of observing that message | ||
215 | * which is printed in the cited callback are: | ||
216 | * - to resize the example's window (thus resizing the canvas' viewport) | ||
217 | * - let the animation run | ||
218 | * | ||
219 | * When one resizes the canvas, there's at least one operation it has | ||
220 | * to do which will require new calculation for rendering: the | ||
221 | * resizing of the background rectangle, in a callback we already | ||
222 | * shown you. | ||
223 | * | ||
224 | * The creation of our background rectangle is so that we give it a @b name, | ||
225 | * via evas_object_name_set() and we give it the canvas @b focus: | ||
226 | * @dontinclude evas-events.c | ||
227 | * @skip bg = evas_object_rectangle_add | ||
228 | * @until focus_set | ||
229 | * | ||
230 | * Still exemplifying events and callbacks, we register a callback on | ||
231 | * the canvas event of an object being focused: | ||
232 | * @dontinclude evas-events.c | ||
233 | * @skip add(d.canvas, EVAS_CALLBACK_CANVAS_OBJECT_FOCUS | ||
234 | * @until } | ||
235 | * @dontinclude evas-events.c | ||
236 | * @skip called when | ||
237 | * @until } | ||
238 | * | ||
239 | * In that call, @c event_info is going to be the focused object's | ||
240 | * handle, in this case our background rectangle. We print its name, | ||
241 | * so you can check it's the same. We check that pointer is the same | ||
242 | * reported by Evas' API with regard to the newest focused | ||
243 | * object. Finally, we check whether that object is really flagged as | ||
244 | * focused, now using an Evas object API function. | ||
245 | * | ||
246 | * The animation we talked about comes from a timer we register just | ||
247 | * before we start the example's main loop. As we said, the resizing | ||
248 | * of the image will also force the canvas to repaint itself, thus | ||
249 | * flushing the rendering pipeline whenever the timer ticks: | ||
250 | * @dontinclude evas-events.c | ||
251 | * @skip d.resize_timer = ecore | ||
252 | * @until d.resize_timer = ecore | ||
253 | * @dontinclude evas-events.c | ||
254 | * @skip put some action | ||
255 | * @until } | ||
256 | * When you start this example, this animation will be | ||
257 | * running, by default. To interact with the program, there's a | ||
258 | * command line interface. A help string can be asked for with the | ||
259 | * 'h' key: | ||
260 | * @dontinclude evas-events.c | ||
261 | * @skip static const char *commands | ||
262 | * @until ; | ||
263 | * These are the commands the example will accept at any time, except | ||
264 | * when one triggers the 'f' one. This command will exemplify | ||
265 | * evas_event_freeze(), which interrupts @b all input events | ||
266 | * processing for the canvas (in the example, just for 3 seconds). Try | ||
267 | * to issue events for it during that freeze time: | ||
268 | * @dontinclude evas-events.c | ||
269 | * @skip if (strcmp(ev->keyname, "f") == 0) | ||
270 | * @until } | ||
271 | * The 'd' command will unregister those two canvas callbacks for you, | ||
272 | * so you won't see the messages about the focused object and the | ||
273 | * rendering process anymore: | ||
274 | * @dontinclude evas-events.c | ||
275 | * @skip if (strcmp(ev->keyname, "d") == 0) | ||
276 | * @until } | ||
277 | * In this example, we start using a focused object to handle the input | ||
278 | * events -- the background rectangle. We register a callback on an key input | ||
279 | * event occurring on it, so that we can act on each key stroke: | ||
280 | * @skip object_event_callback_add | ||
281 | * @until } | ||
282 | * @dontinclude evas-events.c | ||
283 | * @skip examine the keys pressed | ||
284 | * @until key grab | ||
285 | * We do so by examining the @c ev->keyname string (remember the event | ||
286 | * information struct for key down events is the #Evas_Event_Key_Down | ||
287 | * one). There's one more trick for grabbing input events on this | ||
288 | * example -- evas_object_key_grab(). The 'c' command will, when | ||
289 | * firstly used, @b unfocus the background rectangle. Unfocused | ||
290 | * objects on an Evas canvas will @b never receive key events. We | ||
291 | * grab, then, the keys we're interested at to the object forcefully: | ||
292 | * @skip if (d.focus) | ||
293 | * @until got here by key grabs | ||
294 | * This shows how one can handle input not depending on focus issues | ||
295 | * -- you can grab them globally. Switch back and forth focus and | ||
296 | * forced key grabbing with the 'c' key, and observe the messages | ||
297 | * printed about the focused object. Observe, also, that we register | ||
298 | * two more @b object callbacks, this time on the image object | ||
299 | * (Enlightenment logo), where we just print messages telling the mouse | ||
300 | * pointer has entered or exited it area: | ||
301 | * @skip evas_object_show(d.img); | ||
302 | * @until mouse_out, NULL | ||
303 | * @dontinclude evas-events.c | ||
304 | * @skip mouse enters the object's area | ||
305 | * @until mouse exits the object's area | ||
306 | * Experiment with moving the mouse pointer over the image, letting it | ||
307 | * enter and exit its area (stop the animation with 'a', for a better | ||
308 | * experience). When you start the example, Evas will consider this | ||
309 | * area by being the whole boundary rectangle around the picture. If | ||
310 | * you issue the 'p' command, though, you get a demonstration of Evas' | ||
311 | * precise point collision detection on objects. With | ||
312 | * evas_object_precise_is_inside_get(), one can make Evas consider the | ||
313 | * transparent areas of an object (the middle of the logo's E letter, | ||
314 | * in the case) as not belonging to it when calculating mouse | ||
315 | * in/out/up/down events: | ||
316 | * @dontinclude evas-events.c | ||
317 | * @skip if (strcmp(ev->keyname, "p") == 0) | ||
318 | * @until } | ||
319 | * To finish the example, try the command bound to Control + 'o', | ||
320 | * which exemplifies Evas' <b>obscured regions</b>. When firstly | ||
321 | * pressed, you'll get the same contents, in a region in the middle of | ||
322 | * the canvas, at the time the key was pressed, until you toggle the | ||
323 | * effect off again (make sure the animation is running on to get the | ||
324 | * idea better). When you toggle this effect off, we also demonstrate | ||
325 | * the use of evas_render_updates(), which will force immediate | ||
326 | * updates on the canvas rendering, bringing back the obscured | ||
327 | * region's contents to normal. | ||
328 | * @skip mods = evas_key_modifier_get(evas); | ||
329 | * @until end of obscured region command | ||
330 | * | ||
331 | * What follows is the complete code for this example. | ||
332 | * | ||
333 | * @include evas-events.c | ||
334 | * @example evas-events.c | ||
335 | */ | ||
336 | |||
337 | /** | ||
338 | * @page Example_Evas_Object_Manipulation Evas objects basic manipulation example | ||
339 | * | ||
340 | * @include evas-object-manipulation.c | ||
341 | * @example evas-object-manipulation.c | ||
342 | */ | ||
343 | |||
344 | /** | ||
345 | * @page Example_Evas_Aspect_Hints Evas aspect hints example | ||
346 | * | ||
347 | * @include evas-aspect-hints.c | ||
348 | * @example evas-aspect-hints.c | ||
349 | */ | ||
350 | |||
351 | /** | ||
352 | * @page Example_Evas_Size_Hints Evas alignment, minimum size, maximum size, padding and weight hints example | ||
353 | * | ||
354 | * In this code, we place a (vertical) box with two rectangles as | ||
355 | * child elements. It has a command line interface with which to act | ||
356 | * on those rectangles' <b>size hints</b>: | ||
357 | * @dontinclude evas-hints.c | ||
358 | * @skip static const char commands | ||
359 | * @until ; | ||
360 | * | ||
361 | * That should be self explanatory. Change those values (possibly | ||
362 | * resizing the box, which will resize together with the example's | ||
363 | * window) to get how size hints are honored by a container object, | ||
364 | * which in this case is the Evas box. | ||
365 | * | ||
366 | * More on this smart object can be found on @ref Example_Evas_Box. | ||
367 | * The full code for this example follows. | ||
368 | * | ||
369 | * @include evas-hints.c | ||
370 | * @example evas-hints.c | ||
371 | */ | ||
372 | |||
373 | /** | ||
374 | * @page Example_Evas_Box Evas box example | ||
375 | * | ||
376 | * In this example, we demonstrate the use of Evas box objects. We | ||
377 | * cover changing boxes' layouts (with a custom layout, besides the | ||
378 | * ones provided by Evas), box padding and alignment influence on the | ||
379 | * layouts, insertion and removal of box items. | ||
380 | * | ||
381 | * The interesting part of the code starts, naturally, when we add a | ||
382 | * box object to the canvas. Just after it, we place five rectangles, | ||
383 | * with random colors, inside of it. Those rectangles get a minimum | ||
384 | * size hint of 50 pixels on each axis, which will be respected by | ||
385 | * most of the box's possible layouts: | ||
386 | * @dontinclude evas-box.c | ||
387 | * @skip evas_object_box_add | ||
388 | * @until } | ||
389 | * @until } | ||
390 | * | ||
391 | * Just like in other Evas examples, we have a white background on the | ||
392 | * canvas and a red border around the container object of interest, | ||
393 | * the box, to mark its boundaries. Resizing of the canvas will keep | ||
394 | * the box's proportion with regard to the whole canvas', so that you | ||
395 | * can experiment with different sizes of the box to accomodate its | ||
396 | * children: | ||
397 | * @dontinclude evas-box.c | ||
398 | * @skip adjust canvas' contents on resizes | ||
399 | * @until } | ||
400 | * | ||
401 | * Again, one interacts with this program by means of key commands: | ||
402 | * @dontinclude evas-box.c | ||
403 | * @skip static const char *commands | ||
404 | * @until ; | ||
405 | * | ||
406 | * Let's start with the @b numeric ones, each of which will impose a | ||
407 | * different layout on the box object. | ||
408 | * | ||
409 | * The initial layout the box starts at is the one triggered by the | ||
410 | * key @c '1' -- the horizontal layout. Thus, the initial appearance | ||
411 | * of this program, demonstrating this layout, is something like: | ||
412 | * | ||
413 | * @image html evas-box-example-00.png | ||
414 | * @image rtf evas-box-example-00.png | ||
415 | * @image latex evas-box-example-00.eps | ||
416 | * | ||
417 | * The vertical layout (@c '2' key) is very similar, but just | ||
418 | * disposing the items vertically: | ||
419 | * | ||
420 | * @image html evas-box-example-01.png | ||
421 | * @image rtf evas-box-example-01.png | ||
422 | * @image latex evas-box-example-01.eps | ||
423 | * | ||
424 | * Note the influence of the (default) @c 0.5 box alignment property, | ||
425 | * which will let the children line in the middle of the box's | ||
426 | * area. Also, because the space required by them extrapolates the | ||
427 | * box's height (we resized it to be smaller), they'll be drawn out if | ||
428 | * its bounds. | ||
429 | * | ||
430 | * Next, comes the horizontal @b homogeneous layout (@c '3' key). See | ||
431 | * how it reserves an equal amount of space for each child to take: | ||
432 | * | ||
433 | * @image html evas-box-example-02.png | ||
434 | * @image rtf evas-box-example-02.png | ||
435 | * @image latex evas-box-example-02.eps | ||
436 | * | ||
437 | * Its vertical equivalent can be triggered by the @c '4' key. The | ||
438 | * next different layout of interest is the horizontal maximum size | ||
439 | * homogeneous (@c '5' key). It will reserve cells to children sized | ||
440 | * equally to the dimensions of the child with bigger size (or minimum | ||
441 | * size hints). For this example, all cells would be just the size of | ||
442 | * our rectangles' minimum size hints and, to prove that, insert a new | ||
443 | * (smaller) rectangle at position 3, say, with @c Ctrl and @c 3 keys | ||
444 | * together: | ||
445 | * | ||
446 | * @image html evas-box-example-03.png | ||
447 | * @image rtf evas-box-example-03.png | ||
448 | * @image latex evas-box-example-03.eps | ||
449 | * | ||
450 | * The code for the commands inserting and deleting box items is: | ||
451 | * @dontinclude evas-box.c | ||
452 | * @skip mods, "Shift" | ||
453 | * @until } | ||
454 | * @until } | ||
455 | * @dontinclude evas-box.c | ||
456 | * @skip new rectangle to be put in the box | ||
457 | * @until } | ||
458 | * In that code, we exemplify evas_object_box_children_get(), to fetch | ||
459 | * a child element at an exact position. After the element removal | ||
460 | * from the box (leaving it unparented again), we delete it and free | ||
461 | * that list. The code inserting a new rectangle, there, is | ||
462 | * straightforward. | ||
463 | * | ||
464 | * Try the @c '6' key for the vertical equivalent of the last shown | ||
465 | * layout. Then, comes the @b flow layout, triggered by the @c '7' | ||
466 | * key. We make our box small to demonstrate the effect on the items | ||
467 | * layouting: | ||
468 | * | ||
469 | * @image html evas-box-example-04.png | ||
470 | * @image rtf evas-box-example-04.png | ||
471 | * @image latex evas-box-example-04.eps | ||
472 | * | ||
473 | * The next two numerical commands are for the vertical equivalent of | ||
474 | * the last and the stack one, respectively. Try them out to get their | ||
475 | * looks. | ||
476 | * | ||
477 | * The last numerical key, @c '0', shows the effect of a @b custom | ||
478 | * layout on the box. We wrote one that would split the width and | ||
479 | * height of the box equally and, then, place the items in the cells | ||
480 | * in the diagonal: | ||
481 | * @dontinclude evas-box.c | ||
482 | * @skip keyname, "0" | ||
483 | * @until } | ||
484 | * @dontinclude evas-box.c | ||
485 | * @skip custom 'diagonal' layout | ||
486 | * @until } | ||
487 | * @until } | ||
488 | * | ||
489 | * @image html evas-box-example-05.png | ||
490 | * @image rtf evas-box-example-05.png | ||
491 | * @image latex evas-box-example-05.eps | ||
492 | * | ||
493 | * Finally, the @c 'a' and @c 'p' commands will change the box's | ||
494 | * alignment and padding property values, respectively. For each of | ||
495 | * the layouts above, see the effects they make by setting different | ||
496 | * values on those properties. | ||
497 | * | ||
498 | * The full code for this example follows. For an exercise on <b>the | ||
499 | * effect of children box elements' size hints on a box layout</b>, | ||
500 | * try the @ref Example_Evas_Size_Hints. | ||
501 | * | ||
502 | * @include evas-box.c | ||
503 | * @example evas-box.c | ||
504 | */ | ||
505 | |||
506 | /** | ||
507 | * @page Example_Evas_Stacking Evas object stacking functions (and some event handling) | ||
508 | * @dontinclude evas-stacking.c | ||
509 | * | ||
510 | * In this example, we illustrate how to stack objects in a custom | ||
511 | * manner and how to deal with layers. | ||
512 | * | ||
513 | * We have three objects of interest in it -- white background, red | ||
514 | * rectangle, green rectangle and blue rectangle. | ||
515 | * @skip d.bg = evas_object_rectangle_add(d.canvas); | ||
516 | * @until evas_object_resize(d.bg, WIDTH, HEIGHT); | ||
517 | * @skip d.rects[2] = evas_object_rectangle_add(d.canvas); | ||
518 | * @until evas_object_show(d.rects[0]); | ||
519 | * @dontinclude evas-stacking.c | ||
520 | * Like in other Evas examples, one interacts with it by means of key | ||
521 | * commands: | ||
522 | * @skip static const char *commands | ||
523 | * @until ; | ||
524 | * At any given point, like seem above, you'll be operating one rectangle only. | ||
525 | * You may stacking it below an adjacent object with "b": | ||
526 | * @skip evas_object_stack_below(d.rects[d.cur_rect], neighbour); | ||
527 | * @until evas_object_stack_below(d.rects[d.cur_rect], neighbour); | ||
528 | * @dontinclude evas-stacking.c | ||
529 | * "a" will do the opposite: | ||
530 | * @skip evas_object_stack_above(d.rects[d.cur_rect], neighbour); | ||
531 | * @until evas_object_stack_above(d.rects[d.cur_rect], neighbour); | ||
532 | * To bring it directly to the top/bottom, use "t"/"m", respectively: | ||
533 | * @dontinclude evas-stacking.c | ||
534 | * @skip evas_object_raise(d.rects[d.cur_rect]); | ||
535 | * @until evas_object_raise(d.rects[d.cur_rect]); | ||
536 | * @skip evas_object_lower(d.rects[d.cur_rect]); | ||
537 | * @until evas_object_lower(d.rects[d.cur_rect]); | ||
538 | * At any time, use the "s" command to see the status of the | ||
539 | * ordering. It will show the background's ordering too. Note that it | ||
540 | * also shows the @b layer for this object. It starts at a @b | ||
541 | * different layer than the others. Use "l" to change its layer | ||
542 | * (higher layer numbers mean higher layers). If the background is on | ||
543 | * the same layer as the others (0), you'll see it interact with them | ||
544 | * on the ordering. If it's in the layer above, no matter what you do, | ||
545 | * you'll see nothing but the white rectangle: it covers the other | ||
546 | * layers. For the initial layer (-1), it will never mess nor occlude | ||
547 | * the others. | ||
548 | * | ||
549 | * Let's make some tests with those commands. The rectangle which starts | ||
550 | * selected and which will receive our commands is the @b red one. It | ||
551 | * starts stacked above all the others, like seem above: | ||
552 | * | ||
553 | * @image html evas-stacking-example-00.png | ||
554 | * @image rtf evas-stacking-example-00.png | ||
555 | * @image latex evas-stacking-example-00.eps | ||
556 | * | ||
557 | * Stack it one level below, with 'b', and you'll get: | ||
558 | * | ||
559 | * @image html evas-stacking-example-01.png | ||
560 | * @image rtf evas-stacking-example-01.png | ||
561 | * @image latex evas-stacking-example-01.eps | ||
562 | * Note how the rectangle which laid above it, the green one, is now | ||
563 | * on top of it. Now change the rectangle to operate on to the blue | ||
564 | * one, with two consecutive 'c' commands. Note that it's the lowest | ||
565 | * one on the stack of rectangles. Issue the 'a' command for it, thus | ||
566 | * re-stacking it one level above: | ||
567 | * | ||
568 | * @image html evas-stacking-example-02.png | ||
569 | * @image rtf evas-stacking-example-02.png | ||
570 | * @image latex evas-stacking-example-02.eps | ||
571 | * You can send it to the top of its layer directly with the 't' command: | ||
572 | * | ||
573 | * @image html evas-stacking-example-03.png | ||
574 | * @image rtf evas-stacking-example-03.png | ||
575 | * @image latex evas-stacking-example-03.eps | ||
576 | * Now put it back to the bottom of that layer with 'm': | ||
577 | * | ||
578 | * @image html evas-stacking-example-04.png | ||
579 | * @image rtf evas-stacking-example-04.png | ||
580 | * @image latex evas-stacking-example-04.eps | ||
581 | * Like said above, we have two layers used at the beginning of the | ||
582 | * example: the default one (0) and the one immediately below it (-1), | ||
583 | * for the white background. Let's change this setup by issuing the | ||
584 | * 'l' command, which will change the background's layer to 1, i.e., a | ||
585 | * layer @b above the one holding the other rectangles: | ||
586 | * | ||
587 | * @image html evas-stacking-example-05.png | ||
588 | * @image rtf evas-stacking-example-05.png | ||
589 | * @image latex evas-stacking-example-05.eps | ||
590 | * See how it now covers everything else. Press 'l' again, taking it | ||
591 | * now to layer 0. It's still covering everything because it lands the | ||
592 | * layer as the highest one on the objects stack. As we have the blue | ||
593 | * rectangle as the one receiving stacking commands, hit 't' and | ||
594 | * you'll see it again: | ||
595 | * | ||
596 | * @image html evas-stacking-example-06.png | ||
597 | * @image rtf evas-stacking-example-06.png | ||
598 | * @image latex evas-stacking-example-06.eps | ||
599 | * By bringing the background back to layer -1 ('l'), you'll get: | ||
600 | * | ||
601 | * @image html evas-stacking-example-07.png | ||
602 | * @image rtf evas-stacking-example-07.png | ||
603 | * @image latex evas-stacking-example-07.eps | ||
604 | * | ||
605 | * The last two commands available are "p" and "r", which will make | ||
606 | * the target rectangle to @b pass (ignore) and @b repeat the mouse | ||
607 | * events occurring on it (the commands will cycle through on and off | ||
608 | * states). This is demonstrated with the following | ||
609 | * #EVAS_CALLBACK_MOUSE_DOWN callback, registered on each of the | ||
610 | * colored rectangles: | ||
611 | * @dontinclude evas-stacking.c | ||
612 | * @skip static void | ||
613 | * @until } | ||
614 | * Try to change these properties on the three rectangles while | ||
615 | * experimenting with mouse clicks on their intersection region. | ||
616 | * | ||
617 | * The full example follows. | ||
618 | * | ||
619 | * @include evas-stacking.c | ||
620 | * @example evas-stacking.c | ||
621 | */ | ||
622 | |||
623 | /** | ||
624 | * @page Example_Evas_Map_Overview Evas Map - Overview | ||
625 | * @dontinclude evas-map-utils.c | ||
626 | * | ||
627 | * Down to the very bottom, Map is simple: it takes an object and transforms | ||
628 | * the way it will be shown on screen. But using it properly can be a bit | ||
629 | * troublesome. | ||
630 | * | ||
631 | * For the most common operations there are utility functions that help in | ||
632 | * setting up the map to achieve the desired effects. Now we'll go through | ||
633 | * an overview of the map API and some of the things that can be done with | ||
634 | * it. | ||
635 | * | ||
636 | * The full code can be found @ref evas-map-utils.c "here". | ||
637 | * | ||
638 | * To show how some functions work, this example listens to keys pressed to | ||
639 | * toggle several options. | ||
640 | * @skip typedef | ||
641 | * @until App_Data | ||
642 | * @until ; | ||
643 | * | ||
644 | * In this program, we divide the window in four quadrants, each holding an | ||
645 | * object that will have different map configurations applied to them in each | ||
646 | * call to an animator function. | ||
647 | * @skip static Eina_Bool | ||
648 | * @until evas_output_size_get | ||
649 | * | ||
650 | * Let's first create a map and set some of our options to it. Only four | ||
651 | * points maps are supported, so we'll stick to that magic number. We can | ||
652 | * set a color for each vertex or apply one for all of them at once | ||
653 | * @until evas_map_util_points_color_set | ||
654 | * | ||
655 | * For the first object, we'll have a plain rectangle. At its creation, this | ||
656 | * rectangle was set to be semi-transparent, but whether its own alpha is | ||
657 | * used will be defined by the map's alpha setting. If the map's alpha is | ||
658 | * disabled, then the object will be completely opaque. The map's own color, | ||
659 | * however, will use any alpha set to it. | ||
660 | * | ||
661 | * So we get our object, initialize our map geometry to match the rectangle | ||
662 | * and make it rotate around its own center, then apply the map to the | ||
663 | * object so it takes effect. | ||
664 | * @until evas_object_map_enable_set | ||
665 | * | ||
666 | * The second object is an image. Here we don't have any color set for the | ||
667 | * object, but the image itself contains an alpha channel that will not be | ||
668 | * affected by the map settings, so even with alpha set to be off, the image | ||
669 | * will still be transparent. Color applied to the map will tint it though. | ||
670 | * Since setting a map copies it into the object, we can reuse the same one | ||
671 | * we created before. We initialize it to the new object while all other | ||
672 | * options are kept the same. Notice that no rotation will be done here, as | ||
673 | * that's just an utility function that takes the coordinates set for each | ||
674 | * point of the map and transforms it accordingly. | ||
675 | * @until evas_map_util_points_populate_from_object_full | ||
676 | * | ||
677 | * This time the object is a bit farther into the screen, by using a @c z | ||
678 | * value higher than 0 to init the map. We also need to map the image used | ||
679 | * by the object, so Evas knows how to transform it properly. For this we | ||
680 | * use the evas_map_point_image_uv_set() to tell the map what coordinate | ||
681 | * within the image corresponds to each point of the map. | ||
682 | * @until evas_map_point_image_uv_set(m, 3 | ||
683 | * | ||
684 | * This object will also be rotated, but in all three axis and around some | ||
685 | * other point, not its center, chosen mostly at random. If enabled, lighting | ||
686 | * will be applied to, from a light source at the center of the window. | ||
687 | * @until evas_object_map_enable_set | ||
688 | * | ||
689 | * For the third object we are doing, once more, a 3D rotation, but this time | ||
690 | * perspective will be applied to our map to make it look more realistic. | ||
691 | * The lighting source also follows the mouse cursor and it's possible to | ||
692 | * toggle backface culling, so that the object is hidden whenever we are | ||
693 | * not seeing its front face. | ||
694 | * @until evas_object_map_enable_set | ||
695 | * | ||
696 | * And we free this map, since since we messed too much with it and for the | ||
697 | * last object we want something cleaner. | ||
698 | * @until evas_map_free | ||
699 | * | ||
700 | * The last object is actually two. One image, with an image set to it, and | ||
701 | * one image proxying the first one with evas_object_image_source_set(). This | ||
702 | * way, the second object will show whatever content its source has. | ||
703 | * This time we'll be using a map more manually to simulate a simple reflection | ||
704 | * of the original image. | ||
705 | * | ||
706 | * We know that the reflection object is placed just like the original, so | ||
707 | * we take a shortcut by just getting the geometry of our to-be-mapped object. | ||
708 | * We also need to get the image size of the source. | ||
709 | * @until evas_object_image_size_get | ||
710 | * | ||
711 | * For this we'll create a map shaped so that it begins at the base of our | ||
712 | * image and it expands horizontally as it grows (downwards) in height. | ||
713 | * @until evas_map_point_coord_set(m, 3 | ||
714 | * | ||
715 | * Since the reflection should show the image inverted, we need to map it | ||
716 | * this way. The first point of the map (top-left) will be mapped to the | ||
717 | * mapped to the first pixel of the last row. There's no horizontal reflection | ||
718 | * and we want the full width of the image, but as we map its upper side ww | ||
719 | * will only take two thirds of the image. | ||
720 | * @until evas_map_point_image_uv_set(m, 3 | ||
721 | * | ||
722 | * Finally, to fade out our reflection we set the colors for each point in | ||
723 | * the map. The two at the top need to be visible, but we'll tone them down | ||
724 | * a bit and make them a bit translucent. The other two will go straight to | ||
725 | * full transparency. Evas interpolates the colors from one point to the next, | ||
726 | * so this will make them fade out. | ||
727 | * @until evas_object_map_enable_set | ||
728 | * | ||
729 | * Close up by freeing the map and do some other things needed to keep stuff | ||
730 | * moving in our animations and we are done. | ||
731 | * @until } | ||
732 | * | ||
733 | * The rest of the program is setup and listening to key events. Nothing that | ||
734 | * matters within the scope of this example, so we are going to skip it. | ||
735 | * Refer to it @ref evas-map-utils.c "here" however to see how everything | ||
736 | * fits together. | ||
737 | * | ||
738 | * @example evas-map-utils.c | ||
739 | */ | ||
740 | |||
741 | /** | ||
742 | * @page Example_Evas_Smart_Objects Evas object smart objects | ||
743 | * @dontinclude evas-smart-object.c | ||
744 | * | ||
745 | * In this example, we illustrate how to create and handle Evas smart objects. | ||
746 | * | ||
747 | * A smart object is one that provides custom functions to handle | ||
748 | * clipping, hiding, moving, resizing, color setting and more on @b | ||
749 | * child elements, automatically, for the smart object's user. They | ||
750 | * could be as simple as a group of objects that move together (see | ||
751 | * @ref Evas_Smart_Object_Clipped) or implementations of whole complex | ||
752 | * UI widgets, providing some intelligence (thus the name) and | ||
753 | * extension to simple Evas objects. | ||
754 | * | ||
755 | * Here, we create one as an example. What it does is to control (at | ||
756 | * maximum) 2 child objects, with regard to their geometries and | ||
757 | * colors. There can be a "left" child and a "right" one. The former | ||
758 | * will always occupy the top left quadrant of the smart object's | ||
759 | * area, while the latter will occupy the bottom right. The smart | ||
760 | * object will also contain an @b internal decorative border object, | ||
761 | * which will also be controlled by it, naturally. | ||
762 | * | ||
763 | * Here is where we add it to the canvas: | ||
764 | * @skip d.smt = evas_smart_example_add(d.evas); | ||
765 | * @until show | ||
766 | * | ||
767 | * The magic starts to happen in the @c evas_smart_example_add() | ||
768 | * function, which is one in the example smart object's defined @b | ||
769 | * interface. These should be the functions you would export to the | ||
770 | * users of your smart object. We made three for this one: | ||
771 | * - @c evas_smart_example_add(): add a new instance of the example | ||
772 | * smart object to a canvas | ||
773 | * - @c evas_smart_example_remove(): remove a given child of the smart | ||
774 | * object from it | ||
775 | * - @c evas_smart_example_set_left(): set the left child of the smart | ||
776 | * object | ||
777 | * - @c evas_smart_example_set_right(): set the right child of the | ||
778 | * smart object | ||
779 | * | ||
780 | * The object's creation takes place as: | ||
781 | * @dontinclude evas-smart-object.c | ||
782 | * @skip add a new example smart object to a canvas | ||
783 | * @until } | ||
784 | * | ||
785 | * Smart objects are defined by <b>smart classes</b>, which are structs | ||
786 | * defining their interfaces, or <b>smart functions</b> (see | ||
787 | * #Evas_Smart_Class, the base class for any smart object). As you | ||
788 | * see, one has to use the evas_object_smart_add() function to | ||
789 | * instantiate smart objects. Its second parameter is what matters -- | ||
790 | * an #Evas_Smart struct, which contains all the smart class | ||
791 | * definitions (smart functions, smart callbacks, and the like). Note, | ||
792 | * however, that @c _evas_smart_example_smart_class_new() seems not to | ||
793 | * be defined in our example's code. That's because it came from a very | ||
794 | * handy <b>helper macro</b>: | ||
795 | * @dontinclude evas-smart-object.c | ||
796 | * @skip EVAS_SMART_SUBCLASS_NEW | ||
797 | * @until _smart_callbacks | ||
798 | * What it does is to @b subclass a given existing smart class, thus | ||
799 | * specializing it. This is very common and useful in Evas. There is a | ||
800 | * built-in smart object, the "clipped smart object", which implements | ||
801 | * a behavior mostly desired by many other smart object implementors: | ||
802 | * it will clip its children to its area and move them along with it, | ||
803 | * on evas_object_move() calls. Then, our example smart object will | ||
804 | * get that behavior for free. | ||
805 | * | ||
806 | * The first argument to the macro, | ||
807 | * @dontinclude evas-smart-object.c | ||
808 | * @skip _evas_smart_example_type | ||
809 | * @until _evas_smart_example_type | ||
810 | * will define the new smart class' name. The second tells the macro | ||
811 | * what is the @b prefix of the function it will be declaring with a @c | ||
812 | * _smart_set_user() suffix. On this function, we may override/extend | ||
813 | * any desired method from our parent smart class: | ||
814 | * @dontinclude evas-smart-object.c | ||
815 | * @skip setting our smart interface | ||
816 | * @until } | ||
817 | * | ||
818 | * The first function pointer's code will take place at an example | ||
819 | * smart object's @b creation time: | ||
820 | * @dontinclude evas-smart-object.c | ||
821 | * @skip create and setup | ||
822 | * @until } | ||
823 | * | ||
824 | * The #EVAS_SMART_DATA_ALLOC macro will take care of allocating our | ||
825 | * smart object data, which will be available on other contexts for us | ||
826 | * (mainly in our interface functions): | ||
827 | * @dontinclude evas-smart-object.c | ||
828 | * @skip typedef struct _Evas_Smart_Example_Data | ||
829 | * @until }; | ||
830 | * | ||
831 | * See that, as we're inheriting from the clipped smart object's | ||
832 | * class, we @b must have their data struct as our first member. Other | ||
833 | * data of interest for us is a child members array and the border | ||
834 | * object's handle. The latter is what is created in the last | ||
835 | * mentioned function. Note how to tell Evas the border will be | ||
836 | * managed by our smart object from that time on: | ||
837 | * <code>evas_object_smart_member_add(priv->border, o);</code>. | ||
838 | * The counterpart of this function is exemplified on the smart | ||
839 | * object's interface function to remove children: | ||
840 | * @skip remove a child element | ||
841 | * @until set to | ||
842 | * | ||
843 | * At the end of that function we make use of an constant defined by | ||
844 | * the #EVAS_SMART_SUBCLASS_NEW: @c _evas_smart_example_parent_sc. It | ||
845 | * has the same prefix we passed to the macro, as you can see, and it | ||
846 | * holds a pointer to our @b parent smart class. Then, we can call the | ||
847 | * specialized method, itself, after our code. The @c del, @c hide, @c | ||
848 | * show and @c resize specializations are straightforward, we let the | ||
849 | * reader take a look at them below to check their behavior. What's | ||
850 | * interesting is the @c calculate one: | ||
851 | * @dontinclude evas-smart-object.c | ||
852 | * @skip act on child objects' properties | ||
853 | * @until setting | ||
854 | * | ||
855 | * This code will take place whenever the smart object itself is | ||
856 | * flagged "dirty", i.e., must be recalculated for rendering (that | ||
857 | * could come from changes on its clipper, resizing, moving, | ||
858 | * etc). There, we make sure the decorative border lies on the edges of | ||
859 | * the smart object and the children, if any, lie on their respective | ||
860 | * quadrants. | ||
861 | * | ||
862 | * After instantiating our smart object, we do some checks to exemplify | ||
863 | * some of the API on smart objects: | ||
864 | * @dontinclude evas-smart-object.c | ||
865 | * @skip ret = evas_object_smart_type_check | ||
866 | * @until "no" | ||
867 | * The evas_object_smart_type_check() one will assure we have the | ||
868 | * string naming our smart class really set to the live object. The | ||
869 | * evas_object_smart_clipped_clipper_get() exemplifies usage of | ||
870 | * "static clippers" -- clipped smart objects have their global | ||
871 | * clippers flagged static. | ||
872 | * | ||
873 | * Other important things we also exemplify here are <b>smart | ||
874 | * callbacks</b> and smart callback @b introspection: | ||
875 | * @dontinclude evas-smart-object.c | ||
876 | * @skip EVT_CHILDREN_NUMBER_CHANGED | ||
877 | * @until ; | ||
878 | * | ||
879 | * Here we declare our array of smart callback descriptions, which has | ||
880 | * one element only, in this case. That callback will take place, as | ||
881 | * the name indicates, whenever the number of member objects in our | ||
882 | * smart object example instance changes. That global array variable | ||
883 | * must be the last argument to #EVAS_SMART_SUBCLASS_NEW, so that it's | ||
884 | * registered as the <b>smart class</b>'s callbacks description. | ||
885 | * | ||
886 | * After we instantiate the smart object, we take a look on those | ||
887 | * descriptions and register a callback on that unique smart event: | ||
888 | * @dontinclude evas-smart-object.c | ||
889 | * @skip for (; | ||
890 | * @until focus_set | ||
891 | * | ||
892 | * The code of the callback will just print how many member objects we | ||
893 | * have, which is an integer argument of the callback itself, as | ||
894 | * flagged by its description: | ||
895 | * @dontinclude evas-smart-object.c | ||
896 | * @skip callback on number of member objects changed | ||
897 | * @until } | ||
898 | * | ||
899 | * One of the points at which we issue that callback is inside the @c | ||
900 | * evas_smart_example_remove(), code that was already shown. | ||
901 | * | ||
902 | * As in other examples, to interact with this one there's a command | ||
903 | * line interface. A help string can be asked for with the 'h' key: | ||
904 | * @dontinclude evas-smart-object.c | ||
905 | * @skip static const char *commands = | ||
906 | * @until ; | ||
907 | * Use 'l' and 'r' keys, to create new rectangles and place them on | ||
908 | * the left (@c evas_smart_example_set_left()) or right (@c | ||
909 | * evas_smart_example_set_right()) spots of our smart object, | ||
910 | * respectively. The 'w' command will remove all member objects from | ||
911 | * the smart object and delete them. The keyboard arrows will move the | ||
912 | * smart object along the canvas. See how it takes any child objects | ||
913 | * with it during its movement. The 'd' and 'i' keys will increase or | ||
914 | * decrease the smart object's size -- see how it affects the | ||
915 | * children's sizes, too. Finally, 'c' will change the color of the | ||
916 | * smart object's clipper (which is the exact internal clipper coming | ||
917 | * from a clipped smart object): | ||
918 | * @dontinclude evas-smart-object.c | ||
919 | * @skip d.clipper = | ||
920 | * @until .a); | ||
921 | * | ||
922 | * "Real life" examples of smart objects are Edje and Emotion objects: | ||
923 | * they both have independent libraries implementing their | ||
924 | * behavior. The full example follows. | ||
925 | * | ||
926 | * @include evas-smart-object.c | ||
927 | * @example evas-smart-object.c | ||
928 | */ | ||
929 | |||
930 | /** | ||
931 | * @page Example_Evas_Smart_Interfaces Evas object smart interfaces | ||
932 | * @dontinclude evas-smart-interface.c | ||
933 | * | ||
934 | * In this example, we illustrate how to create and handle Evas smart | ||