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: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217:
<?php
/**
*
* @package Barcode Creator
* @copyright (c) 2011 emberlabs.org
* @license http://opensource.org/licenses/mit-license.php The MIT License
* @link https://github.com/samt/barcode
*
* Minimum Requirement: PHP 5.3.0
*/
namespace emberlabs\Barcode;
/**
* emberlabs Barcode Creator - Barcode Base
* Abstract Base
*
*
* @license http://opensource.org/licenses/mit-license.php The MIT License
* @link https://github.com/samt/barcode
*/
abstract class BarcodeBase
{
/*
* GD Resource
* @var resource
*/
protected $img = null;
/*
* @var data - to be set
*/
protected $data = '';
/*
* @var int x (width)
*/
protected $x = 0;
/*
* @var int y (height)
*/
protected $y = 0;
/*
* Print Human Text?
* @var bool
*/
protected $humanText = true;
/*
* Quality
* @var int
*/
protected $jpgQuality = 85;
/*
* (Abstract) Set the data
*
* @param mixed data - (int or string) Data to be encoded
* @return instance of \emberlabs\Barcode\BarcodeInterface
* @return throws \OverflowException
*/
abstract public function setData($data);
/*
* Get the data
*
* @param mixed data - (int or string) Data to be encoded
* @return instance of \emberlabs\Barcode\BarcodeInterface
* @return throws \OverflowException
*/
public function getData()
{
return $this->data;
}
/**
* Validate the given barcode.
* @param $barcode The barcode to validate
* @return bool true if it complies with the barcode formatting
*/
public function validate($barcode)
{
return TRUE;
}
/**
* Generate a barcode for this implementation using the given seed.
* Default implementation returns just the seed
* @param $number The seed to generate a barcode for
* @return mixed The generated barcode
*/
public function generate($number)
{
return $number;
}
/*
* (Abstract) Draw the image
*
* @return void
*/
abstract public function draw();
/*
* Set the Dimensions
*
* @param int x
* @param int y
* @return instance of \emberlabs\Barcode\BarcodeBase
*/
public function setDimensions($x, $y)
{
$this->x = (int) $x;
$this->y = (int) $y;
return $this;
}
/*
* Set Quality
* @param int q - jpeg quality
* @return instance of \emberlabs\Barcode\BarcodeBase
*/
public function setQuality($q)
{
$this->jpgQuality = (int) $q;
return $this;
}
/*
* Display human readable text below the code
* @param boolean enable - Enable the human readable text
* @return instance of \emberlabs\Barcode\BarcodeBase
*/
public function enableHumanText($enable = true)
{
$this->humanText = (boolean) $enable;
return $this;
}
/*
* Output Image to the buffer
*
* @return void
*/
public function output($type = 'png')
{
switch($type)
{
case 'jpg':
case 'jpeg':
imagejpeg($this->img, null, $this->jpgQuality);
break;
case 'gif':
imagegif($this->img);
break;
case 'png':
default:
imagepng($this->img);
break;
}
}
/*
* Save Image
*
* @param string filename - File to write to (needs to have .png, .gif, or
* .jpg extension)
* @return void
* @throws \RuntimeException - If the file could not be written or some
* other I/O error.
*/
public function save($filename)
{
$type = strtolower(substr(strrchr($filename, '.'), 1));
switch($type)
{
case 'jpg':
case 'jpeg':
imagejpeg($this->img, $filename, $this->jpgQuality);
break;
case 'gif':
imagegif($this->img, $filename);
break;
case 'png':
imagepng($this->img, $filename);
break;
default:
throw new \RuntimeException("Could not determine file type.");
break;
}
}
/*
* Base64 Encoded
* For ouput in-page
* @return void
*/
public function base64()
{
ob_start();
$this->output();
return base64_encode(ob_get_clean());
}
}
?>