ecore: is now IN-EFL.

SVN revision: 80004
This commit is contained in:
Cedric BAIL 2012-12-03 04:02:58 +00:00
parent d2db7f68fd
commit d39d7438c5
140 changed files with 0 additions and 69419 deletions

View File

@ -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

View File

@ -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>

View File

@ -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.

View File

@ -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.

View File

@ -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

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -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

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -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 &copy;$year Enlightenment</td>
<td class="generated">Docs generated $datetime</td>
</tr></table>
</div>
</body>
</html>

View File

@ -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">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

View File

@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

View File

@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

View File

@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

View File

@ -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%;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

View File

@ -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@

View File

@ -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.*

View File

@ -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
}

View File

@ -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])
])

View File

@ -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

View File

@ -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
])

View File

@ -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])
])

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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])
])

View File

@ -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])
])

View File

@ -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

View File

@ -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])
])

View File

@ -1,2 +0,0 @@
cs de el eo es fr gl it ko nl pt sl

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;
}

View File

@ -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

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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();
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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();
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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();
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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();
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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();
}

View File

@ -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;
}

View File

@ -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

View File

@ -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@

View File

@ -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

View File

@ -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@

View File

@ -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

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -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);
}*/

View File

@ -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);
}

View File

@ -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 *);

View File

@ -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;
}
/*****************************************************************************/

View File

@ -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;
}
/*****************************************************************************/

View File

@ -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

View File

@ -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;
}

View File

@ -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;
}
/*****************************************************************************/

Some files were not shown because too many files have changed in this diff Show More