summaryrefslogtreecommitdiff
path: root/platform/java/example/PageCanvas.java
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2016-03-30 17:49:04 +0200
committerTor Andersson <tor.andersson@artifex.com>2016-03-31 13:00:41 +0200
commitd68576c3785572c1f5d41f83015b8fe6bbcbe9e8 (patch)
tree431a86edfac640864ba7f406611e8fe9929908cd /platform/java/example/PageCanvas.java
parent32cdb2246eeb9e8109a712ec2a5dd2938e30e9b6 (diff)
downloadmupdf-d68576c3785572c1f5d41f83015b8fe6bbcbe9e8.tar.xz
Reorganize java and android source.
platform/java and platform/android are reorganized: platform/java The new JNI Java classes, mupdf_native.{c,h}, Makefile and Makejar. platform/java/example The example desktop viewer classes. platform/android/viewer The original demo viewer. ndk-build is used to build libmupdf_java.so, making reference to mupdf_native.{c,h} in platform/java.
Diffstat (limited to 'platform/java/example/PageCanvas.java')
-rw-r--r--platform/java/example/PageCanvas.java59
1 files changed, 59 insertions, 0 deletions
diff --git a/platform/java/example/PageCanvas.java b/platform/java/example/PageCanvas.java
new file mode 100644
index 00000000..9de1abdb
--- /dev/null
+++ b/platform/java/example/PageCanvas.java
@@ -0,0 +1,59 @@
+package example;
+
+import com.artifex.mupdf.fitz.*;
+import java.awt.*;
+import java.awt.image.*;
+
+public class PageCanvas extends java.awt.Canvas
+{
+ protected Page page;
+ protected BufferedImage image;
+
+ public static BufferedImage imageFromPixmap(Pixmap pixmap) {
+ int w = pixmap.getWidth();
+ int h = pixmap.getHeight();
+ BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
+ image.setRGB(0, 0, w, h, pixmap.getPixels(), 0, w);
+ return image;
+ }
+
+ public static BufferedImage imageFromPageWithDevice(Page page, Matrix ctm) {
+ Rect bbox = page.getBounds();
+ Pixmap pixmap = new Pixmap(ColorSpace.DeviceBGR, bbox);
+ pixmap.clear(255);
+ DrawDevice dev = new DrawDevice(pixmap);
+ page.run(dev, new Matrix());
+ dev.destroy();
+ BufferedImage image = imageFromPixmap(pixmap);
+ pixmap.destroy();
+ return image;
+ }
+
+ public static BufferedImage imageFromPage(Page page, Matrix ctm) {
+ Pixmap pixmap = page.toPixmap(ctm, ColorSpace.DeviceBGR);
+ BufferedImage image = imageFromPixmap(pixmap);
+ pixmap.destroy();
+ return image;
+ }
+
+ public PageCanvas(Page page_) {
+ this.page = page_;
+ image = imageFromPage(page, new Matrix());
+ }
+
+ public Dimension getPreferredSize() {
+ return new Dimension(image.getWidth(), image.getHeight());
+ }
+
+ public Dimension getMinimumSize() {
+ return getPreferredSize();
+ }
+
+ public Dimension getMaximumSize() {
+ return getPreferredSize();
+ }
+
+ public void paint(Graphics g) {
+ g.drawImage(image, 0, 0, null);
+ }
+}