modules/graphics/src/main/java/com/sun/prism/PresentableState.java

Print this page

        

@@ -48,13 +48,13 @@
     protected int windowX, windowY;
     protected float windowAlpha;
     protected long nativeWindowHandle;
     protected long nativeView;
     protected int viewWidth, viewHeight;
-    protected float renderScale;
+    protected float renderScaleX, renderScaleY;
     protected int renderWidth, renderHeight;
-    protected float outputScale;
+    protected float outputScaleX, outputScaleY;
     protected int outputWidth, outputHeight;
     protected int screenHeight;
     protected int screenWidth;
     protected boolean isWindowVisible;
     protected boolean isWindowMinimized;

@@ -130,16 +130,29 @@
     /**
      * @return Screen.getScale
      *
      * May be called on any thread
      */
-    public float getRenderScale() {
-        return renderScale;
+    public float getRenderScaleX() {
+        return renderScaleX;
     }
 
-    public float getOutputScale() {
-        return outputScale;
+    /**
+     * @return Screen.getScale
+     *
+     * May be called on any thread
+     */
+    public float getRenderScaleY() {
+        return renderScaleY;
+    }
+
+    public float getOutputScaleX() {
+        return outputScaleX;
+    }
+
+    public float getOutputScaleY() {
+        return outputScaleY;
     }
 
     /**
      * @return the window's alpha level
      *

@@ -303,29 +316,34 @@
         return (fromScale == toScale)
                ? dim
                : (int) Math.ceil(dim * toScale / fromScale);
     }
 
-    protected void update(float viewScale, float renderScale, float outputScale) {
-        this.renderScale = renderScale;
-        this.outputScale = outputScale;
-        if (renderScale == viewScale) {
+    protected void update(float viewScaleX,   float viewScaleY,
+                          float renderScaleX, float renderScaleY,
+                          float outputScaleX, float outputScaleY)
+    {
+        this.renderScaleX = renderScaleX;
+        this.renderScaleY = renderScaleY;
+        this.outputScaleX = outputScaleX;
+        this.outputScaleY = outputScaleY;
+        if (renderScaleX == viewScaleX && renderScaleY == viewScaleY) {
             renderWidth = viewWidth;
             renderHeight = viewHeight;
         } else {
-            renderWidth = scale(viewWidth, viewScale, renderScale);
-            renderHeight = scale(viewHeight, viewScale, renderScale);
+            renderWidth = scale(viewWidth, viewScaleX, renderScaleX);
+            renderHeight = scale(viewHeight, viewScaleY, renderScaleY);
         }
-        if (outputScale == viewScale) {
+        if (outputScaleX == viewScaleX && outputScaleY == viewScaleY) {
             outputWidth = viewWidth;
             outputHeight = viewHeight;
-        } else if (outputScale == renderScale) {
+        } else if (outputScaleX == renderScaleX && outputScaleY == renderScaleY) {
             outputWidth = renderWidth;
             outputHeight = renderHeight;
         } else {
-            outputWidth = scale(viewWidth, viewScale, outputScale);
-            outputHeight = scale(viewHeight, viewScale, outputScale);
+            outputWidth = scale(viewWidth, viewScaleX, outputScaleX);
+            outputHeight = scale(viewHeight, viewScaleY, outputScaleY);
         }
     }
 
     /** Updates the state of this object based on the current state of its
      * nativeWindow.

@@ -349,13 +367,13 @@
             nativeView = view.getNativeView();
             nativeWindowHandle = window.getNativeWindow();
             isClosed = view.isClosed();
             isWindowVisible = window.isVisible();
             isWindowMinimized = window.isMinimized();
-            update(window.getPlatformScale(),
-                   window.getRenderScale(),
-                   window.getOutputScale());
+            update(window.getPlatformScaleX(), window.getPlatformScaleY(),
+                   window.getRenderScaleX(),   window.getRenderScaleY(),
+                   window.getOutputScaleX(),   window.getOutputScaleY());
             Screen screen = window.getScreen();
             if (screen != null) {
                 // note only used by Embedded Z order painting
                 // !hasWindowManager so should be safe to ignore
                 // when null, most likely because of "In Browswer"