summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile16
-rw-r--r--platform/win32/generate.bat2
-rw-r--r--platform/win32/libmupdf.vcproj8
-rw-r--r--scripts/jsdump.sed5
-rw-r--r--scripts/runjsdump.sh6
-rw-r--r--source/pdf/js/util.js (renamed from source/pdf/pdf-js-util.js)0
-rw-r--r--source/pdf/js/util.js.h803
-rw-r--r--source/pdf/pdf-js.c6
8 files changed, 820 insertions, 26 deletions
diff --git a/Makefile b/Makefile
index 262f1cac..e475aeb7 100644
--- a/Makefile
+++ b/Makefile
@@ -247,20 +247,10 @@ generate: $(CMAP_GEN)
# --- Generated embedded javascript files ---
-JAVASCRIPT_SRC := source/pdf/pdf-js-util.js
-JAVASCRIPT_GEN := generated/pdf-js-util.c
-JAVASCRIPT_OBJ := $(JAVASCRIPT_GEN:%.c=$(OUT)/%.o)
+source/pdf/js/util.js.h: source/pdf/js/util.js scripts/jsdump.sed
+ $(QUIET_GEN) sed -f scripts/jsdump.sed < $< > $@
-$(JAVASCRIPT_GEN) : $(JAVASCRIPT_SRC) | generated
- $(QUIET_GEN) $(HEXDUMP_EXE) -0 $@ $(JAVASCRIPT_SRC)
-
-ifneq "$(CROSSCOMPILE)" "yes"
-$(JAVASCRIPT_GEN) : $(HEXDUMP_EXE)
-endif
-
-$(JAVASCRIPT_OBJ) : $(JAVASCRIPT_GEN)
-
-generate: $(JAVASCRIPT_GEN)
+generate: source/pdf/js/util.js.h
# --- Library ---
diff --git a/platform/win32/generate.bat b/platform/win32/generate.bat
index 7b40cbb9..6cae19fe 100644
--- a/platform/win32/generate.bat
+++ b/platform/win32/generate.bat
@@ -8,8 +8,6 @@ cl /nologo -Iinclude scripts/hexdump.c setargv.obj
if not exist hexdump.exe goto usage
-if not exist generated/pdf-js-util.c hexdump.exe -0 generated/pdf-js-util.c source/pdf/pdf-js-util.js
-
if not exist generated/DroidSansFallback.c hexdump.exe generated/DroidSansFallback.c resources/fonts/droid/DroidSansFallback.ttf
if not exist generated/DroidSansFallbackFull.c hexdump.exe generated/DroidSansFallbackFull.c resources/fonts/droid/DroidSansFallbackFull.ttf
diff --git a/platform/win32/libmupdf.vcproj b/platform/win32/libmupdf.vcproj
index 31e9c335..b996c37e 100644
--- a/platform/win32/libmupdf.vcproj
+++ b/platform/win32/libmupdf.vcproj
@@ -2081,10 +2081,6 @@
>
</File>
<File
- RelativePath="..\..\source\pdf\pdf-js-util.js"
- >
- </File>
- <File
RelativePath="..\..\source\pdf\pdf-js.c"
>
</File>
@@ -2564,10 +2560,6 @@
<Filter
Name="generated"
>
- <File
- RelativePath="..\..\generated\pdf-js-util.c"
- >
- </File>
</Filter>
</Files>
<Globals>
diff --git a/scripts/jsdump.sed b/scripts/jsdump.sed
new file mode 100644
index 00000000..5babe1f1
--- /dev/null
+++ b/scripts/jsdump.sed
@@ -0,0 +1,5 @@
+s!//.*!!
+s/^[ \t]*//
+s/\\/\\\\/g
+s/"/\\"/g
+s/.*/"&\\n"/
diff --git a/scripts/runjsdump.sh b/scripts/runjsdump.sh
new file mode 100644
index 00000000..13eafdd9
--- /dev/null
+++ b/scripts/runjsdump.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+for f in source/pdf/js/*.js
+do
+ echo Dumping $f
+ sed -f scripts/jsdump.sed < $f > $f.h
+done
diff --git a/source/pdf/pdf-js-util.js b/source/pdf/js/util.js
index 06c332d7..06c332d7 100644
--- a/source/pdf/pdf-js-util.js
+++ b/source/pdf/js/util.js
diff --git a/source/pdf/js/util.js.h b/source/pdf/js/util.js.h
new file mode 100644
index 00000000..3f9a8884
--- /dev/null
+++ b/source/pdf/js/util.js.h
@@ -0,0 +1,803 @@
+"var MuPDF = {\n"
+"monthPattern: /Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec/,\n"
+"monthName: [\n"
+"'January',\n"
+"'February',\n"
+"'March',\n"
+"'April',\n"
+"'May',\n"
+"'June',\n"
+"'July',\n"
+"'August',\n"
+"'September',\n"
+"'October',\n"
+"'November',\n"
+"'December'\n"
+"],\n"
+"shortMonthName: [\n"
+"'Jan',\n"
+"'Feb',\n"
+"'Mar',\n"
+"'Apr',\n"
+"'May',\n"
+"'Jun',\n"
+"'Jul',\n"
+"'Aug',\n"
+"'Sep',\n"
+"'Oct',\n"
+"'Nov',\n"
+"'Dec'\n"
+"],\n"
+"dayName: [\n"
+"'Sunday',\n"
+"'Monday',\n"
+"'Tuesday',\n"
+"'Wednesday',\n"
+"'Thursday',\n"
+"'Friday',\n"
+"'Saturday'\n"
+"],\n"
+"dateFormats: [\n"
+"'m/d',\n"
+"'m/d/yy',\n"
+"'mm/dd/yy',\n"
+"'mm/yy',\n"
+"'d-mmm',\n"
+"'d-mmm-yy',\n"
+"'dd-mm-yy',\n"
+"'yy-mm-dd',\n"
+"'mmm-yy',\n"
+"'mmmm-yy',\n"
+"'mmm d, yyyy',\n"
+"'mmmm d, yyyy',\n"
+"'m/d/yy h:MM tt',\n"
+"'m/d/yy HH:MM'\n"
+"],\n"
+"timeFormats: [\n"
+"'HH:MM',\n"
+"'h:MM tt',\n"
+"'HH:MM:ss',\n"
+"'h:MM:ss tt'\n"
+"],\n"
+"\n"
+"padZeros: function (num, places) {\n"
+"var s = String(num)\n"
+"while (s.length < places)\n"
+"s = '0' + s;\n"
+"return s;\n"
+"},\n"
+"\n"
+"convertCase: function (str, cmd) {\n"
+"switch (cmd) {\n"
+"case '>': return str.toUpperCase();\n"
+"case '<': return str.toLowerCase();\n"
+"default: return str;\n"
+"}\n"
+"},\n"
+"};\n"
+"\n"
+"\n"
+"var display = {\n"
+"visible: 0,\n"
+"hidden: 1,\n"
+"noPrint: 2,\n"
+"noView: 3,\n"
+"};\n"
+"\n"
+"var border = {\n"
+"s: 'Solid',\n"
+"d: 'Dashed',\n"
+"b: 'Beveled',\n"
+"i: 'Inset',\n"
+"u: 'Underline',\n"
+"};\n"
+"\n"
+"var color = {\n"
+"transparent: [ 'T' ],\n"
+"black: [ 'G', 0 ],\n"
+"white: [ 'G', 1 ],\n"
+"red: [ 'RGB', 1, 0, 0 ],\n"
+"green: [ 'RGB', 0, 1, 0 ],\n"
+"blue: [ 'RGB', 0, 0, 1 ],\n"
+"cyan: [ 'CMYK', 1, 0, 0, 0 ],\n"
+"magenta: [ 'CMYK', 0, 1, 0, 0 ],\n"
+"yellow: [ 'CMYK', 0, 0, 1, 0 ],\n"
+"dkGray: [ 'G', 0.25 ],\n"
+"gray: [ 'G', 0.5 ],\n"
+"ltGray: [ 'G', 0.75 ],\n"
+"};\n"
+"\n"
+"var util = {};\n"
+"\n"
+"util.printd = function (fmt, d) {\n"
+"if (!d) return null;\n"
+"var res = '';\n"
+"var tokens = fmt.match(/(m+|d+|y+|H+|h+|M+|s+|t+|[^mdyHhMst]+)/g);\n"
+"var length = tokens ? tokens.length : 0;\n"
+"var i;\n"
+"for (i = 0; i < length; ++i) {\n"
+"switch (tokens[i]) {\n"
+"case 'mmmm': res += MuPDF.monthName[d.getMonth()]; break;\n"
+"case 'mmm': res += MuPDF.monthName[d.getMonth()].substring(0, 3); break;\n"
+"case 'mm': res += MuPDF.padZeros(d.getMonth()+1, 2); break;\n"
+"case 'm': res += d.getMonth()+1; break;\n"
+"case 'dddd': res += MuPDF.dayName[d.getDay()]; break;\n"
+"case 'ddd': res += MuPDF.dayName[d.getDay()].substring(0, 3); break;\n"
+"case 'dd': res += MuPDF.padZeros(d.getDate(), 2); break;\n"
+"case 'd': res += d.getDate(); break;\n"
+"case 'yyyy': res += d.getFullYear(); break;\n"
+"case 'yy': res += d.getFullYear()%100; break;\n"
+"case 'HH': res += MuPDF.padZeros(d.getHours(), 2); break;\n"
+"case 'H': res += d.getHours(); break;\n"
+"case 'hh': res += MuPDF.padZeros((d.getHours()+11)%12+1, 2); break;\n"
+"case 'h': res += (d.getHours()+11)%12+1; break;\n"
+"case 'MM': res += MuPDF.padZeros(d.getMinutes(), 2); break;\n"
+"case 'M': res += d.getMinutes(); break;\n"
+"case 'ss': res += MuPDF.padZeros(d.getSeconds(), 2); break;\n"
+"case 's': res += d.getSeconds(); break;\n"
+"case 'tt': res += d.getHours() < 12 ? 'am' : 'pm'; break;\n"
+"case 't': res += d.getHours() < 12 ? 'a' : 'p'; break;\n"
+"default: res += tokens[i];\n"
+"}\n"
+"}\n"
+"return res;\n"
+"}\n"
+"\n"
+"util.printx = function (fmt, val) {\n"
+"var cs = '=';\n"
+"var res = '';\n"
+"var i, m;\n"
+"var length = fmt ? fmt.length : 0;\n"
+"for (i = 0; i < length; ++i) {\n"
+"switch (fmt.charAt(i)) {\n"
+"case '\\\\':\n"
+"if (++i < length)\n"
+"res += fmt.charAt(i);\n"
+"break;\n"
+"case 'X':\n"
+"m = val.match(/\\w/);\n"
+"if (m) {\n"
+"res += MuPDF.convertCase(m[0], cs);\n"
+"val = val.replace(/^\\W*\\w/, '');\n"
+"}\n"
+"break;\n"
+"case 'A':\n"
+"m = val.match(/[A-Za-z]/);\n"
+"if (m) {\n"
+"res += MuPDF.convertCase(m[0], cs);\n"
+"val = val.replace(/^[^A-Za-z]*[A-Za-z]/, '');\n"
+"}\n"
+"break;\n"
+"case '9':\n"
+"m = val.match(/\\d/);\n"
+"if (m) {\n"
+"res += m[0];\n"
+"val = val.replace(/^\\D*\\d/, '');\n"
+"}\n"
+"break;\n"
+"case '*':\n"
+"res += val;\n"
+"val = '';\n"
+"break;\n"
+"case '?':\n"
+"if (val) {\n"
+"res += MuPDF.convertCase(val.charAt(0), cs);\n"
+"val = val.substring(1);\n"
+"}\n"
+"break;\n"
+"case '=':\n"
+"case '>':\n"
+"case '<':\n"
+"cs = fmt.charAt(i);\n"
+"break;\n"
+"default:\n"
+"res += MuPDF.convertCase(fmt.charAt(i), cs);\n"
+"break;\n"
+"}\n"
+"}\n"
+"return res;\n"
+"}\n"
+"\n"
+"util.printf = function () {\n"
+"var i;\n"
+"\n"
+"if (arguments.length < 1)\n"
+"return '';\n"
+"\n"
+"var res = '';\n"
+"var arg_i = 1;\n"
+"var regexp = /%[^dfsx]*[dfsx]|[^%]*/g;\n"
+"var tokens = arguments[0].match(regexp);\n"
+"var length = tokens ? tokens.length : 0;\n"
+"\n"
+"for (i = 0; i < length; i++) {\n"
+"var tok = tokens[i];\n"
+"if (tok.match(/^%/)) {\n"
+"if (arg_i < arguments.length) {\n"
+"var val = arguments[arg_i++];\n"
+"var fval = '';\n"
+"var neg = false;\n"
+"var decsep_re = /^,[0123]/;\n"
+"var flags_re = /^[+ 0#]+/;\n"
+"var width_re = /^\\d+/;\n"
+"var prec_re = /^\\.\\d+/;\n"
+"var conv_re = /^[dfsx]/;\n"
+"\n"
+"tok = tok.replace(/^%/, '');\n"
+"var decsep = tok.match(decsep_re);\n"
+"if (decsep)\n"
+"decsep = decsep[0];\n"
+"tok = tok.replace(decsep_re, '');\n"
+"var flags = tok.match(flags_re);\n"
+"if (flags)\n"
+"flags = flags[0];\n"
+"tok = tok.replace(flags_re, '');\n"
+"var width = tok.match(width_re);\n"
+"if (width)\n"
+"width = width[0];\n"
+"tok = tok.replace(width_re, '');\n"
+"var prec = tok.match(prec_re);\n"
+"if (prec)\n"
+"prec = prec[0];\n"
+"tok = tok.replace(prec_re, '');\n"
+"var conv = tok.match(conv_re);\n"
+"if (conv)\n"
+"conv = conv[0];\n"
+"\n"
+"prec = prec ? Number(prec.replace(/^\\./, '')) : 0;\n"
+"var poschar = (flags && flags.match(/[+ ]/)) ? flags.match(/[+ ]/)[0] : '';\n"
+"var pad = (flags && flags.match(/0/)) ? '0' : ' ';\n"
+"\n"
+"var point = '.';\n"
+"var thou = '';\n"
+"\n"
+"if (decsep) {\n"
+"switch (decsep) {\n"
+"case ',0': thou = ','; break;\n"
+"case ',1': break;\n"
+"case ',2': thou = '.'; point = ','; break;\n"
+"case ',3': point = ','; break;\n"
+"}\n"
+"}\n"
+"\n"
+"switch (conv) {\n"
+"case 'x':\n"
+"val = Math.floor(val);\n"
+"neg = (val < 0);\n"
+"if (neg)\n"
+"val = -val;\n"
+"\n"
+"\n"
+"while (val) {\n"
+"fval = '0123456789ABCDEF'.charAt(val%16) + fval;\n"
+"val = Math.floor(val/16);\n"
+"}\n"
+"\n"
+"if (neg)\n"
+"fval = '-' + fval;\n"
+"else\n"
+"fval = poschar + fval;\n"
+"break;\n"
+"\n"
+"case 'd':\n"
+"fval = String(Math.floor(val));\n"
+"break;\n"
+"\n"
+"case 's':\n"
+"\n"
+"pad = ' ';\n"
+"fval = String(val);\n"
+"break;\n"
+"\n"
+"case 'f':\n"
+"fval = String(val);\n"
+"\n"
+"if (prec) {\n"
+"var frac = fval.match(/\\.\\d+/);\n"
+"if (frac) {\n"
+"frac = frac[0];\n"
+"\n"
+"\n"
+"if (frac.length > prec+1)\n"
+"frac = frac.substring(0, prec+1);\n"
+"else if (frac.length < prec+1)\n"
+"frac += new Array(prec+1-frac.length+1).join('0');\n"
+"\n"
+"fval = fval.replace(/\\.\\d+/, frac);\n"
+"}\n"
+"}\n"
+"break;\n"
+"}\n"
+"\n"
+"if (conv.match(/[fd]/)) {\n"
+"if (fval >= 0)\n"
+"fval = poschar + fval;\n"
+"\n"
+"if (point !== '.')\n"
+"fval.replace(/\\./, point);\n"
+"\n"
+"if (thou) {\n"
+"var intpart = fval.match(/\\d+/)[0];\n"
+"intpart = new Array(2-(intpart.length+2)%3+1).join('0') + intpart;\n"
+"intpart = intpart.match(/.../g).join(thou).replace(/^0*[,.]?/, '');\n"
+"fval = fval.replace(/\\d+/, intpart);\n"
+"}\n"
+"}\n"
+"\n"
+"if (width && fval.length < width)\n"
+"fval = new Array(width - fval.length + 1).join(pad) + fval;\n"
+"\n"
+"res += fval;\n"
+"}\n"
+"} else {\n"
+"res += tok;\n"
+"}\n"
+"}\n"
+"\n"
+"return res;\n"
+"}\n"
+"\n"
+"function AFMergeChange(event) {\n"
+"return event.value;\n"
+"}\n"
+"\n"
+"function AFMakeNumber(str) {\n"
+"var nums = str.match(/\\d+/g);\n"
+"if (!nums)\n"
+"return null;\n"
+"var res = nums.join('.');\n"
+"if (str.match(/^[^0-9]*\\./))\n"
+"res = '0.'+res;\n"
+"return res * (str.match(/-/) ? -1.0 : 1.0);\n"
+"}\n"
+"\n"
+"function AFExtractTime(dt) {\n"
+"var ampm = dt.match(/(am|pm)/);\n"
+"dt = dt.replace(/(am|pm)/, '');\n"
+"var t = dt.match(/\\d{1,2}:\\d{1,2}:\\d{1,2}/);\n"
+"dt = dt.replace(/\\d{1,2}:\\d{1,2}:\\d{1,2}/, '');\n"
+"if (!t) {\n"
+"t = dt.match(/\\d{1,2}:\\d{1,2}/);\n"
+"dt = dt.replace(/\\d{1,2}:\\d{1,2}/, '');\n"
+"}\n"
+"return [dt, t?t[0]+(ampm?ampm[0]:''):''];\n"
+"}\n"
+"\n"
+"function AFParseDateOrder(fmt) {\n"
+"var i;\n"
+"var order = '';\n"
+"\n"
+"\n"
+"fmt += 'mdy';\n"
+"\n"
+"for (i = 0; i < fmt.length; i++) {\n"
+"var c = fmt.charAt(i);\n"
+"if ('ymd'.indexOf(c) !== -1 && order.indexOf(c) === -1)\n"
+"order += c;\n"
+"}\n"
+"\n"
+"return order;\n"
+"}\n"
+"\n"
+"function AFMatchMonth(d) {\n"
+"var m = d.match(MuPDF.monthPattern);\n"
+"return m ? MuPDF.shortMonthName.indexOf(m[0]) : null;\n"
+"}\n"
+"\n"
+"function AFParseTime(str, d) {\n"
+"if (!str)\n"
+"return d;\n"
+"\n"
+"if (!d)\n"
+"d = new Date();\n"
+"\n"
+"var ampm = str.match(/(am|pm)/);\n"
+"var nums = str.match(/\\d+/g);\n"
+"var hour, min, sec;\n"
+"\n"
+"if (!nums)\n"
+"return null;\n"
+"\n"
+"sec = 0;\n"
+"\n"
+"switch (nums.length) {\n"
+"case 3:\n"
+"sec = parseInt(nums[2]);\n"
+"case 2:\n"
+"hour = parseInt(nums[0]);\n"
+"min = parseInt(nums[1]);\n"
+"break;\n"
+"default:\n"
+"return null;\n"
+"}\n"
+"\n"
+"ampm = ampm && ampm[0]\n"
+"\n"
+"if (ampm === 'am' && hour < 12)\n"
+"hour = 12 + hour;\n"
+"if (ampm === 'pm' && hour >= 12)\n"
+"hour = 0 + hour - 12;\n"
+"\n"
+"d.setHours(hour, min, sec);\n"
+"\n"
+"if (d.getHours() !== hour || d.getMinutes() !== min || d.getSeconds() !== sec)\n"
+"return null;\n"
+"\n"
+"return d;\n"
+"}\n"
+"\n"
+"function AFParseDateEx(d, fmt) {\n"
+"var i;\n"
+"var dt = AFExtractTime(d);\n"
+"var nums = dt[0].match(/\\d+/g);\n"
+"var order = AFParseDateOrder(fmt);\n"
+"var text_month = AFMatchMonth(dt[0]);\n"
+"var dout = new Date();\n"
+"var year = dout.getFullYear();\n"
+"var month = dout.getMonth();\n"
+"var date = dout.getDate();\n"
+"\n"
+"dout.setHours(12, 0, 0);\n"
+"\n"
+"if (!nums || nums.length < 1 || nums.length > 3)\n"
+"return null;\n"
+"\n"
+"if (nums.length < 3 && text_month) {\n"
+"\n"
+"month = text_month;\n"
+"order = order.replace('m', '');\n"
+"}\n"
+"\n"
+"order = order.substring(0, nums.length);\n"
+"\n"
+"\n"
+"if (order === 'ym' || (order === 'y' && text_month))\n"
+"date = 1;\n"
+"\n"
+"for (i = 0; i < nums.length; i++) {\n"
+"switch (order.charAt(i)) {\n"
+"case 'y': year = parseInt(nums[i]); break;\n"
+"case 'm': month = parseInt(nums[i]) - 1; break;\n"
+"case 'd': date = parseInt(nums[i]); break;\n"
+"}\n"
+"}\n"
+"\n"
+"if (year < 100) {\n"
+"if (fmt.search('yyyy') !== -1)\n"
+"return null;\n"
+"if (year >= 50)\n"
+"year = 1900 + year;\n"
+"else if (year >= 0)\n"
+"year = 2000 + year;\n"
+"}\n"
+"\n"
+"dout.setFullYear(year, month, date);\n"
+"\n"
+"if (dout.getFullYear() !== year || dout.getMonth() !== month || dout.getDate() !== date)\n"
+"return null;\n"
+"\n"
+"return AFParseTime(dt[1], dout);\n"
+"}\n"
+"\n"
+"function AFDate_KeystrokeEx(fmt) {\n"
+"if (event.willCommit && !AFParseDateEx(event.value, fmt)) {\n"
+"app.alert('The date/time entered ('+event.value+') does not match the format ('+fmt+') of the field [ '+event.target.name+' ]');\n"
+"event.rc = false;\n"
+"}\n"
+"}\n"
+"\n"
+"function AFDate_Keystroke(index) {\n"
+"AFDate_KeystrokeEx(MuPDF.dateFormats[index]);\n"
+"}\n"
+"\n"
+"function AFDate_FormatEx(fmt) {\n"
+"var d = AFParseDateEx(event.value, fmt);\n"
+"event.value = d ? util.printd(fmt, d) : '';\n"
+"}\n"
+"\n"
+"function AFDate_Format(index) {\n"
+"AFDate_FormatEx(MuPDF.dateFormats[index]);\n"
+"}\n"
+"\n"
+"function AFTime_Keystroke(index) {\n"
+"if (event.willCommit && !AFParseTime(event.value, null)) {\n"
+"app.alert('The value entered ('+event.value+') does not match the format of the field [ '+event.target.name+' ]');\n"
+"event.rc = false;\n"
+"}\n"
+"}\n"
+"\n"
+"function AFTime_FormatEx(fmt) {\n"
+"var d = AFParseTime(event.value, null);\n"
+"event.value = d ? util.printd(fmt, d) : '';\n"
+"}\n"
+"\n"
+"function AFTime_Format(index) {\n"
+"AFTime_FormatEx(MuPDF.timeFormats[index]);\n"
+"}\n"
+"\n"
+"function AFSpecial_KeystrokeEx(fmt) {\n"
+"var cs = '=';\n"
+"var val = event.value;\n"
+"var res = '';\n"
+"var i = 0;\n"
+"var m;\n"
+"var length = fmt ? fmt.length : 0;\n"
+"\n"
+"while (i < length) {\n"
+"switch (fmt.charAt(i)) {\n"
+"case '\\\\':\n"
+"i++;\n"
+"if (i >= length)\n"
+"break;\n"
+"res += fmt.charAt(i);\n"
+"if (val && val.charAt(0) === fmt.charAt(i))\n"
+"val = val.substring(1);\n"
+"break;\n"
+"\n"
+"case 'X':\n"
+"m = val.match(/^\\w/);\n"
+"if (!m) {\n"
+"event.rc = false;\n"
+"break;\n"
+"}\n"
+"res += MuPDF.convertCase(m[0], cs);\n"
+"val = val.substring(1);\n"
+"break;\n"
+"\n"
+"case 'A':\n"
+"m = val.match(/^[A-Za-z]/);\n"
+"if (!m) {\n"
+"event.rc = false;\n"
+"break;\n"
+"}\n"
+"res += MuPDF.convertCase(m[0], cs);\n"
+"val = val.substring(1);\n"
+"break;\n"
+"\n"
+"case '9':\n"
+"m = val.match(/^\\d/);\n"
+"if (!m) {\n"
+"event.rc = false;\n"
+"break;\n"
+"}\n"
+"res += m[0];\n"
+"val = val.substring(1);\n"
+"break;\n"
+"\n"
+"case '*':\n"
+"res += val;\n"
+"val = '';\n"
+"break;\n"
+"\n"
+"case '?':\n"
+"if (!val) {\n"
+"event.rc = false;\n"
+"break;\n"
+"}\n"
+"res += MuPDF.convertCase(val.charAt(0), cs);\n"
+"val = val.substring(1);\n"
+"break;\n"
+"\n"
+"case '=':\n"
+"case '>':\n"
+"case '<':\n"
+"cs = fmt.charAt(i);\n"
+"break;\n"
+"\n"
+"default:\n"
+"res += fmt.charAt(i);\n"
+"if (val && val.charAt(0) === fmt.charAt(i))\n"
+"val = val.substring(1);\n"
+"break;\n"
+"}\n"
+"\n"
+"i++;\n"
+"}\n"
+"\n"
+"if (event.rc)\n"
+"event.value = res;\n"
+"else if (event.willCommit)\n"
+"app.alert('The value entered ('+event.value+') does not match the format of the field [ '+event.target.name+' ] should be '+fmt);\n"
+"}\n"
+"\n"
+"function AFSpecial_Keystroke(index) {\n"
+"if (event.willCommit) {\n"
+"switch (index) {\n"
+"case 0:\n"
+"if (!event.value.match(/^\\d{5}$/))\n"
+"event.rc = false;\n"
+"break;\n"
+"case 1:\n"
+"if (!event.value.match(/^\\d{5}[-. ]?\\d{4}$/))\n"
+"event.rc = false;\n"
+"break;\n"
+"case 2:\n"
+"if (!event.value.match(/^((\\(\\d{3}\\)|\\d{3})[-. ]?)?\\d{3}[-. ]?\\d{4}$/))\n"
+"event.rc = false;\n"
+"break;\n"
+"case 3:\n"
+"if (!event.value.match(/^\\d{3}[-. ]?\\d{2}[-. ]?\\d{4}$/))\n"
+"event.rc = false;\n"
+"break;\n"
+"}\n"
+"if (!event.rc)\n"
+"app.alert('The value entered ('+event.value+') does not match the format of the field [ '+event.target.name+' ]');\n"
+"}\n"
+"}\n"
+"\n"
+"function AFSpecial_Format(index) {\n"
+"var res;\n"
+"switch (index) {\n"
+"case 0:\n"
+"res = util.printx('99999', event.value);\n"
+"break;\n"
+"case 1:\n"
+"res = util.printx('99999-9999', event.value);\n"
+"break;\n"
+"case 2:\n"
+"res = util.printx('9999999999', event.value);\n"
+"res = util.printx(res.length >= 10 ? '(999) 999-9999' : '999-9999', event.value);\n"
+"break;\n"
+"case 3:\n"
+"res = util.printx('999-99-9999', event.value);\n"
+"break;\n"
+"}\n"
+"event.value = res ? res : '';\n"
+"}\n"
+"\n"
+"function AFNumber_Keystroke(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) {\n"
+"if (sepStyle & 2) {\n"
+"if (!event.value.match(/^[+-]?\\d*[,.]?\\d*$/))\n"
+"event.rc = false;\n"
+"} else {\n"
+"if (!event.value.match(/^[+-]?\\d*\\.?\\d*$/))\n"
+"event.rc = false;\n"
+"}\n"
+"if (event.willCommit) {\n"
+"if (!event.value.match(/\\d/))\n"
+"event.rc = false;\n"
+"if (!event.rc)\n"
+"app.alert('The value entered ('+event.value+') does not match the format of the field [ '+event.target.name+' ]');\n"
+"}\n"
+"}\n"
+"\n"
+"function AFNumber_Format(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) {\n"
+"var val = event.value;\n"
+"var fracpart;\n"
+"var intpart;\n"
+"var point = sepStyle&2 ? ',' : '.';\n"
+"var separator = sepStyle&2 ? '.' : ',';\n"
+"\n"
+"if (/^\\D*\\./.test(val))\n"
+"val = '0'+val;\n"
+"\n"
+"var groups = val.match(/\\d+/g);\n"
+"\n"
+"if (!groups)\n"
+"return;\n"
+"\n"
+"switch (groups.length) {\n"
+"case 0:\n"
+"return;\n"
+"case 1:\n"
+"fracpart = '';\n"
+"intpart = groups[0];\n"
+"break;\n"
+"default:\n"
+"fracpart = groups.pop();\n"
+"intpart = groups.join('');\n"
+"break;\n"
+"}\n"
+"\n"
+"\n"
+"intpart = intpart.replace(/^0*/, '');\n"
+"if (!intpart)\n"
+"intpart = '0';\n"
+"\n"
+"if ((sepStyle & 1) === 0) {\n"
+"\n"
+"\n"
+"intpart = new Array(2-(intpart.length+2)%3+1).join('0') + intpart;\n"
+"intpart = intpart.match(/.../g).join(separator).replace(/^0*/, '');\n"
+"}\n"
+"\n"
+"if (!intpart)\n"
+"intpart = '0';\n"
+"\n"
+"\n"
+"fracpart += new Array(nDec+1).join('0');\n"
+"fracpart = fracpart.substring(0, nDec);\n"
+"\n"
+"if (fracpart)\n"
+"intpart += point+fracpart;\n"
+"\n"
+"if (bCurrencyPrepend)\n"
+"intpart = strCurrency+intpart;\n"
+"else\n"
+"intpart += strCurrency;\n"
+"\n"
+"if (/-/.test(val)) {\n"
+"switch (negStyle) {\n"
+"case 0:\n"
+"intpart = '-'+intpart;\n"
+"break;\n"
+"case 1:\n"
+"break;\n"
+"case 2:\n"
+"case 3:\n"
+"intpart = '('+intpart+')';\n"
+"break;\n"
+"}\n"
+"}\n"
+"\n"
+"if (negStyle&1)\n"
+"event.target.textColor = /-/.test(val) ? color.red : color.black;\n"
+"\n"
+"event.value = intpart;\n"
+"}\n"
+"\n"
+"function AFPercent_Keystroke(nDec, sepStyle) {\n"
+"AFNumber_Keystroke(nDec, sepStyle, 0, 0, '', true);\n"
+"}\n"
+"\n"
+"function AFPercent_Format(nDec, sepStyle) {\n"
+"var val = AFMakeNumber(event.value);\n"
+"if (!val) {\n"
+"event.value = '';\n"
+"return;\n"
+"}\n"
+"event.value = (val * 100) + '';\n"
+"AFNumber_Format(nDec, sepStyle, 0, 0, '%', false);\n"
+"}\n"
+"\n"
+"function AFSimple_Calculate(op, list) {\n"
+"var i, res;\n"
+"\n"
+"switch (op) {\n"
+"case 'SUM': res = 0; break;\n"
+"case 'PRD': res = 1; break;\n"
+"case 'AVG': res = 0; break;\n"
+"}\n"
+"\n"
+"if (typeof list === 'string')\n"
+"list = list.split(/ *, */);\n"
+"\n"
+"for (i = 0; i < list.length; i++) {\n"
+"var field = MuPDF_Doc.getField(list[i]);\n"
+"var value = Number(field.value);\n"
+"switch (op) {\n"
+"case 'SUM': res += value; break;\n"
+"case 'PRD': res *= value; break;\n"
+"case 'AVG': res += value; break;\n"
+"case 'MIN': if (i === 0 || value < res) res = value; break;\n"
+"case 'MAX': if (i === 0 || value > res) res = value; break;\n"
+"}\n"
+"}\n"
+"\n"
+"if (op === 'AVG')\n"
+"res /= list.length;\n"
+"\n"
+"event.value = res;\n"
+"}\n"
+"\n"
+"function AFRange_Validate(lowerCheck, lowerLimit, upperCheck, upperLimit) {\n"
+"if (upperCheck && event.value > upperLimit) {\n"
+"event.rc = false;\n"
+"}\n"
+"if (lowerCheck && event.value < lowerLimit) {\n"
+"event.rc = false;\n"
+"}\n"
+"if (!event.rc) {\n"
+"if (lowerCheck && upperCheck)\n"
+"app.alert(util.printf('The entered value ('+event.value+') must be greater than or equal to %s and less than or equal to %s', lowerLimit, upperLimit));\n"
+"else if (lowerCheck)\n"
+"app.alert(util.printf('The entered value ('+event.value+') must be greater than or equal to %s', lowerLimit));\n"
+"else\n"
+"app.alert(util.printf('The entered value ('+event.value+') must be less than or equal to %s', upperLimit));\n"
+"}\n"
+"}\n"
+"\n"
+"app.plugIns = [];\n"
+"app.viewerType = 'Reader';\n"
+"app.language = 'ENU';\n"
+"app.viewerVersion = NaN;\n"
diff --git a/source/pdf/pdf-js.c b/source/pdf/pdf-js.c
index d5fb1e4b..a8e1d8a3 100644
--- a/source/pdf/pdf-js.c
+++ b/source/pdf/pdf-js.c
@@ -563,8 +563,6 @@ static void declare_dom(pdf_js *js)
js_setglobal(J, "MuPDF_Doc"); /* for pdf-util.js use */
}
-extern const unsigned char fz_source_pdf_pdf_js_util_js[];
-
static void preload_helpers(pdf_js *js)
{
/* When testing on the cluster:
@@ -583,7 +581,9 @@ static void preload_helpers(pdf_js *js)
);
#endif
- js_dostring(js->imp, (const char *)fz_source_pdf_pdf_js_util_js);
+ js_dostring(js->imp,
+#include "js/util.js.h"
+ );
}
void pdf_drop_js(fz_context *ctx, pdf_js *js)