JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / bin / javajs / export / PDFObject.js
1 Clazz.declarePackage ("javajs.export");\r
2 Clazz.load (["javajs.util.SB"], "javajs.export.PDFObject", ["java.io.ByteArrayOutputStream", "java.util.Hashtable", "$.Map", "java.util.zip.Deflater", "$.DeflaterOutputStream"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.dictionary = null;\r
5 this.stream = null;\r
6 this.index = 0;\r
7 this.type = null;\r
8 this.len = 0;\r
9 this.pt = 0;\r
10 Clazz.instantialize (this, arguments);\r
11 }, javajs["export"], "PDFObject", javajs.util.SB);\r
12 Clazz.makeConstructor (c$, \r
13 function (index) {\r
14 Clazz.superConstructor (this, javajs["export"].PDFObject, []);\r
15 this.index = index;\r
16 }, "~N");\r
17 Clazz.defineMethod (c$, "getRef", \r
18 function () {\r
19 return this.index + " 0 R";\r
20 });\r
21 Clazz.defineMethod (c$, "getID", \r
22 function () {\r
23 return this.type.substring (0, 1) + this.index;\r
24 });\r
25 Clazz.defineMethod (c$, "isFont", \r
26 function () {\r
27 return "Font".equals (this.type);\r
28 });\r
29 Clazz.defineMethod (c$, "setStream", \r
30 function (stream) {\r
31 this.stream = stream;\r
32 }, "~A");\r
33 Clazz.defineMethod (c$, "getDef", \r
34 function (key) {\r
35 return this.dictionary.get (key);\r
36 }, "~S");\r
37 Clazz.defineMethod (c$, "addDef", \r
38 function (key, value) {\r
39 if (this.dictionary == null) this.dictionary =  new java.util.Hashtable ();\r
40 this.dictionary.put (key, value);\r
41 if (key.equals ("Type")) this.type = (value).substring (1);\r
42 }, "~S,~O");\r
43 Clazz.defineMethod (c$, "setAsStream", \r
44 function () {\r
45 this.stream = this.toBytes (0, -1);\r
46 this.setLength (0);\r
47 });\r
48 Clazz.defineMethod (c$, "output", \r
49 function (os) {\r
50 if (this.index > 0) {\r
51 var s = this.index + " 0 obj\n";\r
52 this.write (os, s.getBytes (), 0);\r
53 }var streamLen = 0;\r
54 if (this.dictionary != null) {\r
55 if (this.dictionary.containsKey ("Length")) {\r
56 if (this.stream == null) this.setAsStream ();\r
57 streamLen = this.stream.length;\r
58 var doDeflate = (streamLen > 1000);\r
59 if (doDeflate) {\r
60 var deflater =  new java.util.zip.Deflater (9);\r
61 var outBytes =  new java.io.ByteArrayOutputStream (1024);\r
62 var compBytes =  new java.util.zip.DeflaterOutputStream (outBytes, deflater);\r
63 compBytes.write (this.stream, 0, streamLen);\r
64 compBytes.finish ();\r
65 this.stream = outBytes.toByteArray ();\r
66 this.dictionary.put ("Filter", "/FlateDecode");\r
67 streamLen = this.stream.length;\r
68 }this.dictionary.put ("Length", "" + streamLen);\r
69 }this.write (os, this.getDictionaryText (this.dictionary, "\n").getBytes (), 0);\r
70 }if (this.length () > 0) this.write (os, this.toString ().getBytes (), 0);\r
71 if (this.stream != null) {\r
72 this.write (os, "stream\r\n".getBytes (), 0);\r
73 this.write (os, this.stream, streamLen);\r
74 this.write (os, "\r\nendstream\r\n".getBytes (), 0);\r
75 }if (this.index > 0) this.write (os, "endobj\n".getBytes (), 0);\r
76 return this.len;\r
77 }, "java.io.OutputStream");\r
78 Clazz.defineMethod (c$, "write", \r
79 ($fz = function (os, bytes, nBytes) {\r
80 if (nBytes == 0) nBytes = bytes.length;\r
81 this.len += nBytes;\r
82 os.write (bytes, 0, nBytes);\r
83 }, $fz.isPrivate = true, $fz), "java.io.OutputStream,~A,~N");\r
84 Clazz.defineMethod (c$, "getDictionaryText", \r
85 ($fz = function (d, nl) {\r
86 var sb =  new javajs.util.SB ();\r
87 sb.append ("<<");\r
88 if (d.containsKey ("Type")) sb.append ("/Type").appendO (d.get ("Type"));\r
89 for (var e, $e = d.entrySet ().iterator (); $e.hasNext () && ((e = $e.next ()) || true);) {\r
90 var s = e.getKey ();\r
91 if (s.equals ("Type") || s.startsWith ("!")) continue;\r
92 sb.append ("/" + s);\r
93 var o = e.getValue ();\r
94 if (Clazz.instanceOf (o, java.util.Map)) {\r
95 sb.append ((this.getDictionaryText (o, "")));\r
96 continue;\r
97 }s = e.getValue ();\r
98 if (!s.startsWith ("/")) sb.append (" ");\r
99 sb.appendO (s);\r
100 }\r
101 return (sb.length () > 3 ? sb.append (">>").append (nl).toString () : "");\r
102 }, $fz.isPrivate = true, $fz), "java.util.Map,~S");\r
103 Clazz.defineMethod (c$, "createSubdict", \r
104 ($fz = function (d0, dict) {\r
105 var d = d0.get (dict);\r
106 if (d == null) d0.put (dict, d =  new java.util.Hashtable ());\r
107 return d;\r
108 }, $fz.isPrivate = true, $fz), "java.util.Map,~S");\r
109 Clazz.defineMethod (c$, "addResource", \r
110 function (type, key, value) {\r
111 var r = this.createSubdict (this.dictionary, "Resources");\r
112 if (type != null) r = this.createSubdict (r, type);\r
113 r.put (key, value);\r
114 }, "~S,~S,~S");\r
115 });\r