diff options
author | Ian Brown <[email protected]> | 2018-09-30 18:30:49 -0700 |
---|---|---|
committer | Harvey Harrison <[email protected]> | 2018-09-30 18:30:49 -0700 |
commit | dd694ef6042fdf2d978a978d3750acac2c25557d (patch) | |
tree | e2d2f0f3374cb82e80fab278694f79331d475c63 /src/javax/media/j3d/Canvas3D.java | |
parent | a61cf7db3460ff1e39fd4923b32e4c0450ac8c36 (diff) |
j3d-core: Fix HiDPI issues on Windows
Signed-off-by: Harvey Harrison <[email protected]>
Diffstat (limited to 'src/javax/media/j3d/Canvas3D.java')
-rw-r--r-- | src/javax/media/j3d/Canvas3D.java | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/javax/media/j3d/Canvas3D.java b/src/javax/media/j3d/Canvas3D.java index 080bd18..8824191 100644 --- a/src/javax/media/j3d/Canvas3D.java +++ b/src/javax/media/j3d/Canvas3D.java @@ -32,12 +32,14 @@ import java.awt.Container; import java.awt.Dimension; import java.awt.Frame; import java.awt.Graphics; +import java.awt.Graphics2D; import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.IllegalComponentStateException; import java.awt.Point; import java.awt.Window; +import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.Hashtable; @@ -820,6 +822,8 @@ ArrayList<Integer> textureIdResourceFreeList = new ArrayList<Integer>(); // CanvasViewEventCatcher. Point newPosition = new Point(); Dimension newSize = new Dimension(); + double xscale = 1.0; + double yscale = 1.0; // Remember OGL context resources to free // before context is destroy. @@ -1227,9 +1231,15 @@ ArrayList<TextureRetained> textureIDResourceTable = new ArrayList<TextureRetaine if (!firstPaintCalled && added && validCanvas && validGraphicsMode()) { + final Graphics2D g2d = (Graphics2D) g; + final AffineTransform t = g2d.getTransform(); + try { - newSize = getSize(); - newPosition = getLocationOnScreen(); + Dimension scaledSize = getSize(); + xscale = t.getScaleX(); + yscale = t.getScaleY(); + newSize = new Dimension((int)(scaledSize.getWidth()*xscale), (int)(scaledSize.getHeight()*yscale)); + newPosition = getLocationOnScreen(); } catch (IllegalComponentStateException e) { return; } |