OSDN Git Service

IOSGraphics returns density & PPI values now. That "completes" the Retina update...
authorChristoph Aschwanden <contact@noblemaster.com>
Thu, 27 Sep 2012 13:55:55 +0000 (22:55 +0900)
committerChristoph Aschwanden <contact@noblemaster.com>
Thu, 27 Sep 2012 13:55:55 +0000 (22:55 +0900)
NOTE: we could add a flag to IOSApplicationConfiguration in the future to allow apps to take full advantage of Retina. For now all apps will work on both Retina and non-Retina devices without code changes :)

backends/gdx-backend-iosmonotouch/mono/mono/libgdx.a
backends/gdx-backend-iosmonotouch/src/com/badlogic/gdx/backends/ios/IOSGraphics.java
demos/invaders/gdx-invaders-ios/gdx-invaders-ios/libgdx.a
demos/superjumper/superjumper-ios/superjumper-ios/Info.plist
demos/superjumper/superjumper-ios/superjumper-ios/libgdx.a
demos/vector-pinball/gdx-vectorpinball-ios/gdx-vectorpinball-ios/libgdx.a

index 7546d1c..a681686 100644 (file)
Binary files a/backends/gdx-backend-iosmonotouch/mono/mono/libgdx.a and b/backends/gdx-backend-iosmonotouch/mono/mono/libgdx.a differ
index 1cfdac6..d7ed378 100644 (file)
@@ -18,10 +18,13 @@ package com.badlogic.gdx.backends.ios;
 import cli.MonoTouch.Foundation.ExportAttribute;
 import cli.MonoTouch.Foundation.NSSet;\r
 import cli.MonoTouch.CoreAnimation.CAEAGLLayer;
+import cli.MonoTouch.ObjCRuntime.Selector;\r
 import cli.MonoTouch.OpenGLES.EAGLColorFormat;
 import cli.MonoTouch.OpenGLES.EAGLRenderingAPI;
+import cli.MonoTouch.UIKit.UIDevice;\r
 import cli.MonoTouch.UIKit.UIEvent;\r
 import cli.MonoTouch.UIKit.UIScreen;
+import cli.MonoTouch.UIKit.UIUserInterfaceIdiom;\r
 import cli.OpenTK.FrameEventArgs;
 import cli.OpenTK.Platform.iPhoneOS.iPhoneOSGameView;
 import cli.System.EventArgs;
@@ -47,9 +50,17 @@ public class IOSGraphics extends iPhoneOSGameView implements Graphics {
        long framesStart;
        int frames;
        int fps;
+\r
+       private float ppiX = 0;\r
+       private float ppiY = 0;\r
+       private float ppcX = 0;\r
+       private float ppcY = 0;\r
+       private float density = 1;\r
 
        public IOSGraphics(RectangleF bounds, IOSApplication app, IOSInput input) {
-               super(bounds);
+               super(bounds);\r
+               \r
+               // setup view and OpenGL
                width = (int)bounds.get_Width();
                height = (int)bounds.get_Height();
                app.log("IOSGraphics", bounds.get_Width() + "x" + bounds.get_Height() + ", " + UIScreen.get_MainScreen().get_Scale());
@@ -64,7 +75,33 @@ public class IOSGraphics extends iPhoneOSGameView implements Graphics {
                gl20 = new IOSGLES20();
                Gdx.gl = gl20;
                Gdx.gl20 = gl20;
-               
+               \r
+               // determine display density and PPI (PPI values via Wikipedia!)\r
+               if ((UIScreen.get_MainScreen().RespondsToSelector(new Selector("scale:"))) &&\r
+                   (UIScreen.get_MainScreen().get_Scale() == 2.0f)) {\r
+                       // Retina display!\r
+                       density = 2.0f;\r
+               }\r
+               else {\r
+                       // regular display\r
+                       density = 1.0f;\r
+               }\r
+               int ppi;  \r
+               if (UIDevice.get_CurrentDevice().get_UserInterfaceIdiom().Value == UIUserInterfaceIdiom.Pad) {\r
+                       // iPad\r
+                       ppi = Math.round(density * 132);\r
+               }\r
+               else {\r
+                       // iPhone or iPodTouch\r
+                       ppi = Math.round(density * 163);\r
+               }\r
+               ppiX = ppi;\r
+               ppiY = ppi;\r
+               ppcX = ppiX / 2.54f;\r
+               ppcY = ppcY / 2.54f;\r
+               app.log("IOSGraphics", "Display: ppi=" + ppi + ", density=" + density);\r
+               \r
+               // time + FPS
                lastFrameTime = System.nanoTime();
                framesStart = lastFrameTime;
        }
@@ -181,30 +218,35 @@ public class IOSGraphics extends iPhoneOSGameView implements Graphics {
                return GraphicsType.iOSGL;
        }
 
-       @Override
-       public float getPpiX() {
-               return 0;
-       }
-
-       @Override
-       public float getPpiY() {
-               return 0;
-       }
-
-       @Override
-       public float getPpcX() {
-               return 0;
-       }
-
-       @Override
-       public float getPpcY() {
-               return 0;
-       }
-
-       @Override
-       public float getDensity() {
-               return 0;
-       }
+       @Override\r
+       public float getPpiX () {\r
+               return ppiX;\r
+       }\r
+\r
+       @Override\r
+       public float getPpiY () {\r
+               return ppiY;\r
+       }\r
+\r
+       @Override\r
+       public float getPpcX () {\r
+               return ppcX;\r
+       }\r
+\r
+       @Override\r
+       public float getPpcY () {\r
+               return ppcY;\r
+       }\r
+\r
+       /**\r
+        * Returns the display density.\r
+        * \r
+        * @return 1.0f for non-retina devices, 2.0f for retina devices.\r
+        */\r
+       @Override\r
+       public float getDensity () {\r
+               return density;\r
+       }\r
 
        @Override
        public boolean supportsDisplayModeChange() {
index be1a49d..a681686 100644 (file)
Binary files a/demos/invaders/gdx-invaders-ios/gdx-invaders-ios/libgdx.a and b/demos/invaders/gdx-invaders-ios/gdx-invaders-ios/libgdx.a differ
index ec0ab3e..2fba87f 100644 (file)
@@ -8,8 +8,8 @@
        <string>3.2</string>
        <key>UIDeviceFamily</key>
        <array>
-               <integer>1</integer>
                <integer>2</integer>
+               <integer>1</integer>
        </array>
        <key>UIStatusBarHidden</key>
        <true/>
index be1a49d..a681686 100644 (file)
Binary files a/demos/superjumper/superjumper-ios/superjumper-ios/libgdx.a and b/demos/superjumper/superjumper-ios/superjumper-ios/libgdx.a differ
index be1a49d..a681686 100644 (file)
Binary files a/demos/vector-pinball/gdx-vectorpinball-ios/gdx-vectorpinball-ios/libgdx.a and b/demos/vector-pinball/gdx-vectorpinball-ios/gdx-vectorpinball-ios/libgdx.a differ