From b6cc0103c8724a90837027144ff880b454e3a3d4 Mon Sep 17 00:00:00 2001 From: dcnieho Date: Fri, 24 Jan 2014 10:29:03 +0000 Subject: [PATCH] Added ability to get screen size of display git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1660 7f0cb862-5218-0410-a997-914c9d46530a --- .../src/blackberry/fg_init_blackberry.c | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/freeglut/freeglut/src/blackberry/fg_init_blackberry.c b/freeglut/freeglut/src/blackberry/fg_init_blackberry.c index aaef2cb..ed1b1c9 100644 --- a/freeglut/freeglut/src/blackberry/fg_init_blackberry.c +++ b/freeglut/freeglut/src/blackberry/fg_init_blackberry.c @@ -47,6 +47,39 @@ void fgPlatformInitialize() return; } + /* Get screen size */ + int displayCount; + screen_display_t* displays; + int vals[2]; + if(screen_get_context_property_iv(fgDisplay.pDisplay.screenContext, SCREEN_PROPERTY_DISPLAY_COUNT, &displayCount)) { + fgWarning("Could not get display count. Screen size not determined and will be left at default values"); + } else if(displayCount >= 1) { + displays = (screen_display_t*)calloc(displayCount, sizeof(screen_display_t)); + if(screen_get_context_property_pv(fgDisplay.pDisplay.screenContext, SCREEN_PROPERTY_DISPLAYS, (void**)displays)) { + fgWarning("Could not get displays. Screen size not determined and will be left at default values"); + } else { + /* We only care about the first one, which is the device display */ + if(screen_get_display_property_iv(displays[0], SCREEN_PROPERTY_SIZE, vals)) { + fgWarning("Could not get display size. Values will be left at default"); + } else { + if(screen_get_display_property_iv(displays[0], SCREEN_PROPERTY_ROTATION, &displayCount) || (displayCount == 0 || displayCount == 180)) { + fgDisplay.ScreenWidth = vals[0]; + fgDisplay.ScreenHeight = vals[1]; + } else { + fgDisplay.ScreenWidth = vals[1]; + fgDisplay.ScreenHeight = vals[0]; + } + } + if(screen_get_display_property_iv(displays[0], SCREEN_PROPERTY_PHYSICAL_SIZE, vals)) { + fgWarning("Could not get physical display size. Values will be left at default"); + } else { + fgDisplay.ScreenWidthMM = vals[0]; + fgDisplay.ScreenHeightMM = vals[1]; + } + } + free(displays); + } + /* Get start time */ fgState.Time = fgSystemTime();