#ifdef HAVE_CONFIG_H # include #endif #include "Eo.h" #include "Evas.h" #include "Eo.hh" #include "Eina.hh" #include "Evas.hh" #include "main.h" #define EXPEDITE_CXX_TEST_IMPL #include "widgets_file_icons_2_same_grouped_capi.h" /* standard var */ static int done = 0; /* private data */ #define NUM 512 #define ICON_SIZE 64 static efl::eina::list images; static efl::eina::list texts; static const char *icons[] = { "e.png", }; /* setup */ static void _setup(void) { evas::canvas canvas(::eo_ref(G_evas)); for (int i = 0; i < NUM; i++) { evas::image o1(efl::eo::parent = canvas); images.push_back(o1); eo_do(o1._eo_ptr(), efl_file_set(build_path(icons[i % 1]), NULL)); // XXX o1.fill_set(0, 0, ICON_SIZE, ICON_SIZE); o1.evas::object::size_set(ICON_SIZE, ICON_SIZE); o1.visibility_set(true); evas::text o2(efl::eo::parent = canvas); texts.push_back(o2); o2.font_set("Vera-Bold", 10); o2.text_set(icons[i % 1]); o2.evas::object::color_set(0, 0, 0, 255); o2.visibility_set(true); } for (evas::image img : images) { img.raise(); } done = 0; } /* cleanup */ static void _cleanup(void) { for (evas::image& i : images) i.parent_set(efl::eo::base(nullptr)); images.clear(); for (evas::text& t : texts) t.parent_set(efl::eo::base(nullptr)); texts.clear(); } /* loop - do things */ static void _loop(double t, int f) { Evas_Coord x, y, tw, th, cent; x = 0; y = 0 - f; efl::eina::list::iterator it1 = images.begin(), end1 = images.end(); efl::eina::list::iterator it2 = texts.begin(), end2 = texts.end(); for (; it1 != end1 && it2 != end2; ++it1, ++it2) { (*it1).evas::object::position_set(x + 8, y); (*it2).evas::object::size_get(&tw, &th); cent = (ICON_SIZE + 16 - tw) / 2; (*it2).evas::object::position_set(x + cent, y + ICON_SIZE + 4); x += ICON_SIZE + 16; if (x > win_w) { x = 0; y += ICON_SIZE + 16; } } FPS_STD(NAME); } /* prepend special key handlers if interactive (before STD) */ static void _key(char *key) { KEY_STD; } extern "C" void FNAME(void) { ui_func_set(_key, _loop); _setup(); }