In this example we will show how to load an image and move it across the window.
To load the image to our program, it needs to be declared in the .edc using the images block:
images{
image: "bubble.png" COMP;
}
- Note
- COMP means that we are using a lossless compression
Then to be able to use it in our window we must declare a part for this image:
part{
name: "part_image";
type: IMAGE;
description{
image{
normal: "bubble.png";
}
}
}
Now we move to our .c file, you will notice this define:
This means how fast we want to move the image across the screen
To load our edje file we will use this command, we do just like the last example (Basic example):
if(!edje_object_file_set(edje_obj, edje_file, "image_group"))
{
int err = edje_object_load_error_get(edje_obj);
const char *errmsg = edje_load_error_str(err);
fprintf(stderr, "Could not load the edje file - reason:%s\n", errmsg);
goto shutdown_edje;
}
If we want to move our image, we need to add a callback to be able to do this, so we define:
To get the position of the image we use this:
Now we use the if's to check in what direction the user wants to move the image then we move it:
if(strcmp(ev->
key,
"Escape") == 0)
{
}
else if(strcmp(ev->
key,
"Down") == 0)
{
y+=WALK;
}
else if(strcmp(ev->
key,
"Up") == 0)
{
y-=WALK;
}
else if(strcmp(ev->
key,
"Right") == 0)
{
x+=WALK;
}
else if(strcmp(ev->
key,
"Left") == 0)
{
x-=WALK;
}
else
{
printf(
"Key %s not supported.\nCommands:%s", ev->
key, commands);
return;
}
The example's window should look like this picture:
The complete .edc file:
collections {
group {
name: "image_group";
max: 500 500;
min: 50 50;
images{
image: "bubble.png" COMP;
}
parts{
part{
name: "part_image";
type: IMAGE;
description{
image{
normal: "bubble.png";
}
}
}
}
}
}
And the source code:
#ifdef HAVE_CONFIG_H
# include "config.h"
#else
# define EINA_UNUSED
#endif
#ifndef PACKAGE_DATA_DIR
#define PACKAGE_DATA_DIR "."
#endif
#include <stdio.h>
#include <Ecore.h>
#define WIDTH (700)
#define HEIGHT (700)
#define WALK 10
static const char commands[] = "commands are:\nEsc - Exit\nUp - move image up\nDown - move image down\n"\
"Right - move image to right\nLeft - move image to left\n";
static void
_on_key_down(void *data,
void *einfo)
{
int x,y;
if(strcmp(ev->
key,
"Escape") == 0)
{
}
else if(strcmp(ev->
key,
"Down") == 0)
{
y+=WALK;
}
else if(strcmp(ev->
key,
"Up") == 0)
{
y-=WALK;
}
else if(strcmp(ev->
key,
"Right") == 0)
{
x+=WALK;
}
else if(strcmp(ev->
key,
"Left") == 0)
{
x-=WALK;
}
else
{
printf(
"Key %s not supported.\nCommands:%s", ev->
key, commands);
return;
}
}
static void
{
}
int
{
const char *edje_file = PACKAGE_DATA_DIR"/basic2.edj";
Ecore_Evas *ee;
return EXIT_FAILURE;
goto shutdown_ecore_evas;
if(!ee) goto shutdown_edje;
edje_obj = edje_object_add(evas);
if(!edje_object_file_set(edje_obj, edje_file, "image_group"))
{
int err = edje_object_load_error_get(edje_obj);
const char *errmsg = edje_load_error_str(err);
fprintf(stderr, "Could not load the edje file - reason:%s\n", errmsg);
goto shutdown_edje;
}
printf("%s", commands);
return EXIT_SUCCESS;
shutdown_edje:
shutdown_ecore_evas:
return EXIT_FAILURE;
}
To compile use this command:
* gcc -o edje-basic2 edje-basic2.c -DPACKAGE_BIN_DIR=\"/Where/enlightenment/is/installed/bin\"
* -DPACKAGE_LIB_DIR=\"/Where/enlightenment/is/installed/lib\"
* -DPACKAGE_DATA_DIR=\"/Where/enlightenment/is/installed/share\"
* `pkg-config --cflags --libs evas ecore ecore-evas edje`
*
* edje_cc -id /path/to/the/image basic2.edc
*
EAPI Eina_Bool ecore_evas_object_associate(Ecore_Evas *ee, Evas_Object *obj, Ecore_Evas_Object_Associate_Flags flags)
Associates the given object to this ecore evas.
Definition: ecore_evas_util.c:223
int edje_init(void)
Initializes the Edje library.
Definition: edje_main.c:35
EAPI Ecore_Evas * ecore_evas_new(const char *engine_name, int x, int y, int w, int h, const char *extra_options)
Creates a new Ecore_Evas based on engine name and common parameters.
Definition: ecore_evas.c:1065
EAPI int ecore_evas_shutdown(void)
Shuts down the Ecore_Evas system.
Definition: ecore_evas.c:674
void ecore_main_loop_quit(void)
Quits the main loop once all the events currently on the queue have been processed.
Definition: ecore_main.c:1300
Key press event.
Definition: Evas_Legacy.h:314
#define EINA_UNUSED
Definition: eina_types.h:339
EAPI void ecore_evas_free(Ecore_Evas *ee)
Frees an Ecore_Evas.
Definition: ecore_evas.c:1109
EAPI void ecore_evas_title_set(Ecore_Evas *ee, const char *t)
Sets the title of an Ecore_Evas' window.
Definition: ecore_evas.c:1553
EAPI int ecore_evas_init(void)
Inits the Ecore_Evas system.
Definition: ecore_evas.c:606
Efl_Canvas_Object Evas_Object
Definition: Evas_Common.h:180
EAPI void ecore_evas_callback_delete_request_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func)
Sets a callback for Ecore_Evas delete request events.
Definition: ecore_evas.c:1202
void evas_object_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
Changes the size of the given Evas object.
Definition: evas_object_main.c:1236
Edje Graphical Design Library.
EAPI Evas * ecore_evas_get(const Ecore_Evas *ee)
Gets an Ecore_Evas's Evas.
Definition: ecore_evas.c:1326
void evas_object_geometry_get(const Evas_Object *eo_obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
Retrieves the position and (rectangular) size of the given Evas object.
Definition: evas_object_main.c:1335
void evas_object_event_callback_add(Evas_Object *eo_obj, Evas_Callback_Type type, Evas_Object_Event_Cb func, const void *data)
Add (register) a callback function to a given Evas object event.
Definition: evas_callbacks.c:477
@ EVAS_CALLBACK_KEY_DOWN
Key Press Event.
Definition: Evas_Common.h:419
const char * key
The logical key : (eg shift+1 == exclamation)
Definition: Evas_Legacy.h:320
void ecore_main_loop_begin(void)
Runs the application main loop.
Definition: ecore_main.c:1290
void evas_object_focus_set(Efl_Canvas_Object *obj, Eina_Bool focus)
Indicates that this object is the keyboard event receiver on its canvas.
Definition: efl_canvas_object_eo.legacy.c:39
void evas_object_show(Evas_Object *eo_obj)
Makes the given Evas object visible.
Definition: evas_object_main.c:1814
Eo Evas
Definition: Evas_Common.h:158
#define EINA_TRUE
Definition: eina_types.h:539
Evas_Object * evas_object_rectangle_add(Evas *e)
Adds a rectangle to the given evas.
Definition: evas_object_rectangle.c:78
void evas_object_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
Move the given Evas object to the given location inside its canvas' viewport.
Definition: evas_object_main.c:1171
EAPI void ecore_evas_show(Ecore_Evas *ee)
Shows an Ecore_Evas' window.
Definition: ecore_evas.c:1506
void evas_object_color_set(Evas_Object *obj, int r, int g, int b, int a)
Sets the general/main color of the given Evas object to the given one.
Definition: evas_object_main.c:2024
int edje_shutdown(void)
Shuts down the Edje library.
Definition: edje_main.c:264