File: barcode.php

package info (click to toggle)
horde3 3.3.8%2Bdebian0-3
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 34,220 kB
  • ctags: 28,224
  • sloc: php: 115,191; xml: 4,247; sql: 2,417; sh: 147; makefile: 140
file content (68 lines) | stat: -rw-r--r-- 2,857 bytes parent folder | download
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
<?php
/**
 * $Horde: horde/util/barcode.php,v 1.10.10.7 2009/01/06 15:28:05 jan Exp $
 *
 * Copyright 2002-2009 The Horde Project (http://www.horde.org/)
 *
 * See the enclosed file COPYING for license information (LGPL). If you
 * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
 *
 * @author Chuck Hagenbuch <chuck@horde.org>
 */

@define('HORDE_BASE', dirname(__FILE__) . '/..');
require_once HORDE_BASE . '/lib/core.php';
require_once 'Horde/Image.php';

// Get text, uppercase, add start/stop characters.
$text = Util::getFormData('barcode', 'test');
$text = String::upper($text, true);
$text = "*$text*";
$textlen = strlen($text);

$height = Util::getFormData('h', 40);
$thinwidth = Util::getFormData('w', 2);
$thickwidth = $thinwidth * 3;
$width = $textlen * (7 * $thinwidth + 3 * $thickwidth) - $thinwidth;

$codingmap = array('0' => '000110100', '1' => '100100001',
                   '2' => '001100001', '3' => '101100000', '4' => '000110001',
                   '5' => '100110000', '6' => '001110000', '7' => '000100101',
                   '8' => '100100100', '9' => '001100100', 'A' => '100001001',
                   'B' => '001001001', 'C' => '101001000', 'D' => '000011001',
                   'E' => '100011000', 'F' => '001011000', 'G' => '000001101',
                   'H' => '100001100', 'I' => '001001100', 'J' => '000011100',
                   'K' => '100000011', 'L' => '001000011', 'M' => '101000010',
                   'N' => '000010011', 'O' => '100010010', 'P' => '001010010',
                   'Q' => '000000111', 'R' => '100000110', 'S' => '001000110',
                   'T' => '000010110', 'U' => '110000001', 'V' => '011000001',
                   'W' => '111000000', 'X' => '010010001', 'Y' => '110010000',
                   'Z' => '011010000', ' ' => '011000100', '$' => '010101000',
                   '%' => '000101010', '*' => '010010100', '+' => '010001010',
                   '-' => '010000101', '.' => '110000100', '/' => '010100010');

$image = &Horde_Image::factory(Util::getFormData('type', 'png'),
                               array('temp' => Horde::getTempDir(),
                                     'width' => $width,
                                     'height' => $height,
                                     'background' => 'white'));

$xpos = 0;
for ($idx = 0; $idx < $textlen; $idx++) {
    $char = substr($text, $idx, 1);
    // Make unknown chars a '-'.
    if (!isset($codingmap[$char])) {
        $char = '-';
    }
    for ($bar = 0; $bar <= 8; $bar++) {
        $elementwidth = $codingmap[$char]{$bar} ? $thickwidth : $thinwidth;
        if (($bar + 1) % 2) {
            $image->rectangle($xpos, 0, $elementwidth - 1, $height, 'black', 'black');
        }
        $xpos += $elementwidth;
    }
    $xpos += $thinwidth;
}

header('Pragma: public');
$image->display();