diff options
Diffstat (limited to 'vendor/aferrandini/phpqrcode/lib/PHPQRCode/FrameFiller.php')
-rw-r--r-- | vendor/aferrandini/phpqrcode/lib/PHPQRCode/FrameFiller.php | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/vendor/aferrandini/phpqrcode/lib/PHPQRCode/FrameFiller.php b/vendor/aferrandini/phpqrcode/lib/PHPQRCode/FrameFiller.php new file mode 100644 index 00000000..02e94e3f --- /dev/null +++ b/vendor/aferrandini/phpqrcode/lib/PHPQRCode/FrameFiller.php @@ -0,0 +1,96 @@ +<?php +/** + * FrameFiller.php + * + * Created by arielferrandini + */ + +namespace PHPQRCode; + +class FrameFiller { + + public $width; + public $frame; + public $x; + public $y; + public $dir; + public $bit; + + //---------------------------------------------------------------------- + public function __construct($width, &$frame) + { + $this->width = $width; + $this->frame = $frame; + $this->x = $width - 1; + $this->y = $width - 1; + $this->dir = -1; + $this->bit = -1; + } + + //---------------------------------------------------------------------- + public function setFrameAt($at, $val) + { + $this->frame[$at['y']][$at['x']] = chr($val); + } + + //---------------------------------------------------------------------- + public function getFrameAt($at) + { + return ord($this->frame[$at['y']][$at['x']]); + } + + //---------------------------------------------------------------------- + public function next() + { + do { + + if($this->bit == -1) { + $this->bit = 0; + return array('x'=>$this->x, 'y'=>$this->y); + } + + $x = $this->x; + $y = $this->y; + $w = $this->width; + + if($this->bit == 0) { + $x--; + $this->bit++; + } else { + $x++; + $y += $this->dir; + $this->bit--; + } + + if($this->dir < 0) { + if($y < 0) { + $y = 0; + $x -= 2; + $this->dir = 1; + if($x == 6) { + $x--; + $y = 9; + } + } + } else { + if($y == $w) { + $y = $w - 1; + $x -= 2; + $this->dir = -1; + if($x == 6) { + $x--; + $y -= 8; + } + } + } + if($x < 0 || $y < 0) return null; + + $this->x = $x; + $this->y = $y; + + } while(ord($this->frame[$y][$x]) & 0x80); + + return array('x'=>$x, 'y'=>$y); + } + +} ;
\ No newline at end of file |