19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 #import <UIKit/UIKit.h> 27 #import <QuartzCore/QuartzCore.h> 28 29 #import "common.h" 30 #import "GlassMacros.h" 31 #import "GlassScreen.h" 32 #import "GlassStatics.h" 33 #import "GlassTimer.h" 34 35 static inline jobject createJavaScreen(JNIEnv *env, UIScreen* screen) 36 { 37 jmethodID screenInit = (*env)->GetMethodID(env, mat_jScreenClass, 38 "<init>", 39 "(JIIIIIIIIIIIF)V"); 40 41 return (jobject)(*env)->NewObject(env, mat_jScreenClass, screenInit, 42 ptr_to_jlong(screen), 43 44 32, 45 46 (jint)[screen bounds].origin.x, 47 (jint)[screen bounds].origin.y, 48 (jint)[screen bounds].size.width, 49 (jint)[screen bounds].size.height, 50 51 (jint)[screen applicationFrame].origin.x, 52 (jint)[screen applicationFrame].origin.y, 53 (jint)[screen applicationFrame].size.width, 54 (jint)[screen applicationFrame].size.height, 55 56 57 (jint)[screen currentMode].size.width, 58 (jint)[screen currentMode].size.height, 59 (jfloat)[screen scale]); 60 61 } 62 63 void GlassScreenDidChangeScreenParameters(JNIEnv *env) 64 { 65 jmethodID jScreenNotifySettingsChanged = (*env)->GetStaticMethodID(env, mat_jScreenClass, "notifySettingsChanged", "()V"); 66 67 (*env)->CallStaticVoidMethod(env, mat_jScreenClass, jScreenNotifySettingsChanged); 68 } 69 70 jobjectArray createJavaScreens(JNIEnv* env) { 71 NSArray* screens = [UIScreen screens]; 72 73 if (mat_jScreenClass == NULL) 74 { 75 mat_jScreenClass = (*env)->NewGlobalRef(env, (*env)->FindClass(env, "com/sun/glass/ui/Screen")); 76 } 77 78 jobjectArray screenArray = (*env)->NewObjectArray(env, 79 [screens count], | 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 #import <UIKit/UIKit.h> 27 #import <QuartzCore/QuartzCore.h> 28 29 #import "common.h" 30 #import "GlassMacros.h" 31 #import "GlassScreen.h" 32 #import "GlassStatics.h" 33 #import "GlassTimer.h" 34 35 static inline jobject createJavaScreen(JNIEnv *env, UIScreen* screen) 36 { 37 jmethodID screenInit = (*env)->GetMethodID(env, mat_jScreenClass, 38 "<init>", 39 "(JIIIIIIIIIIIIIIIFFFF)V"); 40 41 jfloat outputScale = (jfloat) [screen scale]; 42 return (jobject)(*env)->NewObject(env, mat_jScreenClass, screenInit, 43 ptr_to_jlong(screen), 44 45 32, 46 47 (jint)[screen bounds].origin.x, 48 (jint)[screen bounds].origin.y, 49 (jint)[screen bounds].size.width, 50 (jint)[screen bounds].size.height, 51 52 (jint)[screen bounds].origin.x, 53 (jint)[screen bounds].origin.y, 54 (jint)[screen bounds].size.width, 55 (jint)[screen bounds].size.height, 56 57 (jint)[screen applicationFrame].origin.x, 58 (jint)[screen applicationFrame].origin.y, 59 (jint)[screen applicationFrame].size.width, 60 (jint)[screen applicationFrame].size.height, 61 62 63 (jint)[screen currentMode].size.width, 64 (jint)[screen currentMode].size.height, 65 1.0f, 1.0f, 66 outputScale, outputScale); 67 68 } 69 70 void GlassScreenDidChangeScreenParameters(JNIEnv *env) 71 { 72 jmethodID jScreenNotifySettingsChanged = (*env)->GetStaticMethodID(env, mat_jScreenClass, "notifySettingsChanged", "()V"); 73 74 (*env)->CallStaticVoidMethod(env, mat_jScreenClass, jScreenNotifySettingsChanged); 75 } 76 77 jobjectArray createJavaScreens(JNIEnv* env) { 78 NSArray* screens = [UIScreen screens]; 79 80 if (mat_jScreenClass == NULL) 81 { 82 mat_jScreenClass = (*env)->NewGlobalRef(env, (*env)->FindClass(env, "com/sun/glass/ui/Screen")); 83 } 84 85 jobjectArray screenArray = (*env)->NewObjectArray(env, 86 [screens count], |