Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_config.c e_config.h e_int_config_display.c e_manager.c Log Message: display res dialog now offers rotate & flip... if your x/drivers can do it. =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_config.c,v retrieving revision 1.167 retrieving revision 1.168 diff -u -3 -r1.167 -r1.168 --- e_config.c 11 May 2006 07:00:29 -0000 1.167 +++ e_config.c 12 May 2006 15:07:39 -0000 1.168 @@ -463,6 +463,7 @@ E_CONFIG_VAL(D, T, display_res_width, INT); E_CONFIG_VAL(D, T, display_res_height, INT); E_CONFIG_VAL(D, T, display_res_hz, INT); + E_CONFIG_VAL(D, T, display_res_rotation, INT); e_config = e_config_domain_load("e", _e_config_edd); if (e_config) @@ -635,6 +636,7 @@ e_config->display_res_width = 0; e_config->display_res_height = 0; e_config->display_res_hz = 0; + e_config->display_res_rotation = 0; { E_Config_Module *em; @@ -1207,6 +1209,7 @@ E_CONFIG_LIMIT(e_config->display_res_width, 1, 8192); E_CONFIG_LIMIT(e_config->display_res_height, 1, 8192); E_CONFIG_LIMIT(e_config->display_res_hz, 0, 250); + E_CONFIG_LIMIT(e_config->display_res_rotation, 0, 0xff); e_config_save_queue(); =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_config.h,v retrieving revision 1.95 retrieving revision 1.96 diff -u -3 -r1.95 -r1.96 --- e_config.h 20 Apr 2006 11:30:23 -0000 1.95 +++ e_config.h 12 May 2006 15:07:39 -0000 1.96 @@ -210,8 +210,8 @@ int use_app_icon; // GUI int cfgdlg_auto_apply; // GUI int cfgdlg_default_mode; // GUI - Evas_List *gadcons; - Evas_List *shelves; + Evas_List *gadcons; // GUI + Evas_List *shelves; // GUI int font_hinting; // GUI char *desklock_personal_passwd; // GUI @@ -221,12 +221,13 @@ int desklock_autolock; // GUI int desklock_use_timeout; // GUI double desklock_timeout; // GUI - int desklock_disable_screensaver; + int desklock_disable_screensaver; // GUI - int display_res_restore; - int display_res_width; - int display_res_height; - int display_res_hz; + int display_res_restore; // GUI + int display_res_width; // GUI + int display_res_height; // GUI + int display_res_hz; // GUI + int display_res_rotation; // GUI }; struct _E_Config_Module =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_int_config_display.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- e_int_config_display.c 12 May 2006 12:29:44 -0000 1.10 +++ e_int_config_display.c 12 May 2006 15:07:39 -0000 1.11 @@ -44,6 +44,10 @@ Ecore_X_Screen_Size orig_size; Ecore_X_Screen_Refresh_Rate orig_rate; int restore; + int can_rotate; + int can_flip; + Ecore_X_Randr_Rotation rotation; + Ecore_X_Randr_Rotation flip; SureBox *surebox; }; @@ -186,7 +190,6 @@ v->override_auto_apply = 1; cfd = e_config_dialog_new(con, _("Display Settings"), NULL, 0, v, NULL); - e_dialog_resizable_set(cfd->dia, 1); return cfd; } @@ -194,11 +197,29 @@ _fill_data(E_Config_Dialog_Data *cfdata) { E_Manager *man; + Ecore_X_Randr_Rotation rots; man = e_manager_current_get(); cfdata->orig_size = ecore_x_randr_current_screen_size_get(man->root); cfdata->orig_rate = ecore_x_randr_current_screen_refresh_rate_get(man->root); cfdata->restore = e_config->display_res_restore; + + rots = ecore_x_randr_screen_rotations_get(man->root); + if (rots) + { + cfdata->rotation = ecore_x_randr_screen_rotation_get(man->root); + if ((rots & (ECORE_X_RANDR_FLIP_X | ECORE_X_RANDR_FLIP_Y))) + cfdata->can_flip = 1; + cfdata->flip = cfdata->rotation & + (ECORE_X_RANDR_FLIP_X | ECORE_X_RANDR_FLIP_Y); + + if ((rots & (ECORE_X_RANDR_ROT_0 | ECORE_X_RANDR_ROT_90 | + ECORE_X_RANDR_ROT_180 | ECORE_X_RANDR_ROT_270))) + cfdata->can_rotate = 1; + cfdata->rotation = cfdata->rotation & + (ECORE_X_RANDR_ROT_0 | ECORE_X_RANDR_ROT_90 | + ECORE_X_RANDR_ROT_180 | ECORE_X_RANDR_ROT_270); + } } static void * @@ -241,43 +262,54 @@ e_config->display_res_height = cfdata->orig_size.height; e_config->display_res_hz = cfdata->orig_rate.rate; - if ((cfdata->orig_size.width == w) && - (cfdata->orig_size.height == h) && - (cfdata->orig_rate.rate == r)) - goto saveonly; - man = e_manager_current_get(); - sizes = ecore_x_randr_screen_sizes_get(man->root, &n); - for (i = 0; i < n; i++) + + if (!((cfdata->orig_size.width == w) && (cfdata->orig_size.height == h) && + (cfdata->orig_rate.rate == r))) { - if ((sizes[i].width == w) && - (sizes[i].height == h)) + sizes = ecore_x_randr_screen_sizes_get(man->root, &n); + for (i = 0; i < n; i++) { - size = sizes[i]; - int k, rr; - rates = ecore_x_randr_screen_refresh_rates_get(man->root, i, &rr); - for (k = 0; k < rr; k++) + if ((sizes[i].width == w) && + (sizes[i].height == h)) { - if (rates[k].rate == r) + size = sizes[i]; + int k, rr; + rates = ecore_x_randr_screen_refresh_rates_get(man->root, i, &rr); + for (k = 0; k < rr; k++) { - rate = rates[k]; - break; - } + if (rates[k].rate == r) + { + rate = rates[k]; + break; + } + } + break; } - break; } + + e_config->display_res_width = size.width; + e_config->display_res_height = size.height; + e_config->display_res_hz = rate.rate; + ecore_x_randr_screen_refresh_rate_set(man->root, size, rate); + _surebox_new(cfd, cfdata); + cfdata->orig_size = size; + cfdata->orig_rate = rate; } - e_config->display_res_width = size.width; - e_config->display_res_height = size.height; - e_config->display_res_hz = rate.rate; - ecore_x_randr_screen_refresh_rate_set(man->root, size, rate); - _surebox_new(cfd, cfdata); - - cfdata->orig_size = size; - cfdata->orig_rate = rate; + if ((cfdata->can_rotate) || (cfdata->can_flip)) + { + Ecore_X_Randr_Rotation rot; + + rot = ecore_x_randr_screen_rotation_get(man->root); + if (rot != cfdata->rotation | cfdata->flip) + ecore_x_randr_screen_rotation_set(man->root, + cfdata->rotation | cfdata->flip); + e_config->display_res_rotation = cfdata->rotation | cfdata->flip; + } + else + e_config->display_res_rotation = 0; - saveonly: e_config->display_res_restore = cfdata->restore; e_config_save_queue(); @@ -287,22 +319,24 @@ static Evas_Object * _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) { - Evas_Object *o, *of, *ol, *rl, *ob; + Evas_Object *o, *of, *ol, *rl, *ob, *o2; + E_Radio_Group *rg; E_Manager *man; Ecore_X_Screen_Size *sizes; Ecore_X_Screen_Size size; - Ecore_X_Randr_Rotation rots, rot; int i, r, s; _fill_data(cfdata); - o = e_widget_list_add(evas, 0, 0); + o = e_widget_list_add(evas, 0, 1); + + o2 = e_widget_list_add(evas, 0, 0); of = e_widget_framelist_add(evas, _("Resolution"), 0); ol = e_widget_ilist_add(evas, 32, 32, NULL); e_widget_min_size_set(ol, 140, 120); e_widget_framelist_object_append(of, ol); - e_widget_list_object_append(o, of, 1, 1, 0.5); + e_widget_list_object_append(o2, of, 1, 1, 0.5); res_list = ol; @@ -310,7 +344,7 @@ rl = e_widget_ilist_add(evas, 8, 8, NULL); e_widget_min_size_set(rl, 140, 90); e_widget_framelist_object_append(of, rl); - e_widget_list_object_append(o, of, 1, 1, 0.5); + e_widget_list_object_append(o2, of, 1, 1, 0.5); rate_list = rl; @@ -388,30 +422,51 @@ } ob = e_widget_check_add(evas, _("Restore this resolution on login"), &(cfdata->restore)); - e_widget_list_object_append(o, ob, 1, 1, 0.5); - + e_widget_list_object_append(o2, ob, 1, 1, 0.5); + e_widget_ilist_go(ol); e_widget_ilist_go(rl); + + e_widget_list_object_append(o, o2, 1, 1, 0.5); - rots = ecore_x_randr_screen_rotations_get(man->root); - rot = ecore_x_randr_screen_rotation_get(man->root); - if (!rots) + if ((cfdata->can_rotate) || (cfdata->can_flip)) + o2 = e_widget_list_add(evas, 0, 0); + + if (cfdata->can_rotate) + { + of = e_widget_framelist_add(evas, _("Rotation"), 0); + + rg = e_widget_radio_group_new(&(cfdata->rotation)); + + ob = e_widget_radio_add(evas, _("Normal"), ECORE_X_RANDR_ROT_0, rg); + e_widget_framelist_object_append(of, ob); + ob = e_widget_radio_add(evas, _("To the left"), ECORE_X_RANDR_ROT_90, rg); + e_widget_framelist_object_append(of, ob); + ob = e_widget_radio_add(evas, _("Turned around"), ECORE_X_RANDR_ROT_180, rg); + e_widget_framelist_object_append(of, ob); + ob = e_widget_radio_add(evas, _("To the right"), ECORE_X_RANDR_ROT_270, rg); + e_widget_framelist_object_append(of, ob); + + e_widget_list_object_append(o2, of, 0, 0, 0.5); + } + + if (cfdata->can_flip) { - printf("no randr support\n"); + of = e_widget_framelist_add(evas, _("Mirroring"), 0); + + rg = e_widget_radio_group_new(&(cfdata->flip)); + + ob = e_widget_radio_add(evas, _("Horizontally"), ECORE_X_RANDR_FLIP_X, rg); + e_widget_framelist_object_append(of, ob); + ob = e_widget_radio_add(evas, _("Vertically"), ECORE_X_RANDR_FLIP_Y, rg); + e_widget_framelist_object_append(of, ob); + + e_widget_list_object_append(o2, of, 0, 0, 0.5); } - if (rot & ECORE_X_RANDR_ROT_0) printf("rot: 0deg\n"); - if (rot & ECORE_X_RANDR_ROT_90) printf("rot: 90deg\n"); - if (rot & ECORE_X_RANDR_ROT_180) printf("rot: 180deg\n"); - if (rot & ECORE_X_RANDR_ROT_270) printf("rot: 270deg\n"); - if (rot & ECORE_X_RANDR_FLIP_X) printf("rot: flip x\n"); - if (rot & ECORE_X_RANDR_FLIP_Y) printf("rot: flip y\n"); - printf("---\n", rot); - if (rots & ECORE_X_RANDR_ROT_0) printf("support: 0deg\n"); - if (rots & ECORE_X_RANDR_ROT_90) printf("support: 90deg\n"); - if (rots & ECORE_X_RANDR_ROT_180) printf("support: 180deg\n"); - if (rots & ECORE_X_RANDR_ROT_270) printf("support: 270deg\n"); - if (rots & ECORE_X_RANDR_FLIP_X) printf("support: flip x\n"); - if (rots & ECORE_X_RANDR_FLIP_Y) printf("support: flip y\n"); + + if ((cfdata->can_rotate) || (cfdata->can_flip)) + e_widget_list_object_append(o, o2, 0, 0, 0.0); + return o; } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_manager.c,v retrieving revision 1.52 retrieving revision 1.53 diff -u -3 -r1.52 -r1.53 --- e_manager.c 8 Mar 2006 08:54:43 -0000 1.52 +++ e_manager.c 12 May 2006 15:07:39 -0000 1.53 @@ -128,6 +128,9 @@ size.height = e_config->display_res_height; rate.rate = e_config->display_res_hz; ecore_x_randr_screen_refresh_rate_set(man->root, size, rate); + if (e_config->display_res_rotation) + ecore_x_randr_screen_rotation_set(man->root, + e_config->display_res_rotation); } h = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_SHOW_REQUEST, _e_manager_cb_window_show_request, man); ------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs