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";
9 .pane { margin-top: 2em; }
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");
19 var dc = dojox.encoding, dcc = dc.compression, colors = dc.tests.compression.colors;
22 var empty = {}, names = [];
24 if(i in empty){ continue; }
28 var output = new dc.bits.OutputStream(), result = [];
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);
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();
43 var input = new dc.bits.InputStream(buf, buf.length * 8), decoder = new dcc.lzw.Decoder(27);
45 for(var w = 0; w < s.length;){
46 var v = decoder.decode(input);
52 for(var i = 0; i < t.length; ++i){
53 p.push(String.fromCharCode(t.charCodeAt(i) + 97));
56 result.push("<div>Control: " + p + ".</div>");
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>");
64 var buf = dc.ascii85.decode(a85);
65 var input = new dc.bits.InputStream(buf, buf.length * 8), decoder = new dcc.lzw.Decoder(27);
67 for(var w = 0; w < s.length;){
68 var v = decoder.decode(input);
74 for(var i = 0; i < t.length; ++i){
75 p.push(String.fromCharCode(t.charCodeAt(i) + 97));
78 result.push("<div>Control: " + p + ".</div>");
82 for(var i = 0; i < names.length; ++i){
83 var c = colors[names[i]];
84 buf.push(c[0], c[1], c[2]);
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");
94 dojo.addOnLoad(function(){
95 dojo.connect(dojo.byId("run"), "onclick", run);
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>