Class QRcode
Author: Nicola Asuni
Version: 1.0.010
Class:
QRcode Class to create QR-code arrays for TCPDF class. QR Code symbol is a 2D barcode that can be scanned by handy terminals such as a mobile phone with CCD. The capacity of QR Code is up to 7000 digits or 4000 characters, and has high robustness. This class supports QR Code model 2, described in JIS (Japanese Industrial Standards) X0510:2004 or ISO/IEC 18004. Currently the following features are not supported: ECI and FNC1 mode, Micro QR Code, QR Code model 1, Structured mode.
This class is derived from "PHP QR Code encoder" by Dominik Dzienia (http://phpqrcode.sourceforge.net/) based on "libqrencode C library 3.1.1." by Kentaro Fukuchi (http://megaui.net/fukuchi/works/qrencode/index.en.html), contains Reed-Solomon code written by Phil Karn, KA9Q. QR Code is registered trademark of DENSO WAVE INCORPORATED (http://www.denso-wave.com/qrcode/index-e.html). Please read comments on this class source file for full copyright and license information.
Located at include/barcodes/qrcode.php
Methods summary
public
|
|
public
array
|
|
protected
array
|
|
protected
|
|
protected
|
|
protected
|
|
protected
value
|
|
protected
array
|
|
protected
0
|
|
protected
array
|
|
protected
integer
|
#
writeFormatInformation( $width, & $frame, $mask, $level )
Write Format Information on frame and returns the number of black bits |
protected
integer
|
|
protected
integer
|
|
protected
integer
|
|
protected
integer
|
|
protected
integer
|
|
protected
integer
|
|
protected
integer
|
|
protected
integer
|
|
protected
array
|
|
protected
integer
|
|
protected
array
|
|
protected
integer
|
|
protected
integer
|
|
protected
array
|
|
protected
boolean
|
|
protected
boolean
|
|
protected
integer
|
|
protected
integer
|
|
protected
integer
|
|
protected
integer
|
|
protected
integer
|
|
protected
(int)
|
|
protected
|
|
protected
array
|
|
protected
array
|
|
protected
array
|
|
protected
array
|
|
protected
array
|
|
protected
array
|
|
protected
array
|
|
protected
|
#
appendNewInputItem( $items, $mode, $size, $data )
Append data to an input object. The data is copied and appended to the input object. |
protected
array
|
|
protected
integer
|
|
protected
boolean
|
|
protected
value
|
|
protected
boolean
|
|
protected
integer
|
|
protected
integer
|
|
protected
integer
|
|
protected
integer
|
|
protected
boolean
|
|
protected
boolean
|
|
protected
integer
|
|
protected
integer
|
|
protected
integer
|
|
protected
array
|
|
protected
array
|
|
protected
array
|
|
protected
array
|
|
protected
array
|
|
protected
array
|
|
protected
array
|
|
protected
array
|
|
protected
array
|
|
protected
array
|
|
protected
array
|
|
protected
array
|
|
protected
array
|
|
protected
array
|
|
protected
integer
|
|
protected
integer
|
#
getECCLength( $version, $level )
Return maximum error correction code length (bytes) for the version. |
protected
integer
|
|
protected
integer
|
|
protected
integer
|
|
protected
integer
|
|
protected
integer
|
|
protected
array
|
|
protected
array
|
|
protected
array
|
|
protected
BCH
|
#
getVersionPattern( $version )
Return BCH encoded version information pattern that is used for the symbol of version 7 or greater. Use lower 18 bits. |
protected
BCH
|
|
protected
array
|
|
protected
Array
|
|
protected
Array
|
|
protected
integer
|
|
protected
integer
|
|
protected
integer
|
|
protected
integer
|
|
protected
integer
|
|
protected
integer
|
|
protected
integer
|
|
protected
integer
|
|
protected
integer
|
|
protected
array
|
|
protected
integer
|
|
protected
array
|
#
init_rs_char( $symsize, $gfpoly, $fcr, $prim, $nroots, $pad )
Initialize a Reed-Solomon codec and returns an array of values. |
protected
parity
|
Properties summary
protected
array
|
$barcode_array
Barcode array to be returned which is readable by TCPDF. |
#
array()
|
protected
integer
|
$version
QR code version. Size of QRcode is defined as version. Version is from 1 to 40. Version 1 is 2121 matrix. And 4 modules increases whenever 1 version increases. So version 40 is 177177 matrix. |
#
0
|
protected
|
$level
Levels of error correction. See definitions for possible values. |
#
QR_ECLEVEL_L
|
protected
|
$hint
Encoding mode. |
#
QR_MODE_8B
|
protected
boolean
|
$casesensitive
Boolean flag, if true the input string will be converted to uppercase. |
#
true
|
protected
integer
|
$structured
Structured QR code (not supported yet). |
#
0
|
protected
|
$data
Mask data. |
|
protected
|
$width
Width. |
|
protected
|
$frame
Frame. |
|
protected
|
$x
X position of bit. |
|
protected
|
$y
Y position of bit. |
|
protected
|
$dir
Direction. |
|
protected
|
$bit
Single bit value. |
|
protected
array
|
$datacode
Data code. |
#
array()
|
protected
array
|
$ecccode
Error correction code. |
#
array()
|
protected
|
$blocks
Blocks. |
|
protected
array
|
$rsblocks
Reed-Solomon blocks. |
#
array()
|
protected
|
$count
Counter. |
|
protected
|
$dataLength
Data length. |
|
protected
|
$eccLength
Error correction length. |
|
protected
|
$b1
Value b1. |
|
protected
array
|
$runLength
Run length. |
#
array()
|
protected
string
|
$dataStr
Input data string. |
#
''
|
protected
|
$items
Input items. |
|
protected
array
|
$rsitems
Reed-Solomon items. |
#
array()
|
protected
array
|
$frames
Array of frames. |
#
array()
|
protected
array
|
$anTable
Alphabet-numeric convesion table. |
#
array(
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, //
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, //
36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43, //
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 44, -1, -1, -1, -1, -1, //
-1, 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, -1, -1, -1, -1, -1, //
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, //
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 //
)
|
protected
array
|
$capacity
Array Table of the capacity of symbols. See Table 1 (pp.13) and Table 12-16 (pp.30-36), JIS X0510:2004. |
#
array(
array( 0, 0, 0, array( 0, 0, 0, 0)), //
array( 21, 26, 0, array( 7, 10, 13, 17)), // 1
array( 25, 44, 7, array( 10, 16, 22, 28)), //
array( 29, 70, 7, array( 15, 26, 36, 44)), //
array( 33, 100, 7, array( 20, 36, 52, 64)), //
array( 37, 134, 7, array( 26, 48, 72, 88)), // 5
array( 41, 172, 7, array( 36, 64, 96, 112)), //
array( 45, 196, 0, array( 40, 72, 108, 130)), //
array( 49, 242, 0, array( 48, 88, 132, 156)), //
array( 53, 292, 0, array( 60, 110, 160, 192)), //
array( 57, 346, 0, array( 72, 130, 192, 224)), // 10
array( 61, 404, 0, array( 80, 150, 224, 264)), //
array( 65, 466, 0, array( 96, 176, 260, 308)), //
array( 69, 532, 0, array( 104, 198, 288, 352)), //
array( 73, 581, 3, array( 120, 216, 320, 384)), //
array( 77, 655, 3, array( 132, 240, 360, 432)), // 15
array( 81, 733, 3, array( 144, 280, 408, 480)), //
array( 85, 815, 3, array( 168, 308, 448, 532)), //
array( 89, 901, 3, array( 180, 338, 504, 588)), //
array( 93, 991, 3, array( 196, 364, 546, 650)), //
array( 97, 1085, 3, array( 224, 416, 600, 700)), // 20
array(101, 1156, 4, array( 224, 442, 644, 750)), //
array(105, 1258, 4, array( 252, 476, 690, 816)), //
array(109, 1364, 4, array( 270, 504, 750, 900)), //
array(113, 1474, 4, array( 300, 560, 810, 960)), //
array(117, 1588, 4, array( 312, 588, 870, 1050)), // 25
array(121, 1706, 4, array( 336, 644, 952, 1110)), //
array(125, 1828, 4, array( 360, 700, 1020, 1200)), //
array(129, 1921, 3, array( 390, 728, 1050, 1260)), //
array(133, 2051, 3, array( 420, 784, 1140, 1350)), //
array(137, 2185, 3, array( 450, 812, 1200, 1440)), // 30
array(141, 2323, 3, array( 480, 868, 1290, 1530)), //
array(145, 2465, 3, array( 510, 924, 1350, 1620)), //
array(149, 2611, 3, array( 540, 980, 1440, 1710)), //
array(153, 2761, 3, array( 570, 1036, 1530, 1800)), //
array(157, 2876, 0, array( 570, 1064, 1590, 1890)), // 35
array(161, 3034, 0, array( 600, 1120, 1680, 1980)), //
array(165, 3196, 0, array( 630, 1204, 1770, 2100)), //
array(169, 3362, 0, array( 660, 1260, 1860, 2220)), //
array(173, 3532, 0, array( 720, 1316, 1950, 2310)), //
array(177, 3706, 0, array( 750, 1372, 2040, 2430)) // 40
)
|
protected
array
|
$lengthTableBits
Array Length indicator. |
#
array(
array(10, 12, 14),
array( 9, 11, 13),
array( 8, 16, 16),
array( 8, 10, 12)
)
|
protected
array
|
$eccTable
Array Table of the error correction code (Reed-Solomon block). See Table 12-16 (pp.30-36), JIS X0510:2004. |
#
array(
array(array( 0, 0), array( 0, 0), array( 0, 0), array( 0, 0)), //
array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)), // 1
array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)), //
array(array( 1, 0), array( 1, 0), array( 2, 0), array( 2, 0)), //
array(array( 1, 0), array( 2, 0), array( 2, 0), array( 4, 0)), //
array(array( 1, 0), array( 2, 0), array( 2, 2), array( 2, 2)), // 5
array(array( 2, 0), array( 4, 0), array( 4, 0), array( 4, 0)), //
array(array( 2, 0), array( 4, 0), array( 2, 4), array( 4, 1)), //
array(array( 2, 0), array( 2, 2), array( 4, 2), array( 4, 2)), //
array(array( 2, 0), array( 3, 2), array( 4, 4), array( 4, 4)), //
array(array( 2, 2), array( 4, 1), array( 6, 2), array( 6, 2)), // 10
array(array( 4, 0), array( 1, 4), array( 4, 4), array( 3, 8)), //
array(array( 2, 2), array( 6, 2), array( 4, 6), array( 7, 4)), //
array(array( 4, 0), array( 8, 1), array( 8, 4), array(12, 4)), //
array(array( 3, 1), array( 4, 5), array(11, 5), array(11, 5)), //
array(array( 5, 1), array( 5, 5), array( 5, 7), array(11, 7)), // 15
array(array( 5, 1), array( 7, 3), array(15, 2), array( 3, 13)), //
array(array( 1, 5), array(10, 1), array( 1, 15), array( 2, 17)), //
array(array( 5, 1), array( 9, 4), array(17, 1), array( 2, 19)), //
array(array( 3, 4), array( 3, 11), array(17, 4), array( 9, 16)), //
array(array( 3, 5), array( 3, 13), array(15, 5), array(15, 10)), // 20
array(array( 4, 4), array(17, 0), array(17, 6), array(19, 6)), //
array(array( 2, 7), array(17, 0), array( 7, 16), array(34, 0)), //
array(array( 4, 5), array( 4, 14), array(11, 14), array(16, 14)), //
array(array( 6, 4), array( 6, 14), array(11, 16), array(30, 2)), //
array(array( 8, 4), array( 8, 13), array( 7, 22), array(22, 13)), // 25
array(array(10, 2), array(19, 4), array(28, 6), array(33, 4)), //
array(array( 8, 4), array(22, 3), array( 8, 26), array(12, 28)), //
array(array( 3, 10), array( 3, 23), array( 4, 31), array(11, 31)), //
array(array( 7, 7), array(21, 7), array( 1, 37), array(19, 26)), //
array(array( 5, 10), array(19, 10), array(15, 25), array(23, 25)), // 30
array(array(13, 3), array( 2, 29), array(42, 1), array(23, 28)), //
array(array(17, 0), array(10, 23), array(10, 35), array(19, 35)), //
array(array(17, 1), array(14, 21), array(29, 19), array(11, 46)), //
array(array(13, 6), array(14, 23), array(44, 7), array(59, 1)), //
array(array(12, 7), array(12, 26), array(39, 14), array(22, 41)), // 35
array(array( 6, 14), array( 6, 34), array(46, 10), array( 2, 64)), //
array(array(17, 4), array(29, 14), array(49, 10), array(24, 46)), //
array(array( 4, 18), array(13, 32), array(48, 14), array(42, 32)), //
array(array(20, 4), array(40, 7), array(43, 22), array(10, 67)), //
array(array(19, 6), array(18, 31), array(34, 34), array(20, 61)) // 40
)
|
protected
array
|
$alignmentPattern
Array Positions of alignment patterns. This array includes only the second and the third position of the alignment patterns. Rest of them can be calculated from the distance between them. See Table 1 in Appendix E (pp.71) of JIS X0510:2004. |
#
array(
array( 0, 0),
array( 0, 0), array(18, 0), array(22, 0), array(26, 0), array(30, 0), // 1- 5
array(34, 0), array(22, 38), array(24, 42), array(26, 46), array(28, 50), // 6-10
array(30, 54), array(32, 58), array(34, 62), array(26, 46), array(26, 48), // 11-15
array(26, 50), array(30, 54), array(30, 56), array(30, 58), array(34, 62), // 16-20
array(28, 50), array(26, 50), array(30, 54), array(28, 54), array(32, 58), // 21-25
array(30, 58), array(34, 62), array(26, 50), array(30, 54), array(26, 52), // 26-30
array(30, 56), array(34, 60), array(30, 58), array(34, 62), array(30, 54), // 31-35
array(24, 50), array(28, 54), array(32, 58), array(26, 54), array(30, 58) // 35-40
)
|
protected
array
|
$versionPattern
Array Version information pattern (BCH coded). See Table 1 in Appendix D (pp.68) of JIS X0510:2004. size: [QRSPEC_VERSION_MAX - 6] |
#
array(
0x07c94, 0x085bc, 0x09a99, 0x0a4d3, 0x0bbf6, 0x0c762, 0x0d847, 0x0e60d, //
0x0f928, 0x10b78, 0x1145d, 0x12a17, 0x13532, 0x149a6, 0x15683, 0x168c9, //
0x177ec, 0x18ec4, 0x191e1, 0x1afab, 0x1b08e, 0x1cc1a, 0x1d33f, 0x1ed75, //
0x1f250, 0x209d5, 0x216f0, 0x228ba, 0x2379f, 0x24b0b, 0x2542e, 0x26a64, //
0x27541, 0x28c69
)
|
protected
array
|
$formatInfo
Array Format information |
#
array(
array(0x77c4, 0x72f3, 0x7daa, 0x789d, 0x662f, 0x6318, 0x6c41, 0x6976), //
array(0x5412, 0x5125, 0x5e7c, 0x5b4b, 0x45f9, 0x40ce, 0x4f97, 0x4aa0), //
array(0x355f, 0x3068, 0x3f31, 0x3a06, 0x24b4, 0x2183, 0x2eda, 0x2bed), //
array(0x1689, 0x13be, 0x1ce7, 0x19d0, 0x0762, 0x0255, 0x0d0c, 0x083b) //
)
|