diff --git a/src/lime/_internal/backend/air/AIRApplication.hx b/src/lime/_internal/backend/air/AIRApplication.hx index c814ec97b..d0e6b4ebe 100644 --- a/src/lime/_internal/backend/air/AIRApplication.hx +++ b/src/lime/_internal/backend/air/AIRApplication.hx @@ -5,6 +5,7 @@ import flash.desktop.SystemIdleMode; import flash.events.Event; import lime._internal.backend.flash.FlashApplication; import lime.app.Application; +import lime.system.Orientation; import lime.system.System; class AIRApplication extends FlashApplication @@ -32,4 +33,21 @@ class AIRApplication extends FlashApplication { // TODO: Remove event handlers? } + + override public function getDeviceOrientation():Orientation + { + switch (parent.window.stage.deviceOrientation) + { + case DEFAULT: + return PORTRAIT; + case UPSIDE_DOWN: + return PORTRAIT_FLIPPED; + case ROTATED_LEFT: + return LANDSCAPE; + case ROTATED_RIGHT: + return LANDSCAPE_FLIPPED; + default: + return UNKNOWN; + } + } } diff --git a/src/lime/_internal/backend/flash/FlashApplication.hx b/src/lime/_internal/backend/flash/FlashApplication.hx index 039b032b9..0ecd20727 100644 --- a/src/lime/_internal/backend/flash/FlashApplication.hx +++ b/src/lime/_internal/backend/flash/FlashApplication.hx @@ -4,6 +4,7 @@ import flash.ui.MultitouchInputMode; import flash.ui.Multitouch; import lime.app.Application; import lime.media.AudioManager; +import lime.system.Orientation; import lime.ui.Window; @:access(lime.app.Application) @@ -34,4 +35,9 @@ class FlashApplication } public function exit():Void {} + + public function getDeviceOrientation():Orientation + { + return UNKNOWN; + } } diff --git a/src/lime/_internal/backend/html5/HTML5Application.hx b/src/lime/_internal/backend/html5/HTML5Application.hx index 3b137e92b..6800c87ca 100644 --- a/src/lime/_internal/backend/html5/HTML5Application.hx +++ b/src/lime/_internal/backend/html5/HTML5Application.hx @@ -5,6 +5,7 @@ import js.html.KeyboardEvent; import js.Browser; import lime.app.Application; import lime.media.AudioManager; +import lime.system.Orientation; import lime.system.Sensor; import lime.system.SensorType; import lime.ui.GamepadAxis; @@ -350,6 +351,27 @@ class HTML5Application public function exit():Void {} + public function getDeviceOrientation():Orientation + { + if (Browser.window.screen.orientation != null) + { + switch (Browser.window.screen.orientation.type) + { + case PORTRAIT_PRIMARY: + return PORTRAIT; + case PORTRAIT_SECONDARY: + return PORTRAIT_FLIPPED; + case LANDSCAPE_PRIMARY: + return LANDSCAPE; + case LANDSCAPE_SECONDARY: + return LANDSCAPE_FLIPPED; + default: + // fall through to unknown + } + } + return UNKNOWN; + } + private function handleApplicationEvent(?__):Void { // TODO: Support independent window frame rates diff --git a/src/lime/_internal/backend/native/NativeApplication.hx b/src/lime/_internal/backend/native/NativeApplication.hx index 56b1677cf..949390573 100644 --- a/src/lime/_internal/backend/native/NativeApplication.hx +++ b/src/lime/_internal/backend/native/NativeApplication.hx @@ -182,6 +182,13 @@ class NativeApplication #end } + public function getDeviceOrientation():Orientation + { + #if (!macro && lime_cffi) + return cast NativeCFFI.lime_system_get_device_orientation(); + #end + } + private function handleApplicationEvent():Void { switch (applicationEventInfo.type) diff --git a/src/lime/app/Application.hx b/src/lime/app/Application.hx index 13ca9ecea..fb318ca61 100644 --- a/src/lime/app/Application.hx +++ b/src/lime/app/Application.hx @@ -16,10 +16,6 @@ import lime.ui.Touch; import lime.ui.Window; import lime.ui.WindowAttributes; import lime.utils.Preloader; -import lime._internal.backend.native.NativeCFFI; -#if (js && html5) -import js.Browser; -#end /** The Application class forms the foundation for most Lime projects. @@ -32,7 +28,6 @@ import js.Browser; @:noDebug #end @:access(lime.ui.Window) -@:access(lime._internal.backend.native.NativeCFFI) class Application extends Module { /** @@ -659,41 +654,7 @@ class Application extends Module @:noCompletion private function get_deviceOrientation():Orientation { - #if (lime_cffi && !macro) - return cast NativeCFFI.lime_system_get_device_orientation(); - #elseif air - switch (__window.stage.deviceOrientation) - { - case DEFAULT: - return PORTRAIT; - case UPSIDE_DOWN: - return PORTRAIT_FLIPPED; - case ROTATED_LEFT: - return LANDSCAPE; - case ROTATED_RIGHT: - return LANDSCAPE_FLIPPED; - default: - return UNKNOWN; - } - #elseif (js && html5) - if (Browser.window.screen.orientation != null) - { - switch (Browser.window.screen.orientation.type) - { - case PORTRAIT_PRIMARY: - return PORTRAIT; - case PORTRAIT_SECONDARY: - return PORTRAIT_FLIPPED; - case LANDSCAPE_PRIMARY: - return LANDSCAPE; - case LANDSCAPE_SECONDARY: - return LANDSCAPE_FLIPPED; - default: - return UNKNOWN; - } - } - #end - return UNKNOWN; + return __backend.getDeviceOrientation(); } }