diff options
author | Tor Andersson <tor.andersson@artifex.com> | 2018-09-10 18:18:49 +0200 |
---|---|---|
committer | Tor Andersson <tor.andersson@artifex.com> | 2018-10-23 17:23:59 +0200 |
commit | 8ebce9c149112d59552ed530361f80372455fdb2 (patch) | |
tree | ebc90eb93345d1b3a77841ed2a92e56a4c1b1baf /platform/wasm/wrap.js | |
parent | ddd00f62888c908c84932c2a92a0c2d195b26c36 (diff) | |
download | mupdf-8ebce9c149112d59552ed530361f80372455fdb2.tar.xz |
Add Emscripten / WebAssembly build.
Requires Linux (or possibly MacOS X) and an installed emsdk to build.
Diffstat (limited to 'platform/wasm/wrap.js')
-rw-r--r-- | platform/wasm/wrap.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/platform/wasm/wrap.js b/platform/wasm/wrap.js new file mode 100644 index 00000000..ef5df57b --- /dev/null +++ b/platform/wasm/wrap.js @@ -0,0 +1,51 @@ +var mupdf = {}; + +Module.noExitRuntime = true; +Module.noInitialRun = true; + +Module.onRuntimeInitialized = function () { + Module.ccall('initContext'); + mupdf.openDocument = Module.cwrap('openDocument', 'number', ['string']); + mupdf.freeDocument = Module.cwrap('freeDocument', 'null', ['number']); + mupdf.documentTitle = Module.cwrap('documentTitle', 'string', ['number']); + mupdf.countPages = Module.cwrap('countPages', 'number', ['number']); + mupdf.pageWidth = Module.cwrap('pageWidth', 'number', ['number', 'number', 'number']); + mupdf.pageHeight = Module.cwrap('pageHeight', 'number', ['number', 'number', 'number']); + mupdf.pageLinks = Module.cwrap('pageLinks', 'string', ['number', 'number', 'number']); + mupdf.drawPageAsPNG = Module.cwrap('drawPageAsPNG', 'string', ['number', 'number', 'number']); + mupdf.drawPageAsHTML = Module.cwrap('drawPageAsHTML', 'string', ['number', 'number']); + mupdf.drawPageAsSVG = Module.cwrap('drawPageAsSVG', 'string', ['number', 'number']); + mupdf.loadOutline = Module.cwrap('loadOutline', 'number', ['number']); + mupdf.freeOutline = Module.cwrap('freeOutline', null, ['number']); + mupdf.outlineTitle = Module.cwrap('outlineTitle', 'string', ['number']); + mupdf.outlinePage = Module.cwrap('outlinePage', 'number', ['number']); + mupdf.outlineDown = Module.cwrap('outlineDown', 'number', ['number']); + mupdf.outlineNext = Module.cwrap('outlineNext', 'number', ['number']); +}; + +mupdf.documentOutline = function (doc) { + function makeOutline(node) { + var ul = document.createElement('ul'); + while (node) { + var li = document.createElement('li'); + var a = document.createElement('a'); + a.href = '#page' + mupdf.outlinePage(node); + a.textContent = mupdf.outlineTitle(node); + li.appendChild(a); + var down = mupdf.outlineDown(node); + if (down) { + li.appendChild(makeOutline(down)); + } + ul.appendChild(li); + node = mupdf.outlineNext(node); + } + return ul; + } + var root = mupdf.loadOutline(doc); + if (root) { + var ul = makeOutline(root); + mupdf.freeOutline(root); + return ul; + } + return null; +} |