1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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); }
} ;
|