aboutsummaryrefslogtreecommitdiffstats
path: root/src/nativewindow
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2019-07-08 04:55:28 +0200
committerSven Gothel <[email protected]>2019-07-08 04:55:28 +0200
commitf74e9c1597612edbff81425d4f2f528da5ebaf43 (patch)
treec45eaf4828f3a74b5066ed0f2e5dc8bf238364dc /src/nativewindow
parenta307ab505ed3fb5fe64f01478ce6d2933cd26c7d (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')
-rw-r--r--src/nativewindow/classes/jogamp/nativewindow/ios/IOSUtil.java18
-rw-r--r--src/nativewindow/classes/jogamp/nativewindow/jawt/JAWTUtil.java2
-rw-r--r--src/nativewindow/classes/jogamp/nativewindow/macosx/OSXUtil.java16
-rw-r--r--src/nativewindow/native/ios/IOSmisc.m41
-rw-r--r--src/nativewindow/native/macosx/OSXmisc.m16
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;
}
/*