This example creates an Ecore_Evas(a window) and associates a background and a custom cursor for it.
We'll start looking at the association, which is quite simple. We choose to associate using ECORE_EVAS_OBJECT_ASSOCIATE_BASE to have it be resized with the window, since for a background that is what's most useful:
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
- Note
- If we didn't associate the background we'd need to listen to resize of Ecore_Evas and manually resize the background or have artifacts on our window.
We then check that the association worked:
printf("Association worked!\n");
@ EVAS_CALLBACK_MOUSE_DOWN
Mouse Button Down Event.
Definition Evas_Common.h:422
EAPI Evas_Object * ecore_evas_object_associate_get(const Ecore_Evas *ee)
Gets the object associated with ee.
Definition ecore_evas_util.c:283
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
Next we are going to set a custom cursor, for our cursor we are going to use a small green rectangle. Our cursor is going to be on layer 0(any lower and it would be below the background and thus invisible) and clicks will be computed as happening on pixel 1, 1 of the image:
EAPI void ecore_evas_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
Sets the cursor for the default pointer device.
Definition ecore_evas.c:1845
EAPI Evas * ecore_evas_get(const Ecore_Evas *ee)
Gets an Ecore_Evas's Evas.
Definition ecore_evas.c:1314
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_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 Evas_Object * evas_object_rectangle_add(Evas *e)
Adds a rectangle to the given evas.
Definition evas_object_rectangle.c:78
We then check every one of those parameters:
if (obj == cursor && layer == 0 && x == 1 && y == 1)
printf("Set cursor worked!\n");
EAPI void ecore_evas_cursor_get(const Ecore_Evas *ee, Evas_Object **obj, int *layer, int *hot_x, int *hot_y)
Gets information about an Ecore_Evas' default pointer device.
Definition ecore_evas.c:1902
Here you have the full-source of the code:
#include <Ecore.h>
Evas_Object *cursor;
static void
{
if (!flag)
{
}
else
flag = !flag;
}
int
main(void)
{
Ecore_Evas *ee;
Evas_Object *bg, *obj;
int layer, x, y;
printf("Association worked!\n");
if (obj == cursor && layer == 0 && x == 1 && y == 1)
printf("Set cursor worked!\n");
return 0;
}
EAPI int ecore_evas_init(void)
Inits the Ecore_Evas system.
Definition ecore_evas.c:608
EAPI void ecore_evas_title_set(Ecore_Evas *ee, const char *t)
Sets the title of an Ecore_Evas' window.
Definition ecore_evas.c:1541
EAPI void ecore_evas_show(Ecore_Evas *ee)
Shows an Ecore_Evas' window.
Definition ecore_evas.c:1494
EAPI Evas_Object * ecore_evas_cursor_unset(Ecore_Evas *ee)
Unsets the cursor of the default pointer device.
Definition ecore_evas.c:1942
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:1053
EAPI int ecore_evas_shutdown(void)
Shuts down the Ecore_Evas system.
Definition ecore_evas.c:672
EAPI void ecore_evas_free(Ecore_Evas *ee)
Frees an Ecore_Evas.
Definition ecore_evas.c:1097
void ecore_main_loop_begin(void)
Runs the application main loop.
Definition ecore_main.c:1311
#define EINA_FALSE
boolean value FALSE (numerical value 0)
Definition eina_types.h:533
unsigned char Eina_Bool
Type to mimic a boolean.
Definition eina_types.h:527
#define EINA_UNUSED
Used to indicate that a function parameter is purposely unused.
Definition eina_types.h:339
EVAS_API void evas_object_show(Evas_Object *eo_obj)
Makes the given Evas object visible.
Definition evas_object_main.c:1814