add expedite to cvs! finally! :) it's in decent shape.


			
			
				expedite-1.1
			
			
		
Carsten Haitzler 16 years ago
commit 502d62417d
  1. 2
      AUTHORS
  2. 28
      COPYING
  3. 33
      COPYING-PLAIN
  4. 0
      ChangeLog
  5. 14
      INSTALL
  6. 8
      Makefile.am
  7. 0
      NEWS
  8. 3
      README
  9. 16
      autogen.sh
  10. 80
      configure.in
  11. BIN
      data/Kochi.ttf
  12. 45
      data/Makefile.am
  13. BIN
      data/Vera.ttf
  14. BIN
      data/VeraBI.ttf
  15. BIN
      data/VeraBd.ttf
  16. BIN
      data/VeraIt.ttf
  17. BIN
      data/VeraMoBI.ttf
  18. BIN
      data/VeraMoBd.ttf
  19. BIN
      data/VeraMoIt.ttf
  20. BIN
      data/VeraMono.ttf
  21. BIN
      data/VeraSe.ttf
  22. BIN
      data/VeraSeBd.ttf
  23. BIN
      data/bar.png
  24. BIN
      data/bg.png
  25. BIN
      data/bg2.png
  26. BIN
      data/bug.png
  27. BIN
      data/bulb.png
  28. BIN
      data/camera.png
  29. BIN
      data/colorbox.png
  30. BIN
      data/e.png
  31. BIN
      data/error.png
  32. BIN
      data/exit.png
  33. BIN
      data/flower.png
  34. BIN
      data/frame.png
  35. BIN
      data/house.png
  36. BIN
      data/icon_sel.png
  37. BIN
      data/icon_sel2.png
  38. BIN
      data/im1.png
  39. BIN
      data/im2.png
  40. BIN
      data/image.png
  41. BIN
      data/logo.png
  42. BIN
      data/mushroom.png
  43. BIN
      data/pan.png
  44. BIN
      data/pulse.png
  45. BIN
      data/text_sel.png
  46. BIN
      data/tp.png
  47. BIN
      data/typewriter.png
  48. BIN
      data/warning.png
  49. BIN
      data/watch.png
  50. 21
      expedite.oe
  51. 60
      expedite.spec
  52. 2
      src/Makefile.am
  53. 45
      src/bin/Makefile.am
  54. 78
      src/bin/about.c
  55. 6
      src/bin/about.h
  56. 206
      src/bin/engine_gl_x11.c
  57. 7
      src/bin/engine_gl_x11.h
  58. 208
      src/bin/engine_software_x11.c
  59. 7
      src/bin/engine_software_x11.h
  60. 203
      src/bin/engine_xrender_x11.c
  61. 7
      src/bin/engine_xrender_x11.h
  62. 104
      src/bin/image_blend_border.c
  63. 105
      src/bin/image_blend_border_recolor.c
  64. 104
      src/bin/image_blend_nearest_scaled.c
  65. 104
      src/bin/image_blend_nearest_solid_scaled.c
  66. 104
      src/bin/image_blend_smooth_scaled.c
  67. 104
      src/bin/image_blend_smooth_solid_scaled.c
  68. 104
      src/bin/image_blend_solid_border.c
  69. 101
      src/bin/image_blend_solid_unscaled.c
  70. 101
      src/bin/image_blend_unscaled.c
  71. 101
      src/bin/image_crossfade.c
  72. 118
      src/bin/image_data_argb.c
  73. 129
      src/bin/image_data_argb_alpha.c
  74. 140
      src/bin/image_data_ycbcr601pl.c
  75. 104
      src/bin/image_quality_scale.c
  76. 1147
      src/bin/main.c
  77. 49
      src/bin/main.h
  78. 109
      src/bin/rect_blend.c
  79. 112
      src/bin/rect_blend_few.c
  80. 109
      src/bin/rect_solid.c
  81. 112
      src/bin/rect_solid_few.c
  82. 24
      src/bin/tests.h
  83. 102
      src/bin/text_basic.c
  84. 126
      src/bin/text_change.c
  85. 111
      src/bin/text_styles.c
  86. 123
      src/bin/text_styles_different_strings.c
  87. 185
      src/bin/textblock_basic.c
  88. 156
      src/bin/textblock_intl.c
  89. 529
      src/bin/ui.c
  90. 10
      src/bin/ui.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,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 Expedite for it to run properly.

@ -0,0 +1,8 @@
SUBDIRS = src data
MAINTAINERCLEANFILES = Makefile.in aclocal.m4 config.guess \
config.h.in config.sub configure install-sh \
ltconfig ltmain.sh missing mkinstalldirs \
stamp-h.in acconfig.h
EXTRA_DIST = README AUTHORS COPYING COPYING-PLAIN expedite.spec

@ -0,0 +1,3 @@
Eexpedite 0.6.0
This is meant to be a detailed and comprehensive benchmark suite for Evas.

@ -0,0 +1,16 @@
#!/bin/sh
rm -rf autom4te.cache
rm -f aclocal.m4 ltmain.sh
touch README
echo "Running aclocal..." ; aclocal $ACLOCAL_FLAGS || 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
if [ -z "$NOCONFIGURE" ]; then
./configure "$@"
fi

@ -0,0 +1,80 @@
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(expedite, 0.6.0)
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${bindir}" = 'xNONE'; then
if test "x${prefix}" = "xNONE"; then
PACKAGE_BIN_DIR="${ac_default_prefix}/bin"
else
PACKAGE_BIN_DIR="${prefix}/bin"
fi
else
PACKAGE_BIN_DIR="${bindir}"
fi
AC_SUBST(PACKAGE_BIN_DIR)
if test "x${libdir}" = 'xNONE'; then
if test "x${prefix}" = "xNONE"; then
PACKAGE_LIB_DIR="${ac_default_prefix}/lib"
else
PACKAGE_LIB_DIR="${prefix}/lib"
fi
else
PACKAGE_LIB_DIR="${libdir}"
fi
AC_SUBST(PACKAGE_LIB_DIR)
if test "x${prefix}" = "xNONE"; then
PACKAGE_DATA_DIR="${ac_default_prefix}/share/${PACKAGE}"
else
PACKAGE_DATA_DIR="${prefix}/share/${PACKAGE}"
fi
AC_SUBST(PACKAGE_DATA_DIR)
PKG_CHECK_MODULES([EVAS], evas)
PCFLAGS=$CFLAGS
CFLAGS="$EVAS_CFLAGS $CFLAGS"
AC_CHECK_HEADER(Evas_Engine_GL_X11.h,
[ AC_DEFINE(HAVE_EVAS_GL, 1, [Evas GL Engine Support]) ],
[ dummy=no ],
[ #include <Evas.h> ]
)
AC_CHECK_HEADER(Evas_Engine_Software_X11.h,
[ AC_DEFINE(HAVE_SOFTWARE_X11, 1, [Evas Software X11 Engine Support]) ],
[ dummy=no ],
[ #include <Evas.h> ]
)
AC_CHECK_HEADER(Evas_Engine_XRender_X11.h,
[ AC_DEFINE(HAVE_XRENDER_X11, 1, [Evas XRender X11 Engine Support]) ],
[ dummy=no ],
[ #include <Evas.h> ]
)
CFLAGS=$PCFLAGS
AC_PATH_XTRA
x_dir=${x_dir:-/usr/X11R6}
x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}}
x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext"
AC_SUBST(x_cflags)
AC_SUBST(x_libs)
AC_OUTPUT([
Makefile
src/Makefile
src/bin/Makefile
data/Makefile
])

Binary file not shown.

@ -0,0 +1,45 @@
MAINTAINERCLEANFILES = Makefile.in
filesdir = $(datadir)/expedite/data
files_DATA = \
Kochi.ttf \
Vera.ttf \
VeraBI.ttf \
VeraBd.ttf \
VeraIt.ttf \
VeraMoBI.ttf \
VeraMoBd.ttf \
VeraMoIt.ttf \
VeraMono.ttf \
VeraSe.ttf \
VeraSeBd.ttf \
fonts.alias \
fonts.dir \
bg.png \
logo.png \
e.png \
image.png \
bar.png \
frame.png \
pan.png \
tp.png \
tp.yuv \
icon_sel.png \
icon_sel2.png \
text_sel.png \
exit.png \
watch.png \
bug.png \
bulb.png \
camera.png \
colorbox.png \
error.png \
flower.png \
house.png \
mushroom.png \
pulse.png \
typewriter.png \
warning.png \
im1.png \
im2.png
EXTRA_DIST = $(files_DATA)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 555 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

@ -0,0 +1,21 @@
DESCRIPTION = "Expedite Evas benchmark/test suite"
HOMEPAGE = "http://www.enlightenment.org"
MAINTAINER = "Carsten Haitzler (Rasterman) <raster@rasterman.com>"
SECTION = "e/test"
PRIORITY = "optional"
DEPENDS = "evas"
PV = "0.6.0"
PR = "1"
do_prepsources () {
make clean distclean || true
}
addtask prepsources after do_fetch before do_unpack
SRC_URI = "file://./"
S = "${WORKDIR}/expedite"
inherit autotools pkgconfig binconfig
EXTRA_OECONF = ""
FILES_${PN} = "${bindir}/* ${datadir}"

@ -0,0 +1,60 @@
# Note that this is NOT a relocatable package
%define ver 0.6.0
%define rel 1
%define prefix /usr
Summary: expedite
Name: expedite
Version: %ver
Release: %rel
Copyright: BSD
Group: System Environment/Desktops
Source: ftp://ftp.enlightenment.org/pub/enlightenment/expedite-%{ver}.tar.gz
BuildRoot: /var/tmp/expedite-root
Packager: The Rasterman <raster@rasterman.com>
URL: http://www.enlightenment.org/
BuildRequires: evas-devel
Requires: evas
%description
Expedite Evas benchmark/test suite
%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
%postun
%files
%defattr(-,root,root)
%attr(755,root,root) %{prefix}/bin/*
%attr(755,root,root) %{prefix}/share/expedite
%doc AUTHORS
%doc COPYING
%doc COPYING-PLAIN
%doc README
%changelog
* Sat Jun 23 2001 The Rasterman <raster@rasterman.com>
- Created spec file

@ -0,0 +1,2 @@
MAINTAINERCLEANFILES = Makefile.in
SUBDIRS = bin

@ -0,0 +1,45 @@
MAINTAINERCLEANFILES = Makefile.in
INCLUDES = -I$(includedir) \
-I$(top_srcdir) \
-I$(top_srcdir)/src/bin \
@EVAS_CFLAGS@ @x_cflags@ \
-DPACKAGE_BIN_DIR=\"@PACKAGE_BIN_DIR@\" \
-DPACKAGE_LIB_DIR=\"@PACKAGE_LIB_DIR@\" \
-DPACKAGE_DATA_DIR=\"@PACKAGE_DATA_DIR@\"
bin_PROGRAMS = expedite
expedite_SOURCES = \
main.c main.h \
engine_software_x11.c engine_software_x11.h \
engine_gl_x11.c engine_gl_x11.h \
engine_xrender_x11.c engine_xrender_x11.h \
ui.c ui.h \
about.c about.h \
tests.h \
image_blend_unscaled.c \
image_blend_solid_unscaled.c \
image_blend_nearest_scaled.c \
image_blend_nearest_solid_scaled.c \
image_blend_smooth_scaled.c \
image_blend_smooth_solid_scaled.c \
image_blend_border.c \
image_blend_solid_border.c \
image_blend_border_recolor.c \
image_quality_scale.c \
image_data_argb.c \
image_data_argb_alpha.c \
image_data_ycbcr601pl.c \
image_crossfade.c \
text_basic.c \
text_styles.c \
text_styles_different_strings.c \
text_change.c \
textblock_basic.c \
textblock_intl.c \
rect_blend.c \
rect_solid.c \
rect_blend_few.c \
rect_solid_few.c
expedite_LDFLAGS = @EVAS_LIBS@ @x_libs@ -lm

@ -0,0 +1,78 @@
#include "main.h"
static Evas_Object *o_text = NULL;
static void
_setup(void)
{
Evas_Object *o;
Evas_Textblock_Style *st;
o = evas_object_textblock_add(evas);
evas_object_move(o, 10, 40);
evas_object_resize(o, win_w - 20, win_h - 50);
evas_object_show(o);
st = evas_textblock_style_new();
evas_textblock_style_set
(st,
"DEFAULT='font=Vera font_size=8 align=left color=#000 wrap=word'"
"center='+ font=Vera font_size=10 align=center'"
"/center='- \n \n'"
"p='+ font=Vera font_size=10 align=left'"
"/p='- \n \n'"
);
evas_object_textblock_style_set(o, st);
evas_textblock_style_free(st);
evas_object_textblock_clear(o);
evas_object_textblock_text_markup_set
(o,
"<center>"
"Enlightenment used to be a window manager project, but "
"since has changed a lot to become a miniature desktop and mobile "
"device environment all of its own. It is now made up of many "
"components (libraries and applications) that have specific uses. "
"It is very large, and so requires more testing and demonstration."
"</center>"
"<center>"
"Expedite is a full test suite for Evas, which is one of the "
"core components of the Enlightenment Foundation Libraries. Evas "
"handles the realtime display canvas used by EFL applications to "
"render to many targets, including framebuffer, X11, OpenGL, memory, "
"DirectFB and other targets to boot. It handles high level graphic "
"layout descriptions that applications set up, dealing with the hard "
"work of doing the drawing for them."
"</center>"
);
o_text = o;
ui_fps(0.0);
}
static void
_cleanup(void)
{
evas_object_del(o_text);
o_text = NULL;
}
static void
_loop(void)
{
}
static void
_key(char *key)
{
if ((!strcmp(key, "Escape")) || (!strcmp(key, "q")) || (!strcmp(key, "Q")))
{
_cleanup();
ui_menu();
}
}
void
about_start(void)
{
ui_func_set(_key, _loop);
_setup();
}

@ -0,0 +1,6 @@
#ifndef ABOUT_H
#define ABOUT_H
void about_start(void);
#endif

@ -0,0 +1,206 @@
#include "main.h"
#ifndef HAVE_EVAS_GL
int
engine_gl_x11_args(int argc, char **argv)
{
fprintf(stderr, "ERROR: No GL X11 Engine built\n");
return 0;
}
void
engine_gl_x11_loop(void)
{
}
#else
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <Evas_Engine_GL_X11.h>
static Display *disp = NULL;
static Window win = 0;
int
engine_gl_x11_args(int argc, char **argv)
{
XSetWindowAttributes attr;
XClassHint chint;
XSizeHints szhints;
Evas_Engine_Info_GL_X11 *einfo;
int i;
int ok = 0;
for (i = 1; i < argc; i++)
{
if ((!strcmp(argv[i], "-e")) && (i < (argc - 1)))
{
i++;
if (!strcmp(argv[i], "gl")) ok = 1;
}
}
if (!ok) return 0;
disp = XOpenDisplay(NULL);
if (!disp) return 0;
evas_output_method_set(evas, evas_render_method_lookup("gl_x11"));
einfo = (Evas_Engine_Info_GL_X11 *)evas_engine_info_get(evas);
if (!einfo)
{
printf("Evas does not support the Software X11 Engine\n");
return 0;
}
einfo->info.display = disp;
einfo->info.visual = einfo->func.best_visual_get(disp, DefaultScreen(disp));
einfo->info.colormap = einfo->func.best_colormap_get(disp, DefaultScreen(disp));
einfo->info.depth = einfo->func.best_depth_get(disp, DefaultScreen(disp));
attr.backing_store = NotUseful;
attr.colormap = einfo->info.colormap;
attr.border_pixel = 0;
attr.background_pixmap = None;
attr.event_mask =
ExposureMask | ButtonPressMask | ButtonReleaseMask | PointerMotionMask |
StructureNotifyMask | EnterWindowMask | LeaveWindowMask |
KeyPressMask | KeyReleaseMask;
attr.bit_gravity = ForgetGravity;
win = XCreateWindow(disp, DefaultRootWindow(disp),
0, 0, win_w, win_h, 0,
einfo->info.depth, InputOutput,
einfo->info.visual,
CWBackingStore | CWColormap |
CWBackPixmap | CWBorderPixel |
CWBitGravity | CWEventMask,
&attr);
einfo->info.drawable = win;
evas_engine_info_set(evas, (Evas_Engine_Info *) einfo);
XStoreName(disp, win, "Expedite - Evas Test Suite");
chint.res_name = "expedite";
chint.res_class = "Expedite";
XSetClassHint(disp, win, &chint);
szhints.flags = PMinSize | PMaxSize | PSize | USSize;
szhints.min_width = szhints.max_width = win_w;
szhints.min_height = szhints.max_height = win_h;
XSetWMNormalHints(disp, win, &szhints);
XMapWindow(disp, win);
XSync(disp, False);
return 1;
}
void
engine_gl_x11_loop(void)
{
XEvent ev;
KeySym ks;
char *kstr;
again:
if (!XCheckMaskEvent(disp,
ExposureMask |
StructureNotifyMask |
KeyPressMask |
KeyReleaseMask |
ButtonPressMask |
ButtonReleaseMask |
PointerMotionMask |
EnterWindowMask |
LeaveWindowMask, &ev))
return;
switch (ev.type)
{
case ButtonPress:
evas_event_feed_mouse_move(evas, ev.xbutton.x, ev.xbutton.y, 0, NULL);
evas_event_feed_mouse_down(evas, ev.xbutton.button, EVAS_BUTTON_NONE, 0, NULL);
break;
case ButtonRelease:
evas_event_feed_mouse_move(evas, ev.xbutton.x, ev.xbutton.y, 0, NULL);
evas_event_feed_mouse_up(evas, ev.xbutton.button, EVAS_BUTTON_NONE, 0, NULL);
break;
case MotionNotify:
evas_event_feed_mouse_move(evas, ev.xmotion.x, ev.xmotion.y, 0, NULL);
break;
case Expose:
evas_damage_rectangle_add(evas,
ev.xexpose.x,
ev.xexpose.y,
ev.xexpose.width,
ev.xexpose.height);
break;
case ConfigureNotify:
evas_output_size_set(evas,
ev.xconfigure.width,
ev.xconfigure.height);
break;
case EnterNotify:
evas_event_feed_mouse_in(evas, 0, NULL);
break;
case LeaveNotify:
evas_event_feed_mouse_out(evas, 0, NULL);
break;
case KeyPress:
ks = XKeycodeToKeysym(ev.xkey.display, ev.xkey.keycode, 0);
kstr = XKeysymToString(ks);
if (kstr)
{
if ((!strcmp(kstr, "Shift_L")) ||
(!strcmp(kstr, "Shift_R")))
evas_key_modifier_on(evas, "Shift");
if ((!strcmp(kstr, "Control_L")) ||
(!strcmp(kstr, "Control_R")))
evas_key_modifier_on(evas, "Control");
if ((!strcmp(kstr, "Alt_L")) ||
(!strcmp(kstr, "Alt_R")))
evas_key_modifier_on(evas, "Alt");
if ((!strcmp(kstr, "Super_L")) ||
(!strcmp(kstr, "Super_R")))
evas_key_modifier_on(evas, "Super");
if (!strcmp(kstr, "Caps_Lock"))
{
if (evas_key_lock_is_set(evas_key_lock_get(evas), "Caps_Lock"))
evas_key_lock_off(evas, "Caps_Lock");
else
evas_key_lock_on(evas, "Caps_Lock");
}
if (!strcmp(kstr, "Num_Lock"))
{
if (evas_key_lock_is_set(evas_key_lock_get(evas), "Num_Lock"))
evas_key_lock_off(evas, "Num_Lock");
else
evas_key_lock_on(evas, "Num_Lock");
}
if (!strcmp(kstr, "Scroll_Lock"))
{
if (evas_key_lock_is_set(evas_key_lock_get(evas), "Scroll_Lock"))
evas_key_lock_off(evas, "Scroll_Lock");
else
evas_key_lock_on(evas, "Scroll_Lock");
}
if (kstr) evas_event_feed_key_down(evas, kstr, kstr, NULL, NULL, 0, NULL);
}
break;
case KeyRelease:
ks = XKeycodeToKeysym(ev.xkey.display, ev.xkey.keycode, 0);
kstr = XKeysymToString(ks);
if (kstr)
{
if ((!strcmp(kstr, "Shift_L")) ||
(!strcmp(kstr, "Shift_R")))
evas_key_modifier_off(evas, "Shift");
if ((!strcmp(kstr, "Control_L")) ||
(!strcmp(kstr, "Control_R")))
evas_key_modifier_off(evas, "Control");
if ((!strcmp(kstr, "Alt_L")) ||
(!strcmp(kstr, "Alt_R")))
evas_key_modifier_off(evas, "Alt");
if ((!strcmp(kstr, "Super_L")) ||
(!strcmp(kstr, "Super_R")))
evas_key_modifier_off(evas, "Super");
evas_event_feed_key_up(evas, kstr, kstr, NULL, NULL, 0, NULL);
}
break;
default:
break;
}
goto again;
}
#endif

@ -0,0 +1,7 @@
#ifndef ENGINE_GL_X11_H
#define ENGINE_GL_X11_H
int engine_gl_x11_args(int argc, char **argv);
void engine_gl_x11_loop(void);
#endif

@ -0,0 +1,208 @@
#include "main.h"
#ifndef HAVE_SOFTWARE_X11
int
engine_software_x11_args(int argc, char **argv)
{
fprintf(stderr, "ERROR: No Software X11 Engine built\n");
return 0;
}
void
engine_software_x11_loop(void)
{
}
#else
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <Evas_Engine_Software_X11.h>
static Display *disp = NULL;
static Window win = 0;
int
engine_software_x11_args(int argc, char **argv)
{
XSetWindowAttributes attr;
XClassHint chint;
XSizeHints szhints;
Evas_Engine_Info_Software_X11 *einfo;
int i;
int ok = 0;
for (i = 1; i < argc; i++)
{
if ((!strcmp(argv[i], "-e")) && (i < (argc - 1)))
{
i++;
if (!strcmp(argv[i], "x11")) ok = 1;
}
}
if (!ok) return 0;
disp = XOpenDisplay(NULL);
if (!disp) return 0;
evas_output_method_set(evas, evas_render_method_lookup("software_x11"));
einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(evas);
if (!einfo)
{
printf("Evas does not support the Software X11 Engine\n");
return 0;
}
einfo->info.display = disp;
einfo->info.visual = einfo->func.best_visual_get(disp, DefaultScreen(disp));
einfo->info.colormap = einfo->func.best_colormap_get(disp, DefaultScreen(disp));
einfo->info.depth = einfo->func.best_depth_get(disp, DefaultScreen(disp));
einfo->info.rotation = 0;
einfo->info.debug = 0;
attr.backing_store = NotUseful;
attr.colormap = einfo->info.colormap;
attr.border_pixel = 0;
attr.background_pixmap = None;
attr.event_mask =
ExposureMask | ButtonPressMask | ButtonReleaseMask | PointerMotionMask |
StructureNotifyMask | EnterWindowMask | LeaveWindowMask |
KeyPressMask | KeyReleaseMask;
attr.bit_gravity = ForgetGravity;
win = XCreateWindow(disp, DefaultRootWindow(disp),
0, 0, win_w, win_h, 0,
einfo->info.depth, InputOutput,
einfo->info.visual,
CWBackingStore | CWColormap |
CWBackPixmap | CWBorderPixel |
CWBitGravity | CWEventMask,
&attr);
einfo->info.drawable = win;
evas_engine_info_set(evas, (Evas_Engine_Info *) einfo);
XStoreName(disp, win, "Expedite - Evas Test Suite");
chint.res_name = "expedite";
chint.res_class = "Expedite";
XSetClassHint(disp, win, &chint);
szhints.flags = PMinSize | PMaxSize | PSize | USSize;
szhints.min_width = szhints.max_width = win_w;
szhints.min_height = szhints.max_height = win_h;
XSetWMNormalHints(disp, win, &szhints);
XMapWindow(disp, win);
XSync(disp, False);
return 1;
}
void
engine_software_x11_loop(void)
{
XEvent ev;
KeySym ks;
char *kstr;
again:
if (!XCheckMaskEvent(disp,
ExposureMask |
StructureNotifyMask |
KeyPressMask |
KeyReleaseMask |
ButtonPressMask |
ButtonReleaseMask |
PointerMotionMask |
EnterWindowMask |
LeaveWindowMask, &ev))
return;
switch (ev.type)
{
case ButtonPress:
evas_event_feed_mouse_move(evas, ev.xbutton.x, ev.xbutton.y, 0, NULL);
evas_event_feed_mouse_down(evas, ev.xbutton.button, EVAS_BUTTON_NONE, 0, NULL);
break;
case ButtonRelease:
evas_event_feed_mouse_move(evas, ev.xbutton.x, ev.xbutton.y, 0, NULL);
evas_event_feed_mouse_up(evas, ev.xbutton.button, EVAS_BUTTON_NONE, 0, NULL);
break;
case MotionNotify:
evas_event_feed_mouse_move(evas, ev.xmotion.x, ev.xmotion.y, 0, NULL);
break;
case Expose:
evas_damage_rectangle_add(evas,
ev.xexpose.x,
ev.xexpose.y,
ev.xexpose.width,
ev.xexpose.height);
break;
case ConfigureNotify:
evas_output_size_set(evas,
ev.xconfigure.width,
ev.xconfigure.height);
break;
case EnterNotify:
evas_event_feed_mouse_in(evas, 0, NULL);
break;
case LeaveNotify:
evas_event_feed_mouse_out(evas, 0, NULL);
break;
case KeyPress:
ks = XKeycodeToKeysym(ev.xkey.display, ev.xkey.keycode, 0);
kstr = XKeysymToString(ks);
if (kstr)
{
if ((!strcmp(kstr, "Shift_L")) ||
(!strcmp(kstr, "Shift_R")))
evas_key_modifier_on(evas, "Shift");
if ((!strcmp(kstr, "Control_L")) ||
(!strcmp(kstr, "Control_R")))
evas_key_modifier_on(evas, "Control");
if ((!strcmp(kstr, "Alt_L")) ||
(!strcmp(kstr, "Alt_R")))
evas_key_modifier_on(evas, "Alt");
if ((!strcmp(kstr, "Super_L")) ||
(!strcmp(kstr, "Super_R")))
evas_key_modifier_on(evas, "Super");
if (!strcmp(kstr, "Caps_Lock"))
{
if (evas_key_lock_is_set(evas_key_lock_get(evas), "Caps_Lock"))
evas_key_lock_off(evas, "Caps_Lock");
else
evas_key_lock_on(evas, "Caps_Lock");
}
if (!strcmp(kstr, "Num_Lock"))
{
if (evas_key_lock_is_set(evas_key_lock_get(evas), "Num_Lock"))
evas_key_lock_off(evas, "Num_Lock");
else
evas_key_lock_on(evas, "Num_Lock");
}
if (!strcmp(kstr, "Scroll_Lock"))
{
if (evas_key_lock_is_set(evas_key_lock_get(evas), "Scroll_Lock"))
evas_key_lock_off(evas, "Scroll_Lock");
else
evas_key_lock_on(evas, "Scroll_Lock");
}
if (kstr) evas_event_feed_key_down(evas, kstr, kstr, NULL, NULL, 0, NULL);
}
break;
case KeyRelease:
ks = XKeycodeToKeysym(ev.xkey.display, ev.xkey.keycode, 0);
kstr = XKeysymToString(ks);
if (kstr)
{
if ((!strcmp(kstr, "Shift_L")) ||
(!strcmp(kstr, "Shift_R")))
evas_key_modifier_off(evas, "Shift");
if ((!strcmp(kstr, "Control_L")) ||
(!strcmp(kstr, "Control_R")))
evas_key_modifier_off(evas, "Control");
if ((!strcmp(kstr, "Alt_L")) ||
(!strcmp(kstr, "Alt_R")))
evas_key_modifier_off(evas, "Alt");
if ((!strcmp(kstr, "Super_L")) ||
(!strcmp(kstr, "Super_R")))
evas_key_modifier_off(evas, "Super");
evas_event_feed_key_up(evas, kstr, kstr, NULL, NULL, 0, NULL);
}
break;
default:
break;
}
goto again;
}
#endif

@ -0,0 +1,7 @@
#ifndef ENGINE_SOFTWARE_X11_H
#define ENGINE_SOFTWARE_X11_H
int engine_software_x11_args(int argc, char **argv);
void engine_software_x11_loop(void);
#endif

@ -0,0 +1,203 @@
#include "main.h"
#ifndef HAVE_XRENDER_X11
int
engine_xrender_x11_args(int argc, char **argv)
{
fprintf(stderr, "ERROR: No XRender X11 Engine built\n");
return 0;
}
void
engine_xrender_x11_loop(void)
{
}
#else
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <Evas_Engine_XRender_X11.h>
static Display *disp = NULL;
static Window win = 0;
int
engine_xrender_x11_args(int argc, char **argv)
{
XSetWindowAttributes attr;
XClassHint chint;
XSizeHints szhints;
Evas_Engine_Info_XRender_X11 *einfo;
int i;
int ok = 0;
for (i = 1; i < argc; i++)
{
if ((!strcmp(argv[i], "-e")) && (i < (argc - 1)))
{
i++;
if (!strcmp(argv[i], "xr")) ok = 1;
}
}
if (!ok) return 0;
disp = XOpenDisplay(NULL);
if (!disp) return 0;
evas_output_method_set(evas, evas_render_method_lookup("xrender_x11"));
einfo = (Evas_Engine_Info_XRender_X11 *)evas_engine_info_get(evas);
if (!einfo)
{
printf("Evas does not support the XRender X11 Engine\n");
return 0;
}
einfo->info.display = disp;
einfo->info.visual = DefaultVisual(disp, DefaultScreen(disp));
attr.backing_store = NotUseful;
attr.border_pixel = 0;
attr.background_pixmap = None;
attr.event_mask =
ExposureMask | ButtonPressMask | ButtonReleaseMask | PointerMotionMask |
StructureNotifyMask | EnterWindowMask | LeaveWindowMask |
KeyPressMask | KeyReleaseMask;
attr.bit_gravity = ForgetGravity;
win = XCreateWindow(disp, DefaultRootWindow(disp),
0, 0, win_w, win_h, 0,
0, InputOutput,
einfo->info.visual,
CWBackingStore |
CWBackPixmap | CWBorderPixel |
CWBitGravity | CWEventMask,
&attr);
einfo->info.drawable = win;
evas_engine_info_set(evas, (Evas_Engine_Info *) einfo);
XStoreName(disp, win, "Expedite - Evas Test Suite");
chint.res_name = "expedite";
chint.res_class = "Expedite";
XSetClassHint(disp, win, &chint);
szhints.flags = PMinSize | PMaxSize | PSize | USSize;
szhints.min_width = szhints.max_width = win_w;
szhints.min_height = szhints.max_height = win_h;
XSetWMNormalHints(disp, win, &szhints);
XMapWindow(disp, win);
XSync(disp, False);
return 1;
}
void
engine_xrender_x11_loop(void)
{
XEvent ev;
KeySym ks;
char *kstr;
again:
if (!XCheckMaskEvent(disp,
ExposureMask |
StructureNotifyMask |
KeyPressMask |
KeyReleaseMask |
ButtonPressMask |
ButtonReleaseMask |
PointerMotionMask |
EnterWindowMask |
LeaveWindowMask, &ev))
return;
switch (ev.type)
{
case ButtonPress:
evas_event_feed_mouse_move(evas, ev.xbutton.x, ev.xbutton.y, 0, NULL);
evas_event_feed_mouse_down(evas, ev.xbutton.button, EVAS_BUTTON_NONE, 0, NULL);
break;
case ButtonRelease:
evas_event_feed_mouse_move(evas, ev.xbutton.x, ev.xbutton.y, 0, NULL);
evas_event_feed_mouse_up(evas, ev.xbutton.button, EVAS_BUTTON_NONE, 0, NULL);
break;
case MotionNotify:
evas_event_feed_mouse_move(evas, ev.xmotion.x, ev.xmotion.y, 0, NULL);
break;
case Expose:
evas_damage_rectangle_add(evas,
ev.xexpose.x,
ev.xexpose.y,
ev.xexpose.width,
ev.xexpose.height);
break;
case ConfigureNotify:
evas_output_size_set(evas,
ev.xconfigure.width,
ev.xconfigure.height);
break;
case EnterNotify:
evas_event_feed_mouse_in(evas, 0, NULL);
break;
case LeaveNotify:
evas_event_feed_mouse_out(evas, 0, NULL);
break;
case KeyPress:
ks = XKeycodeToKeysym(ev.xkey.display, ev.xkey.keycode, 0);
kstr = XKeysymToString(ks);
if (kstr)
{
if ((!strcmp(kstr, "Shift_L")) ||
(!strcmp(kstr, "Shift_R")))
evas_key_modifier_on(evas, "Shift");
if ((!strcmp(kstr, "Control_L")) ||
(!strcmp(kstr, "Control_R")))
evas_key_modifier_on(evas, "Control");
if ((!strcmp(kstr, "Alt_L")) ||
(!strcmp(kstr, "Alt_R")))
evas_key_modifier_on(evas, "Alt");
if ((!strcmp(kstr, "Super_L")) ||
(!strcmp(kstr, "Super_R")))
evas_key_modifier_on(evas, "Super");
if (!strcmp(kstr, "Caps_Lock"))
{
if (evas_key_lock_is_set(evas_key_lock_get(evas), "Caps_Lock"))
evas_key_lock_off(evas, "Caps_Lock");
else
evas_key_lock_on(evas, "Caps_Lock");
}
if (!strcmp(kstr, "Num_Lock"))
{
if (evas_key_lock_is_set(evas_key_lock_get(evas), "Num_Lock"))
evas_key_lock_off(evas, "Num_Lock");
else
evas_key_lock_on(evas, "Num_Lock");
}
if (!strcmp(kstr, "Scroll_Lock"))
{
if (evas_key_lock_is_set(evas_key_lock_get(evas), "Scroll_Lock"))
evas_key_lock_off(evas, "Scroll_Lock");
else
evas_key_lock_on(evas, "Scroll_Lock");
}
if (kstr) evas_event_feed_key_down(evas, kstr, kstr, NULL, NULL, 0, NULL);
}
break;
case KeyRelease:
ks = XKeycodeToKeysym(ev.xkey.display, ev.xkey.keycode, 0);
kstr = XKeysymToString(ks);
if (kstr)
{
if ((!strcmp(kstr, "Shift_L")) ||
(!strcmp(kstr, "Shift_R")))
evas_key_modifier_off(evas, "Shift");
if ((!strcmp(kstr, "Control_L")) ||
(!strcmp(kstr, "Control_R")))
evas_key_modifier_off(evas, "Control");
if ((!strcmp(kstr, "Alt_L")) ||
(!strcmp(kstr, "Alt_R")))
evas_key_modifier_off(evas, "Alt");
if ((!strcmp(kstr, "Super_L")) ||
(!strcmp(kstr, "Super_R")))
evas_key_modifier_off(evas, "Super");
evas_event_feed_key_up(evas, kstr, kstr, NULL, NULL, 0, NULL);
}
break;
default:
break;
}
goto again;
}
#endif

@ -0,0 +1,7 @@
#ifndef ENGINE_XRENDER_X11_H
#define ENGINE_XRENDER_X11_H
int engine_xrender_x11_args(int argc, char **argv);
void engine_xrender_x11_loop(void);
#endif

@ -0,0 +1,104 @@
#undef FNAME
#undef NAME
#undef ICON
/* metadata */
#define FNAME image_blend_border_start
#define NAME "Image Blend Border"
#define ICON "flower.png"
#ifndef PROTO
# ifndef UI
# include "main.h"
/* standard var */
static int done = 0;
/* private data */
static Evas_Object *o_images[OBNUM];
/* setup */
static void _setup(void)
{
int i;
Evas_Object *o;
for (i = 0; i < OBNUM; i++)
{
o = evas_object_image_add(evas);
o_images[i] = o;
evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/bar.png", NULL);
evas_object_image_border_set(o, 8, 8, 8, 8);
evas_object_show(o);
}
done = 0;
}
/* cleanup */
static void _cleanup(void)
{
int i;