diff options
author | fredrossperry <fredrossperry@gmail.com> | 2016-07-06 14:28:27 -0700 |
---|---|---|
committer | Robin Watts <robin.watts@artifex.com> | 2016-07-11 23:50:00 +0100 |
commit | 4a2b261f195c73aa3cd731d93d3b7778ce985269 (patch) | |
tree | 523f3aba0701f5b73c0ed8375450c82eb8a0a18e /platform/java/example/PageCanvas.java | |
parent | 8d4b16f46062ba56d636865ca9ad7cb7e8a11551 (diff) | |
download | mupdf-4a2b261f195c73aa3cd731d93d3b7778ce985269.tar.xz |
Java desktop example: detect retina and scale accordingly
also: zoom in/out buttons
Diffstat (limited to 'platform/java/example/PageCanvas.java')
-rw-r--r-- | platform/java/example/PageCanvas.java | 41 |
1 files changed, 36 insertions, 5 deletions
diff --git a/platform/java/example/PageCanvas.java b/platform/java/example/PageCanvas.java index ffe3efc2..bfeca21b 100644 --- a/platform/java/example/PageCanvas.java +++ b/platform/java/example/PageCanvas.java @@ -9,6 +9,9 @@ public class PageCanvas extends java.awt.Canvas protected Page page; protected BufferedImage image; + protected float mScale = 1.0f; + private float mRetinaScale = 1.0f; + public static BufferedImage imageFromPixmap(Pixmap pixmap) { int w = pixmap.getWidth(); int h = pixmap.getHeight(); @@ -23,7 +26,7 @@ public class PageCanvas extends java.awt.Canvas Pixmap pixmap = new Pixmap(ColorSpace.DeviceBGR, bbox); pixmap.clear(255); DrawDevice dev = new DrawDevice(pixmap); - page.run(dev, new Matrix()); + page.run(dev, ctm); dev.destroy(); BufferedImage image = imageFromPixmap(pixmap); pixmap.destroy(); @@ -37,9 +40,19 @@ public class PageCanvas extends java.awt.Canvas return image; } - public PageCanvas(Page page_) { + public PageCanvas(Page page_, float nativeScale) { + mRetinaScale = nativeScale; + mScale = mRetinaScale; this.page = page_; - image = imageFromPage(page, new Matrix()); + run(); + } + + private void run() + { + Matrix ctm = new Matrix(); + ctm.scale(mScale); + image = imageFromPage(page, ctm); + repaint(); } public Dimension getPreferredSize() { @@ -54,7 +67,25 @@ public class PageCanvas extends java.awt.Canvas return getPreferredSize(); } - public void paint(Graphics g) { - g.drawImage(image, 0, 0, null); + public void zoomIn() { + mScale += 0.25f; + run(); + } + + public void zoomOut() { + mScale -= 0.25f; + run(); } + + public void paint(Graphics g) + { + float scale = 1.0f; + scale = 1/mRetinaScale; + + final Graphics2D g2d = (Graphics2D)g.create(0, 0, image.getWidth(), image.getHeight()); + g2d.scale(scale, scale); + g2d.drawImage(image, 0, 0, null); + g2d.dispose(); + } + } |