WinRT: minor rotation/orientation code cleanup in the d3d11 renderer
authorDavid Ludwig <dludwig@pobox.com>
Wed, 25 Dec 2013 23:45:07 -0500
changeset 8567 8d5acc1f3468
parent 8566 7b4d9d694189
child 8568 dd195f502839
WinRT: minor rotation/orientation code cleanup in the d3d11 renderer
src/render/direct3d11/SDL_render_d3d11.cpp
--- a/src/render/direct3d11/SDL_render_d3d11.cpp	Wed Dec 25 23:25:25 2013 -0500
+++ b/src/render/direct3d11/SDL_render_d3d11.cpp	Wed Dec 25 23:45:07 2013 -0500
@@ -1062,6 +1062,18 @@
     }
 }
 
+static bool
+D3D11_IsDisplayRotated90Degrees(Windows::Graphics::Display::DisplayOrientations orientation)
+{
+    switch (D3D11_GetRotationForOrientation(orientation)) {
+        case DXGI_MODE_ROTATION_ROTATE90:
+        case DXGI_MODE_ROTATION_ROTATE270:
+            return true;
+        default:
+            return false;
+    }
+}
+
 // Initialize all resources that change when the window's size changes.
 // TODO, WinRT: get D3D11_CreateWindowSizeDependentResources working on Win32
 HRESULT
@@ -1108,9 +1120,7 @@
 #if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
     const bool swapDimensions = false;
 #else
-    const bool swapDimensions =
-        data->orientation == DisplayOrientations::Portrait ||
-        data->orientation == DisplayOrientations::PortraitFlipped;
+    const bool swapDimensions = D3D11_IsDisplayRotated90Degrees(data->orientation);
 #endif
     data->renderTargetSize.x = swapDimensions ? windowHeight : windowWidth;
     data->renderTargetSize.y = swapDimensions ? windowWidth : windowHeight;
@@ -1687,16 +1697,7 @@
     // for Windows Phone devices.
     //
     SDL_FRect orientationAlignedViewport;
-
-#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
-    const bool swapDimensions =
-        data->orientation == DisplayOrientations::Landscape ||
-        data->orientation == DisplayOrientations::LandscapeFlipped;
-#else
-    const bool swapDimensions =
-        data->orientation == DisplayOrientations::Portrait ||
-        data->orientation == DisplayOrientations::PortraitFlipped;
-#endif
+    const bool swapDimensions = D3D11_IsDisplayRotated90Degrees(data->orientation);
     if (swapDimensions) {
         orientationAlignedViewport.x = (float) renderer->viewport.y;
         orientationAlignedViewport.y = (float) renderer->viewport.x;