#ifdef HAVE_CONFIG_H
#include "config.h"
#else
#define PACKAGE_EXAMPLES_DIR "."
#endif
 
#include <Ecore.h>
 
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
 
#define WIDTH  320
#define HEIGHT 320
 
struct test_data
{
   Ecore_Evas  *ee;
   int          layers[3]; 
   int          cur_rect, cur_layer;
};
 
static struct test_data d = {0};
 
static const char *commands = \
  "commands are:\n"
  "\tc - change the target rectangle to operate on\n"
  "\ta - stack target rectangle one level above\n"
  "\tb - stack target rectangle one level below\n"
  "\tt - stack target rectangle up to the top of its layer\n"
  "\tm - stack target rectangle down to the bottom of its layer\n"
  "\tp - toggle target rectangle's 'pass events' property\n"
  "\tr - toggle target rectangle's 'repeat events' property\n"
  "\ts - print current stacking information\n"
  "\tl - change background rectangle's layer\n"
  "\th - print help\n";
 
static const char *
{
   if (!s) s = "(null)";
   return s;
}
 
static void
{
   printf("Mouse down on rectangle %s!\n", _name_get(o));
}
 
static void
_canvas_resize_cb(Ecore_Evas *ee)
{
   int w, h;
 
}
 
static void
            void        *einfo)
{
   const char *name = _name_get(d.rects[d.cur_rect]);
 
   if (strcmp(ev->
key, 
"h") == 0)  
 
     {
        printf("%s\n", commands);
        return;
     }
 
   if (strcmp(ev->
key, 
"s") == 0)  
 
     {
 
        printf("Order of stacking, from top to bottom, is: ");
 
        printf("%s", _name_get(rect));
 
        while (rect)
          {
             printf(", %s", _name_get(rect));
          }
 
        printf(".\n");
 
        printf("Current target rectangle is %s\n",
               _name_get(d.rects[d.cur_rect]));
 
        printf("Background rectangle's layer is %d\n",
 
        return;
     }
 
   if (strcmp(ev->
key, 
"l") == 0)  
 
     {
        d.cur_layer = (d.cur_layer + 1) % 3;
 
        printf("Changing background rectangle's layer to %d\n",
               d.layers[d.cur_layer]);
        return;
     }
 
   if (strcmp(ev->
key, 
"c") == 0)  
 
     {
        d.cur_rect = (d.cur_rect + 1) % 3;
 
        printf("Changing target rectangle to the %s one\n",
               _name_get(d.rects[d.cur_rect]));
        return;
     }
 
   if (strcmp(ev->
key, 
"t") == 0)  
 
     {
 
 
        printf("%s rectangle was re-stacked to the top if its layer\n",
               name);
 
        printf("Below of %s rect is %s\n", name,
               neighbour ? _name_get(neighbour) : "no object");
        return;
     }
 
   if (strcmp(ev->
key, 
"m") == 0)  
 
     {
 
 
        printf("%s rectangle was re-stacked to the bottom if its layer\n",
               name);
 
        printf("Below of %s rect is %s\n", name,
               neighbour ? _name_get(neighbour) : "no object");
        return;
     }
 
   if (strcmp(ev->
key, 
"p") == 0)  
 
     {
 
 
        printf("%s rectangle is now set to%s pass (ignore) events\n",
               name, pass ? " NOT" : "");
 
        return;
     }
 
   if (strcmp(ev->
key, 
"r") == 0)  
 
     {
 
 
        printf("%s rectangle is now set to%s repeat events\n",
               name, repeat ? " NOT" : "");
 
        return;
     }
 
   if (strcmp(ev->
key, 
"a") == 0)  
 
     {
 
          return;
 
 
        printf("%s rectangle was re-stacked one level above\n", name);
 
        printf("Above of %s rect is %s\n", name,
               neighbour ? _name_get(neighbour) : "no object");
 
        printf("Below of %s rect is %s\n", name,
               neighbour ? _name_get(neighbour) : "no object");
        return;
     }
 
   if (strcmp(ev->
key, 
"b") == 0)  
 
     {
 
          return;
 
 
        printf("%s rectangle was re-stacked one level below\n", name);
 
        printf("Above of %s rect is %s\n", name,
               neighbour ? _name_get(neighbour) : "no object");
 
 
        printf("Below of %s rect is %s\n", name,
               neighbour ? _name_get(neighbour) : "no object");
        return;
     }
}
 
static void
{
}
 
int
main(void)
{
     return EXIT_FAILURE;
 
   
   if (!d.ee)
     goto error;
 
 
   
 
 
   d.layers[1] = d.layers[0] - 1;
   d.layers[2] = d.layers[0] + 1;
 
   d.cur_layer = 1;
 
 
 
 
 
 
 
 
 
   printf("%s\n", commands);
 
   return 0;
 
error:
   fprintf(stderr, "error: Requires at least one Evas engine built and linked"
                   " to ecore-evas for this example to run properly.\n");
   return -1;
}
@ EVAS_CALLBACK_KEY_DOWN
Key Press Event.
Definition: Evas_Common.h:430
@ EVAS_CALLBACK_MOUSE_DOWN
Mouse Button Down Event.
Definition: Evas_Common.h:422
EAPI int ecore_evas_init(void)
Inits the Ecore_Evas system.
Definition: ecore_evas.c:606
EAPI void ecore_evas_callback_destroy_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func)
Sets a callback for Ecore_Evas destroy events.
Definition: ecore_evas.c:1211
EAPI void ecore_evas_show(Ecore_Evas *ee)
Shows an Ecore_Evas' window.
Definition: ecore_evas.c:1506
EAPI Evas * ecore_evas_get(const Ecore_Evas *ee)
Gets an Ecore_Evas's Evas.
Definition: ecore_evas.c:1326
EAPI void ecore_evas_geometry_get(const Ecore_Evas *ee, int *x, int *y, int *w, int *h)
Gets the geometry of an Ecore_Evas.
Definition: ecore_evas.c:1388
EAPI void ecore_evas_callback_resize_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func)
Sets a callback for Ecore_Evas resize events.
Definition: ecore_evas.c:1166
EAPI int ecore_evas_shutdown(void)
Shuts down the Ecore_Evas system.
Definition: ecore_evas.c:674
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
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:1308
void ecore_main_loop_begin(void)
Runs the application main loop.
Definition: ecore_main.c:1298
#define EINA_TRUE
boolean value TRUE (numerical value 1)
Definition: eina_types.h:539
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
Efl_Canvas_Object * evas_object_top_get(const Evas_Canvas *obj)
Get the highest (stacked) Evas object on the canvas e.
Definition: evas_canvas_eo.legacy.c:63
Eo Evas
An opaque handle to an Evas canvas.
Definition: Evas_Common.h:163
const char * evas_object_name_get(const Evas_Object *eo_obj)
Retrieves the name of the given Evas object.
Definition: evas_name.c:26
void evas_object_name_set(Evas_Object *eo_obj, const char *name)
Sets the name of the given Evas object to the given name.
Definition: evas_name.c:5
void evas_object_show(Evas_Object *eo_obj)
Makes the given Evas object visible.
Definition: evas_object_main.c:1814
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
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
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
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
void evas_object_stack_above(Evas_Object *obj, Evas_Object *above)
Stack obj immediately above above.
Definition: evas_stack.x:137
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_stack_below(Evas_Object *obj, Evas_Object *below)
Stack obj immediately below below.
Definition: evas_stack.x:231
void evas_object_pass_events_set(Efl_Canvas_Object *obj, Eina_Bool pass)
Set whether an Evas object is to pass (ignore) events.
Definition: efl_canvas_object_eo.legacy.c:76
short evas_object_layer_get(const Evas_Object *obj)
Retrieves the layer of its canvas that the given object is part of.
Definition: evas_layer.c:269
Efl_Canvas_Object Evas_Object
An Evas Object handle.
Definition: Evas_Common.h:185
void evas_object_repeat_events_set(Efl_Canvas_Object *obj, Eina_Bool repeat)
Set whether an Evas object is to repeat events.
Definition: efl_canvas_object_eo.legacy.c:27
Evas_Object * evas_object_below_get(const Evas_Object *obj)
Get the Evas object stacked right below obj.
Definition: evas_stack.x:352
void evas_object_lower(Evas_Object *obj)
Lower obj to the bottom of its layer.
Definition: evas_stack.x:87
Evas_Object * evas_object_above_get(const Evas_Object *obj)
Get the Evas object stacked right above obj.
Definition: evas_stack.x:323
void evas_object_layer_set(Evas_Object *obj, short l)
Sets the layer of its canvas that the given object will be part of.
Definition: evas_layer.c:212
void evas_object_raise(Evas_Object *obj)
Raise obj to the top of its layer.
Definition: evas_stack.x:38
Eina_Bool evas_object_pass_events_get(const Efl_Canvas_Object *obj)
Determine whether an object is set to pass (ignore) events.
Definition: efl_canvas_object_eo.legacy.c:82
Eina_Bool evas_object_repeat_events_get(const Efl_Canvas_Object *obj)
Determine whether an object is set to repeat events.
Definition: efl_canvas_object_eo.legacy.c:33
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