#include <Elementary.h>
typedef struct _Overlay_Data
{
   const char *name;
   const char *file;
} Overlay_Data;
Overlay_Data data_argentina = {"Argentina", NULL};
Overlay_Data data_chile = {"Chile", NULL};
Overlay_Data data_sampa = {"São Paulo", NULL};
Overlay_Data data_rio = {"Rio de Janeiro", NULL};
Overlay_Data data_brasilia = {"Brasília", NULL};
const char *data_dir;
static Evas_Object *
_icon_get(Evas_Object *obj, const char *file)
{
   evas_object_show(icon);
   return icon;
}
static Evas_Object *
_city_icon_get(Evas_Object *obj)
{
   char buf[256];
   snprintf(buf, sizeof(buf), "%s/images/icon_07.png", data_dir);
   return _icon_get(obj, buf);
}
static Evas_Object *
_clas_city_icon_get(Evas_Object *obj)
{
   char buf[256];
   snprintf(buf, sizeof(buf), "%s/images/icon_05.png", data_dir);
   return _icon_get(obj, buf);
}
static Evas_Object *
_country_icon_get(Evas_Object *obj)
{
   char buf[256];
   snprintf(buf, sizeof(buf), "%s/images/icon_06.png", data_dir);
   return _icon_get(obj, buf);
}
static Evas_Object *
_clas_country_icon_get(Evas_Object *obj)
{
   char buf[256];
   snprintf(buf, sizeof(buf), "%s/images/icon_04.png", data_dir);
   return _icon_get(obj, buf);
}
static Evas_Object *
_box_get(Evas_Object *obj, Overlay_Data *data)
{
   Evas_Object *bx, *img, *label;
   evas_object_show(bx);
   img = evas_object_image_add(evas_object_evas_get(obj));
   evas_object_image_file_set(img, data->file, NULL);
   evas_object_image_filled_set(img, EINA_TRUE);
   evas_object_size_hint_min_set(img, 64, 64);
   evas_object_show(img);
   elm_object_text_set(label, data->name);
   evas_object_show(label);
   return bx;
}
static void
_overlay_cb(void *data, Evas_Object *map, void *ev)
{
   printf("Overlay clicked\n");
   Evas_Object *bx;
   
}
static void
_bt_zoom_in(void *data, Evas_Object *obj, void *ev)
{
   Evas_Object *map = data;
   int zoom;
}
static void
_bt_zoom_out(void *data, Evas_Object *obj, void *ev)
{
   Evas_Object *map = data;
   int zoom;
}
static void
_bt_zoom_fit(void *data, Evas_Object *obj, void *event_info)
{
   Evas_Object *map = data;
}
static void
_bt_zoom_fill(void *data, Evas_Object *obj, void *event_info)
{
   Evas_Object *map = data;
}
static Eina_Bool
_nasty_hack(void *data)
{
   Evas_Object *o = data;
   Evas *e = evas_object_evas_get(o);
   evas_smart_objects_calculate(e);
   return ECORE_CALLBACK_CANCEL;
}
EAPI_MAIN int
elm_main(int argc, char **argv)
{
   Evas_Object *win, *map, *box, *bt;
   Eina_List *ovls = NULL;
   char buf[255];
   snprintf(buf, sizeof(buf), "%s/images/rock_01.jpg", "sdf");
   data_argentina.file = strdup(buf);
   snprintf(buf, sizeof(buf), "%s/images/rock_02.jpg", "sdf");
   data_chile.file = strdup(buf);
   snprintf(buf, sizeof(buf), "%s/images/sky_01.jpg", "sdf");
   data_sampa.file = strdup(buf);
   snprintf(buf, sizeof(buf), "%s/images/sky_02.jpg", "sdf");
   data_rio.file = strdup(buf);
   snprintf(buf, sizeof(buf), "%s/images/sky_03.jpg", "sdf");
   data_brasilia.file = strdup(buf);
   evas_object_size_hint_weight_set(map, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
   evas_object_show(map);
   evas_object_show(box);
   elm_object_text_set(bt, "+");
   evas_object_show(bt);
   evas_object_smart_callback_add(bt, "clicked", _bt_zoom_in, map);
   elm_object_text_set(bt, "-");
   evas_object_show(bt);
   evas_object_smart_callback_add(bt, "clicked", _bt_zoom_out, map);
   elm_object_text_set(bt, "X");
   evas_object_show(bt);
   evas_object_smart_callback_add(bt, "clicked", _bt_zoom_fit, map);
   elm_object_text_set(bt, "#");
   evas_object_show(bt);
   evas_object_smart_callback_add(bt, "clicked", _bt_zoom_fill, map);
   evas_object_smart_callback_add(map, "overlay,clicked", _overlay_cb, NULL);
   ovls = eina_list_append(ovls, ovl);
   ovls = eina_list_append(ovls, ovl);
   ovls = eina_list_append(ovls, ovl);
   ovls = eina_list_append(ovls, ovl);
   ovls = eina_list_append(ovls, ovl);
   evas_object_resize(win, 512, 512);
   evas_object_show(win);
   ecore_timer_add(1, _nasty_hack, win);
   return 0;
}