From e44a7e37b6c7b5961adaffc62b9042b8d442938e Mon Sep 17 00:00:00 2001 From: mensonge Date: Thu, 13 Nov 2008 09:49:11 +0000 Subject: New feature: basic Ajax suggestion for tags and implementation of Dojo toolkit git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@151 b3834d28-1941-0410-a4f8-b48e95affb8f --- includes/js/dojox/encoding/bits.js | 68 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 includes/js/dojox/encoding/bits.js (limited to 'includes/js/dojox/encoding/bits.js') diff --git a/includes/js/dojox/encoding/bits.js b/includes/js/dojox/encoding/bits.js new file mode 100644 index 0000000..8beb167 --- /dev/null +++ b/includes/js/dojox/encoding/bits.js @@ -0,0 +1,68 @@ +if(!dojo._hasResource["dojox.encoding.bits"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. +dojo._hasResource["dojox.encoding.bits"] = true; +dojo.provide("dojox.encoding.bits"); + +dojox.encoding.bits.OutputStream = function(){ + this.reset(); +}; + +dojo.extend(dojox.encoding.bits.OutputStream, { + reset: function(){ + this.buffer = []; + this.accumulator = 0; + this.available = 8; + }, + putBits: function(value, width){ + while(width){ + var w = Math.min(width, this.available); + var v = (w <= width ? value >>> (width - w) : value) << (this.available - w); + this.accumulator |= v & (255 >>> (8 - this.available)); + this.available -= w; + if(!this.available){ + this.buffer.push(this.accumulator); + this.accumulator = 0; + this.available = 8; + } + width -= w; + } + }, + getWidth: function(){ + return this.buffer.length * 8 + (8 - this.available); + }, + getBuffer: function(){ + var b = this.buffer; + if(this.available < 8){ b.push(this.accumulator & (255 << this.available)); } + this.reset(); + return b; + } +}); + +dojox.encoding.bits.InputStream = function(buffer, width){ + this.buffer = buffer; + this.width = width; + this.bbyte = this.bit = 0; +}; + +dojo.extend(dojox.encoding.bits.InputStream, { + getBits: function(width){ + var r = 0; + while(width){ + var w = Math.min(width, 8 - this.bit); + var v = this.buffer[this.bbyte] >>> (8 - this.bit - w); + r <<= w; + r |= v & ~(~0 << w); + this.bit += w; + if(this.bit == 8){ + ++this.bbyte; + this.bit = 0; + } + width -= w; + } + return r; + }, + getWidth: function(){ + return this.width - this.bbyte * 8 - this.bit; + } +}); + +} -- cgit v1.2.3-54-g00ecf