]> git.pond.sub.org Git - eow/blob - static/dojo-release-1.1.1/dojox/encoding/tests/compression/colors2.html
add Dojo 1.1.1
[eow] / static / dojo-release-1.1.1 / dojox / encoding / tests / compression / colors2.html
1 <html>
2         <head>
3                 <title>Compress colors</title>
4                 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5                 <style type="text/css">
6                         @import "../../../../dojo/resources/dojo.css";
7                         @import "../../../../dijit/tests/css/dijitTests.css";
8                         
9                         .pane { margin-top: 2em; }
10                 </style>
11                 <script type="text/javascript" src="../../../../dojo/dojo.js" djConfig="isDebug: true"></script>
12                 <script type="text/javascript">
13                         dojo.require("dojox.encoding.tests.compression.colors");
14                         dojo.require("dojox.encoding.ascii85");
15                         dojo.require("dojox.encoding.bits");
16                         dojo.require("dojox.encoding.compression.splay");
17                         dojo.require("dojox.encoding.compression.lzw");
18                         
19                         var dc = dojox.encoding, dcc = dc.compression, colors = dc.tests.compression.colors;
20                         
21                         var run = function(){
22                                 var empty = {}, names = [];
23                                 for(var i in colors){
24                                         if(i in empty){ continue; }
25                                         names.push(i);
26                                 }
27                                 names.sort();
28                                 var output = new dc.bits.OutputStream(), result = [];
29                                 // encode names
30                                 var s = names.join("{"), encoder = new dcc.lzw.Encoder(27);
31                                 result.push("<div>Input is " + s.length + " bytes long.</div>");
32                                 result.push("<div>Input: " + s + ".</div>");
33                                 for(var i = 0; i < s.length; ++i){
34                                         var v = s.charCodeAt(i) - 97;
35                                         if(v < 0 || v > 26) console.debug("error!", v);
36                                         encoder.encode(v, output);
37                                 }
38                                 encoder.flush(output);
39                                 var w = output.getWidth();
40                                 result.push("<div>Output is " + Math.ceil(w / 8) + " bytes (" + w + " bits) long.</div>");
41                                 var buf = output.getBuffer();
42                                 {
43                                         var input = new dc.bits.InputStream(buf, buf.length * 8), decoder = new dcc.lzw.Decoder(27);
44                                         var t = [];
45                                         for(var w = 0; w < s.length;){
46                                                 var v = decoder.decode(input);
47                                                 t.push(v);
48                                                 w += v.length;
49                                         }
50                                         t = t.join("");
51                                         var p = [];
52                                         for(var i = 0; i < t.length; ++i){
53                                                 p.push(String.fromCharCode(t.charCodeAt(i) + 97));
54                                         }
55                                         p = p.join("");
56                                         result.push("<div>Control: " + p + ".</div>");
57                                 }
58                                 while(buf.length % 4){ buf.push(0); }
59                                 var a85 = dc.ascii85.encode(buf);
60                                 result.push("<div>Encoded output is " + a85.length + " bytes.</div>");
61                                 result.push("<div><textarea>" + a85 + "</textarea></div>");
62                                 // test
63                                 {
64                                         var buf = dc.ascii85.decode(a85);
65                                         var input = new dc.bits.InputStream(buf, buf.length * 8), decoder = new dcc.lzw.Decoder(27);
66                                         var t = [];
67                                         for(var w = 0; w < s.length;){
68                                                 var v = decoder.decode(input);
69                                                 t.push(v);
70                                                 w += v.length;
71                                         }
72                                         t = t.join("");
73                                         var p = [];
74                                         for(var i = 0; i < t.length; ++i){
75                                                 p.push(String.fromCharCode(t.charCodeAt(i) + 97));
76                                         }
77                                         p = p.join("");
78                                         result.push("<div>Control: " + p + ".</div>");
79                                 }
80                                 // encode values
81                                 buf = [];
82                                 for(var i = 0; i < names.length; ++i){
83                                         var c = colors[names[i]];
84                                         buf.push(c[0], c[1], c[2]);
85                                 }
86                                 result.push("<div>Output is " + buf.length + " bytes long.</div>");
87                                 while(buf.length % 4){ buf.push(0); }
88                                 a85 = dc.ascii85.encode(buf);
89                                 result.push("<div>Encoded output is " + a85.length + " bytes.</div>");
90                                 result.push("<div><textarea>" + a85 + "</textarea></div>");
91                                 dojo.byId("status").innerHTML = result.join("\n");
92                         };                      
93                         
94                         dojo.addOnLoad(function(){
95                                 dojo.connect(dojo.byId("run"), "onclick", run);
96                         });
97                 </script>
98         </head>
99         <body>
100                 <h1>Compress colors</h1>
101                 <p><button id="run">Run</button></p>
102                 <div id="status" class="pane"><em>No status yet.</em></div>
103         </body>
104 </html>