in we go edje... no it doesnt do anything useful at the moment...


			
			
				devs/devilhorns/wayland_egl
			
			
		
Carsten Haitzler 20 years ago
parent d744ab1f70
commit 664d811ff9
  1. 2
      legacy/edje/AUTHORS
  2. 28
      legacy/edje/COPYING
  3. 33
      legacy/edje/COPYING-PLAIN
  4. 145
      legacy/edje/Doxyfile
  5. 14
      legacy/edje/INSTALL
  6. 18
      legacy/edje/Makefile.am
  7. 1
      legacy/edje/README
  8. 3
      legacy/edje/acconfig.h
  9. 137
      legacy/edje/autogen.sh
  10. 86
      legacy/edje/configure.in
  11. 178
      legacy/edje/doc/edje.css
  12. 2
      legacy/edje/doc/foot.html
  13. 19
      legacy/edje/doc/head.html
  14. BIN
      legacy/edje/doc/img/edje.png
  15. BIN
      legacy/edje/doc/img/edje_big.png
  16. BIN
      legacy/edje/doc/img/edje_mini.png
  17. BIN
      legacy/edje/doc/img/edje_small.png
  18. BIN
      legacy/edje/doc/img/hilite.png
  19. 59
      legacy/edje/edje-config.in
  20. 59
      legacy/edje/edje.c.in
  21. 79
      legacy/edje/edje.spec
  22. 12
      legacy/edje/gendoc
  23. 3
      legacy/edje/src/Makefile.am
  24. 22
      legacy/edje/src/bin/Makefile.am
  25. 4
      legacy/edje/src/bin/edje.h
  26. 90
      legacy/edje/src/bin/edje_main.c
  27. 21
      legacy/edje/src/lib/Edje.h
  28. 24
      legacy/edje/src/lib/Makefile.am
  29. 383
      legacy/edje/src/lib/edje_main.c
  30. 335
      legacy/edje/src/lib/edje_private.h

@ -0,0 +1,2 @@
The Rasterman (Carsten Haitzler) <raster@rasterman.com>

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

@ -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 <raster@rasterman.com>

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

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

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

@ -0,0 +1 @@
Edje 0.0.1

@ -0,0 +1,3 @@
#undef PACKAGE_SOURCE_DIR
#undef PACKAGE_BIN_DIR
#undef PACKAGE_LIB_DIR

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

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

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

@ -0,0 +1,2 @@
</body>
</html>

@ -0,0 +1,19 @@
<html>
<head>
<title>$title</title>
<link href=edje.css rel=stylesheet type=text/css>
</head>
<body>
<div class=nav>
<table border=0 align=center><tr>
<td width=16><img src=edje_mini.png width=16 height=16 alt=E></td>
<td width=100% align=center>
E : V : O : A : K
</td>
<td width=16><img src=edje_mini.png width=16 height=16 alt=E></td>
</tr></table>
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 915 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 753 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

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

@ -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 <raster@rasterman.com>
@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
*/

@ -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 <raster@rasterman.com>
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 <raster@rasterman.com>
- Created spec file

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

@ -0,0 +1,3 @@
## Process this file with automake to produce Makefile.in
SUBDIRS = lib bin

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

@ -0,0 +1,4 @@
#include <Evas.h>
#include <Ecore.h>
#include <Ecore_Evas.h>
#include "Edje.h"

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

@ -0,0 +1,21 @@
#ifndef _EDJE_H
#define _EDJE_H
#include <Evas.h>
#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

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

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