summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2012-02-09 15:37:41 +0000
committerRobin Watts <robin.watts@artifex.com>2012-02-20 13:37:24 +0000
commit8c426f6d8cd8f2d038fe3e690e6791c9b9b6edd4 (patch)
tree856a7b8442234e516d47e8bd95cd77f460462fa5 /android
parentb3708b652831202b8fc600ccdac8ee3218966dc9 (diff)
downloadmupdf-8c426f6d8cd8f2d038fe3e690e6791c9b9b6edd4.tar.xz
Update android app to use document interface
This adds XPS and CBZ support for free.
Diffstat (limited to 'android')
-rw-r--r--android/jni/Core.mk17
-rw-r--r--android/jni/mupdf.c40
-rw-r--r--android/res/values/strings.xml2
-rw-r--r--android/src/com/artifex/mupdf/ChoosePDFActivity.java8
4 files changed, 44 insertions, 23 deletions
diff --git a/android/jni/Core.mk b/android/jni/Core.mk
index 25ce747d..51908298 100644
--- a/android/jni/Core.mk
+++ b/android/jni/Core.mk
@@ -15,6 +15,8 @@ LOCAL_C_INCLUDES := \
../draw \
../fitz \
../pdf \
+ ../xps \
+ ../cbz \
../scripts \
..
@@ -98,7 +100,20 @@ LOCAL_SRC_FILES := \
$(MY_ROOT)/pdf/pdf_type3.c \
$(MY_ROOT)/pdf/pdf_unicode.c \
$(MY_ROOT)/pdf/pdf_xobject.c \
- $(MY_ROOT)/pdf/pdf_xref.c
+ $(MY_ROOT)/pdf/pdf_xref.c \
+ $(MY_ROOT)/xps/xps_common.c \
+ $(MY_ROOT)/xps/xps_doc.c \
+ $(MY_ROOT)/xps/xps_glyphs.c \
+ $(MY_ROOT)/xps/xps_gradient.c \
+ $(MY_ROOT)/xps/xps_image.c \
+ $(MY_ROOT)/xps/xps_outline.c \
+ $(MY_ROOT)/xps/xps_path.c \
+ $(MY_ROOT)/xps/xps_resource.c \
+ $(MY_ROOT)/xps/xps_tile.c \
+ $(MY_ROOT)/xps/xps_util.c \
+ $(MY_ROOT)/xps/xps_xml.c \
+ $(MY_ROOT)/xps/xps_zip.c \
+ $(MY_ROOT)/cbz/mucbz.c
LOCAL_LDLIBS := -lm -llog -ljnigraphics
diff --git a/android/jni/mupdf.c b/android/jni/mupdf.c
index 4775e072..ccd10065 100644
--- a/android/jni/mupdf.c
+++ b/android/jni/mupdf.c
@@ -24,7 +24,7 @@
/* Globals */
fz_colorspace *colorspace;
-pdf_document *xref;
+fz_document *doc;
int pagenum = 1;
int resolution = 160;
float pageWidth = 100;
@@ -33,7 +33,7 @@ fz_display_list *currentPageList;
fz_rect currentMediabox;
fz_context *ctx;
int currentPageNumber = -1;
-pdf_page *currentPage = NULL;
+fz_page *currentPage = NULL;
fz_bbox *hit_bbox = NULL;
JNIEXPORT int JNICALL
@@ -58,7 +58,7 @@ Java_com_artifex_mupdf_MuPDFCore_openFile(JNIEnv * env, jobject thiz, jstring jf
return 0;
}
- xref = NULL;
+ doc = NULL;
fz_try(ctx)
{
colorspace = fz_device_rgb;
@@ -66,7 +66,7 @@ Java_com_artifex_mupdf_MuPDFCore_openFile(JNIEnv * env, jobject thiz, jstring jf
LOGE("Opening document...");
fz_try(ctx)
{
- xref = pdf_open_document(ctx, filename);
+ doc = fz_open_document(ctx, (char *)filename);
}
fz_catch(ctx)
{
@@ -78,8 +78,8 @@ Java_com_artifex_mupdf_MuPDFCore_openFile(JNIEnv * env, jobject thiz, jstring jf
fz_catch(ctx)
{
LOGE("Failed: %s", ctx->error->message);
- pdf_close_document(xref);
- xref = NULL;
+ fz_close_document(doc);
+ doc = NULL;
fz_free_context(ctx);
ctx = NULL;
}
@@ -92,7 +92,7 @@ Java_com_artifex_mupdf_MuPDFCore_openFile(JNIEnv * env, jobject thiz, jstring jf
JNIEXPORT int JNICALL
Java_com_artifex_mupdf_MuPDFCore_countPagesInternal(JNIEnv *env, jobject thiz)
{
- return pdf_count_pages(xref);
+ return fz_count_pages(doc);
}
JNIEXPORT void JNICALL
@@ -107,7 +107,7 @@ Java_com_artifex_mupdf_MuPDFCore_gotoPageInternal(JNIEnv *env, jobject thiz, int
if (currentPage != NULL && page != currentPageNumber)
{
- pdf_free_page(xref, currentPage);
+ fz_free_page(doc, currentPage);
currentPage = NULL;
}
@@ -125,9 +125,9 @@ Java_com_artifex_mupdf_MuPDFCore_gotoPageInternal(JNIEnv *env, jobject thiz, int
currentPageList = NULL;
}
pagenum = page;
- currentPage = pdf_load_page(xref, pagenum);
+ currentPage = fz_load_page(doc, pagenum);
zoom = resolution / 72;
- currentMediabox = pdf_bound_page(xref, currentPage);
+ currentMediabox = fz_bound_page(doc, currentPage);
ctm = fz_scale(zoom, zoom);
bbox = fz_round_rect(fz_transform_rect(ctm, currentMediabox));
pageWidth = bbox.x1-bbox.x0;
@@ -203,7 +203,7 @@ Java_com_artifex_mupdf_MuPDFCore_drawPage(JNIEnv *env, jobject thiz, jobject bit
/* Render to list */
currentPageList = fz_new_display_list(ctx);
dev = fz_new_list_device(ctx, currentPageList);
- pdf_run_page(xref, currentPage, dev, fz_identity, NULL);
+ fz_run_page(doc, currentPage, dev, fz_identity, NULL);
}
rect.x0 = patchX;
rect.y0 = patchY;
@@ -377,7 +377,7 @@ fillInOutlineItems(JNIEnv * env, jclass olClass, jmethodID ctor, jobjectArray ar
JNIEXPORT jboolean JNICALL
Java_com_artifex_mupdf_MuPDFCore_needsPasswordInternal(JNIEnv * env, jobject thiz)
{
- return pdf_needs_password(xref) ? JNI_TRUE : JNI_FALSE;
+ return fz_needs_password(doc) ? JNI_TRUE : JNI_FALSE;
}
JNIEXPORT jboolean JNICALL
@@ -389,7 +389,7 @@ Java_com_artifex_mupdf_MuPDFCore_authenticatePasswordInternal(JNIEnv *env, jobje
if (pw == NULL)
return JNI_FALSE;
- result = pdf_authenticate_password(xref, (char *)pw);
+ result = fz_authenticate_password(doc, (char *)pw);
(*env)->ReleaseStringUTFChars(env, password, pw);
return result;
}
@@ -397,7 +397,7 @@ Java_com_artifex_mupdf_MuPDFCore_authenticatePasswordInternal(JNIEnv *env, jobje
JNIEXPORT jboolean JNICALL
Java_com_artifex_mupdf_MuPDFCore_hasOutlineInternal(JNIEnv * env, jobject thiz)
{
- fz_outline *outline = pdf_load_outline(xref);
+ fz_outline *outline = fz_load_outline(doc);
return (outline == NULL) ? JNI_FALSE : JNI_TRUE;
}
@@ -416,7 +416,7 @@ Java_com_artifex_mupdf_MuPDFCore_getOutlineInternal(JNIEnv * env, jobject thiz)
ctor = (*env)->GetMethodID(env, olClass, "<init>", "(ILjava/lang/String;I)V");
if (ctor == NULL) return NULL;
- outline = pdf_load_outline(xref);
+ outline = fz_load_outline(doc);
nItems = countOutlineItems(outline);
arr = (*env)->NewObjectArray(env,
@@ -466,7 +466,7 @@ Java_com_artifex_mupdf_MuPDFCore_searchPage(JNIEnv * env, jobject thiz, jstring
dev = fz_new_text_device(ctx, text);
zoom = resolution / 72;
ctm = fz_scale(zoom, zoom);
- pdf_run_page(xref, currentPage, dev, ctm, NULL);
+ fz_run_page(doc, currentPage, dev, ctm, NULL);
fz_free_device(dev);
dev = NULL;
@@ -530,11 +530,11 @@ Java_com_artifex_mupdf_MuPDFCore_destroying(JNIEnv * env, jobject thiz)
currentPageList = NULL;
if (currentPage != NULL)
{
- pdf_free_page(xref, currentPage);
+ fz_free_page(doc, currentPage);
currentPage = NULL;
}
- pdf_close_document(xref);
- xref = NULL;
+ fz_close_document(doc);
+ doc = NULL;
}
JNIEXPORT int JNICALL
@@ -561,7 +561,7 @@ Java_com_artifex_mupdf_MuPDFCore_getPageLink(JNIEnv * env, jobject thiz, int pag
p = fz_transform_point(ctm, p);
- for (link = currentPage->links; link; link = link->next)
+ for (link = fz_load_links(doc, currentPage); link; link = link->next)
{
if (p.x >= link->rect.x0 && p.x <= link->rect.x1)
if (p.y >= link->rect.y0 && p.y <= link->rect.y1)
diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml
index 7e1c9d46..64758804 100644
--- a/android/res/values/strings.xml
+++ b/android/res/values/strings.xml
@@ -8,7 +8,7 @@
<string name="search_backwards">Search backwards</string>
<string name="search_forwards">Search forwards</string>
<string name="search_document">Search document</string>
- <string name="picker_title">PDF Documents</string>
+ <string name="picker_title">MuPDF</string>
<string name="outline_title">Table of Contents</string>
<string name="enter_password">Enter Password</string>
</resources>
diff --git a/android/src/com/artifex/mupdf/ChoosePDFActivity.java b/android/src/com/artifex/mupdf/ChoosePDFActivity.java
index 4fd636ce..dca4ee4c 100644
--- a/android/src/com/artifex/mupdf/ChoosePDFActivity.java
+++ b/android/src/com/artifex/mupdf/ChoosePDFActivity.java
@@ -47,7 +47,13 @@ public class ChoosePDFActivity extends ListActivity {
mDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
mFiles = mDirectory.listFiles(new FilenameFilter() {
public boolean accept(File file, String name) {
- return name.toLowerCase().endsWith(".pdf");
+ if (name.toLowerCase().endsWith(".pdf"))
+ return true;
+ if (name.toLowerCase().endsWith(".xps"))
+ return true;
+ if (name.toLowerCase().endsWith(".cbz"))
+ return true;
+ return false;
}
});