1
2
3
4
| //>>built
| define(["dojo/_base/lang","../bits"],function(c,b){b=c.getObject("dojox.encoding.compression.lzw",!0);var e=function(a){for(var d=1,b=2;a>=b;b<<=1,++d);return d};b.Encoder=function(a){this.size=a;this.init()};c.extend(b.Encoder,{init:function(){this.dict={};for(var a=0;a<this.size;++a)this.dict[String.fromCharCode(a)]=a;this.width=e(this.code=this.size);this.p=""},encode:function(a,d){a=String.fromCharCode(a);var b=this.p+a,c=0;if(b in this.dict)return this.p=b,c;d.putBits(this.dict[this.p],this.width);
| 0==(this.code&this.code+1)&&d.putBits(this.code++,c=this.width++);this.dict[b]=this.code++;this.p=a;return c+this.width},flush:function(a){if(0==this.p.length)return 0;a.putBits(this.dict[this.p],this.width);this.p="";return this.width}});b.Decoder=function(a){this.size=a;this.init()};c.extend(b.Decoder,{init:function(){this.codes=Array(this.size);for(var a=0;a<this.size;++a)this.codes[a]=String.fromCharCode(a);this.width=e(this.size);this.p=-1},decode:function(a){a=a.getBits(this.width);var b;if(a<
| this.codes.length)b=this.codes[a],0<=this.p&&this.codes.push(this.codes[this.p]+b.substr(0,1));else{if(0==(a&a+1))return this.codes.push(""),++this.width,"";b=this.codes[this.p];b+=b.substr(0,1);this.codes.push(b)}this.p=a;return b}});return b});
|
|