diff options
Diffstat (limited to 'platform/java')
-rw-r--r-- | platform/java/Makefile | 70 | ||||
-rw-r--r-- | platform/java/Makejar | 2 | ||||
-rw-r--r-- | platform/java/example/PageCanvas.java (renamed from platform/java/PageCanvas.java) | 2 | ||||
-rw-r--r-- | platform/java/example/TraceDevice.java (renamed from platform/java/TraceDevice.java) | 2 | ||||
-rw-r--r-- | platform/java/example/Viewer.java (renamed from platform/java/Viewer.java) | 103 | ||||
-rw-r--r-- | platform/java/mupdf_native.c | 4 |
6 files changed, 148 insertions, 35 deletions
diff --git a/platform/java/Makefile b/platform/java/Makefile index 3e7df255..fc889c1a 100644 --- a/platform/java/Makefile +++ b/platform/java/Makefile @@ -1,22 +1,44 @@ -default: libmupdf_java.so libmupdf.jar +OS ?= $(shell uname) -MUPDF_CORE = ../../build/java/libmupdf.a ../../build/java/libmupdfthird.a +ifeq "$(OS)" "Darwin" +MUPDF_JAVA := libmupdf_java.jnilib +JAVA_CFLAGS := \ + -I /Library/Java/JavaVirtualMachines/jdk1.8.0_66.jdk/Contents/Home/include \ + -I /Library/Java/JavaVirtualMachines/jdk1.8.0_66.jdk/Contents/Home/include/darwin +else +MUPDF_JAVA := libmupdf_java.so +JAVA_CFLAGS := \ + -I /usr/lib/jvm/java-7-openjdk-i386/include \ + -I /usr/lib/jvm/java-7-openjdk-i386/include/linux \ + -I /usr/lib/jvm/java-7-openjdk-amd64/include \ + -I /usr/lib/jvm/java-7-openjdk-amd64/include/linux +JAVA_LIBS := \ + $(shell pkg-config --cflags freetype2) -lz +endif + +default: $(MUPDF_JAVA) libmupdf.jar + +MUPDF_CORE := ../../build/java/libmupdf.a ../../build/java/libmupdfthird.a +ifeq "$(OS)" "Linux" +$(MUPDF_CORE) : + $(MAKE) -C ../.. OUT=build/java XCFLAGS=-fPIC FREETYPE_DIR=/foo ZLIB_DIR=/foo build=release libs +else +$(MUPDF_CORE) : + $(MAKE) -C ../.. OUT=build/java XCFLAGS=-fPIC build=release libs +endif LIBRARY_JAVA_SOURCES := $(sort $(wildcard com/artifex/mupdf/fitz/*.java)) LIBRARY_JAVA_OBJECTS := $(LIBRARY_JAVA_SOURCES:%.java=%.class) LIBRARY_JAVA_CLASSES := $(subst com/artifex/mupdf/fitz/,com.artifex.mupdf.fitz.,$(LIBRARY_JAVA_SOURCES:%.java=%)) -VIEWER_JAVA_SOURCES := $(sort $(wildcard *.java)) -VIEWER_JAVA_OBJECTS := $(VIEWER_JAVA_SOURCES:%.java=%.class) +$(LIBRARY_JAVA_OBJECTS) : $(LIBRARY_JAVA_SOURCES) + javac -source 1.7 -target 1.7 $^ -$(MUPDF_CORE) : - $(MAKE) -C ../.. OUT=build/java XCFLAGS=-fPIC \ - FREETYPE_DIR=/use/system/library \ - ZLIB_DIR=/use/system/library \ - build=release libs +EXAMPLE_JAVA_SOURCES := $(sort $(wildcard example/*.java)) +EXAMPLE_JAVA_OBJECTS := $(EXAMPLE_JAVA_SOURCES:%.java=%.class) -$(LIBRARY_JAVA_OBJECTS) : $(LIBRARY_JAVA_SOURCES) - javac $^ +$(EXAMPLE_JAVA_OBJECTS) : $(EXAMPLE_JAVA_SOURCES) + javac -source 1.7 -target 1.7 $^ libmupdf.jar : $(LIBRARY_JAVA_OBJECTS) rm -f $@ @@ -27,30 +49,22 @@ mupdf_native.h : $(LIBRARY_JAVA_OBJECTS) javah -o $@ $(LIBRARY_JAVA_CLASSES) mupdf_native.o : mupdf_native.c mupdf_native.h - $(CC) -g -fPIC -Wall -Wextra -Wno-unused-parameter \ - -I /usr/lib/jvm/java-7-openjdk-i386/include \ - -I /usr/lib/jvm/java-7-openjdk-i386/include/linux \ - -I /usr/lib/jvm/java-7-openjdk-amd64/include \ - -I /usr/lib/jvm/java-7-openjdk-amd64/include/linux \ - -I ../../include \ - -o $@ -c $< - -libmupdf_java.so : mupdf_native.o $(MUPDF_CORE) - $(CC) -shared -o $@ $^ -lfreetype -lz + $(CC) -g -o $@ -c $< -fPIC -Wall -Wextra -Wno-unused-parameter -I ../../include \ + $(JAVA_CFLAGS) -$(VIEWER_JAVA_OBJECTS) : $(VIEWER_JAVA_SOURCES) - javac $^ +$(MUPDF_JAVA) : mupdf_native.o $(MUPDF_CORE) + $(CC) -shared -o $(MUPDF_JAVA) $^ $(JAVA_LIBS) -viewer: libmupdf_java.so $(LIBRARY_JAVA_OBJECTS) $(VIEWER_JAVA_OBJECTS) - LD_LIBRARY_PATH=. java Viewer +viewer: $(MUPDF_JAVA) $(EXAMPLE_JAVA_OBJECTS) + LD_LIBRARY_PATH=. java example.Viewer clean: rm -f com/artifex/mupdf/fitz/*.class - rm -f *.class + rm -f example/*.class rm -f mupdf_native.o - rm -f libmupdf_java.so + rm -f $(MUPDF_JAVA) nuke: clean - $(MAKE) -C ../.. build=release OUT=build/java clean + $(MAKE) -C ../.. OUT=build/java clean .NOTPARALLEL : # disable -j option (it breaks since javac compiles all class files in one command) diff --git a/platform/java/Makejar b/platform/java/Makejar index 7ab3e40f..3f98127a 100644 --- a/platform/java/Makejar +++ b/platform/java/Makejar @@ -1,3 +1,3 @@ default: - javac com/artifex/mupdf/fitz/*.java + javac -source 1.7 -target 1.7 com/artifex/mupdf/fitz/*.java jar cf libmupdf.jar com/artifex/mupdf/fitz/*.class diff --git a/platform/java/PageCanvas.java b/platform/java/example/PageCanvas.java index bf20afa8..9de1abdb 100644 --- a/platform/java/PageCanvas.java +++ b/platform/java/example/PageCanvas.java @@ -1,3 +1,5 @@ +package example; + import com.artifex.mupdf.fitz.*; import java.awt.*; import java.awt.image.*; diff --git a/platform/java/TraceDevice.java b/platform/java/example/TraceDevice.java index 36ed6cd3..49c97532 100644 --- a/platform/java/TraceDevice.java +++ b/platform/java/example/TraceDevice.java @@ -1,3 +1,5 @@ +package example; + import com.artifex.mupdf.fitz.*; public class TraceDevice extends Device implements PathWalker, TextWalker diff --git a/platform/java/Viewer.java b/platform/java/example/Viewer.java index a118e3d4..91b0fa1d 100644 --- a/platform/java/Viewer.java +++ b/platform/java/example/Viewer.java @@ -1,5 +1,9 @@ +package example; + import com.artifex.mupdf.fitz.*; +import java.io.File; + import java.awt.Frame; import java.awt.Label; import java.awt.Button; @@ -11,6 +15,10 @@ import java.awt.event.WindowListener; import java.awt.event.WindowEvent; import java.awt.event.ActionEvent; +import javax.swing.JFileChooser; +import javax.swing.filechooser.FileFilter; +import javax.swing.JOptionPane; + public class Viewer extends Frame implements WindowListener, ActionListener { protected Document doc; @@ -100,9 +108,96 @@ public class Viewer extends Frame implements WindowListener, ActionListener public void windowOpened(WindowEvent event) { } public void windowClosed(WindowEvent event) { } - public static void main(String[] args) { - Document doc = new Document("pdfref17.pdf"); - Viewer app = new Viewer(doc); - app.setVisible(true); + public static void main(String[] args) + { + JFileChooser fileChooser = new JFileChooser(); + fileChooser.setDialogTitle("Choose a file to open"); + fileChooser.setFileFilter(new FileFilter() + { + public String getDescription() + { + return "Supported files (*.pdf, *,xps, *.jpg, *.jpeg, *.png, *.epub, *.cbz, *.cbr)"; + } + + public boolean accept(File f) + { + if (f.isDirectory()) + return true; + + String filename = f.getName().toLowerCase(); + if (filename.endsWith(".pdf")) + return true; + if (filename.endsWith(".xps")) + return true; + if (filename.endsWith(".jpg")) + return true; + if (filename.endsWith(".jpeg")) + return true; + if (filename.endsWith(".png")) + return true; + if (filename.endsWith(".epub")) + return true; + if (filename.endsWith(".cbz")) + return true; + if (filename.endsWith(".cbr")) + return true; + + return false; + } + }); + + while (true) + { + try + { + // get a file to open + int result = fileChooser.showOpenDialog(null); + if (result == JFileChooser.APPROVE_OPTION) + { + // user selects a file + File selectedFile = fileChooser.getSelectedFile(); + if (selectedFile != null) + { + Document doc = new Document(selectedFile.getAbsolutePath()); + if (doc != null) + { + Viewer app = new Viewer(doc); + if (app != null) + { + app.setVisible(true); + return; + } + else + { + infoBox("Cannot create Viewer for "+selectedFile.getAbsolutePath(),"Error"); + } + } + else + { + infoBox("Cannot open "+selectedFile.getAbsolutePath(),"Error"); + } + } + else + { + infoBox("Selected file not found.","Error"); + } + } + else + { + infoBox("File selection cancelled.","Error"); + return; + } + + } + catch (Exception e) + { + infoBox("Exception: "+e.getMessage(),"Error"); + } + } + } + + private static void infoBox(String infoMessage, String titleBar) + { + JOptionPane.showMessageDialog(null, infoMessage, "InfoBox: " + titleBar, JOptionPane.INFORMATION_MESSAGE); } } diff --git a/platform/java/mupdf_native.c b/platform/java/mupdf_native.c index 38bd077b..55cb428f 100644 --- a/platform/java/mupdf_native.c +++ b/platform/java/mupdf_native.c @@ -2191,8 +2191,8 @@ FUN(Font_newNative)(JNIEnv *env, jobject self, jstring jname, jint index) fz_try(ctx) { - unsigned char *data; - unsigned int size; + const char *data; + int size; data = fz_lookup_base14_font(ctx, name, &size); if (data) font = fz_new_font_from_memory(ctx, name, data, size, index, 0); |