src/screen_xywh.cxx:
Fix X11 screen_init() if Xinerama is available, but not active. Still investigating why there are nonsense dpi values under Cygwin/X11, but maybe this is an X server problem. test/hello.cxx: Extended test statements - don't forget to remove before release. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@8210 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
parent
3c25646121
commit
cdaff761f7
@ -56,7 +56,7 @@ typedef BOOL (WINAPI* fl_gmi_func)(HMONITOR, LPMONITORINFO);
|
||||
static fl_gmi_func fl_gmi = NULL; // used to get a proc pointer for GetMonitorInfoA
|
||||
|
||||
static RECT screens[16];
|
||||
static int dpi[16][2] = { { 0.0f, 0.0f } };
|
||||
static float dpi[16][2];
|
||||
|
||||
static BOOL CALLBACK screen_cb(HMONITOR mon, HDC, LPRECT r, LPARAM) {
|
||||
if (num_screens >= 16) return TRUE;
|
||||
@ -135,14 +135,19 @@ static void screen_init() {
|
||||
|
||||
if (XineramaIsActive(fl_display)) {
|
||||
screens = XineramaQueryScreens(fl_display, &num_screens);
|
||||
} else num_screens = 1;
|
||||
|
||||
int i;
|
||||
for (i=0; i<num_screens; i++) {
|
||||
int mm = DisplayWidthMM(fl_display, i);
|
||||
dpi[i][0] = mm ? screens[i].width*25.4f/mm : 0.0f;
|
||||
int i;
|
||||
for (i=0; i<num_screens; i++) {
|
||||
int mm = DisplayWidthMM(fl_display, i);
|
||||
dpi[i][0] = mm ? screens[i].width*25.4f/mm : 0.0f;
|
||||
mm = DisplayHeightMM(fl_display, fl_screen);
|
||||
dpi[i][1] = mm ? screens[i].height*25.4f/mm : dpi[i][0];
|
||||
}
|
||||
} else { // ! XineramaIsActive()
|
||||
num_screens = 1;
|
||||
int mm = DisplayWidthMM(fl_display, fl_screen);
|
||||
dpi[0][0] = mm ? Fl::w()*25.4f/mm : 0.0f;
|
||||
mm = DisplayHeightMM(fl_display, fl_screen);
|
||||
dpi[i][1] = mm ? screens[i].height*25.4f/mm : dpi[i][0];
|
||||
dpi[0][1] = mm ? Fl::h()*25.4f/mm : dpi[0][0];
|
||||
}
|
||||
}
|
||||
#else
|
||||
|
@ -30,9 +30,17 @@
|
||||
#include <FL/Fl_Box.H>
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
float h, v;
|
||||
Fl::screen_dpi(h, v);
|
||||
printf("Screen res is %g x %g ppi\n", h, v);
|
||||
#if (1) // FIXME: test screen dimensions and resolution. Remove before release !
|
||||
float ppi_h, ppi_v;
|
||||
int x,y,w,h;
|
||||
int n = Fl::screen_count();
|
||||
for (int i=0; i<n; i++) {
|
||||
Fl::screen_xywh(x,y,w,h,i);
|
||||
Fl::screen_dpi(ppi_h, ppi_v, i);
|
||||
printf("Screen %2d (%4d,%4d,%4d,%4d) res. is %7.3f x %7.3f ppi\n", i, x,y,w,h, ppi_h, ppi_v);
|
||||
}
|
||||
fflush(stdout);
|
||||
#endif // FIXME: test screen dimensions and resolution. Remove before release !
|
||||
Fl_Window *window = new Fl_Window(340,180);
|
||||
Fl_Box *box = new Fl_Box(20,40,300,100,"Hello, World!");
|
||||
box->box(FL_UP_BOX);
|
||||
|
Loading…
Reference in New Issue
Block a user