diff --git a/src/bin/e_randr2.c b/src/bin/e_randr2.c index c717a0448..46db9723e 100644 --- a/src/bin/e_randr2.c +++ b/src/bin/e_randr2.c @@ -1215,3 +1215,27 @@ out: } e_xinerama_screens_set(all_screens); } + +E_API E_Randr2_Screen * +e_randr2_screen_id_find(const char *id) +{ + Eina_List *l; + E_Randr2_Screen *s; + + EINA_LIST_FOREACH(e_randr2->screens, l, s) + { + if (!strcmp(id, s->id)) return s; + } + return NULL; +} + +E_API double +e_randr2_screen_dpi_get(E_Randr2_Screen *s) +{ + double dpi1, dpi2; + + if ((s->info.size.w <= 0) || (s->info.size.h <= 0)) return 0.0; + dpi1 = (25.4 * (double)(s->config.mode.w)) / (double)(s->info.size.w); + dpi2 = (25.4 * (double)(s->config.mode.h)) / (double)(s->info.size.h); + return (dpi1 + dpi2) / 2.0; +} diff --git a/src/bin/e_randr2.h b/src/bin/e_randr2.h index 779be2ab3..7c39b2a46 100644 --- a/src/bin/e_randr2.h +++ b/src/bin/e_randr2.h @@ -123,5 +123,8 @@ E_API void e_randr2_screeninfo_update(void); E_API void e_randr2_screen_refresh_queue(Eina_Bool lid_event); E_API E_Config_Randr2_Screen *e_randr2_config_screen_find(E_Randr2_Screen *s, E_Config_Randr2 *cfg); E_API void e_randr2_screens_setup(int rw, int rh); +E_API E_Randr2_Screen *e_randr2_screen_id_find(const char *id); +E_API double e_randr2_screen_dpi_get(E_Randr2_Screen *s); + #endif #endif