|
@ -1,91 +0,0 @@
|
||||||
*.o
|
|
||||||
*.lo
|
|
||||||
*.a
|
|
||||||
*.la
|
|
||||||
.deps
|
|
||||||
.libs
|
|
||||||
*~
|
|
||||||
*.gmo
|
|
||||||
*.pc
|
|
||||||
/configure
|
|
||||||
/config.status
|
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
/ABOUT-NLS
|
|
||||||
/README
|
|
||||||
/aclocal.m4
|
|
||||||
/autom4te.cache/
|
|
||||||
/config.cache
|
|
||||||
/config.cache-env
|
|
||||||
/config.guess
|
|
||||||
/config.h
|
|
||||||
/config.h.in
|
|
||||||
/config.log
|
|
||||||
/config.rpath
|
|
||||||
/config.sub
|
|
||||||
/depcomp
|
|
||||||
/doc/ecore.dox
|
|
||||||
/ecore.spec
|
|
||||||
/install-sh
|
|
||||||
/libtool
|
|
||||||
/ltmain.sh
|
|
||||||
/m4/codeset.m4
|
|
||||||
/m4/gettext.m4
|
|
||||||
/m4/glibc21.m4
|
|
||||||
/m4/iconv.m4
|
|
||||||
/m4/intdiv0.m4
|
|
||||||
/m4/intmax.m4
|
|
||||||
/m4/inttypes-pri.m4
|
|
||||||
/m4/inttypes.m4
|
|
||||||
/m4/inttypes_h.m4
|
|
||||||
/m4/isc-posix.m4
|
|
||||||
/m4/lcmessage.m4
|
|
||||||
/m4/lib-ld.m4
|
|
||||||
/m4/lib-link.m4
|
|
||||||
/m4/lib-prefix.m4
|
|
||||||
/m4/libtool.m4
|
|
||||||
/m4/longdouble.m4
|
|
||||||
/m4/longlong.m4
|
|
||||||
/m4/ltoptions.m4
|
|
||||||
/m4/ltsugar.m4
|
|
||||||
/m4/ltversion.m4
|
|
||||||
/m4/lt~obsolete.m4
|
|
||||||
/m4/nls.m4
|
|
||||||
/m4/po.m4
|
|
||||||
/m4/printf-posix.m4
|
|
||||||
/m4/progtest.m4
|
|
||||||
/m4/signed.m4
|
|
||||||
/m4/size_max.m4
|
|
||||||
/m4/stdint_h.m4
|
|
||||||
/m4/uintmax_t.m4
|
|
||||||
/m4/ulonglong.m4
|
|
||||||
/m4/wchar_t.m4
|
|
||||||
/m4/wint_t.m4
|
|
||||||
/m4/xsize.m4
|
|
||||||
/m4/glibc2.m4
|
|
||||||
/m4/intl.m4
|
|
||||||
/m4/intldir.m4
|
|
||||||
/m4/intlmacosx.m4
|
|
||||||
/m4/lock.m4
|
|
||||||
/m4/visibility.m4
|
|
||||||
/missing
|
|
||||||
/mkinstalldirs
|
|
||||||
/po/Makefile.in.in
|
|
||||||
/po/Makevars.template
|
|
||||||
/po/POTFILES
|
|
||||||
/po/Rules-quot
|
|
||||||
/po/boldquot.sed
|
|
||||||
/po/ecore.pot
|
|
||||||
/po/en@boldquot.header
|
|
||||||
/po/en@quot.header
|
|
||||||
/po/insert-header.sin
|
|
||||||
/po/quot.sed
|
|
||||||
/po/remove-potcdate.sed
|
|
||||||
/po/remove-potcdate.sin
|
|
||||||
/po/stamp-po
|
|
||||||
/stamp-h1
|
|
||||||
/doc/Doxyfile
|
|
||||||
/src/bin/ecore_test
|
|
||||||
/src/lib/ecore_x/xcb/ecore_xcb_keysym_table.h
|
|
||||||
/src/util/makekeys
|
|
||||||
INSTALL
|
|
|
@ -1,62 +0,0 @@
|
||||||
Myoungwoon Roy Kim(roy_kim) <myoungwoon.kim@samsung.com> <myoungwoon@gmail.com>
|
|
||||||
The Rasterman <raster@rasterman.com>
|
|
||||||
Tom Gilbert <tom@linuxbrit.co.uk>
|
|
||||||
Burra <burra@colorado.edu>
|
|
||||||
Chris Ross <chris@darkrock.co.uk>
|
|
||||||
Term <term@twistedpath.org>
|
|
||||||
Tilman Sauerbeck <tilman@code-monkey.de>
|
|
||||||
Ibukun Olumuyiwa <ibukun@computer.org>
|
|
||||||
Yuri <da2001@hotmail.ru>
|
|
||||||
Nicholas Curran <quasar@bigblue.net.au>
|
|
||||||
Howell Tam <pigeon@pigeond.net>
|
|
||||||
Nathan Ingersoll <rbdpngn@users.sourceforge.net>
|
|
||||||
Andrew Elcock <andy@elcock.org>
|
|
||||||
Kim Woelders <kim@woelders.dk>
|
|
||||||
Sebastian Dransfeld <sd@tango.flipp.net>
|
|
||||||
Simon Poole <simon.armlinux@themalago.net>
|
|
||||||
Jorge Luis Zapata Muga <jorgeluis.zapata@gmail.com>
|
|
||||||
dan sinclair <zero@everburning.com>
|
|
||||||
Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de>
|
|
||||||
David 'onefang' Seikel <onefang@gmail.com>
|
|
||||||
Hisham 'CodeWarrior' Mardam Bey <hisham@hisham.cc>
|
|
||||||
Brian 'rephorm' Mattern <rephorm@rephorm.com>
|
|
||||||
Tim Horton <hortont424@gmail.com>
|
|
||||||
Arnaud de Turckheim 'quarium' <quarium@gmail.com>
|
|
||||||
Matt Barclay <mbarclay@gmail.com>
|
|
||||||
Peter Wehrfritz <peter.wehrfritz@web.de>
|
|
||||||
Albin "Lutin" Tonnerre <albin.tonnerre@gmail.com>
|
|
||||||
Vincent Torri <vincent.torri@gmail.com>
|
|
||||||
Lars Munch <lars@segv.dk>
|
|
||||||
Andre Dieb <andre.dieb@gmail.com>
|
|
||||||
Mathieu Taillefumier <mathieu.taillefumier@free.fr>
|
|
||||||
Rui Miguel Silva Seabra <rms@1407.org>
|
|
||||||
Samsung Electronics <tbd>
|
|
||||||
Samsung SAIT <tbd>
|
|
||||||
Nicolas Aguirre <aguirre.nicolas@gmail.com>
|
|
||||||
Brett Nash <nash@nash.id.au>
|
|
||||||
Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
|
|
||||||
Leif Middelschulte <leif.middelschulte@gmail.com>
|
|
||||||
Mike McCormack <mikem@ring3k.org>
|
|
||||||
Sangho Park <gouache95@gmail.com>
|
|
||||||
Jihoon Kim <jihoon48.kim@samsung.com> <imfine98@gmail.com>
|
|
||||||
PnB <Poor.NewBie@gmail.com>
|
|
||||||
Daniel Juyung Seo <seojuyung2@gmail.com> <juyung.seo@samsung.com>
|
|
||||||
Christopher 'devilhorns' Michael <cpmichael1@comcast.net>
|
|
||||||
ChunEon Park (Hermet) <hermet@hermet.pe.kr>
|
|
||||||
xlopez@igalia.com
|
|
||||||
Rafael Antognolli <antognolli@profusion.mobi>
|
|
||||||
Kim Yunhan <spbear@gmail.com>
|
|
||||||
Youness Alaoui <kakaroto@kakaroto.homelinux.net>
|
|
||||||
Bluezery <ohpowel@gmail.com>
|
|
||||||
Doyoun Kang <wayofmine@gmail.com> <doyoun.kang@samsung.com>
|
|
||||||
Haifeng Deng <haifeng.deng@samsung.com>
|
|
||||||
Jérémy Zurcher <jeremy@asynk.ch>
|
|
||||||
Seong-ho Cho (DarkCircle) <darkcircle.0426@gmail.com>
|
|
||||||
Patryk Kaczmarek <patryk.k@samsung.com>
|
|
||||||
Daniel Willmann <d.willmann@samsung.com>
|
|
||||||
Michal Pakula vel Rutka <m.pakula@samsung.com>
|
|
||||||
Vikram Narayanan <vikram186@gmail.com>
|
|
||||||
Daniel Zaoui <daniel.zaoui@samsung.com>
|
|
||||||
Yakov Goldberg <yakov.g@samsung.com>
|
|
||||||
Eduardo Lima (Etrunko) <eblima@gmail.com>
|
|
||||||
Alexey Yakovenko <wakeroid@gmail.com>
|
|
|
@ -1,25 +0,0 @@
|
||||||
Copyright notice for Ecore:
|
|
||||||
|
|
||||||
Copyright (C) 2000-2011 Carsten Haitzler and various contributors (see AUTHORS)
|
|
||||||
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer.
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer in the
|
|
||||||
documentation and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
|
||||||
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
||||||
COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
|
||||||
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
||||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
||||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
||||||
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
@ -1,236 +0,0 @@
|
||||||
Installation Instructions
|
|
||||||
*************************
|
|
||||||
|
|
||||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
|
|
||||||
Software Foundation, Inc.
|
|
||||||
|
|
||||||
This file is free documentation; the Free Software Foundation gives
|
|
||||||
unlimited permission to copy, distribute and modify it.
|
|
||||||
|
|
||||||
Basic Installation
|
|
||||||
==================
|
|
||||||
|
|
||||||
These are generic installation instructions.
|
|
||||||
|
|
||||||
The `configure' shell script attempts to guess correct values for
|
|
||||||
various system-dependent variables used during compilation. It uses
|
|
||||||
those values to create a `Makefile' in each directory of the package.
|
|
||||||
It may also create one or more `.h' files containing system-dependent
|
|
||||||
definitions. Finally, it creates a shell script `config.status' that
|
|
||||||
you can run in the future to recreate the current configuration, and a
|
|
||||||
file `config.log' containing compiler output (useful mainly for
|
|
||||||
debugging `configure').
|
|
||||||
|
|
||||||
It can also use an optional file (typically called `config.cache'
|
|
||||||
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
|
||||||
the results of its tests to speed up reconfiguring. (Caching is
|
|
||||||
disabled by default to prevent problems with accidental use of stale
|
|
||||||
cache files.)
|
|
||||||
|
|
||||||
If you need to do unusual things to compile the package, please try
|
|
||||||
to figure out how `configure' could check whether to do them, and mail
|
|
||||||
diffs or instructions to the address given in the `README' so they can
|
|
||||||
be considered for the next release. If you are using the cache, and at
|
|
||||||
some point `config.cache' contains results you don't want to keep, you
|
|
||||||
may remove or edit it.
|
|
||||||
|
|
||||||
The file `configure.ac' (or `configure.in') is used to create
|
|
||||||
`configure' by a program called `autoconf'. You only need
|
|
||||||
`configure.ac' if you want to change it or regenerate `configure' using
|
|
||||||
a newer version of `autoconf'.
|
|
||||||
|
|
||||||
The simplest way to compile this package is:
|
|
||||||
|
|
||||||
1. `cd' to the directory containing the package's source code and type
|
|
||||||
`./configure' to configure the package for your system. If you're
|
|
||||||
using `csh' on an old version of System V, you might need to type
|
|
||||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
|
||||||
`configure' itself.
|
|
||||||
|
|
||||||
Running `configure' takes awhile. While running, it prints some
|
|
||||||
messages telling which features it is checking for.
|
|
||||||
|
|
||||||
2. Type `make' to compile the package.
|
|
||||||
|
|
||||||
3. Optionally, type `make check' to run any self-tests that come with
|
|
||||||
the package.
|
|
||||||
|
|
||||||
4. Type `make install' to install the programs and any data files and
|
|
||||||
documentation.
|
|
||||||
|
|
||||||
5. You can remove the program binaries and object files from the
|
|
||||||
source code directory by typing `make clean'. To also remove the
|
|
||||||
files that `configure' created (so you can compile the package for
|
|
||||||
a different kind of computer), type `make distclean'. There is
|
|
||||||
also a `make maintainer-clean' target, but that is intended mainly
|
|
||||||
for the package's developers. If you use it, you may have to get
|
|
||||||
all sorts of other programs in order to regenerate files that came
|
|
||||||
with the distribution.
|
|
||||||
|
|
||||||
Compilers and Options
|
|
||||||
=====================
|
|
||||||
|
|
||||||
Some systems require unusual options for compilation or linking that the
|
|
||||||
`configure' script does not know about. Run `./configure --help' for
|
|
||||||
details on some of the pertinent environment variables.
|
|
||||||
|
|
||||||
You can give `configure' initial values for configuration parameters
|
|
||||||
by setting variables in the command line or in the environment. Here
|
|
||||||
is an example:
|
|
||||||
|
|
||||||
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
|
|
||||||
|
|
||||||
*Note Defining Variables::, for more details.
|
|
||||||
|
|
||||||
Compiling For Multiple Architectures
|
|
||||||
====================================
|
|
||||||
|
|
||||||
You can compile the package for more than one kind of computer at the
|
|
||||||
same time, by placing the object files for each architecture in their
|
|
||||||
own directory. To do this, you must use a version of `make' that
|
|
||||||
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
|
||||||
directory where you want the object files and executables to go and run
|
|
||||||
the `configure' script. `configure' automatically checks for the
|
|
||||||
source code in the directory that `configure' is in and in `..'.
|
|
||||||
|
|
||||||
If you have to use a `make' that does not support the `VPATH'
|
|
||||||
variable, you have to compile the package for one architecture at a
|
|
||||||
time in the source code directory. After you have installed the
|
|
||||||
package for one architecture, use `make distclean' before reconfiguring
|
|
||||||
for another architecture.
|
|
||||||
|
|
||||||
Installation Names
|
|
||||||
==================
|
|
||||||
|
|
||||||
By default, `make install' installs the package's commands under
|
|
||||||
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
|
||||||
can specify an installation prefix other than `/usr/local' by giving
|
|
||||||
`configure' the option `--prefix=PREFIX'.
|
|
||||||
|
|
||||||
You can specify separate installation prefixes for
|
|
||||||
architecture-specific files and architecture-independent files. If you
|
|
||||||
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
|
|
||||||
PREFIX as the prefix for installing programs and libraries.
|
|
||||||
Documentation and other data files still use the regular prefix.
|
|
||||||
|
|
||||||
In addition, if you use an unusual directory layout you can give
|
|
||||||
options like `--bindir=DIR' to specify different values for particular
|
|
||||||
kinds of files. Run `configure --help' for a list of the directories
|
|
||||||
you can set and what kinds of files go in them.
|
|
||||||
|
|
||||||
If the package supports it, you can cause programs to be installed
|
|
||||||
with an extra prefix or suffix on their names by giving `configure' the
|
|
||||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
|
||||||
|
|
||||||
Optional Features
|
|
||||||
=================
|
|
||||||
|
|
||||||
Some packages pay attention to `--enable-FEATURE' options to
|
|
||||||
`configure', where FEATURE indicates an optional part of the package.
|
|
||||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
|
||||||
is something like `gnu-as' or `x' (for the X Window System). The
|
|
||||||
`README' should mention any `--enable-' and `--with-' options that the
|
|
||||||
package recognizes.
|
|
||||||
|
|
||||||
For packages that use the X Window System, `configure' can usually
|
|
||||||
find the X include and library files automatically, but if it doesn't,
|
|
||||||
you can use the `configure' options `--x-includes=DIR' and
|
|
||||||
`--x-libraries=DIR' to specify their locations.
|
|
||||||
|
|
||||||
Specifying the System Type
|
|
||||||
==========================
|
|
||||||
|
|
||||||
There may be some features `configure' cannot figure out automatically,
|
|
||||||
but needs to determine by the type of machine the package will run on.
|
|
||||||
Usually, assuming the package is built to be run on the _same_
|
|
||||||
architectures, `configure' can figure that out, but if it prints a
|
|
||||||
message saying it cannot guess the machine type, give it the
|
|
||||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
|
||||||
type, such as `sun4', or a canonical name which has the form:
|
|
||||||
|
|
||||||
CPU-COMPANY-SYSTEM
|
|
||||||
|
|
||||||
where SYSTEM can have one of these forms:
|
|
||||||
|
|
||||||
OS KERNEL-OS
|
|
||||||
|
|
||||||
See the file `config.sub' for the possible values of each field. If
|
|
||||||
`config.sub' isn't included in this package, then this package doesn't
|
|
||||||
need to know the machine type.
|
|
||||||
|
|
||||||
If you are _building_ compiler tools for cross-compiling, you should
|
|
||||||
use the option `--target=TYPE' to select the type of system they will
|
|
||||||
produce code for.
|
|
||||||
|
|
||||||
If you want to _use_ a cross compiler, that generates code for a
|
|
||||||
platform different from the build platform, you should specify the
|
|
||||||
"host" platform (i.e., that on which the generated programs will
|
|
||||||
eventually be run) with `--host=TYPE'.
|
|
||||||
|
|
||||||
Sharing Defaults
|
|
||||||
================
|
|
||||||
|
|
||||||
If you want to set default values for `configure' scripts to share, you
|
|
||||||
can create a site shell script called `config.site' that gives default
|
|
||||||
values for variables like `CC', `cache_file', and `prefix'.
|
|
||||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
|
||||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
|
||||||
`CONFIG_SITE' environment variable to the location of the site script.
|
|
||||||
A warning: not all `configure' scripts look for a site script.
|
|
||||||
|
|
||||||
Defining Variables
|
|
||||||
==================
|
|
||||||
|
|
||||||
Variables not defined in a site shell script can be set in the
|
|
||||||
environment passed to `configure'. However, some packages may run
|
|
||||||
configure again during the build, and the customized values of these
|
|
||||||
variables may be lost. In order to avoid this problem, you should set
|
|
||||||
them in the `configure' command line, using `VAR=value'. For example:
|
|
||||||
|
|
||||||
./configure CC=/usr/local2/bin/gcc
|
|
||||||
|
|
||||||
causes the specified `gcc' to be used as the C compiler (unless it is
|
|
||||||
overridden in the site shell script). Here is a another example:
|
|
||||||
|
|
||||||
/bin/bash ./configure CONFIG_SHELL=/bin/bash
|
|
||||||
|
|
||||||
Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
|
|
||||||
configuration-related scripts to be executed by `/bin/bash'.
|
|
||||||
|
|
||||||
`configure' Invocation
|
|
||||||
======================
|
|
||||||
|
|
||||||
`configure' recognizes the following options to control how it operates.
|
|
||||||
|
|
||||||
`--help'
|
|
||||||
`-h'
|
|
||||||
Print a summary of the options to `configure', and exit.
|
|
||||||
|
|
||||||
`--version'
|
|
||||||
`-V'
|
|
||||||
Print the version of Autoconf used to generate the `configure'
|
|
||||||
script, and exit.
|
|
||||||
|
|
||||||
`--cache-file=FILE'
|
|
||||||
Enable the cache: use and save the results of the tests in FILE,
|
|
||||||
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
|
||||||
disable caching.
|
|
||||||
|
|
||||||
`--config-cache'
|
|
||||||
`-C'
|
|
||||||
Alias for `--cache-file=config.cache'.
|
|
||||||
|
|
||||||
`--quiet'
|
|
||||||
`--silent'
|
|
||||||
`-q'
|
|
||||||
Do not print messages saying which checks are being made. To
|
|
||||||
suppress all normal output, redirect it to `/dev/null' (any error
|
|
||||||
messages will still be shown).
|
|
||||||
|
|
||||||
`--srcdir=DIR'
|
|
||||||
Look for the package's source code in directory DIR. Usually
|
|
||||||
`configure' can determine that directory automatically.
|
|
||||||
|
|
||||||
`configure' also accepts some other, not widely useful, options. Run
|
|
||||||
`configure --help' for more details.
|
|
||||||
|
|
|
@ -1,250 +0,0 @@
|
||||||
## Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I m4
|
|
||||||
|
|
||||||
SUBDIRS = doc src
|
|
||||||
|
|
||||||
if HAVE_PO
|
|
||||||
|
|
||||||
SUBDIRS += po
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
MAINTAINERCLEANFILES = \
|
|
||||||
ABOUT-NLS \
|
|
||||||
Makefile.in \
|
|
||||||
aclocal.m4 \
|
|
||||||
config.guess \
|
|
||||||
config.h.in \
|
|
||||||
config.h.in~ \
|
|
||||||
config.rpath \
|
|
||||||
config.sub \
|
|
||||||
configure \
|
|
||||||
depcomp \
|
|
||||||
install-sh \
|
|
||||||
ltmain.sh \
|
|
||||||
missing \
|
|
||||||
mkinstalldirs \
|
|
||||||
$(PACKAGE_TARNAME)-$(PACKAGE_VERSION).tar.gz \
|
|
||||||
$(PACKAGE_TARNAME)-$(PACKAGE_VERSION).tar.bz2 \
|
|
||||||
$(PACKAGE_TARNAME)-$(PACKAGE_VERSION)-doc.tar.bz2 \
|
|
||||||
m4/libtool.m4 \
|
|
||||||
m4/lt~obsolete.m4 \
|
|
||||||
m4/ltoptions.m4 \
|
|
||||||
m4/ltsugar.m4 \
|
|
||||||
m4/ltversion.m4 \
|
|
||||||
m4/codeset.m4 \
|
|
||||||
m4/gettext.m4* \
|
|
||||||
m4/glibc2*.m4 \
|
|
||||||
m4/iconv.m4 \
|
|
||||||
m4/intdiv0.m4 \
|
|
||||||
m4/intldir.m4 \
|
|
||||||
m4/intl.m4 \
|
|
||||||
m4/intlmacosx.m4 \
|
|
||||||
m4/intmax.m4* \
|
|
||||||
m4/inttypes_h.m4 \
|
|
||||||
m4/inttypes.m4 \
|
|
||||||
m4/inttypes-pri.m4 \
|
|
||||||
m4/isc-posix.m4 \
|
|
||||||
m4/lcmessage.m4 \
|
|
||||||
m4/lib-ld.m4* \
|
|
||||||
m4/lib-link.m4 \
|
|
||||||
m4/lib-prefix.m4* \
|
|
||||||
m4/lock.m4 \
|
|
||||||
m4/longdouble.m4* \
|
|
||||||
m4/longlong.m4* \
|
|
||||||
m4/nls.m4 \
|
|
||||||
m4/po.m4* \
|
|
||||||
m4/printf-posix.m4* \
|
|
||||||
m4/progtest.m4 \
|
|
||||||
m4/signed.m4 \
|
|
||||||
m4/size_max.m4* \
|
|
||||||
m4/stdint_h.m4 \
|
|
||||||
m4/uintmax_t.m4 \
|
|
||||||
m4/ulonglong.m4* \
|
|
||||||
m4/visibility.m4 \
|
|
||||||
m4/wchar_t.m4 \
|
|
||||||
m4/wint_t.m4* \
|
|
||||||
m4/xsize.m4*
|
|
||||||
|
|
||||||
if HAVE_PO
|
|
||||||
|
|
||||||
MAINTAINERCLEANFILES += \
|
|
||||||
po/boldquot.sed \
|
|
||||||
po/en@boldquot.header \
|
|
||||||
po/en@quot.header \
|
|
||||||
po/insert-header.sin \
|
|
||||||
po/Makefile.in.in* \
|
|
||||||
po/Makevars.template \
|
|
||||||
po/quot.sed \
|
|
||||||
po/remove-potcdate.sin \
|
|
||||||
po/Rules-quot*
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
bin_SCRIPTS =
|
|
||||||
|
|
||||||
EXTRA_DIST = \
|
|
||||||
AUTHORS \
|
|
||||||
COPYING \
|
|
||||||
autogen.sh \
|
|
||||||
ecore.supp \
|
|
||||||
ecore.pc.in \
|
|
||||||
ecore-con.pc.in \
|
|
||||||
ecore-config.pc.in \
|
|
||||||
ecore-directfb.pc.in\
|
|
||||||
ecore-evas.pc.in \
|
|
||||||
ecore-fb.pc.in \
|
|
||||||
ecore-file.pc.in \
|
|
||||||
ecore-imf.pc.in \
|
|
||||||
ecore-imf-evas.pc.in \
|
|
||||||
ecore-ipc.pc.in \
|
|
||||||
ecore-x.pc.in \
|
|
||||||
ecore-win32.pc.in \
|
|
||||||
ecore-sdl.pc.in \
|
|
||||||
ecore-cocoa.pc.in \
|
|
||||||
ecore-psl1ght.pc.in \
|
|
||||||
ecore-input.pc.in \
|
|
||||||
ecore-wince.pc.in \
|
|
||||||
ecore-wayland.pc.in \
|
|
||||||
ecore.spec.in \
|
|
||||||
ecore.spec \
|
|
||||||
m4/ac_abstract_socket.m4 \
|
|
||||||
m4/ac_attribute.m4 \
|
|
||||||
m4/check_x_extension.m4 \
|
|
||||||
m4/ecore_check_module.m4 \
|
|
||||||
m4/ecore_check_options.m4 \
|
|
||||||
m4/efl_doxygen.m4 \
|
|
||||||
m4/efl_path_max.m4 \
|
|
||||||
m4/efl_shm_open.m4 \
|
|
||||||
m4/efl_coverage.m4 \
|
|
||||||
m4/efl_tests.m4 \
|
|
||||||
m4/efl_threads.m4
|
|
||||||
|
|
||||||
|
|
||||||
pkgconfigdir = $(libdir)/pkgconfig
|
|
||||||
pkgconfig_DATA = ecore.pc
|
|
||||||
|
|
||||||
if BUILD_ECORE_CON
|
|
||||||
pkgconfig_DATA += ecore-con.pc
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_CONFIG
|
|
||||||
pkgconfig_DATA += ecore-config.pc
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_DIRECTFB
|
|
||||||
pkgconfig_DATA += ecore-directfb.pc
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_EVAS
|
|
||||||
pkgconfig_DATA += ecore-evas.pc
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_FB
|
|
||||||
pkgconfig_DATA += ecore-fb.pc
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_FILE
|
|
||||||
pkgconfig_DATA += ecore-file.pc
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_IMF
|
|
||||||
pkgconfig_DATA += ecore-imf.pc
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_IMF_EVAS
|
|
||||||
pkgconfig_DATA += ecore-imf-evas.pc
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_INPUT
|
|
||||||
pkgconfig_DATA += ecore-input.pc
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_INPUT_EVAS
|
|
||||||
pkgconfig_DATA += ecore-input-evas.pc
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_IPC
|
|
||||||
pkgconfig_DATA += ecore-ipc.pc
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_X
|
|
||||||
pkgconfig_DATA += ecore-x.pc
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_WIN32
|
|
||||||
pkgconfig_DATA += ecore-win32.pc
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_WINCE
|
|
||||||
pkgconfig_DATA += ecore-wince.pc
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_SDL
|
|
||||||
pkgconfig_DATA += ecore-sdl.pc
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_COCOA
|
|
||||||
pkgconfig_DATA += ecore-cocoa.pc
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_PSL1GHT
|
|
||||||
pkgconfig_DATA += ecore-psl1ght.pc
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_WAYLAND
|
|
||||||
pkgconfig_DATA += ecore-wayland.pc
|
|
||||||
endif
|
|
||||||
|
|
||||||
.PHONY: doc coverage
|
|
||||||
|
|
||||||
# Documentation
|
|
||||||
|
|
||||||
doc:
|
|
||||||
@echo "entering doc/"
|
|
||||||
make -C doc doc
|
|
||||||
|
|
||||||
# Unit tests
|
|
||||||
|
|
||||||
if EFL_ENABLE_TESTS
|
|
||||||
|
|
||||||
check-local:
|
|
||||||
@./src/tests/ecore_suite
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
check-local:
|
|
||||||
@echo "reconfigure with --enable-tests"
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Coverage report
|
|
||||||
|
|
||||||
if EFL_ENABLE_COVERAGE
|
|
||||||
lcov-reset:
|
|
||||||
@rm -rf $(top_builddir)/coverage
|
|
||||||
@find $(top_builddir) -name "*.gcda" -delete
|
|
||||||
@lcov --zerocounters --directory $(top_builddir)
|
|
||||||
|
|
||||||
lcov-report:
|
|
||||||
@mkdir $(top_builddir)/coverage
|
|
||||||
lcov --capture --compat-libtool --output-file $(top_builddir)/coverage/coverage.info --directory $(top_builddir)
|
|
||||||
lcov --remove $(top_builddir)/coverage/coverage.info '*.h' --output-file $(top_builddir)/coverage/coverage.cleaned.info
|
|
||||||
genhtml -t "$(PACKAGE_STRING)" -o $(top_builddir)/coverage/html $(top_builddir)/coverage/coverage.cleaned.info
|
|
||||||
@echo "Coverage Report at $(top_builddir)/coverage/html"
|
|
||||||
|
|
||||||
coverage:
|
|
||||||
@$(MAKE) lcov-reset
|
|
||||||
@$(MAKE) check
|
|
||||||
@$(MAKE) lcov-report
|
|
||||||
else
|
|
||||||
lcov-reset:
|
|
||||||
@echo "reconfigure with --enable-coverage"
|
|
||||||
|
|
||||||
lcov-report:
|
|
||||||
@echo "reconfigure with --enable-coverage"
|
|
||||||
|
|
||||||
coverage:
|
|
||||||
@echo "reconfigure with --enable-tests --enable-coverage"
|
|
||||||
endif
|
|
|
@ -1,40 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
rm -rf autom4te.cache
|
|
||||||
rm -f aclocal.m4 ltmain.sh
|
|
||||||
|
|
||||||
touch ABOUT-NLS
|
|
||||||
|
|
||||||
echo "Running autopoint..." ; autopoint -f || :
|
|
||||||
echo "Running aclocal..." ; aclocal $ACLOCAL_FLAGS -I m4 || exit 1
|
|
||||||
echo "Running autoheader..." ; autoheader || exit 1
|
|
||||||
echo "Running autoconf..." ; autoconf || exit 1
|
|
||||||
echo "Running libtoolize..." ; (libtoolize --copy --automake || glibtoolize --automake) || exit 1
|
|
||||||
echo "Running automake..." ; automake --add-missing --copy --gnu || exit 1
|
|
||||||
|
|
||||||
W=0
|
|
||||||
|
|
||||||
rm -f config.cache-env.tmp
|
|
||||||
echo "OLD_PARM=\"$@\"" >> config.cache-env.tmp
|
|
||||||
echo "OLD_CFLAGS=\"$CFLAGS\"" >> config.cache-env.tmp
|
|
||||||
echo "OLD_PATH=\"$PATH\"" >> config.cache-env.tmp
|
|
||||||
echo "OLD_PKG_CONFIG_PATH=\"$PKG_CONFIG_PATH\"" >> config.cache-env.tmp
|
|
||||||
echo "OLD_LDFLAGS=\"$LDFLAGS\"" >> config.cache-env.tmp
|
|
||||||
echo "OLD_CXXFLAGS=\"$CXXFLAGS\"" >> config.cache-env.tmp
|
|
||||||
|
|
||||||
cmp config.cache-env.tmp config.cache-env >> /dev/null
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
W=1;
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $W -ne 0 ]; then
|
|
||||||
echo "Cleaning configure cache...";
|
|
||||||
rm -f config.cache config.cache-env
|
|
||||||
mv config.cache-env.tmp config.cache-env
|
|
||||||
else
|
|
||||||
rm -f config.cache-env.tmp
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$NOCONFIGURE" ]; then
|
|
||||||
./configure -C "$@"
|
|
||||||
fi
|
|
|
@ -1,218 +0,0 @@
|
||||||
DOXYFILE_ENCODING = UTF-8
|
|
||||||
PROJECT_NAME = Ecore
|
|
||||||
PROJECT_NUMBER =
|
|
||||||
OUTPUT_DIRECTORY = .
|
|
||||||
CREATE_SUBDIRS = NO
|
|
||||||
OUTPUT_LANGUAGE = English
|
|
||||||
BRIEF_MEMBER_DESC = YES
|
|
||||||
REPEAT_BRIEF = YES
|
|
||||||
ABBREVIATE_BRIEF =
|
|
||||||
ALWAYS_DETAILED_SEC = NO
|
|
||||||
INLINE_INHERITED_MEMB = NO
|
|
||||||
FULL_PATH_NAMES = NO
|
|
||||||
STRIP_FROM_PATH =
|
|
||||||
STRIP_FROM_INC_PATH =
|
|
||||||
SHORT_NAMES = NO
|
|
||||||
JAVADOC_AUTOBRIEF = YES
|
|
||||||
QT_AUTOBRIEF = NO
|
|
||||||
MULTILINE_CPP_IS_BRIEF = NO
|
|
||||||
INHERIT_DOCS = YES
|
|
||||||
SEPARATE_MEMBER_PAGES = NO
|
|
||||||
TAB_SIZE = 2
|
|
||||||
ALIASES =
|
|
||||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
|
||||||
OPTIMIZE_OUTPUT_JAVA = NO
|
|
||||||
OPTIMIZE_FOR_FORTRAN = NO
|
|
||||||
OPTIMIZE_OUTPUT_VHDL = NO
|
|
||||||
EXTENSION_MAPPING =
|
|
||||||
BUILTIN_STL_SUPPORT = NO
|
|
||||||
CPP_CLI_SUPPORT = NO
|
|
||||||
SIP_SUPPORT = NO
|
|
||||||
IDL_PROPERTY_SUPPORT = YES
|
|
||||||
DISTRIBUTE_GROUP_DOC = NO
|
|
||||||
SUBGROUPING = YES
|
|
||||||
TYPEDEF_HIDES_STRUCT = NO
|
|
||||||
SYMBOL_CACHE_SIZE = 0
|
|
||||||
EXTRACT_ALL = NO
|
|
||||||
EXTRACT_PRIVATE = NO
|
|
||||||
EXTRACT_STATIC = NO
|
|
||||||
EXTRACT_LOCAL_CLASSES = NO
|
|
||||||
EXTRACT_LOCAL_METHODS = NO
|
|
||||||
EXTRACT_ANON_NSPACES = NO
|
|
||||||
HIDE_UNDOC_MEMBERS = YES
|
|
||||||
HIDE_UNDOC_CLASSES = YES
|
|
||||||
HIDE_FRIEND_COMPOUNDS = YES
|
|
||||||
HIDE_IN_BODY_DOCS = NO
|
|
||||||
INTERNAL_DOCS = NO
|
|
||||||
CASE_SENSE_NAMES = YES
|
|
||||||
HIDE_SCOPE_NAMES = NO
|
|
||||||
SHOW_INCLUDE_FILES = NO
|
|
||||||
FORCE_LOCAL_INCLUDES = NO
|
|
||||||
INLINE_INFO = YES
|
|
||||||
SORT_MEMBER_DOCS = YES
|
|
||||||
SORT_MEMBERS_CTORS_1ST = NO
|
|
||||||
SORT_GROUP_NAMES = NO
|
|
||||||
SORT_BY_SCOPE_NAME = NO
|
|
||||||
GENERATE_TODOLIST = YES
|
|
||||||
GENERATE_TESTLIST = YES
|
|
||||||
GENERATE_BUGLIST = YES
|
|
||||||
GENERATE_DEPRECATEDLIST= YES
|
|
||||||
ENABLED_SECTIONS =
|
|
||||||
MAX_INITIALIZER_LINES = 30
|
|
||||||
SHOW_USED_FILES = NO
|
|
||||||
SHOW_FILES = YES
|
|
||||||
SHOW_NAMESPACES = YES
|
|
||||||
FILE_VERSION_FILTER =
|
|
||||||
LAYOUT_FILE =
|
|
||||||
QUIET = YES
|
|
||||||
WARNINGS = YES
|
|
||||||
WARN_IF_UNDOCUMENTED = YES
|
|
||||||
WARN_IF_DOC_ERROR = YES
|
|
||||||
WARN_NO_PARAMDOC = YES
|
|
||||||
WARN_FORMAT = "$file:$line: $text"
|
|
||||||
WARN_LOGFILE =
|
|
||||||
INPUT = @builddir@/ecore.dox \
|
|
||||||
@top_srcdir@/src/lib \
|
|
||||||
@srcdir@/examples.dox
|
|
||||||
INPUT_ENCODING = UTF-8
|
|
||||||
FILE_PATTERNS =
|
|
||||||
RECURSIVE = YES
|
|
||||||
EXCLUDE = @top_srcdir@/src/lib/ecore_config/* @top_srcdir@/src/lib/ecore_x/xcb/*.c
|
|
||||||
EXCLUDE_SYMLINKS = NO
|
|
||||||
EXCLUDE_PATTERNS = ecore_config* Ecore_Config*
|
|
||||||
EXCLUDE_SYMBOLS = Ecore_Config*
|
|
||||||
EXAMPLE_PATH = @top_srcdir@/src/examples/
|
|
||||||
EXAMPLE_PATTERNS =
|
|
||||||
EXAMPLE_RECURSIVE = YES
|
|
||||||
IMAGE_PATH = @srcdir@/img
|
|
||||||
INPUT_FILTER =
|
|
||||||
FILTER_PATTERNS =
|
|
||||||
FILTER_SOURCE_FILES = NO
|
|
||||||
SOURCE_BROWSER = NO
|
|
||||||
INLINE_SOURCES = NO
|
|
||||||
STRIP_CODE_COMMENTS = YES
|
|
||||||
REFERENCED_BY_RELATION = YES
|
|
||||||
REFERENCES_RELATION = YES
|
|
||||||
REFERENCES_LINK_SOURCE = YES
|
|
||||||
USE_HTAGS = NO
|
|
||||||
VERBATIM_HEADERS = NO
|
|
||||||
ALPHABETICAL_INDEX = YES
|
|
||||||
COLS_IN_ALPHA_INDEX = 2
|
|
||||||
IGNORE_PREFIX = ecore_ _ecore_ Ecore_ _Ecore_ ECORE_ _ECORE_
|
|
||||||
GENERATE_HTML = YES
|
|
||||||
HTML_OUTPUT = html
|
|
||||||
HTML_FILE_EXTENSION = .html
|
|
||||||
HTML_HEADER = @srcdir@/head.html
|
|
||||||
HTML_FOOTER = @srcdir@/foot.html
|
|
||||||
HTML_STYLESHEET = @srcdir@/e.css
|
|
||||||
HTML_COLORSTYLE_HUE = 220
|
|
||||||
HTML_COLORSTYLE_SAT = 100
|
|
||||||
HTML_COLORSTYLE_GAMMA = 80
|
|
||||||
HTML_TIMESTAMP = YES
|
|
||||||
HTML_DYNAMIC_SECTIONS = NO
|
|
||||||
GENERATE_DOCSET = NO
|
|
||||||
DOCSET_FEEDNAME = "Doxygen generated docs"
|
|
||||||
DOCSET_BUNDLE_ID = org.doxygen.Project
|
|
||||||
DOCSET_PUBLISHER_ID = org.doxygen.Publisher
|
|
||||||
DOCSET_PUBLISHER_NAME = Publisher
|
|
||||||
GENERATE_HTMLHELP = NO
|
|
||||||
CHM_FILE =
|
|
||||||
HHC_LOCATION =
|
|
||||||
GENERATE_CHI = NO
|
|
||||||
CHM_INDEX_ENCODING =
|
|
||||||
BINARY_TOC = NO
|
|
||||||
TOC_EXPAND = NO
|
|
||||||
GENERATE_QHP = NO
|
|
||||||
QCH_FILE =
|
|
||||||
QHP_NAMESPACE = org.doxygen.Project
|
|
||||||
QHP_VIRTUAL_FOLDER = doc
|
|
||||||
QHP_CUST_FILTER_NAME =
|
|
||||||
QHP_CUST_FILTER_ATTRS =
|
|
||||||
QHP_SECT_FILTER_ATTRS =
|
|
||||||
QHG_LOCATION =
|
|
||||||
GENERATE_ECLIPSEHELP = NO
|
|
||||||
ECLIPSE_DOC_ID = org.doxygen.Project
|
|
||||||
DISABLE_INDEX = YES
|
|
||||||
ENUM_VALUES_PER_LINE = 1
|
|
||||||
GENERATE_TREEVIEW = NO
|
|
||||||
TREEVIEW_WIDTH = 250
|
|
||||||
EXT_LINKS_IN_WINDOW = NO
|
|
||||||
FORMULA_FONTSIZE = 10
|
|
||||||
FORMULA_TRANSPARENT = YES
|
|
||||||
SEARCHENGINE = NO
|
|
||||||
SERVER_BASED_SEARCH = NO
|
|
||||||
GENERATE_LATEX = YES
|
|
||||||
LATEX_OUTPUT = latex
|
|
||||||
LATEX_CMD_NAME = latex
|
|
||||||
MAKEINDEX_CMD_NAME = makeindex
|
|
||||||
COMPACT_LATEX = NO
|
|
||||||
PAPER_TYPE = a4wide
|
|
||||||
EXTRA_PACKAGES =
|
|
||||||
LATEX_HEADER =
|
|
||||||
PDF_HYPERLINKS = YES
|
|
||||||
USE_PDFLATEX = NO
|
|
||||||
LATEX_BATCHMODE = NO
|
|
||||||
LATEX_HIDE_INDICES = NO
|
|
||||||
LATEX_SOURCE_CODE = NO
|
|
||||||
GENERATE_RTF = NO
|
|
||||||
RTF_OUTPUT = rtf
|
|
||||||
COMPACT_RTF = NO
|
|
||||||
RTF_HYPERLINKS = NO
|
|
||||||
RTF_STYLESHEET_FILE =
|
|
||||||
RTF_EXTENSIONS_FILE =
|
|
||||||
GENERATE_MAN = YES
|
|
||||||
MAN_OUTPUT = man
|
|
||||||
MAN_EXTENSION = .3
|
|
||||||
MAN_LINKS = YES
|
|
||||||
GENERATE_XML = NO
|
|
||||||
XML_OUTPUT = xml
|
|
||||||
XML_SCHEMA =
|
|
||||||
XML_DTD =
|
|
||||||
XML_PROGRAMLISTING = YES
|
|
||||||
GENERATE_AUTOGEN_DEF = NO
|
|
||||||
GENERATE_PERLMOD = NO
|
|
||||||
PERLMOD_LATEX = NO
|
|
||||||
PERLMOD_PRETTY = YES
|
|
||||||
PERLMOD_MAKEVAR_PREFIX =
|
|
||||||
ENABLE_PREPROCESSING = YES
|
|
||||||
MACRO_EXPANSION = YES
|
|
||||||
EXPAND_ONLY_PREDEF = YES
|
|
||||||
SEARCH_INCLUDES = NO
|
|
||||||
INCLUDE_PATH =
|
|
||||||
INCLUDE_FILE_PATTERNS =
|
|
||||||
PREDEFINED = __UNUSED__=
|
|
||||||
EXPAND_AS_DEFINED =
|
|
||||||
SKIP_FUNCTION_MACROS = YES
|
|
||||||
TAGFILES =
|
|
||||||
GENERATE_TAGFILE =
|
|
||||||
ALLEXTERNALS = NO
|
|
||||||
EXTERNAL_GROUPS = YES
|
|
||||||
PERL_PATH = /usr/bin/perl
|
|
||||||
CLASS_DIAGRAMS = NO
|
|
||||||
MSCGEN_PATH =
|
|
||||||
HIDE_UNDOC_RELATIONS = YES
|
|
||||||
HAVE_DOT = NO
|
|
||||||
DOT_NUM_THREADS = 0
|
|
||||||
DOT_FONTNAME = FreeSans.ttf
|
|
||||||
DOT_FONTSIZE = 10
|
|
||||||
DOT_FONTPATH =
|
|
||||||
CLASS_GRAPH = NO
|
|
||||||
COLLABORATION_GRAPH = NO
|
|
||||||
GROUP_GRAPHS = YES
|
|
||||||
UML_LOOK = NO
|
|
||||||
TEMPLATE_RELATIONS = NO
|
|
||||||
INCLUDE_GRAPH = NO
|
|
||||||
INCLUDED_BY_GRAPH = NO
|
|
||||||
CALL_GRAPH = NO
|
|
||||||
CALLER_GRAPH = NO
|
|
||||||
GRAPHICAL_HIERARCHY = NO
|
|
||||||
DIRECTORY_GRAPH = YES
|
|
||||||
DOT_IMAGE_FORMAT = png
|
|
||||||
DOT_PATH =
|
|
||||||
DOTFILE_DIRS =
|
|
||||||
DOT_GRAPH_MAX_NODES = 50
|
|
||||||
MAX_DOT_GRAPH_DEPTH = 0
|
|
||||||
DOT_TRANSPARENT = NO
|
|
||||||
DOT_MULTI_TARGETS = NO
|
|
||||||
GENERATE_LEGEND = YES
|
|
||||||
DOT_CLEANUP = YES
|
|
|
@ -1,33 +0,0 @@
|
||||||
MAINTAINERCLEANFILES = Makefile.in ecore.dox
|
|
||||||
|
|
||||||
.PHONY: doc
|
|
||||||
|
|
||||||
PACKAGE_DOCNAME = $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)-doc
|
|
||||||
|
|
||||||
if EFL_BUILD_DOC
|
|
||||||
|
|
||||||
doc-clean:
|
|
||||||
rm -rf html/ latex/ man/ xml/ $(top_builddir)/$(PACKAGE_DOCNAME).tar*
|
|
||||||
|
|
||||||
doc: all doc-clean
|
|
||||||
$(efl_doxygen)
|
|
||||||
cp $(srcdir)/img/* html/
|
|
||||||
cp $(srcdir)/img/* latex/
|
|
||||||
rm -rf $(PACKAGE_DOCNAME).tar*
|
|
||||||
mkdir -p $(PACKAGE_DOCNAME)/doc
|
|
||||||
cp -R html/ latex/ man/ $(PACKAGE_DOCNAME)/doc
|
|
||||||
tar cf $(PACKAGE_DOCNAME).tar $(PACKAGE_DOCNAME)/
|
|
||||||
bzip2 -9 $(PACKAGE_DOCNAME).tar
|
|
||||||
rm -rf $(PACKAGE_DOCNAME)/
|
|
||||||
mv $(PACKAGE_DOCNAME).tar.bz2 $(top_builddir)
|
|
||||||
|
|
||||||
clean-local: doc-clean
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
doc:
|
|
||||||
@echo "Documentation not built. Run ./configure --help"
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
EXTRA_DIST = Doxyfile.in $(wildcard img/*.*) e.css head.html foot.html ecore.dox.in examples.dox
|
|
|
@ -1,19 +0,0 @@
|
||||||
|
|
||||||
<div id="push"></div>
|
|
||||||
</div> <!-- #content -->
|
|
||||||
</div> <!-- .layout -->
|
|
||||||
|
|
||||||
</div> <!-- #container -->
|
|
||||||
|
|
||||||
|
|
||||||
<div id="footer">
|
|
||||||
<table><tr>
|
|
||||||
<td>Samsung Electronics is supporting the EFL Documentation Project</td>
|
|
||||||
<td class="copyright">Copyright ©$year Enlightenment</td>
|
|
||||||
<td class="generated">Docs generated $datetime</td>
|
|
||||||
</tr></table>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,69 +0,0 @@
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>$title</title>
|
|
||||||
<meta http-equiv="content-type" content="text/html;charset=UTF-8">
|
|
||||||
<meta name="author" content="Andres Blanc" >
|
|
||||||
|
|
||||||
<link rel="icon" href="img/favicon.png" type="image/x-icon">
|
|
||||||
<link rel="shortcut icon" href="img/favicon.png" type="image/x-icon">
|
|
||||||
<link rel="icon" href="img/favicon.png" type="image/ico">
|
|
||||||
<link rel="shortcut icon" href="img/favicon.png" type="image/ico">
|
|
||||||
|
|
||||||
<link rel="stylesheet" type="text/css" href="e.css">
|
|
||||||
<link rel="stylesheet" type="text/css" href="edoxy.css">
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div id="container">
|
|
||||||
|
|
||||||
<div id="header">
|
|
||||||
<div class="layout">
|
|
||||||
|
|
||||||
<h1><span>Enlightenment</span></h1>
|
|
||||||
<h2><span>Beauty at your fingertips</span></h2>
|
|
||||||
|
|
||||||
<table cellspacing="0" cellpadding="0" width="100%"><tr>
|
|
||||||
<td id="header_logo">
|
|
||||||
<a href="http://www.enlightenment.org"></a>
|
|
||||||
</td>
|
|
||||||
<td id="header_menu">
|
|
||||||
<table cellspacing="0" cellpadding="0" align="right"><tr>
|
|
||||||
<td class="nav_passive"><a class="nav_passive" href="http://www.enlightenment.org/p.php?p=home">Home</a></td>
|
|
||||||
<td class="nav_passive"><a class="nav_passive" href="http://www.enlightenment.org/p.php?p=news">News</a></td>
|
|
||||||
<td class="nav_passive"><a class="nav_passive" href="http://www.enlightenment.org/p.php?p=about">About</a></td>
|
|
||||||
<td class="nav_passive"><a class="nav_passive" href="http://www.enlightenment.org/p.php?p=download">Download</a></td>
|
|
||||||
<td class="nav_passive"><a class="nav_passive" href="http://www.enlightenment.org/p.php?p=support">Support</a></td>
|
|
||||||
<td class="nav_passive"><a class="nav_passive" href="http://www.enlightenment.org/p.php?p=contribute">Contribute</a></td>
|
|
||||||
<td class="nav_passive"><a class="nav_passive" href="http://www.enlightenment.org/p.php?p=contact">Contact</a></td>
|
|
||||||
<td class="nav_passive"><a class="nav_passive" href="http://trac.enlightenment.org/e">Tracker</a></td>
|
|
||||||
<td class="nav_passive"><a class="nav_passive" href="http://www.enlightenment.org/p.php?p=docs">Docs</a></td>
|
|
||||||
</tr></table>
|
|
||||||
</td>
|
|
||||||
<td id="header_last"></td>
|
|
||||||
</tr></table>
|
|
||||||
|
|
||||||
<div class="doxytitle">
|
|
||||||
$projectname Documentation <small>at $date</small>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="menu-container">
|
|
||||||
<div class="submenu">
|
|
||||||
<ul class="current">
|
|
||||||
<li><a href="files.html">Files</a></li>
|
|
||||||
<li><a href="annotated.html">Data Structures</a></li>
|
|
||||||
<li><a href="globals.html">Globals</a></li>
|
|
||||||
<li><a href="modules.html">Modules</a></li>
|
|
||||||
<li><a href="pages.html">Related Pages</a></li>
|
|
||||||
<li class="current"><a href="index.html">Main Page</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="clear"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="content">
|
|
||||||
<div class="layout">
|
|
Before Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 17 KiB |
|
@ -1,566 +0,0 @@
|
||||||
%!PS-Adobe-3.0 EPSF-3.0
|
|
||||||
%%Creator: cairo 1.10.2 (http://cairographics.org)
|
|
||||||
%%CreationDate: Wed Jul 13 18:29:06 2011
|
|
||||||
%%Pages: 1
|
|
||||||
%%BoundingBox: 0 -1 546 666
|
|
||||||
%%DocumentData: Clean7Bit
|
|
||||||
%%LanguageLevel: 2
|
|
||||||
%%EndComments
|
|
||||||
%%BeginProlog
|
|
||||||
/cairo_eps_state save def
|
|
||||||
/dict_count countdictstack def
|
|
||||||
/op_count count 1 sub def
|
|
||||||
userdict begin
|
|
||||||
/q { gsave } bind def
|
|
||||||
/Q { grestore } bind def
|
|
||||||
/cm { 6 array astore concat } bind def
|
|
||||||
/w { setlinewidth } bind def
|
|
||||||
/J { setlinecap } bind def
|
|
||||||
/j { setlinejoin } bind def
|
|
||||||
/M { setmiterlimit } bind def
|
|
||||||
/d { setdash } bind def
|
|
||||||
/m { moveto } bind def
|
|
||||||
/l { lineto } bind def
|
|
||||||
/c { curveto } bind def
|
|
||||||
/h { closepath } bind def
|
|
||||||
/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
|
|
||||||
0 exch rlineto 0 rlineto closepath } bind def
|
|
||||||
/S { stroke } bind def
|
|
||||||
/f { fill } bind def
|
|
||||||
/f* { eofill } bind def
|
|
||||||
/n { newpath } bind def
|
|
||||||
/W { clip } bind def
|
|
||||||
/W* { eoclip } bind def
|
|
||||||
/BT { } bind def
|
|
||||||
/ET { } bind def
|
|
||||||
/pdfmark where { pop globaldict /?pdfmark /exec load put }
|
|
||||||
{ globaldict begin /?pdfmark /pop load def /pdfmark
|
|
||||||
/cleartomark load def end } ifelse
|
|
||||||
/BDC { mark 3 1 roll /BDC pdfmark } bind def
|
|
||||||
/EMC { mark /EMC pdfmark } bind def
|
|
||||||
/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
|
|
||||||
/Tj { show currentpoint cairo_store_point } bind def
|
|
||||||
/TJ {
|
|
||||||
{
|
|
||||||
dup
|
|
||||||
type /stringtype eq
|
|
||||||
{ show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
|
|
||||||
} forall
|
|
||||||
currentpoint cairo_store_point
|
|
||||||
} bind def
|
|
||||||
/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
|
|
||||||
cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
|
|
||||||
/Tf { pop /cairo_font exch def /cairo_font_matrix where
|
|
||||||
{ pop cairo_selectfont } if } bind def
|
|
||||||
/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
|
|
||||||
/cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
|
|
||||||
/cairo_font where { pop cairo_selectfont } if } bind def
|
|
||||||
/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
|
|
||||||
cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
|
|
||||||
/g { setgray } bind def
|
|
||||||
/rg { setrgbcolor } bind def
|
|
||||||
/d1 { setcachedevice } bind def
|
|
||||||
%%EndProlog
|
|
||||||
11 dict begin
|
|
||||||
/FontType 42 def
|
|
||||||
/FontName /DejaVuSans def
|
|
||||||
/PaintType 0 def
|
|
||||||
/FontMatrix [ 1 0 0 1 0 0 ] def
|
|
||||||
/FontBBox [ 0 0 0 0 ] def
|
|
||||||
/Encoding 256 array def
|
|
||||||
0 1 255 { Encoding exch /.notdef put } for
|
|
||||||
Encoding 1 /uni0053 put
|
|
||||||
Encoding 2 /uni0065 put
|
|
||||||
Encoding 3 /uni0072 put
|
|
||||||
Encoding 4 /uni0076 put
|
|
||||||
Encoding 5 /uni0043 put
|
|
||||||
Encoding 6 /uni006C put
|
|
||||||
Encoding 7 /uni0069 put
|
|
||||||
Encoding 8 /uni006E put
|
|
||||||
Encoding 9 /uni0074 put
|
|
||||||
Encoding 10 /uni0063 put
|
|
||||||
Encoding 11 /uni0073 put
|
|
||||||
Encoding 12 /uni0020 put
|
|
||||||
Encoding 13 /uni0045 put
|
|
||||||
Encoding 14 /uni004F put
|
|
||||||
Encoding 15 /uni0052 put
|
|
||||||
Encoding 16 /uni005F put
|
|
||||||
Encoding 17 /uni004E put
|
|
||||||
Encoding 18 /uni0056 put
|
|
||||||
Encoding 19 /uni0054 put
|
|
||||||
Encoding 20 /uni004C put
|
|
||||||
Encoding 21 /uni0049 put
|
|
||||||
Encoding 22 /uni0041 put
|
|
||||||
Encoding 23 /uni0044 put
|
|
||||||
Encoding 24 /uni006F put
|
|
||||||
Encoding 25 /uni0064 put
|
|
||||||
Encoding 26 /uni0028 put
|
|
||||||
Encoding 27 /uni0029 put
|
|
||||||
Encoding 28 /uni006D put
|
|
||||||
Encoding 29 /uni0075 put
|
|
||||||
Encoding 30 /uni0061 put
|
|
||||||
Encoding 31 /uni002D put
|
|
||||||
Encoding 32 /uni003E put
|
|
||||||
Encoding 33 /uni0067 put
|
|
||||||
Encoding 34 /uni0071 put
|
|
||||||
Encoding 35 /uni0062 put
|
|
||||||
Encoding 36 /uni0079 put
|
|
||||||
Encoding 37 /uni0068 put
|
|
||||||
Encoding 38 /uni006B put
|
|
||||||
Encoding 39 /uni003A put
|
|
||||||
/CharStrings 40 dict dup begin
|
|
||||||
/.notdef 0 def
|
|
||||||
/uni0053 1 def
|
|
||||||
/uni0065 2 def
|
|
||||||
/uni0072 3 def
|
|
||||||
/uni0076 4 def
|
|
||||||
/uni0043 5 def
|
|
||||||
/uni006C 6 def
|
|
||||||
/uni0069 7 def
|
|
||||||
/uni006E 8 def
|
|
||||||
/uni0074 9 def
|
|
||||||
/uni0063 10 def
|
|
||||||
/uni0073 11 def
|
|
||||||
/uni0020 12 def
|
|
||||||
/uni0045 13 def
|
|
||||||
/uni004F 14 def
|
|
||||||
/uni0052 15 def
|
|
||||||
/uni005F 16 def
|
|
||||||
/uni004E 17 def
|
|
||||||
/uni0056 18 def
|
|
||||||
/uni0054 19 def
|
|
||||||
/uni004C 20 def
|
|
||||||
/uni0049 21 def
|
|
||||||
/uni0041 22 def
|
|
||||||
/uni0044 23 def
|
|
||||||
/uni006F 24 def
|
|
||||||
/uni0064 25 def
|
|
||||||
/uni0028 26 def
|
|
||||||
/uni0029 27 def
|
|
||||||
/uni006D 28 def
|
|
||||||
/uni0075 29 def
|
|
||||||
/uni0061 30 def
|
|
||||||
/uni002D 31 def
|
|
||||||
/uni003E 32 def
|
|
||||||
/uni0067 33 def
|
|
||||||
/uni0071 34 def
|
|
||||||
/uni0062 35 def
|
|
||||||
/uni0079 36 def
|
|
||||||
/uni0068 37 def
|
|
||||||
/uni006B 38 def
|
|
||||||
/uni003A 39 def
|
|
||||||
end readonly def
|
|
||||||
/sfnts [
|
|
||||||
<00010000000a008000030020636d617001caf26c0000191c0000008e6376742000691d390000
|
|
||||||
19ac000001fe6670676d7134766a00001bac000000ab676c7966c667f237000000ac00001870
|
|
||||||
68656164f5a8919600001c5800000036686865610cb8067900001c9000000024686d7478b7d2
|
|
||||||
14dd00001cb4000000a06c6f63610001e44000001d54000000a46d6178700495067100001df8
|
|
||||||
00000020707265703b07f10000001e180000056800020066fe96046605a400030007001a400c
|
|
||||||
04fb0006fb0108057f0204002fc4d4ec310010d4ecd4ec301311211125211121660400fc7303
|
|
||||||
1bfce5fe96070ef8f272062900010087ffe304a205f00027007e403c0d0c020e0b021e1f1e08
|
|
||||||
0902070a021f1f1e420a0b1e1f0415010015a11494189511049500942591118c281e0a0b1f1b
|
|
||||||
0700221b190e2d071914222810dcc4ecfcece4111239393939310010e4f4e4ec10eef6ee10c6
|
|
||||||
111739304b535807100eed11173907100eed1117395922b20f2901015db61f292f294f29035d
|
|
||||||
01152e012322061514161f011e0115140421222627351e013332363534262f012e0135342433
|
|
||||||
3216044873cc5fa5b377a67ae2d7feddfee76aef807bec72adbc879a7be2ca0117f569da05a4
|
|
||||||
c53736807663651f192bd9b6d9e0302fd04546887e6e7c1f182dc0abc6e4260000020071ffe3
|
|
||||||
047f047b0014001b00704024001501098608880515a90105b90c01bb18b912b80c8c1c1b1502
|
|
||||||
081508004b02120f451c10fcecf4ecc4111239310010e4f4ece410ee10ee10f4ee1112393040
|
|
||||||
293f1d701da01dd01df01d053f003f013f023f153f1b052c072f082f092c0a6f006f016f026f
|
|
||||||
156f1b095d71015d0115211e0133323637150e01232000111000333200072e0123220607047f
|
|
||||||
fcb20ccdb76ac76263d06bfef4fec70129fce20107b802a5889ab90e025e5abec73434ae2a2c
|
|
||||||
0138010a01130143feddc497b4ae9e00000100ba0000034a047b001100304014060b0700110b
|
|
||||||
03870eb809bc070a06080008461210fcc4ec3231002fe4f4ecc4d4cc11123930b450139f1302
|
|
||||||
015d012e012322061511231133153e0133321617034a1f492c9ca7b9b93aba85132e1c03b412
|
|
||||||
11cbbefdb20460ae6663050500000001003d0000047f0460000600fb40270311040504021101
|
|
||||||
0205050402110302060006011100000642020300bf0506050302010504000710d44bb00a5458
|
|
||||||
b90000004038594bb014544bb015545b58b90000ffc03859c4173931002fec3239304b535807
|
|
||||||
1005ed071008ed071008ed071005ed592201408e48026a027b027f02860280029102a4020806
|
|
||||||
00060109030904150015011a031a0426002601290329042008350035013a033a043008460046
|
|
||||||
0149034904460548064008560056015903590450086600660169036904670568066008750074
|
|
||||||
017b037b0475057a068500850189038904890586069600960197029a03980498059706a805a7
|
|
||||||
06b008c008df08ff083e5d005d133309013301233dc3015e015ec3fe5cfa0460fc5403acfba0
|
|
||||||
000000010073ffe3052705f000190036401a0da10eae0a951101a100ae04951791118c1a0719
|
|
||||||
0d003014101a10fcec32ec310010e4f4ecf4ec10eef6ee30b40f1b1f1b02015d01152e012320
|
|
||||||
0011100021323637150e01232000111000213216052766e782ff00fef00110010082e7666aed
|
|
||||||
84feadfe7a0186015386ed0562d55f5efec7fed8fed9fec75e5fd34848019f01670168019f47
|
|
||||||
0000000100c100000179061400030022b7009702010800460410fcec31002fec30400d100540
|
|
||||||
05500560057005f00506015d13331123c1b8b80614f9ec00000200c100000179061400030007
|
|
||||||
002b400e06be04b100bc020501080400460810fc3cec3231002fe4fcec30400b100940095009
|
|
||||||
6009700905015d1333112311331523c1b8b8b8b80460fba00614e900000100ba00000464047b
|
|
||||||
001300364019030900030e0106870e11b80cbc0a010208004e0d09080b461410fcec32f4ec31
|
|
||||||
002f3ce4f4c4ec1112173930b46015cf1502015d0111231134262322061511231133153e0133
|
|
||||||
32160464b87c7c95acb9b942b375c1c602a4fd5c029e9f9ebea4fd870460ae6564ef00010037
|
|
||||||
000002f2059e0013003840190e05080f03a9001101bc08870a0b08090204000810120e461410
|
|
||||||
fc3cc4fc3cc432393931002fecf43cc4ec3211393930b2af1501015d01112115211114163b01
|
|
||||||
152322263511233533110177017bfe854b73bdbdd5a28787059efec28ffda0894e9a9fd20260
|
|
||||||
8f013e00000000010071ffe303e7047b0019003f401b00860188040e860d880ab91104b917b8
|
|
||||||
118c1a07120d004814451a10fce432ec310010e4f4ec10fef4ee10f5ee30400b0f1b101b801b
|
|
||||||
901ba01b05015d01152e0123220615141633323637150e0123220011100021321603e74e9d50
|
|
||||||
b3c6c6b3509d4e4da55dfdfed6012d010655a20435ac2b2be3cdcde32b2baa2424013e010e01
|
|
||||||
12013a2300000001006fffe303c7047b002700e7403c0d0c020e0b531f1e080902070a531f1f
|
|
||||||
1e420a0b1e1f041500860189041486158918b91104b925b8118c281e0a0b1f1b0700521b080e
|
|
||||||
07081422452810fcc4ecd4ece4111239393939310010e4f4ec10fef5ee10f5ee121739304b53
|
|
||||||
5807100eed111739070eed1117395922b2002701015d406d1c0a1c0b1c0c2e092c0a2c0b2c0c
|
|
||||||
3b093b0a3b0b3b0c0b200020012402280a280b2a132f142f152a16281e281f29202921242786
|
|
||||||
0a860b860c860d12000000010202060a060b030c030d030e030f03100319031a031b031c041d
|
|
||||||
09272f293f295f297f2980299029a029f029185d005d7101152e012322061514161f011e0115
|
|
||||||
140623222627351e013332363534262f012e01353436333216038b4ea85a898962943fc4a5f7
|
|
||||||
d85ac36c66c661828c65ab40ab98e0ce66b4043fae282854544049210e2a99899cb62323be35
|
|
||||||
3559514b50250f2495829eac1e000000000100c90000048b05d5000b002e4015069504029500
|
|
||||||
81089504ad0a05010907031c00040c10fcec32d4c4c431002fececf4ec10ee30b21f0d01015d
|
|
||||||
132115211121152111211521c903b0fd1a02c7fd3902f8fc3e05d5aafe46aafde3aa00000002
|
|
||||||
0073ffe305d905f0000b00170023401306951200950c91128c1809190f33031915101810fcec
|
|
||||||
fcec310010e4f4ec10ee300122001110003332001110002720001110002120001110000327dc
|
|
||||||
fefd0103dcdc0101feffdc013a0178fe88fec6fec5fe870179054cfeb8fee5fee6feb8014801
|
|
||||||
1a011b0148a4fe5bfe9efe9ffe5b01a40162016201a50000000200c90000055405d50013001c
|
|
||||||
00b14035090807030a061103040305110404034206040015030415950914950d810b04050603
|
|
||||||
1109001c160e050a191904113f140a1c0c041d10fcec32fcc4ec1117391139393931002f3cf4
|
|
||||||
ecd4ec123912391239304b5358071005ed071005ed1117395922b2401e01015d40427a130105
|
|
||||||
0005010502060307041500150114021603170425002501250226032706260726082609201e36
|
|
||||||
01360246014602680575047505771388068807980698071f5d005d011e01171323032e012b01
|
|
||||||
112311212016151406011133323635342623038d417b3ecdd9bf4a8b78dcca01c80100fc83fd
|
|
||||||
89fe9295959202bc16907efe68017f9662fd8905d5d6d88dba024ffdee87838385000001ffec
|
|
||||||
fe1d0414feac0003000fb500a90100020410c4c43100d4ec30011521350414fbd8feac8f8f00
|
|
||||||
0000000100c90000053305d500090079401e071101020102110607064207020300af08050601
|
|
||||||
07021c0436071c00040a10fcecfcec11393931002f3cec323939304b5358071004ed071004ed
|
|
||||||
5922b21f0b01015d40303602380748024707690266078002070601090615011a064601490657
|
|
||||||
01580665016906790685018a0695019a069f0b105d005d13210111331121011123c901100296
|
|
||||||
c4fef0fd6ac405d5fb1f04e1fa2b04e1fb1f000100100000056805d5000600b7402704110506
|
|
||||||
050311020306060503110403000100021101010042030401af0006040302000505010710d4c4
|
|
||||||
173931002fec3239304b5358071005ed071008ed071008ed071005ed5922b2500801015d4062
|
|
||||||
00032a03470447055a037d038303070600070208040906150114021a041a052a002601260229
|
|
||||||
042905250620083800330133023c043c05370648004501450249044905470659005606660269
|
|
||||||
0469057a0076017602790479057506800898009706295d005d21013309013301024afdc6d301
|
|
||||||
d901dad2fdc705d5fb1704e9fa2b0001fffa000004e905d50007004a400e0602950081040140
|
|
||||||
031c0040050810d4e4fce431002ff4ec3230014bb00a5458bd00080040000100080008ffc038
|
|
||||||
11373859401300091f00100110021f071009400970099f09095d03211521112311210604effd
|
|
||||||
eecbfdee05d5aafad5052b00000100c90000046a05d500050025400c0295008104011c033a00
|
|
||||||
040610fcecec31002fe4ec304009300750078003800404015d133311211521c9ca02d7fc5f05
|
|
||||||
d5fad5aa000100c90000019305d50003002eb700af02011c00040410fc4bb0105458b9000000
|
|
||||||
403859ec31002fec3001400d30054005500560058f059f05065d13331123c9caca05d5fa2b00
|
|
||||||
000200100000056805d50002000a00c2404100110100040504021105050401110a030a001102
|
|
||||||
0003030a0711050406110505040911030a08110a030a42000307950103810905090807060403
|
|
||||||
02010009050a0b10d4c4173931002f3ce4d4ec1239304b5358071005ed0705ed071005ed0705
|
|
||||||
ed071008ed071005ed071005ed071008ed5922b2200c01015d40420f010f020f070f080f0058
|
|
||||||
00760070008c000907010802060309041601190256015802500c67016802780176027c037204
|
|
||||||
7707780887018802800c980299039604175d005d090121013301230321032302bcfeee0225fe
|
|
||||||
7be50239d288fd5f88d5050efd1903aefa2b017ffe810000000200c9000005b005d500080011
|
|
||||||
002e4015009509810195100802100a0005190d32001c09041210fcecf4ec113939393931002f
|
|
||||||
ecf4ec30b2601301015d0111332000111000212521200011100029010193f40135011ffee1fe
|
|
||||||
cbfe42019f01b20196fe68fe50fe61052ffb770118012e012c0117a6fe97fe80fe7efe960000
|
|
||||||
00020071ffe30475047b000b0017004a401306b91200b90cb8128c1809120f51031215451810
|
|
||||||
fcecf4ec310010e4f4ec10ee3040233f197b007b067f077f087f097f0a7f0b7b0c7f0d7f0e7f
|
|
||||||
0f7f107f117b12a019f01911015d012206151416333236353426273200111000232200111000
|
|
||||||
027394acab9593acac93f00112feeef0f1feef011103dfe7c9c9e7e8c8c7e99cfec8feecfeed
|
|
||||||
fec70139011301140138000000020071ffe3045a06140010001c003840191ab9000e14b90508
|
|
||||||
8c0eb801970317040008024711120b451d10fcecf4ec323231002fece4f4c4ec10c4ee30b660
|
|
||||||
1e801ea01e03015d0111331123350e0123220211100033321601141633323635342623220603
|
|
||||||
a2b8b83ab17ccbff00ffcb7cb1fdc7a79292a8a89292a703b6025ef9eca86461014401080108
|
|
||||||
014461fe15cbe7e7cbcbe7e7000100b0fef2027b0612000d0037400f069800970e0d07000312
|
|
||||||
0600130a0e10dc4bb0135458b9000affc038594bb00f5458b9000a00403859e432ec11393931
|
|
||||||
0010fcec300106021514121723260235341237027b86828385a0969594970612e6fe3ee7e7fe
|
|
||||||
3be5eb01c6e0df01c4ec000100a4fef2026f0612000d001f400f079800970e0701000b120413
|
|
||||||
08000e10dc3cf4ec113939310010fcec301333161215140207233612353402a4a096959596a0
|
|
||||||
8583830612ecfe3cdfe0fe3aebe501c5e7e701c20000000100ba0000071d047b0022005a4026
|
|
||||||
061209180f00061d07150c871d2003b81bbc19100700110f0808065011080f501c18081a4623
|
|
||||||
10fcec32fcfcfcec11123931002f3c3ce4f43cc4ec32111217393040133024502470249024a0
|
|
||||||
24a024bf24df24ff2409015d013e013332161511231134262322061511231134262322061511
|
|
||||||
231133153e01333216042945c082afbeb972758fa6b972778da6b9b93fb0797aab03897c76f5
|
|
||||||
e2fd5c029ea19cbea4fd87029ea29bbfa3fd870460ae67627c000000000200aeffe30458047b
|
|
||||||
00130014003b401c030900030e0106870e118c0a01bc14b80c0d0908140b4e020800461510fc
|
|
||||||
ecf439ec3231002fe4e432f4c4ec1112173930b46f15c01502015d1311331114163332363511
|
|
||||||
331123350e0123222601aeb87c7c95adb8b843b175c1c801cf01ba02a6fd619f9fbea4027bfb
|
|
||||||
a0ac6663f003a8000002007bffe3042d047b000a002500bc4027191f0b17090e00a91706b90e
|
|
||||||
1120861fba1cb923b8118c170c001703180d09080b1f030814452610fcecccd4ec3232113939
|
|
||||||
31002fc4e4f4fcf4ec10c6ee10ee11391139123930406e301d301e301f3020302130223f2740
|
|
||||||
1d401e401f402040214022501d501e501f50205021502250277027851d871e871f8720872185
|
|
||||||
229027a027f0271e301e301f30203021401e401f40204021501e501f50205021601e601f6020
|
|
||||||
6021701e701f70207021801e801f80208021185d015d0122061514163332363d01371123350e
|
|
||||||
01232226353436332135342623220607353e0133321602bedfac816f99b9b8b83fbc88accbfd
|
|
||||||
fb0102a79760b65465be5af3f00233667b6273d9b4294cfd81aa6661c1a2bdc0127f8b2e2eaa
|
|
||||||
2727fc000001006401df027f028300030011b6009c020401000410dccc310010d4ec30132115
|
|
||||||
2164021bfde50283a400000100d9005e05db04a60006004f402b069c0006030403059c040403
|
|
||||||
009c010201069c05060202014206050302000504a801a7070602240400230710fc3cec393100
|
|
||||||
10f4ec1739304b5358071008ed071004ed071004ed071008ed592213350115013501d90502fa
|
|
||||||
fe040603f0b6fe2fa6fe2fb6016d000000020071fe56045a047b000b0028004a4023190c1d09
|
|
||||||
12861316b90f03b92623b827bc09b90fbd1a1d261900080c4706121220452910fcc4ecf4ec32
|
|
||||||
3231002fc4e4ece4f4c4ec10fed5ee1112393930b6602a802aa02a03015d0134262322061514
|
|
||||||
1633323617100221222627351e013332363d010e0123220211101233321617353303a2a59594
|
|
||||||
a5a59495a5b8fefefa61ac51519e52b5b439b27ccefcfcce7cb239b8023dc8dcdcc8c7dcdceb
|
|
||||||
fee2fee91d1eb32c2abdbf5b6362013a01030104013a6263aa0000020071fe56045a047b000b
|
|
||||||
001c003e401b03b90c0f09b91815b80f8c1bbd19bc1d180c06081a47001212451d10fcecf4ec
|
|
||||||
3232310010e4e4e4f4c4ec10c6ee304009601e801ea01ee01e04015d01141633323635342623
|
|
||||||
2206010e012322021110003332161735331123012fa79292a8a89292a702733ab17ccbff00ff
|
|
||||||
cb7cb13ab8b8022fcbe7e7cbcbe7e7fdae646101440108010801446164aaf9f60000000200ba
|
|
||||||
ffe304a40614000b001c0038401903b90c0f09b918158c0fb81b971900121247180c06081a46
|
|
||||||
1d10fcec3232f4ec31002fece4f4c4ec10c6ee30b6601e801ea01e03015d0134262322061514
|
|
||||||
16333236013e01333200111002232226271523113303e5a79292a7a79292a7fd8e3ab17bcc00
|
|
||||||
ffffcc7bb13ab9b9022fcbe7e7cbcbe7e702526461febcfef8fef8febc6164a806140001003d
|
|
||||||
fe56047f0460000f018b40430708020911000f0a110b0a00000f0e110f000f0d110c0d00000f
|
|
||||||
0d110e0d0a0b0a0c110b0b0a420d0b0910000b058703bd0e0bbc100e0d0c0a09060300080f04
|
|
||||||
0f0b1010d44bb00a544bb008545b58b9000b004038594bb0145458b9000bffc03859c4c41117
|
|
||||||
39310010e432f4ec113911391239304b5358071005ed071008ed071008ed071005ed071008ed
|
|
||||||
0705ed173259220140f0060005080609030d160a170d100d230d350d490a4f0a4e0d5a095a0a
|
|
||||||
6a0a870d800d930d120a000a09060b050c0b0e0b0f1701150210041005170a140b140c1a0e1a
|
|
||||||
0f2700240124022004200529082809250a240b240c270d2a0e2a0f2011370035013502300430
|
|
||||||
05380a360b360c380d390e390f30114100400140024003400440054006400740084209450a47
|
|
||||||
0d490e490f40115400510151025503500450055606550756085709570a550b550c590e590f50
|
|
||||||
1166016602680a690e690f60117b08780e780f89008a09850b850c890d890e890f9909950b95
|
|
||||||
0c9a0e9a0fa40ba40cab0eab0fb011cf11df11ff11655d005d050e012b01353332363f010133
|
|
||||||
09013302934e947c936c4c543321fe3bc3015e015ec368c87a9a488654044efc94036c000000
|
|
||||||
000100ba000004640614001300344019030900030e0106870e11b80c970a010208004e0d0908
|
|
||||||
0b461410fcec32f4ec31002f3cecf4c4ec1112173930b2601501015d01112311342623220615
|
|
||||||
11231133113e013332160464b87c7c95acb9b942b375c1c602a4fd5c029e9f9ebea4fd870614
|
|
||||||
fd9e6564ef00000100ba0000049c0614000a00bc402908110506050711060605031104050402
|
|
||||||
11050504420805020303bc009709060501040608010800460b10fcec32d4c4113931002f3cec
|
|
||||||
e41739304b5358071004ed071005ed071005ed071004ed5922b2100c01015d405f04020a0816
|
|
||||||
02270229052b0856026602670873027705820289058e08930296059708a3021209050906020b
|
|
||||||
030a072803270428052b062b07400c6803600c8903850489058d068f079a039707aa03a705b6
|
|
||||||
07c507d607f703f003f704f0041a5d71005d1333110133090123011123bab90225ebfdae026b
|
|
||||||
f0fdc7b90614fc6901e3fdf4fdac0223fddd000200f0000001c3042300030007001c400e0683
|
|
||||||
04a60083020501030400180810fc3cec3231002fecf4ec303733152311331523f0d3d3d3d3fe
|
|
||||||
fe0423fe00000000000200030000000000140001000000000034000400200000000400040001
|
|
||||||
0000f027ffff0000f000ffff10000001000000000006005a0000000000280000000100020003
|
|
||||||
000400050006000700080009000a000b000c000d000e000f0010001100120013001400150016
|
|
||||||
001700180019001a001b001c001d001e001f0020002100220023002400250026002700000135
|
|
||||||
00b800cb00cb00c100aa009c01a600b800660000007100cb00a002b20085007500b800c301cb
|
|
||||||
0189022d00cb00a600f000d300aa008700cb03aa0400014a003300cb000000d9050200f40154
|
|
||||||
00b4009c01390114013907060400044e04b4045204b804e704cd0037047304cd046004730133
|
|
||||||
03a2055605a60556053903c5021200c9001f00b801df007300ba03e9033303bc0444040e00df
|
|
||||||
03cd03aa00e503aa0404000000cb008f00a4007b00b80014016f007f027b0252008f00c705cd
|
|
||||||
009a009a006f00cb00cd019e01d300f000ba018300d5009803040248009e01d500c100cb00f6
|
|
||||||
00830354027f00000333026600d300c700a400cd008f009a0073040005d5010a00fe022b00a4
|
|
||||||
00b4009c00000062009c0000001d032d05d505d505d505f0007f007b005400a406b806140723
|
|
||||||
01d300b800cb00a601c301ec069300a000d3035c037103db0185042304a80448008f01390114
|
|
||||||
01390360008f05d5019a0614072306660179046004600460047b009c00000277046001aa00e9
|
|
||||||
04600762007b00c5007f027b000000b4025205cd006600bc00660077061000cd013b01850389
|
|
||||||
008f007b0000001d00cd074a042f009c009c0000077d006f0000006f0335006a006f007b00ae
|
|
||||||
00b2002d0396008f027b00f600830354063705f6008f009c04e10266008f018d02f600cd0344
|
|
||||||
0029006604ee00730000140000960000b707060504030201002c2010b002254964b040515820
|
|
||||||
c859212d2cb002254964b040515820c859212d2c20100720b00050b00d7920b8ffff5058041b
|
|
||||||
0559b0051cb0032508b0042523e120b00050b00d7920b8ffff5058041b0559b0051cb0032508
|
|
||||||
e12d2c4b505820b0fd454459212d2cb002254560442d2c4b5358b00225b0022545445921212d
|
|
||||||
2c45442d2cb00225b0022549b00525b005254960b0206368208a108a233a8a10653a2d000001
|
|
||||||
0000000251eb321e59865f0f3cf5001f080000000000c896fa5500000000c896fa55f7d6fcae
|
|
||||||
0d72095500000008000000010000000000010000076dfe1d00000de2f7d6fa510d7200010000
|
|
||||||
000000000000000000000000002804cd00660514008704ec0071034a00ba04bc003d05960073
|
|
||||||
023900c1023900c1051200ba0323003704660071042b006f028b0000050e00c9064c0073058f
|
|
||||||
00c90400ffec05fc00c90579001004e3fffa047500c9025c00c905790010062900c904e50071
|
|
||||||
05140071031f00b0031f00a407cb00ba051200ae04e7007b02e3006406b400d9051400710514
|
|
||||||
0071051400ba04bc003d051200ba04a200ba02b200f000000000000000440000013c00000210
|
|
||||||
00000280000003a40000043c00000478000004c800000540000005bc00000654000007b40000
|
|
||||||
07b400000814000008a0000009b4000009e000000a8800000b6800000bd800000c1c00000c64
|
|
||||||
00000d6000000de000000e8400000f1c00000f8c00000fe4000010a80000112c000012580000
|
|
||||||
1284000012fc000013c400001464000014fc000016c800001740000018300000187000010000
|
|
||||||
00280354002b0068000c000200100099000800000415021600080004b8028040fffbfe03fa14
|
|
||||||
03f92503f83203f79603f60e03f5fe03f4fe03f32503f20e03f19603f02503ef8a4105effe03
|
|
||||||
ee9603ed9603ecfa03ebfa03eafe03e93a03e84203e7fe03e63203e5e45305e59603e48a4105
|
|
||||||
e45303e3e22f05e3fa03e22f03e1fe03e0fe03df3203de1403dd9603dcfe03db1203da7d03d9
|
|
||||||
bb03d8fe03d68a4105d67d03d5d44705d57d03d44703d3d21b05d3fe03d21b03d1fe03d0fe03
|
|
||||||
cffe03cefe03cd9603cccb1e05ccfe03cb1e03ca3203c9fe03c6851105c61c03c51603c4fe03
|
|
||||||
c3fe03c2fe03c1fe03c0fe03bffe03befe03bdfe03bcfe03bbfe03ba1103b9862505b9fe03b8
|
|
||||||
b7bb05b8fe03b7b65d05b7bb03b78004b6b52505b65d40ff03b64004b52503b4fe03b39603b2
|
|
||||||
fe03b1fe03b0fe03affe03ae6403ad0e03acab2505ac6403abaa1205ab2503aa1203a98a4105
|
|
||||||
a9fa03a8fe03a7fe03a6fe03a51203a4fe03a3a20e05a33203a20e03a16403a08a4105a09603
|
|
||||||
9ffe039e9d0c059efe039d0c039c9b19059c64039b9a10059b19039a1003990a0398fe039796
|
|
||||||
0d0597fe03960d03958a410595960394930e05942803930e0392fa039190bb0591fe03908f5d
|
|
||||||
0590bb039080048f8e25058f5d038f40048e25038dfe038c8b2e058cfe038b2e038a8625058a
|
|
||||||
410389880b05891403880b03878625058764038685110586250385110384fe038382110583fe
|
|
||||||
0382110381fe0380fe037ffe0340ff7e7d7d057efe037d7d037c64037b5415057b25037afe03
|
|
||||||
79fe03780e03770c03760a0375fe0374fa0373fa0372fa0371fa0370fe036ffe036efe036c21
|
|
||||||
036bfe036a1142056a530369fe03687d036711420566fe0365fe0364fe0363fe0362fe03613a
|
|
||||||
0360fa035e0c035dfe035bfe035afe0359580a0559fa03580a035716190557320356fe035554
|
|
||||||
150555420354150353011005531803521403514a130551fe03500b034ffe034e4d10054efe03
|
|
||||||
4d10034cfe034b4a13054bfe034a4910054a1303491d0d05491003480d0347fe034696034596
|
|
||||||
0344fe0343022d0543fa0342bb03414b0340fe033ffe033e3d12053e14033d3c0f053d12033c
|
|
||||||
3b0d053c40ff0f033b0d033afe0339fe033837140538fa033736100537140336350b05361003
|
|
||||||
350b03341e03330d0332310b0532fe03310b03302f0b05300d032f0b032e2d09052e10032d09
|
|
||||||
032c32032b2a25052b64032a2912052a25032912032827250528410327250326250b05260f03
|
|
||||||
250b0324fe0323fe03220f03210110052112032064031ffa031e1d0d051e64031d0d031c1142
|
|
||||||
051cfe031bfa031a42031911420519fe031864031716190517fe031601100516190315fe0314
|
|
||||||
fe0313fe031211420512fe0311022d05114203107d030f64030efe030d0c16050dfe030c0110
|
|
||||||
050c16030bfe030a100309fe0308022d0508fe030714030664030401100504fe03401503022d
|
|
||||||
0503fe0302011005022d0301100300fe0301b80164858d012b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b00
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b2b2b1d00>
|
|
||||||
] def
|
|
||||||
/f-0-0 currentdict end definefont pop
|
|
||||||
%%Page: 1 1
|
|
||||||
%%BeginPageSetup
|
|
||||||
%%PageBoundingBox: 0 -1 546 666
|
|
||||||
%%EndPageSetup
|
|
||||||
q 0 -1 546 667 rectclip q
|
|
||||||
0 665.925 546 -666 re W n
|
|
||||||
0 g
|
|
||||||
0.663875 w
|
|
||||||
0 J
|
|
||||||
0 j
|
|
||||||
[] 0.0 d
|
|
||||||
4 M q 1 0 0 -1 0 665.924988 cm
|
|
||||||
0.332 0.91 92.867 57.141 re S Q
|
|
||||||
BT
|
|
||||||
16 0 0 16 20.902991 631.872559 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
<010203040203>Tj
|
|
||||||
ET
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
452.164 0.34 92.867 57.141 re S Q
|
|
||||||
BT
|
|
||||||
16 0 0 16 472.736133 632.443994 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
<050607020809>Tj
|
|
||||||
ET
|
|
||||||
1.029478 w
|
|
||||||
[ 4.117912 4.117912] 0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
41.453 63.719 m 41.453 665.922 l S Q
|
|
||||||
[ 4.117912 4.117912] 0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
500.469 61.043 m 500.469 663.246 l S Q
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 47.919678 528.919275 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<03>21<020a>-1<020704020b0c>-1<0d>-1<05>-1<0e0f0d>-1<1005>-1<0e11100d>-1<12
|
|
||||||
0d>-1<11131005>-1<14150d>-1<1113101617>1<17>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 44.687207 414.165955 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<020a>-1<18>1<03>20<02100a>-1<18>1<08>-1<100a>-1<0607>1<0208>-1<09>-1<10
|
|
||||||
0b0208>-1<191a>-1<1b>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 46.65733 249.188416 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<03>21<020a>-1<020704020b0c>-1<0d>-1<05>-1<0e0f0d>-1<1005>-1<0e11100d>-1<12
|
|
||||||
0d>-1<11131005>-1<14150d>-1<11131017>18<16>78<13>78<16>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
9.6 0 0 9.6 205.503491 441.642078 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0a>-1<18>1<1c>-1<1d>-1<08>-1<07>1<0a>-1<1e>-1<090718>1<08>-1<0c>-1<0b
|
|
||||||
0203>-1<040203>-1<0c>-1<1f200c>-1<0a>-1<06>1<070208>-1<09>]TJ
|
|
||||||
ET
|
|
||||||
0.8 w
|
|
||||||
[] 0.0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
43.879 280.043 m 493.195 280.043 l S Q
|
|
||||||
485.195 385.882 m 481.996 382.683 l 493.195 385.882 l 481.996 389.081 l
|
|
||||||
h
|
|
||||||
485.195 385.882 m f*
|
|
||||||
0.8 w
|
|
||||||
q -1 0 0 1 0 665.924988 cm
|
|
||||||
-485.195 -280.043 m -481.996 -283.242 l -493.195 -280.043 l -481.996
|
|
||||||
-276.844 l h
|
|
||||||
-485.195 -280.043 m S Q
|
|
||||||
0.701961 g
|
|
||||||
0.8 w
|
|
||||||
[ 1.6 3.2] 0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
44.688 81.246 451.738 75.961 re S Q
|
|
||||||
0 g
|
|
||||||
BT
|
|
||||||
9.6 0 0 9.6 205.503491 590.33656 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0a>-1<06>1<070208>-1<090c>-1<0a>-1<18>1<08>-1<08>-1<020a>-1<09>-1<07>1<08>-1<21
|
|
||||||
0c>-1<18>1<08>-1<0c>-1<0b0203>-1<040203>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
9.6 0 0 9.6 207.119751 293.639929 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0a>-1<18>1<1c>-1<1d>-1<08>-1<07>1<0a>-1<1e>-1<090718>1<08>-1<0c>-1<0a>-1<06>1<07
|
|
||||||
0208>-1<090c>-1<1f200c>-1<0b0203>-1<040203>]TJ
|
|
||||||
ET
|
|
||||||
0.800568 w
|
|
||||||
[] 0.0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
494.324 441.785 m 44.367 441.785 l S Q
|
|
||||||
52.375 224.14 m 55.574 227.343 l 44.367 224.14 l 55.574 220.941 l h
|
|
||||||
52.375 224.14 m f*
|
|
||||||
0.800568 w
|
|
||||||
q 1 -0.000000000000000122 -0.000000000000000122 -1 0 665.924988 cm
|
|
||||||
52.375 441.785 m 55.574 438.582 l 44.367 441.785 l 55.574 444.984 l h
|
|
||||||
52.375 441.785 m S Q
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 46.506689 86.755847 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<03>21<020a>-1<020704020b0c>-1<0d>-1<05>-1<0e0f0d>-1<1005>-1<0e11100d>-1<12
|
|
||||||
0d>-1<11131005>-1<14150d>-1<111310170d>-1<14>]TJ
|
|
||||||
ET
|
|
||||||
0.701961 g
|
|
||||||
0.8 w
|
|
||||||
[ 1.6 3.2] 0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
44.281 227.516 451.742 75.965 re S Q
|
|
||||||
[ 1.6 3.2] 0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
43.477 375.402 451.738 75.961 re S Q
|
|
||||||
[ 1.6 3.2] 0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
43.477 531.371 451.738 75.961 re S Q
|
|
||||||
0 g
|
|
||||||
BT
|
|
||||||
9.6 0 0 9.6 233.439209 138.249939 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0a>-1<06>1<070208>-1<090c>-1<1907>1<0b>-1<0a>-1<18>1<08>-1<08>-1<020a>-1<09>-1<07>1<18
|
|
||||||
08>]TJ
|
|
||||||
ET
|
|
||||||
0.8 g
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 319.679053 553.059363 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0a>-1<06>1<070208>-1<090c>-1<03>21<02221d>-1<020b>-1<090b>-1<0c0a>-1<18
|
|
||||||
08>-1<08>-1<020a>-1<090718>1<08>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 267.129076 396.28368 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0a>-1<06>1<070208>-1<090c>-1<03>21<020a>-1<020704020b0c>-1<191e09>-1<1e
|
|
||||||
0c>-1<0b0208>-1<09>-1<0c23240c>-1<0b0203>-1<040203>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 293.462207 265.367908 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0a>-1<06>1<070208>-1<090c>-1<0b0208>-1<190b>-1<0c191e>-1<091e>-1<0c09>-1<18>1<0c>-1<09
|
|
||||||
25>-1<020c>-1<0b0203>-1<040203>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 308.687842 103.743494 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0a>-1<06>1<070208>-1<090c>-1<0a>-1<06>1<180b020b>-1<0c09>-1<25>-1<02
|
|
||||||
0c0a>-1<1808>-1<08>-1<020a>-1<090718>1<08>]TJ
|
|
||||||
ET
|
|
||||||
0 g
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 47.719445 513.461366 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0a>-1<1e0606>1<231e>-1<0a>-1<26>-1<0c0a>-1<1e>-1<06>1<06021927>-1<0c
|
|
||||||
101e>-1<19191a1b>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 46.103198 232.2349 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0a>-1<1e0606>1<231e>-1<0a>-1<26>-1<0c0a>-1<1e>-1<06>1<06021927>-1<0c
|
|
||||||
10191e>-1<091e>-1<1a1b>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 46.911322 69.80238 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0a>-1<1e0606>1<231e>-1<0a>-1<26>-1<0c0a>-1<1e>-1<06>1<06021927>-1<0c
|
|
||||||
101902061a1b>]TJ
|
|
||||||
ET
|
|
||||||
Q Q
|
|
||||||
showpage
|
|
||||||
%%Trailer
|
|
||||||
count op_count sub {pop} repeat
|
|
||||||
countdictstack dict_count sub {end} repeat
|
|
||||||
cairo_eps_state restore
|
|
||||||
%%EOF
|
|
Before Width: | Height: | Size: 59 KiB |
|
@ -1,580 +0,0 @@
|
||||||
%!PS-Adobe-3.0 EPSF-3.0
|
|
||||||
%%Creator: cairo 1.10.2 (http://cairographics.org)
|
|
||||||
%%CreationDate: Wed Jul 13 18:29:14 2011
|
|
||||||
%%Pages: 1
|
|
||||||
%%BoundingBox: 0 -1 546 666
|
|
||||||
%%DocumentData: Clean7Bit
|
|
||||||
%%LanguageLevel: 2
|
|
||||||
%%EndComments
|
|
||||||
%%BeginProlog
|
|
||||||
/cairo_eps_state save def
|
|
||||||
/dict_count countdictstack def
|
|
||||||
/op_count count 1 sub def
|
|
||||||
userdict begin
|
|
||||||
/q { gsave } bind def
|
|
||||||
/Q { grestore } bind def
|
|
||||||
/cm { 6 array astore concat } bind def
|
|
||||||
/w { setlinewidth } bind def
|
|
||||||
/J { setlinecap } bind def
|
|
||||||
/j { setlinejoin } bind def
|
|
||||||
/M { setmiterlimit } bind def
|
|
||||||
/d { setdash } bind def
|
|
||||||
/m { moveto } bind def
|
|
||||||
/l { lineto } bind def
|
|
||||||
/c { curveto } bind def
|
|
||||||
/h { closepath } bind def
|
|
||||||
/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
|
|
||||||
0 exch rlineto 0 rlineto closepath } bind def
|
|
||||||
/S { stroke } bind def
|
|
||||||
/f { fill } bind def
|
|
||||||
/f* { eofill } bind def
|
|
||||||
/n { newpath } bind def
|
|
||||||
/W { clip } bind def
|
|
||||||
/W* { eoclip } bind def
|
|
||||||
/BT { } bind def
|
|
||||||
/ET { } bind def
|
|
||||||
/pdfmark where { pop globaldict /?pdfmark /exec load put }
|
|
||||||
{ globaldict begin /?pdfmark /pop load def /pdfmark
|
|
||||||
/cleartomark load def end } ifelse
|
|
||||||
/BDC { mark 3 1 roll /BDC pdfmark } bind def
|
|
||||||
/EMC { mark /EMC pdfmark } bind def
|
|
||||||
/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
|
|
||||||
/Tj { show currentpoint cairo_store_point } bind def
|
|
||||||
/TJ {
|
|
||||||
{
|
|
||||||
dup
|
|
||||||
type /stringtype eq
|
|
||||||
{ show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
|
|
||||||
} forall
|
|
||||||
currentpoint cairo_store_point
|
|
||||||
} bind def
|
|
||||||
/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
|
|
||||||
cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
|
|
||||||
/Tf { pop /cairo_font exch def /cairo_font_matrix where
|
|
||||||
{ pop cairo_selectfont } if } bind def
|
|
||||||
/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
|
|
||||||
/cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
|
|
||||||
/cairo_font where { pop cairo_selectfont } if } bind def
|
|
||||||
/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
|
|
||||||
cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
|
|
||||||
/g { setgray } bind def
|
|
||||||
/rg { setrgbcolor } bind def
|
|
||||||
/d1 { setcachedevice } bind def
|
|
||||||
%%EndProlog
|
|
||||||
11 dict begin
|
|
||||||
/FontType 42 def
|
|
||||||
/FontName /DejaVuSans def
|
|
||||||
/PaintType 0 def
|
|
||||||
/FontMatrix [ 1 0 0 1 0 0 ] def
|
|
||||||
/FontBBox [ 0 0 0 0 ] def
|
|
||||||
/Encoding 256 array def
|
|
||||||
0 1 255 { Encoding exch /.notdef put } for
|
|
||||||
Encoding 1 /uni0053 put
|
|
||||||
Encoding 2 /uni0065 put
|
|
||||||
Encoding 3 /uni0072 put
|
|
||||||
Encoding 4 /uni0076 put
|
|
||||||
Encoding 5 /uni0043 put
|
|
||||||
Encoding 6 /uni006C put
|
|
||||||
Encoding 7 /uni0069 put
|
|
||||||
Encoding 8 /uni006E put
|
|
||||||
Encoding 9 /uni0074 put
|
|
||||||
Encoding 10 /uni0063 put
|
|
||||||
Encoding 11 /uni006F put
|
|
||||||
Encoding 12 /uni005F put
|
|
||||||
Encoding 13 /uni0073 put
|
|
||||||
Encoding 14 /uni0028 put
|
|
||||||
Encoding 15 /uni0029 put
|
|
||||||
Encoding 16 /uni0020 put
|
|
||||||
Encoding 17 /uni0045 put
|
|
||||||
Encoding 18 /uni004F put
|
|
||||||
Encoding 19 /uni0052 put
|
|
||||||
Encoding 20 /uni004E put
|
|
||||||
Encoding 21 /uni0056 put
|
|
||||||
Encoding 22 /uni0054 put
|
|
||||||
Encoding 23 /uni0041 put
|
|
||||||
Encoding 24 /uni0044 put
|
|
||||||
Encoding 25 /uni0064 put
|
|
||||||
Encoding 26 /uni006D put
|
|
||||||
Encoding 27 /uni0075 put
|
|
||||||
Encoding 28 /uni0061 put
|
|
||||||
Encoding 29 /uni002D put
|
|
||||||
Encoding 30 /uni003E put
|
|
||||||
Encoding 31 /uni0067 put
|
|
||||||
Encoding 32 /uni004C put
|
|
||||||
Encoding 33 /uni0070 put
|
|
||||||
Encoding 34 /uni0068 put
|
|
||||||
Encoding 35 /uni0062 put
|
|
||||||
Encoding 36 /uni0079 put
|
|
||||||
Encoding 37 /uni0022 put
|
|
||||||
Encoding 38 /uni006B put
|
|
||||||
Encoding 39 /uni003A put
|
|
||||||
/CharStrings 40 dict dup begin
|
|
||||||
/.notdef 0 def
|
|
||||||
/uni0053 1 def
|
|
||||||
/uni0065 2 def
|
|
||||||
/uni0072 3 def
|
|
||||||
/uni0076 4 def
|
|
||||||
/uni0043 5 def
|
|
||||||
/uni006C 6 def
|
|
||||||
/uni0069 7 def
|
|
||||||
/uni006E 8 def
|
|
||||||
/uni0074 9 def
|
|
||||||
/uni0063 10 def
|
|
||||||
/uni006F 11 def
|
|
||||||
/uni005F 12 def
|
|
||||||
/uni0073 13 def
|
|
||||||
/uni0028 14 def
|
|
||||||
/uni0029 15 def
|
|
||||||
/uni0020 16 def
|
|
||||||
/uni0045 17 def
|
|
||||||
/uni004F 18 def
|
|
||||||
/uni0052 19 def
|
|
||||||
/uni004E 20 def
|
|
||||||
/uni0056 21 def
|
|
||||||
/uni0054 22 def
|
|
||||||
/uni0041 23 def
|
|
||||||
/uni0044 24 def
|
|
||||||
/uni0064 25 def
|
|
||||||
/uni006D 26 def
|
|
||||||
/uni0075 27 def
|
|
||||||
/uni0061 28 def
|
|
||||||
/uni002D 29 def
|
|
||||||
/uni003E 30 def
|
|
||||||
/uni0067 31 def
|
|
||||||
/uni004C 32 def
|
|
||||||
/uni0070 33 def
|
|
||||||
/uni0068 34 def
|
|
||||||
/uni0062 35 def
|
|
||||||
/uni0079 36 def
|
|
||||||
/uni0022 37 def
|
|
||||||
/uni006B 38 def
|
|
||||||
/uni003A 39 def
|
|
||||||
end readonly def
|
|
||||||
/sfnts [
|
|
||||||
<00010000000a008000030020636d617001caf26c000019400000008e6376742000691d390000
|
|
||||||
19d0000001fe6670676d7134766a00001bd0000000ab676c7966041fef2f000000ac00001894
|
|
||||||
68656164f5a8919600001c7c00000036686865610cb8067900001cb400000024686d7478b924
|
|
||||||
152200001cd8000000a06c6f63610001e70400001d78000000a46d6178700495067100001e1c
|
|
||||||
00000020707265703b07f10000001e3c0000056800020066fe96046605a400030007001a400c
|
|
||||||
04fb0006fb0108057f0204002fc4d4ec310010d4ecd4ec301311211125211121660400fc7303
|
|
||||||
1bfce5fe96070ef8f272062900010087ffe304a205f00027007e403c0d0c020e0b021e1f1e08
|
|
||||||
0902070a021f1f1e420a0b1e1f0415010015a11494189511049500942591118c281e0a0b1f1b
|
|
||||||
0700221b190e2d071914222810dcc4ecfcece4111239393939310010e4f4e4ec10eef6ee10c6
|
|
||||||
111739304b535807100eed11173907100eed1117395922b20f2901015db61f292f294f29035d
|
|
||||||
01152e012322061514161f011e0115140421222627351e013332363534262f012e0135342433
|
|
||||||
3216044873cc5fa5b377a67ae2d7feddfee76aef807bec72adbc879a7be2ca0117f569da05a4
|
|
||||||
c53736807663651f192bd9b6d9e0302fd04546887e6e7c1f182dc0abc6e4260000020071ffe3
|
|
||||||
047f047b0014001b00704024001501098608880515a90105b90c01bb18b912b80c8c1c1b1502
|
|
||||||
081508004b02120f451c10fcecf4ecc4111239310010e4f4ece410ee10ee10f4ee1112393040
|
|
||||||
293f1d701da01dd01df01d053f003f013f023f153f1b052c072f082f092c0a6f006f016f026f
|
|
||||||
156f1b095d71015d0115211e0133323637150e01232000111000333200072e0123220607047f
|
|
||||||
fcb20ccdb76ac76263d06bfef4fec70129fce20107b802a5889ab90e025e5abec73434ae2a2c
|
|
||||||
0138010a01130143feddc497b4ae9e00000100ba0000034a047b001100304014060b0700110b
|
|
||||||
03870eb809bc070a06080008461210fcc4ec3231002fe4f4ecc4d4cc11123930b450139f1302
|
|
||||||
015d012e012322061511231133153e0133321617034a1f492c9ca7b9b93aba85132e1c03b412
|
|
||||||
11cbbefdb20460ae6663050500000001003d0000047f0460000600fb40270311040504021101
|
|
||||||
0205050402110302060006011100000642020300bf0506050302010504000710d44bb00a5458
|
|
||||||
b90000004038594bb014544bb015545b58b90000ffc03859c4173931002fec3239304b535807
|
|
||||||
1005ed071008ed071008ed071005ed592201408e48026a027b027f02860280029102a4020806
|
|
||||||
00060109030904150015011a031a0426002601290329042008350035013a033a043008460046
|
|
||||||
0149034904460548064008560056015903590450086600660169036904670568066008750074
|
|
||||||
017b037b0475057a068500850189038904890586069600960197029a03980498059706a805a7
|
|
||||||
06b008c008df08ff083e5d005d133309013301233dc3015e015ec3fe5cfa0460fc5403acfba0
|
|
||||||
000000010073ffe3052705f000190036401a0da10eae0a951101a100ae04951791118c1a0719
|
|
||||||
0d003014101a10fcec32ec310010e4f4ecf4ec10eef6ee30b40f1b1f1b02015d01152e012320
|
|
||||||
0011100021323637150e01232000111000213216052766e782ff00fef00110010082e7666aed
|
|
||||||
84feadfe7a0186015386ed0562d55f5efec7fed8fed9fec75e5fd34848019f01670168019f47
|
|
||||||
0000000100c100000179061400030022b7009702010800460410fcec31002fec30400d100540
|
|
||||||
05500560057005f00506015d13331123c1b8b80614f9ec00000200c100000179061400030007
|
|
||||||
002b400e06be04b100bc020501080400460810fc3cec3231002fe4fcec30400b100940095009
|
|
||||||
6009700905015d1333112311331523c1b8b8b8b80460fba00614e900000100ba00000464047b
|
|
||||||
001300364019030900030e0106870e11b80cbc0a010208004e0d09080b461410fcec32f4ec31
|
|
||||||
002f3ce4f4c4ec1112173930b46015cf1502015d0111231134262322061511231133153e0133
|
|
||||||
32160464b87c7c95acb9b942b375c1c602a4fd5c029e9f9ebea4fd870460ae6564ef00010037
|
|
||||||
000002f2059e0013003840190e05080f03a9001101bc08870a0b08090204000810120e461410
|
|
||||||
fc3cc4fc3cc432393931002fecf43cc4ec3211393930b2af1501015d01112115211114163b01
|
|
||||||
152322263511233533110177017bfe854b73bdbdd5a28787059efec28ffda0894e9a9fd20260
|
|
||||||
8f013e00000000010071ffe303e7047b0019003f401b00860188040e860d880ab91104b917b8
|
|
||||||
118c1a07120d004814451a10fce432ec310010e4f4ec10fef4ee10f5ee30400b0f1b101b801b
|
|
||||||
901ba01b05015d01152e0123220615141633323637150e0123220011100021321603e74e9d50
|
|
||||||
b3c6c6b3509d4e4da55dfdfed6012d010655a20435ac2b2be3cdcde32b2baa2424013e010e01
|
|
||||||
12013a23000000020071ffe30475047b000b0017004a401306b91200b90cb8128c1809120f51
|
|
||||||
031215451810fcecf4ec310010e4f4ec10ee3040233f197b007b067f077f087f097f0a7f0b7b
|
|
||||||
0c7f0d7f0e7f0f7f107f117b12a019f01911015d012206151416333236353426273200111000
|
|
||||||
232200111000027394acab9593acac93f00112feeef0f1feef011103dfe7c9c9e7e8c8c7e99c
|
|
||||||
fec8feecfeedfec7013901130114013800000001ffecfe1d0414feac0003000fb500a9010002
|
|
||||||
0410c4c43100d4ec30011521350414fbd8feac8f8f0000000001006fffe303c7047b002700e7
|
|
||||||
403c0d0c020e0b531f1e080902070a531f1f1e420a0b1e1f041500860189041486158918b911
|
|
||||||
04b925b8118c281e0a0b1f1b0700521b080e07081422452810fcc4ecd4ece411123939393931
|
|
||||||
0010e4f4ec10fef5ee10f5ee121739304b535807100eed111739070eed1117395922b2002701
|
|
||||||
015d406d1c0a1c0b1c0c2e092c0a2c0b2c0c3b093b0a3b0b3b0c0b200020012402280a280b2a
|
|
||||||
132f142f152a16281e281f292029212427860a860b860c860d12000000010202060a060b030c
|
|
||||||
030d030e030f03100319031a031b031c041d09272f293f295f297f2980299029a029f029185d
|
|
||||||
005d7101152e012322061514161f011e0115140623222627351e013332363534262f012e0135
|
|
||||||
3436333216038b4ea85a898962943fc4a5f7d85ac36c66c661828c65ab40ab98e0ce66b4043f
|
|
||||||
ae282854544049210e2a99899cb62323be353559514b50250f2495829eac1e000000000100b0
|
|
||||||
fef2027b0612000d0037400f069800970e0d070003120600130a0e10dc4bb0135458b9000aff
|
|
||||||
c038594bb00f5458b9000a00403859e432ec113939310010fcec300106021514121723260235
|
|
||||||
341237027b86828385a0969594970612e6fe3ee7e7fe3be5eb01c6e0df01c4ec000100a4fef2
|
|
||||||
026f0612000d001f400f079800970e0701000b12041308000e10dc3cf4ec113939310010fcec
|
|
||||||
301333161215140207233612353402a4a096959596a08583830612ecfe3cdfe0fe3aebe501c5
|
|
||||||
e7e701c20000000100c90000048b05d5000b002e401506950402950081089504ad0a05010907
|
|
||||||
031c00040c10fcec32d4c4c431002fececf4ec10ee30b21f0d01015d13211521112115211121
|
|
||||||
1521c903b0fd1a02c7fd3902f8fc3e05d5aafe46aafde3aa000000020073ffe305d905f0000b
|
|
||||||
00170023401306951200950c91128c1809190f33031915101810fcecfcec310010e4f4ec10ee
|
|
||||||
300122001110003332001110002720001110002120001110000327dcfefd0103dcdc0101feff
|
|
||||||
dc013a0178fe88fec6fec5fe870179054cfeb8fee5fee6feb80148011a011b0148a4fe5bfe9e
|
|
||||||
fe9ffe5b01a40162016201a50000000200c90000055405d50013001c00b14035090807030a06
|
|
||||||
1103040305110404034206040015030415950914950d810b040506031109001c160e050a1919
|
|
||||||
04113f140a1c0c041d10fcec32fcc4ec1117391139393931002f3cf4ecd4ec12391239123930
|
|
||||||
4b5358071005ed071005ed1117395922b2401e01015d40427a13010500050105020603070415
|
|
||||||
00150114021603170425002501250226032706260726082609201e3601360246014602680575
|
|
||||||
047505771388068807980698071f5d005d011e01171323032e012b0111231121201615140601
|
|
||||||
1133323635342623038d417b3ecdd9bf4a8b78dcca01c80100fc83fd89fe9295959202bc1690
|
|
||||||
7efe68017f9662fd8905d5d6d88dba024ffdee8783838500000100c90000053305d500090079
|
|
||||||
401e071101020102110607064207020300af0805060107021c0436071c00040a10fcecfcec11
|
|
||||||
393931002f3cec323939304b5358071004ed071004ed5922b21f0b01015d4030360238074802
|
|
||||||
4707690266078002070601090615011a06460149065701580665016906790685018a0695019a
|
|
||||||
069f0b105d005d13210111331121011123c901100296c4fef0fd6ac405d5fb1f04e1fa2b04e1
|
|
||||||
fb1f000100100000056805d5000600b740270411050605031102030606050311040300010002
|
|
||||||
1101010042030401af0006040302000505010710d4c4173931002fec3239304b5358071005ed
|
|
||||||
071008ed071008ed071005ed5922b2500801015d406200032a03470447055a037d0383030706
|
|
||||||
00070208040906150114021a041a052a002601260229042905250620083800330133023c043c
|
|
||||||
053706480045014502490449054706590056066602690469057a007601760279047905750680
|
|
||||||
0898009706295d005d21013309013301024afdc6d301d901dad2fdc705d5fb1704e9fa2b0001
|
|
||||||
fffa000004e905d50007004a400e0602950081040140031c0040050810d4e4fce431002ff4ec
|
|
||||||
3230014bb00a5458bd00080040000100080008ffc03811373859401300091f00100110021f07
|
|
||||||
1009400970099f09095d03211521112311210604effdeecbfdee05d5aafad5052b0000020010
|
|
||||||
0000056805d50002000a00c2404100110100040504021105050401110a030a0011020003030a
|
|
||||||
0711050406110505040911030a08110a030a4200030795010381090509080706040302010009
|
|
||||||
050a0b10d4c4173931002f3ce4d4ec1239304b5358071005ed0705ed071005ed0705ed071008
|
|
||||||
ed071005ed071005ed071008ed5922b2200c01015d40420f010f020f070f080f005800760070
|
|
||||||
008c000907010802060309041601190256015802500c67016802780176027c03720477077808
|
|
||||||
87018802800c980299039604175d005d090121013301230321032302bcfeee0225fe7be50239
|
|
||||||
d288fd5f88d5050efd1903aefa2b017ffe810000000200c9000005b005d500080011002e4015
|
|
||||||
009509810195100802100a0005190d32001c09041210fcecf4ec113939393931002fecf4ec30
|
|
||||||
b2601301015d0111332000111000212521200011100029010193f40135011ffee1fecbfe4201
|
|
||||||
9f01b20196fe68fe50fe61052ffb770118012e012c0117a6fe97fe80fe7efe96000000020071
|
|
||||||
ffe3045a06140010001c003840191ab9000e14b905088c0eb801970317040008024711120b45
|
|
||||||
1d10fcecf4ec323231002fece4f4c4ec10c4ee30b6601e801ea01e03015d0111331123350e01
|
|
||||||
23220211100033321601141633323635342623220603a2b8b83ab17ccbff00ffcb7cb1fdc7a7
|
|
||||||
9292a8a89292a703b6025ef9eca86461014401080108014461fe15cbe7e7cbcbe7e7000100ba
|
|
||||||
0000071d047b0022005a4026061209180f00061d07150c871d2003b81bbc19100700110f0808
|
|
||||||
065011080f501c18081a462310fcec32fcfcfcec11123931002f3c3ce4f43cc4ec3211121739
|
|
||||||
3040133024502470249024a024a024bf24df24ff2409015d013e013332161511231134262322
|
|
||||||
061511231134262322061511231133153e01333216042945c082afbeb972758fa6b972778da6
|
|
||||||
b9b93fb0797aab03897c76f5e2fd5c029ea19cbea4fd87029ea29bbfa3fd870460ae67627c00
|
|
||||||
0000000200aeffe30458047b00130014003b401c030900030e0106870e118c0a01bc14b80c0d
|
|
||||||
0908140b4e020800461510fcecf439ec3231002fe4e432f4c4ec1112173930b46f15c0150201
|
|
||||||
5d1311331114163332363511331123350e0123222601aeb87c7c95adb8b843b175c1c801cf01
|
|
||||||
ba02a6fd619f9fbea4027bfba0ac6663f003a8000002007bffe3042d047b000a002500bc4027
|
|
||||||
191f0b17090e00a91706b90e1120861fba1cb923b8118c170c001703180d09080b1f03081445
|
|
||||||
2610fcecccd4ec323211393931002fc4e4f4fcf4ec10c6ee10ee11391139123930406e301d30
|
|
||||||
1e301f3020302130223f27401d401e401f402040214022501d501e501f502050215022502770
|
|
||||||
27851d871e871f8720872185229027a027f0271e301e301f30203021401e401f40204021501e
|
|
||||||
501f50205021601e601f60206021701e701f70207021801e801f80208021185d015d01220615
|
|
||||||
14163332363d01371123350e01232226353436332135342623220607353e0133321602bedfac
|
|
||||||
816f99b9b8b83fbc88accbfdfb0102a79760b65465be5af3f00233667b6273d9b4294cfd81aa
|
|
||||||
6661c1a2bdc0127f8b2e2eaa2727fc000001006401df027f028300030011b6009c0204010004
|
|
||||||
10dccc310010d4ec301321152164021bfde50283a400000100d9005e05db04a60006004f402b
|
|
||||||
069c0006030403059c040403009c010201069c05060202014206050302000504a801a7070602
|
|
||||||
240400230710fc3cec39310010f4ec1739304b5358071008ed071004ed071004ed071008ed59
|
|
||||||
2213350115013501d90502fafe040603f0b6fe2fa6fe2fb6016d000000020071fe56045a047b
|
|
||||||
000b0028004a4023190c1d0912861316b90f03b92623b827bc09b90fbd1a1d261900080c4706
|
|
||||||
121220452910fcc4ecf4ec323231002fc4e4ece4f4c4ec10fed5ee1112393930b6602a802aa0
|
|
||||||
2a03015d01342623220615141633323617100221222627351e013332363d010e012322021110
|
|
||||||
1233321617353303a2a59594a5a59495a5b8fefefa61ac51519e52b5b439b27ccefcfcce7cb2
|
|
||||||
39b8023dc8dcdcc8c7dcdcebfee2fee91d1eb32c2abdbf5b6362013a01030104013a6263aa00
|
|
||||||
000100c90000046a05d500050025400c0295008104011c033a00040610fcecec31002fe4ec30
|
|
||||||
4009300750078003800404015d133311211521c9ca02d7fc5f05d5fad5aa000200bafe5604a4
|
|
||||||
047b0010001c003e401b1ab9000e14b90508b80e8c01bd03bc1d11120b471704000802461d10
|
|
||||||
fcec3232f4ec310010e4e4e4f4c4ec10c4ee304009601e801ea01ee01e04015d251123113315
|
|
||||||
3e013332001110022322260134262322061514163332360173b9b93ab17bcc00ffffcc7bb102
|
|
||||||
38a79292a7a79292a7a8fdae060aaa6461febcfef8fef8febc6101ebcbe7e7cbcbe7e7000000
|
|
||||||
000100ba000004640614001300344019030900030e0106870e11b80c970a010208004e0d0908
|
|
||||||
0b461410fcec32f4ec31002f3cecf4c4ec1112173930b2601501015d01112311342623220615
|
|
||||||
11231133113e013332160464b87c7c95acb9b942b375c1c602a4fd5c029e9f9ebea4fd870614
|
|
||||||
fd9e6564ef00000200baffe304a40614000b001c0038401903b90c0f09b918158c0fb81b9719
|
|
||||||
00121247180c06081a461d10fcec3232f4ec31002fece4f4c4ec10c6ee30b6601e801ea01e03
|
|
||||||
015d013426232206151416333236013e01333200111002232226271523113303e5a79292a7a7
|
|
||||||
9292a7fd8e3ab17bcc00ffffcc7bb13ab9b9022fcbe7e7cbcbe7e702526461febcfef8fef8fe
|
|
||||||
bc6164a806140001003dfe56047f0460000f018b40430708020911000f0a110b0a00000f0e11
|
|
||||||
0f000f0d110c0d00000f0d110e0d0a0b0a0c110b0b0a420d0b0910000b058703bd0e0bbc100e
|
|
||||||
0d0c0a09060300080f040f0b1010d44bb00a544bb008545b58b9000b004038594bb0145458b9
|
|
||||||
000bffc03859c4c4111739310010e432f4ec113911391239304b5358071005ed071008ed0710
|
|
||||||
08ed071005ed071008ed0705ed173259220140f0060005080609030d160a170d100d230d350d
|
|
||||||
490a4f0a4e0d5a095a0a6a0a870d800d930d120a000a09060b050c0b0e0b0f17011502100410
|
|
||||||
05170a140b140c1a0e1a0f2700240124022004200529082809250a240b240c270d2a0e2a0f20
|
|
||||||
1137003501350230043005380a360b360c380d390e390f301141004001400240034004400540
|
|
||||||
06400740084209450a470d490e490f4011540051015102550350045005560655075608570957
|
|
||||||
0a550b550c590e590f501166016602680a690e690f60117b08780e780f89008a09850b850c89
|
|
||||||
0d890e890f9909950b950c9a0e9a0fa40ba40cab0eab0fb011cf11df11ff11655d005d050e01
|
|
||||||
2b01353332363f01013309013302934e947c936c4c543321fe3bc3015e015ec368c87a9a4886
|
|
||||||
54044efc94036c000000000200c503aa02e905d5000300070042400f05018404008108040506
|
|
||||||
000502040810fc4bb012544bb013545b58b90002ffc03859fcdcec310010f43cec323001400f
|
|
||||||
30094009500960097009a009bf09075d0111231121112311016faa0224aa05d5fdd5022bfdd5
|
|
||||||
022b0000000100ba0000049c0614000a00bc4029081105060507110606050311040504021105
|
|
||||||
0504420805020303bc009709060501040608010800460b10fcec32d4c4113931002f3cece417
|
|
||||||
39304b5358071004ed071005ed071005ed071004ed5922b2100c01015d405f04020a08160227
|
|
||||||
0229052b0856026602670873027705820289058e08930296059708a3021209050906020b030a
|
|
||||||
072803270428052b062b07400c6803600c8903850489058d068f079a039707aa03a705b607c5
|
|
||||||
07d607f703f003f704f0041a5d71005d1333110133090123011123bab90225ebfdae026bf0fd
|
|
||||||
c7b90614fc6901e3fdf4fdac0223fddd000200f0000001c3042300030007001c400e068304a6
|
|
||||||
0083020501030400180810fc3cec3231002fecf4ec303733152311331523f0d3d3d3d3fefe04
|
|
||||||
23fe000000000002000300000000001400010000000000340004002000000004000400010000
|
|
||||||
f027ffff0000f000ffff10000001000000000006005a00000000002800000001000200030004
|
|
||||||
00050006000700080009000a000b000c000d000e000f00100011001200130014001500160017
|
|
||||||
00180019001a001b001c001d001e001f002000210022002300240025002600270000013500b8
|
|
||||||
00cb00cb00c100aa009c01a600b800660000007100cb00a002b20085007500b800c301cb0189
|
|
||||||
022d00cb00a600f000d300aa008700cb03aa0400014a003300cb000000d9050200f4015400b4
|
|
||||||
009c01390114013907060400044e04b4045204b804e704cd0037047304cd04600473013303a2
|
|
||||||
055605a60556053903c5021200c9001f00b801df007300ba03e9033303bc0444040e00df03cd
|
|
||||||
03aa00e503aa0404000000cb008f00a4007b00b80014016f007f027b0252008f00c705cd009a
|
|
||||||
009a006f00cb00cd019e01d300f000ba018300d5009803040248009e01d500c100cb00f60083
|
|
||||||
0354027f00000333026600d300c700a400cd008f009a0073040005d5010a00fe022b00a400b4
|
|
||||||
009c00000062009c0000001d032d05d505d505d505f0007f007b005400a406b80614072301d3
|
|
||||||
00b800cb00a601c301ec069300a000d3035c037103db0185042304a80448008f013901140139
|
|
||||||
0360008f05d5019a0614072306660179046004600460047b009c00000277046001aa00e90460
|
|
||||||
0762007b00c5007f027b000000b4025205cd006600bc00660077061000cd013b01850389008f
|
|
||||||
007b0000001d00cd074a042f009c009c0000077d006f0000006f0335006a006f007b00ae00b2
|
|
||||||
002d0396008f027b00f600830354063705f6008f009c04e10266008f018d02f600cd03440029
|
|
||||||
006604ee00730000140000960000b707060504030201002c2010b002254964b040515820c859
|
|
||||||
212d2cb002254964b040515820c859212d2c20100720b00050b00d7920b8ffff5058041b0559
|
|
||||||
b0051cb0032508b0042523e120b00050b00d7920b8ffff5058041b0559b0051cb0032508e12d
|
|
||||||
2c4b505820b0fd454459212d2cb002254560442d2c4b5358b00225b0022545445921212d2c45
|
|
||||||
442d2cb00225b0022549b00525b005254960b0206368208a108a233a8a10653a2d0000010000
|
|
||||||
000251ebb40a581c5f0f3cf5001f080000000000c896fa5500000000c896fa55f7d6fcae0d72
|
|
||||||
095500000008000000010000000000010000076dfe1d00000de2f7d6fa510d72000100000000
|
|
||||||
00000000000000000000002804cd00660514008704ec0071034a00ba04bc003d059600730239
|
|
||||||
00c1023900c1051200ba032300370466007104e500710400ffec042b006f031f00b0031f00a4
|
|
||||||
028b0000050e00c9064c0073058f00c905fc00c90579001004e3fffa05790010062900c90514
|
|
||||||
007107cb00ba051200ae04e7007b02e3006406b400d905140071047500c9051400ba051200ba
|
|
||||||
051400ba04bc003d03ae00c504a200ba02b200f000000000000000440000013c000002100000
|
|
||||||
0280000003a40000043c00000478000004c800000540000005bc00000654000006f800000724
|
|
||||||
00000884000008f40000094c0000094c000009ac00000a3800000b4c00000bf400000cd40000
|
|
||||||
0d4400000e4000000ec000000f580000101c000010a0000011cc000011f80000127000001338
|
|
||||||
0000137c0000141c000014940000152c000016f8000017640000185400001894000100000028
|
|
||||||
0354002b0068000c000200100099000800000415021600080004b8028040fffbfe03fa1403f9
|
|
||||||
2503f83203f79603f60e03f5fe03f4fe03f32503f20e03f19603f02503ef8a4105effe03ee96
|
|
||||||
03ed9603ecfa03ebfa03eafe03e93a03e84203e7fe03e63203e5e45305e59603e48a4105e453
|
|
||||||
03e3e22f05e3fa03e22f03e1fe03e0fe03df3203de1403dd9603dcfe03db1203da7d03d9bb03
|
|
||||||
d8fe03d68a4105d67d03d5d44705d57d03d44703d3d21b05d3fe03d21b03d1fe03d0fe03cffe
|
|
||||||
03cefe03cd9603cccb1e05ccfe03cb1e03ca3203c9fe03c6851105c61c03c51603c4fe03c3fe
|
|
||||||
03c2fe03c1fe03c0fe03bffe03befe03bdfe03bcfe03bbfe03ba1103b9862505b9fe03b8b7bb
|
|
||||||
05b8fe03b7b65d05b7bb03b78004b6b52505b65d40ff03b64004b52503b4fe03b39603b2fe03
|
|
||||||
b1fe03b0fe03affe03ae6403ad0e03acab2505ac6403abaa1205ab2503aa1203a98a4105a9fa
|
|
||||||
03a8fe03a7fe03a6fe03a51203a4fe03a3a20e05a33203a20e03a16403a08a4105a096039ffe
|
|
||||||
039e9d0c059efe039d0c039c9b19059c64039b9a10059b19039a1003990a0398fe0397960d05
|
|
||||||
97fe03960d03958a410595960394930e05942803930e0392fa039190bb0591fe03908f5d0590
|
|
||||||
bb039080048f8e25058f5d038f40048e25038dfe038c8b2e058cfe038b2e038a8625058a4103
|
|
||||||
89880b05891403880b03878625058764038685110586250385110384fe038382110583fe0382
|
|
||||||
110381fe0380fe037ffe0340ff7e7d7d057efe037d7d037c64037b5415057b25037afe0379fe
|
|
||||||
03780e03770c03760a0375fe0374fa0373fa0372fa0371fa0370fe036ffe036efe036c21036b
|
|
||||||
fe036a1142056a530369fe03687d036711420566fe0365fe0364fe0363fe0362fe03613a0360
|
|
||||||
fa035e0c035dfe035bfe035afe0359580a0559fa03580a035716190557320356fe0355541505
|
|
||||||
55420354150353011005531803521403514a130551fe03500b034ffe034e4d10054efe034d10
|
|
||||||
034cfe034b4a13054bfe034a4910054a1303491d0d05491003480d0347fe0346960345960344
|
|
||||||
fe0343022d0543fa0342bb03414b0340fe033ffe033e3d12053e14033d3c0f053d12033c3b0d
|
|
||||||
053c40ff0f033b0d033afe0339fe033837140538fa033736100537140336350b05361003350b
|
|
||||||
03341e03330d0332310b0532fe03310b03302f0b05300d032f0b032e2d09052e10032d09032c
|
|
||||||
32032b2a25052b64032a2912052a25032912032827250528410327250326250b05260f03250b
|
|
||||||
0324fe0323fe03220f03210110052112032064031ffa031e1d0d051e64031d0d031c1142051c
|
|
||||||
fe031bfa031a42031911420519fe031864031716190517fe031601100516190315fe0314fe03
|
|
||||||
13fe031211420512fe0311022d05114203107d030f64030efe030d0c16050dfe030c0110050c
|
|
||||||
16030bfe030a100309fe0308022d0508fe030714030664030401100504fe03401503022d0503
|
|
||||||
fe0302011005022d0301100300fe0301b80164858d012b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b002b2b
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b1d00>
|
|
||||||
] def
|
|
||||||
/f-0-0 currentdict end definefont pop
|
|
||||||
%%Page: 1 1
|
|
||||||
%%BeginPageSetup
|
|
||||||
%%PageBoundingBox: 0 -1 546 666
|
|
||||||
%%EndPageSetup
|
|
||||||
q 0 -1 546 667 rectclip q
|
|
||||||
0 665.925 546 -666 re W n
|
|
||||||
0 g
|
|
||||||
0.663875 w
|
|
||||||
0 J
|
|
||||||
0 j
|
|
||||||
[] 0.0 d
|
|
||||||
4 M q 1 0 0 -1 0 665.924988 cm
|
|
||||||
0.332 0.91 92.867 57.141 re S Q
|
|
||||||
BT
|
|
||||||
16 0 0 16 20.902991 631.872559 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
<010203040203>Tj
|
|
||||||
ET
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
452.164 0.34 92.867 57.141 re S Q
|
|
||||||
BT
|
|
||||||
16 0 0 16 472.736133 632.443994 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
<050607020809>Tj
|
|
||||||
ET
|
|
||||||
1.029478 w
|
|
||||||
[ 4.117912 4.117912] 0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
41.453 63.719 m 41.453 665.922 l S Q
|
|
||||||
[ 4.117912 4.117912] 0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
500.469 61.043 m 500.469 663.246 l S Q
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 312.98374 563.66853 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<020a>-1<0b>1<03>20<020c0a>-1<0b>1<08>-1<0c0d>-1<0203>-1<040203>-1<0c
|
|
||||||
0a>-1<0b>1<08>-1<08>-1<020a>-1<09>-1<0e0f>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 216.362964 532.03114 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<03>21<020a>-1<020704020d10>-1<11>-1<05>-1<121311>-1<0c05>-1<12140c11>-1<15
|
|
||||||
11>-1<14160c0111>-1<13>54<1511>-1<130c1718>1<18>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 215.566675 409.19657 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<03>21<020a>-1<020704020d10>-1<11>-1<05>-1<121311>-1<0c05>-1<12140c11>-1<15
|
|
||||||
11>-1<14160c0111>-1<13>54<1511>-1<130c18>18<17>79<16>77<17>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 334.803003 271.936462 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<020a>-1<0b>1<03>20<020c0a>-1<0b>1<08>-1<0c0d>-1<0203>-1<040203>-1<0c
|
|
||||||
0d0208>-1<190e>-1<0f>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
9.6 0 0 9.6 205.503491 441.642078 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0a>-1<0b>1<1a>-1<1b>-1<08>-1<07>1<0a>-1<1c>-1<09070b>1<08>-1<10>-1<0d
|
|
||||||
0203>-1<040203>-1<10>-1<1d1e10>-1<0a>-1<06>1<070208>-1<09>]TJ
|
|
||||||
ET
|
|
||||||
0.8 w
|
|
||||||
[] 0.0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
43.879 280.043 m 493.195 280.043 l S Q
|
|
||||||
485.195 385.882 m 481.996 382.683 l 493.195 385.882 l 481.996 389.081 l
|
|
||||||
h
|
|
||||||
485.195 385.882 m f*
|
|
||||||
0.8 w
|
|
||||||
q -1 0 0 1 0 665.924988 cm
|
|
||||||
-485.195 -280.043 m -481.996 -283.242 l -493.195 -280.043 l -481.996
|
|
||||||
-276.844 l h
|
|
||||||
-485.195 -280.043 m S Q
|
|
||||||
0.701961 g
|
|
||||||
0.8 w
|
|
||||||
[ 1.6 3.2] 0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
44.688 81.246 451.738 75.961 re S Q
|
|
||||||
0 g
|
|
||||||
BT
|
|
||||||
9.6 0 0 9.6 205.503491 590.33656 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0a>-1<06>1<070208>-1<0910>-1<0a>-1<0b>1<08>-1<08>-1<020a>-1<09>-1<07>1<08>-1<1f
|
|
||||||
10>-1<0b>1<08>-1<10>-1<0d0203>-1<040203>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
9.6 0 0 9.6 207.119751 293.639929 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0a>-1<0b>1<1a>-1<1b>-1<08>-1<07>1<0a>-1<1c>-1<09070b>1<08>-1<10>-1<0a>-1<06>1<07
|
|
||||||
0208>-1<0910>-1<1d1e10>-1<0d0203>-1<040203>]TJ
|
|
||||||
ET
|
|
||||||
0.800568 w
|
|
||||||
[] 0.0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
494.324 428.855 m 44.367 428.855 l S Q
|
|
||||||
52.375 237.07 m 55.574 240.273 l 44.367 237.07 l 55.574 233.87 l h
|
|
||||||
52.375 237.07 m f*
|
|
||||||
0.800568 w
|
|
||||||
q 1 -0.000000000000000122 -0.000000000000000122 -1 0 665.924988 cm
|
|
||||||
52.375 428.855 m 55.574 425.652 l 44.367 428.855 l 55.574 432.055 l h
|
|
||||||
52.375 428.855 m S Q
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 345.308594 116.777039 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<020a>-1<0b>1<03>20<020c0a>-1<0b>1<08>-1<0c0d>-1<0203>-1<040203>-1<0c
|
|
||||||
190206>1<0e>-1<0f>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 215.416064 85.139587 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<03>21<020a>-1<020704020d10>-1<11>-1<05>-1<121311>-1<0c05>-1<12140c11>-1<15
|
|
||||||
11>-1<14160c0111>-1<13>54<1511>-1<130c1811>-1<20>]TJ
|
|
||||||
ET
|
|
||||||
0.701961 g
|
|
||||||
0.8 w
|
|
||||||
[ 1.6 3.2] 0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
44.281 227.516 451.742 75.965 re S Q
|
|
||||||
[ 1.6 3.2] 0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
43.477 375.402 451.738 75.961 re S Q
|
|
||||||
[ 1.6 3.2] 0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
43.477 531.371 451.738 75.961 re S Q
|
|
||||||
0 g
|
|
||||||
BT
|
|
||||||
9.6 0 0 9.6 233.439209 138.249939 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0a>-1<06>1<070208>-1<0910>-1<1907>1<0d>-1<0a>-1<0b>1<08>-1<08>-1<020a>-1<09>-1<07>1<0b
|
|
||||||
08>]TJ
|
|
||||||
ET
|
|
||||||
0.8 g
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 46.878833 549.018738 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0d0203>-1<040203>-1<10>-1<03>21<020a>-1<020704020d10>-1<1c08>-1<1910>-1<1c
|
|
||||||
0a>-1<0a>-1<022109>-1<1009>-1<22>-1<02100a>-1<0b08>-1<08>-1<020a>-1<09
|
|
||||||
070b>1<08>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 45.262585 422.951697 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0d0203>-1<040203>-1<10>-1<0d0208>-1<190d>-1<10191c>-1<091c>-1<1009>-1<0b>1<10>-1<09
|
|
||||||
22>-1<0210>-1<0a>-1<06>1<070208>-1<09>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 45.262588 246.781092 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0d0203>-1<040203>-1<10>-1<03>21<020a>-1<020704020d10>-1<191c09>-1<1c
|
|
||||||
10>-1<0d0208>-1<09>-1<10232410>-1<0a>-1<06>1<070208>-1<09>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 45.262585 101.319128 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0d0203>-1<040203>-1<10>-1<03>21<020a>-1<020704020d10>-1<25>-1<0a>-1<0b>1<08>-1<08>-1<02
|
|
||||||
0a>-1<09>-1<07>1<0b08>-1<100a>-1<060b>1<0d>-1<021925>]TJ
|
|
||||||
ET
|
|
||||||
0 g
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 347.920971 516.693861 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0a>-1<1c0606>1<231c>-1<0a>-1<26>-1<100a>-1<1c>-1<06>1<06021927>-1<10
|
|
||||||
0c1c>-1<19190e0f>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 345.595336 393.859315 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0a>-1<1c0606>1<231c>-1<0a>-1<26>-1<100a>-1<1c>-1<06>1<06021927>-1<10
|
|
||||||
0c191c>-1<091c>-1<0e0f>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 348.430322 64.95365 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0a>-1<1c0606>1<231c>-1<0a>-1<26>-1<100a>-1<1c>-1<06>1<06021927>-1<10
|
|
||||||
0c1902060e0f>]TJ
|
|
||||||
ET
|
|
||||||
Q Q
|
|
||||||
showpage
|
|
||||||
%%Trailer
|
|
||||||
count op_count sub {pop} repeat
|
|
||||||
countdictstack dict_count sub {end} repeat
|
|
||||||
cairo_eps_state restore
|
|
||||||
%%EOF
|
|
Before Width: | Height: | Size: 66 KiB |
|
@ -1,513 +0,0 @@
|
||||||
%!PS-Adobe-3.0 EPSF-3.0
|
|
||||||
%%Creator: cairo 1.10.2 (http://cairographics.org)
|
|
||||||
%%CreationDate: Wed Jul 13 18:29:41 2011
|
|
||||||
%%Pages: 1
|
|
||||||
%%BoundingBox: 0 -1 546 666
|
|
||||||
%%DocumentData: Clean7Bit
|
|
||||||
%%LanguageLevel: 2
|
|
||||||
%%EndComments
|
|
||||||
%%BeginProlog
|
|
||||||
/cairo_eps_state save def
|
|
||||||
/dict_count countdictstack def
|
|
||||||
/op_count count 1 sub def
|
|
||||||
userdict begin
|
|
||||||
/q { gsave } bind def
|
|
||||||
/Q { grestore } bind def
|
|
||||||
/cm { 6 array astore concat } bind def
|
|
||||||
/w { setlinewidth } bind def
|
|
||||||
/J { setlinecap } bind def
|
|
||||||
/j { setlinejoin } bind def
|
|
||||||
/M { setmiterlimit } bind def
|
|
||||||
/d { setdash } bind def
|
|
||||||
/m { moveto } bind def
|
|
||||||
/l { lineto } bind def
|
|
||||||
/c { curveto } bind def
|
|
||||||
/h { closepath } bind def
|
|
||||||
/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
|
|
||||||
0 exch rlineto 0 rlineto closepath } bind def
|
|
||||||
/S { stroke } bind def
|
|
||||||
/f { fill } bind def
|
|
||||||
/f* { eofill } bind def
|
|
||||||
/n { newpath } bind def
|
|
||||||
/W { clip } bind def
|
|
||||||
/W* { eoclip } bind def
|
|
||||||
/BT { } bind def
|
|
||||||
/ET { } bind def
|
|
||||||
/pdfmark where { pop globaldict /?pdfmark /exec load put }
|
|
||||||
{ globaldict begin /?pdfmark /pop load def /pdfmark
|
|
||||||
/cleartomark load def end } ifelse
|
|
||||||
/BDC { mark 3 1 roll /BDC pdfmark } bind def
|
|
||||||
/EMC { mark /EMC pdfmark } bind def
|
|
||||||
/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
|
|
||||||
/Tj { show currentpoint cairo_store_point } bind def
|
|
||||||
/TJ {
|
|
||||||
{
|
|
||||||
dup
|
|
||||||
type /stringtype eq
|
|
||||||
{ show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
|
|
||||||
} forall
|
|
||||||
currentpoint cairo_store_point
|
|
||||||
} bind def
|
|
||||||
/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
|
|
||||||
cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
|
|
||||||
/Tf { pop /cairo_font exch def /cairo_font_matrix where
|
|
||||||
{ pop cairo_selectfont } if } bind def
|
|
||||||
/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
|
|
||||||
/cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
|
|
||||||
/cairo_font where { pop cairo_selectfont } if } bind def
|
|
||||||
/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
|
|
||||||
cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
|
|
||||||
/g { setgray } bind def
|
|
||||||
/rg { setrgbcolor } bind def
|
|
||||||
/d1 { setcachedevice } bind def
|
|
||||||
%%EndProlog
|
|
||||||
11 dict begin
|
|
||||||
/FontType 42 def
|
|
||||||
/FontName /DejaVuSans def
|
|
||||||
/PaintType 0 def
|
|
||||||
/FontMatrix [ 1 0 0 1 0 0 ] def
|
|
||||||
/FontBBox [ 0 0 0 0 ] def
|
|
||||||
/Encoding 256 array def
|
|
||||||
0 1 255 { Encoding exch /.notdef put } for
|
|
||||||
Encoding 1 /uni0053 put
|
|
||||||
Encoding 2 /uni0065 put
|
|
||||||
Encoding 3 /uni0072 put
|
|
||||||
Encoding 4 /uni0076 put
|
|
||||||
Encoding 5 /uni0043 put
|
|
||||||
Encoding 6 /uni006C put
|
|
||||||
Encoding 7 /uni0069 put
|
|
||||||
Encoding 8 /uni006E put
|
|
||||||
Encoding 9 /uni0074 put
|
|
||||||
Encoding 10 /uni0063 put
|
|
||||||
Encoding 11 /uni006F put
|
|
||||||
Encoding 12 /uni005F put
|
|
||||||
Encoding 13 /uni0073 put
|
|
||||||
Encoding 14 /uni0028 put
|
|
||||||
Encoding 15 /uni0029 put
|
|
||||||
Encoding 16 /uni0020 put
|
|
||||||
Encoding 17 /uni0045 put
|
|
||||||
Encoding 18 /uni004F put
|
|
||||||
Encoding 19 /uni0052 put
|
|
||||||
Encoding 20 /uni004E put
|
|
||||||
Encoding 21 /uni0056 put
|
|
||||||
Encoding 22 /uni0054 put
|
|
||||||
Encoding 23 /uni004C put
|
|
||||||
Encoding 24 /uni0049 put
|
|
||||||
Encoding 25 /uni0041 put
|
|
||||||
Encoding 26 /uni0044 put
|
|
||||||
Encoding 27 /uni0064 put
|
|
||||||
Encoding 28 /uni006D put
|
|
||||||
Encoding 29 /uni0075 put
|
|
||||||
Encoding 30 /uni0061 put
|
|
||||||
Encoding 31 /uni002D put
|
|
||||||
Encoding 32 /uni003E put
|
|
||||||
Encoding 33 /uni0067 put
|
|
||||||
/CharStrings 34 dict dup begin
|
|
||||||
/.notdef 0 def
|
|
||||||
/uni0053 1 def
|
|
||||||
/uni0065 2 def
|
|
||||||
/uni0072 3 def
|
|
||||||
/uni0076 4 def
|
|
||||||
/uni0043 5 def
|
|
||||||
/uni006C 6 def
|
|
||||||
/uni0069 7 def
|
|
||||||
/uni006E 8 def
|
|
||||||
/uni0074 9 def
|
|
||||||
/uni0063 10 def
|
|
||||||
/uni006F 11 def
|
|
||||||
/uni005F 12 def
|
|
||||||
/uni0073 13 def
|
|
||||||
/uni0028 14 def
|
|
||||||
/uni0029 15 def
|
|
||||||
/uni0020 16 def
|
|
||||||
/uni0045 17 def
|
|
||||||
/uni004F 18 def
|
|
||||||
/uni0052 19 def
|
|
||||||
/uni004E 20 def
|
|
||||||
/uni0056 21 def
|
|
||||||
/uni0054 22 def
|
|
||||||
/uni004C 23 def
|
|
||||||
/uni0049 24 def
|
|
||||||
/uni0041 25 def
|
|
||||||
/uni0044 26 def
|
|
||||||
/uni0064 27 def
|
|
||||||
/uni006D 28 def
|
|
||||||
/uni0075 29 def
|
|
||||||
/uni0061 30 def
|
|
||||||
/uni002D 31 def
|
|
||||||
/uni003E 32 def
|
|
||||||
/uni0067 33 def
|
|
||||||
end readonly def
|
|
||||||
/sfnts [
|
|
||||||
<00010000000a008000030020636d61700155f1ee00001470000000826376742000691d390000
|
|
||||||
14f4000001fe6670676d7134766a000016f4000000ab676c796664fd74e8000000ac000013c4
|
|
||||||
68656164f5a89196000017a000000036686865610cb80673000017d800000024686d74789c88
|
|
||||||
1111000017fc000000886c6f6361000156ac000018840000008c6d617870048f067100001910
|
|
||||||
00000020707265703b07f100000019300000056800020066fe96046605a400030007001a400c
|
|
||||||
04fb0006fb0108057f0204002fc4d4ec310010d4ecd4ec301311211125211121660400fc7303
|
|
||||||
1bfce5fe96070ef8f272062900010087ffe304a205f00027007e403c0d0c020e0b021e1f1e08
|
|
||||||
0902070a021f1f1e420a0b1e1f0415010015a11494189511049500942591118c281e0a0b1f1b
|
|
||||||
0700221b190e2d071914222810dcc4ecfcece4111239393939310010e4f4e4ec10eef6ee10c6
|
|
||||||
111739304b535807100eed11173907100eed1117395922b20f2901015db61f292f294f29035d
|
|
||||||
01152e012322061514161f011e0115140421222627351e013332363534262f012e0135342433
|
|
||||||
3216044873cc5fa5b377a67ae2d7feddfee76aef807bec72adbc879a7be2ca0117f569da05a4
|
|
||||||
c53736807663651f192bd9b6d9e0302fd04546887e6e7c1f182dc0abc6e4260000020071ffe3
|
|
||||||
047f047b0014001b00704024001501098608880515a90105b90c01bb18b912b80c8c1c1b1502
|
|
||||||
081508004b02120f451c10fcecf4ecc4111239310010e4f4ece410ee10ee10f4ee1112393040
|
|
||||||
293f1d701da01dd01df01d053f003f013f023f153f1b052c072f082f092c0a6f006f016f026f
|
|
||||||
156f1b095d71015d0115211e0133323637150e01232000111000333200072e0123220607047f
|
|
||||||
fcb20ccdb76ac76263d06bfef4fec70129fce20107b802a5889ab90e025e5abec73434ae2a2c
|
|
||||||
0138010a01130143feddc497b4ae9e00000100ba0000034a047b001100304014060b0700110b
|
|
||||||
03870eb809bc070a06080008461210fcc4ec3231002fe4f4ecc4d4cc11123930b450139f1302
|
|
||||||
015d012e012322061511231133153e0133321617034a1f492c9ca7b9b93aba85132e1c03b412
|
|
||||||
11cbbefdb20460ae6663050500000001003d0000047f0460000600fb40270311040504021101
|
|
||||||
0205050402110302060006011100000642020300bf0506050302010504000710d44bb00a5458
|
|
||||||
b90000004038594bb014544bb015545b58b90000ffc03859c4173931002fec3239304b535807
|
|
||||||
1005ed071008ed071008ed071005ed592201408e48026a027b027f02860280029102a4020806
|
|
||||||
00060109030904150015011a031a0426002601290329042008350035013a033a043008460046
|
|
||||||
0149034904460548064008560056015903590450086600660169036904670568066008750074
|
|
||||||
017b037b0475057a068500850189038904890586069600960197029a03980498059706a805a7
|
|
||||||
06b008c008df08ff083e5d005d133309013301233dc3015e015ec3fe5cfa0460fc5403acfba0
|
|
||||||
000000010073ffe3052705f000190036401a0da10eae0a951101a100ae04951791118c1a0719
|
|
||||||
0d003014101a10fcec32ec310010e4f4ecf4ec10eef6ee30b40f1b1f1b02015d01152e012320
|
|
||||||
0011100021323637150e01232000111000213216052766e782ff00fef00110010082e7666aed
|
|
||||||
84feadfe7a0186015386ed0562d55f5efec7fed8fed9fec75e5fd34848019f01670168019f47
|
|
||||||
0000000100c100000179061400030022b7009702010800460410fcec31002fec30400d100540
|
|
||||||
05500560057005f00506015d13331123c1b8b80614f9ec00000200c100000179061400030007
|
|
||||||
002b400e06be04b100bc020501080400460810fc3cec3231002fe4fcec30400b100940095009
|
|
||||||
6009700905015d1333112311331523c1b8b8b8b80460fba00614e900000100ba00000464047b
|
|
||||||
001300364019030900030e0106870e11b80cbc0a010208004e0d09080b461410fcec32f4ec31
|
|
||||||
002f3ce4f4c4ec1112173930b46015cf1502015d0111231134262322061511231133153e0133
|
|
||||||
32160464b87c7c95acb9b942b375c1c602a4fd5c029e9f9ebea4fd870460ae6564ef00010037
|
|
||||||
000002f2059e0013003840190e05080f03a9001101bc08870a0b08090204000810120e461410
|
|
||||||
fc3cc4fc3cc432393931002fecf43cc4ec3211393930b2af1501015d01112115211114163b01
|
|
||||||
152322263511233533110177017bfe854b73bdbdd5a28787059efec28ffda0894e9a9fd20260
|
|
||||||
8f013e00000000010071ffe303e7047b0019003f401b00860188040e860d880ab91104b917b8
|
|
||||||
118c1a07120d004814451a10fce432ec310010e4f4ec10fef4ee10f5ee30400b0f1b101b801b
|
|
||||||
901ba01b05015d01152e0123220615141633323637150e0123220011100021321603e74e9d50
|
|
||||||
b3c6c6b3509d4e4da55dfdfed6012d010655a20435ac2b2be3cdcde32b2baa2424013e010e01
|
|
||||||
12013a23000000020071ffe30475047b000b0017004a401306b91200b90cb8128c1809120f51
|
|
||||||
031215451810fcecf4ec310010e4f4ec10ee3040233f197b007b067f077f087f097f0a7f0b7b
|
|
||||||
0c7f0d7f0e7f0f7f107f117b12a019f01911015d012206151416333236353426273200111000
|
|
||||||
232200111000027394acab9593acac93f00112feeef0f1feef011103dfe7c9c9e7e8c8c7e99c
|
|
||||||
fec8feecfeedfec7013901130114013800000001ffecfe1d0414feac0003000fb500a9010002
|
|
||||||
0410c4c43100d4ec30011521350414fbd8feac8f8f0000000001006fffe303c7047b002700e7
|
|
||||||
403c0d0c020e0b531f1e080902070a531f1f1e420a0b1e1f041500860189041486158918b911
|
|
||||||
04b925b8118c281e0a0b1f1b0700521b080e07081422452810fcc4ecd4ece411123939393931
|
|
||||||
0010e4f4ec10fef5ee10f5ee121739304b535807100eed111739070eed1117395922b2002701
|
|
||||||
015d406d1c0a1c0b1c0c2e092c0a2c0b2c0c3b093b0a3b0b3b0c0b200020012402280a280b2a
|
|
||||||
132f142f152a16281e281f292029212427860a860b860c860d12000000010202060a060b030c
|
|
||||||
030d030e030f03100319031a031b031c041d09272f293f295f297f2980299029a029f029185d
|
|
||||||
005d7101152e012322061514161f011e0115140623222627351e013332363534262f012e0135
|
|
||||||
3436333216038b4ea85a898962943fc4a5f7d85ac36c66c661828c65ab40ab98e0ce66b4043f
|
|
||||||
ae282854544049210e2a99899cb62323be353559514b50250f2495829eac1e000000000100b0
|
|
||||||
fef2027b0612000d0037400f069800970e0d070003120600130a0e10dc4bb0135458b9000aff
|
|
||||||
c038594bb00f5458b9000a00403859e432ec113939310010fcec300106021514121723260235
|
|
||||||
341237027b86828385a0969594970612e6fe3ee7e7fe3be5eb01c6e0df01c4ec000100a4fef2
|
|
||||||
026f0612000d001f400f079800970e0701000b12041308000e10dc3cf4ec113939310010fcec
|
|
||||||
301333161215140207233612353402a4a096959596a08583830612ecfe3cdfe0fe3aebe501c5
|
|
||||||
e7e701c20000000100c90000048b05d5000b002e401506950402950081089504ad0a05010907
|
|
||||||
031c00040c10fcec32d4c4c431002fececf4ec10ee30b21f0d01015d13211521112115211121
|
|
||||||
1521c903b0fd1a02c7fd3902f8fc3e05d5aafe46aafde3aa000000020073ffe305d905f0000b
|
|
||||||
00170023401306951200950c91128c1809190f33031915101810fcecfcec310010e4f4ec10ee
|
|
||||||
300122001110003332001110002720001110002120001110000327dcfefd0103dcdc0101feff
|
|
||||||
dc013a0178fe88fec6fec5fe870179054cfeb8fee5fee6feb80148011a011b0148a4fe5bfe9e
|
|
||||||
fe9ffe5b01a40162016201a50000000200c90000055405d50013001c00b14035090807030a06
|
|
||||||
1103040305110404034206040015030415950914950d810b040506031109001c160e050a1919
|
|
||||||
04113f140a1c0c041d10fcec32fcc4ec1117391139393931002f3cf4ecd4ec12391239123930
|
|
||||||
4b5358071005ed071005ed1117395922b2401e01015d40427a13010500050105020603070415
|
|
||||||
00150114021603170425002501250226032706260726082609201e3601360246014602680575
|
|
||||||
047505771388068807980698071f5d005d011e01171323032e012b0111231121201615140601
|
|
||||||
1133323635342623038d417b3ecdd9bf4a8b78dcca01c80100fc83fd89fe9295959202bc1690
|
|
||||||
7efe68017f9662fd8905d5d6d88dba024ffdee8783838500000100c90000053305d500090079
|
|
||||||
401e071101020102110607064207020300af0805060107021c0436071c00040a10fcecfcec11
|
|
||||||
393931002f3cec323939304b5358071004ed071004ed5922b21f0b01015d4030360238074802
|
|
||||||
4707690266078002070601090615011a06460149065701580665016906790685018a0695019a
|
|
||||||
069f0b105d005d13210111331121011123c901100296c4fef0fd6ac405d5fb1f04e1fa2b04e1
|
|
||||||
fb1f000100100000056805d5000600b740270411050605031102030606050311040300010002
|
|
||||||
1101010042030401af0006040302000505010710d4c4173931002fec3239304b5358071005ed
|
|
||||||
071008ed071008ed071005ed5922b2500801015d406200032a03470447055a037d0383030706
|
|
||||||
00070208040906150114021a041a052a002601260229042905250620083800330133023c043c
|
|
||||||
053706480045014502490449054706590056066602690469057a007601760279047905750680
|
|
||||||
0898009706295d005d21013309013301024afdc6d301d901dad2fdc705d5fb1704e9fa2b0001
|
|
||||||
fffa000004e905d50007004a400e0602950081040140031c0040050810d4e4fce431002ff4ec
|
|
||||||
3230014bb00a5458bd00080040000100080008ffc03811373859401300091f00100110021f07
|
|
||||||
1009400970099f09095d03211521112311210604effdeecbfdee05d5aafad5052b00000100c9
|
|
||||||
0000046a05d500050025400c0295008104011c033a00040610fcecec31002fe4ec3040093007
|
|
||||||
50078003800404015d133311211521c9ca02d7fc5f05d5fad5aa000100c90000019305d50003
|
|
||||||
002eb700af02011c00040410fc4bb0105458b9000000403859ec31002fec3001400d30054005
|
|
||||||
500560058f059f05065d13331123c9caca05d5fa2b00000200100000056805d50002000a00c2
|
|
||||||
404100110100040504021105050401110a030a0011020003030a071105040611050504091103
|
|
||||||
0a08110a030a4200030795010381090509080706040302010009050a0b10d4c4173931002f3c
|
|
||||||
e4d4ec1239304b5358071005ed0705ed071005ed0705ed071008ed071005ed071005ed071008
|
|
||||||
ed5922b2200c01015d40420f010f020f070f080f005800760070008c00090701080206030904
|
|
||||||
1601190256015802500c67016802780176027c0372047707780887018802800c980299039604
|
|
||||||
175d005d090121013301230321032302bcfeee0225fe7be50239d288fd5f88d5050efd1903ae
|
|
||||||
fa2b017ffe810000000200c9000005b005d500080011002e4015009509810195100802100a00
|
|
||||||
05190d32001c09041210fcecf4ec113939393931002fecf4ec30b2601301015d011133200011
|
|
||||||
1000212521200011100029010193f40135011ffee1fecbfe42019f01b20196fe68fe50fe6105
|
|
||||||
2ffb770118012e012c0117a6fe97fe80fe7efe96000000020071ffe3045a06140010001c0038
|
|
||||||
40191ab9000e14b905088c0eb801970317040008024711120b451d10fcecf4ec323231002fec
|
|
||||||
e4f4c4ec10c4ee30b6601e801ea01e03015d0111331123350e01232202111000333216011416
|
|
||||||
33323635342623220603a2b8b83ab17ccbff00ffcb7cb1fdc7a79292a8a89292a703b6025ef9
|
|
||||||
eca86461014401080108014461fe15cbe7e7cbcbe7e7000100ba0000071d047b0022005a4026
|
|
||||||
061209180f00061d07150c871d2003b81bbc19100700110f0808065011080f501c18081a4623
|
|
||||||
10fcec32fcfcfcec11123931002f3c3ce4f43cc4ec32111217393040133024502470249024a0
|
|
||||||
24a024bf24df24ff2409015d013e013332161511231134262322061511231134262322061511
|
|
||||||
231133153e01333216042945c082afbeb972758fa6b972778da6b9b93fb0797aab03897c76f5
|
|
||||||
e2fd5c029ea19cbea4fd87029ea29bbfa3fd870460ae67627c000000000200aeffe30458047b
|
|
||||||
00130014003b401c030900030e0106870e118c0a01bc14b80c0d0908140b4e020800461510fc
|
|
||||||
ecf439ec3231002fe4e432f4c4ec1112173930b46f15c01502015d1311331114163332363511
|
|
||||||
331123350e0123222601aeb87c7c95adb8b843b175c1c801cf01ba02a6fd619f9fbea4027bfb
|
|
||||||
a0ac6663f003a8000002007bffe3042d047b000a002500bc4027191f0b17090e00a91706b90e
|
|
||||||
1120861fba1cb923b8118c170c001703180d09080b1f030814452610fcecccd4ec3232113939
|
|
||||||
31002fc4e4f4fcf4ec10c6ee10ee11391139123930406e301d301e301f3020302130223f2740
|
|
||||||
1d401e401f402040214022501d501e501f50205021502250277027851d871e871f8720872185
|
|
||||||
229027a027f0271e301e301f30203021401e401f40204021501e501f50205021601e601f6020
|
|
||||||
6021701e701f70207021801e801f80208021185d015d0122061514163332363d01371123350e
|
|
||||||
01232226353436332135342623220607353e0133321602bedfac816f99b9b8b83fbc88accbfd
|
|
||||||
fb0102a79760b65465be5af3f00233667b6273d9b4294cfd81aa6661c1a2bdc0127f8b2e2eaa
|
|
||||||
2727fc000001006401df027f028300030011b6009c020401000410dccc310010d4ec30132115
|
|
||||||
2164021bfde50283a400000100d9005e05db04a60006004f402b069c0006030403059c040403
|
|
||||||
009c010201069c05060202014206050302000504a801a7070602240400230710fc3cec393100
|
|
||||||
10f4ec1739304b5358071008ed071004ed071004ed071008ed592213350115013501d90502fa
|
|
||||||
fe040603f0b6fe2fa6fe2fb6016d000000020071fe56045a047b000b0028004a4023190c1d09
|
|
||||||
12861316b90f03b92623b827bc09b90fbd1a1d261900080c4706121220452910fcc4ecf4ec32
|
|
||||||
3231002fc4e4ece4f4c4ec10fed5ee1112393930b6602a802aa02a03015d0134262322061514
|
|
||||||
1633323617100221222627351e013332363d010e0123220211101233321617353303a2a59594
|
|
||||||
a5a59495a5b8fefefa61ac51519e52b5b439b27ccefcfcce7cb239b8023dc8dcdcc8c7dcdceb
|
|
||||||
fee2fee91d1eb32c2abdbf5b6362013a01030104013a6263aa00000000020003000000000014
|
|
||||||
00010000000000340004002000000004000400010000f021ffff0000f000ffff100000010000
|
|
||||||
00000006004e0000000000220000000100020003000400050006000700080009000a000b000c
|
|
||||||
000d000e000f0010001100120013001400150016001700180019001a001b001c001d001e001f
|
|
||||||
002000210000013500b800cb00cb00c100aa009c01a600b800660000007100cb00a002b20085
|
|
||||||
007500b800c301cb0189022d00cb00a600f000d300aa008700cb03aa0400014a003300cb0000
|
|
||||||
00d9050200f4015400b4009c01390114013907060400044e04b4045204b804e704cd00370473
|
|
||||||
04cd04600473013303a2055605a60556053903c5021200c9001f00b801df007300ba03e90333
|
|
||||||
03bc0444040e00df03cd03aa00e503aa0404000000cb008f00a4007b00b80014016f007f027b
|
|
||||||
0252008f00c705cd009a009a006f00cb00cd019e01d300f000ba018300d5009803040248009e
|
|
||||||
01d500c100cb00f600830354027f00000333026600d300c700a400cd008f009a0073040005d5
|
|
||||||
010a00fe022b00a400b4009c00000062009c0000001d032d05d505d505d505f0007f007b0054
|
|
||||||
00a406b80614072301d300b800cb00a601c301ec069300a000d3035c037103db0185042304a8
|
|
||||||
0448008f0139011401390360008f05d5019a0614072306660179046004600460047b009c0000
|
|
||||||
0277046001aa00e904600762007b00c5007f027b000000b4025205cd006600bc006600770610
|
|
||||||
00cd013b01850389008f007b0000001d00cd074a042f009c009c0000077d006f0000006f0335
|
|
||||||
006a006f007b00ae00b2002d0396008f027b00f600830354063705f6008f009c04e10266008f
|
|
||||||
018d02f600cd03440029006604ee00730000140000960000b707060504030201002c2010b002
|
|
||||||
254964b040515820c859212d2cb002254964b040515820c859212d2c20100720b00050b00d79
|
|
||||||
20b8ffff5058041b0559b0051cb0032508b0042523e120b00050b00d7920b8ffff5058041b05
|
|
||||||
59b0051cb0032508e12d2c4b505820b0fd454459212d2cb002254560442d2c4b5358b00225b0
|
|
||||||
022545445921212d2c45442d2cb00225b0022549b00525b005254960b0206368208a108a233a
|
|
||||||
8a10653a2d0000010000000251eb2c7ea7b85f0f3cf5001f080000000000c896fa5500000000
|
|
||||||
c896fa55f7d6fcae0d72095500000008000000010000000000010000076dfe1d00000de2f7d6
|
|
||||||
fa510d7200010000000000000000000000000000002204cd00660514008704ec0071034a00ba
|
|
||||||
04bc003d05960073023900c1023900c1051200ba032300370466007104e500710400ffec042b
|
|
||||||
006f031f00b0031f00a4028b0000050e00c9064c0073058f00c905fc00c90579001004e3fffa
|
|
||||||
047500c9025c00c905790010062900c90514007107cb00ba051200ae04e7007b02e3006406b4
|
|
||||||
00d90514007100000000000000440000013c0000021000000280000003a40000043c00000478
|
|
||||||
000004c800000540000005bc00000654000006f80000072400000884000008f40000094c0000
|
|
||||||
094c000009ac00000a3800000b4c00000bf400000cd400000d4400000d8800000dd000000ecc
|
|
||||||
00000f4c00000fe4000010a80000112c0000125800001284000012fc000013c4000100000022
|
|
||||||
0354002b0068000c000200100099000800000415021600080004b8028040fffbfe03fa1403f9
|
|
||||||
2503f83203f79603f60e03f5fe03f4fe03f32503f20e03f19603f02503ef8a4105effe03ee96
|
|
||||||
03ed9603ecfa03ebfa03eafe03e93a03e84203e7fe03e63203e5e45305e59603e48a4105e453
|
|
||||||
03e3e22f05e3fa03e22f03e1fe03e0fe03df3203de1403dd9603dcfe03db1203da7d03d9bb03
|
|
||||||
d8fe03d68a4105d67d03d5d44705d57d03d44703d3d21b05d3fe03d21b03d1fe03d0fe03cffe
|
|
||||||
03cefe03cd9603cccb1e05ccfe03cb1e03ca3203c9fe03c6851105c61c03c51603c4fe03c3fe
|
|
||||||
03c2fe03c1fe03c0fe03bffe03befe03bdfe03bcfe03bbfe03ba1103b9862505b9fe03b8b7bb
|
|
||||||
05b8fe03b7b65d05b7bb03b78004b6b52505b65d40ff03b64004b52503b4fe03b39603b2fe03
|
|
||||||
b1fe03b0fe03affe03ae6403ad0e03acab2505ac6403abaa1205ab2503aa1203a98a4105a9fa
|
|
||||||
03a8fe03a7fe03a6fe03a51203a4fe03a3a20e05a33203a20e03a16403a08a4105a096039ffe
|
|
||||||
039e9d0c059efe039d0c039c9b19059c64039b9a10059b19039a1003990a0398fe0397960d05
|
|
||||||
97fe03960d03958a410595960394930e05942803930e0392fa039190bb0591fe03908f5d0590
|
|
||||||
bb039080048f8e25058f5d038f40048e25038dfe038c8b2e058cfe038b2e038a8625058a4103
|
|
||||||
89880b05891403880b03878625058764038685110586250385110384fe038382110583fe0382
|
|
||||||
110381fe0380fe037ffe0340ff7e7d7d057efe037d7d037c64037b5415057b25037afe0379fe
|
|
||||||
03780e03770c03760a0375fe0374fa0373fa0372fa0371fa0370fe036ffe036efe036c21036b
|
|
||||||
fe036a1142056a530369fe03687d036711420566fe0365fe0364fe0363fe0362fe03613a0360
|
|
||||||
fa035e0c035dfe035bfe035afe0359580a0559fa03580a035716190557320356fe0355541505
|
|
||||||
55420354150353011005531803521403514a130551fe03500b034ffe034e4d10054efe034d10
|
|
||||||
034cfe034b4a13054bfe034a4910054a1303491d0d05491003480d0347fe0346960345960344
|
|
||||||
fe0343022d0543fa0342bb03414b0340fe033ffe033e3d12053e14033d3c0f053d12033c3b0d
|
|
||||||
053c40ff0f033b0d033afe0339fe033837140538fa033736100537140336350b05361003350b
|
|
||||||
03341e03330d0332310b0532fe03310b03302f0b05300d032f0b032e2d09052e10032d09032c
|
|
||||||
32032b2a25052b64032a2912052a25032912032827250528410327250326250b05260f03250b
|
|
||||||
0324fe0323fe03220f03210110052112032064031ffa031e1d0d051e64031d0d031c1142051c
|
|
||||||
fe031bfa031a42031911420519fe031864031716190517fe031601100516190315fe0314fe03
|
|
||||||
13fe031211420512fe0311022d05114203107d030f64030efe030d0c16050dfe030c0110050c
|
|
||||||
16030bfe030a100309fe0308022d0508fe030714030664030401100504fe03401503022d0503
|
|
||||||
fe0302011005022d0301100300fe0301b80164858d012b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b002b2b
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
|
||||||
2b2b2b1d00>
|
|
||||||
] def
|
|
||||||
/f-0-0 currentdict end definefont pop
|
|
||||||
%%Page: 1 1
|
|
||||||
%%BeginPageSetup
|
|
||||||
%%PageBoundingBox: 0 -1 546 666
|
|
||||||
%%EndPageSetup
|
|
||||||
q 0 -1 546 667 rectclip q
|
|
||||||
0 665.925 546 -666 re W n
|
|
||||||
0 g
|
|
||||||
0.663875 w
|
|
||||||
0 J
|
|
||||||
0 j
|
|
||||||
[] 0.0 d
|
|
||||||
4 M q 1 0 0 -1 0 665.924988 cm
|
|
||||||
0.332 0.91 92.867 57.141 re S Q
|
|
||||||
BT
|
|
||||||
16 0 0 16 20.902991 631.872559 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
<010203040203>Tj
|
|
||||||
ET
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
452.164 0.34 92.867 57.141 re S Q
|
|
||||||
BT
|
|
||||||
16 0 0 16 472.736133 632.443994 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
<050607020809>Tj
|
|
||||||
ET
|
|
||||||
1.029478 w
|
|
||||||
[ 4.117912 4.117912] 0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
41.453 63.719 m 41.453 665.922 l S Q
|
|
||||||
[ 4.117912 4.117912] 0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
500.469 61.043 m 500.469 663.246 l S Q
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 312.98374 563.66853 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<020a>-1<0b>1<03>20<020c0a>-1<0b>1<08>-1<0c0d>-1<0203>-1<040203>-1<0c
|
|
||||||
0a>-1<0b>1<08>-1<08>-1<020a>-1<09>-1<0e0f>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 47.919678 540.232996 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<03>21<020a>-1<020704020d10>-1<11>-1<05>-1<121311>-1<0c05>-1<12140c11>-1<15
|
|
||||||
11>-1<14160c05>-1<171811>-1<14160c191a>1<1a>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 216.362964 515.060583 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<03>21<020a>-1<020704020d10>-1<11>-1<05>-1<121311>-1<0c05>-1<12140c11>-1<15
|
|
||||||
11>-1<14160c0111>-1<13>54<1511>-1<130c191a>1<1a>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 44.687207 414.165955 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<020a>-1<0b>1<03>20<020c0a>-1<0b>1<08>-1<0c0a>-1<0607>1<0208>-1<09>-1<0c
|
|
||||||
0d0208>-1<1b0e>-1<0f>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 215.566675 397.882874 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<03>21<020a>-1<020704020d10>-1<11>-1<05>-1<121311>-1<0c05>-1<12140c11>-1<15
|
|
||||||
11>-1<14160c0111>-1<13>54<1511>-1<130c1a>18<19>79<16>77<19>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 334.803003 271.936462 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<020a>-1<0b>1<03>20<020c0a>-1<0b>1<08>-1<0c0d>-1<0203>-1<040203>-1<0c
|
|
||||||
0d0208>-1<1b0e>-1<0f>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 46.65733 249.188416 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<03>21<020a>-1<020704020d10>-1<11>-1<05>-1<121311>-1<0c05>-1<12140c11>-1<15
|
|
||||||
11>-1<14160c05>-1<171811>-1<14160c1a>18<19>78<16>78<19>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
9.6 0 0 9.6 205.503491 441.642078 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0a>-1<0b>1<1c>-1<1d>-1<08>-1<07>1<0a>-1<1e>-1<09070b>1<08>-1<10>-1<0d
|
|
||||||
0203>-1<040203>-1<10>-1<1f2010>-1<0a>-1<06>1<070208>-1<09>]TJ
|
|
||||||
ET
|
|
||||||
0.8 w
|
|
||||||
[] 0.0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
43.879 280.043 m 493.195 280.043 l S Q
|
|
||||||
485.195 385.882 m 481.996 382.683 l 493.195 385.882 l 481.996 389.081 l
|
|
||||||
h
|
|
||||||
485.195 385.882 m f*
|
|
||||||
0.8 w
|
|
||||||
q -1 0 0 1 0 665.924988 cm
|
|
||||||
-485.195 -280.043 m -481.996 -283.242 l -493.195 -280.043 l -481.996
|
|
||||||
-276.844 l h
|
|
||||||
-485.195 -280.043 m S Q
|
|
||||||
0.701961 g
|
|
||||||
0.8 w
|
|
||||||
[ 1.6 3.2] 0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
44.688 81.246 451.738 75.961 re S Q
|
|
||||||
0 g
|
|
||||||
BT
|
|
||||||
9.6 0 0 9.6 205.503491 590.33656 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0a>-1<06>1<070208>-1<0910>-1<0a>-1<0b>1<08>-1<08>-1<020a>-1<09>-1<07>1<08>-1<21
|
|
||||||
10>-1<0b>1<08>-1<10>-1<0d0203>-1<040203>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
9.6 0 0 9.6 207.119751 293.639929 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0a>-1<0b>1<1c>-1<1d>-1<08>-1<07>1<0a>-1<1e>-1<09070b>1<08>-1<10>-1<0a>-1<06>1<07
|
|
||||||
0208>-1<0910>-1<1f2010>-1<0d0203>-1<040203>]TJ
|
|
||||||
ET
|
|
||||||
0.800568 w
|
|
||||||
[] 0.0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
494.324 428.855 m 44.367 428.855 l S Q
|
|
||||||
52.375 237.07 m 55.574 240.273 l 44.367 237.07 l 55.574 233.87 l h
|
|
||||||
52.375 237.07 m f*
|
|
||||||
0.800568 w
|
|
||||||
q 1 -0.000000000000000122 -0.000000000000000122 -1 0 665.924988 cm
|
|
||||||
52.375 428.855 m 55.574 425.652 l 44.367 428.855 l 55.574 432.055 l h
|
|
||||||
52.375 428.855 m S Q
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 345.308594 116.777039 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<020a>-1<0b>1<03>20<020c0a>-1<0b>1<08>-1<0c0d>-1<0203>-1<040203>-1<0c
|
|
||||||
1b0206>1<0e>-1<0f>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 46.506689 96.453308 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<03>21<020a>-1<020704020d10>-1<11>-1<05>-1<121311>-1<0c05>-1<12140c11>-1<15
|
|
||||||
11>-1<14160c05>-1<171811>-1<14160c1a11>-1<17>]TJ
|
|
||||||
ET
|
|
||||||
BT
|
|
||||||
12.8 0 0 12.8 215.416064 79.482751 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<03>21<020a>-1<020704020d10>-1<11>-1<05>-1<121311>-1<0c05>-1<12140c11>-1<15
|
|
||||||
11>-1<14160c0111>-1<13>54<1511>-1<130c1a11>-1<17>]TJ
|
|
||||||
ET
|
|
||||||
0.701961 g
|
|
||||||
0.8 w
|
|
||||||
[ 1.6 3.2] 0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
44.281 227.516 451.742 75.965 re S Q
|
|
||||||
[ 1.6 3.2] 0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
43.477 375.402 451.738 75.961 re S Q
|
|
||||||
[ 1.6 3.2] 0 d
|
|
||||||
q 1 0 0 -1 0 665.924988 cm
|
|
||||||
43.477 531.371 451.738 75.961 re S Q
|
|
||||||
0 g
|
|
||||||
BT
|
|
||||||
9.6 0 0 9.6 233.439209 138.249939 Tm
|
|
||||||
/f-0-0 1 Tf
|
|
||||||
[<0a>-1<06>1<070208>-1<0910>-1<1b07>1<0d>-1<0a>-1<0b>1<08>-1<08>-1<020a>-1<09>-1<07>1<0b
|
|
||||||
08>]TJ
|
|
||||||
ET
|
|
||||||
Q Q
|
|
||||||
showpage
|
|
||||||
%%Trailer
|
|
||||||
count op_count sub {pop} repeat
|
|
||||||
countdictstack dict_count sub {end} repeat
|
|
||||||
cairo_eps_state restore
|
|
||||||
%%EOF
|
|
Before Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 105 KiB |
Before Width: | Height: | Size: 113 KiB |
|
@ -1,486 +0,0 @@
|
||||||
/*
|
|
||||||
* This file contain a custom doxygen style to match e.org graphics
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
|
|
||||||
font-family: Geneva, Arial, Helvetica, sans-serif;
|
|
||||||
}*/
|
|
||||||
BODY, TD {
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
H1 {
|
|
||||||
text-align: center;
|
|
||||||
font-size: 160%;
|
|
||||||
}
|
|
||||||
H2 {
|
|
||||||
font-size: 120%;
|
|
||||||
}
|
|
||||||
H3 {
|
|
||||||
font-size: 100%;
|
|
||||||
}
|
|
||||||
CAPTION {
|
|
||||||
font-weight: bold
|
|
||||||
}
|
|
||||||
DIV.qindex {
|
|
||||||
width: 100%;
|
|
||||||
background-color: #e8eef2;
|
|
||||||
border: 1px solid #84b0c7;
|
|
||||||
text-align: center;
|
|
||||||
margin: 2px;
|
|
||||||
padding: 2px;
|
|
||||||
line-height: 140%;
|
|
||||||
}
|
|
||||||
DIV.navpath {
|
|
||||||
width: 100%;
|
|
||||||
background-color: #e8eef2;
|
|
||||||
border: 1px solid #84b0c7;
|
|
||||||
text-align: center;
|
|
||||||
margin: 2px;
|
|
||||||
padding: 2px;
|
|
||||||
line-height: 140%;
|
|
||||||
}
|
|
||||||
DIV.navtab {
|
|
||||||
background-color: #e8eef2;
|
|
||||||
border: 1px solid #84b0c7;
|
|
||||||
text-align: center;
|
|
||||||
margin: 2px;
|
|
||||||
margin-right: 15px;
|
|
||||||
padding: 2px;
|
|
||||||
}
|
|
||||||
TD.navtab {
|
|
||||||
font-size: 70%;
|
|
||||||
}
|
|
||||||
A.qindex {
|
|
||||||
text-decoration: none;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #1A419D;
|
|
||||||
}
|
|
||||||
A.qindex:visited {
|
|
||||||
text-decoration: none;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #1A419D
|
|
||||||
}
|
|
||||||
A.qindex:hover {
|
|
||||||
text-decoration: none;
|
|
||||||
background-color: #ddddff;
|
|
||||||
}
|
|
||||||
A.qindexHL {
|
|
||||||
text-decoration: none;
|
|
||||||
font-weight: bold;
|
|
||||||
background-color: #6666cc;
|
|
||||||
color: #ffffff;
|
|
||||||
border: 1px double #9295C2;
|
|
||||||
}
|
|
||||||
A.qindexHL:hover {
|
|
||||||
text-decoration: none;
|
|
||||||
background-color: #6666cc;
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
A.qindexHL:visited {
|
|
||||||
text-decoration: none;
|
|
||||||
background-color: #6666cc;
|
|
||||||
color: #ffffff
|
|
||||||
}
|
|
||||||
A.el {
|
|
||||||
text-decoration: none;
|
|
||||||
font-weight: bold
|
|
||||||
}
|
|
||||||
A.elRef {
|
|
||||||
font-weight: bold
|
|
||||||
}
|
|
||||||
A.code:link {
|
|
||||||
text-decoration: none;
|
|
||||||
font-weight: normal;
|
|
||||||
color: #0000FF
|
|
||||||
}
|
|
||||||
A.code:visited {
|
|
||||||
text-decoration: none;
|
|
||||||
font-weight: normal;
|
|
||||||
color: #0000FF
|
|
||||||
}
|
|
||||||
A.codeRef:link {
|
|
||||||
font-weight: normal;
|
|
||||||
color: #0000FF
|
|
||||||
}
|
|
||||||
A.codeRef:visited {
|
|
||||||
font-weight: normal;
|
|
||||||
color: #0000FF
|
|
||||||
}
|
|
||||||
A:hover, A:visited:hover {
|
|
||||||
text-decoration: none;
|
|
||||||
/* background-color: #f2f2ff; */
|
|
||||||
color: #000055;
|
|
||||||
}
|
|
||||||
A.anchor {
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
DL.el {
|
|
||||||
margin-left: -1cm
|
|
||||||
}
|
|
||||||
.fragment {
|
|
||||||
font-family: monospace, fixed;
|
|
||||||
font-size: 95%;
|
|
||||||
}
|
|
||||||
PRE.fragment {
|
|
||||||
border: 1px solid #CCCCCC;
|
|
||||||
background-color: #f5f5f5;
|
|
||||||
margin-top: 4px;
|
|
||||||
margin-bottom: 4px;
|
|
||||||
margin-left: 2px;
|
|
||||||
margin-right: 8px;
|
|
||||||
padding-left: 6px;
|
|
||||||
padding-right: 6px;
|
|
||||||
padding-top: 4px;
|
|
||||||
padding-bottom: 4px;
|
|
||||||
}
|
|
||||||
DIV.ah {
|
|
||||||
background-color: black;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #ffffff;
|
|
||||||
margin-bottom: 3px;
|
|
||||||
margin-top: 3px
|
|
||||||
}
|
|
||||||
|
|
||||||
DIV.groupHeader {
|
|
||||||
margin-left: 16px;
|
|
||||||
margin-top: 12px;
|
|
||||||
margin-bottom: 6px;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
DIV.groupText {
|
|
||||||
margin-left: 16px;
|
|
||||||
font-style: italic;
|
|
||||||
font-size: 90%
|
|
||||||
}
|
|
||||||
/*BODY {
|
|
||||||
background: white;
|
|
||||||
color: black;
|
|
||||||
margin-right: 20px;
|
|
||||||
margin-left: 20px;
|
|
||||||
}*/
|
|
||||||
TD.indexkey {
|
|
||||||
background-color: #e8eef2;
|
|
||||||
font-weight: bold;
|
|
||||||
padding-right : 10px;
|
|
||||||
padding-top : 2px;
|
|
||||||
padding-left : 10px;
|
|
||||||
padding-bottom : 2px;
|
|
||||||
margin-left : 0px;
|
|
||||||
margin-right : 0px;
|
|
||||||
margin-top : 2px;
|
|
||||||
margin-bottom : 2px;
|
|
||||||
border: 1px solid #CCCCCC;
|
|
||||||
}
|
|
||||||
TD.indexvalue {
|
|
||||||
background-color: #e8eef2;
|
|
||||||
font-style: italic;
|
|
||||||
padding-right : 10px;
|
|
||||||
padding-top : 2px;
|
|
||||||
padding-left : 10px;
|
|
||||||
padding-bottom : 2px;
|
|
||||||
margin-left : 0px;
|
|
||||||
margin-right : 0px;
|
|
||||||
margin-top : 2px;
|
|
||||||
margin-bottom : 2px;
|
|
||||||
border: 1px solid #CCCCCC;
|
|
||||||
}
|
|
||||||
TR.memlist {
|
|
||||||
background-color: #f0f0f0;
|
|
||||||
}
|
|
||||||
P.formulaDsp {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
IMG.formulaDsp {
|
|
||||||
}
|
|
||||||
IMG.formulaInl {
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
SPAN.keyword { color: #008000 }
|
|
||||||
SPAN.keywordtype { color: #604020 }
|
|
||||||
SPAN.keywordflow { color: #e08000 }
|
|
||||||
SPAN.comment { color: #800000 }
|
|
||||||
SPAN.preprocessor { color: #806020 }
|
|
||||||
SPAN.stringliteral { color: #002080 }
|
|
||||||
SPAN.charliteral { color: #008080 }
|
|
||||||
SPAN.vhdldigit { color: #ff00ff }
|
|
||||||
SPAN.vhdlchar { color: #000000 }
|
|
||||||
SPAN.vhdlkeyword { color: #700070 }
|
|
||||||
SPAN.vhdllogic { color: #ff0000 }
|
|
||||||
|
|
||||||
.mdescLeft {
|
|
||||||
padding: 0px 8px 4px 8px;
|
|
||||||
font-size: 80%;
|
|
||||||
font-style: italic;
|
|
||||||
background-color: #FAFAFA;
|
|
||||||
border-top: 1px none #E0E0E0;
|
|
||||||
border-right: 1px none #E0E0E0;
|
|
||||||
border-bottom: 1px none #E0E0E0;
|
|
||||||
border-left: 1px none #E0E0E0;
|
|
||||||
margin: 0px;
|
|
||||||
}
|
|
||||||
.mdescRight {
|
|
||||||
padding: 0px 8px 4px 8px;
|
|
||||||
font-size: 80%;
|
|
||||||
font-style: italic;
|
|
||||||
background-color: #FAFAFA;
|
|
||||||
border-top: 1px none #E0E0E0;
|
|
||||||
border-right: 1px none #E0E0E0;
|
|
||||||
border-bottom: 1px none #E0E0E0;
|
|
||||||
border-left: 1px none #E0E0E0;
|
|
||||||
margin: 0px;
|
|
||||||
}
|
|
||||||
.memItemLeft {
|
|
||||||
padding: 1px 0px 0px 8px;
|
|
||||||
margin: 4px;
|
|
||||||
border-top-width: 1px;
|
|
||||||
border-right-width: 1px;
|
|
||||||
border-bottom-width: 1px;
|
|
||||||
border-left-width: 1px;
|
|
||||||
border-top-color: #E0E0E0;
|
|
||||||
border-right-color: #E0E0E0;
|
|
||||||
border-bottom-color: #E0E0E0;
|
|
||||||
border-left-color: #E0E0E0;
|
|
||||||
border-top-style: solid;
|
|
||||||
border-right-style: none;
|
|
||||||
border-bottom-style: none;
|
|
||||||
border-left-style: none;
|
|
||||||
background-color: #FAFAFA;
|
|
||||||
font-size: 80%;
|
|
||||||
}
|
|
||||||
.memItemRight {
|
|
||||||
padding: 1px 8px 0px 8px;
|
|
||||||
margin: 4px;
|
|
||||||
border-top-width: 1px;
|
|
||||||
border-right-width: 1px;
|
|
||||||
border-bottom-width: 1px;
|
|
||||||
border-left-width: 1px;
|
|
||||||
border-top-color: #E0E0E0;
|
|
||||||
border-right-color: #E0E0E0;
|
|
||||||
border-bottom-color: #E0E0E0;
|
|
||||||
border-left-color: #E0E0E0;
|
|
||||||
border-top-style: solid;
|
|
||||||
border-right-style: none;
|
|
||||||
border-bottom-style: none;
|
|
||||||
border-left-style: none;
|
|
||||||
background-color: #FAFAFA;
|
|
||||||
font-size: 80%;
|
|
||||||
}
|
|
||||||
.memTemplItemLeft {
|
|
||||||
padding: 1px 0px 0px 8px;
|
|
||||||
margin: 4px;
|
|
||||||
border-top-width: 1px;
|
|
||||||
border-right-width: 1px;
|
|
||||||
border-bottom-width: 1px;
|
|
||||||
border-left-width: 1px;
|
|
||||||
border-top-color: #E0E0E0;
|
|
||||||
border-right-color: #E0E0E0;
|
|
||||||
border-bottom-color: #E0E0E0;
|
|
||||||
border-left-color: #E0E0E0;
|
|
||||||
border-top-style: none;
|
|
||||||
border-right-style: none;
|
|
||||||
border-bottom-style: none;
|
|
||||||
border-left-style: none;
|
|
||||||
background-color: #FAFAFA;
|
|
||||||
font-size: 80%;
|
|
||||||
}
|
|
||||||
.memTemplItemRight {
|
|
||||||
padding: 1px 8px 0px 8px;
|
|
||||||
margin: 4px;
|
|
||||||
border-top-width: 1px;
|
|
||||||
border-right-width: 1px;
|
|
||||||
border-bottom-width: 1px;
|
|
||||||
border-left-width: 1px;
|
|
||||||
border-top-color: #E0E0E0;
|
|
||||||
border-right-color: #E0E0E0;
|
|
||||||
border-bottom-color: #E0E0E0;
|
|
||||||
border-left-color: #E0E0E0;
|
|
||||||
border-top-style: none;
|
|
||||||
border-right-style: none;
|
|
||||||
border-bottom-style: none;
|
|
||||||
border-left-style: none;
|
|
||||||
background-color: #FAFAFA;
|
|
||||||
font-size: 80%;
|
|
||||||
}
|
|
||||||
.memTemplParams {
|
|
||||||
padding: 1px 0px 0px 8px;
|
|
||||||
margin: 4px;
|
|
||||||
border-top-width: 1px;
|
|
||||||
border-right-width: 1px;
|
|
||||||
border-bottom-width: 1px;
|
|
||||||
border-left-width: 1px;
|
|
||||||
border-top-color: #E0E0E0;
|
|
||||||
border-right-color: #E0E0E0;
|
|
||||||
border-bottom-color: #E0E0E0;
|
|
||||||
border-left-color: #E0E0E0;
|
|
||||||
border-top-style: solid;
|
|
||||||
border-right-style: none;
|
|
||||||
border-bottom-style: none;
|
|
||||||
border-left-style: none;
|
|
||||||
color: #606060;
|
|
||||||
background-color: #FAFAFA;
|
|
||||||
font-size: 80%;
|
|
||||||
}
|
|
||||||
.search {
|
|
||||||
color: #003399;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
FORM.search {
|
|
||||||
margin-bottom: 0px;
|
|
||||||
margin-top: 0px;
|
|
||||||
}
|
|
||||||
INPUT.search {
|
|
||||||
font-size: 75%;
|
|
||||||
color: #000080;
|
|
||||||
font-weight: normal;
|
|
||||||
background-color: #e8eef2;
|
|
||||||
}
|
|
||||||
TD.tiny {
|
|
||||||
font-size: 75%;
|
|
||||||
}
|
|
||||||
a {
|
|
||||||
color: #1A41A8;
|
|
||||||
}
|
|
||||||
a:visited {
|
|
||||||
color: #2A3798;
|
|
||||||
}
|
|
||||||
.dirtab {
|
|
||||||
padding: 4px;
|
|
||||||
border-collapse: collapse;
|
|
||||||
border: 1px solid #84b0c7;
|
|
||||||
}
|
|
||||||
TH.dirtab {
|
|
||||||
background: #e8eef2;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
HR {
|
|
||||||
height: 1px;
|
|
||||||
border: none;
|
|
||||||
border-top: 1px solid black;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Style for detailed member documentation */
|
|
||||||
.memtemplate {
|
|
||||||
font-size: 80%;
|
|
||||||
color: #606060;
|
|
||||||
font-weight: normal;
|
|
||||||
margin-left: 3px;
|
|
||||||
}
|
|
||||||
.memnav {
|
|
||||||
background-color: #eeeeee;
|
|
||||||
border: 1px solid #dddddd;
|
|
||||||
text-align: center;
|
|
||||||
margin: 2px;
|
|
||||||
margin-right: 15px;
|
|
||||||
padding: 2px;
|
|
||||||
}
|
|
||||||
.memitem {
|
|
||||||
padding: 4px;
|
|
||||||
background-color: #eeeeee;
|
|
||||||
border-width: 1px;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: #dddddd;
|
|
||||||
-moz-border-radius: 4px 4px 4px 4px;
|
|
||||||
}
|
|
||||||
.memname {
|
|
||||||
white-space: nowrap;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
.memdoc{
|
|
||||||
padding-left: 10px;
|
|
||||||
}
|
|
||||||
.memproto {
|
|
||||||
background-color: #111111;
|
|
||||||
width: 100%;
|
|
||||||
border-width: 1px;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: #000000;
|
|
||||||
font-weight: bold;
|
|
||||||
-moz-border-radius: 4px 4px 4px 4px;
|
|
||||||
}
|
|
||||||
.paramkey {
|
|
||||||
text-align: right;
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
.paramtype {
|
|
||||||
white-space: nowrap;
|
|
||||||
color: #aaaaaa;
|
|
||||||
}
|
|
||||||
.paramname {
|
|
||||||
color: #ff0000;
|
|
||||||
font-style: italic;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
/* End Styling for detailed member documentation */
|
|
||||||
|
|
||||||
/* for the tree view */
|
|
||||||
.ftvtree {
|
|
||||||
font-family: sans-serif;
|
|
||||||
margin:0.5em;
|
|
||||||
}
|
|
||||||
/* these are for tree view when used as main index */
|
|
||||||
.directory {
|
|
||||||
font-size: 9pt;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.directory h3 {
|
|
||||||
margin: 0px;
|
|
||||||
margin-top: 1em;
|
|
||||||
font-size: 11pt;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* The following two styles can be used to replace the root node title */
|
|
||||||
/* with an image of your choice. Simply uncomment the next two styles, */
|
|
||||||
/* specify the name of your image and be sure to set 'height' to the */
|
|
||||||
/* proper pixel height of your image. */
|
|
||||||
|
|
||||||
/* .directory h3.swap { */
|
|
||||||
/* height: 61px; */
|
|
||||||
/* background-repeat: no-repeat; */
|
|
||||||
/* background-image: url("yourimage.gif"); */
|
|
||||||
/* } */
|
|
||||||
/* .directory h3.swap span { */
|
|
||||||
/* display: none; */
|
|
||||||
/* } */
|
|
||||||
|
|
||||||
.directory > h3 {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
.directory p {
|
|
||||||
margin: 0px;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
.directory div {
|
|
||||||
display: none;
|
|
||||||
margin: 0px;
|
|
||||||
}
|
|
||||||
.directory img {
|
|
||||||
vertical-align: -30%;
|
|
||||||
}
|
|
||||||
/* these are for tree view when not used as main index */
|
|
||||||
.directory-alt {
|
|
||||||
font-size: 100%;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.directory-alt h3 {
|
|
||||||
margin: 0px;
|
|
||||||
margin-top: 1em;
|
|
||||||
font-size: 11pt;
|
|
||||||
}
|
|
||||||
.directory-alt > h3 {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
.directory-alt p {
|
|
||||||
margin: 0px;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
.directory-alt div {
|
|
||||||
display: none;
|
|
||||||
margin: 0px;
|
|
||||||
}
|
|
||||||
.directory-alt img {
|
|
||||||
vertical-align: -30%;
|
|
||||||
}
|
|
||||||
|
|
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 24 KiB |
|
@ -1,11 +0,0 @@
|
||||||
prefix=@prefix@
|
|
||||||
exec_prefix=@exec_prefix@
|
|
||||||
libdir=@libdir@
|
|
||||||
includedir=@includedir@
|
|
||||||
|
|
||||||
Name: ecore-config
|
|
||||||
Description: E core library, Config module
|
|
||||||
@pkgconfig_requires_private@: @requirements_ecore_config@
|
|
||||||
Version: @VERSION@
|
|
||||||
Libs: -L${libdir} -lecore_config
|
|
||||||
Cflags: -I${includedir}/ecore-@VMAJ@
|
|
|
@ -1,233 +0,0 @@
|
||||||
# Conditional build stuff; from rpm 4.4 /usr/lib/rpm/macros.
|
|
||||||
# bcond_without defaults to WITH, and vice versa. Yes, it's
|
|
||||||
# ass-backward. Blame PLD.
|
|
||||||
# from KainX's changes to evas...
|
|
||||||
%if %{!?with:1}0
|
|
||||||
%define with() %{expand:%%{?with_%{1}:1}%%{!?with_%{1}:0}}
|
|
||||||
%endif
|
|
||||||
%if %{!?without:1}0
|
|
||||||
%define without() %{expand:%%{?with_%{1}:0}%%{!?with_%{1}:1}}
|
|
||||||
%endif
|
|
||||||
%if %{!?bcond_with:1}0
|
|
||||||
%define bcond_with() %{expand:%%{?_with_%{1}:%%global with_%{1} 1}}
|
|
||||||
%endif
|
|
||||||
%if %{!?bcond_without:1}0
|
|
||||||
%define bcond_without() %{expand:%%{!?_without_%{1}:%%global with_%{1} 1}}
|
|
||||||
%endif
|
|
||||||
|
|
||||||
## disabled features
|
|
||||||
%bcond_with lib_ecore_directfb
|
|
||||||
%bcond_with lib_ecore_sdl
|
|
||||||
|
|
||||||
## enabled features
|
|
||||||
##%bcond_without module_engine_software_x11
|
|
||||||
%bcond_without lib_ecore_fb
|
|
||||||
%bcond_without lib_ecore_imf
|
|
||||||
|
|
||||||
# This just keeps a missing doxygen from killing the build.
|
|
||||||
%define _missing_doc_files_terminate_build 0
|
|
||||||
|
|
||||||
%define breq_lib_ecore_directfb %{?with_lib_ecore_directfb:DirectFB}
|
|
||||||
%define breq_lib_ecore_sdl %{?with_lib_ecore_sdl:SDL-devel}
|
|
||||||
|
|
||||||
%define ac_with_lib_ecore_directfb --%{?with_lib_ecore_directfb:en}%{!?with_lib_ecore_directfb:dis}able-ecore-directfb
|
|
||||||
%define ac_with_lib_ecore_fb --%{?with_lib_ecore_fb:en}%{!?with_lib_ecore_fb:dis}able-ecore-fb
|
|
||||||
%define ac_with_lib_ecore_imf --%{?with_lib_ecore_imf:en}%{!?with_lib_ecore_imf:dis}able-ecore-imf
|
|
||||||
%define ac_with_lib_ecore_sdl --%{?with_lib_ecore_sdl:en}%{!?with_lib_ecore_sdl:dis}able-ecore-sdl
|
|
||||||
|
|
||||||
%{!?_rel:%{expand:%%global _rel 0.enl%{?dist}}}
|
|
||||||
|
|
||||||
Summary: Enlightened Core X interface library
|
|
||||||
Name: @PACKAGE@
|
|
||||||
Version: @VERSION@
|
|
||||||
Release: %{_rel}
|
|
||||||
License: BSD
|
|
||||||
Group: User Interface/X
|
|
||||||
Source: %{name}-%{version}.tar.gz
|
|
||||||
URL: http://www.enlightenment.org
|
|
||||||
Packager: %{?_packager:%{_packager}}%{!?_packager:Michael Jennings <mej@eterm.org>}
|
|
||||||
Vendor: %{?_vendorinfo:%{_vendorinfo}}%{!?_vendorinfo:The Enlightenment Project (http://www.enlightenment.org/)}
|
|
||||||
Distribution: %{?_distribution:%{_distribution}}%{!?_distribution:%{_vendor}}
|
|
||||||
#BuildSuggests: xorg-x11-devel, XFree86-devel, libX11-devel, c-ares-devel
|
|
||||||
BuildRequires: libjpeg-devel, openssl-devel %{?breq_lib_ecore_directfb}
|
|
||||||
BuildRequires: curl-devel, efl-devel %{?breq_lib_ecore_sdl}
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-root
|
|
||||||
|
|
||||||
%description
|
|
||||||
Ecore is the event/X abstraction layer that makes doing selections,
|
|
||||||
Xdnd, general X stuff, event loops, timeouts and idle handlers fast,
|
|
||||||
optimized, and convenient. It's a separate library so anyone can make
|
|
||||||
use of the work put into Ecore to make this job easy for applications.
|
|
||||||
|
|
||||||
%package devel
|
|
||||||
Summary: Ecore headers and development libraries.
|
|
||||||
Group: Development/Libraries
|
|
||||||
Requires: %{name} = %{version}
|
|
||||||
Requires: curl-devel, openssl-devel, efl-devel
|
|
||||||
Requires: ecore-con, ecore-evas, ecore-file, ecore-ipc
|
|
||||||
Requires: ecore-x %{?with_lib_ecore_fb:ecore-fb} %{?with_lib_ecore_directfb:ecore-directfb}
|
|
||||||
|
|
||||||
%description devel
|
|
||||||
Ecore development files
|
|
||||||
|
|
||||||
%package con
|
|
||||||
Summary: Ecore Connection Library
|
|
||||||
Group: Development/Libraries
|
|
||||||
Requires: %{name} = %{version}
|
|
||||||
|
|
||||||
%description con
|
|
||||||
Ecore Connection Library
|
|
||||||
|
|
||||||
%if %{with lib_ecore_directfb}
|
|
||||||
%package directfb
|
|
||||||
Summary: Ecore DirectFB system functions
|
|
||||||
Group: Development/Libraries
|
|
||||||
Requires: %{name} = %{version}
|
|
||||||
%description directfb
|
|
||||||
Ecore DirectFB system functions
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%package evas
|
|
||||||
Summary: Ecore Evas Wrapper Library
|
|
||||||
Group: Development/Libraries
|
|
||||||
Requires: %{name} = %{version}
|
|
||||||
|
|
||||||
%description evas
|
|
||||||
Ecore Evas Wrapper Library
|
|
||||||
|
|
||||||
%if %{with lib_ecore_fb}
|
|
||||||
%package fb
|
|
||||||
Summary: Ecore frame buffer system functions
|
|
||||||
Group: Development/Libraries
|
|
||||||
Requires: %{name} = %{version}
|
|
||||||
%description fb
|
|
||||||
Ecore frame buffer system functions
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%package file
|
|
||||||
Summary: Ecore File Library
|
|
||||||
Group: Development/Libraries
|
|
||||||
Requires: %{name} = %{version}
|
|
||||||
|
|
||||||
%description file
|
|
||||||
Ecore File Library
|
|
||||||
|
|
||||||
%if %{with lib_ecore_imf}
|
|
||||||
%package imf
|
|
||||||
Summary: Ecore IMF functions
|
|
||||||
Group: Development/Libraries
|
|
||||||
Requires: %{name} = %{version}
|
|
||||||
%description imf
|
|
||||||
Ecore IMF functions
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%package input
|
|
||||||
Summary: Ecore input functions
|
|
||||||
Group: Development/Libraries
|
|
||||||
Requires: %{name} = %{version}
|
|
||||||
|
|
||||||
%description input
|
|
||||||
Ecore input functions
|
|
||||||
|
|
||||||
%package ipc
|
|
||||||
Summary: Ecore inter-process communication functions
|
|
||||||
Group: Development/Libraries
|
|
||||||
Requires: %{name} = %{version}
|
|
||||||
|
|
||||||
%description ipc
|
|
||||||
Ecore inter-process communication functions
|
|
||||||
|
|
||||||
%package x
|
|
||||||
Summary: Ecore functions for dealing with the X Windows System
|
|
||||||
Group: Development/Libraries
|
|
||||||
Requires: %{name} = %{version}
|
|
||||||
|
|
||||||
%description x
|
|
||||||
Ecore functions for dealing with the X Windows System
|
|
||||||
|
|
||||||
%prep
|
|
||||||
%setup -q
|
|
||||||
|
|
||||||
%build
|
|
||||||
CFLAGS="-I/usr/kerberos/include -I/usr/X11R6/include/X11/extensions"
|
|
||||||
LDFLAGS="-L/usr/kerberos/lib -L/usr/X11R6/%{_lib}"
|
|
||||||
export CFLAGS LDFLAGS
|
|
||||||
%{configure} --prefix=%{_prefix} \
|
|
||||||
%{?ac_with_lib_ecore_directfb} \
|
|
||||||
%{?ac_with_lib_ecore_fb} \
|
|
||||||
%{?ac_with_lib_ecore_imf} \
|
|
||||||
%{?ac_with_lib_ecore_sdl}
|
|
||||||
|
|
||||||
%{__make} %{?_smp_mflags} %{?mflags}
|
|
||||||
|
|
||||||
%install
|
|
||||||
%{__make} %{?mflags_install} DESTDIR=$RPM_BUILD_ROOT install
|
|
||||||
%{find_lang} %{name}
|
|
||||||
|
|
||||||
%post
|
|
||||||
/sbin/ldconfig || :
|
|
||||||
|
|
||||||
%postun
|
|
||||||
/sbin/ldconfig || :
|
|
||||||
|
|
||||||
%clean
|
|
||||||
test "x$RPM_BUILD_ROOT" != "x/" && rm -rf $RPM_BUILD_ROOT
|
|
||||||
|
|
||||||
%files -f %{name}.lang
|
|
||||||
%defattr(-, root, root)
|
|
||||||
%doc AUTHORS COPYING* README*
|
|
||||||
%{_libdir}/libecore*.so.*
|
|
||||||
|
|
||||||
%files devel
|
|
||||||
%defattr(-, root, root)
|
|
||||||
%doc doc/html
|
|
||||||
%{_libdir}/*.so
|
|
||||||
%{_libdir}/ecore/immodules/*.so
|
|
||||||
%{_libdir}/ecore/immodules/*.la
|
|
||||||
%{_libdir}/*.la
|
|
||||||
%{_libdir}/*.a
|
|
||||||
%{_libdir}/pkgconfig/*
|
|
||||||
#%{_datadir}/aclocal/*
|
|
||||||
%{_includedir}/ecore-1/*.h
|
|
||||||
|
|
||||||
%files con
|
|
||||||
%defattr(-, root, root)
|
|
||||||
%{_libdir}/libecore_con*.so.*
|
|
||||||
|
|
||||||
%if %{with lib_ecore_directfb}
|
|
||||||
%files directfb
|
|
||||||
%defattr(-, root, root)
|
|
||||||
%{_libdir}/libecore_directfb*.so.*
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%files evas
|
|
||||||
%defattr(-, root, root)
|
|
||||||
%{_libdir}/libecore_evas*.so.*
|
|
||||||
|
|
||||||
%if %{with lib_ecore_fb}
|
|
||||||
%files fb
|
|
||||||
%defattr(-, root, root)
|
|
||||||
%{_libdir}/libecore_fb*.so.*
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%files file
|
|
||||||
%defattr(-, root, root)
|
|
||||||
%{_libdir}/libecore_file*.so.*
|
|
||||||
|
|
||||||
%if %{with lib_ecore_imf}
|
|
||||||
%files imf
|
|
||||||
%defattr(-, root, root)
|
|
||||||
%{_libdir}/libecore_imf*.so.*
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%files input
|
|
||||||
%defattr(-, root, root)
|
|
||||||
%{_libdir}/libecore_input*.so.*
|
|
||||||
|
|
||||||
%files ipc
|
|
||||||
%defattr(-, root, root)
|
|
||||||
%{_libdir}/libecore_ipc*.so.*
|
|
||||||
|
|
||||||
%files x
|
|
||||||
%defattr(-, root, root)
|
|
||||||
%{_libdir}/libecore_x*.so.*
|
|
|
@ -1,46 +0,0 @@
|
||||||
# $Id$
|
|
||||||
# valgrind suppression file for Ecore
|
|
||||||
#
|
|
||||||
{
|
|
||||||
BogusLeakError
|
|
||||||
Memcheck:Leak
|
|
||||||
fun:malloc
|
|
||||||
obj:/usr/X11R6/lib/libX11.so.6.2
|
|
||||||
fun:_XmbTextPropertyToTextList
|
|
||||||
fun:XmbTextPropertyToTextList
|
|
||||||
}
|
|
||||||
{
|
|
||||||
bogus2
|
|
||||||
Memcheck:Param
|
|
||||||
write(buf)
|
|
||||||
obj:/lib/ld-2.3.3.so
|
|
||||||
fun:_X11TransWrite
|
|
||||||
obj:/usr/X11R6/lib/libX11.so.6.2
|
|
||||||
fun:_XReply
|
|
||||||
}
|
|
||||||
{
|
|
||||||
bogus3
|
|
||||||
Memcheck:Cond
|
|
||||||
obj:/usr/X11R6/lib/libX11.so.6.2
|
|
||||||
obj:/usr/X11R6/lib/libX11.so.6.2
|
|
||||||
obj:/usr/X11R6/lib/libX11.so.6.2
|
|
||||||
fun:_XlcCreateLocaleDataBase
|
|
||||||
}
|
|
||||||
{
|
|
||||||
bogus4
|
|
||||||
Memcheck:Param
|
|
||||||
write(buf)
|
|
||||||
obj:/lib/ld-2.3.3.so
|
|
||||||
fun:_X11TransWrite
|
|
||||||
obj:/usr/X11R6/lib/libX11.so.6.2
|
|
||||||
fun:_XFlush
|
|
||||||
}
|
|
||||||
{
|
|
||||||
blah, blah, xlib sucks
|
|
||||||
Memcheck:Param
|
|
||||||
writev(vector[...])
|
|
||||||
obj:/lib/ld-2.3.3.so
|
|
||||||
obj:/usr/X11R6/lib/libX11.so.6.2
|
|
||||||
fun:_X11TransWritev
|
|
||||||
fun:_XSend
|
|
||||||
}
|
|
|
@ -1,41 +0,0 @@
|
||||||
dnl AC_ABSTRACT_SOCKET_TEST(ACTION_IF_FOUND, ACTION_IF_NOT_FOUND)
|
|
||||||
dnl test if a system supports the abstract socket namespace
|
|
||||||
dnl by rephorm
|
|
||||||
AC_DEFUN([AC_ABSTRACT_SOCKET_TEST], [
|
|
||||||
AC_MSG_CHECKING(abstract sockets)
|
|
||||||
AC_LANG_PUSH(C)
|
|
||||||
AC_RUN_IFELSE([AC_LANG_PROGRAM(
|
|
||||||
[[
|
|
||||||
// headers
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/un.h>
|
|
||||||
]],
|
|
||||||
[[
|
|
||||||
// main fn
|
|
||||||
#define ABS_SUN_LEN(s, path) (strlen(path) + 1 + (size_t)(((struct sockaddr_un *)NULL)->sun_path))
|
|
||||||
int fd;
|
|
||||||
struct sockaddr_un sock;
|
|
||||||
char *tmp;
|
|
||||||
char *name = "/ecore/dbus/abstract/test";
|
|
||||||
|
|
||||||
sock.sun_family = AF_UNIX;
|
|
||||||
snprintf(sock.sun_path, sizeof(sock.sun_path), ".%s", name);
|
|
||||||
sock.sun_path[0] = '\0';
|
|
||||||
fd = socket(PF_UNIX, SOCK_STREAM, 0);
|
|
||||||
if (bind(fd, (struct sockaddr *)&sock, ABS_SUN_LEN(&sock, name)) < 0)
|
|
||||||
{
|
|
||||||
printf("Failed to bind to abstract socket.\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
printf ("connected\n");
|
|
||||||
exit(0);
|
|
||||||
]])],
|
|
||||||
[$1],
|
|
||||||
[$2])
|
|
||||||
])
|
|
||||||
|
|
|
@ -1,47 +0,0 @@
|
||||||
dnl Copyright (C) 2004-2008 Kim Woelders
|
|
||||||
dnl Copyright (C) 2008 Vincent Torri <vtorri at univ-evry dot fr>
|
|
||||||
dnl That code is public domain and can be freely used or copied.
|
|
||||||
dnl Originally snatched from somewhere...
|
|
||||||
|
|
||||||
dnl Macro for checking if the compiler supports __attribute__
|
|
||||||
|
|
||||||
dnl Usage: AC_C___ATTRIBUTE__
|
|
||||||
dnl call AC_DEFINE for HAVE___ATTRIBUTE__ and __UNUSED__
|
|
||||||
dnl if the compiler supports __attribute__, HAVE___ATTRIBUTE__ is
|
|
||||||
dnl defined to 1 and __UNUSED__ is defined to __attribute__((unused))
|
|
||||||
dnl otherwise, HAVE___ATTRIBUTE__ is not defined and __UNUSED__ is
|
|
||||||
dnl defined to nothing.
|
|
||||||
|
|
||||||
AC_DEFUN([AC_C___ATTRIBUTE__],
|
|
||||||
[
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([for __attribute__])
|
|
||||||
|
|
||||||
AC_CACHE_VAL([ac_cv___attribute__],
|
|
||||||
[AC_TRY_COMPILE(
|
|
||||||
[
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
int func(int x);
|
|
||||||
int foo(int x __attribute__ ((unused)))
|
|
||||||
{
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[],
|
|
||||||
[ac_cv___attribute__="yes"],
|
|
||||||
[ac_cv___attribute__="no"]
|
|
||||||
)])
|
|
||||||
|
|
||||||
AC_MSG_RESULT($ac_cv___attribute__)
|
|
||||||
|
|
||||||
if test "x${ac_cv___attribute__}" = "xyes" ; then
|
|
||||||
AC_DEFINE([HAVE___ATTRIBUTE__], [1], [Define to 1 if your compiler has __attribute__])
|
|
||||||
AC_DEFINE([__UNUSED__], [__attribute__((unused))], [Macro declaring a function argument to be unused])
|
|
||||||
else
|
|
||||||
AC_DEFINE([__UNUSED__], [], [Macro declaring a function argument to be unused])
|
|
||||||
fi
|
|
||||||
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl End of ac_attribute.m4
|
|
|
@ -1,314 +0,0 @@
|
||||||
dnl use: ECORE_CHECK_POLL(default-enabled[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
|
|
||||||
AC_DEFUN([ECORE_CHECK_POLL],
|
|
||||||
[
|
|
||||||
_ecore_want_poll=$1
|
|
||||||
_ecore_have_poll="no"
|
|
||||||
|
|
||||||
AC_ARG_ENABLE(poll,
|
|
||||||
[AC_HELP_STRING([--disable-poll], [disable poll in the ecore_file module])],
|
|
||||||
[
|
|
||||||
if test "x${enableval}" = "xyes" ; then
|
|
||||||
_ecore_want_poll="yes"
|
|
||||||
else
|
|
||||||
_ecore_want_poll="no"
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
AC_MSG_CHECKING(whether polling is to be used for filemonitoring)
|
|
||||||
AC_MSG_RESULT(${_ecore_want_poll})
|
|
||||||
|
|
||||||
if test "x${_ecore_want_poll}" = "xyes" ; then
|
|
||||||
AC_DEFINE([HAVE_POLL], [1], [ File monitoring with polling ])
|
|
||||||
_ecore_have_poll="yes"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x${_ecore_have_poll}" = "xyes" ; then
|
|
||||||
m4_default([$2], [:])
|
|
||||||
else
|
|
||||||
m4_default([$3], [:])
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl use: ECORE_CHECK_INOTIFY(default-enabled[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
|
|
||||||
AC_DEFUN([ECORE_CHECK_INOTIFY],
|
|
||||||
[
|
|
||||||
_ecore_want_inotify=$1
|
|
||||||
_ecore_have_inotify="no"
|
|
||||||
|
|
||||||
_ecore_want_inotify="yes"
|
|
||||||
_ecore_have_inotify="no"
|
|
||||||
AC_ARG_ENABLE(inotify,
|
|
||||||
[AC_HELP_STRING([--disable-inotify], [disable inotify in the ecore_file module])],
|
|
||||||
[
|
|
||||||
if test "x${enableval}" = "xyes" ; then
|
|
||||||
_ecore_want_inotify="yes"
|
|
||||||
else
|
|
||||||
_ecore_want_inotify="no"
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
if test "x${_ecore_want_inotify}" = "xyes" ; then
|
|
||||||
AC_CHECK_HEADER([sys/inotify.h],
|
|
||||||
[
|
|
||||||
AC_DEFINE(HAVE_INOTIFY, 1, [ File monitoring with Inotify ])
|
|
||||||
_ecore_have_inotify="yes"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
_ecore_have_inotify="no"
|
|
||||||
])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_MSG_CHECKING(whether inotify is to be used for filemonitoring)
|
|
||||||
AC_MSG_RESULT($_ecore_have_inotify)
|
|
||||||
|
|
||||||
if test "x$_ecore_have_inotify" = "xyes" ; then
|
|
||||||
m4_default([$2], [:])
|
|
||||||
else
|
|
||||||
m4_default([$3], [:])
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl use: ECORE_CHECK_NOTIFY_WIN32(default-enabled[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
|
|
||||||
AC_DEFUN([ECORE_CHECK_NOTIFY_WIN32],
|
|
||||||
[
|
|
||||||
_ecore_want_notify_win32=$1
|
|
||||||
_ecore_have_notify_win32="no"
|
|
||||||
|
|
||||||
AC_ARG_ENABLE(notify-win32,
|
|
||||||
[AC_HELP_STRING([--disable-notify-win32], [disable Windows notification in the ecore_file module])],
|
|
||||||
[
|
|
||||||
if test "x${enableval}" = "xyes" ; then
|
|
||||||
_ecore_want_notify_win32="yes"
|
|
||||||
else
|
|
||||||
_ecore_want_notify_win32="no"
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
AC_MSG_CHECKING(whether Windows notification is to be used for filemonitoring)
|
|
||||||
AC_MSG_RESULT(${_ecore_want_notify_win32})
|
|
||||||
|
|
||||||
if test "x${_ecore_want_notify_win32}" = "xyes" ; then
|
|
||||||
AC_DEFINE([HAVE_NOTIFY_WIN32], [1], [ File monitoring with Windows notification ])
|
|
||||||
_ecore_have_notify_win32="yes"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x${_ecore_have_notify_win32}" = "xyes" ; then
|
|
||||||
m4_default([$2], [:])
|
|
||||||
else
|
|
||||||
m4_default([$3], [:])
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl use: ECORE_CHECK_CURL(default-enabled[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
|
|
||||||
AC_DEFUN([ECORE_CHECK_CURL],
|
|
||||||
[
|
|
||||||
_ecore_want_curl=$1
|
|
||||||
_ecore_have_curl="no"
|
|
||||||
|
|
||||||
AC_ARG_ENABLE([curl],
|
|
||||||
[AC_HELP_STRING([--disable-curl], [disable curl support])],
|
|
||||||
[
|
|
||||||
if test "x${enableval}" = "xyes" ; then
|
|
||||||
_ecore_want_curl="yes"
|
|
||||||
else
|
|
||||||
_ecore_want_curl="no"
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
if test "x${_ecore_want_curl}" = "xyes" ; then
|
|
||||||
PKG_CHECK_MODULES(CURL, libcurl,
|
|
||||||
[
|
|
||||||
AC_DEFINE(HAVE_CURL, 1, [ Downloading with CURL ])
|
|
||||||
_ecore_have_curl="yes"
|
|
||||||
],
|
|
||||||
[_ecore_have_curl="no"])
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$_ecore_have_curl" = "xyes" ; then
|
|
||||||
m4_default([$2], [:])
|
|
||||||
else
|
|
||||||
m4_default([$3], [:])
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl use: ECORE_CHECK_GNUTLS(default-enabled[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
|
|
||||||
AC_DEFUN([ECORE_CHECK_GNUTLS],
|
|
||||||
[
|
|
||||||
_ecore_want_gnutls=$1
|
|
||||||
_ecore_have_gnutls="no"
|
|
||||||
|
|
||||||
AC_ARG_ENABLE([gnutls],
|
|
||||||
[AC_HELP_STRING([--disable-gnutls], [disable gnutls support])],
|
|
||||||
[
|
|
||||||
if test "x${enableval}" = "xyes" ; then
|
|
||||||
_ecore_want_gnutls="yes"
|
|
||||||
else
|
|
||||||
_ecore_want_gnutls="no"
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
if test "x${_ecore_want_gnutls}" = "xyes" -o "x${_ecore_want_gnutls}" = "xauto" ; then
|
|
||||||
PKG_CHECK_MODULES([TLS], [gnutls >= 2.10.2],
|
|
||||||
[
|
|
||||||
AC_DEFINE([USE_GNUTLS], [1], [Use GnuTLS])
|
|
||||||
_ecore_have_gnutls="yes"
|
|
||||||
],
|
|
||||||
[_ecore_have_gnutls="no"])
|
|
||||||
# for ecore_con_ssl.c
|
|
||||||
PKG_CHECK_MODULES([TLS2], [gnutls >= 2.10.2],
|
|
||||||
[AC_DEFINE(USE_GNUTLS2, 1, [Use GnuTLS 2 or higher])],
|
|
||||||
[dummy="no"])
|
|
||||||
if test "x$_ecore_have_gnutls" = "xyes";then
|
|
||||||
AC_PATH_GENERIC([libgcrypt], [], [_ecore_have_gnutls="yes"], [_ecore_have_gnutls="no"])
|
|
||||||
if test "x${_ecore_have_gnutls}" = "xyes" ; then
|
|
||||||
TLS_CFLAGS="${TLS_CFLAGS} ${LIBGCRYPT_CFLAGS}"
|
|
||||||
TLS_LIBS="${TLS_LIBS} ${LIBGCRYPT_LIBS}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$_ecore_have_gnutls" = "xyes" ; then
|
|
||||||
ifelse([$2], , :, [$2])
|
|
||||||
else
|
|
||||||
ifelse([$3], , :, [$3])
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl use: ECORE_CHECK_OPENSSL(default-enabled[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
|
|
||||||
AC_DEFUN([ECORE_CHECK_OPENSSL],
|
|
||||||
[
|
|
||||||
_ecore_want_openssl=$1
|
|
||||||
_ecore_have_openssl="no"
|
|
||||||
|
|
||||||
AC_ARG_ENABLE(openssl,
|
|
||||||
[AC_HELP_STRING([--disable-openssl], [disable openssl support])],
|
|
||||||
[
|
|
||||||
if test "x${enableval}" = "xyes" ; then
|
|
||||||
_ecore_want_openssl="yes"
|
|
||||||
else
|
|
||||||
_ecore_want_openssl="no"
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
if test "x${_ecore_have_gnutls}" = "xyes";then
|
|
||||||
_ecore_want_openssl=no
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x${_ecore_want_openssl}" = "xyes" -o "x${_ecore_want_openssl}" = "xauto"; then
|
|
||||||
PKG_CHECK_MODULES([SSL],
|
|
||||||
[openssl],
|
|
||||||
[
|
|
||||||
AC_DEFINE(USE_OPENSSL, 1, [Use OpenSSL])
|
|
||||||
_ecore_have_openssl="yes"
|
|
||||||
],
|
|
||||||
[_ecore_have_openssl="no"])
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$_ecore_have_openssl" = "xyes" ; then
|
|
||||||
m4_default([$2], [:])
|
|
||||||
else
|
|
||||||
m4_default([$3], [:])
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl use: ECORE_CHECK_TSLIB(default-enabled[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
|
|
||||||
AC_DEFUN([ECORE_CHECK_TSLIB],
|
|
||||||
[
|
|
||||||
_tslib_requirement=""
|
|
||||||
_ecore_want_tslib=$1
|
|
||||||
_ecore_have_tslib="no"
|
|
||||||
TSLIB_LIBS=""
|
|
||||||
TSLIB_CFLAGS=""
|
|
||||||
|
|
||||||
AC_ARG_ENABLE([tslib],
|
|
||||||
[AC_HELP_STRING([--disable-tslib],
|
|
||||||
[disable the tslib support in ecore (currently ecore-fb).
|
|
||||||
@<:@default=detect@:>@])],
|
|
||||||
[
|
|
||||||
if test "x${enableval}" = "xyes" ; then
|
|
||||||
_ecore_want_tslib="yes"
|
|
||||||
else
|
|
||||||
_ecore_want_tslib="no"
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
if test "x${_ecore_want_tslib}" = "xyes" -o "x${_ecore_want_tslib}" = "xauto" ; then
|
|
||||||
PKG_CHECK_MODULES([TSLIB], [tslib-1.0],
|
|
||||||
[
|
|
||||||
AC_DEFINE(HAVE_TSLIB, 1, [Build Ecore_FB Touchscreen Code])
|
|
||||||
_ecore_have_tslib="yes"
|
|
||||||
_tslib_requirement="tslib-1.0"
|
|
||||||
],[
|
|
||||||
PKG_CHECK_MODULES([TSLIB], [tslib],
|
|
||||||
[
|
|
||||||
AC_DEFINE(HAVE_TSLIB, 1, [Build Ecore_FB Touchscreen Code])
|
|
||||||
_ecore_have_tslib="yes"
|
|
||||||
_tslib_requirement="tslib"
|
|
||||||
],[
|
|
||||||
AC_CHECK_HEADER([tslib.h],
|
|
||||||
[
|
|
||||||
AC_CHECK_LIB([ts], [ts_open],
|
|
||||||
[
|
|
||||||
TSLIB_LIBS="-lts"
|
|
||||||
TSLIB_CFLAGS=""
|
|
||||||
AC_DEFINE(HAVE_TSLIB, 1, [Build Ecore_FB Touchscreen Code])
|
|
||||||
_ecore_have_tslib="yes"
|
|
||||||
],[
|
|
||||||
AC_CHECK_LIB([tslib], [ts_open],
|
|
||||||
[
|
|
||||||
TSLIB_LIBS="-ltslib"
|
|
||||||
TSLIB_CFLAGS=""
|
|
||||||
AC_DEFINE(HAVE_TSLIB, 1, [Build Ecore_FB Touchscreen Code])
|
|
||||||
_ecore_have_tslib="yes"
|
|
||||||
],[
|
|
||||||
_ecore_have_tslib="no"
|
|
||||||
])
|
|
||||||
])
|
|
||||||
])
|
|
||||||
])
|
|
||||||
])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_SUBST(TSLIB_LIBS)
|
|
||||||
AC_SUBST(TSLIB_CFLAGS)
|
|
||||||
|
|
||||||
if test "x$_ecore_have_tslib" = "xyes" ; then
|
|
||||||
m4_default([$2], [:])
|
|
||||||
else
|
|
||||||
m4_default([$3], [:])
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl use: ECORE_CHECK_CARES(default-enabled[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
|
|
||||||
AC_DEFUN([ECORE_CHECK_CARES],
|
|
||||||
[
|
|
||||||
_ecore_want_cares=$1
|
|
||||||
_ecore_have_cares="no"
|
|
||||||
|
|
||||||
AC_ARG_ENABLE(cares,
|
|
||||||
[AC_HELP_STRING([--disable-cares], [disable cares support])],
|
|
||||||
[
|
|
||||||
if test "x${enableval}" = "xyes" ; then
|
|
||||||
_ecore_want_cares="yes"
|
|
||||||
else
|
|
||||||
_ecore_want_cares="no"
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
if test "x${_ecore_want_cares}" = "xyes" -o "x${_ecore_want_cares}" = "xauto" ; then
|
|
||||||
PKG_CHECK_MODULES([CARES], [libcares >= 1.6.1],
|
|
||||||
[_ecore_have_cares="yes"],
|
|
||||||
[_ecore_have_cares="no"])
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x${_ecore_have_cares}" = "xyes" ; then
|
|
||||||
AC_DEFINE([HAVE_CARES], [1], [Build Ecore_Con_Info with c-ares support])
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$_ecore_have_cares" = "xyes" ; then
|
|
||||||
m4_default([$2], [:])
|
|
||||||
else
|
|
||||||
m4_default([$3], [:])
|
|
||||||
fi
|
|
||||||
])
|
|
|
@ -1,57 +0,0 @@
|
||||||
dnl Copyright (C) 2010 Vincent Torri <vtorri at univ-evry dot fr>
|
|
||||||
dnl and Albin Tonnerre <albin dot tonnerre at gmail dot com>
|
|
||||||
dnl That code is public domain and can be freely used or copied.
|
|
||||||
|
|
||||||
dnl Macro that checks if a compiler flag is supported by the compiler.
|
|
||||||
|
|
||||||
dnl Usage: EFL_COMPILER_FLAG(flag)
|
|
||||||
dnl flag is added to CFLAGS if supported.
|
|
||||||
|
|
||||||
AC_DEFUN([EFL_COMPILER_FLAG],
|
|
||||||
[
|
|
||||||
|
|
||||||
CFLAGS_save="${CFLAGS}"
|
|
||||||
CFLAGS="${CFLAGS} $1"
|
|
||||||
|
|
||||||
AC_LANG_PUSH([C])
|
|
||||||
AC_MSG_CHECKING([whether the compiler supports $1])
|
|
||||||
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_PROGRAM([[]])],
|
|
||||||
[have_flag="yes"],
|
|
||||||
[have_flag="no"])
|
|
||||||
AC_MSG_RESULT([${have_flag}])
|
|
||||||
|
|
||||||
if test "x${have_flag}" = "xno" ; then
|
|
||||||
CFLAGS="${CFLAGS_save}"
|
|
||||||
fi
|
|
||||||
AC_LANG_POP([C])
|
|
||||||
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl Macro that checks if a linker flag is supported by the compiler.
|
|
||||||
|
|
||||||
dnl Usage: EFL_LINKER_FLAG(flag)
|
|
||||||
dnl flag is added to LDFLAGS if supported (will be passed to ld anyway).
|
|
||||||
|
|
||||||
AC_DEFUN([EFL_LINKER_FLAG],
|
|
||||||
[
|
|
||||||
|
|
||||||
LDFLAGS_save="${LDFLAGS}"
|
|
||||||
LDFLAGS="${LDFLAGS} $1"
|
|
||||||
|
|
||||||
AC_LANG_PUSH([C])
|
|
||||||
AC_MSG_CHECKING([whether the compiler supports $1])
|
|
||||||
|
|
||||||
AC_LINK_IFELSE(
|
|
||||||
[AC_LANG_PROGRAM([[]])],
|
|
||||||
[have_flag="yes"],
|
|
||||||
[have_flag="no"])
|
|
||||||
AC_MSG_RESULT([${have_flag}])
|
|
||||||
|
|
||||||
if test "x${have_flag}" = "xno" ; then
|
|
||||||
LDFLAGS="${LDFLAGS_save}"
|
|
||||||
fi
|
|
||||||
AC_LANG_POP([C])
|
|
||||||
|
|
||||||
])
|
|
|
@ -1,62 +0,0 @@
|
||||||
dnl Copyright (C) 2008 Vincent Torri <vtorri at univ-evry dot fr>
|
|
||||||
dnl That code is public domain and can be freely used or copied.
|
|
||||||
|
|
||||||
dnl Macro that check if coverage support is wanted and, if yes, if
|
|
||||||
dnl lcov is available.
|
|
||||||
|
|
||||||
dnl Usage: EFL_CHECK_COVERAGE(tests [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
|
|
||||||
dnl The parameter 'tests' is used if a dependency is needed. If set to "yes",
|
|
||||||
dnl the dependency is available.
|
|
||||||
dnl Defines EFL_COVERAGE_CFLAGS and EFL_COVERAGE_LIBS variables
|
|
||||||
dnl Defines the automake conditionnal EFL_ENABLE_COVERAGE
|
|
||||||
|
|
||||||
AC_DEFUN([EFL_CHECK_COVERAGE],
|
|
||||||
[
|
|
||||||
|
|
||||||
dnl configure option
|
|
||||||
|
|
||||||
AC_ARG_ENABLE([coverage],
|
|
||||||
[AC_HELP_STRING([--enable-coverage], [enable coverage profiling instrumentation @<:@default=disabled@:>@])],
|
|
||||||
[
|
|
||||||
if test "x${enableval}" = "xyes" ; then
|
|
||||||
_efl_enable_coverage="yes"
|
|
||||||
else
|
|
||||||
_efl_enable_coverage="no"
|
|
||||||
fi
|
|
||||||
],
|
|
||||||
[_efl_enable_coverage="no"])
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to use profiling instrumentation])
|
|
||||||
AC_MSG_RESULT([$_efl_enable_coverage])
|
|
||||||
|
|
||||||
dnl lcov check
|
|
||||||
|
|
||||||
if test "x$_efl_enable_coverage" = "xyes" && test ! "x$1" = "xyes" ; then
|
|
||||||
AC_MSG_WARN([Coverage report requested but tests not being built, disable profiling instrumentation.])
|
|
||||||
AC_MSG_WARN([Run configure with --enable-tests])
|
|
||||||
_efl_enable_coverage="no"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$_efl_enable_coverage" = "xyes" ; then
|
|
||||||
AC_CHECK_PROG(have_lcov, [lcov], [yes], [no])
|
|
||||||
if test "x$have_lcov" = "xyes" ; then
|
|
||||||
EFL_COVERAGE_CFLAGS="-fprofile-arcs -ftest-coverage"
|
|
||||||
EFL_COVERAGE_LIBS="-lgcov"
|
|
||||||
# remove any optimisation flag and force debug symbols
|
|
||||||
EFL_DEBUG_CFLAGS="-g -O0 -DDEBUG"
|
|
||||||
else
|
|
||||||
AC_MSG_WARN([lcov is not found, disable profiling instrumentation])
|
|
||||||
_efl_enable_coverage="no"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl Substitution
|
|
||||||
AC_SUBST(EFL_COVERAGE_CFLAGS)
|
|
||||||
AC_SUBST(EFL_COVERAGE_LIBS)
|
|
||||||
|
|
||||||
AM_CONDITIONAL(EFL_ENABLE_COVERAGE, test "x${_efl_enable_coverage}" = "xyes")
|
|
||||||
|
|
||||||
AS_IF([test "x$_efl_enable_coverage" = "xyes"], [$2], [$3])
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl End of efl_coverage.m4
|
|
|
@ -1,97 +0,0 @@
|
||||||
dnl Copyright (C) 2008 Vincent Torri <vtorri at univ-evry dot fr>
|
|
||||||
dnl That code is public domain and can be freely used or copied.
|
|
||||||
|
|
||||||
dnl Macro that check if doxygen is available or not.
|
|
||||||
|
|
||||||
dnl EFL_CHECK_DOXYGEN([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
|
|
||||||
dnl Test for the doxygen program
|
|
||||||
dnl Defines efl_doxygen
|
|
||||||
dnl Defines the automake conditionnal EFL_BUILD_DOC
|
|
||||||
dnl
|
|
||||||
AC_DEFUN([EFL_CHECK_DOXYGEN],
|
|
||||||
[
|
|
||||||
|
|
||||||
dnl
|
|
||||||
dnl Disable the build of the documentation
|
|
||||||
dnl
|
|
||||||
AC_ARG_ENABLE([doc],
|
|
||||||
[AC_HELP_STRING(
|
|
||||||
[--disable-doc],
|
|
||||||
[Disable documentation build @<:@default=enabled@:>@])],
|
|
||||||
[
|
|
||||||
if test "x${enableval}" = "xyes" ; then
|
|
||||||
efl_enable_doc="yes"
|
|
||||||
else
|
|
||||||
efl_enable_doc="no"
|
|
||||||
fi
|
|
||||||
],
|
|
||||||
[efl_enable_doc="yes"])
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to build documentation])
|
|
||||||
AC_MSG_RESULT([${efl_enable_doc}])
|
|
||||||
|
|
||||||
if test "x${efl_enable_doc}" = "xyes" ; then
|
|
||||||
|
|
||||||
dnl Specify the file name, without path
|
|
||||||
|
|
||||||
efl_doxygen="doxygen"
|
|
||||||
|
|
||||||
AC_ARG_WITH([doxygen],
|
|
||||||
[AC_HELP_STRING(
|
|
||||||
[--with-doxygen=FILE],
|
|
||||||
[doxygen program to use @<:@default=doxygen@:>@])],
|
|
||||||
|
|
||||||
dnl Check the given doxygen program.
|
|
||||||
|
|
||||||
[efl_doxygen=${withval}
|
|
||||||
AC_CHECK_PROG([efl_have_doxygen],
|
|
||||||
[${efl_doxygen}],
|
|
||||||
[yes],
|
|
||||||
[no])
|
|
||||||
if test "x${efl_have_doxygen}" = "xno" ; then
|
|
||||||
echo "WARNING:"
|
|
||||||
echo "The doxygen program you specified:"
|
|
||||||
echo "${efl_doxygen}"
|
|
||||||
echo "was not found. Please check the path and make sure "
|
|
||||||
echo "the program exists and is executable."
|
|
||||||
AC_MSG_WARN([no doxygen detected. Documentation will not be built])
|
|
||||||
fi
|
|
||||||
],
|
|
||||||
[AC_CHECK_PROG([efl_have_doxygen],
|
|
||||||
[${efl_doxygen}],
|
|
||||||
[yes],
|
|
||||||
[no])
|
|
||||||
if test "x${efl_have_doxygen}" = "xno" ; then
|
|
||||||
echo "WARNING:"
|
|
||||||
echo "The doxygen program was not found in your execute path."
|
|
||||||
echo "You may have doxygen installed somewhere not covered by your path."
|
|
||||||
echo ""
|
|
||||||
echo "If this is the case make sure you have the packages installed, AND"
|
|
||||||
echo "that the doxygen program is in your execute path (see your"
|
|
||||||
echo "shell manual page on setting the \$PATH environment variable), OR"
|
|
||||||
echo "alternatively, specify the program to use with --with-doxygen."
|
|
||||||
AC_MSG_WARN([no doxygen detected. Documentation will not be built])
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl
|
|
||||||
dnl Substitution
|
|
||||||
dnl
|
|
||||||
AC_SUBST([efl_doxygen])
|
|
||||||
|
|
||||||
if ! test "x${efl_have_doxygen}" = "xyes" ; then
|
|
||||||
efl_enable_doc="no"
|
|
||||||
fi
|
|
||||||
|
|
||||||
AM_CONDITIONAL(EFL_BUILD_DOC, test "x${efl_enable_doc}" = "xyes")
|
|
||||||
|
|
||||||
if test "x${efl_enable_doc}" = "xyes" ; then
|
|
||||||
m4_default([$1], [:])
|
|
||||||
else
|
|
||||||
m4_default([$2], [:])
|
|
||||||
fi
|
|
||||||
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl End of efl_doxygen.m4
|
|
|
@ -1,63 +0,0 @@
|
||||||
dnl Copyright (C) 2008 Vincent Torri <vtorri at univ-evry dot fr>
|
|
||||||
dnl That code is public domain and can be freely used or copied.
|
|
||||||
|
|
||||||
dnl Macro that check if building examples is wanted.
|
|
||||||
|
|
||||||
dnl Usage: EFL_CHECK_BUILD_EXAMPLES([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
|
|
||||||
dnl Defines the automake conditionnal EFL_ENABLE_BUILD_EXAMPLES
|
|
||||||
|
|
||||||
AC_DEFUN([EFL_CHECK_BUILD_EXAMPLES],
|
|
||||||
[
|
|
||||||
|
|
||||||
dnl configure option
|
|
||||||
|
|
||||||
AC_ARG_ENABLE([build-examples],
|
|
||||||
[AC_HELP_STRING([--enable-build-examples], [enable building examples @<:@default=disabled@:>@])],
|
|
||||||
[
|
|
||||||
if test "x${enableval}" = "xyes" ; then
|
|
||||||
_efl_enable_build_examples="yes"
|
|
||||||
else
|
|
||||||
_efl_enable_build_examples="no"
|
|
||||||
fi
|
|
||||||
],
|
|
||||||
[_efl_enable_build_examples="no"])
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether examples are built])
|
|
||||||
AC_MSG_RESULT([${_efl_enable_build_examples}])
|
|
||||||
|
|
||||||
AM_CONDITIONAL(EFL_BUILD_EXAMPLES, test "x${_efl_enable_build_examples}" = "xyes")
|
|
||||||
|
|
||||||
AS_IF([test "x$_efl_enable_build_examples" = "xyes"], [$1], [$2])
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
dnl Macro that check if installing examples is wanted.
|
|
||||||
|
|
||||||
dnl Usage: EFL_CHECK_INSTALL_EXAMPLES([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
|
|
||||||
dnl Defines the automake conditionnal EFL_ENABLE_INSTALL_EXAMPLES
|
|
||||||
|
|
||||||
AC_DEFUN([EFL_CHECK_INSTALL_EXAMPLES],
|
|
||||||
[
|
|
||||||
|
|
||||||
dnl configure option
|
|
||||||
|
|
||||||
AC_ARG_ENABLE([install-examples],
|
|
||||||
[AC_HELP_STRING([--enable-install-examples], [enable installing example source files @<:@default=disabled@:>@])],
|
|
||||||
[
|
|
||||||
if test "x${enableval}" = "xyes" ; then
|
|
||||||
_efl_enable_install_examples="yes"
|
|
||||||
else
|
|
||||||
_efl_enable_install_examples="no"
|
|
||||||
fi
|
|
||||||
],
|
|
||||||
[_efl_enable_install_examples="no"])
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether examples are installed])
|
|
||||||
AC_MSG_RESULT([${_efl_enable_install_examples}])
|
|
||||||
|
|
||||||
AM_CONDITIONAL(EFL_INSTALL_EXAMPLES, test "x${_efl_enable_install_examples}" = "xyes")
|
|
||||||
|
|
||||||
AS_IF([test "x$_efl_enable_install_examples" = "xyes"], [$1], [$2])
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl End of efl_examples.m4
|
|
|
@ -1,48 +0,0 @@
|
||||||
dnl Copyright (C) 2011 Cedric Bail <cedric.bail@free.fr>
|
|
||||||
dnl This code is public domain and can be freely used or copied.
|
|
||||||
|
|
||||||
dnl Macro that check for gettimeofday definition
|
|
||||||
|
|
||||||
dnl Usage: EFL_CHECK_GETTIMEOFDAY(ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND])
|
|
||||||
dnl Define EFL_HAVE_GETTIMEOFDAY
|
|
||||||
|
|
||||||
AC_DEFUN([EFL_CHECK_GETTIMEOFDAY],
|
|
||||||
[
|
|
||||||
|
|
||||||
_efl_have_gettimeofday="no"
|
|
||||||
|
|
||||||
AC_LINK_IFELSE(
|
|
||||||
[AC_LANG_PROGRAM([[
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <sys/time.h>
|
|
||||||
]],
|
|
||||||
[[
|
|
||||||
int res;
|
|
||||||
res = gettimeofday(NULL, NULL);
|
|
||||||
]])],
|
|
||||||
[_efl_have_gettimeofday="yes"],
|
|
||||||
[_efl_have_gettimeofday="no"])
|
|
||||||
|
|
||||||
if test "x${_efl_have_gettimeofday}" = "xno" -a "x${enable_exotic}" = "xyes"; then
|
|
||||||
SAVE_LIBS="${LIBS}"
|
|
||||||
SAVE_CFLAGS="${CFLAGS}"
|
|
||||||
LIBS="${LIBS} ${EXOTIC_LIBS}"
|
|
||||||
CFLAGS="${CFLAGS} ${EXOTIC_CFLAGS}"
|
|
||||||
AC_LINK_IFELSE(
|
|
||||||
[AC_LANG_PROGRAM([[
|
|
||||||
#include <Exotic.h>
|
|
||||||
]],
|
|
||||||
[[
|
|
||||||
int res;
|
|
||||||
res = gettimeofday(NULL, NULL);
|
|
||||||
]])],
|
|
||||||
[_efl_have_gettimeofday="yes"],
|
|
||||||
[_efl_have_gettimeofday="no"])
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x${_efl_have_gettimeofday}" = "xyes"; then
|
|
||||||
AC_DEFINE([EFL_HAVE_GETTIMEOFDAY], [1], [Defined if gettimeofday is available.])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AS_IF([test "x${_efl_have_gettimeofday}" = "xyes"], [$1], [$2])
|
|
||||||
])
|
|
|
@ -1,69 +0,0 @@
|
||||||
dnl Copyright (C) 2010 Vincent Torri <vtorri at univ-evry dot fr>
|
|
||||||
dnl That code is public domain and can be freely used or copied.
|
|
||||||
|
|
||||||
dnl Macro that check if shm_open function is available or not.
|
|
||||||
|
|
||||||
dnl Usage: EFL_CHECK_SHM_OPEN([, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
|
|
||||||
dnl Call AC_SUBST(EFL_SHM_OPEN_LIBS)
|
|
||||||
dnl Define HAVE_SHM_OPEN to 1if shm_open is available
|
|
||||||
|
|
||||||
AC_DEFUN([EFL_CHECK_SHM_OPEN],
|
|
||||||
[
|
|
||||||
_efl_have_shm_open="no"
|
|
||||||
|
|
||||||
dnl Check is shm_open is in libc
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([for shm_open in libc])
|
|
||||||
AC_LINK_IFELSE(
|
|
||||||
[AC_LANG_PROGRAM(
|
|
||||||
[[
|
|
||||||
#include <sys/mman.h>
|
|
||||||
#include <sys/stat.h> /* For mode constants */
|
|
||||||
#include <fcntl.h> /* For O_* constants */
|
|
||||||
]],
|
|
||||||
[[
|
|
||||||
int fd;
|
|
||||||
|
|
||||||
fd = shm_open("/dev/null", O_RDONLY, S_IRWXU | S_IRWXG | S_IRWXO);
|
|
||||||
]])],
|
|
||||||
[_efl_have_shm_open="yes"],
|
|
||||||
[_efl_have_shm_open="no"])
|
|
||||||
|
|
||||||
AC_MSG_RESULT([${_efl_have_shm_open}])
|
|
||||||
|
|
||||||
if test "x$_efl_have_shm_open" = "xno" ; then
|
|
||||||
AC_MSG_CHECKING([for shm_open in librt])
|
|
||||||
|
|
||||||
LIBS_save="${LIBS}"
|
|
||||||
LIBS="${LIBS} -lrt"
|
|
||||||
AC_LINK_IFELSE(
|
|
||||||
[AC_LANG_PROGRAM(
|
|
||||||
[[
|
|
||||||
#include <sys/mman.h>
|
|
||||||
#include <sys/stat.h> /* For mode constants */
|
|
||||||
#include <fcntl.h> /* For O_* constants */
|
|
||||||
]],
|
|
||||||
[[
|
|
||||||
int fd;
|
|
||||||
|
|
||||||
fd = shm_open("/dev/null", O_RDONLY, S_IRWXU | S_IRWXG | S_IRWXO);
|
|
||||||
]])],
|
|
||||||
[
|
|
||||||
EFL_SHM_OPEN_LIBS="-lrt"
|
|
||||||
_efl_have_shm_open="yes"],
|
|
||||||
[_efl_have_shm_open="no"])
|
|
||||||
|
|
||||||
LIBS="${LIBS_save}"
|
|
||||||
|
|
||||||
AC_MSG_RESULT([${_efl_have_shm_open}])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_SUBST([EFL_SHM_OPEN_LIBS])
|
|
||||||
|
|
||||||
if test "x$_efl_have_shm_open" = "xyes" ; then
|
|
||||||
AC_DEFINE([HAVE_SHM_OPEN], [1], [Define to 1 if you have the `shm_open' function.])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AS_IF([test "x$_efl_have_shm_open" = "xyes"], [$1], [$2])
|
|
||||||
|
|
||||||
])
|
|
|
@ -1,43 +0,0 @@
|
||||||
dnl Copyright (C) 2008 Vincent Torri <vtorri at univ-evry dot fr>
|
|
||||||
dnl That code is public domain and can be freely used or copied.
|
|
||||||
|
|
||||||
dnl Macro that check if tests programs are wanted and if yes, if
|
|
||||||
dnl the Check library is available.
|
|
||||||
|
|
||||||
dnl Usage: EFL_CHECK_TESTS([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
|
|
||||||
dnl Define the automake conditionnal EFL_ENABLE_TESTS
|
|
||||||
|
|
||||||
AC_DEFUN([EFL_CHECK_TESTS],
|
|
||||||
[
|
|
||||||
|
|
||||||
dnl configure option
|
|
||||||
|
|
||||||
AC_ARG_ENABLE([tests],
|
|
||||||
[AC_HELP_STRING([--enable-tests], [enable tests @<:@default=disabled@:>@])],
|
|
||||||
[
|
|
||||||
if test "x${enableval}" = "xyes" ; then
|
|
||||||
_efl_enable_tests="yes"
|
|
||||||
else
|
|
||||||
_efl_enable_tests="no"
|
|
||||||
fi
|
|
||||||
],
|
|
||||||
[_efl_enable_tests="no"])
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether tests are built])
|
|
||||||
AC_MSG_RESULT([${_efl_enable_tests}])
|
|
||||||
|
|
||||||
AC_REQUIRE([PKG_PROG_PKG_CONFIG])
|
|
||||||
|
|
||||||
if test "x${_efl_enable_tests}" = "xyes" ; then
|
|
||||||
PKG_CHECK_MODULES([CHECK],
|
|
||||||
[check >= 0.9.5],
|
|
||||||
[dummy="yes"],
|
|
||||||
[_efl_enable_tests="no"])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AM_CONDITIONAL(EFL_ENABLE_TESTS, test "x${_efl_enable_tests}" = "xyes")
|
|
||||||
|
|
||||||
AS_IF([test "x$_efl_enable_tests" = "xyes"], [$1], [$2])
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl End of efl_tests.m4
|
|
|
@ -1,206 +0,0 @@
|
||||||
dnl Copyright (C) 2010 Vincent Torri <vtorri at univ-evry dot fr>
|
|
||||||
dnl rwlock code added by Mike Blumenkrantz <mike at zentific dot com>
|
|
||||||
dnl This code is public domain and can be freely used or copied.
|
|
||||||
|
|
||||||
dnl Macro that check if POSIX or Win32 threads library is available or not.
|
|
||||||
|
|
||||||
dnl Usage: EFL_CHECK_THREADS(ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND])
|
|
||||||
dnl Call AC_SUBST(EFL_PTHREAD_CFLAGS)
|
|
||||||
dnl Call AC_SUBST(EFL_PTHREAD_LIBS)
|
|
||||||
dnl Defines EFL_HAVE_POSIX_THREADS or EFL_HAVE_WIN32_THREADS, and EFL_HAVE_THREADS
|
|
||||||
|
|
||||||
AC_DEFUN([EFL_CHECK_THREADS],
|
|
||||||
[
|
|
||||||
|
|
||||||
dnl configure option
|
|
||||||
|
|
||||||
AC_ARG_ENABLE([posix-threads],
|
|
||||||
[AC_HELP_STRING([--disable-posix-threads], [enable POSIX threads code @<:@default=auto@:>@])],
|
|
||||||
[
|
|
||||||
if test "x${enableval}" = "xyes" ; then
|
|
||||||
_efl_enable_posix_threads="yes"
|
|
||||||
else
|
|
||||||
_efl_enable_posix_threads="no"
|
|
||||||
fi
|
|
||||||
],
|
|
||||||
[_efl_enable_posix_threads="auto"])
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to build POSIX threads code])
|
|
||||||
AC_MSG_RESULT([${_efl_enable_posix_threads}])
|
|
||||||
|
|
||||||
AC_ARG_ENABLE([win32-threads],
|
|
||||||
[AC_HELP_STRING([--disable-win32-threads], [enable Win32 threads code @<:@default=no@:>@])],
|
|
||||||
[
|
|
||||||
if test "x${enableval}" = "xyes" ; then
|
|
||||||
_efl_enable_win32_threads="yes"
|
|
||||||
else
|
|
||||||
_efl_enable_win32_threads="no"
|
|
||||||
fi
|
|
||||||
],
|
|
||||||
[_efl_enable_win32_threads="no"])
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to build Windows threads code])
|
|
||||||
AC_MSG_RESULT([${_efl_enable_win32_threads}])
|
|
||||||
|
|
||||||
dnl
|
|
||||||
dnl * no + no
|
|
||||||
dnl * yes + no : win32: error, other : pthread
|
|
||||||
dnl * yes + yes : win32 : wthread, other : pthread
|
|
||||||
dnl * no + yes : win32 : wthread, other : error
|
|
||||||
|
|
||||||
if test "x${_efl_enable_posix_threads}" = "xyes" && test "x${_efl_enable_win32_threads}" = "xyes" ; then
|
|
||||||
case "$host_os" in
|
|
||||||
mingw*)
|
|
||||||
_efl_enable_posix_threads=no
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
_efl_enable_win32_threads=no
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x${_efl_enable_win32_threads}" = "xyes" ; then
|
|
||||||
case "$host_os" in
|
|
||||||
mingw*)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
AC_MSG_ERROR([Win32 threads support requested but non Windows system found.])
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x${_efl_enable_posix_threads}" = "xyes" ; then
|
|
||||||
case "$host_os" in
|
|
||||||
mingw*)
|
|
||||||
AC_MSG_ERROR([POSIX threads support requested but Windows system found.])
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl check if the compiler supports POSIX threads
|
|
||||||
|
|
||||||
case "$host_os" in
|
|
||||||
mingw*)
|
|
||||||
;;
|
|
||||||
solaris*)
|
|
||||||
_efl_threads_cflags="-mt"
|
|
||||||
_efl_threads_libs="-mt"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
_efl_threads_cflags="-pthread"
|
|
||||||
_efl_threads_libs="-pthread"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
_efl_have_posix_threads="no"
|
|
||||||
_efl_have_win32_threads="no"
|
|
||||||
|
|
||||||
if test "x${_efl_enable_posix_threads}" = "xyes" || test "x${_efl_enable_posix_threads}" = "xauto" ; then
|
|
||||||
|
|
||||||
SAVE_CFLAGS=${CFLAGS}
|
|
||||||
CFLAGS="${CFLAGS} ${_efl_threads_cflags}"
|
|
||||||
SAVE_LIBS=${LIBS}
|
|
||||||
LIBS="${LIBS} ${_efl_threads_libs}"
|
|
||||||
AC_LINK_IFELSE(
|
|
||||||
[AC_LANG_PROGRAM([[
|
|
||||||
#include <pthread.h>
|
|
||||||
]],
|
|
||||||
[[
|
|
||||||
pthread_t id;
|
|
||||||
id = pthread_self();
|
|
||||||
]])],
|
|
||||||
[_efl_have_posix_threads="yes"],
|
|
||||||
[_efl_have_posix_threads="no"])
|
|
||||||
CFLAGS=${SAVE_CFLAGS}
|
|
||||||
LIBS=${SAVE_LIBS}
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether system support POSIX threads])
|
|
||||||
AC_MSG_RESULT([${_efl_have_posix_threads}])
|
|
||||||
if test "$x{_efl_enable_posix_threads}" = "xyes" && test "x${_efl_have_posix_threads}" = "xno"; then
|
|
||||||
AC_MSG_ERROR([POSIX threads support requested but not found.])
|
|
||||||
fi
|
|
||||||
|
|
||||||
EFL_PTHREAD_CFLAGS=""
|
|
||||||
EFL_PTHREAD_LIBS=""
|
|
||||||
if test "x${_efl_have_posix_threads}" = "xyes" ; then
|
|
||||||
EFL_PTHREAD_CFLAGS=${_efl_threads_cflags}
|
|
||||||
EFL_PTHREAD_LIBS=${_efl_threads_libs}
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_SUBST(EFL_PTHREAD_CFLAGS)
|
|
||||||
AC_SUBST(EFL_PTHREAD_LIBS)
|
|
||||||
|
|
||||||
_efl_enable_debug_threads="no"
|
|
||||||
AC_ARG_ENABLE([debug-threads],
|
|
||||||
[AC_HELP_STRING([--enable-debug-threads], [disable assert when you forgot to call eina_threads_init])],
|
|
||||||
[_efl_enable_debug_threads="${enableval}"])
|
|
||||||
|
|
||||||
have_debug_threads="no"
|
|
||||||
if test "x${_efl_have_posix_threads}" = "xyes" -a "x${_efl_enable_debug_threads}" = "xyes"; then
|
|
||||||
have_debug_threads="yes"
|
|
||||||
AC_DEFINE([EFL_DEBUG_THREADS], [1], [Assert when forgot to call eina_threads_init])
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x${_efl_have_posix_threads}" = "xyes" ; then
|
|
||||||
AC_DEFINE([EFL_HAVE_POSIX_THREADS], [1], [Define to mention that POSIX threads are supported])
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x${_efl_enable_win32_threads}" = "xyes" ; then
|
|
||||||
_efl_have_win32_threads="yes"
|
|
||||||
AC_DEFINE([EFL_HAVE_WIN32_THREADS], [1], [Define to mention that Win32 threads are supported])
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x${_efl_have_posix_threads}" = "xyes" || test "x${_efl_have_win32_threads}" = "xyes" ; then
|
|
||||||
AC_DEFINE([EFL_HAVE_THREADS], [1], [Define to mention that POSIX or Win32 threads are supported])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AS_IF([test "x$_efl_have_posix_threads" = "xyes" || test "x$_efl_have_win32_threads" = "xyes"], [$1], [$2])
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl Usage: EFL_CHECK_SPINLOCK(ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND])
|
|
||||||
dnl Defines EFL_HAVE_POSIX_THREADS_SPINLOCK
|
|
||||||
AC_DEFUN([EFL_CHECK_SPINLOCK],
|
|
||||||
[
|
|
||||||
|
|
||||||
dnl check if the compiler supports pthreads spinlock
|
|
||||||
|
|
||||||
_efl_have_posix_threads_spinlock="no"
|
|
||||||
|
|
||||||
if test "x${_efl_have_posix_threads}" = "xyes" ; then
|
|
||||||
|
|
||||||
SAVE_CFLAGS=${CFLAGS}
|
|
||||||
CFLAGS="${CFLAGS} ${EFL_PTHREAD_CFLAGS}"
|
|
||||||
SAVE_LIBS=${LIBS}
|
|
||||||
LIBS="${LIBS} ${EFL_PTHREAD_LIBS}"
|
|
||||||
AC_LINK_IFELSE(
|
|
||||||
[AC_LANG_PROGRAM([[
|
|
||||||
#include <pthread.h>
|
|
||||||
]],
|
|
||||||
[[
|
|
||||||
pthread_spinlock_t lock;
|
|
||||||
int res;
|
|
||||||
res = pthread_spin_init(&lock, PTHREAD_PROCESS_PRIVATE);
|
|
||||||
]])],
|
|
||||||
[_efl_have_posix_threads_spinlock="yes"],
|
|
||||||
[_efl_have_posix_threads_spinlock="no"])
|
|
||||||
CFLAGS=${SAVE_CFLAGS}
|
|
||||||
LIBS=${SAVE_LIBS}
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to build POSIX threads spinlock code])
|
|
||||||
AC_MSG_RESULT([${_efl_have_posix_threads_spinlock}])
|
|
||||||
if test "x${_efl_enable_posix_threads}" = "xyes" && test "x${_efl_have_posix_threads_spinlock}" = "xno" ; then
|
|
||||||
AC_MSG_WARN([POSIX threads support requested but spinlocks are not supported])
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x${_efl_have_posix_threads_spinlock}" = "xyes" ; then
|
|
||||||
AC_DEFINE([EFL_HAVE_POSIX_THREADS_SPINLOCK], [1], [Define to mention that POSIX threads spinlocks are supported])
|
|
||||||
fi
|
|
||||||
AS_IF([test "x$_efl_have_posix_threads_spinlock" = "xyes"], [$1], [$2])
|
|
||||||
])
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
cs de el eo es fr gl it ko nl pt sl
|
|
||||||
|
|
|
@ -1,175 +0,0 @@
|
||||||
# Esperanto translation for enlightenment
|
|
||||||
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
|
||||||
# This file is distributed under the same license as the enlightenment package.
|
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: enlightenment\n"
|
|
||||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"POT-Creation-Date: 2012-11-26 10:03+0100\n"
|
|
||||||
"PO-Revision-Date: 2012-09-27 14:49+0000\n"
|
|
||||||
"Last-Translator: Michael Moroni <michael.moroni@mailoo.org>\n"
|
|
||||||
"Language-Team: Esperanto <eo@li.org>\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"X-Launchpad-Export-Date: 2012-11-27 05:35+0000\n"
|
|
||||||
"X-Generator: Launchpad (build 16309)\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:104
|
|
||||||
msgid "Version:"
|
|
||||||
msgstr "Versio:"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:113
|
|
||||||
msgid "Usage:"
|
|
||||||
msgstr "Uzado:"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:118
|
|
||||||
#, c-format
|
|
||||||
msgid "%s [options]\n"
|
|
||||||
msgstr "%s [opcioj]\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:273
|
|
||||||
msgid "Copyright:"
|
|
||||||
msgstr "Kopirajto:"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:285
|
|
||||||
msgid "License:"
|
|
||||||
msgstr "Permesilo:"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:466
|
|
||||||
msgid "Type: "
|
|
||||||
msgstr "Speco: "
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:542
|
|
||||||
msgid "Default: "
|
|
||||||
msgstr "Apriora: "
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:569
|
|
||||||
msgid "Choices: "
|
|
||||||
msgstr "Elektoj: "
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:670
|
|
||||||
msgid "Options:\n"
|
|
||||||
msgstr "Opcioj:\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:797
|
|
||||||
#, c-format
|
|
||||||
msgid "ERROR: unknown option --%s.\n"
|
|
||||||
msgstr "ERARO: nekonata opcio --%s.\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:799
|
|
||||||
#, c-format
|
|
||||||
msgid "ERROR: unknown option -%c.\n"
|
|
||||||
msgstr "ERARO: nekonata opcio -%c.\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:857
|
|
||||||
msgid "ERROR: "
|
|
||||||
msgstr "ERARO: "
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:940 src/lib/ecore/ecore_getopt.c:1077
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1093 src/lib/ecore/ecore_getopt.c:1108
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1125 src/lib/ecore/ecore_getopt.c:1172
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1292 src/lib/ecore/ecore_getopt.c:1333
|
|
||||||
msgid "value has no pointer set.\n"
|
|
||||||
msgstr "valoro ne havas agorditan referencon.\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:972 src/lib/ecore/ecore_getopt.c:1192
|
|
||||||
#, c-format
|
|
||||||
msgid "unknown boolean value %s.\n"
|
|
||||||
msgstr "nekonata bulea valoro %s.\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1023 src/lib/ecore/ecore_getopt.c:1280
|
|
||||||
#, c-format
|
|
||||||
msgid "invalid number format %s\n"
|
|
||||||
msgstr "nevalida numeraranĝo %s\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1138
|
|
||||||
#, c-format
|
|
||||||
msgid "invalid choice \"%s\". Valid values are: "
|
|
||||||
msgstr "nevalida elekto \"%s\". Validaj valoroj estas: "
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1166
|
|
||||||
msgid "missing parameter to append.\n"
|
|
||||||
msgstr "postaldonenda parametro mankas.\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1270
|
|
||||||
msgid "could not parse value.\n"
|
|
||||||
msgstr "valoro ne sintakse analizeblas.\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1327
|
|
||||||
msgid "missing parameter.\n"
|
|
||||||
msgstr "parametro mankas.\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1340
|
|
||||||
msgid "missing callback function!\n"
|
|
||||||
msgstr "funkcio vokita per referenco mankas!\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1369
|
|
||||||
msgid "no version was defined.\n"
|
|
||||||
msgstr "neniu versio estas difinita.\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1386
|
|
||||||
msgid "no copyright was defined.\n"
|
|
||||||
msgstr "neniu kopirajto estas difinita.\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1403
|
|
||||||
msgid "no license was defined.\n"
|
|
||||||
msgstr "neniu permesilo estas difinita.\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1478
|
|
||||||
#, c-format
|
|
||||||
msgid "ERROR: unknown option --%s, ignored.\n"
|
|
||||||
msgstr "ERARO: nekonata opcio --%s. Ignorata.\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1511
|
|
||||||
#, c-format
|
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
|
||||||
msgstr "ERARO: optio --%s postulas argumenton!\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1553
|
|
||||||
#, c-format
|
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
|
||||||
msgstr "ERARO: nekonata optio -%c. Ignorata.\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1591
|
|
||||||
#, c-format
|
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
|
||||||
msgstr "ERARO: opcio -%c postulas argumenton!\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1802
|
|
||||||
msgid "ERROR: no parser provided.\n"
|
|
||||||
msgstr "ERARO: neniu sintaksa analizilo provizita.\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1807
|
|
||||||
msgid "ERROR: no values provided.\n"
|
|
||||||
msgstr "ERARO: neniu valoro provizita.\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1816
|
|
||||||
msgid "ERROR: no arguments provided.\n"
|
|
||||||
msgstr "ERARO: neniu argumento provizita.\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1842
|
|
||||||
msgid "ERROR: invalid options found."
|
|
||||||
msgstr "ERARO: nevalida opcio trovita."
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1848
|
|
||||||
#, c-format
|
|
||||||
msgid " See --%s.\n"
|
|
||||||
msgstr " Vidu --%s.\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1850
|
|
||||||
#, c-format
|
|
||||||
msgid " See -%c.\n"
|
|
||||||
msgstr " Vidu -%c.\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1896
|
|
||||||
#, c-format
|
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
|
||||||
msgstr "ERARO: nekorekta geometria valoro '%s'\n"
|
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1928
|
|
||||||
#, c-format
|
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
|
||||||
msgstr "ERARO: nekorekta valoro de grando '%s'\n"
|
|
|
@ -1,26 +0,0 @@
|
||||||
MAINTAINERCLEANFILES = Makefile.in
|
|
||||||
|
|
||||||
SUBDIRS = lib bin tests examples modules
|
|
||||||
|
|
||||||
if BUILD_ECORE_X_XCB
|
|
||||||
MAINTAINERCLEANFILES += ecore_xcb_keysym_table.h ecore_xcb_keysym_table_h
|
|
||||||
CLEANFILES = ecore_xcb_keysym_table.h ecore_xcb_keysym_table_h
|
|
||||||
|
|
||||||
SUBDIRS += util
|
|
||||||
|
|
||||||
BUILT_SOURCES=ecore_xcb_keysym_table.h
|
|
||||||
|
|
||||||
#
|
|
||||||
# Building ecore_xcb_keysym_table.h requires the makekeys utility
|
|
||||||
#
|
|
||||||
|
|
||||||
ecore_xcb_keysym_table.h: $(KEYSYMDEFS) $(top_builddir)/src/util/makekeys$(EXEEXT)
|
|
||||||
$(top_builddir)/src/util/makekeys $(KEYSYMDEFS) > ecore_xcb_keysym_table_h
|
|
||||||
mv -f ecore_xcb_keysym_table_h ./lib/ecore_x/xcb/$@
|
|
||||||
|
|
||||||
$(top_builddir)/src/util/makekeys$(EXEEXT): force
|
|
||||||
cd util && $(MAKE)
|
|
||||||
|
|
||||||
force:
|
|
||||||
|
|
||||||
endif
|
|
|
@ -1,51 +0,0 @@
|
||||||
MAINTAINERCLEANFILES = Makefile.in
|
|
||||||
|
|
||||||
if BUILD_ECORE_CONFIG
|
|
||||||
ECORE_CONFIG_PROG = ecore_config
|
|
||||||
ECORE_CONFIG_LIB = $(top_builddir)/src/lib/ecore_config/libecore_config.la
|
|
||||||
else
|
|
||||||
ECORE_CONFIG_PROG =
|
|
||||||
ECORE_CONFIG_LIB =
|
|
||||||
endif
|
|
||||||
|
|
||||||
if EFL_ENABLE_TESTS
|
|
||||||
ECORE_TEST_PROG = ecore_test
|
|
||||||
endif
|
|
||||||
|
|
||||||
AM_CPPFLAGS = \
|
|
||||||
-I$(top_srcdir)/src/lib/ecore \
|
|
||||||
-I$(top_srcdir)/src/lib/ecore_config \
|
|
||||||
-I$(top_builddir)/src/lib/ecore \
|
|
||||||
-I$(top_builddir)/src/lib/ecore_config \
|
|
||||||
-DPACKAGE_BIN_DIR=\"$(bindir)\" \
|
|
||||||
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
|
|
||||||
-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
|
|
||||||
@EINA_CFLAGS@ @EVAS_CFLAGS@
|
|
||||||
|
|
||||||
bin_PROGRAMS = $(ECORE_CONFIG_PROG) $(ECORE_TEST_PROG)
|
|
||||||
|
|
||||||
ecore_config_SOURCES = \
|
|
||||||
ecore_config.c
|
|
||||||
|
|
||||||
ecore_config_LDADD = \
|
|
||||||
$(ECORE_CONFIG_LIB) \
|
|
||||||
$(top_builddir)/src/lib/ecore_ipc/libecore_ipc.la \
|
|
||||||
$(top_builddir)/src/lib/ecore_con/libecore_con.la \
|
|
||||||
$(top_builddir)/src/lib/ecore/libecore.la \
|
|
||||||
@EINA_LIBS@ @EVAS_LIBS@
|
|
||||||
|
|
||||||
ecore_config_DEPENDENCIES = \
|
|
||||||
$(top_builddir)/src/lib/ecore_ipc/libecore_ipc.la \
|
|
||||||
$(top_builddir)/src/lib/ecore_con/libecore_con.la \
|
|
||||||
$(top_builddir)/src/lib/ecore/libecore.la \
|
|
||||||
$(ECORE_CONFIG_LIB)
|
|
||||||
|
|
||||||
ecore_test_SOURCES = \
|
|
||||||
ecore_test.c
|
|
||||||
|
|
||||||
ecore_test_LDADD = \
|
|
||||||
$(top_builddir)/src/lib/ecore/libecore.la \
|
|
||||||
@EINA_LIBS@ @EVAS_LIBS@
|
|
||||||
|
|
||||||
ecore_test_DEPENDENCIES = \
|
|
||||||
$(top_builddir)/src/lib/ecore/libecore.la
|
|
|
@ -1,324 +0,0 @@
|
||||||
#include "config.h"
|
|
||||||
#include "Ecore.h"
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#ifdef BUILD_ECORE_CONFIG
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <getopt.h>
|
|
||||||
#include <Eet.h>
|
|
||||||
#include "Ecore_Config.h"
|
|
||||||
#include "ecore_config_private.h"
|
|
||||||
|
|
||||||
// strcmp for paths - for sorting folders before files
|
|
||||||
static int
|
|
||||||
pathcmp(const char *s1, const char *s2)
|
|
||||||
{
|
|
||||||
char *s1d, *s2d;
|
|
||||||
|
|
||||||
// strip common part of paths
|
|
||||||
while(*s1 && *s2 && *s1 == *s2)
|
|
||||||
{
|
|
||||||
s1++;
|
|
||||||
s2++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// handle /foo/bar/baz <> /foo/bar_baz properly
|
|
||||||
if (*s1 == '/' && *s2 != '/') return -1;
|
|
||||||
if (*s1 != '/' && *s2 == '/') return 1;
|
|
||||||
|
|
||||||
// skip leading /
|
|
||||||
if (*s1 == '/') s1++;
|
|
||||||
if (*s2 == '/') s2++;
|
|
||||||
|
|
||||||
// order folders before files
|
|
||||||
s1d = strchr(s1, '/');
|
|
||||||
s2d = strchr(s2, '/');
|
|
||||||
if (s1d && !s2d) return -1;
|
|
||||||
if (!s1d && s2d) return 1;
|
|
||||||
|
|
||||||
return strcmp(s1, s2);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
del(const char *key)
|
|
||||||
{
|
|
||||||
Ecore_Config_Prop *e;
|
|
||||||
e = ecore_config_get(key);
|
|
||||||
if(!e) return -1;
|
|
||||||
|
|
||||||
ecore_config_dst(e);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
get(const char *key)
|
|
||||||
{
|
|
||||||
Ecore_Config_Prop *e;
|
|
||||||
char *temp = NULL;
|
|
||||||
|
|
||||||
if (!(e = ecore_config_get(key)))
|
|
||||||
{
|
|
||||||
EINA_LOG_ERR("No such property");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("%-10s", ecore_config_type_get(e));
|
|
||||||
|
|
||||||
switch (e->type)
|
|
||||||
{
|
|
||||||
case ECORE_CONFIG_NIL:
|
|
||||||
printf("\n");
|
|
||||||
break;
|
|
||||||
case ECORE_CONFIG_INT:
|
|
||||||
printf("%ld\n", ecore_config_int_get(key));
|
|
||||||
break;
|
|
||||||
case ECORE_CONFIG_BLN:
|
|
||||||
printf("%d\n", ecore_config_boolean_get(key));
|
|
||||||
break;
|
|
||||||
case ECORE_CONFIG_FLT:
|
|
||||||
printf("%lf\n", ecore_config_float_get(key));
|
|
||||||
break;
|
|
||||||
case ECORE_CONFIG_STR:
|
|
||||||
temp = ecore_config_string_get(key);
|
|
||||||
break;
|
|
||||||
case ECORE_CONFIG_RGB:
|
|
||||||
temp = ecore_config_argbstr_get(key);
|
|
||||||
break;
|
|
||||||
case ECORE_CONFIG_THM:
|
|
||||||
temp = ecore_config_theme_get(key);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
EINA_LOG_ERR("Property has unrecognized type");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if(temp)
|
|
||||||
{
|
|
||||||
printf("\"%s\"\n", temp);
|
|
||||||
free(temp);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
list(const char *file)
|
|
||||||
{
|
|
||||||
Ecore_Config_Prop *e;
|
|
||||||
Eina_List *keys = NULL;
|
|
||||||
char *key;
|
|
||||||
|
|
||||||
e = __ecore_config_bundle_local->data;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
// don't show system settings
|
|
||||||
if( !(e->flags & ECORE_CONFIG_FLAG_SYSTEM) )
|
|
||||||
keys = eina_list_append(keys, e->key);
|
|
||||||
}
|
|
||||||
while((e = e->next));
|
|
||||||
keys = eina_list_sort(keys, -1, EINA_COMPARE_CB(pathcmp));
|
|
||||||
|
|
||||||
EINA_LIST_FREE(keys, key)
|
|
||||||
{
|
|
||||||
printf("%-28s\t", key);
|
|
||||||
get(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
usage_and_exit(const char *prog, int ret, const char *msg)
|
|
||||||
{
|
|
||||||
if (msg) fprintf(stderr, "%s\n\n", msg);
|
|
||||||
fprintf(stderr, "Usage: %s <options> <command>\n", prog);
|
|
||||||
fprintf(stderr, "Modify ecore_config files\n\n");
|
|
||||||
fprintf(stderr, "Options:\n");
|
|
||||||
fprintf(stderr, " -c, --file=FILE config file\n");
|
|
||||||
fprintf(stderr, " -k, --key=KEY must be given for all commands except -a\n\n");
|
|
||||||
fprintf(stderr, "Commands:\n");
|
|
||||||
fprintf(stderr, " -a, --list get all keys\n");
|
|
||||||
fprintf(stderr, " -g, --get get key\n");
|
|
||||||
fprintf(stderr, " -d, --del delete key\n");
|
|
||||||
fprintf(stderr, " -b, --bool=VALUE set boolean\n");
|
|
||||||
fprintf(stderr, " -f, --float=VALUE set float\n");
|
|
||||||
fprintf(stderr, " -i, --int=VALUE set integer\n");
|
|
||||||
fprintf(stderr, " -r, --rgb=VALUE set RGBA\n");
|
|
||||||
fprintf(stderr, " -s, --string=VALUE set string\n");
|
|
||||||
fprintf(stderr, " -t, --theme=VALUE set theme\n\n");
|
|
||||||
exit(ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char * const argv[])
|
|
||||||
{
|
|
||||||
char *prog, *file, *key;
|
|
||||||
void *value = (void *)NULL;
|
|
||||||
char cmd = 's';
|
|
||||||
int type = -1;
|
|
||||||
int ret = 0;
|
|
||||||
long i;
|
|
||||||
float f;
|
|
||||||
|
|
||||||
file = key = prog = NULL;
|
|
||||||
eina_init();
|
|
||||||
prog = strdup(argv[0]);
|
|
||||||
|
|
||||||
if(argc < 4)
|
|
||||||
usage_and_exit(prog, 2, NULL);
|
|
||||||
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
static struct option long_options[] = {
|
|
||||||
{"file", 1, 0, 'c'},
|
|
||||||
{"list", 0, 0, 'a'},
|
|
||||||
{"get", 0, 0, 'g'},
|
|
||||||
{"del", 0, 0, 'd'},
|
|
||||||
{"bool", 1, 0, 'b'},
|
|
||||||
{"float", 1, 0, 'f'},
|
|
||||||
{"int", 1, 0, 'i'},
|
|
||||||
{"rgb", 1, 0, 'r'},
|
|
||||||
{"string", 1, 0, 's'},
|
|
||||||
{"theme", 1, 0, 't'},
|
|
||||||
{"key", 1, 0, 'k'},
|
|
||||||
{0, 0, 0, 0}
|
|
||||||
};
|
|
||||||
|
|
||||||
ret = getopt_long(argc, argv, "c:agdb:f:i:r:s:t:k:", long_options, NULL);
|
|
||||||
if(ret == -1)
|
|
||||||
break;
|
|
||||||
|
|
||||||
switch(ret)
|
|
||||||
{
|
|
||||||
case 'k':
|
|
||||||
key = strdup(optarg);
|
|
||||||
break;
|
|
||||||
case 'n':
|
|
||||||
if(value)
|
|
||||||
usage_and_exit(prog, 2, "too many commands");
|
|
||||||
type = ECORE_CONFIG_NIL;
|
|
||||||
value = NULL;
|
|
||||||
break;
|
|
||||||
case 'b':
|
|
||||||
if(value)
|
|
||||||
usage_and_exit(prog, 2, "too many commands");
|
|
||||||
type = ECORE_CONFIG_BLN;
|
|
||||||
i = atoi(optarg);
|
|
||||||
value = &i;
|
|
||||||
break;
|
|
||||||
case 'i':
|
|
||||||
if(value)
|
|
||||||
usage_and_exit(prog, 2, "too many commands");
|
|
||||||
type = ECORE_CONFIG_INT;
|
|
||||||
i = atoi(optarg);
|
|
||||||
value = &i;
|
|
||||||
break;
|
|
||||||
case 'f':
|
|
||||||
if(value)
|
|
||||||
usage_and_exit(prog, 2, "too many commands");
|
|
||||||
type = ECORE_CONFIG_FLT;
|
|
||||||
f = atof(optarg);
|
|
||||||
value = &f;
|
|
||||||
break;
|
|
||||||
case 'r':
|
|
||||||
if(value)
|
|
||||||
usage_and_exit(prog, 2, "too many commands");
|
|
||||||
type = ECORE_CONFIG_RGB;
|
|
||||||
i = (long) strtoul( (*optarg == '#') ? (optarg + 1) : optarg, NULL, 16 );
|
|
||||||
value = &i;
|
|
||||||
break;
|
|
||||||
case 's':
|
|
||||||
if(value)
|
|
||||||
usage_and_exit(prog, 2, "too many commands");
|
|
||||||
type = ECORE_CONFIG_STR;
|
|
||||||
value = strdup(optarg);
|
|
||||||
break;
|
|
||||||
case 't':
|
|
||||||
if(value)
|
|
||||||
usage_and_exit(prog, 2, "too many commands");
|
|
||||||
type = ECORE_CONFIG_THM;
|
|
||||||
value = strdup(optarg);
|
|
||||||
break;
|
|
||||||
case 'c':
|
|
||||||
if(file)
|
|
||||||
free(file);
|
|
||||||
file = strdup(optarg);
|
|
||||||
break;
|
|
||||||
case '?':
|
|
||||||
case ':':
|
|
||||||
return 1;
|
|
||||||
default:
|
|
||||||
cmd = ret;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(cmd == 's' && type == -1)
|
|
||||||
usage_and_exit(prog, 2, "You need to specify a command!");
|
|
||||||
|
|
||||||
if(cmd != 'a' && !key)
|
|
||||||
usage_and_exit(prog, 2, "You need to specify key!");
|
|
||||||
|
|
||||||
if(ecore_config_init("econfig") != ECORE_CONFIG_ERR_SUCC)
|
|
||||||
{
|
|
||||||
EINA_LOG_ERR("Couldn't init ecore_config!");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load configuration from file
|
|
||||||
ecore_config_file_load(file);
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
// Execute command
|
|
||||||
switch (cmd)
|
|
||||||
{
|
|
||||||
case 's':
|
|
||||||
if (ecore_config_typed_set(key, value, type) != ECORE_CONFIG_ERR_SUCC)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "Set failed for %s", key);
|
|
||||||
ret = 1;
|
|
||||||
} else {
|
|
||||||
ecore_config_file_save(file);
|
|
||||||
}
|
|
||||||
get(key); // display value after setting it
|
|
||||||
break;
|
|
||||||
case 'd':
|
|
||||||
if(del(key))
|
|
||||||
{
|
|
||||||
fprintf(stderr, "Delete failed for %s", key);
|
|
||||||
ret = 1;
|
|
||||||
} else {
|
|
||||||
ecore_config_file_save(file);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'g':
|
|
||||||
if (get(key)) ret = 1;
|
|
||||||
break;
|
|
||||||
case 'a':
|
|
||||||
if (list(file)) ret = 1;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
EINA_LOG_ERR("Unhandled command '%c'", cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
ecore_config_shutdown();
|
|
||||||
|
|
||||||
if(type == ECORE_CONFIG_STR || type == ECORE_CONFIG_THM)
|
|
||||||
free(value);
|
|
||||||
|
|
||||||
if(file)
|
|
||||||
free(file);
|
|
||||||
eina_shutdown();
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
int
|
|
||||||
main(int argc, const char **argv)
|
|
||||||
{
|
|
||||||
printf("Ecore_config module not compiled. This program is empty.\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
#endif
|
|
|
@ -1,109 +0,0 @@
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include <assert.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
const char *called = NULL;
|
|
||||||
|
|
||||||
static const char *idler_str = "idler";
|
|
||||||
static const char *idle_enterer_str = "idler_enterer";
|
|
||||||
static const char *idle_exiter_str = "idler_exiter";
|
|
||||||
static const char *timer1_str = "timer 1";
|
|
||||||
static const char *timer2_str = "timer 2";
|
|
||||||
static const char *pipe_read_str = "pipe read";
|
|
||||||
|
|
||||||
int count;
|
|
||||||
Ecore_Pipe *the_pipe;
|
|
||||||
|
|
||||||
Eina_Bool timer_one(void *data __UNUSED__)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "timer 1\n");
|
|
||||||
assert(called == pipe_read_str);
|
|
||||||
called = timer1_str;
|
|
||||||
ecore_pipe_write(the_pipe, "b", 1);
|
|
||||||
|
|
||||||
count++;
|
|
||||||
if (count == 10)
|
|
||||||
{
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
return EINA_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
Eina_Bool timer_two(void *data __UNUSED__)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "timer 2\n");
|
|
||||||
assert(called == timer1_str);
|
|
||||||
called = timer2_str;
|
|
||||||
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
Eina_Bool idle_enterer_one(void *data __UNUSED__)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "idle enterer!\n");
|
|
||||||
switch (count)
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
assert(called == timer2_str);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
assert(called == timer1_str);
|
|
||||||
break;
|
|
||||||
case 0:
|
|
||||||
assert(called == NULL);
|
|
||||||
}
|
|
||||||
called = idle_enterer_str;
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
Eina_Bool idler_one(void *data __UNUSED__)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "idler!\n");
|
|
||||||
assert(called == idle_enterer_str);
|
|
||||||
called = idler_str;
|
|
||||||
if (count == 0)
|
|
||||||
ecore_timer_add(0.0, timer_two, NULL);
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
Eina_Bool idle_exiter_one(void *data __UNUSED__)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "idle exiter!\n");
|
|
||||||
assert(called == idler_str);
|
|
||||||
called = idle_exiter_str;
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
void pipe_read(void *data __UNUSED__, void *buffer __UNUSED__, unsigned int nbyte __UNUSED__)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "pipe read\n");
|
|
||||||
assert(called == idle_exiter_str);
|
|
||||||
called = pipe_read_str;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc __UNUSED__, char **argv __UNUSED__)
|
|
||||||
{
|
|
||||||
assert(1 == ecore_init());
|
|
||||||
|
|
||||||
the_pipe = ecore_pipe_add(&pipe_read, NULL);
|
|
||||||
assert(the_pipe != NULL);
|
|
||||||
assert(EINA_TRUE == ecore_pipe_write(the_pipe, "a", 1));
|
|
||||||
|
|
||||||
assert(NULL != ecore_timer_add(0.0, timer_one, NULL));
|
|
||||||
|
|
||||||
assert(NULL != ecore_idle_enterer_add(&idle_enterer_one, NULL));
|
|
||||||
assert(NULL != ecore_idler_add(&idler_one, NULL));
|
|
||||||
assert(NULL != ecore_idle_exiter_add(&idle_exiter_one, NULL));
|
|
||||||
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
/* glib main loop exits on an idle enterer */
|
|
||||||
assert(called == idle_enterer_str);
|
|
||||||
|
|
||||||
assert(0 == ecore_shutdown());
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,117 +0,0 @@
|
||||||
MAINTAINERCLEANFILES = Makefile.in
|
|
||||||
|
|
||||||
examplesdir = $(datadir)/$(PACKAGE)/examples
|
|
||||||
|
|
||||||
filesdir = $(datadir)/$(PACKAGE)/examples
|
|
||||||
files_DATA =
|
|
||||||
|
|
||||||
AM_CPPFLAGS = \
|
|
||||||
-I. \
|
|
||||||
-I$(top_srcdir)/src/lib/ecore \
|
|
||||||
-I$(top_srcdir)/src/lib/ecore_evas \
|
|
||||||
-I$(top_srcdir)/src/lib/ecore_input \
|
|
||||||
-I$(top_srcdir)/src/lib/ecore_con \
|
|
||||||
-DPACKAGE_EXAMPLES_DIR=\"$(datadir)/$(PACKAGE)/examples\" \
|
|
||||||
@GLIB_CFLAGS@ @EVIL_CFLAGS@ @EVAS_CFLAGS@ @EINA_CFLAGS@ @EFL_ECORE_BUILD@
|
|
||||||
|
|
||||||
ECOREBASELDADD = \
|
|
||||||
$(top_builddir)/src/lib/ecore/libecore.la \
|
|
||||||
$(top_builddir)/src/lib/ecore_evas/libecore_evas.la \
|
|
||||||
@dlopen_libs@ @EINA_LIBS@ @EVIL_LIBS@ @EVAS_LIBS@ @GLIB_LIBS@ @WIN32_LIBS@ @LTLIBINTL@ @EFL_PTHREAD_LIBS@ @rt_libs@ -lm
|
|
||||||
|
|
||||||
|
|
||||||
LDADD = \
|
|
||||||
$(ECOREBASELDADD)
|
|
||||||
|
|
||||||
SRCS = \
|
|
||||||
ecore_animator_example.c \
|
|
||||||
ecore_fd_handler_example.c \
|
|
||||||
ecore_poller_example.c \
|
|
||||||
ecore_event_example_01.c \
|
|
||||||
ecore_event_example_02.c \
|
|
||||||
ecore_idler_example.c \
|
|
||||||
ecore_timer_example.c \
|
|
||||||
ecore_time_functions_example.c \
|
|
||||||
ecore_job_example.c \
|
|
||||||
ecore_con_lookup_example.c \
|
|
||||||
ecore_con_url_headers_example.c \
|
|
||||||
ecore_con_url_download_example.c \
|
|
||||||
ecore_con_url_cookies_example.c \
|
|
||||||
ecore_con_server_simple_example.c \
|
|
||||||
ecore_con_server_http_example.c \
|
|
||||||
ecore_con_client_simple_example.c \
|
|
||||||
ecore_client_bench.c \
|
|
||||||
ecore_server_bench.c \
|
|
||||||
ecore_con_client_example.c \
|
|
||||||
ecore_con_server_example.c \
|
|
||||||
ecore_fd_handler_gnutls_example.c \
|
|
||||||
ecore_file_download_example.c \
|
|
||||||
ecore_pipe_simple_example.c \
|
|
||||||
ecore_pipe_gstreamer_example.c \
|
|
||||||
ecore_thread_example.c \
|
|
||||||
ecore_evas_callbacks.c \
|
|
||||||
ecore_evas_window_sizes_example.c \
|
|
||||||
ecore_evas_object_example.c \
|
|
||||||
ecore_evas_basics_example.c \
|
|
||||||
ecore_evas_buffer_example_01.c \
|
|
||||||
ecore_evas_buffer_example_02.c \
|
|
||||||
ecore_evas_ews_example.c \
|
|
||||||
ecore_exe_example.c \
|
|
||||||
ecore_exe_example_child.c
|
|
||||||
|
|
||||||
EXTRA_DIST = $(SRCS) \
|
|
||||||
$(srcdir)/red.png
|
|
||||||
|
|
||||||
examples_PROGRAMS =
|
|
||||||
|
|
||||||
if EFL_INSTALL_EXAMPLES
|
|
||||||
files_DATA += $(SRCS) \
|
|
||||||
$(srcdir)/red.png
|
|
||||||
endif
|
|
||||||
|
|
||||||
if EFL_BUILD_EXAMPLES
|
|
||||||
examples_PROGRAMS += \
|
|
||||||
ecore_animator_example \
|
|
||||||
ecore_fd_handler_example \
|
|
||||||
ecore_poller_example \
|
|
||||||
ecore_event_example_01 \
|
|
||||||
ecore_event_example_02 \
|
|
||||||
ecore_idler_example \
|
|
||||||
ecore_job_example \
|
|
||||||
ecore_timer_example \
|
|
||||||
ecore_time_functions_example \
|
|
||||||
ecore_pipe_simple_example \
|
|
||||||
ecore_con_lookup_example \
|
|
||||||
ecore_con_url_headers_example \
|
|
||||||
ecore_con_url_download_example \
|
|
||||||
ecore_con_url_cookies_example \
|
|
||||||
ecore_con_server_simple_example \
|
|
||||||
ecore_con_server_http_example \
|
|
||||||
ecore_con_client_simple_example \
|
|
||||||
ecore_thread_example \
|
|
||||||
ecore_evas_callbacks \
|
|
||||||
ecore_evas_window_sizes_example \
|
|
||||||
ecore_evas_object_example \
|
|
||||||
ecore_evas_basics_example \
|
|
||||||
ecore_evas_buffer_example_01 \
|
|
||||||
ecore_evas_buffer_example_02 \
|
|
||||||
ecore_evas_ews_example \
|
|
||||||
ecore_client_bench \
|
|
||||||
ecore_server_bench \
|
|
||||||
ecore_exe_example \
|
|
||||||
ecore_exe_example_child
|
|
||||||
|
|
||||||
ecore_con_lookup_example_LDADD = $(ECOREBASELDADD) $(top_builddir)/src/lib/ecore_con/libecore_con.la
|
|
||||||
ecore_con_url_headers_example_LDADD = $(ECOREBASELDADD) $(top_builddir)/src/lib/ecore_con/libecore_con.la
|
|
||||||
ecore_con_url_download_example_LDADD = $(ECOREBASELDADD) $(top_builddir)/src/lib/ecore_con/libecore_con.la
|
|
||||||
ecore_con_url_cookies_example_LDADD = $(ECOREBASELDADD) $(top_builddir)/src/lib/ecore_con/libecore_con.la
|
|
||||||
ecore_con_server_simple_example_LDADD = $(ECOREBASELDADD) $(top_builddir)/src/lib/ecore_con/libecore_con.la
|
|
||||||
ecore_con_server_http_example_LDADD = $(ECOREBASELDADD) $(top_builddir)/src/lib/ecore_con/libecore_con.la
|
|
||||||
ecore_con_client_simple_example_LDADD = $(ECOREBASELDADD) $(top_builddir)/src/lib/ecore_con/libecore_con.la
|
|
||||||
ecore_evas_window_sizes_example_LDADD = $(ECOREBASELDADD) @EVAS_LIBS@ $(top_builddir)/src/lib/ecore_evas/libecore_evas.la
|
|
||||||
ecore_evas_buffer_example_01_LDADD = $(ECOREBASELDADD) @EVAS_LIBS@ $(top_builddir)/src/lib/ecore_evas/libecore_evas.la
|
|
||||||
ecore_evas_buffer_example_02_LDADD = $(ECOREBASELDADD) @EVAS_LIBS@ $(top_builddir)/src/lib/ecore_evas/libecore_evas.la
|
|
||||||
ecore_client_bench_LDADD = $(ECOREBASELDADD) $(top_builddir)/src/lib/ecore_con/libecore_con.la
|
|
||||||
ecore_server_bench_LDADD = $(ECOREBASELDADD) $(top_builddir)/src/lib/ecore_con/libecore_con.la
|
|
||||||
|
|
||||||
endif
|
|
|
@ -1,117 +0,0 @@
|
||||||
//Compile with:
|
|
||||||
//gcc -g -Wall `pkg-config --cflags --libs ecore-evas` -o ecore_animator_example ecore_animator_example.c
|
|
||||||
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include <Ecore_Evas.h>
|
|
||||||
|
|
||||||
static Eina_Bool _advance_frame(void *data, double pos);
|
|
||||||
static Eina_Bool _advance_frame2(void *data, double pos);
|
|
||||||
static Eina_Bool _advance_frame3(void *data);
|
|
||||||
static Eina_Bool _start_second_anim(void *data);
|
|
||||||
static Eina_Bool _freeze_third_anim(void *data);
|
|
||||||
static Eina_Bool _thaw_third_anim(void *data);
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
Evas_Object *rect, *bg, *rect2;
|
|
||||||
Ecore_Evas *ee;
|
|
||||||
Evas *evas;
|
|
||||||
Ecore_Animator *anim;
|
|
||||||
|
|
||||||
ecore_evas_init();
|
|
||||||
|
|
||||||
ee = ecore_evas_new(NULL, 0, 0, 300, 400, NULL);
|
|
||||||
ecore_evas_show(ee);
|
|
||||||
evas = ecore_evas_get(ee);
|
|
||||||
|
|
||||||
bg = evas_object_rectangle_add(evas);
|
|
||||||
evas_object_resize(bg, 300, 400);
|
|
||||||
evas_object_show(bg);
|
|
||||||
|
|
||||||
rect = evas_object_rectangle_add(evas);
|
|
||||||
evas_object_color_set(rect, 0, 0, 255, 255);
|
|
||||||
evas_object_resize(rect, 50, 50);
|
|
||||||
evas_object_show(rect);
|
|
||||||
|
|
||||||
rect2 = evas_object_rectangle_add(evas);
|
|
||||||
evas_object_color_set(rect2, 0, 55, 0, 255);
|
|
||||||
evas_object_resize(rect2, 50, 50);
|
|
||||||
evas_object_show(rect2);
|
|
||||||
|
|
||||||
ecore_animator_frametime_set(1. / 50);
|
|
||||||
ecore_animator_timeline_add(5, _advance_frame, rect);
|
|
||||||
|
|
||||||
anim = ecore_animator_add(_advance_frame3, rect2);
|
|
||||||
|
|
||||||
ecore_timer_add(10, _start_second_anim, rect);
|
|
||||||
ecore_timer_add(5, _freeze_third_anim, anim);
|
|
||||||
ecore_timer_add(10, _thaw_third_anim, anim);
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
evas_object_del(rect);
|
|
||||||
ecore_evas_free(ee);
|
|
||||||
ecore_animator_del(anim);
|
|
||||||
ecore_evas_shutdown();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_advance_frame(void *data, double pos)
|
|
||||||
{
|
|
||||||
double frame = pos;
|
|
||||||
frame = ecore_animator_pos_map(pos, ECORE_POS_MAP_SPRING, 1.2, 15);
|
|
||||||
|
|
||||||
evas_object_resize(data, 50 * (1 + frame), 50 * (1 + frame));
|
|
||||||
evas_object_move(data, 100 * frame, 100 * frame);
|
|
||||||
evas_object_color_set(data, 255 * frame, 0, 255 * (1 - frame), 255);
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_start_second_anim(void *data)
|
|
||||||
{
|
|
||||||
ecore_animator_frametime_set(1. / 10);
|
|
||||||
ecore_animator_timeline_add(20, _advance_frame2, data);
|
|
||||||
return EINA_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_advance_frame2(void *data, double pos)
|
|
||||||
{
|
|
||||||
double frame = pos;
|
|
||||||
frame = ecore_animator_pos_map(pos, ECORE_POS_MAP_BOUNCE, 1.2, 50);
|
|
||||||
|
|
||||||
evas_object_resize(data, 100 - (50 * frame), 100 - (50 * frame));
|
|
||||||
evas_object_move(data, 100 * (1 - frame), 100 * (1 - frame));
|
|
||||||
evas_object_color_set(data, 255 * (1 - frame), 0, 255 * frame, 255);
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_advance_frame3(void *data)
|
|
||||||
{
|
|
||||||
static int x = 0;
|
|
||||||
|
|
||||||
if (x >= 250)
|
|
||||||
x = 0;
|
|
||||||
evas_object_move(data, ++x, 350);
|
|
||||||
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_freeze_third_anim(void *data)
|
|
||||||
{
|
|
||||||
ecore_animator_freeze(data);
|
|
||||||
return EINA_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_thaw_third_anim(void *data)
|
|
||||||
{
|
|
||||||
ecore_animator_thaw(data);
|
|
||||||
return EINA_FALSE;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,79 +0,0 @@
|
||||||
#include <stdio.h>
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include <Ecore_Con.h>
|
|
||||||
|
|
||||||
/* Ecore_Con client example
|
|
||||||
* 2010 Mike Blumenkrantz
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define NUM_CLIENTS 30000
|
|
||||||
|
|
||||||
static Eina_Counter *counter;
|
|
||||||
static int add = 0;
|
|
||||||
static int del = 0;
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_add(void *data, int type, Ecore_Con_Event_Server_Add *ev)
|
|
||||||
{
|
|
||||||
++add;
|
|
||||||
printf("Connection #%i!\n", add);
|
|
||||||
if (add == NUM_CLIENTS)
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_del(void *data, int type, Ecore_Con_Event_Server_Add *ev)
|
|
||||||
{
|
|
||||||
++del;
|
|
||||||
printf("Connection lost! #%i!\n", del);
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_spawn(void *data)
|
|
||||||
{
|
|
||||||
int x;
|
|
||||||
|
|
||||||
for (x = 0; x < NUM_CLIENTS; x++)
|
|
||||||
{
|
|
||||||
// printf("Creating connection %i\n", x);
|
|
||||||
if (!ecore_con_server_connect(ECORE_CON_REMOTE_NODELAY, "127.0.0.1", 8080, NULL))
|
|
||||||
{
|
|
||||||
printf("CRITICAL ERROR!\n"
|
|
||||||
"Could not create connection #%i!\n", x);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
printf("***Job done***\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(void)
|
|
||||||
{
|
|
||||||
double done;
|
|
||||||
eina_init();
|
|
||||||
ecore_init();
|
|
||||||
ecore_con_init();
|
|
||||||
|
|
||||||
eina_log_domain_level_set("ecore_con", EINA_LOG_LEVEL_ERR);
|
|
||||||
eina_log_domain_level_set("eina", EINA_LOG_LEVEL_ERR);
|
|
||||||
counter = eina_counter_new("client");
|
|
||||||
eina_counter_start(counter);
|
|
||||||
done = ecore_time_get();
|
|
||||||
|
|
||||||
ecore_job_add(_spawn, NULL);
|
|
||||||
|
|
||||||
/* set event handler for server connect */
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_SERVER_ADD, (Ecore_Event_Handler_Cb)_add, NULL);
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_SERVER_ADD, (Ecore_Event_Handler_Cb)_del, NULL);
|
|
||||||
|
|
||||||
/* start client */
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
eina_counter_stop(counter, 1);
|
|
||||||
printf("\nTime elapsed for %i connections: %f seconds\n%s", NUM_CLIENTS, ecore_time_get() - done, eina_counter_dump(counter));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,92 +0,0 @@
|
||||||
#include <stdio.h>
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include <Ecore_Con.h>
|
|
||||||
|
|
||||||
/* Ecore_Con client example
|
|
||||||
* 2010 Mike Blumenkrantz
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* comment if not using gnutls */
|
|
||||||
static void
|
|
||||||
tls_log_func(int level, const char *str)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "|<%d>| %s", level, str);
|
|
||||||
}
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_add(void *data, int type, Ecore_Con_Event_Server_Add *ev)
|
|
||||||
{
|
|
||||||
printf("Server with ip %s connected!\n", ecore_con_server_ip_get(ev->server));
|
|
||||||
ecore_con_server_send(ev->server, "hello!", 6);
|
|
||||||
ecore_con_server_flush(ev->server);
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_del(void *data, int type, Ecore_Con_Event_Server_Del *ev)
|
|
||||||
{
|
|
||||||
printf("Lost server with ip %s!\n", ecore_con_server_ip_get(ev->server));
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_data(void *data, int type, Ecore_Con_Event_Server_Data *ev)
|
|
||||||
{
|
|
||||||
char fmt[128];
|
|
||||||
|
|
||||||
snprintf(fmt, sizeof(fmt),
|
|
||||||
"Received %i bytes from server:\n"
|
|
||||||
">>>>>\n"
|
|
||||||
"%%.%is\n"
|
|
||||||
">>>>>\n",
|
|
||||||
ev->size, ev->size);
|
|
||||||
|
|
||||||
printf(fmt, ev->data);
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main()
|
|
||||||
{
|
|
||||||
Ecore_Con_Server *svr;
|
|
||||||
Eina_Iterator *it;
|
|
||||||
const char *ca;
|
|
||||||
|
|
||||||
eina_init();
|
|
||||||
ecore_init();
|
|
||||||
ecore_con_init();
|
|
||||||
|
|
||||||
/* comment if not using gnutls */
|
|
||||||
gnutls_global_set_log_level(9);
|
|
||||||
gnutls_global_set_log_function(tls_log_func);
|
|
||||||
|
|
||||||
if (!(it = eina_file_ls("/etc/ssl/certs")))
|
|
||||||
exit(1);
|
|
||||||
|
|
||||||
if (!(svr = ecore_con_server_connect(ECORE_CON_REMOTE_TCP | ECORE_CON_USE_MIXED, "www.verisign.com", 443, NULL)))
|
|
||||||
exit(1);
|
|
||||||
|
|
||||||
/* add all the CAs */
|
|
||||||
EINA_ITERATOR_FOREACH(it, ca)
|
|
||||||
{
|
|
||||||
if (!ecore_con_ssl_server_cafile_add(svr, ca))
|
|
||||||
printf("Could not load CA: %s!\n", ca);
|
|
||||||
eina_stringshare_del(ca);
|
|
||||||
}
|
|
||||||
|
|
||||||
eina_iterator_free(it);
|
|
||||||
ecore_con_ssl_server_verify(svr);
|
|
||||||
|
|
||||||
/* set event handler for server connect */
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_SERVER_ADD, (Ecore_Event_Handler_Cb)_add, NULL);
|
|
||||||
/* set event handler for server disconnect */
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DEL, (Ecore_Event_Handler_Cb)_del, NULL);
|
|
||||||
/* set event handler for receiving server data */
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DATA, (Ecore_Event_Handler_Cb)_data, NULL);
|
|
||||||
|
|
||||||
/* start client */
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,126 +0,0 @@
|
||||||
#include <stdio.h>
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include <Ecore_Con.h>
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include "config.h"
|
|
||||||
#else
|
|
||||||
# define __UNUSED__
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct _Server
|
|
||||||
{
|
|
||||||
int sdata;
|
|
||||||
};
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_add(void *data __UNUSED__, int type __UNUSED__, Ecore_Con_Event_Server_Add *ev)
|
|
||||||
{
|
|
||||||
char welcome[] = "hello! - sent from the client";
|
|
||||||
struct _Server *server = malloc(sizeof(*server));
|
|
||||||
server->sdata = 0;
|
|
||||||
|
|
||||||
ecore_con_server_data_set(ev->server, server);
|
|
||||||
printf("Server with ip %s, name %s, port %d, connected = %d!\n",
|
|
||||||
ecore_con_server_ip_get(ev->server),
|
|
||||||
ecore_con_server_name_get(ev->server),
|
|
||||||
ecore_con_server_port_get(ev->server),
|
|
||||||
ecore_con_server_connected_get(ev->server));
|
|
||||||
ecore_con_server_send(ev->server, welcome, sizeof(welcome));
|
|
||||||
ecore_con_server_flush(ev->server);
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_del(void *data __UNUSED__, int type __UNUSED__, Ecore_Con_Event_Server_Del *ev)
|
|
||||||
{
|
|
||||||
if (!ev->server)
|
|
||||||
{
|
|
||||||
printf("Failed to establish connection to the server.\nExiting.\n");
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct _Server *server = ecore_con_server_data_get(ev->server);
|
|
||||||
|
|
||||||
printf("Lost server with ip %s!\n", ecore_con_server_ip_get(ev->server));
|
|
||||||
|
|
||||||
if (server)
|
|
||||||
{
|
|
||||||
printf("Total data received from this server: %d\n", server->sdata);
|
|
||||||
free(server);
|
|
||||||
}
|
|
||||||
|
|
||||||
ecore_con_server_del(ev->server);
|
|
||||||
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_data(void *data __UNUSED__, int type __UNUSED__, Ecore_Con_Event_Server_Data *ev)
|
|
||||||
{
|
|
||||||
char fmt[128];
|
|
||||||
struct _Server *server = ecore_con_server_data_get(ev->server);
|
|
||||||
|
|
||||||
snprintf(fmt, sizeof(fmt),
|
|
||||||
"Received %i bytes from server:\n"
|
|
||||||
">>>>>\n"
|
|
||||||
"%%.%is\n"
|
|
||||||
">>>>>\n",
|
|
||||||
ev->size, ev->size);
|
|
||||||
|
|
||||||
printf(fmt, ev->data);
|
|
||||||
|
|
||||||
server->sdata += ev->size;
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, const char *argv[])
|
|
||||||
{
|
|
||||||
Ecore_Con_Server *svr;
|
|
||||||
const char *address;
|
|
||||||
int port = 8080;
|
|
||||||
|
|
||||||
if (argc < 2)
|
|
||||||
{
|
|
||||||
printf("wrong usage. Command syntax is:\n");
|
|
||||||
printf("\tecore_con_client_simple_example <address> [port]\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
address = argv[1];
|
|
||||||
|
|
||||||
if (argc > 2)
|
|
||||||
port = atoi(argv[2]);
|
|
||||||
|
|
||||||
eina_init();
|
|
||||||
ecore_init();
|
|
||||||
ecore_con_init();
|
|
||||||
|
|
||||||
if (!(svr = ecore_con_server_connect(ECORE_CON_REMOTE_TCP, address, port, NULL)))
|
|
||||||
{
|
|
||||||
printf("could not connect to the server: %s, port %d.\n",
|
|
||||||
address, port);
|
|
||||||
exit(2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* set event handler for server connect */
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_SERVER_ADD, (Ecore_Event_Handler_Cb)_add, NULL);
|
|
||||||
/* set event handler for server disconnect */
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DEL, (Ecore_Event_Handler_Cb)_del, NULL);
|
|
||||||
/* set event handler for receiving server data */
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DATA, (Ecore_Event_Handler_Cb)_data, NULL);
|
|
||||||
|
|
||||||
/* start client */
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
ecore_con_init();
|
|
||||||
ecore_init();
|
|
||||||
eina_init();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
#include <stdio.h>
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include <Ecore_Con.h>
|
|
||||||
|
|
||||||
static void
|
|
||||||
_lookup_done_cb(const char *canonname, const char *ip, struct sockaddr *addr, int addrlen, void *data)
|
|
||||||
{
|
|
||||||
printf("canonname = %s\n", canonname);
|
|
||||||
printf("ip = %s\n", ip);
|
|
||||||
printf("addr = %p\n", addr);
|
|
||||||
printf("addrlen = %d\n", addrlen);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, const char *argv[])
|
|
||||||
{
|
|
||||||
if (argc < 2)
|
|
||||||
{
|
|
||||||
printf("need one parameter: <address>\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
ecore_init();
|
|
||||||
ecore_con_init();
|
|
||||||
|
|
||||||
if (!ecore_con_lookup(argv[1], _lookup_done_cb, NULL))
|
|
||||||
{
|
|
||||||
printf("error when trying to start lookup for %s\n", argv[1]);
|
|
||||||
goto end;
|
|
||||||
}
|
|
||||||
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
end:
|
|
||||||
ecore_con_shutdown();
|
|
||||||
ecore_shutdown();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,81 +0,0 @@
|
||||||
#include <stdio.h>
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include <Ecore_Con.h>
|
|
||||||
|
|
||||||
/* Ecore_Con server example
|
|
||||||
* 2010 Mike Blumenkrantz
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* comment if not using gnutls */
|
|
||||||
static void
|
|
||||||
tls_log_func(int level, const char *str)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "|<%d>| %s", level, str);
|
|
||||||
}
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_add(void *data, int type, Ecore_Con_Event_Client_Add *ev)
|
|
||||||
{
|
|
||||||
printf("Client with ip %s connected!\n", ecore_con_client_ip_get(ev->client));
|
|
||||||
ecore_con_client_send(ev->client, "hello!", 6);
|
|
||||||
// ecore_con_client_flush(ev->client);
|
|
||||||
ecore_con_client_timeout_set(ev->client, 5);
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_del(void *data, int type, Ecore_Con_Event_Client_Del *ev)
|
|
||||||
{
|
|
||||||
printf("Lost client with ip %s!\n", ecore_con_client_ip_get(ev->client));
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_data(void *data, int type, Ecore_Con_Event_Client_Data *ev)
|
|
||||||
{
|
|
||||||
char fmt[128];
|
|
||||||
|
|
||||||
snprintf(fmt, sizeof(fmt),
|
|
||||||
"Received %i bytes from client:\n"
|
|
||||||
">>>>>\n"
|
|
||||||
"%%.%is\n"
|
|
||||||
">>>>>\n",
|
|
||||||
ev->size, ev->size);
|
|
||||||
|
|
||||||
printf(fmt, ev->data);
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main()
|
|
||||||
{
|
|
||||||
Ecore_Con_Server *svr;
|
|
||||||
eina_init();
|
|
||||||
ecore_init();
|
|
||||||
ecore_con_init();
|
|
||||||
|
|
||||||
/* comment if not using gnutls */
|
|
||||||
gnutls_global_set_log_level(9);
|
|
||||||
gnutls_global_set_log_function(tls_log_func);
|
|
||||||
|
|
||||||
/* to use a PEM certificate with TLS and SSL3, uncomment the lines below */
|
|
||||||
if (!(svr = ecore_con_server_add(ECORE_CON_REMOTE_TCP | ECORE_CON_USE_TLS | ECORE_CON_USE_SSL3 | ECORE_CON_LOAD_CERT, "127.0.0.1", 8080, NULL)))
|
|
||||||
/* to use simple tcp with ssl/tls, use this line */
|
|
||||||
// if (!ecore_con_server_add(ECORE_CON_REMOTE_TCP | ECORE_CON_USE_SSL3, "127.0.0.1", 8080, NULL))
|
|
||||||
exit(1);
|
|
||||||
|
|
||||||
ecore_con_ssl_server_cert_add(svr, "server.pem");
|
|
||||||
ecore_con_ssl_server_privkey_add(svr, "server.pem");
|
|
||||||
/* set event handler for client connect */
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_ADD, (Ecore_Event_Handler_Cb)_add, NULL);
|
|
||||||
/* set event handler for client disconnect */
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DEL, (Ecore_Event_Handler_Cb)_del, NULL);
|
|
||||||
/* set event handler for receiving client data */
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DATA, (Ecore_Event_Handler_Cb)_data, NULL);
|
|
||||||
|
|
||||||
/* start server */
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,136 +0,0 @@
|
||||||
#include <stdio.h>
|
|
||||||
#include <sys/time.h>
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include <Ecore_Con.h>
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include "config.h"
|
|
||||||
#else
|
|
||||||
# define __UNUSED__
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static const char response_template[] =
|
|
||||||
"HTTP/1.0 200 OK\r\n"
|
|
||||||
"Server: Ecore_Con custom server\r\n"
|
|
||||||
"Content-Length: %zd\r\n"
|
|
||||||
"Content-Type: text/html; charset=UTF-8\r\n"
|
|
||||||
"Set-Cookie: MYCOOKIE=1; path=/; expires=%s\r\n"
|
|
||||||
"Set-Cookie: SESSIONCOOKIE=1; path=/\r\n"
|
|
||||||
"\r\n"
|
|
||||||
"%s";
|
|
||||||
|
|
||||||
struct _Client
|
|
||||||
{
|
|
||||||
int sdata;
|
|
||||||
};
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_add(void *data __UNUSED__, int type __UNUSED__, Ecore_Con_Event_Client_Add *ev)
|
|
||||||
{
|
|
||||||
struct _Client *client = malloc(sizeof(*client));
|
|
||||||
client->sdata = 0;
|
|
||||||
static char buf[4096];
|
|
||||||
char welcome[] = "Welcome to Ecore_Con server!";
|
|
||||||
time_t t;
|
|
||||||
|
|
||||||
printf("Client with ip %s, port %d, connected = %d!\n",
|
|
||||||
ecore_con_client_ip_get(ev->client),
|
|
||||||
ecore_con_client_port_get(ev->client),
|
|
||||||
ecore_con_client_connected_get(ev->client));
|
|
||||||
|
|
||||||
ecore_con_client_data_set(ev->client, client);
|
|
||||||
|
|
||||||
t = time(NULL);
|
|
||||||
t += 60 * 60 * 24;
|
|
||||||
snprintf(buf, sizeof(buf), response_template, sizeof(welcome) - 1, ctime(&t), welcome);
|
|
||||||
|
|
||||||
ecore_con_client_send(ev->client, buf, strlen(buf));
|
|
||||||
ecore_con_client_flush(ev->client);
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_del(void *data __UNUSED__, int type __UNUSED__, Ecore_Con_Event_Client_Del *ev)
|
|
||||||
{
|
|
||||||
struct _Client *client;
|
|
||||||
|
|
||||||
if (!ev->client)
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
|
|
||||||
client = ecore_con_client_data_get(ev->client);
|
|
||||||
|
|
||||||
printf("Lost client with ip %s!\n", ecore_con_client_ip_get(ev->client));
|
|
||||||
printf("Total data received from this client: %d\n", client->sdata);
|
|
||||||
printf("Client was connected for %0.3f seconds.\n",
|
|
||||||
ecore_con_client_uptime_get(ev->client));
|
|
||||||
|
|
||||||
if (client)
|
|
||||||
free(client);
|
|
||||||
|
|
||||||
ecore_con_client_del(ev->client);
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_data(void *data __UNUSED__, int type __UNUSED__, Ecore_Con_Event_Client_Data *ev)
|
|
||||||
{
|
|
||||||
char fmt[128];
|
|
||||||
struct _Client *client = ecore_con_client_data_get(ev->client);
|
|
||||||
|
|
||||||
snprintf(fmt, sizeof(fmt),
|
|
||||||
"\nReceived %i bytes from client %s port %d:\n"
|
|
||||||
">>>>>\n"
|
|
||||||
"%%.%is\n"
|
|
||||||
">>>>>\n\n",
|
|
||||||
ev->size, ecore_con_client_ip_get(ev->client),
|
|
||||||
ecore_con_client_port_get(ev->client), ev->size);
|
|
||||||
|
|
||||||
printf(fmt, ev->data);
|
|
||||||
|
|
||||||
client->sdata += ev->size;
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(void)
|
|
||||||
{
|
|
||||||
Ecore_Con_Server *svr;
|
|
||||||
Ecore_Con_Client *cl;
|
|
||||||
const Eina_List *clients, *l;
|
|
||||||
|
|
||||||
eina_init();
|
|
||||||
ecore_init();
|
|
||||||
ecore_con_init();
|
|
||||||
|
|
||||||
if (!(svr = ecore_con_server_add(ECORE_CON_REMOTE_TCP, "127.0.0.1", 8080, NULL)))
|
|
||||||
exit(1);
|
|
||||||
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_ADD, (Ecore_Event_Handler_Cb)_add, NULL);
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DEL, (Ecore_Event_Handler_Cb)_del, NULL);
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DATA, (Ecore_Event_Handler_Cb)_data, NULL);
|
|
||||||
ecore_con_server_client_limit_set(svr, 3, 0);
|
|
||||||
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
clients = ecore_con_server_clients_get(svr);
|
|
||||||
printf("Clients still connected to this server when exiting: %d\n",
|
|
||||||
eina_list_count(clients));
|
|
||||||
EINA_LIST_FOREACH(clients, l, cl)
|
|
||||||
{
|
|
||||||
printf("%s\n", ecore_con_client_ip_get(cl));
|
|
||||||
free(ecore_con_client_data_get(cl));
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("Server was up for %0.3f seconds\n",
|
|
||||||
ecore_con_server_uptime_get(svr));
|
|
||||||
|
|
||||||
ecore_con_shutdown();
|
|
||||||
ecore_shutdown();
|
|
||||||
eina_shutdown();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,133 +0,0 @@
|
||||||
#include <stdio.h>
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include <Ecore_Con.h>
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include "config.h"
|
|
||||||
#else
|
|
||||||
# define __UNUSED__
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct _Client
|
|
||||||
{
|
|
||||||
int sdata;
|
|
||||||
};
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_add(void *data __UNUSED__, int type __UNUSED__, Ecore_Con_Event_Client_Add *ev)
|
|
||||||
{
|
|
||||||
char welcome[] = "hello! - sent from the server";
|
|
||||||
Ecore_Con_Server *srv;
|
|
||||||
Ecore_Con_Client *cl;
|
|
||||||
const Eina_List *clients, *l;
|
|
||||||
|
|
||||||
struct _Client *client = malloc(sizeof(*client));
|
|
||||||
client->sdata = 0;
|
|
||||||
|
|
||||||
printf("Client with ip %s, port %d, connected = %d!\n",
|
|
||||||
ecore_con_client_ip_get(ev->client),
|
|
||||||
ecore_con_client_port_get(ev->client),
|
|
||||||
ecore_con_client_connected_get(ev->client));
|
|
||||||
|
|
||||||
ecore_con_client_send(ev->client, welcome, sizeof(welcome));
|
|
||||||
ecore_con_client_flush(ev->client);
|
|
||||||
|
|
||||||
ecore_con_client_timeout_set(ev->client, 6);
|
|
||||||
|
|
||||||
ecore_con_client_data_set(ev->client, client);
|
|
||||||
|
|
||||||
srv = ecore_con_client_server_get(ev->client);
|
|
||||||
printf("Clients connected to this server:\n");
|
|
||||||
clients = ecore_con_server_clients_get(srv);
|
|
||||||
EINA_LIST_FOREACH(clients, l, cl)
|
|
||||||
printf("%s\n", ecore_con_client_ip_get(cl));
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_del(void *data __UNUSED__, int type __UNUSED__, Ecore_Con_Event_Client_Del *ev)
|
|
||||||
{
|
|
||||||
struct _Client *client;
|
|
||||||
|
|
||||||
if (!ev->client)
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
|
|
||||||
client = ecore_con_client_data_get(ev->client);
|
|
||||||
|
|
||||||
printf("Lost client with ip %s!\n", ecore_con_client_ip_get(ev->client));
|
|
||||||
printf("Total data received from this client: %d\n", client->sdata);
|
|
||||||
printf("Client was connected for %0.3f seconds.\n",
|
|
||||||
ecore_con_client_uptime_get(ev->client));
|
|
||||||
|
|
||||||
if (client)
|
|
||||||
free(client);
|
|
||||||
|
|
||||||
ecore_con_client_del(ev->client);
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_data(void *data __UNUSED__, int type __UNUSED__, Ecore_Con_Event_Client_Data *ev)
|
|
||||||
{
|
|
||||||
char fmt[128];
|
|
||||||
struct _Client *client = ecore_con_client_data_get(ev->client);
|
|
||||||
|
|
||||||
snprintf(fmt, sizeof(fmt),
|
|
||||||
"Received %i bytes from client %s port %d:\n"
|
|
||||||
">>>>>\n"
|
|
||||||
"%%.%is\n"
|
|
||||||
">>>>>\n",
|
|
||||||
ev->size, ecore_con_client_ip_get(ev->client),
|
|
||||||
ecore_con_client_port_get(ev->client), ev->size);
|
|
||||||
|
|
||||||
printf(fmt, ev->data);
|
|
||||||
|
|
||||||
client->sdata += ev->size;
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(void)
|
|
||||||
{
|
|
||||||
Ecore_Con_Server *svr;
|
|
||||||
Ecore_Con_Client *cl;
|
|
||||||
const Eina_List *clients, *l;
|
|
||||||
|
|
||||||
eina_init();
|
|
||||||
ecore_init();
|
|
||||||
ecore_con_init();
|
|
||||||
|
|
||||||
if (!(svr = ecore_con_server_add(ECORE_CON_REMOTE_TCP, "127.0.0.1", 8080, NULL)))
|
|
||||||
exit(1);
|
|
||||||
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_ADD, (Ecore_Event_Handler_Cb)_add, NULL);
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DEL, (Ecore_Event_Handler_Cb)_del, NULL);
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DATA, (Ecore_Event_Handler_Cb)_data, NULL);
|
|
||||||
|
|
||||||
ecore_con_server_timeout_set(svr, 10);
|
|
||||||
ecore_con_server_client_limit_set(svr, 3, 0);
|
|
||||||
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
clients = ecore_con_server_clients_get(svr);
|
|
||||||
printf("Clients connected to this server when exiting: %d\n",
|
|
||||||
eina_list_count(clients));
|
|
||||||
EINA_LIST_FOREACH(clients, l, cl)
|
|
||||||
{
|
|
||||||
printf("%s\n", ecore_con_client_ip_get(cl));
|
|
||||||
free(ecore_con_client_data_get(cl));
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("Server was up for %0.3f seconds\n",
|
|
||||||
ecore_con_server_uptime_get(svr));
|
|
||||||
|
|
||||||
ecore_con_shutdown();
|
|
||||||
ecore_shutdown();
|
|
||||||
eina_shutdown();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,123 +0,0 @@
|
||||||
#include <stdio.h>
|
|
||||||
#include <Eina.h>
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include <Ecore_Con.h>
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include "config.h"
|
|
||||||
#else
|
|
||||||
# define __UNUSED__
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define COOKIEJAR "cookies.jar"
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_url_data_cb(void *data __UNUSED__, int type __UNUSED__, void *event_info)
|
|
||||||
{
|
|
||||||
Ecore_Con_Event_Url_Data *url_data = event_info;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
printf("\nData received from server:\n>>>>>\n");
|
|
||||||
for (i = 0; i < url_data->size; i++)
|
|
||||||
printf("%c", url_data->data[i]);
|
|
||||||
printf("\n>>>>>>\n\n");
|
|
||||||
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_url_complete_cb(void *data __UNUSED__, int type __UNUSED__, void *event_info)
|
|
||||||
{
|
|
||||||
Ecore_Con_Event_Url_Complete *url_complete = event_info;
|
|
||||||
const Eina_List *headers, *l;
|
|
||||||
char *str;
|
|
||||||
|
|
||||||
printf("\n");
|
|
||||||
printf("download completed with status code: %d\n", url_complete->status);
|
|
||||||
|
|
||||||
headers = ecore_con_url_response_headers_get(url_complete->url_con);
|
|
||||||
|
|
||||||
printf("response headers:\n");
|
|
||||||
EINA_LIST_FOREACH(headers, l, str)
|
|
||||||
printf("header: %s", str);
|
|
||||||
|
|
||||||
ecore_con_url_cookies_jar_write(url_complete->url_con);
|
|
||||||
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, const char *argv[])
|
|
||||||
{
|
|
||||||
Ecore_Con_Url *ec_url = NULL;
|
|
||||||
char cmd = '\0';
|
|
||||||
Eina_Bool r;
|
|
||||||
|
|
||||||
if (argc < 2)
|
|
||||||
{
|
|
||||||
printf("need at least one parameter: <url> [command]\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (argc > 2)
|
|
||||||
cmd = argv[2][0];
|
|
||||||
|
|
||||||
ecore_init();
|
|
||||||
ecore_con_init();
|
|
||||||
ecore_con_url_init();
|
|
||||||
|
|
||||||
ec_url = ecore_con_url_new(argv[1]);
|
|
||||||
if (!ec_url)
|
|
||||||
{
|
|
||||||
printf("error when creating ecore con url object.\n");
|
|
||||||
goto end;
|
|
||||||
}
|
|
||||||
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_URL_DATA, _url_data_cb, NULL);
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_URL_COMPLETE, _url_complete_cb, NULL);
|
|
||||||
|
|
||||||
ecore_con_url_additional_header_add(ec_url, "User-Agent", "Ecore_Con client");
|
|
||||||
|
|
||||||
ecore_con_url_cookies_init(ec_url);
|
|
||||||
if (cmd != 'c' && cmd != 's')
|
|
||||||
ecore_con_url_cookies_file_add(ec_url, COOKIEJAR);
|
|
||||||
ecore_con_url_cookies_jar_file_set(ec_url, COOKIEJAR);
|
|
||||||
|
|
||||||
switch (cmd)
|
|
||||||
{
|
|
||||||
case 'c': // clear
|
|
||||||
printf("Cleaning previously set cookies.\n");
|
|
||||||
ecore_con_url_cookies_clear(ec_url);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 's': // clear session
|
|
||||||
printf("Cleaning previously set session cookies.\n");
|
|
||||||
ecore_con_url_cookies_session_clear(ec_url);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'i': // ignore session
|
|
||||||
printf("Ignoring old session cookies.\n");
|
|
||||||
ecore_con_url_cookies_ignore_old_session_set(ec_url, EINA_TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
r = ecore_con_url_get(ec_url);
|
|
||||||
if (!r)
|
|
||||||
{
|
|
||||||
printf("could not realize request.\n");
|
|
||||||
goto free_ec_url;
|
|
||||||
}
|
|
||||||
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
free_ec_url:
|
|
||||||
ecore_con_url_free(ec_url);
|
|
||||||
end:
|
|
||||||
ecore_con_url_shutdown();
|
|
||||||
ecore_con_shutdown();
|
|
||||||
ecore_shutdown();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,113 +0,0 @@
|
||||||
#include <stdio.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include <Ecore_Con.h>
|
|
||||||
|
|
||||||
struct _request
|
|
||||||
{
|
|
||||||
long size;
|
|
||||||
};
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_url_progress_cb(void *data, int type, void *event_info)
|
|
||||||
{
|
|
||||||
Ecore_Con_Event_Url_Progress *url_progress = event_info;
|
|
||||||
float percent;
|
|
||||||
|
|
||||||
if (url_progress->down.total > 0)
|
|
||||||
{
|
|
||||||
struct _request *req = ecore_con_url_data_get(url_progress->url_con);
|
|
||||||
req->size = url_progress->down.now;
|
|
||||||
|
|
||||||
percent = (url_progress->down.now / url_progress->down.total) * 100;
|
|
||||||
printf("Total of download complete: %0.1f (%0.0f)%%\n",
|
|
||||||
percent, url_progress->down.now);
|
|
||||||
}
|
|
||||||
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_url_complete_cb(void *data, int type, void *event_info)
|
|
||||||
{
|
|
||||||
Ecore_Con_Event_Url_Complete *url_complete = event_info;
|
|
||||||
|
|
||||||
struct _request *req = ecore_con_url_data_get(url_complete->url_con);
|
|
||||||
int nbytes = ecore_con_url_received_bytes_get(url_complete->url_con);
|
|
||||||
|
|
||||||
printf("\n");
|
|
||||||
printf("download completed with status code: %d\n", url_complete->status);
|
|
||||||
printf("Total size of downloaded file: %ld bytes\n", req->size);
|
|
||||||
printf("Total size of downloaded file: %ld bytes "
|
|
||||||
"(from received_bytes_get)\n", nbytes);
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, const char *argv[])
|
|
||||||
{
|
|
||||||
Ecore_Con_Url *ec_url = NULL;
|
|
||||||
struct _request *req;
|
|
||||||
int fd;
|
|
||||||
const char *filename = "downloadedfile.dat";
|
|
||||||
|
|
||||||
if (argc < 2)
|
|
||||||
{
|
|
||||||
printf("need one parameter: <url>\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
fd = open(filename, O_CREAT | O_WRONLY | O_TRUNC, 0644);
|
|
||||||
|
|
||||||
if (fd == -1)
|
|
||||||
{
|
|
||||||
printf("error: could not open file for writing: \"%s\"\n",
|
|
||||||
filename);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
ecore_init();
|
|
||||||
ecore_con_init();
|
|
||||||
ecore_con_url_init();
|
|
||||||
|
|
||||||
ec_url = ecore_con_url_new(argv[1]);
|
|
||||||
if (!ec_url)
|
|
||||||
{
|
|
||||||
printf("error when creating ecore con url object.\n");
|
|
||||||
goto end;
|
|
||||||
}
|
|
||||||
|
|
||||||
req = malloc(sizeof(*req));
|
|
||||||
req->size = 0;
|
|
||||||
ecore_con_url_data_set(ec_url, req);
|
|
||||||
|
|
||||||
ecore_con_url_fd_set(ec_url, fd);
|
|
||||||
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_URL_PROGRESS, _url_progress_cb, NULL);
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_URL_COMPLETE, _url_complete_cb, NULL);
|
|
||||||
|
|
||||||
if (!ecore_con_url_get(ec_url))
|
|
||||||
{
|
|
||||||
printf("could not realize request.\n");
|
|
||||||
goto free_ec_url;
|
|
||||||
}
|
|
||||||
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
free_ec_url:
|
|
||||||
free(req);
|
|
||||||
ecore_con_url_free(ec_url);
|
|
||||||
end:
|
|
||||||
|
|
||||||
close(fd);
|
|
||||||
ecore_con_url_shutdown();
|
|
||||||
ecore_con_shutdown();
|
|
||||||
ecore_shutdown();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,106 +0,0 @@
|
||||||
#include <stdio.h>
|
|
||||||
#include <Eina.h>
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include <Ecore_Con.h>
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_url_data_cb(void *data, int type, void *event_info)
|
|
||||||
{
|
|
||||||
Ecore_Con_Event_Url_Data *url_data = event_info;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < url_data->size; i++)
|
|
||||||
printf("%c", url_data->data[i]);
|
|
||||||
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_url_complete_cb(void *data, int type, void *event_info)
|
|
||||||
{
|
|
||||||
Ecore_Con_Event_Url_Complete *url_complete = event_info;
|
|
||||||
const Eina_List *headers, *l;
|
|
||||||
char *str;
|
|
||||||
|
|
||||||
printf("\n");
|
|
||||||
printf("download completed with status code: %d\n", url_complete->status);
|
|
||||||
|
|
||||||
headers = ecore_con_url_response_headers_get(url_complete->url_con);
|
|
||||||
|
|
||||||
EINA_LIST_FOREACH(headers, l, str)
|
|
||||||
printf("header: %s\n", str);
|
|
||||||
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, const char *argv[])
|
|
||||||
{
|
|
||||||
Ecore_Con_Url *ec_url = NULL;
|
|
||||||
const char *type;
|
|
||||||
Eina_Bool r;
|
|
||||||
|
|
||||||
if (argc < 3)
|
|
||||||
{
|
|
||||||
printf("need at least two parameters: < POST|GET > <url1>\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
type = argv[1];
|
|
||||||
|
|
||||||
if (strcmp(type, "POST") && (strcmp(type, "GET")))
|
|
||||||
{
|
|
||||||
printf("only POST or GET are supported by this example.\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
ecore_init();
|
|
||||||
ecore_con_init();
|
|
||||||
ecore_con_url_init();
|
|
||||||
|
|
||||||
// check if requests are being pipelined, and set them if not:
|
|
||||||
if (!ecore_con_url_pipeline_get())
|
|
||||||
ecore_con_url_pipeline_set(EINA_TRUE);
|
|
||||||
|
|
||||||
ec_url = ecore_con_url_custom_new(argv[2], type);
|
|
||||||
if (!ec_url)
|
|
||||||
{
|
|
||||||
printf("error when creating ecore con url object.\n");
|
|
||||||
goto end;
|
|
||||||
}
|
|
||||||
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_URL_DATA, _url_data_cb, NULL);
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_URL_COMPLETE, _url_complete_cb, NULL);
|
|
||||||
|
|
||||||
ecore_con_url_additional_header_add(ec_url, "User-Agent", "blablabla");
|
|
||||||
ecore_con_url_verbose_set(ec_url, EINA_TRUE);
|
|
||||||
|
|
||||||
ecore_con_url_httpauth_set(ec_url, "user", "password", EINA_FALSE);
|
|
||||||
|
|
||||||
ecore_con_url_time(ec_url, ECORE_CON_URL_TIME_IFMODSINCE, 0);
|
|
||||||
|
|
||||||
if (!strcmp(type, "GET"))
|
|
||||||
r = ecore_con_url_get(ec_url);
|
|
||||||
else
|
|
||||||
r = ecore_con_url_post(ec_url, NULL, 0, NULL);
|
|
||||||
|
|
||||||
if (!r)
|
|
||||||
{
|
|
||||||
printf("could not realize request.\n");
|
|
||||||
goto free_ec_url;
|
|
||||||
}
|
|
||||||
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
free_ec_url:
|
|
||||||
ecore_con_url_free(ec_url);
|
|
||||||
end:
|
|
||||||
ecore_con_url_shutdown();
|
|
||||||
ecore_con_shutdown();
|
|
||||||
ecore_shutdown();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,89 +0,0 @@
|
||||||
/**
|
|
||||||
* Ecore example illustrating the basics of ecore evas usage.
|
|
||||||
*
|
|
||||||
* You'll need at least one Evas engine built for it (excluding the
|
|
||||||
* buffer one). See stdout/stderr for output.
|
|
||||||
*
|
|
||||||
* @verbatim
|
|
||||||
* gcc -o ecore_evas_basics_example ecore_evas_basics_example.c `pkg-config --libs --cflags ecore-evas`
|
|
||||||
* @endverbatim
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include <Ecore_Evas.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_stdin_cb(void *data, Ecore_Fd_Handler *handler)
|
|
||||||
{
|
|
||||||
Eina_List *l;
|
|
||||||
Ecore_Evas *ee;
|
|
||||||
char c;
|
|
||||||
|
|
||||||
scanf("%c", &c);
|
|
||||||
if (c == 'h')
|
|
||||||
EINA_LIST_FOREACH(ecore_evas_ecore_evas_list_get(), l, ee)
|
|
||||||
ecore_evas_hide(ee);
|
|
||||||
else if (c == 's')
|
|
||||||
EINA_LIST_FOREACH(ecore_evas_ecore_evas_list_get(), l, ee)
|
|
||||||
ecore_evas_show(ee);
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_on_delete(Ecore_Evas *ee)
|
|
||||||
{
|
|
||||||
free(ecore_evas_data_get(ee, "key"));
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(void)
|
|
||||||
{
|
|
||||||
Ecore_Evas *ee;
|
|
||||||
Evas *canvas;
|
|
||||||
Evas_Object *bg;
|
|
||||||
Eina_List *engines, *l;
|
|
||||||
char *data;
|
|
||||||
|
|
||||||
if (ecore_evas_init() <= 0)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
engines = ecore_evas_engines_get();
|
|
||||||
printf("Available engines:\n");
|
|
||||||
EINA_LIST_FOREACH(engines, l, data)
|
|
||||||
printf("%s\n", data);
|
|
||||||
ecore_evas_engines_free(engines);
|
|
||||||
|
|
||||||
ee = ecore_evas_new(NULL, 0, 0, 200, 200, NULL);
|
|
||||||
ecore_evas_title_set(ee, "Ecore Evas basics Example");
|
|
||||||
ecore_evas_show(ee);
|
|
||||||
|
|
||||||
data = malloc(sizeof(char) * 6);
|
|
||||||
sprintf(data, "%s", "hello");
|
|
||||||
ecore_evas_data_set(ee, "key", data);
|
|
||||||
ecore_evas_callback_delete_request_set(ee, _on_delete);
|
|
||||||
|
|
||||||
printf("Using %s engine!\n", ecore_evas_engine_name_get(ee));
|
|
||||||
|
|
||||||
canvas = ecore_evas_get(ee);
|
|
||||||
if (ecore_evas_ecore_evas_get(canvas) == ee)
|
|
||||||
printf("Everything is sane!\n");
|
|
||||||
|
|
||||||
bg = evas_object_rectangle_add(canvas);
|
|
||||||
evas_object_color_set(bg, 0, 0, 255, 255);
|
|
||||||
evas_object_resize(bg, 200, 200);
|
|
||||||
evas_object_show(bg);
|
|
||||||
ecore_evas_object_associate(ee, bg, ECORE_EVAS_OBJECT_ASSOCIATE_BASE);
|
|
||||||
|
|
||||||
ecore_main_fd_handler_add(STDIN_FILENO, ECORE_FD_READ, _stdin_cb, NULL, NULL, NULL);
|
|
||||||
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
ecore_evas_free(ee);
|
|
||||||
ecore_evas_shutdown();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,121 +0,0 @@
|
||||||
/**
|
|
||||||
* Simple Ecore_Evas example on the Evas buffer engine wrapper
|
|
||||||
* functions.
|
|
||||||
*
|
|
||||||
* You must have Evas compiled with the buffer engine.
|
|
||||||
*
|
|
||||||
* Compile with:
|
|
||||||
*
|
|
||||||
* @verbatim
|
|
||||||
* gcc -o evas-buffer-simple evas-buffer-simple.c `pkg-config --libs --cflags evas evas-software-buffer`
|
|
||||||
* @endverbatim
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
#else
|
|
||||||
#define __UNUSED__
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <Ecore_Evas.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
#define WIDTH (320)
|
|
||||||
#define HEIGHT (240)
|
|
||||||
|
|
||||||
static Ecore_Evas *ee;
|
|
||||||
|
|
||||||
/* support function to save scene as PPM image */
|
|
||||||
static void
|
|
||||||
_scene_save(Evas *canvas,
|
|
||||||
const char *dest)
|
|
||||||
{
|
|
||||||
const unsigned int *pixels, *pixels_end;
|
|
||||||
int width, height;
|
|
||||||
FILE *f;
|
|
||||||
|
|
||||||
evas_output_size_get(canvas, &width, &height);
|
|
||||||
|
|
||||||
f = fopen(dest, "wb+");
|
|
||||||
if (!f)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "ERROR: could not open for writing '%s': %s\n",
|
|
||||||
dest, strerror(errno));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
pixels = ecore_evas_buffer_pixels_get(ee);
|
|
||||||
pixels_end = pixels + (width * height);
|
|
||||||
|
|
||||||
/* PPM P6 format is dead simple to write: */
|
|
||||||
fprintf(f, "P6\n%d %d\n255\n", width, height);
|
|
||||||
for (; pixels < pixels_end; pixels++)
|
|
||||||
{
|
|
||||||
int r, g, b;
|
|
||||||
|
|
||||||
r = ((*pixels) & 0xff0000) >> 16;
|
|
||||||
g = ((*pixels) & 0x00ff00) >> 8;
|
|
||||||
b = (*pixels) & 0x0000ff;
|
|
||||||
|
|
||||||
fprintf(f, "%c%c%c", r, g, b);
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(f);
|
|
||||||
printf("Saved scene as '%s'\n", dest);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(void)
|
|
||||||
{
|
|
||||||
Evas *canvas;
|
|
||||||
Evas_Object *bg, *r1, *r2, *r3;
|
|
||||||
|
|
||||||
ecore_evas_init();
|
|
||||||
|
|
||||||
ee = ecore_evas_buffer_new(WIDTH, HEIGHT);
|
|
||||||
if (!ee) goto error;
|
|
||||||
|
|
||||||
canvas = ecore_evas_get(ee);
|
|
||||||
|
|
||||||
bg = evas_object_rectangle_add(canvas);
|
|
||||||
evas_object_color_set(bg, 255, 255, 255, 255); /* white bg */
|
|
||||||
evas_object_move(bg, 0, 0); /* at origin */
|
|
||||||
evas_object_resize(bg, WIDTH, HEIGHT); /* covers full canvas */
|
|
||||||
evas_object_show(bg);
|
|
||||||
|
|
||||||
r1 = evas_object_rectangle_add(canvas);
|
|
||||||
evas_object_color_set(r1, 255, 0, 0, 255); /* 100% opaque red */
|
|
||||||
evas_object_move(r1, 10, 10);
|
|
||||||
evas_object_resize(r1, 100, 100);
|
|
||||||
evas_object_show(r1);
|
|
||||||
|
|
||||||
r2 = evas_object_rectangle_add(canvas);
|
|
||||||
evas_object_color_set(r2, 0, 128, 0, 128); /* 50% opaque green */
|
|
||||||
evas_object_move(r2, 10, 10);
|
|
||||||
evas_object_resize(r2, 50, 50);
|
|
||||||
evas_object_show(r2);
|
|
||||||
|
|
||||||
r3 = evas_object_rectangle_add(canvas);
|
|
||||||
evas_object_color_set(r3, 0, 128, 0, 255); /* 100% opaque dark green */
|
|
||||||
evas_object_move(r3, 60, 60);
|
|
||||||
evas_object_resize(r3, 50, 50);
|
|
||||||
evas_object_show(r3);
|
|
||||||
|
|
||||||
ecore_evas_manual_render(ee);
|
|
||||||
_scene_save(canvas, "/tmp/evas-buffer-simple-render.ppm");
|
|
||||||
|
|
||||||
ecore_evas_free(ee);
|
|
||||||
ecore_evas_shutdown();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
error:
|
|
||||||
fprintf(stderr, "You got to have at least one Evas engine built"
|
|
||||||
" and linked up to ecore-evas for this example to run"
|
|
||||||
" properly.\n");
|
|
||||||
ecore_evas_shutdown();
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,126 +0,0 @@
|
||||||
/**
|
|
||||||
* Simple Ecore_Evas example on the Evas buffer engine wrapper
|
|
||||||
* functions.
|
|
||||||
*
|
|
||||||
* You must have Evas compiled with the buffer engine.
|
|
||||||
*
|
|
||||||
* Compile with:
|
|
||||||
*
|
|
||||||
* @verbatim
|
|
||||||
* gcc -o evas-buffer-simple evas-buffer-simple.c `pkg-config --libs --cflags evas evas-software-buffer`
|
|
||||||
* @endverbatim
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
#else
|
|
||||||
#define __UNUSED__
|
|
||||||
#define PACKAGE_EXAMPLES_DIR "."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include <Ecore_Evas.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
#define WIDTH (320)
|
|
||||||
#define HEIGHT (240)
|
|
||||||
|
|
||||||
static Ecore_Evas *ee;
|
|
||||||
static const char *border_img_path = PACKAGE_EXAMPLES_DIR "/red.png";
|
|
||||||
|
|
||||||
static void
|
|
||||||
_on_destroy(Ecore_Evas *ee __UNUSED__)
|
|
||||||
{
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(void)
|
|
||||||
{
|
|
||||||
Evas *canvas, *sub_canvas;
|
|
||||||
Evas_Object *bg, *r1, *r2, *r3; /* "sub" canvas objects */
|
|
||||||
Evas_Object *border, *img; /* canvas objects */
|
|
||||||
Ecore_Evas *sub_ee;
|
|
||||||
|
|
||||||
ecore_evas_init();
|
|
||||||
|
|
||||||
/* this will give you a window with an Evas canvas under the first
|
|
||||||
* engine available */
|
|
||||||
ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL);
|
|
||||||
if (!ee) goto error;
|
|
||||||
|
|
||||||
ecore_evas_size_min_set(ee, WIDTH, HEIGHT);
|
|
||||||
ecore_evas_size_max_set(ee, WIDTH, HEIGHT);
|
|
||||||
|
|
||||||
ecore_evas_callback_delete_request_set(ee, _on_destroy);
|
|
||||||
ecore_evas_title_set(ee, "Ecore_Evas buffer (image) example");
|
|
||||||
ecore_evas_show(ee);
|
|
||||||
|
|
||||||
canvas = ecore_evas_get(ee);
|
|
||||||
|
|
||||||
bg = evas_object_rectangle_add(canvas);
|
|
||||||
evas_object_color_set(bg, 255, 255, 255, 255); /* white bg */
|
|
||||||
evas_object_move(bg, 0, 0); /* at origin */
|
|
||||||
evas_object_resize(bg, WIDTH, HEIGHT); /* covers full canvas */
|
|
||||||
evas_object_show(bg);
|
|
||||||
|
|
||||||
/* this is a border around the image containing a scene of another
|
|
||||||
* canvas */
|
|
||||||
border = evas_object_image_filled_add(canvas);
|
|
||||||
evas_object_image_file_set(border, border_img_path, NULL);
|
|
||||||
evas_object_image_border_set(border, 3, 3, 3, 3);
|
|
||||||
evas_object_image_border_center_fill_set(border, EVAS_BORDER_FILL_NONE);
|
|
||||||
|
|
||||||
evas_object_move(border, WIDTH / 6, HEIGHT / 6);
|
|
||||||
evas_object_resize(border, (2 * WIDTH) / 3, (2 * HEIGHT) / 3);
|
|
||||||
evas_object_show(border);
|
|
||||||
|
|
||||||
img = ecore_evas_object_image_new(ee);
|
|
||||||
evas_object_image_filled_set(img, EINA_TRUE);
|
|
||||||
evas_object_image_size_set(
|
|
||||||
img, ((2 * WIDTH) / 3) - 6, ((2 * HEIGHT) / 3) - 6);
|
|
||||||
sub_ee = ecore_evas_object_ecore_evas_get(img);
|
|
||||||
sub_canvas = ecore_evas_object_evas_get(img);
|
|
||||||
|
|
||||||
evas_object_move(img, (WIDTH / 6) + 3, (HEIGHT / 6) + 3);
|
|
||||||
|
|
||||||
/* apply the same size on both! */
|
|
||||||
evas_object_resize(img, ((2 * WIDTH) / 3) - 6, ((2 * HEIGHT) / 3) - 6);
|
|
||||||
ecore_evas_resize(sub_ee, ((2 * WIDTH) / 3) - 6, ((2 * HEIGHT) / 3) - 6);
|
|
||||||
|
|
||||||
r1 = evas_object_rectangle_add(sub_canvas);
|
|
||||||
evas_object_color_set(r1, 255, 0, 0, 255); /* 100% opaque red */
|
|
||||||
evas_object_move(r1, 10, 10);
|
|
||||||
evas_object_resize(r1, 100, 100);
|
|
||||||
evas_object_show(r1);
|
|
||||||
|
|
||||||
r2 = evas_object_rectangle_add(sub_canvas);
|
|
||||||
evas_object_color_set(r2, 0, 128, 0, 128); /* 50% opaque green */
|
|
||||||
evas_object_move(r2, 10, 10);
|
|
||||||
evas_object_resize(r2, 50, 50);
|
|
||||||
evas_object_show(r2);
|
|
||||||
|
|
||||||
r3 = evas_object_rectangle_add(sub_canvas);
|
|
||||||
evas_object_color_set(r3, 0, 128, 0, 255); /* 100% opaque dark green */
|
|
||||||
evas_object_move(r3, 60, 60);
|
|
||||||
evas_object_resize(r3, 50, 50);
|
|
||||||
evas_object_show(r3);
|
|
||||||
|
|
||||||
evas_object_show(img);
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
ecore_evas_free(ee);
|
|
||||||
ecore_evas_shutdown();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
error:
|
|
||||||
fprintf(stderr, "You got to have at least one Evas engine built"
|
|
||||||
" and linked up to ecore-evas for this example to run"
|
|
||||||
" properly.\n");
|
|
||||||
ecore_evas_shutdown();
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,128 +0,0 @@
|
||||||
/**
|
|
||||||
* Ecore example illustrating ecore evas callbacks.
|
|
||||||
*
|
|
||||||
* You'll need at least one Evas engine built for it (excluding the
|
|
||||||
* buffer one). See stdout/stderr for output.
|
|
||||||
*
|
|
||||||
* @verbatim
|
|
||||||
* gcc -o ecore_evas_callbacks ecore_evas_callbacks.c `pkg-config --libs --cflags ecore-evas`
|
|
||||||
* @endverbatim
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include <Ecore_Evas.h>
|
|
||||||
|
|
||||||
static void
|
|
||||||
_destroy(Ecore_Evas *ee)
|
|
||||||
{
|
|
||||||
printf("destroy\n");
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_delete(Ecore_Evas *ee)
|
|
||||||
{
|
|
||||||
printf("delete\n");
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_focus_in(Ecore_Evas *ee)
|
|
||||||
{
|
|
||||||
printf("focus_in\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_focus_out(Ecore_Evas *ee)
|
|
||||||
{
|
|
||||||
printf("focus_out\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_hide(Ecore_Evas *ee)
|
|
||||||
{
|
|
||||||
printf("hide\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_mouse_in(Ecore_Evas *ee)
|
|
||||||
{
|
|
||||||
printf("mouse_in\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_show(Ecore_Evas *ee)
|
|
||||||
{
|
|
||||||
printf("show\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_mouse_out(Ecore_Evas *ee)
|
|
||||||
{
|
|
||||||
printf("mouse_out\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_move(Ecore_Evas *ee)
|
|
||||||
{
|
|
||||||
printf("move\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_post_render(Ecore_Evas *ee)
|
|
||||||
{
|
|
||||||
printf("post_render\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_pre_free(Ecore_Evas *ee)
|
|
||||||
{
|
|
||||||
printf("pre_free\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_pre_render(Ecore_Evas *ee)
|
|
||||||
{
|
|
||||||
printf("pre_render\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_resize(Ecore_Evas *ee)
|
|
||||||
{
|
|
||||||
printf("resize\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(void)
|
|
||||||
{
|
|
||||||
Ecore_Evas *ee;
|
|
||||||
|
|
||||||
ecore_evas_init();
|
|
||||||
|
|
||||||
ee = ecore_evas_new(NULL, 0, 0, 200, 100, NULL);
|
|
||||||
ecore_evas_title_set(ee, "Ecore Evas Callbacks Example");
|
|
||||||
ecore_evas_show(ee);
|
|
||||||
|
|
||||||
//callbacks
|
|
||||||
ecore_evas_callback_delete_request_set(ee, _delete);
|
|
||||||
ecore_evas_callback_destroy_set(ee, _destroy);
|
|
||||||
ecore_evas_callback_focus_in_set(ee, _focus_in);
|
|
||||||
ecore_evas_callback_focus_out_set(ee, _focus_out);
|
|
||||||
ecore_evas_callback_hide_set(ee, _hide);
|
|
||||||
ecore_evas_callback_mouse_in_set(ee, _mouse_in);
|
|
||||||
ecore_evas_callback_mouse_out_set(ee, _mouse_out);
|
|
||||||
ecore_evas_callback_move_set(ee, _move);
|
|
||||||
ecore_evas_callback_post_render_set(ee, _post_render);
|
|
||||||
ecore_evas_callback_pre_free_set(ee, _pre_free);
|
|
||||||
ecore_evas_callback_pre_render_set(ee, _pre_render);
|
|
||||||
ecore_evas_callback_resize_set(ee, _resize);
|
|
||||||
ecore_evas_callback_show_set(ee, _show);
|
|
||||||
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
ecore_evas_free(ee);
|
|
||||||
ecore_evas_shutdown();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,269 +0,0 @@
|
||||||
/**
|
|
||||||
* Ecore example illustrating the ews of ecore evas usage.
|
|
||||||
*
|
|
||||||
* You'll need at least one Evas engine built for it (excluding the
|
|
||||||
* buffer one). See stdout/stderr for output.
|
|
||||||
*
|
|
||||||
* @verbatim
|
|
||||||
* gcc -o ecore_evas_ews_example ecore_evas_ews_example.c `pkg-config --libs --cflags ecore-evas`
|
|
||||||
* @endverbatim
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include <Ecore_Evas.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_wm_win_add(void *data, int type, void *event_info)
|
|
||||||
{
|
|
||||||
Ecore_Evas *ee = event_info;
|
|
||||||
printf("WM: new window=%p\n", ee);
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_wm_win_move(void *data, int type, void *event_info)
|
|
||||||
{
|
|
||||||
Ecore_Evas *ee = event_info;
|
|
||||||
int x, y;
|
|
||||||
ecore_evas_geometry_get(ee, &x, &y, NULL, NULL);
|
|
||||||
printf("WM: window=%p moved to %d,%d\n", ee, x, y);
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_wm_win_resize(void *data, int type, void *event_info)
|
|
||||||
{
|
|
||||||
Ecore_Evas *ee = event_info;
|
|
||||||
int w, h;
|
|
||||||
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
|
|
||||||
printf("WM: window=%p resized to %dx%d\n", ee, w, h);
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_wm_win_show(void *data, int type, void *event_info)
|
|
||||||
{
|
|
||||||
Ecore_Evas *ee = event_info;
|
|
||||||
printf("WM: show window=%p\n", ee);
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
optional_ews_window_manager_setup(void)
|
|
||||||
{
|
|
||||||
ecore_event_handler_add(ECORE_EVAS_EWS_EVENT_ADD, _wm_win_add, NULL);
|
|
||||||
ecore_event_handler_add(ECORE_EVAS_EWS_EVENT_MOVE, _wm_win_move, NULL);
|
|
||||||
ecore_event_handler_add(ECORE_EVAS_EWS_EVENT_RESIZE, _wm_win_resize, NULL);
|
|
||||||
ecore_event_handler_add(ECORE_EVAS_EWS_EVENT_SHOW, _wm_win_show, NULL);
|
|
||||||
|
|
||||||
/* one may use any known unique identifier, like an app function pointer */
|
|
||||||
ecore_evas_ews_manager_set(optional_ews_window_manager_setup);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
optional_ews_setup(void)
|
|
||||||
{
|
|
||||||
Evas_Object *bg;
|
|
||||||
Evas *e;
|
|
||||||
|
|
||||||
ecore_evas_ews_setup(0, 0, 800, 600); /* "screen" size */
|
|
||||||
e = ecore_evas_ews_evas_get(); /* forces "screen" to be allocated */
|
|
||||||
|
|
||||||
bg = evas_object_rectangle_add(e);
|
|
||||||
evas_object_color_set(bg, 128, 32, 32, 255);
|
|
||||||
ecore_evas_ews_background_set(bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_stdin_cb(void *data, Ecore_Fd_Handler *handler)
|
|
||||||
{
|
|
||||||
const Eina_List *l;
|
|
||||||
Ecore_Evas *ee;
|
|
||||||
char c = getchar();
|
|
||||||
|
|
||||||
if (c == EOF)
|
|
||||||
{
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
return EINA_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (c) {
|
|
||||||
case 'h':
|
|
||||||
printf("hide all windows\n");
|
|
||||||
EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee)
|
|
||||||
ecore_evas_hide(ee);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 's':
|
|
||||||
printf("show all windows\n");
|
|
||||||
EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee)
|
|
||||||
ecore_evas_show(ee);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'l':
|
|
||||||
printf("move all windows left\n");
|
|
||||||
EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee)
|
|
||||||
{
|
|
||||||
int x, y;
|
|
||||||
ecore_evas_geometry_get(ee, &x, &y, NULL, NULL);
|
|
||||||
ecore_evas_move(ee, x - 10, y);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'r':
|
|
||||||
printf("move all windows right\n");
|
|
||||||
EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee)
|
|
||||||
{
|
|
||||||
int x, y;
|
|
||||||
ecore_evas_geometry_get(ee, &x, &y, NULL, NULL);
|
|
||||||
ecore_evas_move(ee, x + 10, y);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 't':
|
|
||||||
printf("move all windows top\n");
|
|
||||||
EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee)
|
|
||||||
{
|
|
||||||
int x, y;
|
|
||||||
ecore_evas_geometry_get(ee, &x, &y, NULL, NULL);
|
|
||||||
ecore_evas_move(ee, x, y - 10);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'b':
|
|
||||||
printf("move all windows bottom\n");
|
|
||||||
EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee)
|
|
||||||
{
|
|
||||||
int x, y;
|
|
||||||
ecore_evas_geometry_get(ee, &x, &y, NULL, NULL);
|
|
||||||
ecore_evas_move(ee, x, y + 10);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'S':
|
|
||||||
printf("make all windows smaller\n");
|
|
||||||
EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee)
|
|
||||||
{
|
|
||||||
int w, h;
|
|
||||||
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
|
|
||||||
ecore_evas_resize(ee, w - 10, h - 10);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'B':
|
|
||||||
printf("make all windows bigger\n");
|
|
||||||
EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee)
|
|
||||||
{
|
|
||||||
int w, h;
|
|
||||||
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
|
|
||||||
ecore_evas_resize(ee, w + 10, h + 10);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'm':
|
|
||||||
printf("make all windows unmaximized\n");
|
|
||||||
EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee)
|
|
||||||
ecore_evas_maximized_set(ee, EINA_FALSE);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'M':
|
|
||||||
printf("make all windows maximized\n");
|
|
||||||
EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee)
|
|
||||||
ecore_evas_maximized_set(ee, EINA_TRUE);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'i':
|
|
||||||
printf("make all windows uniconified\n");
|
|
||||||
EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee)
|
|
||||||
ecore_evas_iconified_set(ee, EINA_FALSE);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'I':
|
|
||||||
printf("make all windows iconified\n");
|
|
||||||
EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee)
|
|
||||||
ecore_evas_iconified_set(ee, EINA_TRUE);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'f':
|
|
||||||
printf("make all windows unfullscreen\n");
|
|
||||||
EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee)
|
|
||||||
ecore_evas_fullscreen_set(ee, EINA_FALSE);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'F':
|
|
||||||
printf("make all windows fullscreen\n");
|
|
||||||
EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee)
|
|
||||||
ecore_evas_fullscreen_set(ee, EINA_TRUE);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'q':
|
|
||||||
printf("quit\n");
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
if (!isspace(c))
|
|
||||||
printf("Unknown command: %c\n", c);
|
|
||||||
}
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_on_delete(Ecore_Evas *ee)
|
|
||||||
{
|
|
||||||
free(ecore_evas_data_get(ee, "key"));
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(void)
|
|
||||||
{
|
|
||||||
Ecore_Evas *ee;
|
|
||||||
Evas *canvas;
|
|
||||||
Evas_Object *bg;
|
|
||||||
|
|
||||||
if (ecore_evas_init() <= 0)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
optional_ews_setup();
|
|
||||||
optional_ews_window_manager_setup();
|
|
||||||
|
|
||||||
/* everything should look similar to ecore_evas_basic_example */
|
|
||||||
ee = ecore_evas_ews_new(0, 0, 200, 200);
|
|
||||||
ecore_evas_title_set(ee, "Ecore Evas EWS Example");
|
|
||||||
ecore_evas_show(ee);
|
|
||||||
|
|
||||||
ecore_evas_data_set(ee, "key", strdup("hello"));
|
|
||||||
ecore_evas_callback_delete_request_set(ee, _on_delete);
|
|
||||||
|
|
||||||
printf("Using %s engine!\n", ecore_evas_engine_name_get(ee));
|
|
||||||
|
|
||||||
canvas = ecore_evas_get(ee);
|
|
||||||
if (ecore_evas_ecore_evas_get(canvas) == ee)
|
|
||||||
printf("Everything is sane!\n");
|
|
||||||
|
|
||||||
bg = evas_object_rectangle_add(canvas);
|
|
||||||
evas_object_color_set(bg, 0, 0, 255, 255);
|
|
||||||
evas_object_resize(bg, 200, 200);
|
|
||||||
evas_object_show(bg);
|
|
||||||
ecore_evas_object_associate(ee, bg, ECORE_EVAS_OBJECT_ASSOCIATE_BASE);
|
|
||||||
|
|
||||||
/* moving the window should move it in the screen */
|
|
||||||
ecore_evas_move(ee, 50, 50);
|
|
||||||
|
|
||||||
ecore_main_fd_handler_add(STDIN_FILENO,
|
|
||||||
ECORE_FD_READ | ECORE_FD_ERROR,
|
|
||||||
_stdin_cb,
|
|
||||||
NULL, NULL, NULL);
|
|
||||||
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
ecore_evas_free(ee);
|
|
||||||
ecore_evas_shutdown();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,53 +0,0 @@
|
||||||
/**
|
|
||||||
* Ecore example illustrating ecore evas object usage.
|
|
||||||
*
|
|
||||||
* You'll need at least one Evas engine built for it (excluding the
|
|
||||||
* buffer one). See stdout/stderr for output.
|
|
||||||
*
|
|
||||||
* @verbatim
|
|
||||||
* gcc -o ecore_evas_object_example ecore_evas_object_example.c `pkg-config --libs --cflags ecore-evas`
|
|
||||||
* @endverbatim
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include <Ecore_Evas.h>
|
|
||||||
|
|
||||||
int
|
|
||||||
main(void)
|
|
||||||
{
|
|
||||||
Ecore_Evas *ee;
|
|
||||||
Evas_Object *bg, *cursor, *obj;
|
|
||||||
int layer, x, y;
|
|
||||||
|
|
||||||
ecore_evas_init();
|
|
||||||
|
|
||||||
ee = ecore_evas_new(NULL, 0, 0, 200, 200, NULL);
|
|
||||||
ecore_evas_title_set(ee, "Ecore Evas Object Example");
|
|
||||||
ecore_evas_show(ee);
|
|
||||||
|
|
||||||
bg = evas_object_rectangle_add(ecore_evas_get(ee));
|
|
||||||
evas_object_color_set(bg, 0, 0, 255, 255);
|
|
||||||
evas_object_resize(bg, 200, 200);
|
|
||||||
evas_object_show(bg);
|
|
||||||
ecore_evas_object_associate(ee, bg, ECORE_EVAS_OBJECT_ASSOCIATE_BASE);
|
|
||||||
|
|
||||||
if (bg == ecore_evas_object_associate_get(ee))
|
|
||||||
printf("Association worked!\n");
|
|
||||||
|
|
||||||
cursor = evas_object_rectangle_add(ecore_evas_get(ee));
|
|
||||||
evas_object_color_set(cursor, 0, 255, 0, 255);
|
|
||||||
evas_object_resize(cursor, 5, 10);
|
|
||||||
ecore_evas_object_cursor_set(ee, cursor, 0, 1, 1);
|
|
||||||
|
|
||||||
ecore_evas_cursor_get(ee, &obj, &layer, &x, &y);
|
|
||||||
if (obj == cursor && layer == 0 && x == 1 && y == 1)
|
|
||||||
printf("Set cursor worked!\n");
|
|
||||||
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
ecore_evas_free(ee);
|
|
||||||
ecore_evas_shutdown();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,204 +0,0 @@
|
||||||
/**
|
|
||||||
* Simple @c Ecore_Evas example illustrating how to deal with window
|
|
||||||
* sizes
|
|
||||||
*
|
|
||||||
* You'll need at least one engine built for it (excluding the buffer
|
|
||||||
* one). See stdout/stderr for output.
|
|
||||||
*
|
|
||||||
* @verbatim
|
|
||||||
* gcc -o evas-smart-object evas-smart-object.c `pkg-config --libs --cflags evas ecore ecore-evas`
|
|
||||||
* @endverbatim
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
#else
|
|
||||||
#define __UNUSED__
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include <Ecore_Evas.h>
|
|
||||||
|
|
||||||
#define WIDTH (300)
|
|
||||||
#define HEIGHT (300)
|
|
||||||
|
|
||||||
static Ecore_Evas *ee;
|
|
||||||
static Evas_Object *text, *bg;
|
|
||||||
static Eina_Bool min_set = EINA_FALSE;
|
|
||||||
static Eina_Bool max_set = EINA_FALSE;
|
|
||||||
static Eina_Bool base_set = EINA_FALSE;
|
|
||||||
static Eina_Bool step_set = EINA_FALSE;
|
|
||||||
|
|
||||||
static const char commands[] = \
|
|
||||||
"commands are:\n"
|
|
||||||
"\tm - impose a minumum size to the window\n"
|
|
||||||
"\tx - impose a maximum size to the window\n"
|
|
||||||
"\tb - impose a base size to the window\n"
|
|
||||||
"\ts - impose a step size (different than 1 px) to the window\n"
|
|
||||||
"\th - print help\n";
|
|
||||||
|
|
||||||
/* to inform current window's size */
|
|
||||||
static void
|
|
||||||
_canvas_resize_cb(Ecore_Evas *ee)
|
|
||||||
{
|
|
||||||
int w, h;
|
|
||||||
char buf[1024];
|
|
||||||
|
|
||||||
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
|
|
||||||
snprintf(buf, sizeof(buf), "%d x %d", w, h);
|
|
||||||
evas_object_text_text_set(text, buf);
|
|
||||||
evas_object_move(text, (w - 150) / 2, (h - 50) / 2);
|
|
||||||
|
|
||||||
evas_object_resize(bg, w, h);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_on_destroy(Ecore_Evas *ee __UNUSED__)
|
|
||||||
{
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_on_keydown(void *data __UNUSED__,
|
|
||||||
Evas *evas __UNUSED__,
|
|
||||||
Evas_Object *o __UNUSED__,
|
|
||||||
void *einfo)
|
|
||||||
{
|
|
||||||
Evas_Event_Key_Down *ev = einfo;
|
|
||||||
|
|
||||||
if (strcmp(ev->keyname, "h") == 0) /* print help */
|
|
||||||
{
|
|
||||||
fprintf(stdout, commands);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strcmp(ev->keyname, "m") == 0) /* impose a minimum size on the window */
|
|
||||||
{
|
|
||||||
min_set = !min_set;
|
|
||||||
|
|
||||||
if (min_set)
|
|
||||||
{
|
|
||||||
ecore_evas_size_min_set(ee, WIDTH / 2, HEIGHT / 2);
|
|
||||||
fprintf(stdout, "Imposing a minimum size of %d x %d\n",
|
|
||||||
WIDTH / 2, HEIGHT / 2);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ecore_evas_size_min_set(ee, 0, 0);
|
|
||||||
fprintf(stdout, "Taking off minimum size restriction from the"
|
|
||||||
" window\n");
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strcmp(ev->keyname, "x") == 0) /* impose a maximum size on the window */
|
|
||||||
{
|
|
||||||
max_set = !max_set;
|
|
||||||
|
|
||||||
if (max_set)
|
|
||||||
{
|
|
||||||
ecore_evas_size_max_set(ee, WIDTH * 2, HEIGHT * 2);
|
|
||||||
fprintf(stdout, "Imposing a maximum size of %d x %d\n",
|
|
||||||
WIDTH * 2, HEIGHT * 2);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ecore_evas_size_max_set(ee, 0, 0);
|
|
||||||
fprintf(stdout, "Taking off maximum size restriction from the"
|
|
||||||
" window\n");
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strcmp(ev->keyname, "b") == 0) /* impose a base size on the window */
|
|
||||||
{
|
|
||||||
base_set = !base_set;
|
|
||||||
|
|
||||||
if (base_set)
|
|
||||||
{
|
|
||||||
ecore_evas_size_base_set(ee, WIDTH * 2, HEIGHT * 2);
|
|
||||||
fprintf(stdout, "Imposing a base size of %d x %d\n",
|
|
||||||
WIDTH * 2, HEIGHT * 2);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ecore_evas_size_base_set(ee, 0, 0);
|
|
||||||
fprintf(stdout, "Taking off base size restriction from the"
|
|
||||||
" window\n");
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strcmp(ev->keyname, "s") == 0) /* impose a step size on the window */
|
|
||||||
{
|
|
||||||
step_set = !step_set;
|
|
||||||
|
|
||||||
if (step_set)
|
|
||||||
{
|
|
||||||
ecore_evas_size_step_set(ee, 40, 40);
|
|
||||||
fprintf(stdout, "Imposing a step size of %d x %d\n", 40, 40);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ecore_evas_size_step_set(ee, 0, 0);
|
|
||||||
fprintf(stdout, "Taking off step size restriction from the"
|
|
||||||
" window\n");
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(void)
|
|
||||||
{
|
|
||||||
Evas *evas;
|
|
||||||
|
|
||||||
if (!ecore_evas_init())
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
|
|
||||||
/* this will give you a window with an Evas canvas under the first
|
|
||||||
* engine available */
|
|
||||||
ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL);
|
|
||||||
if (!ee) goto error;
|
|
||||||
|
|
||||||
ecore_evas_callback_delete_request_set(ee, _on_destroy);
|
|
||||||
ecore_evas_title_set(ee, "Ecore_Evas window sizes example");
|
|
||||||
ecore_evas_callback_resize_set(ee, _canvas_resize_cb);
|
|
||||||
ecore_evas_show(ee);
|
|
||||||
|
|
||||||
evas = ecore_evas_get(ee);
|
|
||||||
|
|
||||||
bg = evas_object_rectangle_add(evas);
|
|
||||||
evas_object_color_set(bg, 255, 255, 255, 255); /* white bg */
|
|
||||||
evas_object_move(bg, 0, 0); /* at canvas' origin */
|
|
||||||
evas_object_resize(bg, WIDTH, HEIGHT); /* covers full canvas */
|
|
||||||
evas_object_show(bg);
|
|
||||||
|
|
||||||
evas_object_focus_set(bg, EINA_TRUE);
|
|
||||||
evas_object_event_callback_add(
|
|
||||||
bg, EVAS_CALLBACK_KEY_DOWN, _on_keydown, NULL);
|
|
||||||
|
|
||||||
text = evas_object_text_add(evas);
|
|
||||||
evas_object_color_set(text, 0, 0, 0, 255);
|
|
||||||
evas_object_resize(text, 150, 50);
|
|
||||||
evas_object_text_font_set(text, "Sans", 20);
|
|
||||||
evas_object_show(text);
|
|
||||||
|
|
||||||
_canvas_resize_cb(ee);
|
|
||||||
fprintf(stdout, commands);
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
ecore_evas_free(ee);
|
|
||||||
ecore_evas_shutdown();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
error:
|
|
||||||
fprintf(stderr, "You got to have at least one Evas engine built"
|
|
||||||
" and linked up to ecore-evas for this example to run"
|
|
||||||
" properly.\n");
|
|
||||||
ecore_evas_shutdown();
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
/*
|
|
||||||
* Compile with:
|
|
||||||
* gcc -g -Wall `pkg-config --cflags --libs ecore` -o ecore_event_example ecore_event_example.c
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <Ecore.h>
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_quitter(void *data, int ev_type, void *event)
|
|
||||||
{
|
|
||||||
printf("Leaving already?\n");
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
return ECORE_CALLBACK_DONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
ecore_init();
|
|
||||||
|
|
||||||
ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, _quitter, NULL);
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,89 +0,0 @@
|
||||||
#include <Ecore.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
struct context // helper struct to give some context to the callbacks
|
|
||||||
{
|
|
||||||
const char *str1, *str2;
|
|
||||||
Ecore_Event_Handler *handler1;
|
|
||||||
Ecore_Event_Handler *handler2;
|
|
||||||
};
|
|
||||||
|
|
||||||
static _event_type = 0; // a new type of event will be defined and stored here
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_event_handler1_cb(void *data, int type, void *event)
|
|
||||||
{
|
|
||||||
int *number = event;
|
|
||||||
const char *str = data;
|
|
||||||
|
|
||||||
printf("event_handler1: number=%d, data=\"%s\".\n", *number, str);
|
|
||||||
|
|
||||||
if ((*number % 2) == 0)
|
|
||||||
return ECORE_CALLBACK_DONE;
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_PASS_ON;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_event_handler2_cb(void *data, int type, void *event) // event callback
|
|
||||||
{
|
|
||||||
struct context *ctxt = data;
|
|
||||||
int *number = event;
|
|
||||||
|
|
||||||
printf("event_handler2: number=%d.\n", *number);
|
|
||||||
|
|
||||||
if (*number == 5)
|
|
||||||
{
|
|
||||||
const char *old = NULL;
|
|
||||||
old = ecore_event_handler_data_set(ctxt->handler1, (void *)ctxt->str2);
|
|
||||||
printf("changed handler1 data from \"%s\" to \"%s\".\n",
|
|
||||||
old, ctxt->str2);
|
|
||||||
}
|
|
||||||
else if (*number >= 10)
|
|
||||||
{
|
|
||||||
printf("finish main loop.\n");
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
}
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_DONE; // same as EINA_FALSE
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
struct context ctxt = {0};
|
|
||||||
int i;
|
|
||||||
ctxt.str1 = "dataone";
|
|
||||||
ctxt.str2 = "datatwo";
|
|
||||||
|
|
||||||
if (!ecore_init())
|
|
||||||
{
|
|
||||||
printf("ERROR: Cannot init Ecore!\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
_event_type = ecore_event_type_new();
|
|
||||||
|
|
||||||
ctxt.handler1 = ecore_event_handler_add(_event_type,
|
|
||||||
_event_handler1_cb,
|
|
||||||
ctxt.str1);
|
|
||||||
ctxt.handler2 = ecore_event_handler_add(_event_type,
|
|
||||||
_event_handler2_cb,
|
|
||||||
&ctxt);
|
|
||||||
|
|
||||||
for (i = 0; i <= 15; i++)
|
|
||||||
{
|
|
||||||
int *event_data = malloc(sizeof(*event_data));
|
|
||||||
*event_data = i;
|
|
||||||
ecore_event_add(_event_type, event_data, NULL, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("start the main loop.\n");
|
|
||||||
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
ecore_shutdown();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,100 +0,0 @@
|
||||||
/**
|
|
||||||
Compile with gcc -o ecore_exe_example ecore_exe_example.c `pkg-config --cflags --libs ecore`
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <Ecore.h>
|
|
||||||
|
|
||||||
#define BUFFER_SIZE 1024
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_msg_from_child_handler(void *data, int type, void *event)
|
|
||||||
{
|
|
||||||
Ecore_Exe_Event_Data *dataFromProcess = (Ecore_Exe_Event_Data *)event;
|
|
||||||
char msg[BUFFER_SIZE];
|
|
||||||
|
|
||||||
if (dataFromProcess->size >= (BUFFER_SIZE - 1))
|
|
||||||
{
|
|
||||||
fprintf(stdout, "Data too big for bugger. error\n");
|
|
||||||
return ECORE_CALLBACK_DONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
strncpy(msg, dataFromProcess->data, dataFromProcess->size);
|
|
||||||
msg[dataFromProcess->size] = 0;
|
|
||||||
|
|
||||||
if (strcmp(msg, "quit") == 0)
|
|
||||||
{
|
|
||||||
fprintf(stdout, "My child said to me, QUIT!\n");
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
fprintf(stdout, "I received a message from my child: %s\n", msg);
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_DONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_sendMessage(void *data)
|
|
||||||
{
|
|
||||||
static int numberOfMessages = 0;
|
|
||||||
Ecore_Exe *childHandle = (Ecore_Exe *)data;
|
|
||||||
char msg[BUFFER_SIZE];
|
|
||||||
|
|
||||||
sprintf(msg, " Message: %d\n", numberOfMessages);
|
|
||||||
numberOfMessages++;
|
|
||||||
|
|
||||||
if (ecore_exe_send(childHandle, msg, strlen(msg)) != EINA_TRUE)
|
|
||||||
fprintf(stderr, "Could not send my name to the child\n");
|
|
||||||
else
|
|
||||||
fprintf(stdout,
|
|
||||||
"I'm the father and I sent this message to the child: %s\n", msg);
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
pid_t childPid;
|
|
||||||
Ecore_Exe *childHandle;
|
|
||||||
|
|
||||||
if (!ecore_init())
|
|
||||||
goto exit;
|
|
||||||
|
|
||||||
childHandle = ecore_exe_pipe_run("./ecore_exe_example_child",
|
|
||||||
ECORE_EXE_PIPE_WRITE |
|
|
||||||
ECORE_EXE_PIPE_READ_LINE_BUFFERED |
|
|
||||||
ECORE_EXE_PIPE_READ, NULL);
|
|
||||||
|
|
||||||
if (childHandle == NULL)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "Could not create a child process!\n");
|
|
||||||
goto ecore_shutdown;
|
|
||||||
}
|
|
||||||
|
|
||||||
childPid = ecore_exe_pid_get(childHandle);
|
|
||||||
|
|
||||||
if (childPid == -1)
|
|
||||||
fprintf(stderr, "Could not retrive the PID!\n");
|
|
||||||
else
|
|
||||||
fprintf(stdout, "The child process has PID:%d\n", childPid);
|
|
||||||
|
|
||||||
ecore_event_handler_add(ECORE_EXE_EVENT_DATA, _msg_from_child_handler, NULL);
|
|
||||||
ecore_timer_add(1, _sendMessage, childHandle);
|
|
||||||
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
ecore_exe_free(childHandle); //This will not affect the child process
|
|
||||||
|
|
||||||
ecore_shutdown();
|
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
|
||||||
|
|
||||||
ecore_shutdown:
|
|
||||||
ecore_shutdown();
|
|
||||||
|
|
||||||
exit:
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,56 +0,0 @@
|
||||||
/**
|
|
||||||
Compile with gcc -o ecore_exe_example_child ecore_exe_example_child.c `pkg-config --cflags --libs ecore`
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <Ecore.h>
|
|
||||||
|
|
||||||
#define BUFFER_SIZE 1024
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_fd_handler_cb(void *data, Ecore_Fd_Handler
|
|
||||||
*fd_handler)
|
|
||||||
{
|
|
||||||
static int numberOfMessages = 0;
|
|
||||||
char message[BUFFER_SIZE];
|
|
||||||
|
|
||||||
fgets(message, BUFFER_SIZE, stdin);
|
|
||||||
|
|
||||||
numberOfMessages++;
|
|
||||||
|
|
||||||
if (numberOfMessages < 3)
|
|
||||||
{
|
|
||||||
fprintf(stdout, "My father sent this message to me:%s\n", message);
|
|
||||||
fflush(stdout);
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fprintf(stdout, "quit\n");
|
|
||||||
fflush(stdout);
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
return ECORE_CALLBACK_DONE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
if (!ecore_init())
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ecore_main_fd_handler_add(STDIN_FILENO,
|
|
||||||
ECORE_FD_READ,
|
|
||||||
_fd_handler_cb,
|
|
||||||
NULL, NULL, NULL);
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
ecore_shutdown();
|
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
|
||||||
|
|
||||||
error:
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,89 +0,0 @@
|
||||||
#include <Ecore.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
struct context
|
|
||||||
{
|
|
||||||
Ecore_Fd_Handler *handler;
|
|
||||||
Ecore_Timer *timer;
|
|
||||||
};
|
|
||||||
|
|
||||||
static void
|
|
||||||
_fd_prepare_cb(void *data, Ecore_Fd_Handler *handler)
|
|
||||||
{
|
|
||||||
printf("prepare_cb called.\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_fd_handler_cb(void *data, Ecore_Fd_Handler *handler)
|
|
||||||
{
|
|
||||||
struct context *ctxt = data;
|
|
||||||
char buf[1024];
|
|
||||||
size_t nbytes;
|
|
||||||
int fd;
|
|
||||||
|
|
||||||
if (ecore_main_fd_handler_active_get(handler, ECORE_FD_ERROR))
|
|
||||||
{
|
|
||||||
printf("An error has occurred. Stop watching this fd and quit.\n");
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
ctxt->handler = NULL;
|
|
||||||
return ECORE_CALLBACK_CANCEL;
|
|
||||||
}
|
|
||||||
|
|
||||||
fd = ecore_main_fd_handler_fd_get(handler);
|
|
||||||
nbytes = read(fd, buf, sizeof(buf));
|
|
||||||
if (nbytes == 0)
|
|
||||||
{
|
|
||||||
printf("Nothing to read, exiting...\n");
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
ctxt->handler = NULL;
|
|
||||||
return ECORE_CALLBACK_CANCEL;
|
|
||||||
}
|
|
||||||
buf[nbytes - 1] = '\0';
|
|
||||||
|
|
||||||
printf("Read %zd bytes from input: \"%s\"\n", nbytes - 1, buf);
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_timer_cb(void *data)
|
|
||||||
{
|
|
||||||
printf("Timer expired after 5 seconds...\n");
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
struct context ctxt = {0};
|
|
||||||
|
|
||||||
if (!ecore_init())
|
|
||||||
{
|
|
||||||
printf("ERROR: Cannot init Ecore!\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
ctxt.handler = ecore_main_fd_handler_add(STDIN_FILENO,
|
|
||||||
ECORE_FD_READ | ECORE_FD_ERROR,
|
|
||||||
_fd_handler_cb,
|
|
||||||
&ctxt, NULL, NULL);
|
|
||||||
ecore_main_fd_handler_prepare_callback_set(ctxt.handler, _fd_prepare_cb, &ctxt);
|
|
||||||
ctxt.timer = ecore_timer_add(5, _timer_cb, &ctxt);
|
|
||||||
|
|
||||||
printf("Starting the main loop. Type anything and hit <enter> to "
|
|
||||||
"activate the fd_handler callback, or CTRL+d to shutdown.\n");
|
|
||||||
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
if (ctxt.handler)
|
|
||||||
ecore_main_fd_handler_del(ctxt.handler);
|
|
||||||
|
|
||||||
if (ctxt.timer)
|
|
||||||
ecore_timer_del(ctxt.timer);
|
|
||||||
|
|
||||||
ecore_shutdown();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,203 +0,0 @@
|
||||||
#include <Ecore.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <netinet/tcp.h>
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <gnutls/gnutls.h>
|
|
||||||
|
|
||||||
/* Ecore_Fd_Handler example
|
|
||||||
* 2010 Mike Blumenkrantz
|
|
||||||
* compile with gcc $(pkgconfig --cflags --libs gnutls ecore)
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define print(...) fprintf(stderr, "line %i: ", __LINE__); fprintf(stderr, __VA_ARGS__); fprintf(stderr, "\n")
|
|
||||||
|
|
||||||
static int done = 0;
|
|
||||||
|
|
||||||
static void
|
|
||||||
tls_log_func(int level, const char *str)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "|<%d>| %s", level, str);
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char *
|
|
||||||
SSL_GNUTLS_PRINT_HANDSHAKE_STATUS(gnutls_handshake_description_t status)
|
|
||||||
{
|
|
||||||
switch (status)
|
|
||||||
{
|
|
||||||
case GNUTLS_HANDSHAKE_HELLO_REQUEST:
|
|
||||||
return "Hello request";
|
|
||||||
|
|
||||||
case GNUTLS_HANDSHAKE_CLIENT_HELLO:
|
|
||||||
return "Client hello";
|
|
||||||
|
|
||||||
case GNUTLS_HANDSHAKE_SERVER_HELLO:
|
|
||||||
return "Server hello";
|
|
||||||
|
|
||||||
case GNUTLS_HANDSHAKE_CERTIFICATE_PKT:
|
|
||||||
return "Certificate packet";
|
|
||||||
|
|
||||||
case GNUTLS_HANDSHAKE_SERVER_KEY_EXCHANGE:
|
|
||||||
return "Server key exchange";
|
|
||||||
|
|
||||||
case GNUTLS_HANDSHAKE_CERTIFICATE_REQUEST:
|
|
||||||
return "Certificate request";
|
|
||||||
|
|
||||||
case GNUTLS_HANDSHAKE_SERVER_HELLO_DONE:
|
|
||||||
return "Server hello done";
|
|
||||||
|
|
||||||
case GNUTLS_HANDSHAKE_CERTIFICATE_VERIFY:
|
|
||||||
return "Certificate verify";
|
|
||||||
|
|
||||||
case GNUTLS_HANDSHAKE_CLIENT_KEY_EXCHANGE:
|
|
||||||
return "Client key exchange";
|
|
||||||
|
|
||||||
case GNUTLS_HANDSHAKE_FINISHED:
|
|
||||||
return "Finished";
|
|
||||||
|
|
||||||
case GNUTLS_HANDSHAKE_SUPPLEMENTAL:
|
|
||||||
return "Supplemental";
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Connects to the peer and returns a socket
|
|
||||||
* descriptor.
|
|
||||||
*/
|
|
||||||
static int
|
|
||||||
tcp_connect(void)
|
|
||||||
{
|
|
||||||
const char *PORT = "443";
|
|
||||||
const char *SERVER = "69.58.181.89"; //verisign.com
|
|
||||||
int err, sd;
|
|
||||||
int flag = 1, curstate = 0;
|
|
||||||
struct sockaddr_in sa;
|
|
||||||
|
|
||||||
/* sets some fd options such as nonblock */
|
|
||||||
sd = socket(AF_INET, SOCK_STREAM, 0);
|
|
||||||
fcntl(sd, F_SETFL, O_NONBLOCK);
|
|
||||||
fcntl(sd, F_SETFD, FD_CLOEXEC);
|
|
||||||
setsockopt(sd, SOL_SOCKET, SO_REUSEADDR, (const void *)&curstate, sizeof(curstate));
|
|
||||||
|
|
||||||
setsockopt(sd, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(int));
|
|
||||||
|
|
||||||
memset(&sa, '\0', sizeof (sa));
|
|
||||||
sa.sin_family = AF_INET;
|
|
||||||
sa.sin_port = htons(atoi(PORT));
|
|
||||||
inet_pton(AF_INET, SERVER, &sa.sin_addr);
|
|
||||||
|
|
||||||
/* connects to server
|
|
||||||
*/
|
|
||||||
err = connect(sd, (struct sockaddr *)&sa, sizeof (sa));
|
|
||||||
if ((err < 0) && (errno != EINPROGRESS))
|
|
||||||
{
|
|
||||||
print("Connect error\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
return sd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* closes the given socket descriptor.
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
tcp_close(int sd)
|
|
||||||
{
|
|
||||||
shutdown(sd, SHUT_RDWR); /* no more receptions */
|
|
||||||
close(sd);
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_process_data(gnutls_session_t client, Ecore_Fd_Handler *fd_handler)
|
|
||||||
{
|
|
||||||
static int ret, lastret;
|
|
||||||
static unsigned int count = 0;
|
|
||||||
|
|
||||||
if (!done)
|
|
||||||
{
|
|
||||||
lastret = ret;
|
|
||||||
ret = gnutls_handshake(client);
|
|
||||||
count++;
|
|
||||||
if (gnutls_record_get_direction(client))
|
|
||||||
ecore_main_fd_handler_active_set(fd_handler, ECORE_FD_WRITE);
|
|
||||||
else
|
|
||||||
ecore_main_fd_handler_active_set(fd_handler, ECORE_FD_READ);
|
|
||||||
/* avoid printing messages infinity times */
|
|
||||||
if (lastret != ret)
|
|
||||||
{
|
|
||||||
print("gnutls returned with: %s - %s", gnutls_strerror_name(ret), gnutls_strerror(ret));
|
|
||||||
if ((ret == GNUTLS_E_WARNING_ALERT_RECEIVED) || (ret == GNUTLS_E_FATAL_ALERT_RECEIVED))
|
|
||||||
print("Also received alert: %s", gnutls_alert_get_name(gnutls_alert_get(client)));
|
|
||||||
print("last out: %s", SSL_GNUTLS_PRINT_HANDSHAKE_STATUS(gnutls_handshake_get_last_out(client)));
|
|
||||||
print("last in: %s", SSL_GNUTLS_PRINT_HANDSHAKE_STATUS(gnutls_handshake_get_last_in(client)));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gnutls_error_is_fatal(ret))
|
|
||||||
{
|
|
||||||
print("yarrr this be an error!");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (ret == GNUTLS_E_SUCCESS)
|
|
||||||
{
|
|
||||||
done = 1;
|
|
||||||
print("Handshake successful in %u handshake calls!", count);
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
}
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(void)
|
|
||||||
{
|
|
||||||
/* credentials */
|
|
||||||
gnutls_anon_client_credentials_t c_anoncred;
|
|
||||||
gnutls_certificate_credentials_t c_certcred;
|
|
||||||
|
|
||||||
gnutls_session_t client;
|
|
||||||
int sd;
|
|
||||||
|
|
||||||
/* General init. */
|
|
||||||
gnutls_global_init();
|
|
||||||
ecore_init();
|
|
||||||
gnutls_global_set_log_function(tls_log_func);
|
|
||||||
gnutls_global_set_log_level(6);
|
|
||||||
|
|
||||||
/* Init client */
|
|
||||||
gnutls_anon_allocate_client_credentials(&c_anoncred);
|
|
||||||
gnutls_certificate_allocate_credentials(&c_certcred);
|
|
||||||
gnutls_init(&client, GNUTLS_CLIENT);
|
|
||||||
/* set very specific priorities */
|
|
||||||
gnutls_priority_set_direct(client, "NONE:%VERIFY_ALLOW_X509_V1_CA_CRT:+RSA:+DHE-RSA:+DHE-DSS:+ANON-DH:+COMP-DEFLATE:+COMP-NULL:+CTYPE-X509:+SHA1:+SHA256:+SHA384:+SHA512:+AES-256-CBC:+AES-128-CBC:+3DES-CBC:+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:+VERS-SSL3.0", NULL);
|
|
||||||
gnutls_credentials_set(client, GNUTLS_CRD_ANON, c_anoncred);
|
|
||||||
gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, c_certcred);
|
|
||||||
gnutls_server_name_set(client, GNUTLS_NAME_DNS, "www.verisign.com", strlen("www.verisign.com"));
|
|
||||||
|
|
||||||
/* connect to the peer
|
|
||||||
*/
|
|
||||||
sd = tcp_connect();
|
|
||||||
|
|
||||||
/* associate gnutls with socket */
|
|
||||||
gnutls_transport_set_ptr(client, (gnutls_transport_ptr_t)sd);
|
|
||||||
/* add a callback for data being available for send/receive on socket */
|
|
||||||
if (!ecore_main_fd_handler_add(sd, ECORE_FD_READ | ECORE_FD_WRITE, (Ecore_Fd_Cb)_process_data, client, NULL, NULL))
|
|
||||||
{
|
|
||||||
print("could not create fd handler!");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
/* begin main loop */
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
gnutls_bye(client, GNUTLS_SHUT_RDWR);
|
|
||||||
|
|
||||||
gnutls_deinit(client);
|
|
||||||
|
|
||||||
tcp_close(sd);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,86 +0,0 @@
|
||||||
#include <stdio.h>
|
|
||||||
#include <Eina.h>
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include <Ecore_File.h>
|
|
||||||
|
|
||||||
/*
|
|
||||||
* ecore_file_download() example
|
|
||||||
*
|
|
||||||
* compile with:
|
|
||||||
* gcc ecore_file_download_example.c `pkg-config --libs --cflags ecore-file` \
|
|
||||||
* -o ecore_file_download_example
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define URL "http://www.kernel.org/pub/linux/kernel/v1.0/linux-1.0.tar.gz"
|
|
||||||
#define DST "linux-1.0.tar.gz"
|
|
||||||
#define DST_MIME "[x-gzip]linux-1.0.tar.gz"
|
|
||||||
|
|
||||||
void
|
|
||||||
completion_cb(void *data, const char *file, int status)
|
|
||||||
{
|
|
||||||
printf("Done (status: %d)\n", status);
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
progress_cb(void *data, const char *file,
|
|
||||||
long int dltotal, long int dlnow,
|
|
||||||
long int ultotal, long int ulnow)
|
|
||||||
{
|
|
||||||
printf("Progress: %ld/%ld\n", dlnow, dltotal);
|
|
||||||
return ECORE_FILE_PROGRESS_CONTINUE; // continue the download
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(void)
|
|
||||||
{
|
|
||||||
double start;
|
|
||||||
Eina_Hash *headers;
|
|
||||||
|
|
||||||
eina_init();
|
|
||||||
ecore_init();
|
|
||||||
ecore_file_init();
|
|
||||||
|
|
||||||
if (ecore_file_exists(DST))
|
|
||||||
ecore_file_unlink(DST);
|
|
||||||
|
|
||||||
start = ecore_time_get();
|
|
||||||
|
|
||||||
if (ecore_file_download(URL, DST, completion_cb, progress_cb, NULL, NULL))
|
|
||||||
{
|
|
||||||
printf("Download started successfully:\n URL: %s\n DEST: %s\n", URL, DST);
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
printf("\nTime elapsed: %f seconds\n", ecore_time_get() - start);
|
|
||||||
printf("Downloaded %lld bytes\n", ecore_file_size(DST));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
printf("Error, can't start download\n");
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
|
|
||||||
headers = eina_hash_string_small_new(NULL);
|
|
||||||
eina_hash_add(headers, "Content-type", "application/x-gzip");
|
|
||||||
|
|
||||||
if (ecore_file_download_full(URL, DST_MIME, completion_cb, progress_cb, NULL, NULL, headers))
|
|
||||||
{
|
|
||||||
printf("Download started successfully:\n URL: %s\n DEST: %s\n", URL, DST_MIME);
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
printf("\nTime elapsed: %f seconds\n", ecore_time_get() - start);
|
|
||||||
printf("Downloaded %lld bytes\n", ecore_file_size(DST));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
printf("Error, can't start download\n");
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
|
|
||||||
done:
|
|
||||||
if (headers) eina_hash_free(headers);
|
|
||||||
ecore_file_shutdown();
|
|
||||||
ecore_shutdown();
|
|
||||||
eina_shutdown();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,117 +0,0 @@
|
||||||
#include <Ecore.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
struct context // helper struct to give some context to the callbacks
|
|
||||||
{
|
|
||||||
int count;
|
|
||||||
Ecore_Idle_Enterer *enterer;
|
|
||||||
Ecore_Idler *idler;
|
|
||||||
Ecore_Idle_Exiter *exiter;
|
|
||||||
Ecore_Event_Handler *handler;
|
|
||||||
Ecore_Timer *timer;
|
|
||||||
};
|
|
||||||
|
|
||||||
static _event_type = 0; // a new type of event will be defined and stored here
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_enterer_cb(void *data) // the idle enterer callback
|
|
||||||
{
|
|
||||||
printf("IDLE ENTERER: Ecore entering in idle state.\n");
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_RENEW; // same as EINA_TRUE
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_exiter_cb(void *data) // the idle exiter callback
|
|
||||||
{
|
|
||||||
printf("IDLE EXITER: Ecore exiting idle state.\n");
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_RENEW; // same as EINA_TRUE
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_idler_cb(void *data) // the idler callback - ran while the mainloop is idle
|
|
||||||
{
|
|
||||||
struct context *ctxt = data;
|
|
||||||
printf("IDLER: executing idler callback while in idle state.\n");
|
|
||||||
|
|
||||||
ctxt->count++;
|
|
||||||
|
|
||||||
/* each 10 times that the callback gets called, generate an event that
|
|
||||||
* will wake up the main loop, triggering idle enterers, exiters, etc. */
|
|
||||||
if ((ctxt->count % 10) == 0)
|
|
||||||
ecore_event_add(_event_type, NULL, NULL, NULL);
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_RENEW; // same as EINA_TRUE
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_event_handler_cb(void *data, int type, void *event) // event callback
|
|
||||||
{
|
|
||||||
struct context *ctxt = data;
|
|
||||||
|
|
||||||
printf("EVENT: processing callback for the event received.\n");
|
|
||||||
|
|
||||||
if (ctxt->count > 100)
|
|
||||||
{
|
|
||||||
ecore_idle_enterer_del(ctxt->enterer);
|
|
||||||
ecore_idle_exiter_del(ctxt->exiter);
|
|
||||||
// ecore_idler_del(ctxt->idler);
|
|
||||||
eo_unref(ctxt->idler);
|
|
||||||
|
|
||||||
ctxt->enterer = NULL;
|
|
||||||
ctxt->exiter = NULL;
|
|
||||||
ctxt->idler = NULL;
|
|
||||||
|
|
||||||
if (ctxt->timer)
|
|
||||||
{
|
|
||||||
ecore_timer_del(ctxt->timer);
|
|
||||||
ctxt->timer = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
}
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_DONE; // same as EINA_FALSE
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_timer_cb(void *data)
|
|
||||||
{
|
|
||||||
struct context *ctxt = data;
|
|
||||||
printf("TIMER: timer callback called.\n");
|
|
||||||
|
|
||||||
if (ctxt->timer)
|
|
||||||
ctxt->timer = NULL;
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_CANCEL; // same as EINA_FALSE
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
struct context ctxt = {0};
|
|
||||||
|
|
||||||
if (!ecore_init())
|
|
||||||
{
|
|
||||||
printf("ERROR: Cannot init Ecore!\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
_event_type = ecore_event_type_new();
|
|
||||||
|
|
||||||
ctxt.enterer = ecore_idle_enterer_add(_enterer_cb, &ctxt);
|
|
||||||
ctxt.exiter = ecore_idle_exiter_add(_exiter_cb, &ctxt);
|
|
||||||
// ctxt.idler = ecore_idler_add(_idler_cb, &ctxt);
|
|
||||||
ctxt.idler = eo_add_custom(ECORE_IDLER_CLASS, NULL, ecore_idler_constructor(_idler_cb, &ctxt));
|
|
||||||
ctxt.handler = ecore_event_handler_add(_event_type,
|
|
||||||
_event_handler_cb,
|
|
||||||
&ctxt);
|
|
||||||
ctxt.timer = ecore_timer_add(0.0005, _timer_cb, &ctxt);
|
|
||||||
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
ecore_shutdown();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,588 +0,0 @@
|
||||||
/**
|
|
||||||
* Ecore example illustrating how to use ecore imf.
|
|
||||||
*
|
|
||||||
* @verbatim
|
|
||||||
* gcc -o ecore_imf_example ecore_imf_example.c `pkg-config --cflags --libs ecore evas ecore-evas ecore-imf ecore-imf-evas`
|
|
||||||
* @endverbatim
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include <Ecore_Evas.h>
|
|
||||||
#include <Ecore_IMF.h>
|
|
||||||
#include <Ecore_IMF_Evas.h>
|
|
||||||
#include <Evas.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
typedef struct _Entry Entry;
|
|
||||||
|
|
||||||
struct _Entry
|
|
||||||
{
|
|
||||||
Evas_Object *rect;
|
|
||||||
Evas_Object *txt_obj;
|
|
||||||
Evas_Textblock_Style *txt_style;
|
|
||||||
Evas_Textblock_Cursor *cursor;
|
|
||||||
Evas_Textblock_Cursor *preedit_start;
|
|
||||||
Evas_Textblock_Cursor *preedit_end;
|
|
||||||
Ecore_IMF_Context *imf_context;
|
|
||||||
Eina_Bool have_preedit : 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
static void
|
|
||||||
_mouse_up_cb(void *data, Evas *e, Evas_Object *o, void *event_info)
|
|
||||||
{
|
|
||||||
Entry *en = data;
|
|
||||||
if (!en) return;
|
|
||||||
|
|
||||||
if (en->imf_context)
|
|
||||||
ecore_imf_context_reset(en->imf_context);
|
|
||||||
|
|
||||||
evas_object_focus_set(en->rect, EINA_TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_entry_focus_in_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
|
||||||
{
|
|
||||||
Entry *en = data;
|
|
||||||
if (!en) return;
|
|
||||||
|
|
||||||
if (en->imf_context)
|
|
||||||
ecore_imf_context_focus_in(en->imf_context);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_entry_focus_out_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
|
||||||
{
|
|
||||||
Entry *en = data;
|
|
||||||
if (!en) return;
|
|
||||||
|
|
||||||
if (en->imf_context)
|
|
||||||
{
|
|
||||||
ecore_imf_context_reset(en->imf_context);
|
|
||||||
ecore_imf_context_focus_out(en->imf_context);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_canvas_focus_in_cb(void *data, Evas *e, void *event_info)
|
|
||||||
{
|
|
||||||
Entry *en;
|
|
||||||
Evas_Object *obj = evas_focus_get(e);
|
|
||||||
if (!obj) return;
|
|
||||||
|
|
||||||
en = evas_object_data_get(obj, "Entry");
|
|
||||||
if (en)
|
|
||||||
_entry_focus_in_cb(en, NULL, NULL, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_canvas_focus_out_cb(void *data, Evas *e, void *event_info)
|
|
||||||
{
|
|
||||||
Entry *en;
|
|
||||||
Evas_Object *obj = evas_focus_get(e);
|
|
||||||
if (!obj) return;
|
|
||||||
|
|
||||||
en = evas_object_data_get(obj, "Entry");
|
|
||||||
if (en)
|
|
||||||
_entry_focus_out_cb(en, NULL, NULL, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_imf_cursor_info_set(Entry *en)
|
|
||||||
{
|
|
||||||
Evas_Coord x, y, w, h;
|
|
||||||
Evas_Coord cx, cy, cw, ch; // cursor geometry
|
|
||||||
int cursor_pos; // cursor position in chars (Not bytes)
|
|
||||||
|
|
||||||
if (!en) return;
|
|
||||||
|
|
||||||
// get cursor geometry
|
|
||||||
evas_object_geometry_get(en->txt_obj, &x, &y, &w, &h);
|
|
||||||
evas_textblock_cursor_geometry_get(en->cursor, &cx, &cy, &cw, &ch, NULL, EVAS_TEXTBLOCK_CURSOR_BEFORE);
|
|
||||||
|
|
||||||
// get cursor position
|
|
||||||
cursor_pos = evas_textblock_cursor_pos_get(en->cursor);
|
|
||||||
|
|
||||||
ecore_imf_context_cursor_position_set(en->imf_context, cursor_pos);
|
|
||||||
ecore_imf_context_cursor_location_set(en->imf_context, x + cx, y + cy, cw, ch);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_preedit_del(Entry *en)
|
|
||||||
{
|
|
||||||
if (!en || !en->have_preedit) return;
|
|
||||||
if (!en->preedit_start || !en->preedit_end) return;
|
|
||||||
if (!evas_textblock_cursor_compare(en->preedit_start, en->preedit_end)) return;
|
|
||||||
|
|
||||||
/* delete the preedit characters */
|
|
||||||
evas_textblock_cursor_range_delete(en->preedit_start, en->preedit_end);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_preedit_clear(Entry *en)
|
|
||||||
{
|
|
||||||
if (en->preedit_start)
|
|
||||||
{
|
|
||||||
evas_textblock_cursor_free(en->preedit_start);
|
|
||||||
en->preedit_start = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (en->preedit_end)
|
|
||||||
{
|
|
||||||
evas_textblock_cursor_free(en->preedit_end);
|
|
||||||
en->preedit_end = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
en->have_preedit = EINA_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_ecore_imf_retrieve_surrounding_cb(void *data, Ecore_IMF_Context *ctx, char **text, int *cursor_pos)
|
|
||||||
{
|
|
||||||
/* This callback will be called when the Input Method Context module requests the surrounding context. */
|
|
||||||
Entry *en = data;
|
|
||||||
const char *str;
|
|
||||||
|
|
||||||
if (!en) return;
|
|
||||||
|
|
||||||
str = evas_object_textblock_text_markup_get(en->txt_obj);
|
|
||||||
|
|
||||||
if (text)
|
|
||||||
*text = str ? strdup(str) : strdup("");
|
|
||||||
|
|
||||||
/* get the current position of cursor */
|
|
||||||
if (cursor_pos)
|
|
||||||
*cursor_pos = evas_textblock_cursor_pos_get(en->cursor);
|
|
||||||
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_ecore_imf_event_delete_surrounding_cb(void *data, Ecore_IMF_Context *ctx, void *event_info)
|
|
||||||
{
|
|
||||||
/* called when the input method needs to delete all or part of the context surrounding the cursor */
|
|
||||||
Entry *en = data;
|
|
||||||
Ecore_IMF_Event_Delete_Surrounding *ev = event_info;
|
|
||||||
Evas_Textblock_Cursor *del_start, *del_end;
|
|
||||||
int cursor_pos;
|
|
||||||
|
|
||||||
if (!en) return;
|
|
||||||
|
|
||||||
cursor_pos = evas_textblock_cursor_pos_get(en->cursor);
|
|
||||||
|
|
||||||
del_start = evas_object_textblock_cursor_new(en->txt_obj);
|
|
||||||
evas_textblock_cursor_pos_set(del_start, cursor_pos + ev->offset);
|
|
||||||
|
|
||||||
del_end = evas_object_textblock_cursor_new(en->txt_obj);
|
|
||||||
evas_textblock_cursor_pos_set(del_end, cursor_pos + ev->offset + ev->n_chars);
|
|
||||||
|
|
||||||
/* implement function to delete character(s) from 'cursor_pos+ev->offset' cursor position to 'cursor_pos + ev->offset + ev->n_chars' */
|
|
||||||
evas_textblock_cursor_range_delete(del_start, del_end);
|
|
||||||
|
|
||||||
evas_textblock_cursor_free(del_start);
|
|
||||||
evas_textblock_cursor_free(del_end);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_ecore_imf_event_commit_cb(void *data, Ecore_IMF_Context *ctx, void *event_info)
|
|
||||||
{
|
|
||||||
Entry *en = data;
|
|
||||||
char *commit_str = (char *)event_info;
|
|
||||||
if (!en) return;
|
|
||||||
|
|
||||||
/* delete preedit string */
|
|
||||||
_preedit_del(en);
|
|
||||||
_preedit_clear(en);
|
|
||||||
|
|
||||||
printf("commit string : %s\n", commit_str);
|
|
||||||
|
|
||||||
evas_object_textblock_text_markup_prepend(en->cursor, commit_str);
|
|
||||||
|
|
||||||
/* notify cursor information */
|
|
||||||
_imf_cursor_info_set(en);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_ecore_imf_event_preedit_changed_cb(void *data, Ecore_IMF_Context *ctx, void *event_info)
|
|
||||||
{
|
|
||||||
/* example how to get preedit string */
|
|
||||||
Entry *en = data;
|
|
||||||
char *preedit_string;
|
|
||||||
int cursor_pos;
|
|
||||||
Eina_List *attrs = NULL;
|
|
||||||
Eina_List *l;
|
|
||||||
Ecore_IMF_Preedit_Attr *attr;
|
|
||||||
Ecore_IMF_Context *imf_context = ctx;
|
|
||||||
int preedit_start_pos, preedit_end_pos;
|
|
||||||
int i;
|
|
||||||
Eina_Bool preedit_end_state = EINA_FALSE;
|
|
||||||
|
|
||||||
if (!en) return;
|
|
||||||
|
|
||||||
/* get preedit string, attributes */
|
|
||||||
ecore_imf_context_preedit_string_with_attributes_get(imf_context, &preedit_string, &attrs, &cursor_pos);
|
|
||||||
printf("preedit string : %s\n", preedit_string);
|
|
||||||
|
|
||||||
if (!strcmp(preedit_string, ""))
|
|
||||||
preedit_end_state = EINA_TRUE;
|
|
||||||
|
|
||||||
/* delete preedit */
|
|
||||||
_preedit_del(en);
|
|
||||||
|
|
||||||
preedit_start_pos = evas_textblock_cursor_pos_get(en->cursor);
|
|
||||||
|
|
||||||
/* insert preedit character(s) */
|
|
||||||
if (strlen(preedit_string) > 0)
|
|
||||||
{
|
|
||||||
if (attrs)
|
|
||||||
{
|
|
||||||
EINA_LIST_FOREACH(attrs, l, attr)
|
|
||||||
{
|
|
||||||
if (attr->preedit_type == ECORE_IMF_PREEDIT_TYPE_SUB1) // style type
|
|
||||||
{
|
|
||||||
/* apply appropriate style such as underline */
|
|
||||||
}
|
|
||||||
else if (attr->preedit_type == ECORE_IMF_PREEDIT_TYPE_SUB2 || attr->preedit_type == ECORE_IMF_PREEDIT_TYPE_SUB3)
|
|
||||||
{
|
|
||||||
/* apply appropriate style such as underline */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* insert code to display preedit string in your editor */
|
|
||||||
evas_object_textblock_text_markup_prepend(en->cursor, preedit_string);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!preedit_end_state)
|
|
||||||
{
|
|
||||||
/* set preedit start cursor */
|
|
||||||
if (!en->preedit_start)
|
|
||||||
en->preedit_start = evas_object_textblock_cursor_new(en->txt_obj);
|
|
||||||
evas_textblock_cursor_copy(en->cursor, en->preedit_start);
|
|
||||||
|
|
||||||
/* set preedit end cursor */
|
|
||||||
if (!en->preedit_end)
|
|
||||||
en->preedit_end = evas_object_textblock_cursor_new(en->txt_obj);
|
|
||||||
evas_textblock_cursor_copy(en->cursor, en->preedit_end);
|
|
||||||
|
|
||||||
preedit_end_pos = evas_textblock_cursor_pos_get(en->cursor);
|
|
||||||
|
|
||||||
for (i = 0; i < (preedit_end_pos - preedit_start_pos); i++)
|
|
||||||
{
|
|
||||||
evas_textblock_cursor_char_prev(en->preedit_start);
|
|
||||||
}
|
|
||||||
|
|
||||||
en->have_preedit = EINA_TRUE;
|
|
||||||
|
|
||||||
/* set cursor position */
|
|
||||||
evas_textblock_cursor_pos_set(en->cursor, preedit_start_pos + cursor_pos);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* notify cursor information */
|
|
||||||
_imf_cursor_info_set(en);
|
|
||||||
|
|
||||||
EINA_LIST_FREE(attrs, attr)
|
|
||||||
free(attr);
|
|
||||||
|
|
||||||
free(preedit_string);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
|
||||||
{
|
|
||||||
Entry *en = data;
|
|
||||||
Evas_Event_Key_Down *ev = event_info;
|
|
||||||
Eina_Bool control, alt, shift;
|
|
||||||
Eina_Bool multiline;
|
|
||||||
Eina_Bool cursor_changed;
|
|
||||||
if (!en) return;
|
|
||||||
if (!ev->key) return;
|
|
||||||
|
|
||||||
if (en->imf_context)
|
|
||||||
{
|
|
||||||
Ecore_IMF_Event_Key_Down ecore_ev;
|
|
||||||
ecore_imf_evas_event_key_down_wrap(ev, &ecore_ev);
|
|
||||||
if (ecore_imf_context_filter_event(en->imf_context,
|
|
||||||
ECORE_IMF_EVENT_KEY_DOWN,
|
|
||||||
(Ecore_IMF_Event *)&ecore_ev))
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
control = evas_key_modifier_is_set(ev->modifiers, "Control");
|
|
||||||
alt = evas_key_modifier_is_set(ev->modifiers, "Alt");
|
|
||||||
shift = evas_key_modifier_is_set(ev->modifiers, "Shift");
|
|
||||||
|
|
||||||
if ((!strcmp(ev->keyname, "Escape")) ||
|
|
||||||
(!strcmp(ev->keyname, "Return")) || (!strcmp(ev->keyname, "KP_Enter")))
|
|
||||||
ecore_imf_context_reset(en->imf_context);
|
|
||||||
|
|
||||||
if (!strcmp(ev->key, "BackSpace"))
|
|
||||||
{
|
|
||||||
if (evas_textblock_cursor_char_prev(en->cursor))
|
|
||||||
{
|
|
||||||
evas_textblock_cursor_char_delete(en->cursor);
|
|
||||||
/* notify cursor information */
|
|
||||||
_imf_cursor_info_set(en);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else if (!strcmp(ev->key, "Delete") ||
|
|
||||||
(!strcmp(ev->key, "KP_Delete") && !ev->string))
|
|
||||||
{
|
|
||||||
// FILLME
|
|
||||||
}
|
|
||||||
else if ((control) && (!strcmp(ev->key, "v")))
|
|
||||||
{
|
|
||||||
// ctrl + v
|
|
||||||
// FILLME
|
|
||||||
}
|
|
||||||
else if ((control) && (!strcmp(ev->key, "a")))
|
|
||||||
{
|
|
||||||
// ctrl + a
|
|
||||||
// FILLME
|
|
||||||
}
|
|
||||||
else if ((control) && (!strcmp(ev->key, "A")))
|
|
||||||
{
|
|
||||||
// ctrl + A
|
|
||||||
// FILLME
|
|
||||||
}
|
|
||||||
else if ((control) && ((!strcmp(ev->key, "c") || (!strcmp(ev->key, "Insert")))))
|
|
||||||
{
|
|
||||||
// ctrl + c
|
|
||||||
// FILLME
|
|
||||||
}
|
|
||||||
else if ((control) && ((!strcmp(ev->key, "x") || (!strcmp(ev->key, "m")))))
|
|
||||||
{
|
|
||||||
// ctrl + x
|
|
||||||
// FILLME
|
|
||||||
}
|
|
||||||
else if ((control) && (!strcmp(ev->key, "z")))
|
|
||||||
{
|
|
||||||
// ctrl + z (undo)
|
|
||||||
// FILLME
|
|
||||||
}
|
|
||||||
else if ((control) && (!strcmp(ev->key, "y")))
|
|
||||||
{
|
|
||||||
// ctrl + y (redo)
|
|
||||||
// FILLME
|
|
||||||
}
|
|
||||||
else if ((!strcmp(ev->key, "Return")) || (!strcmp(ev->key, "KP_Enter")))
|
|
||||||
{
|
|
||||||
// FILLME
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (ev->string)
|
|
||||||
{
|
|
||||||
printf("key down string : %s\n", ev->string);
|
|
||||||
evas_object_textblock_text_markup_prepend(en->cursor, ev->string);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* notify cursor information */
|
|
||||||
_imf_cursor_info_set(en);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_key_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
|
||||||
{
|
|
||||||
Entry *en = data;
|
|
||||||
Evas_Event_Key_Up *ev = event_info;
|
|
||||||
|
|
||||||
if (!en) return;
|
|
||||||
|
|
||||||
if (en->imf_context)
|
|
||||||
{
|
|
||||||
Ecore_IMF_Event_Key_Up ecore_ev;
|
|
||||||
|
|
||||||
ecore_imf_evas_event_key_up_wrap(ev, &ecore_ev);
|
|
||||||
if (ecore_imf_context_filter_event(en->imf_context,
|
|
||||||
ECORE_IMF_EVENT_KEY_UP,
|
|
||||||
(Ecore_IMF_Event *)&ecore_ev))
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
create_input_field(Evas *evas, Entry *en, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h)
|
|
||||||
{
|
|
||||||
if (!en) return;
|
|
||||||
|
|
||||||
/* create background for text input field */
|
|
||||||
en->rect = evas_object_rectangle_add(evas);
|
|
||||||
evas_object_color_set(en->rect, 150, 150, 150, 255); /* gray */
|
|
||||||
evas_object_move(en->rect, x, y);
|
|
||||||
evas_object_resize(en->rect, w, h);
|
|
||||||
evas_object_show(en->rect);
|
|
||||||
evas_object_data_set(en->rect, "Entry", en);
|
|
||||||
|
|
||||||
/* create text object for displaying text */
|
|
||||||
en->txt_obj = evas_object_textblock_add(evas);
|
|
||||||
evas_object_color_set(en->txt_obj, 0, 0, 0, 255);
|
|
||||||
evas_object_pass_events_set(en->txt_obj, EINA_TRUE);
|
|
||||||
evas_object_move(en->txt_obj, x, y);
|
|
||||||
evas_object_resize(en->txt_obj, w, h);
|
|
||||||
evas_object_show(en->txt_obj);
|
|
||||||
|
|
||||||
/* set style on textblock */
|
|
||||||
static const char *style_buf =
|
|
||||||
"DEFAULT='font=Sans font_size=30 color=#000 text_class=entry'"
|
|
||||||
"newline='br'"
|
|
||||||
"b='+ font=Sans:style=bold'";
|
|
||||||
en->txt_style = evas_textblock_style_new();
|
|
||||||
evas_textblock_style_set(en->txt_style, style_buf);
|
|
||||||
evas_object_textblock_style_set(en->txt_obj, en->txt_style);
|
|
||||||
|
|
||||||
/* create cursor */
|
|
||||||
en->cursor = evas_object_textblock_cursor_new(en->txt_obj);
|
|
||||||
|
|
||||||
/* create input context */
|
|
||||||
const char *default_id = ecore_imf_context_default_id_get();
|
|
||||||
if (!default_id)
|
|
||||||
return;
|
|
||||||
|
|
||||||
en->imf_context = ecore_imf_context_add(default_id);
|
|
||||||
ecore_imf_context_client_window_set(en->imf_context, (void *)ecore_evas_window_get(ecore_evas_ecore_evas_get(evas)));
|
|
||||||
ecore_imf_context_client_canvas_set(en->imf_context, evas);
|
|
||||||
|
|
||||||
evas_object_event_callback_add(en->rect, EVAS_CALLBACK_KEY_DOWN, _key_down_cb, en);
|
|
||||||
evas_object_event_callback_add(en->rect, EVAS_CALLBACK_KEY_UP, _key_up_cb, en);
|
|
||||||
evas_object_event_callback_add(en->rect, EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb, en);
|
|
||||||
evas_object_event_callback_add(en->rect, EVAS_CALLBACK_FOCUS_IN, _entry_focus_in_cb, en);
|
|
||||||
evas_object_event_callback_add(en->rect, EVAS_CALLBACK_FOCUS_OUT, _entry_focus_out_cb, en);
|
|
||||||
|
|
||||||
en->have_preedit = EINA_FALSE;
|
|
||||||
en->preedit_start = NULL;
|
|
||||||
en->preedit_end = NULL;
|
|
||||||
|
|
||||||
/* register retrieve surrounding callback */
|
|
||||||
ecore_imf_context_retrieve_surrounding_callback_set(en->imf_context, _ecore_imf_retrieve_surrounding_cb, en);
|
|
||||||
|
|
||||||
/* register commit event callback */
|
|
||||||
ecore_imf_context_event_callback_add(en->imf_context, ECORE_IMF_CALLBACK_COMMIT, _ecore_imf_event_commit_cb, en);
|
|
||||||
|
|
||||||
/* register preedit changed event handler */
|
|
||||||
ecore_imf_context_event_callback_add(en->imf_context, ECORE_IMF_CALLBACK_PREEDIT_CHANGED, _ecore_imf_event_preedit_changed_cb, en);
|
|
||||||
|
|
||||||
/* register surrounding delete event callback */
|
|
||||||
ecore_imf_context_event_callback_add(en->imf_context, ECORE_IMF_CALLBACK_DELETE_SURROUNDING, _ecore_imf_event_delete_surrounding_cb, en);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
delete_input_field(Entry *en)
|
|
||||||
{
|
|
||||||
if (!en) return;
|
|
||||||
|
|
||||||
if (en->rect)
|
|
||||||
{
|
|
||||||
evas_object_del(en->rect);
|
|
||||||
en->rect = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (en->cursor)
|
|
||||||
{
|
|
||||||
evas_textblock_cursor_free(en->cursor);
|
|
||||||
en->cursor = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (en->preedit_start)
|
|
||||||
{
|
|
||||||
evas_textblock_cursor_free(en->preedit_start);
|
|
||||||
en->preedit_start = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (en->preedit_end)
|
|
||||||
{
|
|
||||||
evas_textblock_cursor_free(en->preedit_end);
|
|
||||||
en->preedit_end = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (en->txt_obj)
|
|
||||||
{
|
|
||||||
evas_object_del(en->txt_obj);
|
|
||||||
en->txt_obj = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (en->txt_style)
|
|
||||||
{
|
|
||||||
evas_textblock_style_free(en->txt_style);
|
|
||||||
en->txt_style = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (en->imf_context)
|
|
||||||
{
|
|
||||||
ecore_imf_context_del(en->imf_context);
|
|
||||||
en->imf_context = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
Ecore_Evas *ee;
|
|
||||||
Evas *evas;
|
|
||||||
Entry en1, en2;
|
|
||||||
|
|
||||||
if (!ecore_evas_init())
|
|
||||||
{
|
|
||||||
fprintf(stderr, "failed to call ecore_evas_init()\n");
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
ecore_imf_init();
|
|
||||||
|
|
||||||
// create a new window, with size=480x800 and default engine
|
|
||||||
ee = ecore_evas_new(NULL, 0, 0, 480, 800, NULL);
|
|
||||||
|
|
||||||
if (!ee)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "failed to call ecore_evas_new\n");
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
ecore_evas_show(ee);
|
|
||||||
|
|
||||||
// get the canvas off just-created window
|
|
||||||
evas = ecore_evas_get(ee);
|
|
||||||
if (!evas)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "failed to ccall ecore_evas_get\n");
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
// create input field rectangle
|
|
||||||
Evas_Object *bg = evas_object_rectangle_add(evas);
|
|
||||||
evas_object_move(bg, 0, 0);
|
|
||||||
evas_object_resize(bg, 480, 800);
|
|
||||||
evas_object_color_set(bg, 255, 255, 255, 255);
|
|
||||||
evas_object_show(bg);
|
|
||||||
|
|
||||||
evas_event_callback_add(evas, EVAS_CALLBACK_CANVAS_FOCUS_IN, _canvas_focus_in_cb, NULL);
|
|
||||||
evas_event_callback_add(evas, EVAS_CALLBACK_CANVAS_FOCUS_OUT, _canvas_focus_out_cb, NULL);
|
|
||||||
|
|
||||||
// create input field 1
|
|
||||||
create_input_field(evas, &en1, 40, 60, 400, 80);
|
|
||||||
|
|
||||||
// create input field 2
|
|
||||||
create_input_field(evas, &en2, 40, 180, 400, 80);
|
|
||||||
|
|
||||||
// give focus to input field 1
|
|
||||||
evas_object_focus_set(en1.rect, EINA_TRUE);
|
|
||||||
|
|
||||||
ecore_main_loop_begin(); // begin mainloop
|
|
||||||
|
|
||||||
delete_input_field(&en1); // delete input field 1
|
|
||||||
delete_input_field(&en2); // delete input field 2
|
|
||||||
|
|
||||||
evas_event_callback_del_full(evas, EVAS_CALLBACK_CANVAS_FOCUS_IN, _canvas_focus_in_cb, NULL);
|
|
||||||
evas_event_callback_del_full(evas, EVAS_CALLBACK_CANVAS_FOCUS_OUT, _canvas_focus_out_cb, NULL);
|
|
||||||
|
|
||||||
ecore_evas_free(ee);
|
|
||||||
|
|
||||||
ecore_imf_shutdown();
|
|
||||||
ecore_evas_shutdown();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,50 +0,0 @@
|
||||||
#include <Ecore.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
static void
|
|
||||||
_job_print_cb(void *data)
|
|
||||||
{
|
|
||||||
char *str = data;
|
|
||||||
|
|
||||||
printf("%s\n", str);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_job_quit_cb(void *data)
|
|
||||||
{
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
Ecore_Job *job1, *job2, *job3, *job_quit;
|
|
||||||
char *str1 = "Job 1 started.";
|
|
||||||
char *str2 = "Job 2 started.";
|
|
||||||
char *str3 = "Job 3 started.";
|
|
||||||
|
|
||||||
if (!ecore_init())
|
|
||||||
{
|
|
||||||
printf("ERROR: Cannot init Ecore!\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
job1 = ecore_job_add(_job_print_cb, str1);
|
|
||||||
job2 = ecore_job_add(_job_print_cb, str2);
|
|
||||||
job3 = ecore_job_add(_job_print_cb, str3);
|
|
||||||
|
|
||||||
job_quit = ecore_job_add(_job_quit_cb, NULL);
|
|
||||||
printf("Created jobs 1, 2, 3 and quit.\n");
|
|
||||||
|
|
||||||
if (job2)
|
|
||||||
{
|
|
||||||
char *str;
|
|
||||||
str = ecore_job_del(job2);
|
|
||||||
job2 = NULL;
|
|
||||||
printf("Deleted job 2. Its data was: \"%s\"\n", str);
|
|
||||||
}
|
|
||||||
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
ecore_shutdown();
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,190 +0,0 @@
|
||||||
#include <gst/gst.h>
|
|
||||||
#include <Ecore.h>
|
|
||||||
|
|
||||||
static int nbr = 0;
|
|
||||||
|
|
||||||
static GstElement *_buid_pipeline(gchar *filename, Ecore_Pipe *pipe);
|
|
||||||
|
|
||||||
static void new_decoded_pad_cb(GstElement *demuxer,
|
|
||||||
GstPad *new_pad,
|
|
||||||
gpointer user_data);
|
|
||||||
|
|
||||||
static void
|
|
||||||
handler(void *data, void *buf, unsigned int len)
|
|
||||||
{
|
|
||||||
GstBuffer *buffer = *((GstBuffer **)buf);
|
|
||||||
|
|
||||||
printf("handler : %p\n", buffer);
|
|
||||||
printf("frame : %d %p %lld %p\n", nbr++, data, (long long)GST_BUFFER_DURATION(buffer), buffer);
|
|
||||||
gst_buffer_unref(buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
handoff(GstElement *object,
|
|
||||||
GstBuffer *arg0,
|
|
||||||
GstPad *arg1,
|
|
||||||
gpointer user_data)
|
|
||||||
{
|
|
||||||
Ecore_Pipe *pipe;
|
|
||||||
|
|
||||||
pipe = (Ecore_Pipe *)user_data;
|
|
||||||
printf("handoff : %p\n", arg0);
|
|
||||||
gst_buffer_ref(arg0);
|
|
||||||
ecore_pipe_write(pipe, &arg0, sizeof(arg0));
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
GstElement *pipeline;
|
|
||||||
char *filename;
|
|
||||||
Ecore_Pipe *pipe;
|
|
||||||
|
|
||||||
gst_init(&argc, &argv);
|
|
||||||
|
|
||||||
if (!ecore_init())
|
|
||||||
{
|
|
||||||
gst_deinit();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
pipe = ecore_pipe_add(handler);
|
|
||||||
if (!pipe)
|
|
||||||
{
|
|
||||||
ecore_shutdown();
|
|
||||||
gst_deinit();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (argc < 2)
|
|
||||||
{
|
|
||||||
g_print("usage: %s file.avi\n", argv[0]);
|
|
||||||
ecore_pipe_del(pipe);
|
|
||||||
ecore_shutdown();
|
|
||||||
gst_deinit();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
filename = argv[1];
|
|
||||||
|
|
||||||
pipeline = _buid_pipeline(filename, pipe);
|
|
||||||
if (!pipeline)
|
|
||||||
{
|
|
||||||
g_print("Error during the pipeline building\n");
|
|
||||||
ecore_pipe_del(pipe);
|
|
||||||
ecore_shutdown();
|
|
||||||
gst_deinit();
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
gst_element_set_state(pipeline, GST_STATE_PLAYING);
|
|
||||||
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
ecore_pipe_del(pipe);
|
|
||||||
ecore_shutdown();
|
|
||||||
gst_deinit();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
new_decoded_pad_cb(GstElement *demuxer,
|
|
||||||
GstPad *new_pad,
|
|
||||||
gpointer user_data)
|
|
||||||
{
|
|
||||||
GstElement *decoder;
|
|
||||||
GstPad *pad;
|
|
||||||
GstCaps *caps;
|
|
||||||
gchar *str;
|
|
||||||
|
|
||||||
caps = gst_pad_get_caps(new_pad);
|
|
||||||
str = gst_caps_to_string(caps);
|
|
||||||
|
|
||||||
if (g_str_has_prefix(str, "video/"))
|
|
||||||
{
|
|
||||||
decoder = GST_ELEMENT(user_data);
|
|
||||||
|
|
||||||
pad = gst_element_get_pad(decoder, "sink");
|
|
||||||
if (GST_PAD_LINK_FAILED(gst_pad_link(new_pad, pad)))
|
|
||||||
{
|
|
||||||
g_warning("Failed to link %s:%s to %s:%s", GST_DEBUG_PAD_NAME(new_pad),
|
|
||||||
GST_DEBUG_PAD_NAME(pad));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
g_free(str);
|
|
||||||
gst_caps_unref(caps);
|
|
||||||
}
|
|
||||||
|
|
||||||
static GstElement
|
|
||||||
_buid_pipeline(gchar *filename, Ecore_Pipe *pipe)
|
|
||||||
{
|
|
||||||
GstElement *pipeline;
|
|
||||||
GstElement *filesrc;
|
|
||||||
GstElement *demuxer;
|
|
||||||
GstElement *decoder;
|
|
||||||
GstElement *sink;
|
|
||||||
GstStateChangeReturn res;
|
|
||||||
|
|
||||||
pipeline = gst_pipeline_new("pipeline");
|
|
||||||
if (!pipeline)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
filesrc = gst_element_factory_make("filesrc", "filesrc");
|
|
||||||
if (!filesrc)
|
|
||||||
{
|
|
||||||
printf("no filesrc");
|
|
||||||
goto failure;
|
|
||||||
}
|
|
||||||
g_object_set(G_OBJECT(filesrc), "location", filename, NULL);
|
|
||||||
|
|
||||||
demuxer = gst_element_factory_make("oggdemux", "demuxer");
|
|
||||||
if (!demuxer)
|
|
||||||
{
|
|
||||||
printf("no demux");
|
|
||||||
goto failure;
|
|
||||||
}
|
|
||||||
|
|
||||||
decoder = gst_element_factory_make("theoradec", "decoder");
|
|
||||||
if (!decoder)
|
|
||||||
{
|
|
||||||
printf("no dec");
|
|
||||||
goto failure;
|
|
||||||
}
|
|
||||||
|
|
||||||
g_signal_connect(demuxer, "pad-added",
|
|
||||||
G_CALLBACK(new_decoded_pad_cb), decoder);
|
|
||||||
|
|
||||||
sink = gst_element_factory_make("fakesink", "sink");
|
|
||||||
if (!sink)
|
|
||||||
{
|
|
||||||
printf("no sink");
|
|
||||||
goto failure;
|
|
||||||
}
|
|
||||||
g_object_set(G_OBJECT(sink), "sync", EINA_TRUE, NULL);
|
|
||||||
g_object_set(G_OBJECT(sink), "signal-handoffs", EINA_TRUE, NULL);
|
|
||||||
g_signal_connect(sink, "handoff",
|
|
||||||
G_CALLBACK(handoff), pipe);
|
|
||||||
|
|
||||||
gst_bin_add_many(GST_BIN(pipeline),
|
|
||||||
filesrc, demuxer, decoder, sink, NULL);
|
|
||||||
|
|
||||||
if (!gst_element_link(filesrc, demuxer))
|
|
||||||
goto failure;
|
|
||||||
if (!gst_element_link(decoder, sink))
|
|
||||||
goto failure;
|
|
||||||
|
|
||||||
res = gst_element_set_state(pipeline, GST_STATE_PAUSED);
|
|
||||||
if (res == GST_STATE_CHANGE_FAILURE)
|
|
||||||
goto failure;
|
|
||||||
|
|
||||||
res = gst_element_get_state(pipeline, NULL, NULL, GST_CLOCK_TIME_NONE);
|
|
||||||
if (res != GST_STATE_CHANGE_SUCCESS)
|
|
||||||
goto failure;
|
|
||||||
|
|
||||||
return pipeline;
|
|
||||||
|
|
||||||
failure:
|
|
||||||
gst_object_unref(GST_OBJECT(pipeline));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,67 +0,0 @@
|
||||||
//Compile with:
|
|
||||||
//gcc -g -Wall `pkg-config --cflags --libs ecore` -o ecore_pipe_simple_example ecore_pipe_simple_example.c
|
|
||||||
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <Ecore.h>
|
|
||||||
|
|
||||||
static void
|
|
||||||
do_lengthy_task(Ecore_Pipe *pipe)
|
|
||||||
{
|
|
||||||
int i, j;
|
|
||||||
char *buffer;
|
|
||||||
for (i = 0; i < 20; i++)
|
|
||||||
{
|
|
||||||
sleep(1);
|
|
||||||
buffer = malloc(sizeof(char) * i);
|
|
||||||
for (j = 0; j < i; j++)
|
|
||||||
buffer[j] = 'a' + j;
|
|
||||||
ecore_pipe_write(pipe, buffer, i);
|
|
||||||
free(buffer);
|
|
||||||
}
|
|
||||||
ecore_pipe_write(pipe, "close", 5);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
handler(void *data, void *buf, unsigned int len)
|
|
||||||
{
|
|
||||||
char *str = malloc(sizeof(char) * len + 1);
|
|
||||||
memcpy(str, buf, len);
|
|
||||||
str[len] = '\0';
|
|
||||||
printf("received %d bytes\n", len);
|
|
||||||
printf("content: %s\n", (const char *)str);
|
|
||||||
free(str);
|
|
||||||
if (len && !strncmp(buf, "close", len < 5 ? len : 5))
|
|
||||||
{
|
|
||||||
printf("close requested\n");
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
Ecore_Pipe *pipe;
|
|
||||||
pid_t child_pid;
|
|
||||||
|
|
||||||
ecore_init();
|
|
||||||
|
|
||||||
pipe = ecore_pipe_add(handler, NULL);
|
|
||||||
|
|
||||||
child_pid = fork();
|
|
||||||
if (!child_pid)
|
|
||||||
{
|
|
||||||
ecore_pipe_read_close(pipe);
|
|
||||||
do_lengthy_task(pipe);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ecore_pipe_write_close(pipe);
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
}
|
|
||||||
|
|
||||||
ecore_pipe_del(pipe);
|
|
||||||
ecore_shutdown();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,72 +0,0 @@
|
||||||
#include <Ecore.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
static double _initial_time = 0;
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_poller_print_cb(void *data)
|
|
||||||
{
|
|
||||||
char *str = data;
|
|
||||||
printf("Ecore Poller '%s' callback called after %0.3f seconds.\n",
|
|
||||||
str, ecore_time_get() - _initial_time);
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_poller_quit_cb(void *data)
|
|
||||||
{
|
|
||||||
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
double interval = 0.3; // tick each 0.3 seconds
|
|
||||||
Ecore_Poller *poller1, *poller2, *poller3;
|
|
||||||
char *str1 = "poller1";
|
|
||||||
char *str2 = "poller2";
|
|
||||||
char *str3 = "poller3";
|
|
||||||
|
|
||||||
if (!ecore_init())
|
|
||||||
{
|
|
||||||
printf("ERROR: Cannot init Ecore!\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
_initial_time = ecore_time_get();
|
|
||||||
|
|
||||||
ecore_poller_poll_interval_set(ECORE_POLLER_CORE, interval);
|
|
||||||
|
|
||||||
// poller1 = ecore_poller_add(ECORE_POLLER_CORE, 4, _poller_print_cb, str1);
|
|
||||||
// poller2 = ecore_poller_add(ECORE_POLLER_CORE, 8, _poller_print_cb, str2);
|
|
||||||
// poller3 = ecore_poller_add(ECORE_POLLER_CORE, 30, _poller_quit_cb, str3);
|
|
||||||
|
|
||||||
poller1 = eo_add_custom(ECORE_POLLER_CLASS, NULL,
|
|
||||||
ecore_poller_constructor(ECORE_POLLER_CORE, 4, _poller_print_cb, str1));
|
|
||||||
poller2 = eo_add_custom(ECORE_POLLER_CLASS, NULL,
|
|
||||||
ecore_poller_constructor(ECORE_POLLER_CORE, 8, _poller_print_cb, str2));
|
|
||||||
poller3 = eo_add_custom(ECORE_POLLER_CLASS, NULL,
|
|
||||||
ecore_poller_constructor(ECORE_POLLER_CORE, 20, _poller_quit_cb, str3));
|
|
||||||
|
|
||||||
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
printf("changing poller2 interval to 16\n");
|
|
||||||
|
|
||||||
// ecore_poller_poller_interval_set(poller2, 16);
|
|
||||||
eo_do(poller2, ecore_poller_interval_set(16, NULL));
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
eo_unref(poller1);
|
|
||||||
eo_unref(poller2);
|
|
||||||
eo_unref(poller3);
|
|
||||||
// ecore_poller_del(poller1);
|
|
||||||
// ecore_poller_del(poller2);
|
|
||||||
// ecore_poller_del(poller3);
|
|
||||||
|
|
||||||
ecore_shutdown();
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,63 +0,0 @@
|
||||||
#include <stdio.h>
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include <Ecore_Con.h>
|
|
||||||
|
|
||||||
/* Ecore_Con server example
|
|
||||||
* 2010 Mike Blumenkrantz
|
|
||||||
*/
|
|
||||||
|
|
||||||
static Ecore_Con_Server *svr;
|
|
||||||
static int add;
|
|
||||||
static int del;
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_add(void *data, int type, Ecore_Con_Event_Client_Add *ev)
|
|
||||||
{
|
|
||||||
++add;
|
|
||||||
// printf ("%s ", ecore_con_client_ip_get(ev->client));
|
|
||||||
printf("Client #%i!\n", add);
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_del(void *data, int type, Ecore_Con_Event_Client_Del *ev)
|
|
||||||
{
|
|
||||||
++del;
|
|
||||||
printf("Disconnected #%i!\n", del);
|
|
||||||
if (add == del)
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, const char *argv[])
|
|
||||||
{
|
|
||||||
ecore_init();
|
|
||||||
ecore_con_init();
|
|
||||||
ecore_app_args_set(argc, argv);
|
|
||||||
eina_log_domain_level_set("ecore_con", EINA_LOG_LEVEL_ERR);
|
|
||||||
eina_log_domain_level_set("eina", EINA_LOG_LEVEL_ERR);
|
|
||||||
|
|
||||||
/* to use a PEM certificate with TLS and SSL3, uncomment the lines below */
|
|
||||||
// if (!(svr = ecore_con_server_add(ECORE_CON_REMOTE_NODELAY | ECORE_CON_USE_MIXED | ECORE_CON_LOAD_CERT, "127.0.0.1", 8080, NULL)))
|
|
||||||
|
|
||||||
/* to use simple tcp with ssl/tls, use this line */
|
|
||||||
svr = ecore_con_server_add(ECORE_CON_REMOTE_NODELAY, "127.0.0.1", 8080, NULL);
|
|
||||||
if (!svr)
|
|
||||||
exit(1);
|
|
||||||
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_ADD, (Ecore_Event_Handler_Cb)_add, NULL);
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DEL, (Ecore_Event_Handler_Cb)_del, NULL);
|
|
||||||
|
|
||||||
/* start server */
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
if (add && del)
|
|
||||||
{
|
|
||||||
printf("Restarting server after %i connections\n", add);
|
|
||||||
add = del = 0;
|
|
||||||
ecore_con_server_del(svr);
|
|
||||||
ecore_app_restart();
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,395 +0,0 @@
|
||||||
/*
|
|
||||||
* gcc -o ecore_thread_example ecore_thread_example.c `pkg-config --cflags --libs ecore`
|
|
||||||
*/
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <dirent.h>
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include <Ecore_Getopt.h>
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
Ecore_Thread *thread_3;
|
|
||||||
int msgs_received;
|
|
||||||
int max_msgs;
|
|
||||||
Eina_Lock mutex;
|
|
||||||
Eina_Condition condition;
|
|
||||||
} App_Data;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
Eina_List *list;
|
|
||||||
} Thread_Data;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
char *name;
|
|
||||||
char *base;
|
|
||||||
Eina_Lock mutex;
|
|
||||||
} Feedback_Thread_Data;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
int all_done;
|
|
||||||
Eina_List *list;
|
|
||||||
} App_Msg;
|
|
||||||
|
|
||||||
static void
|
|
||||||
_local_data_free(void *data)
|
|
||||||
{
|
|
||||||
Thread_Data *td = data;
|
|
||||||
char *str;
|
|
||||||
|
|
||||||
EINA_LIST_FREE(td->list, str)
|
|
||||||
{
|
|
||||||
printf("Freeing string: %s\n", str);
|
|
||||||
free(str);
|
|
||||||
}
|
|
||||||
free(td);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_short_job(void *data, Ecore_Thread *th)
|
|
||||||
{
|
|
||||||
Thread_Data *td;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
td = ecore_thread_local_data_find(th, "data");
|
|
||||||
if (!td)
|
|
||||||
{
|
|
||||||
td = calloc(1, sizeof(Thread_Data));
|
|
||||||
if (!td)
|
|
||||||
{
|
|
||||||
ecore_thread_cancel(th);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ecore_thread_local_data_add(th, "data", td, _local_data_free,
|
|
||||||
EINA_FALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < 10; i++)
|
|
||||||
{
|
|
||||||
char buf[200];
|
|
||||||
|
|
||||||
if (ecore_thread_check(th))
|
|
||||||
{
|
|
||||||
ecore_thread_local_data_del(th, "data");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "Thread %p: String number %d", th, i);
|
|
||||||
td->list = eina_list_append(td->list, strdup(buf));
|
|
||||||
sleep(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_feedback_job(void *data, Ecore_Thread *th)
|
|
||||||
{
|
|
||||||
time_t t;
|
|
||||||
int i, count;
|
|
||||||
Feedback_Thread_Data *ftd = NULL;
|
|
||||||
DIR *dir;
|
|
||||||
App_Msg *msg;
|
|
||||||
|
|
||||||
count = (int)ecore_thread_global_data_find("count");
|
|
||||||
for (i = 0; i < count; i++)
|
|
||||||
{
|
|
||||||
char buf[32];
|
|
||||||
snprintf(buf, sizeof(buf), "data%d", i);
|
|
||||||
ftd = ecore_thread_global_data_find(buf);
|
|
||||||
if (!ftd)
|
|
||||||
continue;
|
|
||||||
if (eina_lock_take_try(&ftd->mutex))
|
|
||||||
break;
|
|
||||||
else
|
|
||||||
ftd = NULL;
|
|
||||||
}
|
|
||||||
if (!ftd)
|
|
||||||
return;
|
|
||||||
|
|
||||||
dir = opendir(ftd->base);
|
|
||||||
if (!dir)
|
|
||||||
goto the_end;
|
|
||||||
|
|
||||||
msg = calloc(1, sizeof(App_Msg));
|
|
||||||
|
|
||||||
t = time(NULL);
|
|
||||||
while (time(NULL) < t + 2)
|
|
||||||
{
|
|
||||||
struct dirent entry, *result;
|
|
||||||
|
|
||||||
if (readdir_r(dir, &entry, &result))
|
|
||||||
break;
|
|
||||||
if (!result)
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (strlen(result->d_name) >= 10)
|
|
||||||
msg->list = eina_list_append(msg->list,
|
|
||||||
strdup(result->d_name));
|
|
||||||
}
|
|
||||||
|
|
||||||
closedir(dir);
|
|
||||||
ecore_thread_feedback(th, msg);
|
|
||||||
|
|
||||||
the_end:
|
|
||||||
ecore_thread_global_data_del(ftd->name);
|
|
||||||
free(ftd->name);
|
|
||||||
free(ftd->base);
|
|
||||||
eina_lock_release(&ftd->mutex);
|
|
||||||
eina_lock_free(&ftd->mutex);
|
|
||||||
free(ftd);
|
|
||||||
ecore_thread_reschedule(th);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_out_of_pool_job(void *data, Ecore_Thread *th)
|
|
||||||
{
|
|
||||||
App_Data *ad = data;
|
|
||||||
App_Msg *msg;
|
|
||||||
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
int msgs;
|
|
||||||
eina_condition_wait(&ad->condition);
|
|
||||||
msgs = ad->msgs_received;
|
|
||||||
eina_lock_release(&ad->mutex);
|
|
||||||
if (msgs == ad->max_msgs)
|
|
||||||
{
|
|
||||||
msg = calloc(1, sizeof(App_Msg));
|
|
||||||
msg->all_done = 1;
|
|
||||||
ecore_thread_feedback(th, msg);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_print_status(void)
|
|
||||||
{
|
|
||||||
int active, pending_total, pending_feedback, pending_short, available;
|
|
||||||
|
|
||||||
active = ecore_thread_active_get();
|
|
||||||
pending_total = ecore_thread_pending_total_get();
|
|
||||||
pending_feedback = ecore_thread_pending_feedback_get();
|
|
||||||
pending_short = ecore_thread_pending_get();
|
|
||||||
available = ecore_thread_available_get();
|
|
||||||
|
|
||||||
printf("Status:\n\t* Active threads: %d\n"
|
|
||||||
"\t* Available threads: %d\n"
|
|
||||||
"\t* Pending short jobs: %d\n"
|
|
||||||
"\t* Pending feedback jobs: %d\n"
|
|
||||||
"\t* Pending total: %d\n", active, available, pending_short,
|
|
||||||
pending_feedback, pending_total);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_feedback_job_msg_cb(void *data, Ecore_Thread *th, void *msg_data)
|
|
||||||
{
|
|
||||||
App_Data *ad = data;
|
|
||||||
App_Msg *msg = msg_data;
|
|
||||||
char *str;
|
|
||||||
|
|
||||||
if (msg->all_done)
|
|
||||||
{
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
free(msg);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
_print_status();
|
|
||||||
|
|
||||||
if (!msg->list)
|
|
||||||
printf("Received an empty list from thread %p\n", th);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int i = 0;
|
|
||||||
printf("Received %d elements from threads %p (printing first 5):\n",
|
|
||||||
eina_list_count(msg->list), th);
|
|
||||||
EINA_LIST_FREE(msg->list, str)
|
|
||||||
{
|
|
||||||
if (i <= 5)
|
|
||||||
printf("\t%s\n", str);
|
|
||||||
free(str);
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
eina_lock_take(&ad->mutex);
|
|
||||||
ad->msgs_received++;
|
|
||||||
eina_condition_signal(&ad->condition);
|
|
||||||
eina_lock_release(&ad->mutex);
|
|
||||||
|
|
||||||
free(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_thread_end_cb(void *data, Ecore_Thread *th)
|
|
||||||
{
|
|
||||||
App_Data *ad = data;
|
|
||||||
|
|
||||||
printf("Normal termination for thread %p.\n", th);
|
|
||||||
if (th == ad->thread_3)
|
|
||||||
ad->thread_3 = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_thread_cancel_cb(void *data, Ecore_Thread *th)
|
|
||||||
{
|
|
||||||
App_Data *ad = data;
|
|
||||||
|
|
||||||
printf("Thread %p got cancelled.\n", th);
|
|
||||||
if (th == ad->thread_3)
|
|
||||||
ad->thread_3 = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_cancel_timer_cb(void *data)
|
|
||||||
{
|
|
||||||
App_Data *ad = data;
|
|
||||||
|
|
||||||
if (ad->thread_3 && !ecore_thread_check(ad->thread_3))
|
|
||||||
ecore_thread_cancel(ad->thread_3);
|
|
||||||
|
|
||||||
return EINA_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_status_timer_cb(void *data)
|
|
||||||
{
|
|
||||||
_print_status();
|
|
||||||
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const Ecore_Getopt optdesc = {
|
|
||||||
"ecore_thread_example",
|
|
||||||
NULL,
|
|
||||||
"0.0",
|
|
||||||
"(C) 2011 Enlightenment",
|
|
||||||
"Public domain?",
|
|
||||||
"Example program for Ecore_Thread",
|
|
||||||
0,
|
|
||||||
{
|
|
||||||
ECORE_GETOPT_STORE_INT('t', "threads", "Max number of threads to run"),
|
|
||||||
ECORE_GETOPT_STORE_INT('m', "msgs", "Max number of messages to receive"),
|
|
||||||
ECORE_GETOPT_APPEND_METAVAR('p', "path", "Add path for feedback job",
|
|
||||||
"STRING", ECORE_GETOPT_TYPE_STR),
|
|
||||||
ECORE_GETOPT_HELP('h', "help"),
|
|
||||||
ECORE_GETOPT_SENTINEL
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
int i, max_threads = 0, max_msgs = 0;
|
|
||||||
Eina_Bool opt_quit = EINA_FALSE;
|
|
||||||
Eina_List *path_list = NULL;
|
|
||||||
App_Data appdata;
|
|
||||||
Ecore_Getopt_Value values[] = {
|
|
||||||
ECORE_GETOPT_VALUE_INT(max_threads),
|
|
||||||
ECORE_GETOPT_VALUE_INT(max_msgs),
|
|
||||||
ECORE_GETOPT_VALUE_LIST(path_list),
|
|
||||||
ECORE_GETOPT_VALUE_BOOL(opt_quit),
|
|
||||||
ECORE_GETOPT_VALUE_NONE
|
|
||||||
};
|
|
||||||
|
|
||||||
ecore_init();
|
|
||||||
|
|
||||||
i = ecore_thread_max_get();
|
|
||||||
printf("Initial max threads: %d\n", i);
|
|
||||||
|
|
||||||
memset(&appdata, 0, sizeof(App_Data));
|
|
||||||
appdata.max_msgs = 1;
|
|
||||||
|
|
||||||
if (ecore_getopt_parse(&optdesc, values, argc, argv) < 0)
|
|
||||||
{
|
|
||||||
printf("Argument parsing failed\n");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (opt_quit)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (max_threads)
|
|
||||||
{
|
|
||||||
ecore_thread_max_set(max_threads);
|
|
||||||
printf("Max threads: %d\n", ecore_thread_max_get());
|
|
||||||
}
|
|
||||||
if (max_msgs)
|
|
||||||
appdata.max_msgs = max_msgs;
|
|
||||||
|
|
||||||
if (!path_list)
|
|
||||||
{
|
|
||||||
Feedback_Thread_Data *ftd;
|
|
||||||
ecore_thread_global_data_add("count", (void *)3, NULL, EINA_FALSE);
|
|
||||||
ftd = calloc(1, sizeof(Feedback_Thread_Data));
|
|
||||||
ftd->name = strdup("data0");
|
|
||||||
ftd->base = strdup("/usr/bin");
|
|
||||||
eina_lock_new(&ftd->mutex);
|
|
||||||
ecore_thread_global_data_add(ftd->name, ftd, NULL, EINA_TRUE);
|
|
||||||
ftd = calloc(1, sizeof(Feedback_Thread_Data));
|
|
||||||
ftd->name = strdup("data1");
|
|
||||||
ftd->base = strdup("/usr/lib");
|
|
||||||
eina_lock_new(&ftd->mutex);
|
|
||||||
ecore_thread_global_data_add(ftd->name, ftd, NULL, EINA_TRUE);
|
|
||||||
ftd = calloc(1, sizeof(Feedback_Thread_Data));
|
|
||||||
ftd->name = strdup("data2");
|
|
||||||
ftd->base = strdup("/usr/share");
|
|
||||||
eina_lock_new(&ftd->mutex);
|
|
||||||
ecore_thread_global_data_add(ftd->name, ftd, NULL, EINA_TRUE);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Feedback_Thread_Data *ftd;
|
|
||||||
char *str;
|
|
||||||
ecore_thread_global_data_add("count",
|
|
||||||
(void *)eina_list_count(path_list), NULL,
|
|
||||||
EINA_FALSE);
|
|
||||||
i = 0;
|
|
||||||
EINA_LIST_FREE(path_list, str)
|
|
||||||
{
|
|
||||||
char buf[32];
|
|
||||||
snprintf(buf, sizeof(buf), "data%d", i);
|
|
||||||
ftd = calloc(1, sizeof(Feedback_Thread_Data));
|
|
||||||
ftd->name = strdup(buf);
|
|
||||||
ftd->base = strdup(str);
|
|
||||||
eina_lock_new(&ftd->mutex);
|
|
||||||
ecore_thread_global_data_add(ftd->name, ftd, NULL, EINA_TRUE);
|
|
||||||
free(str);
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
eina_lock_new(&appdata.mutex);
|
|
||||||
eina_condition_new(&appdata.condition, &appdata.mutex);
|
|
||||||
|
|
||||||
ecore_thread_feedback_run(_out_of_pool_job, _feedback_job_msg_cb, NULL,
|
|
||||||
NULL, &appdata, EINA_TRUE);
|
|
||||||
|
|
||||||
ecore_thread_run(_short_job, _thread_end_cb, _thread_cancel_cb, &appdata);
|
|
||||||
ecore_thread_feedback_run(_feedback_job, _feedback_job_msg_cb,
|
|
||||||
_thread_end_cb, _thread_cancel_cb, &appdata,
|
|
||||||
EINA_FALSE);
|
|
||||||
appdata.thread_3 = ecore_thread_run(_short_job, _thread_end_cb,
|
|
||||||
_thread_cancel_cb, &appdata);
|
|
||||||
ecore_thread_feedback_run(_feedback_job, _feedback_job_msg_cb,
|
|
||||||
_thread_end_cb, _thread_cancel_cb, &appdata,
|
|
||||||
EINA_FALSE);
|
|
||||||
|
|
||||||
ecore_timer_add(1.0, _cancel_timer_cb, &appdata);
|
|
||||||
ecore_timer_add(2.0, _status_timer_cb, NULL);
|
|
||||||
|
|
||||||
_print_status();
|
|
||||||
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
eina_condition_free(&appdata.condition);
|
|
||||||
eina_lock_free(&appdata.mutex);
|
|
||||||
|
|
||||||
ecore_shutdown();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
#include <Ecore.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_timer_cb(void *data)
|
|
||||||
{
|
|
||||||
printf("ecore time: %0.3f\n", ecore_time_get());
|
|
||||||
printf("loop time: %0.3f\n", ecore_loop_time_get());
|
|
||||||
printf("unix time: %0.3f\n", ecore_time_unix_get());
|
|
||||||
printf("\nSleep for 1 second...\n\n");
|
|
||||||
sleep(1);
|
|
||||||
printf("ecore time: %0.3f\n", ecore_time_get());
|
|
||||||
printf("loop time: %0.3f\n", ecore_loop_time_get());
|
|
||||||
printf("unix time: %0.3f\n", ecore_time_unix_get());
|
|
||||||
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
|
|
||||||
return EINA_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
if (!ecore_init())
|
|
||||||
{
|
|
||||||
printf("ERROR: Cannot init Ecore!\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
ecore_timer_add(0.1, _timer_cb, NULL);
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
ecore_shutdown();
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,187 +0,0 @@
|
||||||
#include <Ecore.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#define TIMEOUT_1 1.0 // interval for timer1
|
|
||||||
#define TIMEOUT_2 3.0 // timer2 - delay timer1
|
|
||||||
#define TIMEOUT_3 8.2 // timer3 - pause timer1
|
|
||||||
#define TIMEOUT_4 11.0 // timer4 - resume timer1
|
|
||||||
#define TIMEOUT_5 14.0 // timer5 - change interval of timer1
|
|
||||||
#define TIMEOUT_6 18.0 // top timer1 and start timer7 and timer8 with changed precision
|
|
||||||
#define TIMEOUT_7 1.1 // interval for timer7
|
|
||||||
#define TIMEOUT_8 1.2 // interval for timer8
|
|
||||||
#define DELAY_1 3.0 // delay time for timer1 - used by timer2
|
|
||||||
#define INTERVAL1 2.0 // new interval for timer1 - used by timer5
|
|
||||||
|
|
||||||
static double _initial_time = 0;
|
|
||||||
|
|
||||||
struct context // helper struct to give some context to the callbacks
|
|
||||||
{
|
|
||||||
Ecore_Timer *timer1;
|
|
||||||
Ecore_Timer *timer2;
|
|
||||||
Ecore_Timer *timer3;
|
|
||||||
Ecore_Timer *timer4;
|
|
||||||
Ecore_Timer *timer5;
|
|
||||||
Ecore_Timer *timer6;
|
|
||||||
Ecore_Timer *timer7;
|
|
||||||
Ecore_Timer *timer8;
|
|
||||||
};
|
|
||||||
|
|
||||||
static double
|
|
||||||
_get_current_time(void)
|
|
||||||
{
|
|
||||||
return ecore_time_get() - _initial_time;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_timer1_cb(void *data)
|
|
||||||
{
|
|
||||||
printf("Timer1 expired after %0.3f seconds.\n", _get_current_time());
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_timer2_cb(void *data)
|
|
||||||
{
|
|
||||||
struct context *ctxt = data;
|
|
||||||
printf("Timer2 expired after %0.3f seconds. "
|
|
||||||
"Adding delay of %0.3f seconds to timer1.\n",
|
|
||||||
_get_current_time(), DELAY_1);
|
|
||||||
|
|
||||||
ecore_timer_delay(ctxt->timer1, DELAY_1);
|
|
||||||
|
|
||||||
ctxt->timer2 = NULL;
|
|
||||||
return ECORE_CALLBACK_CANCEL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_timer3_cb(void *data)
|
|
||||||
{
|
|
||||||
struct context *ctxt = data;
|
|
||||||
printf("Timer3 expired after %0.3f seconds. "
|
|
||||||
"Freezing timer1.\n", _get_current_time());
|
|
||||||
|
|
||||||
ecore_timer_freeze(ctxt->timer1);
|
|
||||||
|
|
||||||
ctxt->timer3 = NULL;
|
|
||||||
return ECORE_CALLBACK_CANCEL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_timer4_cb(void *data)
|
|
||||||
{
|
|
||||||
struct context *ctxt = data;
|
|
||||||
printf("Timer4 expired after %0.3f seconds. "
|
|
||||||
"Resuming timer1, which has %0.3f seconds left to expire.\n",
|
|
||||||
_get_current_time(), ecore_timer_pending_get(ctxt->timer1));
|
|
||||||
|
|
||||||
ecore_timer_thaw(ctxt->timer1);
|
|
||||||
|
|
||||||
ctxt->timer4 = NULL;
|
|
||||||
return ECORE_CALLBACK_CANCEL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_timer5_cb(void *data)
|
|
||||||
{
|
|
||||||
struct context *ctxt = data;
|
|
||||||
double interval = ecore_timer_interval_get(ctxt->timer1);
|
|
||||||
|
|
||||||
printf("Timer5 expired after %0.3f seconds. "
|
|
||||||
"Changing interval of timer1 from %0.3f to %0.3f seconds.\n",
|
|
||||||
_get_current_time(), interval, INTERVAL1);
|
|
||||||
|
|
||||||
ecore_timer_interval_set(ctxt->timer1, INTERVAL1);
|
|
||||||
|
|
||||||
ctxt->timer5 = NULL;
|
|
||||||
return ECORE_CALLBACK_CANCEL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_timer7_cb(void *data)
|
|
||||||
{
|
|
||||||
struct context *ctxt = data;
|
|
||||||
printf("Timer7 expired after %0.3f seconds.\n", _get_current_time());
|
|
||||||
|
|
||||||
ctxt->timer7 = NULL;
|
|
||||||
return ECORE_CALLBACK_CANCEL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_timer8_cb(void *data)
|
|
||||||
{
|
|
||||||
struct context *ctxt = data;
|
|
||||||
printf("Timer8 expired after %0.3f seconds.\n", _get_current_time());
|
|
||||||
|
|
||||||
ctxt->timer8 = NULL;
|
|
||||||
return ECORE_CALLBACK_CANCEL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_timer6_cb(void *data)
|
|
||||||
{
|
|
||||||
struct context *ctxt = data;
|
|
||||||
printf("Timer6 expired after %0.3f seconds.\n", _get_current_time());
|
|
||||||
|
|
||||||
printf("Stopping timer1.\n");
|
|
||||||
|
|
||||||
ecore_timer_del(ctxt->timer1);
|
|
||||||
ctxt->timer1 = NULL;
|
|
||||||
|
|
||||||
printf("Starting timer7 (%0.3fs) and timer8 (%0.3fs).\n",
|
|
||||||
TIMEOUT_7, TIMEOUT_8);
|
|
||||||
|
|
||||||
ctxt->timer7 = ecore_timer_add(TIMEOUT_7, _timer7_cb, ctxt);
|
|
||||||
ctxt->timer8 = ecore_timer_add(TIMEOUT_8, _timer8_cb, ctxt);
|
|
||||||
|
|
||||||
ecore_timer_precision_set(0.2);
|
|
||||||
|
|
||||||
ctxt->timer6 = NULL;
|
|
||||||
return ECORE_CALLBACK_CANCEL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
struct context ctxt = {0};
|
|
||||||
|
|
||||||
if (!ecore_init())
|
|
||||||
{
|
|
||||||
printf("ERROR: Cannot init Ecore!\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
_initial_time = ecore_time_get();
|
|
||||||
|
|
||||||
ctxt.timer1 = ecore_timer_add(TIMEOUT_1, _timer1_cb, &ctxt);
|
|
||||||
ctxt.timer2 = ecore_timer_add(TIMEOUT_2, _timer2_cb, &ctxt);
|
|
||||||
ctxt.timer3 = ecore_timer_add(TIMEOUT_3, _timer3_cb, &ctxt);
|
|
||||||
ctxt.timer4 = ecore_timer_add(TIMEOUT_4, _timer4_cb, &ctxt);
|
|
||||||
ctxt.timer5 = ecore_timer_add(TIMEOUT_5, _timer5_cb, &ctxt);
|
|
||||||
ctxt.timer6 = ecore_timer_add(TIMEOUT_6, _timer6_cb, &ctxt);
|
|
||||||
|
|
||||||
printf("start the main loop.\n");
|
|
||||||
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
if (ctxt.timer1)
|
|
||||||
ecore_timer_del(ctxt.timer1);
|
|
||||||
if (ctxt.timer2)
|
|
||||||
ecore_timer_del(ctxt.timer2);
|
|
||||||
if (ctxt.timer3)
|
|
||||||
ecore_timer_del(ctxt.timer3);
|
|
||||||
if (ctxt.timer4)
|
|
||||||
ecore_timer_del(ctxt.timer4);
|
|
||||||
if (ctxt.timer5)
|
|
||||||
ecore_timer_del(ctxt.timer5);
|
|
||||||
if (ctxt.timer6)
|
|
||||||
ecore_timer_del(ctxt.timer6);
|
|
||||||
if (ctxt.timer7)
|
|
||||||
ecore_timer_del(ctxt.timer7);
|
|
||||||
if (ctxt.timer8)
|
|
||||||
ecore_timer_del(ctxt.timer8);
|
|
||||||
|
|
||||||
ecore_shutdown();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,75 +0,0 @@
|
||||||
## Process this file with automake to produce Makefile.in
|
|
||||||
MAINTAINERCLEANFILES = Makefile.in
|
|
||||||
SUBDIRS = ecore
|
|
||||||
|
|
||||||
if BUILD_ECORE_INPUT
|
|
||||||
SUBDIRS += ecore_input
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_INPUT_EVAS
|
|
||||||
SUBDIRS += ecore_input_evas
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_FB
|
|
||||||
SUBDIRS += ecore_fb
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_DIRECTFB
|
|
||||||
SUBDIRS += ecore_directfb
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_CON
|
|
||||||
SUBDIRS += ecore_con
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_X
|
|
||||||
SUBDIRS += ecore_x
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_WIN32
|
|
||||||
SUBDIRS += ecore_win32
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_WINCE
|
|
||||||
SUBDIRS += ecore_wince
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_SDL
|
|
||||||
SUBDIRS += ecore_sdl
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_PSL1GHT
|
|
||||||
SUBDIRS += ecore_psl1ght
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_COCOA
|
|
||||||
SUBDIRS += ecore_cocoa
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_WAYLAND
|
|
||||||
SUBDIRS += ecore_wayland
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_IPC
|
|
||||||
SUBDIRS += ecore_ipc
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_EVAS
|
|
||||||
SUBDIRS += ecore_evas
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_CONFIG
|
|
||||||
SUBDIRS += ecore_config
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_FILE
|
|
||||||
SUBDIRS += ecore_file
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_IMF
|
|
||||||
SUBDIRS += ecore_imf
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_ECORE_IMF_EVAS
|
|
||||||
SUBDIRS += ecore_imf_evas
|
|
||||||
endif
|
|
|
@ -1,73 +0,0 @@
|
||||||
MAINTAINERCLEANFILES = Makefile.in
|
|
||||||
|
|
||||||
AM_CPPFLAGS = \
|
|
||||||
@GLIB_CFLAGS@ \
|
|
||||||
@EVIL_CFLAGS@ \
|
|
||||||
@EINA_CFLAGS@ \
|
|
||||||
-DEFL_ECORE_BUILD
|
|
||||||
|
|
||||||
AM_CFLAGS = @EFL_PTHREAD_CFLAGS@
|
|
||||||
|
|
||||||
lib_LTLIBRARIES = libecore.la
|
|
||||||
includes_HEADERS = \
|
|
||||||
Ecore.h \
|
|
||||||
Ecore_Getopt.h
|
|
||||||
includesdir = $(includedir)/ecore-@VMAJ@
|
|
||||||
|
|
||||||
libecore_la_SOURCES = \
|
|
||||||
ecore.c \
|
|
||||||
ecore_alloc.c \
|
|
||||||
ecore_anim.c \
|
|
||||||
ecore_app.c \
|
|
||||||
ecore_events.c \
|
|
||||||
ecore_getopt.c \
|
|
||||||
ecore_glib.c \
|
|
||||||
ecore_idle_enterer.c \
|
|
||||||
ecore_idle_exiter.c \
|
|
||||||
ecore_idler.c \
|
|
||||||
ecore_job.c \
|
|
||||||
ecore_main.c \
|
|
||||||
ecore_pipe.c \
|
|
||||||
ecore_poll.c \
|
|
||||||
ecore_time.c \
|
|
||||||
ecore_timer.c \
|
|
||||||
ecore_thread.c \
|
|
||||||
ecore_throttle.c \
|
|
||||||
ecore_private.h
|
|
||||||
|
|
||||||
if ECORE_HAVE_WIN32
|
|
||||||
|
|
||||||
libecore_la_SOURCES += ecore_exe_win32.c
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
if ECORE_HAVE_WINCE
|
|
||||||
|
|
||||||
libecore_la_SOURCES += ecore_exe_wince.c
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
if ECORE_HAVE_PS3
|
|
||||||
|
|
||||||
libecore_la_SOURCES += ecore_exe_ps3.c
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
if ECORE_HAVE_EXOTIC
|
|
||||||
|
|
||||||
libecore_la_SOURCES +=
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
libecore_la_SOURCES += ecore_signal.c ecore_exe.c
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
libecore_la_LIBADD = @EINA_LIBS@ @EVIL_LIBS@ @GLIB_LIBS@ @WIN32_LIBS@ @LTLIBINTL@ @EFL_PTHREAD_LIBS@ @rt_libs@ -lm
|
|
||||||
libecore_la_LDFLAGS = -no-undefined -version-info @version_info@ @release_info@ @EFL_PTHREAD_LIBS@
|
|
|
@ -1,29 +0,0 @@
|
||||||
MAINTAINERCLEANFILES = Makefile.in
|
|
||||||
|
|
||||||
AM_CPPFLAGS = \
|
|
||||||
-I$(top_srcdir)/src/lib/ecore \
|
|
||||||
-I$(top_srcdir)/src/lib/ecore_input \
|
|
||||||
-I$(top_builddir)/src/lib/ecore \
|
|
||||||
-I$(top_builddir)/src/lib/ecore_input \
|
|
||||||
@EVAS_CFLAGS@ \
|
|
||||||
@EINA_CFLAGS@
|
|
||||||
|
|
||||||
lib_LTLIBRARIES = libecore_cocoa.la
|
|
||||||
includes_HEADERS = \
|
|
||||||
Ecore_Cocoa.h \
|
|
||||||
Ecore_Cocoa_Keys.h
|
|
||||||
includesdir = $(includedir)/ecore-@VMAJ@
|
|
||||||
|
|
||||||
libecore_cocoa_la_SOURCES = \
|
|
||||||
ecore_cocoa.m \
|
|
||||||
ecore_cocoa_window.m
|
|
||||||
|
|
||||||
libecore_cocoa_la_LIBADD = \
|
|
||||||
$(top_builddir)/src/lib/ecore/libecore.la \
|
|
||||||
$(top_builddir)/src/lib/ecore_input/libecore_input.la \
|
|
||||||
@EVAS_LIBS@ \
|
|
||||||
@EINA_LIBS@
|
|
||||||
|
|
||||||
libecore_cocoa_la_LDFLAGS = @cocoa_ldflags@ -version-info @version_info@ @release_info@
|
|
||||||
|
|
||||||
EXTRA_DIST = ecore_cocoa_private.h
|
|
|
@ -1,55 +0,0 @@
|
||||||
MAINTAINERCLEANFILES = Makefile.in
|
|
||||||
|
|
||||||
AM_CPPFLAGS = \
|
|
||||||
-I$(top_builddir)/src/lib/ecore \
|
|
||||||
-I$(top_builddir)/src/lib/ecore_con \
|
|
||||||
-I$(top_srcdir)/src/lib/ecore \
|
|
||||||
-I$(top_srcdir)/src/lib/ecore_con \
|
|
||||||
-DEFL_ECORE_CON_BUILD \
|
|
||||||
@SSL_CFLAGS@ \
|
|
||||||
@CURL_CFLAGS@ \
|
|
||||||
@EVIL_CFLAGS@ \
|
|
||||||
@EINA_CFLAGS@ \
|
|
||||||
@TLS_CFLAGS@ \
|
|
||||||
@CARES_CFLAGS@ \
|
|
||||||
@EET_CFLAGS@
|
|
||||||
|
|
||||||
lib_LTLIBRARIES = libecore_con.la
|
|
||||||
includes_HEADERS = Ecore_Con.h
|
|
||||||
includesdir = $(includedir)/ecore-@VMAJ@
|
|
||||||
|
|
||||||
libecore_con_la_SOURCES = \
|
|
||||||
ecore_con.c \
|
|
||||||
ecore_con_socks.c \
|
|
||||||
ecore_con_ssl.c \
|
|
||||||
ecore_con_url.c \
|
|
||||||
ecore_con_alloc.c \
|
|
||||||
ecore_con_private.h
|
|
||||||
|
|
||||||
if ECORE_HAVE_WIN32
|
|
||||||
libecore_con_la_SOURCES += ecore_con_local_win32.c
|
|
||||||
else
|
|
||||||
libecore_con_la_SOURCES += ecore_con_local.c
|
|
||||||
endif
|
|
||||||
|
|
||||||
if HAVE_CARES
|
|
||||||
libecore_con_la_SOURCES += ecore_con_ares.c
|
|
||||||
else
|
|
||||||
if HAVE_IPV6
|
|
||||||
libecore_con_la_CFLAGS = @ECORE_CON_CFLAGS@
|
|
||||||
libecore_con_la_SOURCES += ecore_con_dns.c dns.c dns.h
|
|
||||||
else
|
|
||||||
libecore_con_la_SOURCES += ecore_con_info.c
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
if ECORE_HAVE_EET
|
|
||||||
libecore_con_la_SOURCES += ecore_con_eet.c
|
|
||||||
includes_HEADERS += Ecore_Con_Eet.h
|
|
||||||
endif
|
|
||||||
|
|
||||||
libecore_con_la_LIBADD = \
|
|
||||||
$(top_builddir)/src/lib/ecore/libecore.la \
|
|
||||||
@SSL_LIBS@ @CURL_LIBS@ @EINA_LIBS@ @EVIL_LIBS@ @TLS_LIBS@ @CARES_LIBS@ @WIN32_LIBS@ @EET_LIBS@
|
|
||||||
|
|
||||||
libecore_con_la_LDFLAGS = -no-undefined -version-info @version_info@ @release_info@
|
|
|
@ -1,312 +0,0 @@
|
||||||
#ifndef _ECORE_CONFIG_H
|
|
||||||
# define _ECORE_CONFIG_H
|
|
||||||
|
|
||||||
#ifdef EAPI
|
|
||||||
#undef EAPI
|
|
||||||
#endif
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# ifdef BUILDING_DLL
|
|
||||||
# define EAPI __declspec(dllexport)
|
|
||||||
# else
|
|
||||||
# define EAPI __declspec(dllimport)
|
|
||||||
# endif
|
|
||||||
#else
|
|
||||||
# ifdef __GNUC__
|
|
||||||
# if __GNUC__ >= 4
|
|
||||||
# define EAPI __attribute__ ((visibility("default")))
|
|
||||||
# else
|
|
||||||
# define EAPI
|
|
||||||
# endif
|
|
||||||
# else
|
|
||||||
# define EAPI
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @file
|
|
||||||
* @brief Provides the Enlightened Property Library.
|
|
||||||
*
|
|
||||||
* This file provies all headers and structs for use with Ecore_Config.
|
|
||||||
* Using individual header files should not be necessary.
|
|
||||||
*/
|
|
||||||
|
|
||||||
# define DIR_DELIMITER '/'
|
|
||||||
# define ECORE_CONFIG_FLOAT_PRECISION 1000
|
|
||||||
|
|
||||||
/* FIXME: this should only be included if evas is present */
|
|
||||||
# include <Evas.h>
|
|
||||||
|
|
||||||
# define ECORE_CONFIG_GLOBAL_ID "_system"
|
|
||||||
|
|
||||||
/* structures */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Valid configuration property types.
|
|
||||||
*/
|
|
||||||
typedef enum Ecore_Config_Type
|
|
||||||
{
|
|
||||||
ECORE_CONFIG_NIL = 0, /**< Property with no value. */
|
|
||||||
ECORE_CONFIG_INT = 1, /**< Integer property type. */
|
|
||||||
ECORE_CONFIG_FLT = 2, /**< Float property type. */
|
|
||||||
ECORE_CONFIG_STR = 3, /**< String property type. */
|
|
||||||
ECORE_CONFIG_RGB = 4, /**< Colour property type. */
|
|
||||||
ECORE_CONFIG_THM = 5, /**< Theme property type. */
|
|
||||||
ECORE_CONFIG_BLN = 6, /**< Boolean property type. */
|
|
||||||
ECORE_CONFIG_SCT = 7, /**< Structure property type */
|
|
||||||
} Ecore_Config_Type;
|
|
||||||
|
|
||||||
typedef enum Ecore_Config_Flag
|
|
||||||
{
|
|
||||||
ECORE_CONFIG_FLAG_NONE = 0,
|
|
||||||
ECORE_CONFIG_FLAG_BOUNDS = 1,
|
|
||||||
ECORE_CONFIG_FLAG_MODIFIED = 2,
|
|
||||||
ECORE_CONFIG_FLAG_SYSTEM = 4,
|
|
||||||
ECORE_CONFIG_FLAG_CMDLN = 8
|
|
||||||
} Ecore_Config_Flag;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Property change callback function prototype.
|
|
||||||
*/
|
|
||||||
typedef int (*Ecore_Config_Listener) (const char *key,
|
|
||||||
const Ecore_Config_Type type,
|
|
||||||
const int tag, void *data);
|
|
||||||
|
|
||||||
typedef struct Ecore_Config_Listener_List
|
|
||||||
{
|
|
||||||
Ecore_Config_Listener listener;
|
|
||||||
const char *name;
|
|
||||||
void *data;
|
|
||||||
int tag;
|
|
||||||
struct Ecore_Config_Listener_List *next;
|
|
||||||
} Ecore_Config_Listener_List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The actual property for storing a key-value pair.
|
|
||||||
*/
|
|
||||||
typedef struct Ecore_Config_Prop
|
|
||||||
{
|
|
||||||
char *key; /* Property key. */
|
|
||||||
char *description; /* Description set by ecore_config_descibe. */
|
|
||||||
char short_opt; /* short identifier on command line (-f) */
|
|
||||||
char *long_opt; /* long identifier on command line (--foo) */
|
|
||||||
char *ptr; /* Used as the value when the property is a string or theme. */
|
|
||||||
Ecore_Config_Type type; /* Property type. */
|
|
||||||
long val; /* Used as the value when the property is an integer, float or colour. */
|
|
||||||
long lo; /* Lower bound for the value when the property is an integer or float. */
|
|
||||||
long hi; /* Higher bound for the value when the property is an integer or float. */
|
|
||||||
long step; /* Increment for the value when the property is an integer or float. */
|
|
||||||
Ecore_Config_Flag flags; /// < Configuration flags.
|
|
||||||
Ecore_Config_Listener_List *listeners; /* List of change listeners. */
|
|
||||||
void *data; /// < Stores extra data for the property.
|
|
||||||
struct Ecore_Config_Prop *parent; /* if we are in a struct we have a parent to notify of changes etc */
|
|
||||||
struct Ecore_Config_Prop *next; /* Pointer to the next property in the list. */
|
|
||||||
} Ecore_Config_Prop;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* A container for a list of properties. Provided so that an
|
|
||||||
* application can use different set of properties at any time. This
|
|
||||||
* is useful for multiple window support.
|
|
||||||
*/
|
|
||||||
typedef struct Ecore_Config_Bundle
|
|
||||||
{
|
|
||||||
char *identifier; /* Identifier for this set of properties (window ID for example) */
|
|
||||||
char *owner; /* This is used to store the application name related to the bundle */
|
|
||||||
long serial; /* Unique identifier to identify bundle */
|
|
||||||
Ecore_Config_Prop *data; /* Pointer to root of property list */
|
|
||||||
void *user_data; /* App specific pointer to "other data" */
|
|
||||||
struct Ecore_Config_Bundle *next; /* Pointer to next bundle in this application */
|
|
||||||
} Ecore_Config_Bundle;
|
|
||||||
|
|
||||||
typedef struct Ecore_Config_Server
|
|
||||||
{
|
|
||||||
void *server;
|
|
||||||
char *name;
|
|
||||||
Ecore_Config_Bundle *bundles; /* data anchor */
|
|
||||||
struct Ecore_Config_Server *next;
|
|
||||||
} Ecore_Config_Server;
|
|
||||||
|
|
||||||
# ifdef __cplusplus
|
|
||||||
extern "C"
|
|
||||||
{
|
|
||||||
# endif
|
|
||||||
|
|
||||||
/* global ptrs to save passing them through the API */
|
|
||||||
EAPI extern Ecore_Config_Server *__ecore_config_server_global;
|
|
||||||
EAPI extern Ecore_Config_Server *__ecore_config_server_local;
|
|
||||||
EAPI extern Ecore_Config_Bundle *__ecore_config_bundle_local;
|
|
||||||
EAPI extern char *__ecore_config_app_name;
|
|
||||||
|
|
||||||
EAPI Ecore_Config_Prop *ecore_config_get(const char *key);
|
|
||||||
EAPI const char *ecore_config_type_get(const Ecore_Config_Prop *e);
|
|
||||||
EAPI int ecore_config_boolean_get(const char *key);
|
|
||||||
EAPI char *ecore_config_string_get(const char *key);
|
|
||||||
EAPI long ecore_config_int_get(const char *key);
|
|
||||||
EAPI int ecore_config_argb_get(const char *key, int *a, int *r,
|
|
||||||
int *g, int *b);
|
|
||||||
EAPI long ecore_config_argbint_get(const char *key);
|
|
||||||
EAPI char *ecore_config_argbstr_get(const char *key);
|
|
||||||
EAPI float ecore_config_float_get(const char *key);
|
|
||||||
EAPI char *ecore_config_theme_get(const char *key);
|
|
||||||
EAPI char *ecore_config_as_string_get(const char *key);
|
|
||||||
EAPI int ecore_config_bound(Ecore_Config_Prop *e);
|
|
||||||
EAPI int ecore_config_describe(const char *key, const char *desc);
|
|
||||||
EAPI int ecore_config_short_opt_set(const char *key,
|
|
||||||
char short_opt);
|
|
||||||
EAPI int ecore_config_long_opt_set(const char *key,
|
|
||||||
const char *long_opt);
|
|
||||||
EAPI int ecore_config_set(const char *key, const char *val);
|
|
||||||
EAPI int ecore_config_typed_set(const char *key, const void *val,
|
|
||||||
int type);
|
|
||||||
EAPI int ecore_config_boolean_set(const char *key, int val);
|
|
||||||
EAPI int ecore_config_string_set(const char *key, const char *val);
|
|
||||||
EAPI int ecore_config_int_set(const char *key, int val);
|
|
||||||
EAPI int ecore_config_argb_set(const char *key, int a, int r, int g, int b);
|
|
||||||
EAPI int ecore_config_argbint_set(const char *key, long argb);
|
|
||||||
EAPI int ecore_config_argbstr_set(const char *key, const char *val);
|
|
||||||
EAPI int ecore_config_float_set(const char *key, float val);
|
|
||||||
EAPI int ecore_config_theme_set(const char *key, const char *val);
|
|
||||||
EAPI int ecore_config_theme_preview_group_set(const char *key,
|
|
||||||
const char *group);
|
|
||||||
EAPI int ecore_config_as_string_set(const char *key, const char *val);
|
|
||||||
|
|
||||||
EAPI int ecore_config_default(const char *key, const char *val,
|
|
||||||
float lo, float hi, float step);
|
|
||||||
EAPI int ecore_config_typed_default(const char *key, const void *val,
|
|
||||||
int type);
|
|
||||||
EAPI int ecore_config_boolean_default(const char *key, int val);
|
|
||||||
EAPI int ecore_config_int_default(const char *key, int val);
|
|
||||||
EAPI int ecore_config_int_default_bound(const char *key, int val,
|
|
||||||
int lo, int hi, int step);
|
|
||||||
EAPI int ecore_config_string_default(const char *key, const char *val);
|
|
||||||
EAPI int ecore_config_float_default(const char *key, float val);
|
|
||||||
EAPI int ecore_config_float_default_bound(const char *key,
|
|
||||||
float val, float lo,
|
|
||||||
float hi, float step);
|
|
||||||
EAPI int ecore_config_argb_default(const char *key, int a, int r, int g, int b);
|
|
||||||
EAPI int ecore_config_argbint_default(const char *key, long argb);
|
|
||||||
EAPI int ecore_config_argbstr_default(const char *key, const char *val);
|
|
||||||
EAPI int ecore_config_theme_default(const char *key, const char *val);
|
|
||||||
EAPI int ecore_config_struct_default(const char *key);
|
|
||||||
EAPI int ecore_config_struct_int_add(const char *key, const char *name, int val);
|
|
||||||
EAPI int ecore_config_struct_float_add(const char *key, const char *name, float val);
|
|
||||||
EAPI int ecore_config_struct_create(const char *key);
|
|
||||||
EAPI int ecore_config_struct_string_add(const char *key, const char *name, const char* val);
|
|
||||||
EAPI int ecore_config_struct_theme_add(const char *key, const char *name, const char* val);
|
|
||||||
EAPI int ecore_config_struct_argb_add(const char *key, const char *name, int a, int r, int g, int b);
|
|
||||||
EAPI int ecore_config_struct_boolean_add(const char *key, const char *name, int val);
|
|
||||||
EAPI int ecore_config_struct_get(const char *key, void *data);
|
|
||||||
|
|
||||||
EAPI int ecore_config_listen(const char *name, const char *key,
|
|
||||||
Ecore_Config_Listener listener,
|
|
||||||
int tag, void *data);
|
|
||||||
EAPI int ecore_config_deaf(const char *name, const char *key,
|
|
||||||
Ecore_Config_Listener listener);
|
|
||||||
EAPI Ecore_Config_Prop *ecore_config_dst(Ecore_Config_Prop *e);
|
|
||||||
EAPI int ecore_config_type_guess(const char *key, const char *val);
|
|
||||||
|
|
||||||
EAPI Ecore_Config_Bundle *ecore_config_bundle_new(Ecore_Config_Server *srv,
|
|
||||||
const char *id);
|
|
||||||
EAPI Ecore_Config_Bundle *ecore_config_bundle_1st_get(Ecore_Config_Server *srv);
|
|
||||||
EAPI Ecore_Config_Bundle *ecore_config_bundle_next_get(Ecore_Config_Bundle *ns);
|
|
||||||
EAPI Ecore_Config_Bundle *ecore_config_bundle_by_serial_get(Ecore_Config_Server *srv,
|
|
||||||
long serial);
|
|
||||||
EAPI Ecore_Config_Bundle *ecore_config_bundle_by_label_get(Ecore_Config_Server *srv,
|
|
||||||
const char *label);
|
|
||||||
EAPI long ecore_config_bundle_serial_get(Ecore_Config_Bundle *ns);
|
|
||||||
EAPI char *ecore_config_bundle_label_get(Ecore_Config_Bundle *ns);
|
|
||||||
|
|
||||||
EAPI int ecore_config_init(const char *name);
|
|
||||||
EAPI int ecore_config_shutdown(void);
|
|
||||||
|
|
||||||
EAPI int ecore_config_system_init(void);
|
|
||||||
EAPI int ecore_config_system_shutdown(void);
|
|
||||||
|
|
||||||
EAPI int ecore_config_load(void);
|
|
||||||
EAPI int ecore_config_file_load(const char *file);
|
|
||||||
EAPI int ecore_config_save(void);
|
|
||||||
EAPI int ecore_config_file_save(const char *file);
|
|
||||||
|
|
||||||
/* error codes */
|
|
||||||
# define ECORE_CONFIG_ERR_NOTSUPP (-16)
|
|
||||||
# define ECORE_CONFIG_ERR_NOFILE (-15)
|
|
||||||
# define ECORE_CONFIG_ERR_META_DLFAIL (-14)
|
|
||||||
# define ECORE_CONFIG_ERR_META_FILE (-13)
|
|
||||||
# define ECORE_CONFIG_ERR_META_FORMAT (-12)
|
|
||||||
# define ECORE_CONFIG_ERR_MONMIS (-11)
|
|
||||||
# define ECORE_CONFIG_ERR_NOEXEC (-10)
|
|
||||||
# define ECORE_CONFIG_ERR_PARTIAL (-9)
|
|
||||||
# define ECORE_CONFIG_ERR_PATHEX (-8)
|
|
||||||
# define ECORE_CONFIG_ERR_TYPEMISMATCH (-7)
|
|
||||||
# define ECORE_CONFIG_ERR_MUTEX (-6)
|
|
||||||
# define ECORE_CONFIG_ERR_NOTFOUND (-5) /* Error indicating that the item searched for could not be found. */
|
|
||||||
# define ECORE_CONFIG_ERR_OOM (-4) /* Error given when the program runs out of memory. */
|
|
||||||
# define ECORE_CONFIG_ERR_IGNORED (-3) /* Error occurred, but was ignored. */
|
|
||||||
# define ECORE_CONFIG_ERR_NODATA (-2) /* Error given when necessary data is not provided. */
|
|
||||||
# define ECORE_CONFIG_ERR_FAIL (-1) /* Failure result. */
|
|
||||||
# define ECORE_CONFIG_ERR_SUCC (0) /* Success result. */
|
|
||||||
|
|
||||||
# define ECORE_CONFIG_PARSE_HELP (-2) /* Help was displayed */
|
|
||||||
# define ECORE_CONFIG_PARSE_EXIT (-1) /* An error occurred */
|
|
||||||
# define ECORE_CONFIG_PARSE_CONTINUE (0) /* Arguments parsed successfully */
|
|
||||||
|
|
||||||
/* convenience mathods in convenience.c */
|
|
||||||
/* FIXME: this should only be included if evas is present */
|
|
||||||
EAPI int ecore_config_evas_font_path_apply(Evas *evas);
|
|
||||||
EAPI char *ecore_config_theme_search_path_get(void);
|
|
||||||
EAPI int ecore_config_theme_search_path_append(const char *append);
|
|
||||||
|
|
||||||
EAPI char *ecore_config_theme_default_path_get(void);
|
|
||||||
EAPI char *ecore_config_theme_with_path_from_name_get(char *name);
|
|
||||||
EAPI char *ecore_config_theme_with_path_get(const char *key);
|
|
||||||
EAPI void ecore_config_args_display(void);
|
|
||||||
EAPI int ecore_config_args_parse(void);
|
|
||||||
EAPI void ecore_config_args_callback_str_add(char short_opt,
|
|
||||||
char *long_opt, char *desc,
|
|
||||||
void (*func)(char *val, void *data),
|
|
||||||
void *data);
|
|
||||||
EAPI void ecore_config_args_callback_noarg_add(char short_opt,
|
|
||||||
char *long_opt, char *desc,
|
|
||||||
void (*func)(char *val, void *data),
|
|
||||||
void *data);
|
|
||||||
EAPI void ecore_config_app_describe(char *description);
|
|
||||||
|
|
||||||
EAPI int ecore_config_create(const char *key, void *val,
|
|
||||||
char short_opt, char *long_opt,
|
|
||||||
char *desc);
|
|
||||||
EAPI int ecore_config_typed_create(const char *key, void *val,
|
|
||||||
int type, char short_opt,
|
|
||||||
char *long_opt, char *desc);
|
|
||||||
EAPI int ecore_config_boolean_create(const char *key, int val,
|
|
||||||
char short_opt, char *long_opt,
|
|
||||||
char *desc);
|
|
||||||
EAPI int ecore_config_int_create(const char *key, int val,
|
|
||||||
char short_opt, char *long_opt,
|
|
||||||
char *desc);
|
|
||||||
EAPI int ecore_config_int_create_bound(const char *key, int val,
|
|
||||||
int low, int high,
|
|
||||||
int step, char short_opt,
|
|
||||||
char *long_opt,
|
|
||||||
char *desc);
|
|
||||||
EAPI int ecore_config_string_create(const char *key, char *val,
|
|
||||||
char short_opt,
|
|
||||||
char *long_opt, char *desc);
|
|
||||||
EAPI int ecore_config_float_create(const char *key, float val,
|
|
||||||
char short_opt, char *long_opt,
|
|
||||||
char *desc);
|
|
||||||
EAPI int ecore_config_float_create_bound(const char *key,
|
|
||||||
float val, float low,
|
|
||||||
float high, float step,
|
|
||||||
char short_opt,
|
|
||||||
char *long_opt,
|
|
||||||
char *desc);
|
|
||||||
EAPI int ecore_config_argb_create(const char *key, char *val,
|
|
||||||
char short_opt, char *long_opt,
|
|
||||||
char *desc);
|
|
||||||
EAPI int ecore_config_theme_create(const char *key, char *val,
|
|
||||||
char short_opt, char *long_opt,
|
|
||||||
char *desc);
|
|
||||||
|
|
||||||
# ifdef __cplusplus
|
|
||||||
}
|
|
||||||
# endif
|
|
||||||
#endif
|
|
|
@ -1,62 +0,0 @@
|
||||||
MAINTAINERCLEANFILES = Makefile.in
|
|
||||||
|
|
||||||
AM_CPPFLAGS = \
|
|
||||||
-I$(top_srcdir)/src/lib/ecore \
|
|
||||||
-I$(top_srcdir)/src/lib/ecore_ipc \
|
|
||||||
-I$(top_srcdir)/ \
|
|
||||||
-I$(top_builddir)/src/lib/ecore \
|
|
||||||
-I$(top_builddir)/src/lib/ecore_ipc \
|
|
||||||
-I$(top_builddir)/ \
|
|
||||||
-DPACKAGE_BIN_DIR=\"$(bindir)\" \
|
|
||||||
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
|
|
||||||
-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
|
|
||||||
@EVAS_CFLAGS@ \
|
|
||||||
@EET_CFLAGS@ \
|
|
||||||
@EINA_CFLAGS@
|
|
||||||
|
|
||||||
CLEANFILES = $(DB)
|
|
||||||
|
|
||||||
#DB = system.db
|
|
||||||
#$(DB): Makefile
|
|
||||||
# edb_ed $(top_builddir)/src/lib/ecore_config/$(DB) add /e/theme/name str "winter"
|
|
||||||
# edb_ed $(top_builddir)/src/lib/ecore_config/$(DB) add /e/font/path str "$(pkgdatadir)/data/fonts"
|
|
||||||
# edb_ed $(top_builddir)/src/lib/ecore_config/$(DB) add /apps/web/browser str `which firefox 2>/dev/null || which phoenix 2>/dev/null || which mozilla 2>/dev/null || which opera 2>/dev/null || which konqueror 2>/dev/null || which epiphany 2>/dev/null`
|
|
||||||
# edb_ed $(top_builddir)/src/lib/ecore_config/$(DB) add /apps/web/email str `which thunderbird 2>/dev/null || which mozilla 2>/dev/null || which kmail 2>/dev/null || which sylpheed 2>/dev/null || which evolution 2>/dev/null`
|
|
||||||
|
|
||||||
lib_LTLIBRARIES = libecore_config.la
|
|
||||||
|
|
||||||
includes_HEADERS = Ecore_Config.h
|
|
||||||
includesdir = $(includedir)/ecore-@VMAJ@
|
|
||||||
|
|
||||||
libecore_config_la_LDFLAGS = -no-undefined -version-info @version_info@ @release_info@
|
|
||||||
|
|
||||||
#config_DATA = $(DB)
|
|
||||||
#configdir = $(pkgdatadir)
|
|
||||||
|
|
||||||
libecore_config_la_SOURCES = \
|
|
||||||
ecore_config.c \
|
|
||||||
ecore_config_util.c \
|
|
||||||
ecore_config_storage.c \
|
|
||||||
ecore_config_extra.c \
|
|
||||||
ecore_config_db.c
|
|
||||||
|
|
||||||
libecore_config_la_LIBADD = \
|
|
||||||
$(top_builddir)/src/lib/ecore/libecore.la \
|
|
||||||
@EET_LIBS@ \
|
|
||||||
@EINA_LIBS@ \
|
|
||||||
@EVAS_LIBS@
|
|
||||||
|
|
||||||
if BUILD_ECORE_IPC
|
|
||||||
|
|
||||||
libecore_config_la_SOURCES += \
|
|
||||||
ecore_config_ipc_main.c \
|
|
||||||
ecore_config_ipc_ecore.c
|
|
||||||
|
|
||||||
libecore_config_la_LIBADD += $(top_builddir)/src/lib/ecore_ipc/libecore_ipc.la
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
EXTRA_DIST = \
|
|
||||||
ecore_config_ipc.h \
|
|
||||||
ecore_config_private.h \
|
|
||||||
ecore_config_util.h
|
|
|
@ -1,296 +0,0 @@
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <limits.h>
|
|
||||||
|
|
||||||
#include <sys/param.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <locale.h>
|
|
||||||
|
|
||||||
#include <Eet.h>
|
|
||||||
|
|
||||||
#include "Ecore_Config.h"
|
|
||||||
#include "ecore_config_private.h"
|
|
||||||
#include "ecore_config_util.h"
|
|
||||||
|
|
||||||
struct _Ecore_Config_DB_File
|
|
||||||
{
|
|
||||||
Eet_File *ef;
|
|
||||||
};
|
|
||||||
|
|
||||||
Ecore_Config_DB_File *
|
|
||||||
_ecore_config_db_open_read(const char *file)
|
|
||||||
{
|
|
||||||
Eet_File *ef;
|
|
||||||
Ecore_Config_DB_File *db;
|
|
||||||
|
|
||||||
eet_init();
|
|
||||||
db = malloc(sizeof(Ecore_Config_DB_File));
|
|
||||||
if (!db) return NULL;
|
|
||||||
ef = eet_open((char*)file, EET_FILE_MODE_READ);
|
|
||||||
if (!ef)
|
|
||||||
{
|
|
||||||
free(db);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
db->ef = ef;
|
|
||||||
return db;
|
|
||||||
}
|
|
||||||
|
|
||||||
Ecore_Config_DB_File *
|
|
||||||
_ecore_config_db_open_write(const char *file)
|
|
||||||
{
|
|
||||||
Eet_File *ef;
|
|
||||||
Ecore_Config_DB_File *db;
|
|
||||||
|
|
||||||
eet_init();
|
|
||||||
db = malloc(sizeof(Ecore_Config_DB_File));
|
|
||||||
if (!db) return NULL;
|
|
||||||
ef = eet_open((char*)file, EET_FILE_MODE_WRITE);
|
|
||||||
if (!ef)
|
|
||||||
{
|
|
||||||
free(db);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
db->ef = ef;
|
|
||||||
return db;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
_ecore_config_db_close(Ecore_Config_DB_File *db)
|
|
||||||
{
|
|
||||||
eet_close(db->ef);
|
|
||||||
free(db);
|
|
||||||
eet_shutdown();
|
|
||||||
}
|
|
||||||
|
|
||||||
char **
|
|
||||||
_ecore_config_db_keys_get(Ecore_Config_DB_File *db, int *num_ret)
|
|
||||||
{
|
|
||||||
char **keys;
|
|
||||||
int key_count;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
keys = eet_list(db->ef, (char*)"*", &key_count);
|
|
||||||
if (!keys)
|
|
||||||
{
|
|
||||||
*num_ret = 0;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
/* make keys freeable - this is safe to do */
|
|
||||||
for (i = 0; i < key_count; i++) keys[i] = strdup(keys[i]);
|
|
||||||
*num_ret = key_count;
|
|
||||||
return keys;
|
|
||||||
}
|
|
||||||
|
|
||||||
Ecore_Config_Type
|
|
||||||
_ecore_config_db_key_type_get(Ecore_Config_DB_File *db, const char *key)
|
|
||||||
{
|
|
||||||
char *data;
|
|
||||||
int size;
|
|
||||||
|
|
||||||
data = eet_read(db->ef, (char*)key, &size);
|
|
||||||
if (data)
|
|
||||||
{
|
|
||||||
if (size <= 2)
|
|
||||||
{
|
|
||||||
free(data);
|
|
||||||
return ECORE_CONFIG_NIL;
|
|
||||||
}
|
|
||||||
if (data[size - 1] != 0)
|
|
||||||
{
|
|
||||||
free(data);
|
|
||||||
return ECORE_CONFIG_NIL;
|
|
||||||
}
|
|
||||||
return (Ecore_Config_Type) data[0];
|
|
||||||
}
|
|
||||||
return ECORE_CONFIG_NIL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
_ecore_config_db_read(Ecore_Config_DB_File *db, const char *key)
|
|
||||||
{
|
|
||||||
char *data, *value;
|
|
||||||
int size;
|
|
||||||
Ecore_Config_Type type;
|
|
||||||
|
|
||||||
data = eet_read(db->ef, (char*)key, &size);
|
|
||||||
if (data)
|
|
||||||
{
|
|
||||||
int l;
|
|
||||||
char *prev_locale;
|
|
||||||
|
|
||||||
if (size <= 2)
|
|
||||||
{
|
|
||||||
free(data);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if (data[size - 1] != 0)
|
|
||||||
{
|
|
||||||
free(data);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
/* "type" NIL 1242 NIL */
|
|
||||||
l = strlen(data);
|
|
||||||
if (l >= (size - 1))
|
|
||||||
{
|
|
||||||
free(data);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
type = data[0];
|
|
||||||
value = data + l + 1;
|
|
||||||
|
|
||||||
switch (type)
|
|
||||||
{
|
|
||||||
case ECORE_CONFIG_INT:
|
|
||||||
case ECORE_CONFIG_BLN:
|
|
||||||
{
|
|
||||||
int tmp;
|
|
||||||
prev_locale = setlocale(LC_NUMERIC, "C");
|
|
||||||
tmp = atoi(value);
|
|
||||||
if (prev_locale) setlocale(LC_NUMERIC, prev_locale);
|
|
||||||
|
|
||||||
ecore_config_typed_set(key, (void *)&tmp, type);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ECORE_CONFIG_FLT:
|
|
||||||
{
|
|
||||||
float tmp;
|
|
||||||
prev_locale = setlocale(LC_NUMERIC, "C");
|
|
||||||
tmp = atof(value);
|
|
||||||
if (prev_locale) setlocale(LC_NUMERIC, prev_locale);
|
|
||||||
|
|
||||||
ecore_config_typed_set(key, (void *)&tmp, type);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ECORE_CONFIG_RGB:
|
|
||||||
ecore_config_argbstr_set(key, value);
|
|
||||||
break;
|
|
||||||
case ECORE_CONFIG_STR:
|
|
||||||
case ECORE_CONFIG_THM:
|
|
||||||
ecore_config_typed_set(key, (void *)value, type);
|
|
||||||
break;
|
|
||||||
case ECORE_CONFIG_SCT:
|
|
||||||
INF("loading struct %s", key);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
WRN("Type %d not handled", type);
|
|
||||||
}
|
|
||||||
free(data);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
void *
|
|
||||||
_ecore_config_db_key_data_get(Ecore_Config_DB_File *db, const char *key, int *size_ret)
|
|
||||||
{
|
|
||||||
char *data;
|
|
||||||
int size;
|
|
||||||
|
|
||||||
data = eet_read(db->ef, (char*)key, &size);
|
|
||||||
if (data)
|
|
||||||
{
|
|
||||||
int l;
|
|
||||||
char *dat;
|
|
||||||
|
|
||||||
if (size <= 2)
|
|
||||||
{
|
|
||||||
free(data);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (data[size - 1] != 0)
|
|
||||||
{
|
|
||||||
free(data);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
* "type" NIL data_goes_here NIL *
|
|
||||||
l = strlen(data);
|
|
||||||
if (l >= (size - 1))
|
|
||||||
{
|
|
||||||
free(data);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
dat = malloc(size - (l + 2));
|
|
||||||
memcpy(dat, data + l + 1, size - (l + 2));
|
|
||||||
free(data);
|
|
||||||
*size_ret = size - (l + 2);
|
|
||||||
return dat;
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
void
|
|
||||||
_ecore_config_db_write(Ecore_Config_DB_File *db, Ecore_Config_Prop *e)
|
|
||||||
{
|
|
||||||
char *prev_locale= NULL;
|
|
||||||
char *val = NULL;
|
|
||||||
char *r = NULL;
|
|
||||||
int num;
|
|
||||||
|
|
||||||
prev_locale = setlocale(LC_NUMERIC, "C");
|
|
||||||
|
|
||||||
switch (e->type)
|
|
||||||
{
|
|
||||||
case ECORE_CONFIG_INT:
|
|
||||||
esprintf(&val, "%i", _ecore_config_int_get(e));
|
|
||||||
break;
|
|
||||||
case ECORE_CONFIG_BLN:
|
|
||||||
esprintf(&val, "%i", _ecore_config_boolean_get(e));
|
|
||||||
break;
|
|
||||||
case ECORE_CONFIG_FLT:
|
|
||||||
esprintf(&val, "%16.16f", _ecore_config_float_get(e));
|
|
||||||
break;
|
|
||||||
case ECORE_CONFIG_STR:
|
|
||||||
val = _ecore_config_string_get(e);
|
|
||||||
break;
|
|
||||||
case ECORE_CONFIG_THM:
|
|
||||||
val = _ecore_config_theme_get(e);
|
|
||||||
break;
|
|
||||||
case ECORE_CONFIG_RGB:
|
|
||||||
val = _ecore_config_argbstr_get(e);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
WRN("Type %d not handled", e->type);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (prev_locale)
|
|
||||||
{
|
|
||||||
setlocale(LC_NUMERIC, prev_locale);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(val)
|
|
||||||
{
|
|
||||||
num = esprintf(&r, "%c%c%s%c", (char) e->type, 0, val, 0);
|
|
||||||
if(num)
|
|
||||||
eet_write(db->ef, e->key, r, num, 1);
|
|
||||||
free(r);
|
|
||||||
}
|
|
||||||
|
|
||||||
free(val);
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
void
|
|
||||||
_ecore_config_db_key_data_set(Ecore_Config_DB_File *db, const char *key, void *data, int data_size)
|
|
||||||
{
|
|
||||||
char *buf;
|
|
||||||
int num;
|
|
||||||
|
|
||||||
num = 1 + 1 + data_size + 1;
|
|
||||||
buf = malloc(num);
|
|
||||||
if (!buf) return;
|
|
||||||
buf[0] = (char) ECORE_CONFIG_BIN;
|
|
||||||
buf[1] = 0;
|
|
||||||
memcpy(buf + 2, data, data_size);
|
|
||||||
buf[num - 1] = 0;
|
|
||||||
eet_write(db->ef, (char*)key, buf, num, 1);
|
|
||||||
free(buf);
|
|
||||||
}*/
|
|
|
@ -1,803 +0,0 @@
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
|
|
||||||
#include "Ecore_Config.h"
|
|
||||||
#include "Ecore.h"
|
|
||||||
#include "ecore_config_private.h"
|
|
||||||
typedef struct __Ecore_Config_Arg_Callback _Ecore_Config_Arg_Callback;
|
|
||||||
struct __Ecore_Config_Arg_Callback
|
|
||||||
{
|
|
||||||
char short_opt;
|
|
||||||
char *long_opt;
|
|
||||||
char *description;
|
|
||||||
void *data;
|
|
||||||
void (*func)(char *val, void *data);
|
|
||||||
Ecore_Config_Type type;
|
|
||||||
_Ecore_Config_Arg_Callback *next;
|
|
||||||
};
|
|
||||||
|
|
||||||
char *__ecore_config_app_description;
|
|
||||||
_Ecore_Config_Arg_Callback *_ecore_config_arg_callbacks;
|
|
||||||
|
|
||||||
/* shorthand prop setup code to make client apps a little smaller ;) */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new property, if it does not already exist, and sets its
|
|
||||||
* attributes to those given.
|
|
||||||
*
|
|
||||||
* The type of the property is guessed from the key and the value
|
|
||||||
* given.
|
|
||||||
*
|
|
||||||
* @param key The property key.
|
|
||||||
* @param val Pointer to default value of key.
|
|
||||||
* @param short_opt Short option used to set the property from command
|
|
||||||
* line.
|
|
||||||
* @param long_opt Long option used to set the property from command line.
|
|
||||||
* @param desc String description of property.
|
|
||||||
* @return @c ECORE_CONFIG_ERR_SUCC on success.
|
|
||||||
* @ingroup Ecore_Config_Create_Group
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
ecore_config_create(const char *key, void *val, char short_opt, char *long_opt,
|
|
||||||
char *desc)
|
|
||||||
{
|
|
||||||
int type = ecore_config_type_guess(key, val);
|
|
||||||
|
|
||||||
return ecore_config_typed_create(key, val, type, short_opt, long_opt, desc);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new property, if it does not already exist, and sets its
|
|
||||||
* attributes to those given.
|
|
||||||
* @param key The property key.
|
|
||||||
* @param val Pointer to default value of key.
|
|
||||||
* @param type Type of the property.
|
|
||||||
* @param short_opt Short option used to set the property from
|
|
||||||
* command line.
|
|
||||||
* @param long_opt Long option used to set the property from command line.
|
|
||||||
* @param desc String description of property.
|
|
||||||
* @return @c ECORE_CONFIG_ERR_SUCC on success.
|
|
||||||
* @ingroup Ecore_Config_Create_Group
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
ecore_config_typed_create(const char *key, void *val, int type, char short_opt,
|
|
||||||
char *long_opt, char *desc)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
if ((ret =
|
|
||||||
ecore_config_typed_default(key, val, type)) != ECORE_CONFIG_ERR_SUCC)
|
|
||||||
return ret;
|
|
||||||
if ((ret =
|
|
||||||
ecore_config_short_opt_set(key, short_opt)) != ECORE_CONFIG_ERR_SUCC)
|
|
||||||
return ret;
|
|
||||||
if ((ret =
|
|
||||||
ecore_config_long_opt_set(key, long_opt)) != ECORE_CONFIG_ERR_SUCC)
|
|
||||||
return ret;
|
|
||||||
ret = ecore_config_describe(key, desc);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new boolean property, if it does not already exist, and sets its
|
|
||||||
* attributes to those given.
|
|
||||||
* @param key The property key.
|
|
||||||
* @param val Default boolean value of key.
|
|
||||||
* @param short_opt Short option used to set the property from command
|
|
||||||
* line.
|
|
||||||
* @param long_opt Long option used to set the property from command line.
|
|
||||||
* @param desc String description of property.
|
|
||||||
* @return @c ECORE_CONFIG_ERR_SUCC on success.
|
|
||||||
* @ingroup Ecore_Config_Create_Group
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
ecore_config_boolean_create(const char *key, int val, char short_opt,
|
|
||||||
char *long_opt, char *desc)
|
|
||||||
{
|
|
||||||
return
|
|
||||||
ecore_config_typed_create(key, (void *)&val, ECORE_CONFIG_BLN, short_opt, long_opt,
|
|
||||||
desc);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new integer property, if it does not already exist, and sets its
|
|
||||||
* attributes to those given.
|
|
||||||
* @param key The property key.
|
|
||||||
* @param val Default integer value of key.
|
|
||||||
* @param short_opt Short option used to set the property from command
|
|
||||||
* line.
|
|
||||||
* @param long_opt Long option used to set the property from command line.
|
|
||||||
* @param desc String description of property.
|
|
||||||
* @return @c ECORE_CONFIG_ERR_SUCC on success.
|
|
||||||
* @ingroup Ecore_Config_Create_Group
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
ecore_config_int_create(const char *key, int val, char short_opt,
|
|
||||||
char *long_opt, char *desc)
|
|
||||||
{
|
|
||||||
return
|
|
||||||
ecore_config_typed_create(key, (void *)&val, ECORE_CONFIG_INT, short_opt, long_opt,
|
|
||||||
desc);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new integer property, if it does not already exist, and sets its
|
|
||||||
* attributes to those given.
|
|
||||||
* @param key The property key.
|
|
||||||
* @param val Default integer value of key.
|
|
||||||
* @param low Lowest valid integer value for the property.
|
|
||||||
* @param high Highest valid integer value for the property.
|
|
||||||
* @param step Increment value for the property.
|
|
||||||
* @param short_opt Short option used to set the property from command
|
|
||||||
* line.
|
|
||||||
* @param long_opt Long option used to set the property from command line.
|
|
||||||
* @param desc String description of property.
|
|
||||||
* @return @c ECORE_CONFIG_ERR_SUCC on success.
|
|
||||||
* @ingroup Ecore_Config_Create_Group
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
ecore_config_int_create_bound(const char *key, int val, int low, int high,
|
|
||||||
int step, char short_opt, char *long_opt,
|
|
||||||
char *desc)
|
|
||||||
{
|
|
||||||
Ecore_Config_Prop *e;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
ret =
|
|
||||||
ecore_config_typed_create(key, (void *)&val, ECORE_CONFIG_INT, short_opt, long_opt,
|
|
||||||
desc);
|
|
||||||
if (ret != ECORE_CONFIG_ERR_SUCC)
|
|
||||||
return ret;
|
|
||||||
e = ecore_config_get(key);
|
|
||||||
if (e)
|
|
||||||
{
|
|
||||||
e->step = step;
|
|
||||||
e->flags |= ECORE_CONFIG_FLAG_BOUNDS;
|
|
||||||
e->lo = low;
|
|
||||||
e->hi = high;
|
|
||||||
ecore_config_bound(e);
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new string property, if it does not already exist, and sets its
|
|
||||||
* attributes to those given.
|
|
||||||
* @param key The property key.
|
|
||||||
* @param val Default value of key.
|
|
||||||
* @param short_opt Short option used to set the property from command
|
|
||||||
* line.
|
|
||||||
* @param long_opt Long option used to set the property from command line.
|
|
||||||
* @param desc String description of property.
|
|
||||||
* @return @c ECORE_CONFIG_ERR_SUCC on success.
|
|
||||||
* @ingroup Ecore_Config_Create_Group
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
ecore_config_string_create(const char *key, char *val, char short_opt,
|
|
||||||
char *long_opt, char *desc)
|
|
||||||
{
|
|
||||||
return
|
|
||||||
ecore_config_typed_create(key, (void *)val, ECORE_CONFIG_STR, short_opt, long_opt,
|
|
||||||
desc);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new float property, if it does not already exist, and sets its
|
|
||||||
* attributes to those given.
|
|
||||||
* @param key The property key.
|
|
||||||
* @param val Default float value of key.
|
|
||||||
* @param short_opt Short option used to set the property from command
|
|
||||||
* line.
|
|
||||||
* @param long_opt Long option used to set the property from command line.
|
|
||||||
* @param desc String description of property.
|
|
||||||
* @return @c ECORE_CONFIG_ERR_SUCC on success.
|
|
||||||
* @ingroup Ecore_Config_Create_Group
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
ecore_config_float_create(const char *key, float val, char short_opt,
|
|
||||||
char *long_opt, char *desc)
|
|
||||||
{
|
|
||||||
return
|
|
||||||
ecore_config_typed_create(key, (void *)&val, ECORE_CONFIG_FLT, short_opt, long_opt,
|
|
||||||
desc);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new float property, if it does not already exist, and sets its
|
|
||||||
* attributes to those given.
|
|
||||||
* @param key The property key.
|
|
||||||
* @param val Default float value of key.
|
|
||||||
* @param low Lowest valid float value for the property.
|
|
||||||
* @param high Highest valid float value for the property.
|
|
||||||
* @param step Increment value for the property.
|
|
||||||
* @param short_opt Short option used to set the property from command
|
|
||||||
* line.
|
|
||||||
* @param long_opt Long option used to set the property from command line.
|
|
||||||
* @param desc String description of property.
|
|
||||||
* @return @c ECORE_CONFIG_ERR_SUCC on success.
|
|
||||||
* @ingroup Ecore_Config_Create_Group
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
ecore_config_float_create_bound(const char *key, float val, float low,
|
|
||||||
float high, float step, char short_opt,
|
|
||||||
char *long_opt, char *desc)
|
|
||||||
{
|
|
||||||
Ecore_Config_Prop *e;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
ret =
|
|
||||||
ecore_config_typed_create(key, (void *)&val, ECORE_CONFIG_FLT, short_opt, long_opt,
|
|
||||||
desc);
|
|
||||||
e = ecore_config_get(key);
|
|
||||||
if (e)
|
|
||||||
{
|
|
||||||
e->step = (int)(step * ECORE_CONFIG_FLOAT_PRECISION);
|
|
||||||
e->flags |= ECORE_CONFIG_FLAG_BOUNDS;
|
|
||||||
e->lo = (int)(low * ECORE_CONFIG_FLOAT_PRECISION);
|
|
||||||
e->hi = (int)(high * ECORE_CONFIG_FLOAT_PRECISION);
|
|
||||||
ecore_config_bound(e);
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new color property, if it does not already exist, and sets its
|
|
||||||
* attributes to those given.
|
|
||||||
* @param key The property key.
|
|
||||||
* @param val Default color value of key, as a hexadecimal string.
|
|
||||||
* @param short_opt Short option used to set the property from command
|
|
||||||
* line.
|
|
||||||
* @param long_opt Long option used to set the property from command line.
|
|
||||||
* @param desc String description of property.
|
|
||||||
* @return @c ECORE_CONFIG_ERR_SUCC on success.
|
|
||||||
* @ingroup Ecore_Config_Create_Group
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
ecore_config_argb_create(const char *key, char *val, char short_opt,
|
|
||||||
char *long_opt, char *desc)
|
|
||||||
{
|
|
||||||
return
|
|
||||||
ecore_config_typed_create(key, (void *)val, ECORE_CONFIG_RGB, short_opt, long_opt,
|
|
||||||
desc);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new theme property, if it does not already exist, and sets its
|
|
||||||
* attributes to those given.
|
|
||||||
* @param key The property key.
|
|
||||||
* @param val Default theme name for the property.
|
|
||||||
* @param short_opt Short option used to set the property from command
|
|
||||||
* line.
|
|
||||||
* @param long_opt Long option used to set the property from command line.
|
|
||||||
* @param desc String description of property.
|
|
||||||
* @return @c ECORE_CONFIG_ERR_SUCC on success.
|
|
||||||
* @ingroup Ecore_Config_Create_Group
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
ecore_config_theme_create(const char *key, char *val, char short_opt,
|
|
||||||
char *long_opt, char *desc)
|
|
||||||
{
|
|
||||||
return
|
|
||||||
ecore_config_typed_create(key, (void *)val, ECORE_CONFIG_THM, short_opt, long_opt,
|
|
||||||
desc);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* this should only be built if evas is present */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Calls evas_font_path_append on @p evas for each of the font names stored
|
|
||||||
* in the property "/e/font/path".
|
|
||||||
* @param evas Evas object to append the font names to.
|
|
||||||
* @return @c ECORE_CONFIG_ERR_SUCC on success. @c ECORE_CONFIG_ERR_NODATA
|
|
||||||
* is returned if the property has not been set.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
ecore_config_evas_font_path_apply(Evas * evas)
|
|
||||||
{
|
|
||||||
char *font_path, *font_path_tmp, *ptr, *end;
|
|
||||||
|
|
||||||
font_path = ecore_config_string_get("/e/font/path");
|
|
||||||
|
|
||||||
if (!font_path)
|
|
||||||
return ECORE_CONFIG_ERR_NODATA;
|
|
||||||
ptr = font_path;
|
|
||||||
end = font_path + strlen(font_path);
|
|
||||||
font_path_tmp = font_path;
|
|
||||||
while (ptr && ptr < end)
|
|
||||||
{
|
|
||||||
while (*ptr != '|' && ptr < end)
|
|
||||||
ptr++;
|
|
||||||
if (ptr < end)
|
|
||||||
*ptr = '\0';
|
|
||||||
|
|
||||||
evas_font_path_append(evas, font_path_tmp);
|
|
||||||
ptr++;
|
|
||||||
font_path_tmp = ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
free(font_path);
|
|
||||||
|
|
||||||
return ECORE_CONFIG_ERR_SUCC;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieves the default theme search path.
|
|
||||||
*
|
|
||||||
* @return The default theme search path.
|
|
||||||
*/
|
|
||||||
char *
|
|
||||||
ecore_config_theme_default_path_get(void)
|
|
||||||
{
|
|
||||||
char *path, *home;
|
|
||||||
int len;
|
|
||||||
|
|
||||||
home = getenv("HOME");
|
|
||||||
len = strlen(PACKAGE_DATA_DIR "/../") + strlen(__ecore_config_app_name) +
|
|
||||||
strlen("/themes/") + 1;
|
|
||||||
if (home)
|
|
||||||
len += strlen(home) + strlen("/.e/apps/") +
|
|
||||||
strlen(__ecore_config_app_name) +
|
|
||||||
strlen("/themes/|"); /* no \0, as that is above */
|
|
||||||
|
|
||||||
if (!(path = malloc(len)))
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
*path = '\0';
|
|
||||||
if (home)
|
|
||||||
{
|
|
||||||
strcat(path, home);
|
|
||||||
strcat(path, "/.e/apps/");
|
|
||||||
strcat(path, __ecore_config_app_name);
|
|
||||||
strcat(path, "/themes/|");
|
|
||||||
}
|
|
||||||
strcat(path, PACKAGE_DATA_DIR "/../");
|
|
||||||
strcat(path, __ecore_config_app_name);
|
|
||||||
strcat(path, "/themes/");
|
|
||||||
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieves the search path used to find themes.
|
|
||||||
*
|
|
||||||
* The search path is stored in the property "/e/themes/search_path". If
|
|
||||||
* the property has not been set, the default path used is
|
|
||||||
* "/usr/local/share/<app_name>/themes|~/.e/apps/<app_name>/themes".
|
|
||||||
* See @ref ecore_config_theme_default_path_get for more information about
|
|
||||||
* the default path.
|
|
||||||
*
|
|
||||||
* @return The search path. @c NULL is returned if there is no memory left.
|
|
||||||
*/
|
|
||||||
char *
|
|
||||||
ecore_config_theme_search_path_get(void)
|
|
||||||
{
|
|
||||||
char *search_path;
|
|
||||||
search_path = ecore_config_string_get("/e/themes/search_path");
|
|
||||||
|
|
||||||
/* this should no longer be the case, as it is defaulted in init */
|
|
||||||
if (!search_path)
|
|
||||||
{
|
|
||||||
search_path = ecore_config_theme_default_path_get();
|
|
||||||
if (search_path)
|
|
||||||
{
|
|
||||||
ecore_config_string_default("/e/themes/search_path", search_path);
|
|
||||||
free(search_path);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return search_path;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds the given path to the search path used to find themes.
|
|
||||||
*
|
|
||||||
* If the search path is successfully, the new search path will be saved
|
|
||||||
* into the property "/e/themes/search_path". Therefore, this function
|
|
||||||
* should be called @b after @ref ecore_config_load to allow a user to
|
|
||||||
* override the default search path.
|
|
||||||
*
|
|
||||||
* @param path The given
|
|
||||||
* @return @c ECORE_CONFIG_ERR_SUCC on success. @c ECORE_CONFIG_ERR_FAIL
|
|
||||||
* will be returned if @p path already exists in the search path.
|
|
||||||
* @c ECORE_CONFIG_ERR_FAIL is returned if @p path is @c NULL.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
ecore_config_theme_search_path_append(const char *path)
|
|
||||||
{
|
|
||||||
char *search_path, *loc, *new_search_path;
|
|
||||||
int len, search_len;
|
|
||||||
Ecore_Config_Prop *prop;
|
|
||||||
|
|
||||||
if (!path)
|
|
||||||
return ECORE_CONFIG_ERR_NODATA;
|
|
||||||
search_path = ecore_config_theme_search_path_get();
|
|
||||||
|
|
||||||
loc = strstr(search_path, path);
|
|
||||||
len = strlen(path);
|
|
||||||
search_len = strlen(search_path);
|
|
||||||
|
|
||||||
if (!loc || (loc != search_path && *(loc - 1) != '|') ||
|
|
||||||
(loc != (search_path + search_len - len) && *(loc + len - 1) != '|'))
|
|
||||||
{
|
|
||||||
new_search_path = malloc(search_len + len + 2); /* 2 = \0 + | */
|
|
||||||
strcpy(new_search_path, search_path);
|
|
||||||
strncat(new_search_path, "|", 1);
|
|
||||||
strncat(new_search_path, path, len);
|
|
||||||
|
|
||||||
ecore_config_string_set("/e/themes/search_path", new_search_path);
|
|
||||||
prop = ecore_config_get("/e/themes/search_path");
|
|
||||||
if (prop)
|
|
||||||
prop->flags &= ~ECORE_CONFIG_FLAG_MODIFIED;
|
|
||||||
|
|
||||||
free(new_search_path);
|
|
||||||
|
|
||||||
return ECORE_CONFIG_ERR_SUCC;
|
|
||||||
}
|
|
||||||
return ECORE_CONFIG_ERR_FAIL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieve a theme file's full path.
|
|
||||||
*
|
|
||||||
* The search path for theme files is given by @ref
|
|
||||||
* ecore_config_theme_search_path_get .
|
|
||||||
*
|
|
||||||
* @param name The name of the theme.
|
|
||||||
* @return A full path to the theme on success. @c NULL will be returned
|
|
||||||
* if @p name is @c NULL or no theme matching the given name could
|
|
||||||
* be found.
|
|
||||||
*/
|
|
||||||
char *
|
|
||||||
ecore_config_theme_with_path_from_name_get(char *name)
|
|
||||||
{
|
|
||||||
char *search_path, *search_path_tmp, *ptr, *end, *file;
|
|
||||||
struct stat st;
|
|
||||||
|
|
||||||
if (!name)
|
|
||||||
return NULL; /* no theme specified (nor a default) */
|
|
||||||
|
|
||||||
search_path = ecore_config_theme_search_path_get();
|
|
||||||
ptr = search_path;
|
|
||||||
end = search_path + strlen(search_path);
|
|
||||||
search_path_tmp = search_path;
|
|
||||||
while (ptr && ptr < end)
|
|
||||||
{
|
|
||||||
while (*ptr != '|' && ptr < end)
|
|
||||||
ptr++;
|
|
||||||
if (ptr < end)
|
|
||||||
*ptr = '\0';
|
|
||||||
|
|
||||||
file = malloc(strlen(search_path_tmp) + strlen(name) + 6);
|
|
||||||
/* 6 = / + .edj + \0 */
|
|
||||||
|
|
||||||
snprintf(file, strlen(search_path_tmp) + strlen(name) + 6,
|
|
||||||
"%s/%s.edj", search_path_tmp, name);
|
|
||||||
|
|
||||||
if (stat(file, &st) == 0)
|
|
||||||
{
|
|
||||||
free(search_path);
|
|
||||||
return file;
|
|
||||||
}
|
|
||||||
free(file);
|
|
||||||
ptr++;
|
|
||||||
search_path_tmp = ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
free(search_path);
|
|
||||||
|
|
||||||
return NULL; /* we could not find the theme with that name in search path */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieves the full path to the theme file of the theme stored in the
|
|
||||||
* given property.
|
|
||||||
*
|
|
||||||
* The search path for themes is given by @ref
|
|
||||||
* ecore_config_theme_search_path_get .
|
|
||||||
*
|
|
||||||
* @param key The given property.
|
|
||||||
* @return A full path to the theme on success, or @c NULL on failure.
|
|
||||||
* This function will fail if no key is specified or not theme
|
|
||||||
* matching that given by the property @p key could be found.
|
|
||||||
*/
|
|
||||||
char *
|
|
||||||
ecore_config_theme_with_path_get(const char *key)
|
|
||||||
{
|
|
||||||
return
|
|
||||||
ecore_config_theme_with_path_from_name_get(ecore_config_theme_get(key));
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char *_ecore_config_short_types[] =
|
|
||||||
{ " ", "<int> ", "<flt> ", "<str> ", "<rgb> ", "<str> ", "<bool>" };
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prints the property list of the local configuration bundle to output.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
ecore_config_args_display(void)
|
|
||||||
{
|
|
||||||
Ecore_Config_Prop *props;
|
|
||||||
_Ecore_Config_Arg_Callback *callbacks;
|
|
||||||
|
|
||||||
if (__ecore_config_app_description)
|
|
||||||
ERR("%s\n\n", __ecore_config_app_description);
|
|
||||||
ERR("Supported Options:");
|
|
||||||
ERR(" -h, --help\t Print this text");
|
|
||||||
if (!__ecore_config_bundle_local)
|
|
||||||
return;
|
|
||||||
props = __ecore_config_bundle_local->data;
|
|
||||||
while (props)
|
|
||||||
{
|
|
||||||
/* if it is a system prop, or cannot be set on command line hide it */
|
|
||||||
if (props->flags & ECORE_CONFIG_FLAG_SYSTEM || (!props->short_opt && !props->long_opt))
|
|
||||||
{
|
|
||||||
props = props->next;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
INF(" %c%c%c --%s\t%s %s", props->short_opt ? '-' : ' ',
|
|
||||||
props->short_opt ? props->short_opt : ' ',
|
|
||||||
props->short_opt ? ',' : ' ',
|
|
||||||
props->long_opt ? props->long_opt : props->key,
|
|
||||||
_ecore_config_short_types[props->type],
|
|
||||||
props->description ? props->description :
|
|
||||||
"(no description available)");
|
|
||||||
|
|
||||||
props = props->next;
|
|
||||||
}
|
|
||||||
callbacks = _ecore_config_arg_callbacks;
|
|
||||||
while (callbacks)
|
|
||||||
{
|
|
||||||
INF(" %c%c%c --%s\t%s %s", callbacks->short_opt ? '-' : ' ',
|
|
||||||
callbacks->short_opt ? callbacks->short_opt : ' ',
|
|
||||||
callbacks->short_opt ? ',' : ' ',
|
|
||||||
callbacks->long_opt ? callbacks->long_opt : "",
|
|
||||||
_ecore_config_short_types[callbacks->type],
|
|
||||||
callbacks->description ? callbacks->description :
|
|
||||||
"(no description available)");
|
|
||||||
|
|
||||||
callbacks = callbacks->next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
ecore_config_parse_set(Ecore_Config_Prop * prop, char *arg, char *opt,
|
|
||||||
char opt2)
|
|
||||||
{
|
|
||||||
if (!arg)
|
|
||||||
{
|
|
||||||
if (opt)
|
|
||||||
ERR("Missing expected argument for option --%s", opt);
|
|
||||||
else
|
|
||||||
ERR("Missing expected argument for option -%c", opt2);
|
|
||||||
return ECORE_CONFIG_PARSE_EXIT;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ecore_config_set(prop->key, arg);
|
|
||||||
prop->flags |= ECORE_CONFIG_FLAG_CMDLN;
|
|
||||||
}
|
|
||||||
return ECORE_CONFIG_PARSE_CONTINUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
ecore_config_args_callback_add(char short_opt, char *long_opt, char *desc,
|
|
||||||
void (*func)(char *val, void *data),
|
|
||||||
void *data, Ecore_Config_Type type) {
|
|
||||||
_Ecore_Config_Arg_Callback *new_cb;
|
|
||||||
|
|
||||||
new_cb = malloc(sizeof(_Ecore_Config_Arg_Callback));
|
|
||||||
new_cb->short_opt = short_opt;
|
|
||||||
if (long_opt)
|
|
||||||
new_cb->long_opt = strdup(long_opt);
|
|
||||||
if (desc)
|
|
||||||
new_cb->description = strdup(desc);
|
|
||||||
new_cb->data = data;
|
|
||||||
new_cb->func = func;
|
|
||||||
new_cb->type = type;
|
|
||||||
|
|
||||||
new_cb->next = _ecore_config_arg_callbacks;
|
|
||||||
_ecore_config_arg_callbacks = new_cb;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ecore_config_args_callback_str_add(char short_opt, char *long_opt, char *desc,
|
|
||||||
void (*func)(char *val, void *data),
|
|
||||||
void *data) {
|
|
||||||
ecore_config_args_callback_add(short_opt, long_opt, desc, func, data, ECORE_CONFIG_STR);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ecore_config_args_callback_noarg_add(char short_opt, char *long_opt, char *desc,
|
|
||||||
void (*func)(char *val, void *data),
|
|
||||||
void *data) {
|
|
||||||
ecore_config_args_callback_add(short_opt, long_opt, desc, func, data, ECORE_CONFIG_NIL);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Parse the arguments set by @ref ecore_app_args_set and set properties
|
|
||||||
* accordingly.
|
|
||||||
*
|
|
||||||
* @return @c ECORE_CONFIG_PARSE_CONTINUE if successful.
|
|
||||||
* @c ECORE_CONFIG_PARSE_EXIT is returned if an unrecognised option
|
|
||||||
* is found. @c ECORE_CONFIG_PARSE_HELP is returned if help was
|
|
||||||
* displayed.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
ecore_config_args_parse(void)
|
|
||||||
{
|
|
||||||
int argc;
|
|
||||||
char **argv;
|
|
||||||
int nextarg, next_short_opt, found, ret;
|
|
||||||
char *arg;
|
|
||||||
char *long_opt, short_opt;
|
|
||||||
Ecore_Config_Prop *prop;
|
|
||||||
_Ecore_Config_Arg_Callback *callback;
|
|
||||||
|
|
||||||
ecore_app_args_get(&argc, &argv);
|
|
||||||
nextarg = 1;
|
|
||||||
while (nextarg < argc)
|
|
||||||
{
|
|
||||||
arg = argv[nextarg];
|
|
||||||
|
|
||||||
if (*arg != '-')
|
|
||||||
{
|
|
||||||
ERR("Unexpected attribute \"%s\"", arg);
|
|
||||||
nextarg++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
next_short_opt = 1;
|
|
||||||
short_opt = *(arg + next_short_opt);
|
|
||||||
|
|
||||||
if (short_opt == '-')
|
|
||||||
{
|
|
||||||
long_opt = arg + 2;
|
|
||||||
|
|
||||||
if (!strcmp(long_opt, "help"))
|
|
||||||
{
|
|
||||||
ecore_config_args_display();
|
|
||||||
return ECORE_CONFIG_PARSE_HELP;
|
|
||||||
}
|
|
||||||
|
|
||||||
found = 0;
|
|
||||||
prop = __ecore_config_bundle_local->data;
|
|
||||||
while (prop)
|
|
||||||
{
|
|
||||||
if ((prop->long_opt && !strcmp(long_opt, prop->long_opt))
|
|
||||||
|| !strcmp(long_opt, prop->key))
|
|
||||||
{
|
|
||||||
found = 1;
|
|
||||||
if ((ret =
|
|
||||||
ecore_config_parse_set(prop, argv[++nextarg],
|
|
||||||
long_opt,
|
|
||||||
'\0')) !=
|
|
||||||
ECORE_CONFIG_PARSE_CONTINUE)
|
|
||||||
return ret;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
prop = prop->next;
|
|
||||||
}
|
|
||||||
if (!found)
|
|
||||||
{
|
|
||||||
callback = _ecore_config_arg_callbacks;
|
|
||||||
while (callback)
|
|
||||||
{
|
|
||||||
if ((callback->long_opt &&
|
|
||||||
!strcmp(long_opt, callback->long_opt)))
|
|
||||||
{
|
|
||||||
found = 1;
|
|
||||||
if (callback->type == ECORE_CONFIG_NIL)
|
|
||||||
{
|
|
||||||
callback->func(NULL, callback->data);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!argv[++nextarg])
|
|
||||||
{
|
|
||||||
ERR("Missing expected argument for option --%s", long_opt);
|
|
||||||
return ECORE_CONFIG_PARSE_EXIT;
|
|
||||||
}
|
|
||||||
callback->func(argv[nextarg], callback->data);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
callback = callback->next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!found)
|
|
||||||
{
|
|
||||||
ERR("Unrecognised option \"%s\"", long_opt);
|
|
||||||
ERR("Try using -h or --help for more information.\n");
|
|
||||||
return ECORE_CONFIG_PARSE_EXIT;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
while (short_opt)
|
|
||||||
{
|
|
||||||
if (short_opt == 'h')
|
|
||||||
{
|
|
||||||
ecore_config_args_display();
|
|
||||||
return ECORE_CONFIG_PARSE_HELP;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
found = 0;
|
|
||||||
prop = __ecore_config_bundle_local->data;
|
|
||||||
while (prop)
|
|
||||||
{
|
|
||||||
if (short_opt == prop->short_opt)
|
|
||||||
{
|
|
||||||
found = 1;
|
|
||||||
if ((ret =
|
|
||||||
ecore_config_parse_set(prop,
|
|
||||||
argv[++nextarg],
|
|
||||||
NULL,
|
|
||||||
short_opt)) !=
|
|
||||||
ECORE_CONFIG_PARSE_CONTINUE)
|
|
||||||
return ret;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
prop = prop->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!found)
|
|
||||||
{
|
|
||||||
callback = _ecore_config_arg_callbacks;
|
|
||||||
while (callback)
|
|
||||||
{
|
|
||||||
if (short_opt == callback->short_opt)
|
|
||||||
{
|
|
||||||
found = 1;
|
|
||||||
if (callback->type == ECORE_CONFIG_NIL)
|
|
||||||
{
|
|
||||||
callback->func(NULL, callback->data);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!argv[++nextarg])
|
|
||||||
{
|
|
||||||
ERR("Missing expected argument for option -%c", short_opt);
|
|
||||||
return ECORE_CONFIG_PARSE_EXIT;
|
|
||||||
}
|
|
||||||
callback->func(argv[nextarg], callback->data);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
callback = callback->next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!found)
|
|
||||||
{
|
|
||||||
ERR("Unrecognised option '%c'", short_opt);
|
|
||||||
ERR("Try using -h or --help for more information.\n");
|
|
||||||
return ECORE_CONFIG_PARSE_EXIT;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
short_opt = *(arg + ++next_short_opt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
nextarg++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ECORE_CONFIG_PARSE_CONTINUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the description string used by @ref ecore_config_args_display .
|
|
||||||
* @param description Description of application.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
ecore_config_app_describe(char *description)
|
|
||||||
{
|
|
||||||
if (__ecore_config_app_description)
|
|
||||||
free(__ecore_config_app_description);
|
|
||||||
__ecore_config_app_description = strdup(description);
|
|
||||||
}
|
|
|
@ -1,50 +0,0 @@
|
||||||
#include <Ecore_Ipc.h>
|
|
||||||
#include "Ecore_Config.h"
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
IPC_NONE,
|
|
||||||
IPC_PROP_LIST,
|
|
||||||
IPC_PROP_DESC,
|
|
||||||
IPC_PROP_GET,
|
|
||||||
IPC_PROP_SET, /* end of the codes shared by evidence and econf */
|
|
||||||
|
|
||||||
IPC_GLOBAL_PROP_LIST,
|
|
||||||
|
|
||||||
IPC_BUNDLE_LIST,
|
|
||||||
IPC_BUNDLE_NEW,
|
|
||||||
IPC_BUNDLE_LABEL_GET,
|
|
||||||
IPC_BUNDLE_LABEL_SET,
|
|
||||||
IPC_BUNDLE_LABEL_FIND,
|
|
||||||
|
|
||||||
IPC_LAST
|
|
||||||
} Ecore_Config_Ipc_Call;
|
|
||||||
|
|
||||||
Ecore_Config_Server *_ecore_config_ipc_init(const char *pipe_name);
|
|
||||||
int _ecore_config_ipc_exit(void);
|
|
||||||
|
|
||||||
Ecore_Config_Server *_ecore_config_server_convert(void *srv);
|
|
||||||
|
|
||||||
char *_ecore_config_ipc_prop_list(Ecore_Config_Server * srv,
|
|
||||||
const long serial);
|
|
||||||
char *_ecore_config_ipc_prop_desc(Ecore_Config_Server * srv,
|
|
||||||
const long serial,
|
|
||||||
const char *key);
|
|
||||||
char *_ecore_config_ipc_prop_get(Ecore_Config_Server * srv,
|
|
||||||
const long serial,
|
|
||||||
const char *key);
|
|
||||||
int _ecore_config_ipc_prop_set(Ecore_Config_Server * srv,
|
|
||||||
const long serial,
|
|
||||||
const char *key,
|
|
||||||
const char *val);
|
|
||||||
|
|
||||||
char *_ecore_config_ipc_bundle_list(Ecore_Config_Server * srv);
|
|
||||||
int _ecore_config_ipc_bundle_new(Ecore_Config_Server * srv,
|
|
||||||
const char *);
|
|
||||||
char *_ecore_config_ipc_bundle_label_get(Ecore_Config_Server *
|
|
||||||
srv, const long);
|
|
||||||
int _ecore_config_ipc_bundle_label_set(Ecore_Config_Server *
|
|
||||||
srv, const long,
|
|
||||||
const char *);
|
|
||||||
long _ecore_config_ipc_bundle_label_find(Ecore_Config_Server *
|
|
||||||
srv, const char *);
|
|
|
@ -1,384 +0,0 @@
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* by Azundris, with thanks to Corey Donohoe <atmos@atmos.org> */
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <limits.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include "ecore_private.h"
|
|
||||||
#include <Ecore_Ipc.h>
|
|
||||||
|
|
||||||
#include "ecore_config_ipc.h"
|
|
||||||
#include "ecore_config_util.h"
|
|
||||||
#include "ecore_config_private.h"
|
|
||||||
|
|
||||||
#include "Ecore_Config.h"
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
static int
|
|
||||||
_ecore_config_ipc_ecore_string_get(char **m, char **r)
|
|
||||||
{
|
|
||||||
char *q;
|
|
||||||
int l = 0;
|
|
||||||
|
|
||||||
if (!m || !*m)
|
|
||||||
return ECORE_CONFIG_ERR_NODATA;
|
|
||||||
if (!r)
|
|
||||||
return ECORE_CONFIG_ERR_FAIL;
|
|
||||||
q = *m;
|
|
||||||
if (*q != 's')
|
|
||||||
return ECORE_CONFIG_ERR_TYPEMISMATCH;
|
|
||||||
q++;
|
|
||||||
l = (*(q++)) << 8;
|
|
||||||
l += *(q++);
|
|
||||||
*r = q;
|
|
||||||
q += l;
|
|
||||||
*m = q;
|
|
||||||
WRN("IPC/eCore: got string-%d \"%s\"", l, *r);
|
|
||||||
return ECORE_CONFIG_ERR_SUCC;
|
|
||||||
}
|
|
||||||
|
|
||||||
static char *
|
|
||||||
_ecore_config_ipc_global_prop_list(Ecore_Config_Server * srv EINA_UNUSED, long serial EINA_UNUSED)
|
|
||||||
{
|
|
||||||
Ecore_Config_DB_File *db;
|
|
||||||
char **keys;
|
|
||||||
int key_count, x;
|
|
||||||
estring *s;
|
|
||||||
int f;
|
|
||||||
char buf[PATH_MAX], *p;
|
|
||||||
// char *data; UNUSED
|
|
||||||
Ecore_Config_Type type;
|
|
||||||
|
|
||||||
db = NULL;
|
|
||||||
s = estring_new(8192);
|
|
||||||
f = 0;
|
|
||||||
if ((p = getenv("HOME")))
|
|
||||||
{
|
|
||||||
snprintf(buf, sizeof(buf), "%s/.e/config.eet", p);
|
|
||||||
if (!(db = _ecore_config_db_open_read(buf)))
|
|
||||||
{
|
|
||||||
strcpy(buf, PACKAGE_DATA_DIR"/system.eet");
|
|
||||||
if (!(db = _ecore_config_db_open_read(buf)))
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!db) return NULL;
|
|
||||||
key_count = 0;
|
|
||||||
keys = _ecore_config_db_keys_get(db, &key_count);
|
|
||||||
if (keys)
|
|
||||||
{
|
|
||||||
for (x = 0; x < key_count; x++)
|
|
||||||
{
|
|
||||||
type = _ecore_config_db_key_type_get(db, keys[x]);
|
|
||||||
switch (type)
|
|
||||||
{
|
|
||||||
case ECORE_CONFIG_INT:
|
|
||||||
estring_appendf(s, "%s%s: integer", f ? "\n" : "", keys[x]);
|
|
||||||
break;
|
|
||||||
case ECORE_CONFIG_BLN:
|
|
||||||
estring_appendf(s, "%s%s: boolean", f ? "\n" : "", keys[x]);
|
|
||||||
break;
|
|
||||||
case ECORE_CONFIG_FLT:
|
|
||||||
estring_appendf(s, "%s%s: float", f ? "\n" : "", keys[x]);
|
|
||||||
break;
|
|
||||||
case ECORE_CONFIG_STR:
|
|
||||||
estring_appendf(s, "%s%s: string", f ? "\n" : "", keys[x]);
|
|
||||||
break;
|
|
||||||
case ECORE_CONFIG_RGB:
|
|
||||||
estring_appendf(s, "%s%s: colour", f ? "\n" : "", keys[x]);
|
|
||||||
break;
|
|
||||||
case ECORE_CONFIG_THM:
|
|
||||||
estring_appendf(s, "%s%s: theme", f ? "\n" : "", keys[x]);
|
|
||||||
break;
|
|
||||||
case ECORE_CONFIG_SCT:
|
|
||||||
estring_appendf(s, "%s%s: structure", f ? "\n" : "", keys[x]);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
estring_appendf(s, "%s%s: unknown", f ? "\n" : "", keys[x]);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
f = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_ecore_config_db_close(db);
|
|
||||||
if (keys)
|
|
||||||
{
|
|
||||||
for (x = 0; x < key_count; x++)
|
|
||||||
{
|
|
||||||
free(keys[x]);
|
|
||||||
}
|
|
||||||
free(keys);
|
|
||||||
}
|
|
||||||
|
|
||||||
return estring_disown(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
static int
|
|
||||||
_ecore_config_ipc_ecore_send(Ecore_Ipc_Event_Client_Data * e, int code,
|
|
||||||
char *reply)
|
|
||||||
{
|
|
||||||
static int our_ref = 0;
|
|
||||||
int len = reply ? strlen(reply) + 1 : 0;
|
|
||||||
|
|
||||||
our_ref++;
|
|
||||||
WRN("IPC/eCore: replying [0,0] %d IRT %d => %d {\"%s\":%d}", our_ref,
|
|
||||||
e->ref, code, reply ? reply : "", len);
|
|
||||||
return ecore_ipc_client_send(e->client, 0, 0, our_ref, e->ref, code, reply,
|
|
||||||
len);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
static int
|
|
||||||
_ecore_config_ipc_ecore_handle_request(Ecore_Ipc_Server * server,
|
|
||||||
Ecore_Ipc_Event_Client_Data * e)
|
|
||||||
{
|
|
||||||
Ecore_Config_Server *srv;
|
|
||||||
long serial;
|
|
||||||
int ret;
|
|
||||||
char *r, *k, *v, *m;
|
|
||||||
|
|
||||||
srv = _ecore_config_server_convert(server);
|
|
||||||
serial = e->minor;
|
|
||||||
r = NULL;
|
|
||||||
m = (char *)e->data;
|
|
||||||
INF("IPC/eCore: client sent: [%d,%d] #%d (%d) @ %p", e->major, e->minor,
|
|
||||||
e->ref, e->size, server);
|
|
||||||
|
|
||||||
switch (e->major)
|
|
||||||
{
|
|
||||||
case IPC_PROP_LIST:
|
|
||||||
if (srv == __ecore_config_server_global)
|
|
||||||
r = _ecore_config_ipc_global_prop_list(srv, serial);
|
|
||||||
else
|
|
||||||
r = _ecore_config_ipc_prop_list(srv, serial);
|
|
||||||
break;
|
|
||||||
case IPC_PROP_DESC:
|
|
||||||
if (_ecore_config_ipc_ecore_string_get(&m, &k) == ECORE_CONFIG_ERR_SUCC)
|
|
||||||
r = _ecore_config_ipc_prop_desc(srv, serial, k);
|
|
||||||
break;
|
|
||||||
case IPC_PROP_GET:
|
|
||||||
if (_ecore_config_ipc_ecore_string_get(&m, &k) == ECORE_CONFIG_ERR_SUCC)
|
|
||||||
r = _ecore_config_ipc_prop_get(srv, serial, k);
|
|
||||||
break;
|
|
||||||
case IPC_PROP_SET:
|
|
||||||
if (_ecore_config_ipc_ecore_string_get(&m, &k) == ECORE_CONFIG_ERR_SUCC)
|
|
||||||
{
|
|
||||||
if (_ecore_config_ipc_ecore_string_get(&m, &v) ==
|
|
||||||
ECORE_CONFIG_ERR_SUCC)
|
|
||||||
return _ecore_config_ipc_ecore_send(e,
|
|
||||||
_ecore_config_ipc_prop_set
|
|
||||||
(srv, serial, k, v), NULL);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IPC_BUNDLE_LIST:
|
|
||||||
r = _ecore_config_ipc_bundle_list(srv);
|
|
||||||
break;
|
|
||||||
case IPC_BUNDLE_NEW:
|
|
||||||
if (_ecore_config_ipc_ecore_string_get(&m, &k) == ECORE_CONFIG_ERR_SUCC)
|
|
||||||
return _ecore_config_ipc_ecore_send(e,
|
|
||||||
k ?
|
|
||||||
_ecore_config_ipc_bundle_new(srv,
|
|
||||||
k) :
|
|
||||||
ECORE_CONFIG_ERR_FAIL, NULL);
|
|
||||||
break;
|
|
||||||
case IPC_BUNDLE_LABEL_SET:
|
|
||||||
if (_ecore_config_ipc_ecore_string_get(&m, &k) == ECORE_CONFIG_ERR_SUCC)
|
|
||||||
return _ecore_config_ipc_ecore_send(e,
|
|
||||||
k ?
|
|
||||||
_ecore_config_ipc_bundle_label_set
|
|
||||||
(srv, serial,
|
|
||||||
k) : ECORE_CONFIG_ERR_FAIL,
|
|
||||||
NULL);
|
|
||||||
break;
|
|
||||||
case IPC_BUNDLE_LABEL_FIND:
|
|
||||||
if (_ecore_config_ipc_ecore_string_get(&m, &k) == ECORE_CONFIG_ERR_SUCC)
|
|
||||||
return _ecore_config_ipc_ecore_send(e,
|
|
||||||
_ecore_config_ipc_bundle_label_find
|
|
||||||
(srv, k), NULL);
|
|
||||||
break;
|
|
||||||
case IPC_BUNDLE_LABEL_GET:
|
|
||||||
r = _ecore_config_ipc_bundle_label_get(srv, serial);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret =
|
|
||||||
_ecore_config_ipc_ecore_send(e,
|
|
||||||
r ? ECORE_CONFIG_ERR_SUCC :
|
|
||||||
ECORE_CONFIG_ERR_FAIL, r);
|
|
||||||
if (r)
|
|
||||||
{
|
|
||||||
free(r);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
return ECORE_CONFIG_ERR_NOTFOUND;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_ecore_config_ipc_client_add(void *data, int type EINA_UNUSED, void *event)
|
|
||||||
{
|
|
||||||
Ecore_Ipc_Server **server;
|
|
||||||
Ecore_Ipc_Event_Client_Data *e;
|
|
||||||
|
|
||||||
server = (Ecore_Ipc_Server **) data;
|
|
||||||
e = (Ecore_Ipc_Event_Client_Data *) event;
|
|
||||||
|
|
||||||
if (*server != ecore_ipc_client_server_get(e->client))
|
|
||||||
return EINA_TRUE;
|
|
||||||
|
|
||||||
INF("IPC/eCore: Client connected. @ %p", server);
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_ecore_config_ipc_client_del(void *data, int type EINA_UNUSED, void *event)
|
|
||||||
{
|
|
||||||
Ecore_Ipc_Server **server;
|
|
||||||
Ecore_Ipc_Event_Client_Data *e;
|
|
||||||
|
|
||||||
server = (Ecore_Ipc_Server **) data;
|
|
||||||
e = (Ecore_Ipc_Event_Client_Data *) event;
|
|
||||||
|
|
||||||
if (*server != ecore_ipc_client_server_get(e->client))
|
|
||||||
return EINA_TRUE;
|
|
||||||
|
|
||||||
INF("IPC/eCore: Client disconnected. @ %p", server);
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_ecore_config_ipc_client_sent(void *data, int type EINA_UNUSED, void *event)
|
|
||||||
{
|
|
||||||
Ecore_Ipc_Server **server;
|
|
||||||
Ecore_Ipc_Event_Client_Data *e;
|
|
||||||
|
|
||||||
server = (Ecore_Ipc_Server **) data;
|
|
||||||
e = (Ecore_Ipc_Event_Client_Data *) event;
|
|
||||||
|
|
||||||
if (*server != ecore_ipc_client_server_get(e->client))
|
|
||||||
return EINA_TRUE;
|
|
||||||
|
|
||||||
_ecore_config_ipc_ecore_handle_request(*server, e);
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
int
|
|
||||||
_ecore_config_ipc_ecore_init(const char *pipe_name, void **data)
|
|
||||||
{
|
|
||||||
Ecore_Ipc_Server **server;
|
|
||||||
struct stat st;
|
|
||||||
char *p;
|
|
||||||
int port;
|
|
||||||
char socket[PATH_MAX];
|
|
||||||
|
|
||||||
server = (Ecore_Ipc_Server **) data;
|
|
||||||
port = 0;
|
|
||||||
if (!server)
|
|
||||||
return ECORE_CONFIG_ERR_FAIL;
|
|
||||||
|
|
||||||
/* if(*server)
|
|
||||||
return ECORE_CONFIG_ERR_IGNORED; */
|
|
||||||
|
|
||||||
ecore_init();
|
|
||||||
if (ecore_ipc_init() < 1)
|
|
||||||
return ECORE_CONFIG_ERR_FAIL;
|
|
||||||
|
|
||||||
if ((p = getenv("HOME")))
|
|
||||||
{ /* debug-only ### FIXME */
|
|
||||||
int stale;
|
|
||||||
|
|
||||||
stale = 1;
|
|
||||||
while (stale)
|
|
||||||
{
|
|
||||||
snprintf(socket, PATH_MAX, "%s/.ecore/%s/%d", p, pipe_name, port);
|
|
||||||
|
|
||||||
if (!stat(socket, &st))
|
|
||||||
{
|
|
||||||
INF("IPC/eCore: pipe \"%s\" already exists!?", socket);
|
|
||||||
/* if(unlink(buf))
|
|
||||||
E(0,"IPC/eCore: could not remove pipe \"%s\": %d\n",buf,errno); }}*/
|
|
||||||
port++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
stale = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*server = ecore_ipc_server_add(ECORE_IPC_LOCAL_USER, pipe_name, port, NULL);
|
|
||||||
ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_ADD,
|
|
||||||
_ecore_config_ipc_client_add, server);
|
|
||||||
ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_DEL,
|
|
||||||
_ecore_config_ipc_client_del, server);
|
|
||||||
ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_DATA,
|
|
||||||
_ecore_config_ipc_client_sent, server);
|
|
||||||
|
|
||||||
if (*server)
|
|
||||||
{
|
|
||||||
INF("IPC/eCore: Server is listening on %s.", pipe_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ECORE_CONFIG_ERR_SUCC;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
_ecore_config_ipc_ecore_exit(void **data)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
Ecore_Ipc_Server **server;
|
|
||||||
|
|
||||||
ret = ECORE_CONFIG_ERR_SUCC;
|
|
||||||
server = (Ecore_Ipc_Server **) data;
|
|
||||||
|
|
||||||
if (!server)
|
|
||||||
return ECORE_CONFIG_ERR_FAIL;
|
|
||||||
|
|
||||||
if (*server)
|
|
||||||
{
|
|
||||||
ecore_ipc_server_del(*server);
|
|
||||||
*server = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
ecore_ipc_shutdown();
|
|
||||||
ecore_shutdown();
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
int
|
|
||||||
_ecore_config_ipc_ecore_poll(void **data)
|
|
||||||
{
|
|
||||||
Ecore_Ipc_Server **server;
|
|
||||||
|
|
||||||
server = (Ecore_Ipc_Server **) data;
|
|
||||||
|
|
||||||
if (!server)
|
|
||||||
return ECORE_CONFIG_ERR_FAIL;
|
|
||||||
|
|
||||||
ecore_main_loop_iterate();
|
|
||||||
|
|
||||||
return ECORE_CONFIG_ERR_SUCC;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
|
@ -1,275 +0,0 @@
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* ############## bad */
|
|
||||||
#define HAVE_EVAS2
|
|
||||||
|
|
||||||
#include <signal.h>
|
|
||||||
#include <dlfcn.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <glob.h>
|
|
||||||
#include <sys/param.h>
|
|
||||||
#include <limits.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdlib.h> /* malloc(), free() */
|
|
||||||
|
|
||||||
#include "Ecore.h"
|
|
||||||
#include "Ecore_Config.h"
|
|
||||||
#include "ecore_config_util.h"
|
|
||||||
#include "ecore_config_ipc.h"
|
|
||||||
|
|
||||||
#include "ecore_config_private.h"
|
|
||||||
|
|
||||||
static Ecore_Config_Server *__ecore_config_servers;
|
|
||||||
Ecore_Timer *ipc_timer = NULL;
|
|
||||||
|
|
||||||
Ecore_Config_Server *
|
|
||||||
_ecore_config_server_convert(void *srv)
|
|
||||||
{
|
|
||||||
Ecore_Config_Server *srv_tmp;
|
|
||||||
|
|
||||||
srv_tmp = __ecore_config_servers;
|
|
||||||
while (srv_tmp)
|
|
||||||
{
|
|
||||||
if (srv_tmp->server == srv)
|
|
||||||
return srv_tmp;
|
|
||||||
srv_tmp = srv_tmp->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
return __ecore_config_server_global;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/* INTERFACE FOR IPC MODULES */
|
|
||||||
/*****************************/
|
|
||||||
|
|
||||||
char *
|
|
||||||
_ecore_config_ipc_prop_list(Ecore_Config_Server * srv, const long serial)
|
|
||||||
{
|
|
||||||
Ecore_Config_Bundle *theme;
|
|
||||||
Ecore_Config_Prop *e;
|
|
||||||
estring *s;
|
|
||||||
int f;
|
|
||||||
|
|
||||||
theme = ecore_config_bundle_by_serial_get(srv, serial);
|
|
||||||
e = theme ? theme->data : NULL;
|
|
||||||
s = estring_new(8192);
|
|
||||||
f = 0;
|
|
||||||
while (e)
|
|
||||||
{
|
|
||||||
/* ignore system properties in listings, unless they have been overridden */
|
|
||||||
if (e->flags & ECORE_CONFIG_FLAG_SYSTEM && !(e->flags & ECORE_CONFIG_FLAG_MODIFIED))
|
|
||||||
{
|
|
||||||
e = e->next;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
estring_appendf(s, "%s%s: %s", f ? "\n" : "", e->key,
|
|
||||||
ecore_config_type_get(e));
|
|
||||||
if (e->flags & ECORE_CONFIG_FLAG_BOUNDS)
|
|
||||||
{
|
|
||||||
if (e->type == ECORE_CONFIG_FLT)
|
|
||||||
estring_appendf(s, ", range %le..%le",
|
|
||||||
(float)e->lo / ECORE_CONFIG_FLOAT_PRECISION,
|
|
||||||
(float)e->hi / ECORE_CONFIG_FLOAT_PRECISION);
|
|
||||||
else
|
|
||||||
estring_appendf(s, ", range %d..%d", e->lo, e->hi);
|
|
||||||
}
|
|
||||||
if (e->type == ECORE_CONFIG_THM)
|
|
||||||
estring_appendf(s, ", group %s", e->data ? e->data : "Main");
|
|
||||||
f = 1;
|
|
||||||
e = e->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
return estring_disown(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
|
||||||
_ecore_config_ipc_prop_desc(Ecore_Config_Server * srv, const long serial,
|
|
||||||
const char *key)
|
|
||||||
{
|
|
||||||
#ifdef HAVE_EVAS2
|
|
||||||
Ecore_Config_Prop *e;
|
|
||||||
|
|
||||||
e = ecore_config_get(key);
|
|
||||||
if (e)
|
|
||||||
{
|
|
||||||
estring *s = estring_new(512);
|
|
||||||
|
|
||||||
estring_appendf(s, "%s: %s", e->key, ecore_config_type_get(e));
|
|
||||||
if (e->flags & ECORE_CONFIG_FLAG_BOUNDS)
|
|
||||||
estring_appendf(s, ", range %d..%d", e->lo, e->hi);
|
|
||||||
return estring_disown(s);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return strdup("<undefined>");
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
|
||||||
_ecore_config_ipc_prop_get(Ecore_Config_Server * srv, const long serial,
|
|
||||||
const char *key)
|
|
||||||
{
|
|
||||||
#ifdef HAVE_EVAS2
|
|
||||||
char *ret;
|
|
||||||
|
|
||||||
if ((ret = ecore_config_as_string_get(key)))
|
|
||||||
return ret;
|
|
||||||
#endif
|
|
||||||
return strdup("<undefined>");
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
_ecore_config_ipc_prop_set(Ecore_Config_Server * srv, const long serial,
|
|
||||||
const char *key, const char *val)
|
|
||||||
{
|
|
||||||
#ifdef HAVE_EVAS2
|
|
||||||
int ret;
|
|
||||||
Ecore_Config_Bundle *theme;
|
|
||||||
|
|
||||||
theme = ecore_config_bundle_by_serial_get(srv, serial);
|
|
||||||
ret = ecore_config_set(key, (char *)val);
|
|
||||||
ERR("ipc.prop.set(%s->%s,\"%s\") => %d\n", theme ? theme->identifier : "",
|
|
||||||
key, val, ret);
|
|
||||||
return ret;
|
|
||||||
#else
|
|
||||||
return ECORE_CONFIG_ERR_NOTSUPP;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
char *
|
|
||||||
_ecore_config_ipc_bundle_list(Ecore_Config_Server * srv)
|
|
||||||
{
|
|
||||||
Ecore_Config_Bundle *ns;
|
|
||||||
estring *s;
|
|
||||||
int f;
|
|
||||||
|
|
||||||
ns = ecore_config_bundle_1st_get(srv);
|
|
||||||
s = estring_new(8192);
|
|
||||||
f = 0;
|
|
||||||
if (!ns)
|
|
||||||
return strdup("<no_bundles_created>");
|
|
||||||
|
|
||||||
while (ns)
|
|
||||||
{
|
|
||||||
estring_appendf(s, "%s%d: %s", f ? "\n" : "",
|
|
||||||
ecore_config_bundle_serial_get(ns),
|
|
||||||
ecore_config_bundle_label_get(ns));
|
|
||||||
f = 1;
|
|
||||||
ns = ecore_config_bundle_next_get(ns);
|
|
||||||
}
|
|
||||||
|
|
||||||
return estring_disown(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
_ecore_config_ipc_bundle_new(Ecore_Config_Server * srv, const char *label)
|
|
||||||
{
|
|
||||||
if (ecore_config_bundle_new(srv, label))
|
|
||||||
return ECORE_CONFIG_ERR_SUCC;
|
|
||||||
return ECORE_CONFIG_ERR_FAIL;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
|
||||||
_ecore_config_ipc_bundle_label_get(Ecore_Config_Server * srv, const long serial)
|
|
||||||
{
|
|
||||||
Ecore_Config_Bundle *ns;
|
|
||||||
char *label;
|
|
||||||
|
|
||||||
ns = ecore_config_bundle_by_serial_get(srv, serial);
|
|
||||||
label = ecore_config_bundle_label_get(ns);
|
|
||||||
return strdup(label ? label : "<no such bundle>");
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
_ecore_config_ipc_bundle_label_set(Ecore_Config_Server * srv, const long serial,
|
|
||||||
const char *label)
|
|
||||||
{
|
|
||||||
Ecore_Config_Bundle *ns;
|
|
||||||
|
|
||||||
ns = ecore_config_bundle_by_serial_get(srv, serial);
|
|
||||||
if (!(ns->identifier = malloc(sizeof(label))))
|
|
||||||
return ECORE_CONFIG_ERR_OOM;
|
|
||||||
memcpy(ns->identifier, label, sizeof(label));
|
|
||||||
return ECORE_CONFIG_ERR_SUCC;
|
|
||||||
}
|
|
||||||
|
|
||||||
long
|
|
||||||
_ecore_config_ipc_bundle_label_find(Ecore_Config_Server * srv,
|
|
||||||
const char *label)
|
|
||||||
{
|
|
||||||
Ecore_Config_Bundle *ns;
|
|
||||||
|
|
||||||
ns = ecore_config_bundle_by_label_get(srv, label);
|
|
||||||
return ns ? ecore_config_bundle_serial_get(ns) : -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_ecore_config_ipc_poll(void *data EINA_UNUSED)
|
|
||||||
{
|
|
||||||
Ecore_Config_Server *s;
|
|
||||||
|
|
||||||
s = __ecore_config_servers;
|
|
||||||
while (s)
|
|
||||||
{
|
|
||||||
_ecore_config_ipc_ecore_poll(&s->server);
|
|
||||||
s = s->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
_ecore_config_ipc_exit(void)
|
|
||||||
{
|
|
||||||
Ecore_Config_Server *l;
|
|
||||||
|
|
||||||
if (ipc_timer)
|
|
||||||
ecore_timer_del(ipc_timer);
|
|
||||||
|
|
||||||
l = __ecore_config_servers;
|
|
||||||
while (l)
|
|
||||||
{
|
|
||||||
_ecore_config_ipc_ecore_exit(&l->server);
|
|
||||||
if (l->name)
|
|
||||||
free(l->name);
|
|
||||||
l = l->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ECORE_CONFIG_ERR_SUCC;
|
|
||||||
}
|
|
||||||
|
|
||||||
Ecore_Config_Server *
|
|
||||||
_ecore_config_ipc_init(const char *pipe_name)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
Ecore_Config_Server *list;
|
|
||||||
Ecore_Config_Server *ret_srv;
|
|
||||||
|
|
||||||
list = NULL;
|
|
||||||
ret_srv = NULL;
|
|
||||||
list = NULL;
|
|
||||||
|
|
||||||
list = calloc(1, sizeof(Ecore_Config_Server));
|
|
||||||
if ((ret = _ecore_config_ipc_ecore_init(pipe_name, &list->server)) != ECORE_CONFIG_ERR_SUCC)
|
|
||||||
{
|
|
||||||
ERR("_ecore_config_ipc_init: failed to register %s, code %d",
|
|
||||||
pipe_name, ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
ERR("_ecore_config_ipc_init: registered \"%s\"...", pipe_name);
|
|
||||||
|
|
||||||
list->name = strdup(pipe_name);
|
|
||||||
list->next = __ecore_config_servers;
|
|
||||||
|
|
||||||
__ecore_config_servers = list;
|
|
||||||
if (!ret_srv)
|
|
||||||
ret_srv = list;
|
|
||||||
|
|
||||||
if (!ipc_timer)
|
|
||||||
ipc_timer = ecore_timer_add(100, _ecore_config_ipc_poll, NULL);
|
|
||||||
|
|
||||||
return ret_srv;
|
|
||||||
}
|
|
||||||
/*****************************************************************************/
|
|
|
@ -1,70 +0,0 @@
|
||||||
#ifndef _ECORE_CONFIG_PRIVATE_H
|
|
||||||
# define _ECORE_CONFIG_PRIVATE_H
|
|
||||||
#ifdef ECORE_CONFIG_DEFAULT_LOG_COLOR
|
|
||||||
# undef ECORE_CONFIG_DEFAULT_LOG_COLOR
|
|
||||||
#endif
|
|
||||||
#define ECORE_CONFIG_DEFAULT_LOG_COLOR EINA_COLOR_BLUE
|
|
||||||
/* eina_log related things */
|
|
||||||
|
|
||||||
extern int _ecore_config_log_dom;
|
|
||||||
#ifdef ERR
|
|
||||||
# undef ERR
|
|
||||||
#endif
|
|
||||||
#define ERR(...) EINA_LOG_DOM_ERR(_ecore_config_log_dom, __VA_ARGS__)
|
|
||||||
|
|
||||||
#ifdef DBG
|
|
||||||
# undef DBG
|
|
||||||
#endif
|
|
||||||
#define DBG(...) EINA_LOG_DOM_DBG(_ecore_config_log_dom, __VA_ARGS__)
|
|
||||||
|
|
||||||
#ifdef INF
|
|
||||||
# undef INF
|
|
||||||
#endif
|
|
||||||
#define INF(...) EINA_LOG_DOM_INFO(_ecore_config_log_dom, __VA_ARGS__)
|
|
||||||
|
|
||||||
#ifdef WRN
|
|
||||||
# undef WRN
|
|
||||||
#endif
|
|
||||||
#define WRN(...) EINA_LOG_DOM_WARN(_ecore_config_log_dom, __VA_ARGS__)
|
|
||||||
|
|
||||||
#ifdef CRIT
|
|
||||||
# undef CRIT
|
|
||||||
#endif
|
|
||||||
#define CRIT(...) EINA_LOG_DOM_CRIT(_ecore_config_log_dom, __VA_ARGS__)
|
|
||||||
|
|
||||||
/* debug */
|
|
||||||
extern int DEBUG;
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct _Ecore_Config_DB_File Ecore_Config_DB_File;
|
|
||||||
|
|
||||||
int _ecore_config_mod_init(const char *pipe_name, void **data);
|
|
||||||
int _ecore_config_mod_exit(void **data);
|
|
||||||
int _ecore_config_mod_poll(void **data);
|
|
||||||
|
|
||||||
Ecore_Config_DB_File *_ecore_config_db_open_read(const char *file);
|
|
||||||
Ecore_Config_DB_File *_ecore_config_db_open_write(const char *file);
|
|
||||||
void _ecore_config_db_close(Ecore_Config_DB_File *db);
|
|
||||||
char **_ecore_config_db_keys_get(Ecore_Config_DB_File *db, int *num_ret);
|
|
||||||
Ecore_Config_Type _ecore_config_db_key_type_get(Ecore_Config_DB_File *db, const char *key);
|
|
||||||
int _ecore_config_db_read(Ecore_Config_DB_File *db, const char *key);
|
|
||||||
void _ecore_config_db_write(Ecore_Config_DB_File *db, Ecore_Config_Prop *e);
|
|
||||||
|
|
||||||
int _ecore_config_boolean_get(Ecore_Config_Prop *e);
|
|
||||||
char *_ecore_config_string_get(Ecore_Config_Prop *e);
|
|
||||||
long _ecore_config_int_get(Ecore_Config_Prop *e);
|
|
||||||
int _ecore_config_argb_get(Ecore_Config_Prop *e, int *a, int *r,
|
|
||||||
int *g, int *b);
|
|
||||||
char *_ecore_config_argbstr_get(Ecore_Config_Prop *e);
|
|
||||||
long _ecore_config_argbint_get(Ecore_Config_Prop *e);
|
|
||||||
float _ecore_config_float_get(Ecore_Config_Prop *e);
|
|
||||||
char *_ecore_config_theme_get(Ecore_Config_Prop *e);
|
|
||||||
|
|
||||||
int _ecore_config_ipc_ecore_init(const char *pipe_name, void **data);
|
|
||||||
int _ecore_config_ipc_ecore_exit(void **data);
|
|
||||||
int _ecore_config_ipc_ecore_poll(void **data);
|
|
||||||
|
|
||||||
#include "Ecore.h"
|
|
||||||
#include "ecore_private.h"
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,176 +0,0 @@
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <limits.h>
|
|
||||||
|
|
||||||
#include <sys/param.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include "Ecore_Config.h"
|
|
||||||
#include "ecore_config_private.h"
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Loads the default configuration.
|
|
||||||
* @return @c ECORE_CONFIG_ERR_SUCC on success. @c ECORE_CONFIG_ERR_NODATA
|
|
||||||
* is returned if the file cannot be loaded.
|
|
||||||
* @ingroup Ecore_Config_File_Group
|
|
||||||
*/
|
|
||||||
EAPI int
|
|
||||||
ecore_config_load(void)
|
|
||||||
{
|
|
||||||
char file[PATH_MAX];
|
|
||||||
|
|
||||||
if (!__ecore_config_app_name)
|
|
||||||
return ECORE_CONFIG_ERR_FAIL;
|
|
||||||
|
|
||||||
snprintf(file, PATH_MAX, "%s/.e/apps/%s/config.eet", getenv("HOME"),
|
|
||||||
__ecore_config_app_name);
|
|
||||||
return ecore_config_file_load(file);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Saves the current configuration to the default file.
|
|
||||||
* @return @c ECORE_CONFIG_ERR_SUCC is returned on success.
|
|
||||||
* @c ECORE_CONFIG_ERR_FAIL is returned if the data cannot be
|
|
||||||
* saved.
|
|
||||||
* @ingroup Ecore_Config_File_Group
|
|
||||||
*/
|
|
||||||
EAPI int
|
|
||||||
ecore_config_save(void)
|
|
||||||
{
|
|
||||||
char file[PATH_MAX];
|
|
||||||
|
|
||||||
if (!__ecore_config_app_name)
|
|
||||||
return ECORE_CONFIG_ERR_FAIL;
|
|
||||||
|
|
||||||
snprintf(file, PATH_MAX, "%s/.e/apps/%s/config.eet", getenv("HOME"),
|
|
||||||
__ecore_config_app_name);
|
|
||||||
return ecore_config_file_save(file);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Load the given configuration file to the local configuration.
|
|
||||||
* @param file Name of the file to load.
|
|
||||||
* @return @c ECORE_CONFIG_ERR_SUCC on success. @c ECORE_CONFIG_ERR_NODATA
|
|
||||||
* is returned if the file cannot be loaded.
|
|
||||||
* @ingroup Ecore_Config_File_Group
|
|
||||||
*/
|
|
||||||
EAPI int
|
|
||||||
ecore_config_file_load(const char *file)
|
|
||||||
{
|
|
||||||
Ecore_Config_DB_File *db;
|
|
||||||
char **keys;
|
|
||||||
int key_count;
|
|
||||||
int x;
|
|
||||||
// double ftmp; UNUSED
|
|
||||||
// int pt; UNUSED
|
|
||||||
// int itmp; UNUSED
|
|
||||||
// Ecore_Config_Type type; UNUSED
|
|
||||||
char *data;
|
|
||||||
|
|
||||||
db = NULL;
|
|
||||||
data = NULL;
|
|
||||||
|
|
||||||
db = _ecore_config_db_open_read(file);
|
|
||||||
if (!db)
|
|
||||||
{
|
|
||||||
ERR("Cannot open database from file %s!", file);
|
|
||||||
return ECORE_CONFIG_ERR_NODATA;
|
|
||||||
}
|
|
||||||
key_count = 0;
|
|
||||||
keys = _ecore_config_db_keys_get(db, &key_count);
|
|
||||||
if (keys)
|
|
||||||
{
|
|
||||||
for (x = 0; x < key_count; x++)
|
|
||||||
{
|
|
||||||
_ecore_config_db_read(db, keys[x]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_ecore_config_db_close(db);
|
|
||||||
if (keys)
|
|
||||||
{
|
|
||||||
for (x = 0; x < key_count; x++)
|
|
||||||
{
|
|
||||||
free(keys[x]);
|
|
||||||
}
|
|
||||||
free(keys);
|
|
||||||
}
|
|
||||||
return ECORE_CONFIG_ERR_SUCC;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_ecore_config_recurse_mkdir(const char *file)
|
|
||||||
{
|
|
||||||
char *file_ptr;
|
|
||||||
char *file_tmp;
|
|
||||||
struct stat status;
|
|
||||||
|
|
||||||
file_tmp = strdup(file);
|
|
||||||
file_ptr = file_tmp + strlen(file_tmp);
|
|
||||||
while (*file_ptr != '/' && file_ptr > file_tmp)
|
|
||||||
file_ptr--;
|
|
||||||
*file_ptr = '\0';
|
|
||||||
|
|
||||||
if ((file_tmp[0] != 0) && stat(file_tmp, &status))
|
|
||||||
{
|
|
||||||
_ecore_config_recurse_mkdir(file_tmp);
|
|
||||||
mkdir(file_tmp, S_IRUSR | S_IWUSR | S_IXUSR);
|
|
||||||
}
|
|
||||||
free(file_tmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Saves the local configuration to the given file.
|
|
||||||
* @param file Name of the file to save to.
|
|
||||||
* @return @c ECORE_CONFIG_ERR_SUCC is returned on success.
|
|
||||||
* @c ECORE_CONFIG_ERR_FAIL is returned if the data cannot be
|
|
||||||
* saved.
|
|
||||||
* @ingroup Ecore_Config_File_Group
|
|
||||||
*/
|
|
||||||
EAPI int
|
|
||||||
ecore_config_file_save(const char *file)
|
|
||||||
{
|
|
||||||
Ecore_Config_Prop *next;
|
|
||||||
Ecore_Config_DB_File *db;
|
|
||||||
struct stat status;
|
|
||||||
|
|
||||||
next = __ecore_config_bundle_local->data;
|
|
||||||
db = NULL;
|
|
||||||
|
|
||||||
/* if file does not exist check to see if the dirs exist, creating if not */
|
|
||||||
if (stat(file, &status))
|
|
||||||
_ecore_config_recurse_mkdir(file);
|
|
||||||
|
|
||||||
db = _ecore_config_db_open_write(file);
|
|
||||||
if (!db)
|
|
||||||
{
|
|
||||||
ERR("Cannot open database from file %s!", file);
|
|
||||||
return ECORE_CONFIG_ERR_FAIL;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (next)
|
|
||||||
{
|
|
||||||
/* let the config_db deal with this
|
|
||||||
* handyande: hmm, not sure that it ever does - reinstating until
|
|
||||||
* further discussions satisfy me!
|
|
||||||
*/
|
|
||||||
if (!(next->flags & ECORE_CONFIG_FLAG_MODIFIED) || next->flags & ECORE_CONFIG_FLAG_CMDLN)
|
|
||||||
{
|
|
||||||
next = next->next;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
_ecore_config_db_write(db, next);
|
|
||||||
|
|
||||||
next = next->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
_ecore_config_db_close(db);
|
|
||||||
return ECORE_CONFIG_ERR_SUCC;
|
|
||||||
}
|
|
|
@ -1,129 +0,0 @@
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* azundris */
|
|
||||||
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <stdlib.h> /* malloc(), free() */
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h> /* str...() */
|
|
||||||
|
|
||||||
#include <stdarg.h> /* varargs in sprintf/appendf */
|
|
||||||
|
|
||||||
#include "Ecore.h"
|
|
||||||
#include "ecore_private.h"
|
|
||||||
|
|
||||||
#include "Ecore_Config.h"
|
|
||||||
#include "ecore_config_util.h"
|
|
||||||
|
|
||||||
#include "ecore_config_private.h"
|
|
||||||
|
|
||||||
#define CHUNKLEN 4096
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/* STRINGS */
|
|
||||||
/***********/
|
|
||||||
|
|
||||||
estring *
|
|
||||||
estring_new(int size)
|
|
||||||
{
|
|
||||||
estring *e = malloc(sizeof(estring));
|
|
||||||
|
|
||||||
if (e)
|
|
||||||
{
|
|
||||||
memset(e, 0, sizeof(estring));
|
|
||||||
if ((size > 0) && (e->str = malloc(size)))
|
|
||||||
e->alloc = size;
|
|
||||||
}
|
|
||||||
return e;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
|
||||||
estring_disown(estring * e)
|
|
||||||
{
|
|
||||||
if (e)
|
|
||||||
{
|
|
||||||
char *r = e->str;
|
|
||||||
|
|
||||||
free(e);
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
estring_appendf(estring * e, const char *fmt, ...)
|
|
||||||
{
|
|
||||||
int need;
|
|
||||||
va_list ap;
|
|
||||||
char *p;
|
|
||||||
|
|
||||||
if (!e)
|
|
||||||
return ECORE_CONFIG_ERR_FAIL;
|
|
||||||
|
|
||||||
if (!e->str)
|
|
||||||
{
|
|
||||||
e->used = e->alloc = 0;
|
|
||||||
if (!(e->str = (char *)malloc(e->alloc = CHUNKLEN)))
|
|
||||||
return ECORE_CONFIG_ERR_OOM;
|
|
||||||
}
|
|
||||||
|
|
||||||
va_start(ap, fmt);
|
|
||||||
need = vsnprintf(NULL, 0, fmt, ap);
|
|
||||||
va_end(ap);
|
|
||||||
|
|
||||||
if (need >= (e->alloc - e->used))
|
|
||||||
{
|
|
||||||
e->alloc = e->used + need + (CHUNKLEN - (need % CHUNKLEN));
|
|
||||||
|
|
||||||
if (!(p = (char *)realloc(e->str, e->alloc)))
|
|
||||||
{
|
|
||||||
free(e->str);
|
|
||||||
e->alloc = e->used = 0;
|
|
||||||
return ECORE_CONFIG_ERR_OOM;
|
|
||||||
}
|
|
||||||
e->str = p;
|
|
||||||
}
|
|
||||||
|
|
||||||
va_start(ap, fmt);
|
|
||||||
need = vsnprintf(e->str + e->used, e->alloc - e->used, fmt, ap);
|
|
||||||
va_end(ap);
|
|
||||||
|
|
||||||
return e->used += need;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
esprintf(char **result, const char *fmt, ...)
|
|
||||||
{
|
|
||||||
va_list ap;
|
|
||||||
size_t need;
|
|
||||||
char *n;
|
|
||||||
|
|
||||||
if (!result)
|
|
||||||
return ECORE_CONFIG_ERR_FAIL;
|
|
||||||
|
|
||||||
va_start(ap, fmt);
|
|
||||||
need = vsnprintf(NULL, 0, fmt, ap) + 1;
|
|
||||||
va_end(ap);
|
|
||||||
n = malloc(need + 1);
|
|
||||||
|
|
||||||
if (n)
|
|
||||||
{
|
|
||||||
va_start(ap, fmt);
|
|
||||||
need = vsnprintf(n, need, fmt, ap);
|
|
||||||
va_end(ap);
|
|
||||||
|
|
||||||
n[need] = 0;
|
|
||||||
|
|
||||||
if(*result)
|
|
||||||
free(result);
|
|
||||||
*result = n;
|
|
||||||
|
|
||||||
return need;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ECORE_CONFIG_ERR_OOM;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|