In this example, we illustrate how to start using the Edje library, with the very basic one needs to instantiate an Edje object.
What follows is a series of Edje API calls which are of general use. The first of them is edje_object_data_get(), which we use to get the value we have put in the "example_data" data field, in our EDC object declaration:
To interact with the last features exemplified in the program, there's a command line interface. A help string can be asked for with the 'h' key:
Those commands will change the scaling factors of our Edje objects. The first of them, 's', will change Edje's global scaling factor between 1.0 (no scaling) and 2.0 (double scale). Scaling will be applied to "part_one", only, because that's the part flagged to be scaled at EDC level:
The full example follows.
#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 (300)
#define HEIGHT (300)
static const char commands[] = \
"commands are:\n"
"\ts - change Edje's global scaling factor\n"
"\tr - change center rectangle's scaling factor\n"
"\tEsc - exit\n"
"\th - print help\n";
static void
_on_keydown(void *data,
void *einfo)
{
if (strcmp(ev->
key,
"h") == 0)
{
printf(commands);
return;
}
else if (strcmp(ev->
key,
"s") == 0)
{
printf("got scale %f\n", scale);
else scale = 2.0;
printf("Setting global scaling factor to %f.\n", scale);
return;
}
else if (strcmp(ev->
key,
"r") == 0)
{
printf("got scale %f\n", scale);
else scale = 0.0;
printf("Setting center rectangle's scaling factor to %f.\n",
scale);
return;
}
else if (!strcmp(ev->
key,
"Escape"))
else
{
printf(
"unhandled key: %s\n", ev->
key);
printf(commands);
}
}
static void
{
}
int
{
const char *img_file = PACKAGE_DATA_DIR"/red.png";
const char *edje_file = PACKAGE_DATA_DIR"/basic.edj";
Ecore_Evas *ee;
int x;
int y;
int w;
int h;
return EXIT_FAILURE;
goto shutdown_ecore_evas;
if (!ee) goto shutdown_edje;
{
fprintf(stderr, "Could not load 'unexistant_group' from basic.edj:"
" %s\n", errmsg);
}
{
fprintf(stderr, "Could not load 'example_group' from basic.edj: %s\n",
errmsg);
goto shutdown_edje;
}
printf("Loaded Edje object bound to group 'example_group' from"
" file basic.edj with success!\n");
printf("'example_data' data field in group 'example_group' has "
"the value: %s\n", edje_object_data_get(edje_obj,
"example_data"));
printf("Testing if 'part_one' part exists: %s\n",
printf("The geometry of that part inside the Edje object's area "
"is: x = %d, y = %d, w = %d, h = %d\n", x, y, w, h);
&x, &y, &w, &h);
printf("That part's color components are: r = %d, g = %d, b = %d,"
" a = %d\n", x, y, w, h);
printf("The Edje object's max. size is: %d, %d\n", w, h);
printf("The Edje object's min. size is: %d, %d\n", w, h);
printf("The Edje object's min. size reported by min. size"
" calculation is: w = %d, h = %d\n", w, h);
printf("The Edje object's min. size reported by *restricted* "
"min. size calculation is: w = %d, h = %d\n", w, h);
printf("The Edje object's \"extended\" geometry is: x = %d, "
"y = %d, w = %d, h = %d\n", x, y, w, h);
printf(commands);
return EXIT_SUCCESS;
shutdown_edje:
shutdown_ecore_evas:
return EXIT_FAILURE;
}
Edje Graphical Design Library.
@ EVAS_CALLBACK_KEY_DOWN
Key Press Event.
Definition Evas_Common.h:430
EAPI int ecore_evas_init(void)
Inits the Ecore_Evas system.
Definition ecore_evas.c:602
EAPI void ecore_evas_title_set(Ecore_Evas *ee, const char *t)
Sets the title of an Ecore_Evas' window.
Definition ecore_evas.c:1527
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:1176
EAPI void ecore_evas_show(Ecore_Evas *ee)
Shows an Ecore_Evas' window.
Definition ecore_evas.c:1480
EAPI Evas * ecore_evas_get(const Ecore_Evas *ee)
Gets an Ecore_Evas's Evas.
Definition ecore_evas.c:1300
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:1039
EAPI int ecore_evas_shutdown(void)
Shuts down the Ecore_Evas system.
Definition ecore_evas.c:666
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
EAPI void ecore_evas_free(Ecore_Evas *ee)
Frees an Ecore_Evas.
Definition ecore_evas.c:1083
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:1326
void ecore_main_loop_begin(void)
Runs the application main loop.
Definition ecore_main.c:1316
int edje_shutdown(void)
Shuts down the Edje library.
Definition edje_main.c:262
int edje_init(void)
Initializes the Edje library.
Definition edje_main.c:35
Eina_Bool edje_object_parts_extends_calc(Edje_Object *obj, int *x, int *y, int *w, int *h)
Calculates the geometry of the region, relative to a given Edje object's area, occupied by all parts ...
Definition edje_legacy.c:1083
#define EINA_TRUE
boolean value TRUE (numerical value 1)
Definition eina_types.h:539
#define EINA_UNUSED
Used to indicate that a function parameter is purposely unused.
Definition eina_types.h:339
Eo Evas
An opaque handle to an Evas canvas.
Definition Evas_Common.h:163
EVAS_API void evas_object_show(Evas_Object *eo_obj)
Makes the given Evas object visible.
Definition evas_object_main.c:1814
EVAS_API void evas_object_del(Evas_Object *obj)
Marks the given Evas object for deletion (when Evas will free its memory).
Definition evas_object_main.c:928
EVAS_API 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
EVAS_API 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:478
EVAS_API 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
Efl_Canvas_Object Evas_Object
An Evas Object handle.
Definition Evas_Common.h:185
EVAS_API 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
EVAS_API 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
EVAS_API void evas_object_image_border_set(Evas_Object *obj, int l, int r, int t, int b)
Dimensions of this image's border, a region that does not scale with the center area.
Definition evas_image_legacy.c:117
EVAS_API void evas_object_image_border_center_fill_set(Evas_Object *obj, Evas_Border_Fill_Mode fill)
Specifies how the center part of the object (not the borders) should be drawn when EFL is rendering i...
Definition evas_image_legacy.c:145
EVAS_API void evas_object_image_file_set(Evas_Object *obj, const char *file, const char *key)
Set the source file from where an image object must fetch the real image data (it may be an Eet file,...
Definition evas_image_legacy.c:194
EVAS_API Evas_Object * evas_object_image_filled_add(Evas *eo_e)
Creates a new image object that automatically scales its bound image to the object's area,...
Definition evas_image_legacy.c:35
@ EVAS_BORDER_FILL_NONE
Image's center region is not to be rendered.
Definition Evas_Legacy.h:5721
EVAS_API Evas_Object * evas_object_rectangle_add(Evas *e)
Adds a rectangle to the given evas.
Definition evas_object_rectangle.c:78
Key press event.
Definition Evas_Legacy.h:314
const char * key
The logical key : (eg shift+1 == exclamation)
Definition Evas_Legacy.h:320