summaryrefslogtreecommitdiff
path: root/platform/java/example/PageCanvas.java
diff options
context:
space:
mode:
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();
+ }
+
}