diff --git a/legacy/edje/AUTHORS b/legacy/edje/AUTHORS new file mode 100644 index 0000000000..7bf31c1234 --- /dev/null +++ b/legacy/edje/AUTHORS @@ -0,0 +1,2 @@ +The Rasterman (Carsten Haitzler) + diff --git a/legacy/edje/COPYING b/legacy/edje/COPYING new file mode 100644 index 0000000000..474fcc5faa --- /dev/null +++ b/legacy/edje/COPYING @@ -0,0 +1,28 @@ +Copyright (C) 2000 Carsten Haitzler and various contributors (see AUTHORS) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies of the Software and its Copyright notices. In addition publicly +documented acknowledgment must be given that this software has been used if no +source code of this software is made available publicly. This includes +acknowledgments in either Copyright notices, Manuals, Publicity and Marketing +documents or any documentation provided with any product containing this +software. This License does not apply to any software that links to the +libraries provided by this software (statically or dynamically), but only to +the software provided. + +Please see the COPYING.PLAIN for a plain-english explanation of this notice +and it's intent. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/legacy/edje/COPYING-PLAIN b/legacy/edje/COPYING-PLAIN new file mode 100644 index 0000000000..376875e868 --- /dev/null +++ b/legacy/edje/COPYING-PLAIN @@ -0,0 +1,33 @@ +Plain English Copyright Notice + +This file is not intended to be the actual License. The reason this file +exists is that we here are programmers and engineers. We aren't lawyers. We +provide licenses that we THINK say the right things, but we have our own +intentions at heart. This is a plain-english explanation of what those +intentions are, and if you follow them you will be within the "spirit" of +the license. + +The intent is for us to enjoy writing software that is useful to us (the +AUTHORS) and allow others to use it freely and also benefit from the work we +put into making it. We don't want to restrict others using it. They should +not *HAVE* to make the source code of the applications they write that +simply link to these libraries (be that statically or dynamically), or for +them to be limited as to what license they choose to use (be it open, closed +or anything else). But we would like to know you are using these libraries. +We simply would like to know that it has been useful to someone. This is why +we ask for acknowledgement of some sort. + +You can do what you want with the source of this software - it doesn't +matter. We still have it here for ourselves and it is open and free to use +and download and play with. It can't be taken away. We don't really mind what +you do with the source to your software. We would simply like to know that +you are using it - especially if it makes it to a commerical product. If you +simply e-mail all the AUTHORS (see COPYING and AUTHORS files) telling us, and +then make sure you include a paragraph or page in the manual for the product +with the copyright notice and state that you used this software, we will be +very happy. If you want to contribute back modifications and fixes you may have +made we will welcome those too with open arms (generally). If you want help +with changes needed, ports needed or features to be added, arrangements can +be easily made with some dialogue. + +Carsten Haitzler diff --git a/legacy/edje/Doxyfile b/legacy/edje/Doxyfile new file mode 100644 index 0000000000..b5717aa5e0 --- /dev/null +++ b/legacy/edje/Doxyfile @@ -0,0 +1,145 @@ +PROJECT_NAME = Edje +PROJECT_NUMBER = +OUTPUT_DIRECTORY = doc +INPUT = edje.c +IMAGE_PATH = doc/img +OUTPUT_LANGUAGE = English +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = doc/head.html +HTML_FOOTER = doc/foot.html +HTML_STYLESHEET = doc/edje.css +HTML_ALIGN_MEMBERS = YES +ENUM_VALUES_PER_LINE = 1 +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = NO +HIDE_UNDOC_MEMBERS = YES +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = YES +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +INTERNAL_DOCS = NO +STRIP_CODE_COMMENTS = YES +CASE_SENSE_NAMES = YES +SHORT_NAMES = NO +HIDE_SCOPE_NAMES = NO +VERBATIM_HEADERS = NO +SHOW_INCLUDE_FILES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +DISTRIBUTE_GROUP_DOC = NO +TAB_SIZE = 2 +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ALIASES = +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = NO +SHOW_USED_FILES = NO +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +FILE_PATTERNS = +RECURSIVE = NO +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +INPUT_FILTER = +FILTER_SOURCE_FILES = NO +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 2 +IGNORE_PREFIX = +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +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 +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_SCHEMA = +XML_DTD = +GENERATE_AUTOGEN_DEF = NO +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = NO +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +CLASS_DIAGRAMS = NO +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = NO +COLLABORATION_GRAPH = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = NO +INCLUDED_BY_GRAPH = NO +GRAPHICAL_HIERARCHY = NO +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 512 +MAX_DOT_GRAPH_HEIGHT = 512 +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +SEARCHENGINE = NO +CGI_NAME = search.cgi +CGI_URL = +DOC_URL = +DOC_ABSPATH = +BIN_ABSPATH = /usr/bin/ +EXT_DOC_PATHS = diff --git a/legacy/edje/INSTALL b/legacy/edje/INSTALL new file mode 100644 index 0000000000..c7bf98a033 --- /dev/null +++ b/legacy/edje/INSTALL @@ -0,0 +1,14 @@ +COMPILING and INSTALLING: + +If you got a official release tar archive do: + ./configure + +( otherwise if you got this from enlightenment cvs do: ./autogen.sh ) + +Then to compile: + make + +To install (run this as root, or the user who handles installs): + make install + +NOTE: You MUST make install Edje for it to run properly. diff --git a/legacy/edje/Makefile.am b/legacy/edje/Makefile.am new file mode 100644 index 0000000000..253fa0479a --- /dev/null +++ b/legacy/edje/Makefile.am @@ -0,0 +1,18 @@ +## Process this file with automake to produce Makefile.in + +SUBDIRS = src + +MAINTAINERCLEANFILES = Makefile.in aclocal.m4 config.guess \ + config.h.in config.sub configure install-sh \ + ltconfig ltmain.sh missing mkinstalldirs \ + stamp-h.in edje_docs.tar edje_docs.tar.gz edje.c + +dist-hook: + ./gendoc; \ + tar cvf edje_docs.tar doc; \ + rm -f edje_docs.tar.gz; \ + gzip -9 edje_docs.tar; + +bin_SCRIPTS = edje-config + +EXTRA_DIST = README AUTHORS COPYING COPYING-PLAIN edje.spec edje.c.in gendoc Doxyfile edje_docs.tar.gz diff --git a/legacy/edje/README b/legacy/edje/README new file mode 100644 index 0000000000..aaa380d4bf --- /dev/null +++ b/legacy/edje/README @@ -0,0 +1 @@ +Edje 0.0.1 diff --git a/legacy/edje/acconfig.h b/legacy/edje/acconfig.h new file mode 100644 index 0000000000..bd2bb91752 --- /dev/null +++ b/legacy/edje/acconfig.h @@ -0,0 +1,3 @@ +#undef PACKAGE_SOURCE_DIR +#undef PACKAGE_BIN_DIR +#undef PACKAGE_LIB_DIR diff --git a/legacy/edje/autogen.sh b/legacy/edje/autogen.sh new file mode 100755 index 0000000000..9226176c74 --- /dev/null +++ b/legacy/edje/autogen.sh @@ -0,0 +1,137 @@ +#!/bin/sh +# Run this to generate all the initial makefiles, etc. + +srcdir=`dirname $0` +PKG_NAME="the package." + +DIE=0 + +(autoconf --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`autoconf' installed to." + echo "Download the appropriate package for your distribution," + echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" + DIE=1 +} + +(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && { + (libtool --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`libtool' installed." + echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.2d.tar.gz" + echo "(or a newer version if it is available)" + DIE=1 + } +} + +grep "^AM_GNU_GETTEXT" $srcdir/configure.in >/dev/null && { + grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \ + (gettext --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`gettext' installed." + echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz" + echo "(or a newer version if it is available)" + DIE=1 + } +} + +(automake --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`automake' installed." + echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" + echo "(or a newer version if it is available)" + DIE=1 + NO_AUTOMAKE=yes +} + + +# if no automake, don't bother testing for aclocal +test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: Missing \`aclocal'. The version of \`automake'" + echo "installed doesn't appear recent enough." + echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" + echo "(or a newer version if it is available)" + DIE=1 +} + +if test "$DIE" -eq 1; then + exit 1 +fi + +if test -z "$*"; then + echo "**Warning**: I am going to run \`configure' with no arguments." + echo "If you wish to pass any to it, please specify them on the" + echo \`$0\'" command line." + echo +fi + +case $CC in +xlc ) + am_opt=--include-deps;; +esac + +for coin in `find $srcdir -name configure.in -print` +do + dr=`dirname $coin` + if test -f $dr/NO-AUTO-GEN; then + echo skipping $dr -- flagged as no auto-gen + else + echo processing $dr + macrodirs=`sed -n -e 's,AM_ACLOCAL_INCLUDE(\(.*\)),\1,gp' < $coin` + ( cd $dr + aclocalinclude="$ACLOCAL_FLAGS" + for k in $macrodirs; do + if test -d $k; then + aclocalinclude="$aclocalinclude -I $k" + ##else + ## echo "**Warning**: No such directory \`$k'. Ignored." + fi + done + if grep "^AM_GNU_GETTEXT" configure.in >/dev/null; then + if grep "sed.*POTFILES" configure.in >/dev/null; then + : do nothing -- we still have an old unmodified configure.in + else + echo "Creating $dr/aclocal.m4 ..." + test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 + echo "Running gettextize... Ignore non-fatal messages." + echo "no" | gettextize --force --copy + echo "Making $dr/aclocal.m4 writable ..." + test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 + fi + fi + if grep "^AM_GNOME_GETTEXT" configure.in >/dev/null; then + echo "Creating $dr/aclocal.m4 ..." + test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 + echo "Running gettextize... Ignore non-fatal messages." + echo "no" | gettextize --force --copy + echo "Making $dr/aclocal.m4 writable ..." + test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 + fi + if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then + echo "Running libtoolize..." + libtoolize --force --copy + fi + echo "Running aclocal $aclocalinclude ..." + aclocal $aclocalinclude + if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then + echo "Running autoheader..." + autoheader + fi + echo "Running automake --gnu $am_opt ..." + automake --add-missing --gnu $am_opt + echo "Running autoconf ..." + autoconf + ) + fi +done + +#conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c + +if test x$NOCONFIGURE = x; then + echo Running $srcdir/configure $conf_flags "$@" ... + $srcdir/configure $conf_flags "$@" \ + && echo Now type \`make\' to compile $PKG_NAME +else + echo Skipping configure process. +fi diff --git a/legacy/edje/configure.in b/legacy/edje/configure.in new file mode 100644 index 0000000000..f3498b30b9 --- /dev/null +++ b/legacy/edje/configure.in @@ -0,0 +1,86 @@ +dnl Process this file with autoconf to produce a configure script. + +# get rid of that stupid cache mechanism +rm -f config.cache + +AC_INIT(configure.in) +AM_INIT_AUTOMAKE(edje, 0.0.1) +AM_CONFIG_HEADER(config.h) + +AC_ISC_POSIX +AC_PROG_CC +AM_PROG_CC_STDC +AC_HEADER_STDC +AC_C_CONST +AM_ENABLE_SHARED +AM_PROG_LIBTOOL + +if test "x${exec_prefix}" = "xNONE"; then + if test "x${prefix}" = "xNONE"; then + bindir="${ac_default_prefix}/bin"; + else + bindir="${prefix}/bin"; + fi +else + if test "x${prefix}" = "xNONE"; then + bindir="${ac_default_prefix}/bin"; + else + bindir="${prefix}/bin"; + fi +fi + +if test "x${exec_prefix}" = "xNONE"; then + if test "x${prefix}" = "xNONE"; then + libdir="${ac_default_prefix}/lib"; + else + libdir="${prefix}/lib"; + fi +else + if test "x${prefix}" = "xNONE"; then + libdir="${ac_default_prefix}/lib"; + else + libdir="${prefix}/lib"; + fi +fi + +dnl Set PACKAGE_BIN_DIR in config.h. +if test "x${bindir}" = 'xNONE'; then + if test "x${prefix}" = "xNONE"; then + AC_DEFINE_UNQUOTED(PACKAGE_BIN_DIR, "${ac_default_prefix}/bin") + else + AC_DEFINE_UNQUOTED(PACKAGE_BIN_DIR, "${prefix}/bin") + fi +else + AC_DEFINE_UNQUOTED(PACKAGE_BIN_DIR, "${bindir}") +fi + +dnl Set PACKAGE_LIB_DIR in config.h. +if test "x${libdir}" = 'xNONE'; then + if test "x${prefix}" = "xNONE"; then + AC_DEFINE_UNQUOTED(PACKAGE_LIB_DIR, "${ac_default_prefix}/lib") + else + AC_DEFINE_UNQUOTED(PACKAGE_LIB_DIR, "${prefix}/lib") + fi +else + AC_DEFINE_UNQUOTED(PACKAGE_LIB_DIR, "${libdir}") +fi + +dnl Set PACKAGE_SOURCE_DIR in config.h. +packagesrcdir=`cd $srcdir && pwd` +AC_DEFINE_UNQUOTED(PACKAGE_SOURCE_DIR, "${packagesrcdir}") + +my_includes=`eet-config --cflags`" "`evas-config --cflags`" "`ecore-config --cflags` +my_libs=`eet-config --libs`" "`evas-config --libs`" "`ecore-config --libs` +AC_SUBST(my_includes) +AC_SUBST(my_libs) + +AC_OUTPUT([ +Makefile +src/Makefile +src/lib/Makefile +src/bin/Makefile +edje-config +],[ +chmod +x edje-config +touch edje_docs.tar.gz +]) diff --git a/legacy/edje/doc/edje.css b/legacy/edje/doc/edje.css new file mode 100644 index 0000000000..6117b397ba --- /dev/null +++ b/legacy/edje/doc/edje.css @@ -0,0 +1,178 @@ +td.md { + background-color: #ffffff; + font-family: monospace; + text-align: left; + vertical-align: center; + font-size: 10; + padding-right : 1px; + padding-top : 1px; + padding-left : 1px; + padding-bottom : 1px; + margin-left : 1px; + margin-right : 1px; + margin-top : 1px; + margin-bottom : 1px +} +td.mdname { + font-family: monospace; + text-align: left; + vertical-align: center; + font-size: 10; + padding-right : 1px; + padding-top : 1px; + padding-left : 1px; + padding-bottom : 1px; + margin-left : 1px; + margin-right : 1px; + margin-top : 1px; + margin-bottom : 1px +} +h1 +{ + text-align: center; + color: #333333 +} +h2 +{ + text-align: left; + color: #333333 +} +h3 +{ + text-align: left; + color: #333333 +} +a:link +{ + text-decoration: none; + color: #444444; + font-weight: bold; +} +a:visited +{ + text-decoration: none; + color: #666666; + font-weight: bold; +} +a:hover +{ + text-decoration: none; + color: #000000; + font-weight: bold; +} +a.nav:link +{ + text-decoration: none; + color: #444444; + font-weight: normal; +} +a.nav:visited +{ + text-decoration: none; + color: #666666; + font-weight: normal; +} +a.nav:hover +{ + text-decoration: none; + color: #000000; + font-weight: normal; +} +a.qindex:link +{ + text-decoration: none; + color: #444444; + font-weight: normal; +} +a.qindex:visited +{ + text-decoration: none; + color: #666666; + font-weight: normal; +} +a.qindex:hover +{ + text-decoration: none; + color: #000000; + font-weight: normal; +} +p +{ + color: #000000; + font-family: sans-serif; + font-size: 10; +} +body { + background-image: url("hilite.png"); + background-repeat: no-repeat; + background-position: left top; + background-color: #dddddd; + color: #000000; + font-family: sans-serif; + padding: 8px; + margin: 0; +} +div.fragment +{ + background-image: url("hilite.png"); + background-repeat: no-repeat; + background-position: left top; + border: thin solid #888888; + background-color: #eeeeee; + padding: 4px; + text-align: left; + vertical-align: center; + font-size: 12; +} +hr +{ + border: 0; + background-color: #000000; + width: 80%; + height: 1; +} +dl +{ + background-image: url("hilite.png"); + background-repeat: no-repeat; + background-position: left top; + border: thin solid #aaaaaa; + background-color: #eeeeee; + padding: 4px; + text-align: left; + vertical-align: center; + font-size: 12; +} +em +{ + color: #334466; + font-family: courier; + font-size: 10; + font-style: normal; +} + +div.nav +{ + border: thin solid #000000; + background-color: #ffffff; + padding: 1px; + text-align: center; + vertical-align: center; + font-size: 12; +} +div.body +{ + border: thin solid #000000; + background-color: #ffffff; + padding: 4px; + text-align: left; + font-size: 10; +} +div.diag +{ + border: thin solid #888888; + background-color: #eeeeee; + padding: 4px; + text-align: center; + font-size: 8; +} diff --git a/legacy/edje/doc/foot.html b/legacy/edje/doc/foot.html new file mode 100644 index 0000000000..308b1d01b6 --- /dev/null +++ b/legacy/edje/doc/foot.html @@ -0,0 +1,2 @@ + + diff --git a/legacy/edje/doc/head.html b/legacy/edje/doc/head.html new file mode 100644 index 0000000000..60719c39f5 --- /dev/null +++ b/legacy/edje/doc/head.html @@ -0,0 +1,19 @@ + + + + +$title + + + + + + diff --git a/legacy/edje/doc/img/edje.png b/legacy/edje/doc/img/edje.png new file mode 100644 index 0000000000..47597a8d44 Binary files /dev/null and b/legacy/edje/doc/img/edje.png differ diff --git a/legacy/edje/doc/img/edje_big.png b/legacy/edje/doc/img/edje_big.png new file mode 100644 index 0000000000..cd818f75b1 Binary files /dev/null and b/legacy/edje/doc/img/edje_big.png differ diff --git a/legacy/edje/doc/img/edje_mini.png b/legacy/edje/doc/img/edje_mini.png new file mode 100644 index 0000000000..f4f99f0fa3 Binary files /dev/null and b/legacy/edje/doc/img/edje_mini.png differ diff --git a/legacy/edje/doc/img/edje_small.png b/legacy/edje/doc/img/edje_small.png new file mode 100644 index 0000000000..8bea36784e Binary files /dev/null and b/legacy/edje/doc/img/edje_small.png differ diff --git a/legacy/edje/doc/img/hilite.png b/legacy/edje/doc/img/hilite.png new file mode 100644 index 0000000000..88a43816ea Binary files /dev/null and b/legacy/edje/doc/img/hilite.png differ diff --git a/legacy/edje/edje-config.in b/legacy/edje/edje-config.in new file mode 100644 index 0000000000..c96bb0a561 --- /dev/null +++ b/legacy/edje/edje-config.in @@ -0,0 +1,59 @@ +#!/bin/sh + +prefix=@prefix@ +exec_prefix=@exec_prefix@ +exec_prefix_set=no + +usage="\ +Usage: evas-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--libs] [--cflags]" + +if test $# -eq 0; then + echo "${usage}" 1>&2 + exit 1 +fi + +while test $# -gt 0; do + case "$1" in + -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + case $1 in + --prefix=*) + prefix=$optarg + if test $exec_prefix_set = no ; then + exec_prefix=$optarg + fi + ;; + --prefix) + echo $prefix + ;; + --exec-prefix=*) + exec_prefix=$optarg + exec_prefix_set=yes + ;; + --exec-prefix) + echo $exec_prefix + ;; + --version) + echo @VERSION@ + ;; + --cflags) + if test @includedir@ != /usr/include ; then + includes=-I@includedir@ + fi + echo $includes + ;; + --libs) + libdirs=-L@libdir@ + echo $libdirs -ledje + ;; + *) + echo "${usage}" 1>&2 + exit 1 + ;; + esac + shift +done + +exit 0 diff --git a/legacy/edje/edje.c.in b/legacy/edje/edje.c.in new file mode 100644 index 0000000000..4e10f4cb93 --- /dev/null +++ b/legacy/edje/edje.c.in @@ -0,0 +1,59 @@ +/** +@file +@brief Edje Graphical Design Library + +These routines are used for Edje. +*/ + +/** + +@mainpage Edje Library Documentation +@image html edje.png +@version 0.0.1 +@author Carsten Haitzler +@date 2000-2002 + +@section intro What is Edje? + +A Graphical Design & Layout Library. + +It's purpose is to be a sequel to "Ebits" which to date has serviced the +needs of Enlightenment development for version 0.17. The original design +paramteres under which Ebits came about were a lot more restricted than the +resulting use of them, thus Edje was born. + +Edje is a more complex layout engine compared to Ebits. It doesn't pretend to +do containering and regular layout like a widget set. It still inherits the +more simplistic layour ideas behind Ebits, but it now does them a lot more +cleanly, allowing for easy expansion, and the ability to cover much more +ground than Ebits ever could. For the purposes of Enlightenment 0.17, Edje +should server all the purposes of creating visual elements (borders of +windows, scrollbars, etc.) and allow the deswigner the ability to animate, +layout and control the look and feel of any program using Edje as its basic +GUI constructor. This library allows for multiple collections of Layouts in +one file, sharing the same image database and thus allowing a whole theme to +be conveneintly packaged into 1 file and shipped around. + +Edje, unlike Ebits, separates the layout and behavior logic. Edje files ship +with an image database, used by all the parts in all the collections to +source graphical data. It has a directory of logical part names pointing to +the part collection entry ID in the file (thus allowing for multiple logical +names to point to the same part collection, allowing for the sharing of data +betwene display elements). Each part collection consists of a list of visual +parts, as well as a list of programs. A program is a conditionally run +program that if a particula event occurs (a button is pressed, a mouse enters +or leaves a part) will trigger an action that may affect other parts. In this +was a part collection can be "programmed" via its file as to hilight buttons +when the mouse passes over them or show hidden parts when a button is clicked +somewhere etc. The actions perfromed in changing from one state to another ar +also allowed to transition over a period of time, allowing animation. + +This separation and simplistic event driven style of programming can produce +almost any look and feel one could want for basic visual elements. Anything +more complex is likely the domain of an application or widget set that may +use Edje as a conveneient way of being able to configure parts of the display. + + +@todo Complete documentation of API + +*/ diff --git a/legacy/edje/edje.spec b/legacy/edje/edje.spec new file mode 100644 index 0000000000..400ae903c8 --- /dev/null +++ b/legacy/edje/edje.spec @@ -0,0 +1,79 @@ +# Note that this is NOT a relocatable package +%define ver 0.0.1 +%define rel 1 +%define prefix /usr + +Summary: edje +Name: edje +Version: %ver +Release: %rel +Copyright: BSD +Group: System Environment/Libraries +Source: ftp://ftp.enlightenment.org/pub/evoak/edje-%{ver}.tar.gz +BuildRoot: /var/tmp/edje-root +Packager: The Rasterman +URL: http://www.enlightenment.org/ +BuildRequires: libjpeg-devel +BuildRequires: zlib-devel +Requires: libjpeg +Requires: zlib + +Docdir: %{prefix}/doc + +%description + +Edje is a Graphical Design Library + +%package devel +Summary: Edje headers, static libraries, documentation and test programs +Group: System Environment/Libraries +Requires: %{name} = %{version} + +%description devel +Headers, static libraries, test programs and documentation for Eet + +%prep +rm -rf $RPM_BUILD_ROOT + +%setup -q + +%build +./configure --prefix=%prefix + +if [ "$SMP" != "" ]; then + (make "MAKE=make -k -j $SMP"; exit 0) + make +else + make +fi +########################################################################### + +%install +make DESTDIR=$RPM_BUILD_ROOT install + +%clean +rm -rf $RPM_BUILD_ROOT + +%post +/sbin/ldconfig + +%postun +/sbin/ldconfig + +%files +%defattr(-,root,root) +%attr(755,root,root) %{prefix}/lib/libedje.so* +%attr(755,root,root) %{prefix}/lib/libedje.la + +%files devel +%attr(755,root,root) %{prefix}/lib/libedje.a +%attr(755,root,root) %{prefix}/bin/edje* +%{prefix}/include/Edje* +%doc AUTHORS +%doc COPYING +%doc README +%doc edje_docs.tar.gz + +%changelog +* Sat Jun 23 2001 The Rasterman +- Created spec file diff --git a/legacy/edje/gendoc b/legacy/edje/gendoc new file mode 100755 index 0000000000..6a1965c958 --- /dev/null +++ b/legacy/edje/gendoc @@ -0,0 +1,12 @@ +#!/bin/sh +cp ./edje.c.in ./edje.c +for I in `find ./src/lib -name "edje.h" -print`; do + cat $I >> ./edje.c +done +#for I in `find ./src/lib -name "*.c" -print`; do +# cat $I >> ./edje.c +#done +rm -rf ./doc/html ./doc/latex ./doc/man +doxygen +cp doc/img/*.png doc/html/ +exit 0 diff --git a/legacy/edje/src/Makefile.am b/legacy/edje/src/Makefile.am new file mode 100644 index 0000000000..7b45af65b2 --- /dev/null +++ b/legacy/edje/src/Makefile.am @@ -0,0 +1,3 @@ +## Process this file with automake to produce Makefile.in + +SUBDIRS = lib bin diff --git a/legacy/edje/src/bin/Makefile.am b/legacy/edje/src/bin/Makefile.am new file mode 100644 index 0000000000..5d0d966d9d --- /dev/null +++ b/legacy/edje/src/bin/Makefile.am @@ -0,0 +1,22 @@ +## Process this file with automake to produce Makefile.in + +INCLUDES = \ +-I.. \ +-I../lib \ +-I../.. \ +-I$(top_srcdir) \ +-I$(top_builddir) \ +-I$(top_srcdir)/lib \ +-I$(top_builddir)/lib \ +-I/usr/local/include \ +@my_includes@ + +bin_PROGRAMS = edje + +edje_SOURCES = \ +edje_main.c + +edje_LDADD = \ +$(top_builddir)/src/lib/libedje.la + +edje_DEPENDENCIES = $(top_builddir)/src/lib/libedje.la diff --git a/legacy/edje/src/bin/edje.h b/legacy/edje/src/bin/edje.h new file mode 100644 index 0000000000..0cbb9f3e88 --- /dev/null +++ b/legacy/edje/src/bin/edje.h @@ -0,0 +1,4 @@ +#include +#include +#include +#include "Edje.h" diff --git a/legacy/edje/src/bin/edje_main.c b/legacy/edje/src/bin/edje_main.c new file mode 100644 index 0000000000..82b8736a6e --- /dev/null +++ b/legacy/edje/src/bin/edje_main.c @@ -0,0 +1,90 @@ +#include "edje.h" + +double start_time = 0.0; +Ecore_Evas *ecore_evas = NULL; +Evas *evas = NULL; + +static int main_start(int argc, char **argv); +static void main_stop(void); +static void main_resize(Ecore_Evas *ee); +static int main_signal_exit(void *data, int ev_type, void *ev); +static void main_delete_request(Ecore_Evas *ee); + +static int +main_start(int argc, char **argv) +{ + start_time = ecore_time_get(); + if (!ecore_init()) return -1; + ecore_app_args_set(argc, (const char **)argv); + ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, main_signal_exit, NULL); + if (!ecore_evas_init()) return -1; + if ((argc > 1) && (!strcmp(argv[1], "-fb"))) + ecore_evas = ecore_evas_fb_new(NULL, 0, 240, 320); + else if ((argc > 1) && (!strcmp(argv[1], "-x"))) + ecore_evas = ecore_evas_software_x11_new(NULL, 0, 0, 0, 240, 320); + else if ((argc > 1) && (!strcmp(argv[1], "-h"))) + { + printf("%s -x Run in X (default)\n" + "%s -fb Run in the Framebuffer\n" + "%s -h Display this help\n", + argv[0], argv[0], argv[0]); + ecore_evas_shutdown(); + ecore_shutdown(); + return 0; + } + else + ecore_evas = ecore_evas_software_x11_new(NULL, 0, 0, 0, 240, 320); + if (!ecore_evas) return -1; + ecore_evas_callback_delete_request_set(ecore_evas, main_delete_request); + ecore_evas_callback_resize_set(ecore_evas, main_resize); + ecore_evas_title_set(ecore_evas, "Evoak"); + ecore_evas_name_class_set(ecore_evas, "evoak", "main"); + ecore_evas_show(ecore_evas); + evas = ecore_evas_get(ecore_evas); + evas_image_cache_set(evas, 8192 * 1024); + evas_font_cache_set(evas, 512 * 1024); +// evas_font_path_append(evas, FN); + return 1; +} + +static void +main_stop(void) +{ + ecore_evas_shutdown(); + ecore_shutdown(); +} + +static void +main_resize(Ecore_Evas *ee) +{ + double w, h; + + evas_output_viewport_get(evas, NULL, NULL, &w, &h); + // FIXME: do something for resize +} + +static int +main_signal_exit(void *data, int ev_type, void *ev) +{ + ecore_main_loop_quit(); + return 1; +} + +static void +main_delete_request(Ecore_Evas *ee) +{ + ecore_main_loop_quit(); +} + +int +main(int argc, char **argv) +{ + if (main_start(argc, argv) < 1) return -1; + + ecore_main_loop_begin(); + + main_stop(); + + return 0; +} + diff --git a/legacy/edje/src/lib/Edje.h b/legacy/edje/src/lib/Edje.h new file mode 100644 index 0000000000..3c2dad9361 --- /dev/null +++ b/legacy/edje/src/lib/Edje.h @@ -0,0 +1,21 @@ +#ifndef _EDJE_H +#define _EDJE_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************************************************************/ +/* API here */ +/***************************************************************************/ + + Evas_Object *edje_add(Evas *evas); + void edje_file_set(Evas_Object *o, const char *file, const char *part); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/legacy/edje/src/lib/Makefile.am b/legacy/edje/src/lib/Makefile.am new file mode 100644 index 0000000000..8f42e830f4 --- /dev/null +++ b/legacy/edje/src/lib/Makefile.am @@ -0,0 +1,24 @@ +## Process this file with automake to produce Makefile.in + +AUTOMAKE_OPTIONS = 1.4 foreign + +# A list of all the files in the current directory which can be regenerated +MAINTAINERCLEANFILES = Makefile.in + +LDFLAGS = -L/usr/local/lib +INCLUDES = \ +-I/usr/local/include \ +-I$(top_srcdir) \ +-I$(top_builddir) \ +-I$(includedir) \ +@my_includes@ + +lib_LTLIBRARIES = libedje.la +include_HEADERS = Edje.h +libedje_la_SOURCES = \ +edje_main.c \ +edje_private.h + +libedje_la_LIBADD = $(LDFLAGS) @my_libs@ +libedje_la_DEPENDENCIES = $(top_builddir)/config.h +libedje_la_LDFLAGS = -version-info 0:1:0 diff --git a/legacy/edje/src/lib/edje_main.c b/legacy/edje/src/lib/edje_main.c new file mode 100644 index 0000000000..8156f9a1d3 --- /dev/null +++ b/legacy/edje/src/lib/edje_main.c @@ -0,0 +1,383 @@ +#include "Edje.h" +#include "edje_private.h" + +Edje *_edje_fetch(Evas_Object *obj); + +static void _edje_smart_add(Evas_Object * obj); +static void _edje_smart_del(Evas_Object * obj); +static void _edje_smart_layer_set(Evas_Object * obj, int layer); +static void _edje_smart_raise(Evas_Object * obj); +static void _edje_smart_lower(Evas_Object * obj); +static void _edje_smart_stack_above(Evas_Object * obj, Evas_Object * above); +static void _edje_smart_stack_below(Evas_Object * obj, Evas_Object * below); +static void _edje_smart_move(Evas_Object * obj, double x, double y); +static void _edje_smart_resize(Evas_Object * obj, double w, double h); +static void _edje_smart_show(Evas_Object * obj); +static void _edje_smart_hide(Evas_Object * obj); +static void _edje_smart_color_set(Evas_Object * obj, int r, int g, int b, int a); +static void _edje_smart_clip_set(Evas_Object * obj, Evas_Object * clip); +static void _edje_smart_clip_unset(Evas_Object * obj); + +static Evas_Smart *_edje_smart = NULL; + +Evas_Object * +edje_add(Evas *evas) +{ + if (!_edje_smart) + _edje_smart = evas_smart_new("edje", + _edje_smart_add, + _edje_smart_del, + _edje_smart_layer_set, + _edje_smart_raise, + _edje_smart_lower, + _edje_smart_stack_above, + _edje_smart_stack_below, + _edje_smart_move, + _edje_smart_resize, + _edje_smart_show, + _edje_smart_hide, + _edje_smart_color_set, + _edje_smart_clip_set, + _edje_smart_clip_unset, + NULL); + return evas_object_smart_add(evas, _edje_smart); +} + +void +edje_file_set(Evas_Object *obj, const char *file, const char *part) +{ + Edje *ed; + + ed = _edje_fetch(obj); + if (!ed) return; +} + +/*** internal calls ***/ + +/* manipulation calls */ + +static void +_edje_part_description_apply(Edje *ed, + Edje_Real_Part *ep, + Edje_Part_Description *de1, + Edje_Part_Description *de2, + double pos) +{ + if ((ep->param1.description == de1) && + (ep->param2.description == de2) && + (ep->description_pos == pos)) + return; + + ep->param1.description = de1; + ep->param2.description = de2; + ep->description_pos = pos; + + ed->dirty = 1; + ep->dirty = 1; +} + +/* calculation functions */ + +static void +_edje_part_recalc_single(Edje *ed, + Edje_Real_Part *ep, + Edje_Part_Description *desc, + Edje_Real_Part *rel1_to, + Edje_Real_Part *rel2_to, + Edje_Real_Part *confine_to, + Edje_Calc_Params *params) +{ + /* horiz */ + if (rel1_to) + { + params->x = desc->rel1.offset_x + + rel1_to->x + (desc->rel1.relative_x * rel1_to->w); + } + else + { + params->x = desc->rel1.offset_x + + (desc->rel1.relative_x * ed->w); + } + if (rel2_to) + { + params->w = desc->rel2.offset_x + + rel2_to->x + (desc->rel2.relative_x * rel2_to->w) - + params->x; + } + else + { + params->w = desc->rel2.offset_x + + (desc->rel2.relative_x * ed->w) - + params->x; + } + + /* vert */ +} + +static void +_edje_part_recalc(Edje *ed, Edje_Real_Part *ep) +{ + Edje_Calc_Params p1, p2; + + if (ep->calculated) return; + if (ep->param1.rel1_to) _edje_part_recalc(ed, ep->param1.rel1_to); + if (ep->param1.rel2_to) _edje_part_recalc(ed, ep->param1.rel2_to); + if (ep->param1.confine_to) _edje_part_recalc(ed, ep->param1.confine_to); + if (ep->param2.rel1_to) _edje_part_recalc(ed, ep->param2.rel1_to); + if (ep->param2.rel2_to) _edje_part_recalc(ed, ep->param2.rel2_to); + if (ep->param2.confine_to) _edje_part_recalc(ed, ep->param2.confine_to); + + /* actually calculate now */ + if (ep->param1.description) + _edje_part_recalc_single(ed, ep, ep->param1.description, ep->param1.rel1_to, ep->param1.rel2_to, ep->param1.confine_to, &p1); + if (ep->param2.description) + _edje_part_recalc_single(ed, ep, ep->param1.description, ep->param2.rel1_to, ep->param2.rel2_to, ep->param2.confine_to, &p2); + + ep->calculated = 1; + ep->dirty = 0; +} + +static void +_edje_recalc(Edje *ed) +{ + Evas_List *l; + + if (!ed->dirty) return; + for (l = ed->parts; l; l = l->next) + { + Edje_Real_Part *ep; + + ep = l->data; + ep->calculated = 0; + } + for (l = ed->parts; l; l = l->next) + { + Edje_Real_Part *ep; + + ep = l->data; + if (!ep->calculated) _edje_part_recalc(ed, ep); + } + ed->dirty = 0; +} + +/* utility functions we will use a lot */ + +Edje * +_edje_fetch(Evas_Object *obj) +{ + Edje *ed; + char *type; + + type = (char *)evas_object_type_get(obj); + if (!type) return NULL; + if (strcmp(type, "edje")) return NULL; + ed = evas_object_smart_data_get(obj); + return ed; +} + +/* evas smart object methods - required by evas smart objects to do the */ +/* dirty work on smrt objects */ + +static void +_edje_smart_add(Evas_Object * obj) +{ + Edje *ed; + + ed = calloc(1, sizeof(Edje)); + if (!ed) return; + evas_object_smart_data_set(obj, ed); + ed->evas = evas_object_evas_get(obj); + ed->clipper = evas_object_rectangle_add(ed->evas); + evas_object_smart_member_add(ed->clipper, obj); + evas_object_color_set(ed->clipper, 255, 255, 255, 255); + evas_object_move(ed->clipper, 0, 0); + evas_object_resize(ed->clipper, 0, 0); +} + +static void +_edje_smart_del(Evas_Object * obj) +{ + Edje *ed; + + ed = evas_object_smart_data_get(obj); + if (!ed) return; + evas_object_del(ed->clipper); + free(ed); +} + +static void +_edje_smart_layer_set(Evas_Object * obj, int layer) +{ + Edje *ed; + Evas_List *l; + + ed = evas_object_smart_data_get(obj); + if (!ed) return; + if (ed->layer == layer) return; + ed->layer = layer; + for (l = ed->parts; l; l = l->next) + { + Edje_Real_Part *ep; + + ep = l->data; + evas_object_layer_set(ep->object, ed->layer); + } +} + +static void +_edje_smart_raise(Evas_Object * obj) +{ + Edje *ed; + Evas_List *l; + + ed = evas_object_smart_data_get(obj); + if (!ed) return; + for (l = ed->parts; l; l = l->next) + { + Edje_Real_Part *ep; + + ep = l->data; + evas_object_raise(ep->object); + } +} + +static void +_edje_smart_lower(Evas_Object * obj) +{ + Edje *ed; + Evas_List *l; + + ed = evas_object_smart_data_get(obj); + if (!ed) return; + for (l = evas_list_last(ed->parts); l; l = l->prev) + { + Edje_Real_Part *ep; + + ep = l->data; + evas_object_lower(ep->object); + } +} + +static void +_edje_smart_stack_above(Evas_Object * obj, Evas_Object * above) +{ + Edje *ed; + Evas_List *l; + + ed = evas_object_smart_data_get(obj); + if (!ed) return; + for (l = evas_list_last(ed->parts); l; l = l->prev) + { + Edje_Real_Part *ep; + + ep = l->data; + evas_object_stack_above(ep->object, above); + } +} + +static void +_edje_smart_stack_below(Evas_Object * obj, Evas_Object * below) +{ + Edje *ed; + Evas_List *l; + + ed = evas_object_smart_data_get(obj); + if (!ed) return; + for (l = ed->parts; l; l = l->next) + { + Edje_Real_Part *ep; + + ep = l->data; + evas_object_stack_below(ep->object, below); + } +} + +static void +_edje_smart_move(Evas_Object * obj, double x, double y) +{ + Edje *ed; + Evas_List *l; + + ed = evas_object_smart_data_get(obj); + if (!ed) return; + ed->x = x; + ed->y = y; + + evas_object_move(ed->clipper, ed->x, ed->y); + + for (l = ed->parts; l; l = l->next) + { + Edje_Real_Part *ep; + + ep = l->data; + evas_object_move(ep->object, ed->x + ep->x, ed->y + ep->y); + } +} + +static void +_edje_smart_resize(Evas_Object * obj, double w, double h) +{ + Edje *ed; + int nw, nh; + + ed = evas_object_smart_data_get(obj); + if (!ed) return; + nw = w; + nh = h; + ed->w = w; + ed->h = h; + if ((nw == ed->w) || (nh == ed->h)) return; + evas_object_resize(ed->clipper, ed->w, ed->h); + ed->dirty = 1; + _edje_recalc(ed); +} + +static void +_edje_smart_show(Evas_Object * obj) +{ + Edje *ed; + + ed = evas_object_smart_data_get(obj); + if (!ed) return; + evas_object_show(ed->clipper); +} + +static void +_edje_smart_hide(Evas_Object * obj) +{ + Edje *ed; + + ed = evas_object_smart_data_get(obj); + if (!ed) return; + evas_object_hide(ed->clipper); +} + +static void +_edje_smart_color_set(Evas_Object * obj, int r, int g, int b, int a) +{ + Edje *ed; + + ed = evas_object_smart_data_get(obj); + if (!ed) return; + evas_object_color_set(ed->clipper, r, g, b, a); +} + +static void +_edje_smart_clip_set(Evas_Object * obj, Evas_Object * clip) +{ + Edje *ed; + + ed = evas_object_smart_data_get(obj); + if (!ed) return; + evas_object_clip_set(ed->clipper, clip); +} + +static void +_edje_smart_clip_unset(Evas_Object * obj) +{ + Edje *ed; + + ed = evas_object_smart_data_get(obj); + if (!ed) return; + evas_object_clip_unset(ed->clipper); +} diff --git a/legacy/edje/src/lib/edje_private.h b/legacy/edje/src/lib/edje_private.h new file mode 100644 index 0000000000..71386bcadc --- /dev/null +++ b/legacy/edje/src/lib/edje_private.h @@ -0,0 +1,335 @@ +#ifndef _EDJE_PRIVATE_H +#define _EDJE_PRIVATE_H + +#include "config.h" + +#include +#include +#include + +/* HOW THIS ALL WORKS: + * ------------------- + * + * A part file contains: + * a list of images stored + * the images + * a list of part collections + * the part collections + * + * A part collection contains: + * a list of programs + * a list of actions + * a list of parts + * + * when a signal is emitted and matches the conditionals of a program a + * specific action is started. that action may affect one or more parts in + * a part collection and may operate over a period of time. it may also + * spawn another action when it is done (able to loop!) over a period of + * time. A part is set into a certain state and the calculated outputs of the + * staret and end state are mixed based on the kind of tweening and time. a + * tween time of 0.0 = do it right away. an image_id list for tweening is + * also able ot be provided and shoudl be run through over time during the + * tween to the new state. + * + * the signals that can be emitted are: + * "mouse.down" + * "mouse.up" + * "mouse.in" + * "mouse.out" + * "mouse.move" + * "clicked" + * "drag.start" + * "drag" + * "drag.stop" + */ +typedef struct _Edje_File Edje_File; +typedef struct _Edje_Image_Directory Edje_Image_Directory; +typedef struct _Edje_Image_Directory_Entry Edje_Image_Directory_Entry; +typedef struct _Edje_Program Edje_Program; +typedef struct _Edje_Action_Directory Edje_Action_Directory; +typedef struct _Edje_Action Edje_Action; +typedef struct _Edje_Action_Target Edje_Action_Target; +typedef struct _Edje_Part_Collection_Directory Edje_Part_Collection_Directory; +typedef struct _Edje_Part_Collection_Directory_Entry Edje_Part_Collection_Directory_Entry; +typedef struct _Edje_Part_Collection Edje_Part_Collection; +typedef struct _Edje_Part Edje_Part; +typedef struct _Edje_Part_Image_Id Edje_Part_Image_Id; +typedef struct _Edje_Part_Description Edje_Part_Description; + +#define EDJE_PART_TYPE_NONE 0 +#define EDJE_PART_TYPE_RECTANGLE 1 +#define EDJE_PART_TYPE_TEXT 2 +#define EDJE_PART_TYPE_IMAGE 3 +#define EDJE_PART_TYPE_LAST 4 + +#define EDJE_ACTION_TYPE_NONE 0 +#define EDJE_ACTION_TYPE_STATE_SET 1 +#define EDJE_ACTION_TYPE_ACTION_STOP 2 +#define EDJE_ACTION_TYPE_DRAG_SET 3 +#define EDJE_ACTION_TYPE_LAST 4 + +#define EDJE_IMAGE_SOURCE_TYPE_NONE 0 +#define EDJE_IMAGE_SOURCE_TYPE_INLINE 1 +#define EDJE_IMAGE_SOURCE_TYPE_ABSOLUTE 2 +#define EDJE_IMAGE_SOURCE_TYPE_HOMEDIR 3 +#define EDJE_IMAGE_SOURCE_TYPE_LAST 4 + +#define EDJE_TEXT_EFFECT_NONE 0 +#define EDJE_TEXT_EFFECT_PLAIN 1 +#define EDJE_TEXT_EFFECT_OUTLINE 2 +#define EDJE_TEXT_EFFECT_SHADOW 3 +#define EDJE_TEXT_EFFECT_OUTLINE_SHADOW 4 +#define EDJE_TEXT_EFFECT_LAST 5 + +#define EDJE_TWEEN_MODE_NONE 0 +#define EDJE_TWEEN_MODE_LINEAR 1 +#define EDJE_TWEEN_MODE_SINUSOIDAL 2 +#define EDJE_TWEEN_MODE_ACCELERATE 3 +#define EDJE_TWEEN_MODE_DECELERATE 4 +#define EDJE_TWEEN_MODE_LAST 5 + +/*----------*/ + +struct _Edje_File +{ + char *path; + + Edje_Image_Directory *image_dir; + Edje_Part_Collection_Directory *collection_dir; + + Evas_List *collection_loaded; + + int references; +}; + +/*----------*/ + +struct _Edje_Image_Directory +{ + Evas_List *entries; /* a list of Edje_Image_Directory_Entry */ + + int references; +}; + +struct _Edje_Image_Directory_Entry +{ + char *entry; /* the nominal name of the image - if any */ + int source_type; /* alternate source mode. 0 = none */ + int id; /* the id no. of the image */ +}; + +/*----------*/ + +struct _Edje_Program /* a conditional program to be run */ +{ + char *emission; /* if signal emission name matches the glob here... */ + char *part; /* & if part that emitted the signal (name) matches this glob */ + int action_id; /* perform action number here */ +}; + +/*----------*/ + +struct _Edje_Action_Directory /* a list of possible actions to perform */ +{ + Evas_List *actions; /* a list of Edje_Action */ +}; + +struct _Edje_Action /* action to perfrom on parts within a part collection */ +{ + int action; /* type - set state, stop action, set drag pos etc. */ + double tween_time; /* time to graduate between current and new state */ + int tween_mode; /* how to tween - linear, sinusoidal etc. */ + char *state; /* what state of alternates to apply */ + double drag_set_rel_x; /* x drag pos to set targets to, relative to container */ + double drag_set_rel_y; /* y drag pos to set targets to, relative to container */ + int drag_set_abs_offset_x; + int drag_set_abs_offset_y; + Evas_List *targets; /* list of target parts to apply the state to */ + int end_action_id; /* id of action to run when this one finished */ +}; + +struct _Edje_Action_Target /* the target of an action */ +{ + int id; /* just the part id no, or action id no */ +}; + +/*----------*/ + +struct _Edje_Part_Collection_Directory +{ + Evas_List *entries; /* a list of Edje_Part_Collection_Directory_Entry */ + + int references; +}; + +struct _Edje_Part_Collection_Directory_Entry +{ + char *entry; /* the nominal name of the part collection */ + int id; /* the id of this named part collection */ +}; + +/*----------*/ + +struct _Edje_Part_Collection +{ + Evas_List *programs; /* a list of Edje_Program */ + Evas_List *parts; /* a list of Edje_Part */ + + int id; /* the collection id */ + + int references; +}; + +struct _Edje_Part +{ + char *name; /* the name if any of the part */ + unsigned char type; /* what type (image, rect, text) */ + int id; /* its id number */ + char *color_class; /* how to modify the color */ + char *text_class; /* how to apply/modify the font */ + Edje_Part_Description *default_desc; /* the part descriptor for default */ + Evas_List *other_desc; /* other possible descriptors */ +}; + +struct _Edje_Part_Image_Id +{ + int image_id; +}; + +struct _Edje_Part_Description +{ + struct { + char *name; /* the named state if any */ + double value; /* the value of the state (for ranges) */ + } state; + + unsigned char visible; /* is it shown */ + + struct { + char x; /* can u click & draqg this bit & which dir */ + int step_x; /* drag jumps n pixels (0 = no limit) */ + int count_x; /* drag area divided by n (0 = no limit) */ + + char y; /* can u click & drag this bit & which dir */ + int step_y; /* drag jumps n pixels (0 = no limit) */ + int count_y; /* drag area divided by n (0 = no limit) */ + + int confine_id; /* dragging within this bit, -1 = no */ + } dragable; + + int clip_to_id; /* the part id to clip this one to */ + + struct { + double x, y; /* 0 <-> 1.0 alignment within allocated space */ + } align; + + struct { + int w, h; /* min & max size, 0 = none */ + } min, max; + + struct { + int x, y; /* size stepping by n pixels, 0 = none */ + } step; + + struct { + double min, max; /* aspect = w/h */ + } aspect; + + struct { + double relative_x; + double relative_y; + int offset_x; + int offset_y; + int id; /* -1 = whole part collection, or part ID */ + } rel1, rel2; + + struct { + int id; /* the image id to use */ + Evas_List *tween_list; /* list of Edje_Part_Image_Id */ + } image; + + struct { + int l, r, t, b; /* border scaling on image fill */ + } border; + + struct { + double pos_rel_x; /* fill offset x relative to area */ + int pos_abs_x; /* fill offset x added to fill offset */ + double rel_x; /* relative size compared to area */ + int abs_x; /* size of fill added to relative fill */ + double pos_rel_y; /* fill offset y relative to area */ + int pos_abs_y; /* fill offset y added to fill offset */ + double rel_y; /* relative size compared to area */ + int abs_y; /* size of fill added to relative fill */ + } fill; + + struct { + unsigned char r, g, b, a; /* color for rect or text, shadow etc. */ + } color, color2, color3; + + struct { + char *text; /* if "" or NULL, then leave text unchanged */ + + int size; /* 0 = use user set size */ + + unsigned char effect; /* 0 = plain... */ + unsigned char fit_x; /* resize font size down to fit in x dir */ + unsigned char fit_y; /* resize font size down to fit in y dir */ + } text; +}; + +/*----------*/ + + + + + + + +typedef struct _Edje Edje; +typedef struct _Edje_Real_Part Edje_Real_Part; + +struct _Edje +{ + int layer; + int x, y, w, h; + unsigned char dirty : 1; + Evas *evas; /* the evas this edje belongs to */ + Evas_Object *clipper; /* a big rect to clip this edje to */ + Edje_File *file; /* the file the data comes form */ + Edje_Part_Collection *collection; /* the description being used */ + Evas_List *parts; /* private list of parts */ + Evas_List *actions; /* currently running actions */ +}; + +struct _Edje_Real_Part +{ + int x, y, w, h; + Evas_Object *object; + unsigned char calculated : 1; + unsigned char dirty : 1; + Edje_Part *part; + double description_pos; + struct { + Edje_Part_Description *description; + Edje_Real_Part *rel1_to; + Edje_Real_Part *rel2_to; + Edje_Real_Part *confine_to; + } param1, param2; +}; + +typedef struct _Edje_Calc_Params Edje_Calc_Params; + +struct _Edje_Calc_Params +{ + double x, y, w, h; + + struct { + double x, y, w, h; + } fill; + struct { + unsigned char r, g, b, a; + } color, color2, color3; +}; + +#endif