@ -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 |
||||
]) |
@ -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)
|
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 206 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 555 B |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 457 KiB |
After Width: | Height: | Size: 653 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 627 B |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.3 KiB |
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; |
||||