/var/www/hkosl.com/imusiccircle/webadmin/libraies/aferrandini/phpqrcode/lib/PHPQRCode/FrameFiller.php


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->$width 1;
        
$this->$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 || $y 0) return null;

            
$this->$x;
            
$this->$y;

        } while(
ord($this->frame[$y][$x]) & 0x80);

        return array(
'x'=>$x'y'=>$y);
    }

} ;