diff options
author | Sven Gothel <[email protected]> | 2019-07-08 04:55:28 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2019-07-08 04:55:28 +0200 |
commit | f74e9c1597612edbff81425d4f2f528da5ebaf43 (patch) | |
tree | c45eaf4828f3a74b5066ed0f2e5dc8bf238364dc /src/nativewindow/native/ios/IOSmisc.m | |
parent | a307ab505ed3fb5fe64f01478ce6d2933cd26c7d (diff) |
iOS / MacOS: PixelScale Update
- IOSUtil/OSXUtil: Return float value and refine name to GetScreenPixelScale*
- WindowDriver's updateMaxScreenPixelScaleByDisplayID(..) and updateMaxScreenPixelScaleByWindowHandle(..)
will only update the maxPixelScale, as actual user pixelSize change should not be triggered here.
A user pixelSize adaption to the changed underlying scale capabilities (e.g. switch monitor)
should be supported by the implemented WindowDriver's: updatePixelScale(..) called by native code.
Diffstat (limited to 'src/nativewindow/native/ios/IOSmisc.m')
-rw-r--r-- | src/nativewindow/native/ios/IOSmisc.m | 41 |
1 files changed, 18 insertions, 23 deletions
diff --git a/src/nativewindow/native/ios/IOSmisc.m b/src/nativewindow/native/ios/IOSmisc.m index 49fe8325e..70cff4c06 100644 --- a/src/nativewindow/native/ios/IOSmisc.m +++ b/src/nativewindow/native/ios/IOSmisc.m @@ -252,35 +252,35 @@ JNIEXPORT jobject JNICALL Java_jogamp_nativewindow_ios_IOSUtil_GetInsets0 /* * Class: Java_jogamp_nativewindow_ios_IOSUtil - * Method: GetPixelScale1 - * Signature: (I)D + * Method: GetScreenPixelScale1 + * Signature: (I)F */ -JNIEXPORT jdouble JNICALL Java_jogamp_nativewindow_ios_IOSUtil_GetPixelScale1 - (JNIEnv *env, jclass unused, jint displayID) +JNIEXPORT jfloat JNICALL Java_jogamp_nativewindow_ios_IOSUtil_GetScreenPixelScale1 + (JNIEnv *env, jclass unused, jint screenIdx) { NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; CGFloat pixelScale = 1.0; // default - // UIScreen *screen = IOSUtil_getUIScreenByCGDirectDisplayID((CGDirectDisplayID)displayID); - UIScreen *screen = [UIScreen mainScreen]; - if( NULL != screen ) { -NS_DURING - // Available >= 10.7 - pixelScale = [screen scale]; // HiDPI scaling -NS_HANDLER -NS_ENDHANDLER + + NSArray *screens = [UIScreen screens]; + int count = [screens count]; + if( 0 <= screenIdx && screenIdx < count ) { + UIScreen * screen = (UIScreen *) [screens objectAtIndex: screenIdx]; + if( NULL != screen ) { + pixelScale = [screen scale]; + } } [pool release]; - return (jdouble)pixelScale; + return (jfloat)pixelScale; } /* * Class: Java_jogamp_nativewindow_ios_IOSUtil - * Method: GetPixelScale1 - * Signature: (J)D + * Method: GetScreenPixelScale1 + * Signature: (J)F */ -JNIEXPORT jdouble JNICALL Java_jogamp_nativewindow_ios_IOSUtil_GetPixelScale2 +JNIEXPORT jfloat JNICALL Java_jogamp_nativewindow_ios_IOSUtil_GetScreenPixelScale2 (JNIEnv *env, jclass unused, jlong winOrView) { NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; @@ -302,16 +302,11 @@ JNIEXPORT jdouble JNICALL Java_jogamp_nativewindow_ios_IOSUtil_GetPixelScale2 NativewindowCommon_throwNewRuntimeException(env, "neither win nor view %p\n", nsObj); } - CGFloat pixelScale = 1.0; // default -NS_DURING - // Available >= 10.7 - pixelScale = [screen scale]; // HiDPI scaling -NS_HANDLER -NS_ENDHANDLER + CGFloat pixelScale = [screen scale]; [pool release]; - return (jdouble)pixelScale; + return (jfloat)pixelScale; } /* |