UNPKG

qrcode-generator-ts

Version:

Typescript QR Code generator based on https://github.com/kazuhikoarase/qrcode-generator

52 lines (43 loc) 1.05 kB
'use strict'; /** * BitBuffer * @author Kazuhiko Arase */ export class BitBuffer { private buffer: number[]; private length: number; public constructor() { this.buffer = []; this.length = 0; } public getBuffer(): number[] { return this.buffer; } public getLengthInBits(): number { return this.length; } public toString(): string { var buffer = ''; for (var i = 0; i < this.getLengthInBits(); i += 1) { buffer += this.getBit(i) ? '1' : '0'; } return buffer; } private getBit(index: number): boolean { return ((this.buffer[~~(index / 8)] >>> (7 - index % 8)) & 1) == 1; } public put(num: number, length: number): void { for (var i = 0; i < length; i += 1) { this.putBit(((num >>> (length - i - 1)) & 1) == 1); } } public putBit(bit: boolean): void { if (this.length == this.buffer.length * 8) { this.buffer.push(0); } if (bit) { this.buffer[~~(this.length / 8)] |= (0x80 >>> (this.length % 8)); } this.length += 1; } }