From d68576c3785572c1f5d41f83015b8fe6bbcbe9e8 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Wed, 30 Mar 2016 17:49:04 +0200 Subject: 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. --- platform/java/example/PageCanvas.java | 59 +++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 platform/java/example/PageCanvas.java (limited to 'platform/java/example/PageCanvas.java') 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); + } +} -- cgit v1.2.3