Fork of FusionPBX but with LDAP kinda working
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

107 lines
1.9 KiB

<?php
/**
* This file is part of the phpQr package
*
* See @see QRCode class for description of package and license.
*/
/**
* QRBitBuffer class
*
* The purpose of this class is to act as data holder for QRCode.
*
* @author Maik Greubel <greubel@nkey.de>
* @package phpQr
*/
class QRBitBuffer
{
/**
* Array based buffer access
*
* @var array
*/
private $buffer;
/**
* Length of array
*
* @var int
*/
private $length;
/**
* Create a new instance of QRBitBuffer
*/
public function __construct()
{
$this->buffer = array();
$this->length = 0;
}
/**
* Get particular bit given by index
*
* @param int $index The index of bit
* @return boolean
*/
public function get($index)
{
$bufIndex = floor($index / 8);
return ( ($this->buffer[$bufIndex] >> (7 - $index % 8) ) & 1) == 1;
}
/**
* Get the byte at particular index
*
* @param int $index The index of the byte
* @return string
*/
public function getAt($index)
{
return $this->buffer[$index];
}
/**
* Put amount of bits
* @param int $num The data to put
* @param int $length The length of data
*/
public function put($num, $length)
{
for($i = 0; $i < $length; $i++)
{
$this->putBit((($num >> ($length - $i - 1)) & 1) == 1);
}
}
/**
* Get current length in bits
*
* @return int The amount of bits
*/
public function getLengthInBits()
{
return $this->length;
}
/**
* Put particular bit
*
* @param int $bit The bit to put
*/
public function putBit($bit)
{
$bufIndex = floor($this->length / 8);
if(sizeof($this->buffer) <= $bufIndex)
{
array_push($this->buffer, 0);
}
if($bit)
{
$this->buffer[$bufIndex] |= (0x80 >> ($this->length % 8));
}
$this->length++;
}
}