summaryrefslogtreecommitdiff
path: root/platform/java/example/PageCanvas.java
diff options
context:
space:
mode:
authorfredrossperry <fredrossperry@gmail.com>2016-07-06 14:28:27 -0700
committerRobin Watts <robin.watts@artifex.com>2016-07-11 23:50:00 +0100
commit4a2b261f195c73aa3cd731d93d3b7778ce985269 (patch)
tree523f3aba0701f5b73c0ed8375450c82eb8a0a18e /platform/java/example/PageCanvas.java
parent8d4b16f46062ba56d636865ca9ad7cb7e8a11551 (diff)
downloadmupdf-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.java41
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();
+ }
+
}