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;
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());
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;
}
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() {