From d927e960ab5991282353571448223d37ffc1ea81 Mon Sep 17 00:00:00 2001 From: barbieri Date: Fri, 27 May 2011 19:31:11 +0000 Subject: [PATCH] Ecore_Evas: introduce ecore_evas_screen_geometry_get() This common interface allows engines to provide whole screen information to users. Right now just X is implemented and it queries the size of the default screen. I hope this is fine. git-svn-id: http://svn.enlightenment.org/svn/e/trunk/ecore@59761 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- ChangeLog | 4 ++++ src/lib/ecore_evas/Ecore_Evas.h | 2 ++ src/lib/ecore_evas/ecore_evas.c | 29 +++++++++++++++++++++++++++++ src/lib/ecore_evas/ecore_evas_buffer.c | 3 ++- src/lib/ecore_evas/ecore_evas_directfb.c | 3 ++- src/lib/ecore_evas/ecore_evas_fb.c | 3 ++- src/lib/ecore_evas/ecore_evas_private.h | 1 + src/lib/ecore_evas/ecore_evas_sdl.c | 3 ++- src/lib/ecore_evas/ecore_evas_win32.c | 3 ++- src/lib/ecore_evas/ecore_evas_wince.c | 3 ++- src/lib/ecore_evas/ecore_evas_x.c | 11 ++++++++++- 11 files changed, 58 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index a953089..8d76f09 100644 --- a/ChangeLog +++ b/ChangeLog @@ -198,3 +198,7 @@ (_ecore_main_loop_iterate_internal). This fixes fd handler pending issue when ecore_idler callback adds ecore_job/event. * Ecore ecore_main.c: Refactoring _ecore_main_loop_iterate_internal(). + +2011-05-27 Gustavo Sverzut Barbieri (k-s) + + * Ecore_Evas: introduce ecore_evas_screen_geometry_get() diff --git a/src/lib/ecore_evas/Ecore_Evas.h b/src/lib/ecore_evas/Ecore_Evas.h index 0063480..abcca78 100644 --- a/src/lib/ecore_evas/Ecore_Evas.h +++ b/src/lib/ecore_evas/Ecore_Evas.h @@ -350,6 +350,8 @@ EAPI Eina_Bool ecore_evas_comp_sync_get(const Ecore_Evas *ee); EAPI Ecore_Window ecore_evas_window_get(const Ecore_Evas *ee); +EAPI void ecore_evas_screen_geometry_get(const Ecore_Evas *ee, int *x, int *y, int *w, int *h); + EAPI Eina_Bool ecore_evas_object_associate(Ecore_Evas *ee, Evas_Object *obj, Ecore_Evas_Object_Associate_Flags flags); EAPI Eina_Bool ecore_evas_object_dissociate(Ecore_Evas *ee, Evas_Object *obj); EAPI Evas_Object *ecore_evas_object_associate_get(const Ecore_Evas *ee); diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c index 1bb844f..a5f2827 100644 --- a/src/lib/ecore_evas/ecore_evas.c +++ b/src/lib/ecore_evas/ecore_evas.c @@ -2675,6 +2675,35 @@ ecore_evas_window_get(const Ecore_Evas *ee) return ee->prop.window; } +/** + * Get whole screen geometry associated with this Ecore_Evas. + * + * @param ee The Ecore_Evas whose window's to query container screen geometry. + * @param x where to return the horizontal offset value. May be NULL. + * @param y where to return the vertical offset value. May be NULL. + * @param w where to return the width value. May be NULL. + * @param h where to return the height value. May be NULL. + * + * @since 1.1 + */ +EAPI void +ecore_evas_screen_geometry_get(const Ecore_Evas *ee, int *x, int *y, int *w, int *h) +{ + if (x) *x = 0; + if (y) *y = 0; + if (w) *w = 0; + if (h) *h = 0; + if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS)) + { + ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS, + "ecore_evas_screen_geometry_get"); + return; + } + + IFC(ee, fn_screen_geometry_get) (ee, x, y, w, h); + IFE; +} + /* fps debug calls - for debugging how much time your app actually spends */ /* rendering graphics... :) */ diff --git a/src/lib/ecore_evas/ecore_evas_buffer.c b/src/lib/ecore_evas/ecore_evas_buffer.c index 6da3bc2..f66dfc8 100644 --- a/src/lib/ecore_evas/ecore_evas_buffer.c +++ b/src/lib/ecore_evas/ecore_evas_buffer.c @@ -491,7 +491,8 @@ static Ecore_Evas_Engine_Func _ecore_buffer_engine_func = NULL, NULL, //transparent - NULL // render + NULL, // render + NULL // screen_geometry_get }; #endif diff --git a/src/lib/ecore_evas/ecore_evas_directfb.c b/src/lib/ecore_evas/ecore_evas_directfb.c index 2f4b612..7b33293 100644 --- a/src/lib/ecore_evas/ecore_evas_directfb.c +++ b/src/lib/ecore_evas/ecore_evas_directfb.c @@ -486,7 +486,8 @@ static Ecore_Evas_Engine_Func _ecore_directfb_engine_func = NULL, /* alpha */ NULL, //transparent - NULL // render + NULL, // render + NULL // screen_geometry_get }; #endif diff --git a/src/lib/ecore_evas/ecore_evas_fb.c b/src/lib/ecore_evas/ecore_evas_fb.c index 32d74f0..579a5ea 100644 --- a/src/lib/ecore_evas/ecore_evas_fb.c +++ b/src/lib/ecore_evas/ecore_evas_fb.c @@ -572,7 +572,8 @@ static Ecore_Evas_Engine_Func _ecore_fb_engine_func = NULL, NULL, //transparent - NULL // render + NULL, // render + NULL // screen_geometry_get }; #endif diff --git a/src/lib/ecore_evas/ecore_evas_private.h b/src/lib/ecore_evas/ecore_evas_private.h index 2f4f90b..080e530 100644 --- a/src/lib/ecore_evas/ecore_evas_private.h +++ b/src/lib/ecore_evas/ecore_evas_private.h @@ -186,6 +186,7 @@ struct _Ecore_Evas_Engine_Func void (*fn_transparent_set) (Ecore_Evas *ee, int transparent); int (*fn_render) (Ecore_Evas *ee); + void (*fn_screen_geometry_get) (const Ecore_Evas *ee, int *x, int *y, int *w, int *h); }; struct _Ecore_Evas_Engine diff --git a/src/lib/ecore_evas/ecore_evas_sdl.c b/src/lib/ecore_evas/ecore_evas_sdl.c index 525b578..88f1c19 100644 --- a/src/lib/ecore_evas/ecore_evas_sdl.c +++ b/src/lib/ecore_evas/ecore_evas_sdl.c @@ -333,7 +333,8 @@ static Ecore_Evas_Engine_Func _ecore_sdl_engine_func = NULL, NULL, //transparent - NULL // render + NULL, // render + NULL screen_geometry_get }; static Ecore_Evas* diff --git a/src/lib/ecore_evas/ecore_evas_win32.c b/src/lib/ecore_evas/ecore_evas_win32.c index 7d8a61e..bf1353a 100644 --- a/src/lib/ecore_evas/ecore_evas_win32.c +++ b/src/lib/ecore_evas/ecore_evas_win32.c @@ -925,7 +925,8 @@ static Ecore_Evas_Engine_Func _ecore_win32_engine_func = NULL, /* _ecore_evas_x_alpha_set */ NULL, //transparent - NULL // render + NULL, // render + NULL //screen_geometry_get }; #endif /* BUILD_ECORE_EVAS_WIN32 */ diff --git a/src/lib/ecore_evas/ecore_evas_wince.c b/src/lib/ecore_evas/ecore_evas_wince.c index 277ab46..ba0fd88 100644 --- a/src/lib/ecore_evas/ecore_evas_wince.c +++ b/src/lib/ecore_evas/ecore_evas_wince.c @@ -721,7 +721,8 @@ static Ecore_Evas_Engine_Func _ecore_wince_engine_func = NULL, /* _ecore_evas_x_alpha_set */ NULL, //transparent - NULL // render + NULL, // render + NULL // screen_geometry_get }; /* API */ diff --git a/src/lib/ecore_evas/ecore_evas_x.c b/src/lib/ecore_evas/ecore_evas_x.c index d1f667e..bed4385 100644 --- a/src/lib/ecore_evas/ecore_evas_x.c +++ b/src/lib/ecore_evas/ecore_evas_x.c @@ -2912,6 +2912,14 @@ _ecore_evas_x_avoid_damage_set(Ecore_Evas *ee, int on) } } +static void +_ecore_evas_x_screen_geometry_get(const Ecore_Evas *ee __UNUSED__, int *x, int *y, int *w, int *h) +{ + if (x) *x = 0; + if (y) *y = 0; + ecore_x_screen_size_get(ecore_x_default_screen_get(), w, h); +} + int _ecore_evas_x_shutdown(void) { @@ -2980,7 +2988,8 @@ static Ecore_Evas_Engine_Func _ecore_x_engine_func = _ecore_evas_x_alpha_set, _ecore_evas_x_transparent_set, - NULL // render + NULL, // render + _ecore_evas_x_screen_geometry_get }; #endif /* BUILD_ECORE_EVAS_X11 */ -- 2.7.4