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 | |
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')
5 files changed, 44 insertions, 49 deletions
diff --git a/src/nativewindow/classes/jogamp/nativewindow/ios/IOSUtil.java b/src/nativewindow/classes/jogamp/nativewindow/ios/IOSUtil.java index bd4b36239..7100cb0b5 100644 --- a/src/nativewindow/classes/jogamp/nativewindow/ios/IOSUtil.java +++ b/src/nativewindow/classes/jogamp/nativewindow/ios/IOSUtil.java @@ -115,18 +115,18 @@ public class IOSUtil implements ToolkitProperties { return (Insets) GetInsets0(windowOrView); } - public static double GetPixelScaleByDisplayID(final int displayID) { - if( 0 != displayID ) { - return GetPixelScale1(displayID); + public static float GetScreenPixelScaleByScreenIdx(final int screenIdx) { + if( 0 <= screenIdx ) { + return GetScreenPixelScale1(screenIdx); } else { - return 1.0; // default + return 1.0f; // default } } - public static double GetPixelScale(final long windowOrView) { + public static float GetScreenPixelScale(final long windowOrView) { if( 0 != windowOrView ) { - return GetPixelScale2(windowOrView); + return GetScreenPixelScale2(windowOrView); } else { - return 1.0; // default + return 1.0f; // default } } @@ -310,8 +310,8 @@ public class IOSUtil implements ToolkitProperties { private static native boolean isUIWindow0(long object); private static native Object GetLocationOnScreen0(long windowOrView, int src_x, int src_y); private static native Object GetInsets0(long windowOrView); - private static native double GetPixelScale1(int displayID); - private static native double GetPixelScale2(long windowOrView); + private static native float GetScreenPixelScale1(int screenIdx); + private static native float GetScreenPixelScale2(long windowOrView); private static native long CreateUIWindow0(int x, int y, int width, int height); private static native void DestroyUIWindow0(long uiWindow); private static native long GetCALayer0(long uiView); diff --git a/src/nativewindow/classes/jogamp/nativewindow/jawt/JAWTUtil.java b/src/nativewindow/classes/jogamp/nativewindow/jawt/JAWTUtil.java index 3b824cfe4..0f4a70ddc 100644 --- a/src/nativewindow/classes/jogamp/nativewindow/jawt/JAWTUtil.java +++ b/src/nativewindow/classes/jogamp/nativewindow/jawt/JAWTUtil.java @@ -592,7 +592,7 @@ public class JAWTUtil { final Object res = getCGDisplayIDMethodOnOSX.invoke(device); if (res instanceof Integer) { final int displayID = ((Integer)res).intValue(); - sx = (float) OSXUtil.GetPixelScaleByDisplayID(displayID); + sx = OSXUtil.GetScreenPixelScaleByDisplayID(displayID); sy = sx; } } catch (final Throwable t) {} diff --git a/src/nativewindow/classes/jogamp/nativewindow/macosx/OSXUtil.java b/src/nativewindow/classes/jogamp/nativewindow/macosx/OSXUtil.java index b1bf248ce..e93c9574f 100644 --- a/src/nativewindow/classes/jogamp/nativewindow/macosx/OSXUtil.java +++ b/src/nativewindow/classes/jogamp/nativewindow/macosx/OSXUtil.java @@ -107,18 +107,18 @@ public class OSXUtil implements ToolkitProperties { return (Insets) GetInsets0(windowOrView); } - public static double GetPixelScaleByDisplayID(final int displayID) { + public static float GetScreenPixelScaleByDisplayID(final int displayID) { if( 0 != displayID ) { - return GetPixelScale1(displayID); + return GetScreenPixelScale1(displayID); } else { - return 1.0; // default + return 1.0f; // default } } - public static double GetPixelScale(final long windowOrView) { + public static float GetScreenPixelScale(final long windowOrView) { if( 0 != windowOrView ) { - return GetPixelScale2(windowOrView); + return GetScreenPixelScale2(windowOrView); } else { - return 1.0; // default + return 1.0f; // default } } @@ -404,8 +404,8 @@ public class OSXUtil implements ToolkitProperties { private static native boolean isNSWindow0(long object); private static native Object GetLocationOnScreen0(long windowOrView, int src_x, int src_y); private static native Object GetInsets0(long windowOrView); - private static native double GetPixelScale1(int displayID); - private static native double GetPixelScale2(long windowOrView); + private static native float GetScreenPixelScale1(int displayID); + private static native float GetScreenPixelScale2(long windowOrView); private static native long CreateNSWindow0(int x, int y, int width, int height); private static native void DestroyNSWindow0(long nsWindow); private static native long GetNSView0(long nsWindow); 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; } /* diff --git a/src/nativewindow/native/macosx/OSXmisc.m b/src/nativewindow/native/macosx/OSXmisc.m index fb15c43b9..1135c5fb2 100644 --- a/src/nativewindow/native/macosx/OSXmisc.m +++ b/src/nativewindow/native/macosx/OSXmisc.m @@ -266,10 +266,10 @@ JNIEXPORT jobject JNICALL Java_jogamp_nativewindow_macosx_OSXUtil_GetInsets0 /* * Class: Java_jogamp_nativewindow_macosx_OSXUtil - * Method: GetPixelScale1 - * Signature: (I)D + * Method: GetScreenPixelScale1 + * Signature: (I)F */ -JNIEXPORT jdouble JNICALL Java_jogamp_nativewindow_macosx_OSXUtil_GetPixelScale1 +JNIEXPORT jfloat JNICALL Java_jogamp_nativewindow_macosx_OSXUtil_GetScreenPixelScale1 (JNIEnv *env, jclass unused, jint displayID) { NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; @@ -285,15 +285,15 @@ NS_ENDHANDLER } [pool release]; - return (jdouble)pixelScale; + return (jfloat)pixelScale; } /* * Class: Java_jogamp_nativewindow_macosx_OSXUtil - * Method: GetPixelScale1 - * Signature: (J)D + * Method: GetScreenPixelScale1 + * Signature: (J)F */ -JNIEXPORT jdouble JNICALL Java_jogamp_nativewindow_macosx_OSXUtil_GetPixelScale2 +JNIEXPORT jfloat JNICALL Java_jogamp_nativewindow_macosx_OSXUtil_GetScreenPixelScale2 (JNIEnv *env, jclass unused, jlong winOrView) { NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; @@ -324,7 +324,7 @@ NS_ENDHANDLER [pool release]; - return (jdouble)pixelScale; + return (jfloat)pixelScale; } /* |