Source for file BarcodeObject
Documentation is available at BarcodeObject
//============================================================+
// File name : c39object.php
// Last Update : 2004-12-29
// Author : Karim Mribti [barcode@mribti.com]
// : Nicola Asuni [info@tecnick.com]
// Version : 0.0.8a 2001-04-01 (original code)
// License : GNU LGPL (Lesser General Public License) 2.1
// http://www.gnu.org/copyleft/lesser.txt
// Source Code : http://www.mribti.com/barcode/
// Description : Code 39 Barcode Render Class for PHP using
// the GD graphics library.
// Code 39 is an alphanumeric bar code that can
// encode decimal number, case alphabet and some
// This version contains changes by Nicola Asuni:
// - code style and formatting
// - automatic php documentation in PhpDocumentor Style
//============================================================+
* Code 39 Barcode Render Class.<br>
* Code 39 is an alphanumeric bar code that can encode decimal number, case alphabet and some special symbols.
* @author Karim Mribti, Nicola Asuni
* @package linea21.externals
* @subpackage com.tecnick.tcpdf
* @version 0.0.8a 2001-04-01 (original code)
* @license http://www.gnu.org/copyleft/lesser.html LGPL
* Code 39 Barcode Render Class.<br>
* Code 39 is an alphanumeric bar code that can encode decimal number, case alphabet and some special symbols.
* @author Karim Mribti, Nicola Asuni
* @package linea21.externals
* @subpackage com.tecnick.tcpdf
* @version 0.0.8a 2001-04-01 (original code)
* @license http://www.gnu.org/copyleft/lesser.html LGPL
* @param int $Width Image width in pixels.
* @param int $Height Image height in pixels.
* @param int $Style Barcode style.
* @param int $Value value to print on barcode.
public function __construct($Width, $Height, $Style, $Value) {
$this->mChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%";
* Returns the character index.
* @param char $char character.
* @return int character index or -1 in case of error.
private function GetCharIndex($char) {
if ($this->mChars[$i] == $char) {
* @param int $xres Horizontal resolution.
private function GetSize($xres) {
for ($i= 0;$i< $len;$i++ ) {
if ($this->GetCharIndex($this->mValue[$i]) == - 1 || $this->mValue[$i] == '*') {
/* The asterisk is only used as a start and stop code */
$this->mError = "C39 not include the char '". $this->mValue[$i]. "'";
/* Start, Stop is 010010100 == '*' */
return $CharSize * $len + $StartSize + $StopSize + /* Space between chars */ BCD_C39_NARROW_BAR * $xres * ($len- 1);
* @param int $DrawPos Drawing position.
* @param int $yPos Vertical position.
* @param int $ySize Vertical size.
* @param int $xres Horizontal resolution.
* @return int drawing position.
private function DrawStart($DrawPos, $yPos, $ySize, $xres) {
$DrawPos += $narrow; /* Space between chars */
* @param int $DrawPos Drawing position.
* @param int $yPos Vertical position.
* @param int $ySize Vertical size.
* @param int $xres Horizontal resolution.
* @return int drawing position.
private function DrawStop($DrawPos, $yPos, $ySize, $xres) {
* Draws the barcode object.
* @param int $xres Horizontal resolution.
* @return bool true in case of success.
if (($size = $this->GetSize($xres))== 0) {
/* Total height of bar code -Bars only- */
for ($i= 0;$i< $len;$i++ ) {
$this->DrawChar($this->mFont, $sPos+ ($narrow* 6+ $wide* 3)+ ($size/ $len)* $i,
$this->DrawText($this->mFont, $sPos+ (($size- $text_width)/ 2)+ ($narrow* 6+ $wide* 3),
$c = $this->GetCharIndex($this->mValue[$cPos]);
$DrawPos += ($cset[0] == '0') ? $narrow : $wide;
$DrawPos += ($cset[1] == '0') ? $narrow : $wide;
$DrawPos += ($cset[2] == '0') ? $narrow : $wide;
$DrawPos += ($cset[3] == '0') ? $narrow : $wide;
$DrawPos += ($cset[4] == '0') ? $narrow : $wide;
$DrawPos += ($cset[5] == '0') ? $narrow : $wide;
$DrawPos += ($cset[6] == '0') ? $narrow : $wide;
$DrawPos += ($cset[7] == '0') ? $narrow : $wide;
$DrawPos += ($cset[8] == '0') ? $narrow : $wide;
$DrawPos += $narrow; /* Space between chars */
//============================================================+
//============================================================+
|