Files
votianng/html/include/barcode_php8/class/BCGothercode.barcode.php
2026-03-29 10:34:57 +02:00

107 lines
3.0 KiB
PHP

<?php
/**
* BCGothercode.barcode.php
*--------------------------------------------------------------------
*
* Sub-Class - othercode
*
* Other Codes
* Starting with a bar and altern to space, bar, ...
* 0 is the smallest
*
*--------------------------------------------------------------------
* Revision History
* v2.0.0 23 apr 2008 Jean-Sébastien Goupil New Version Update
* v1.2.3b 2 jan 2006 Jean-Sébastien Goupil Correct error if $textfont was empty
* v1.2.1 27 jun 2005 Jean-Sébastien Goupil Font support added
* V1.00 17 jun 2004 Jean-Sebastien Goupil
*--------------------------------------------------------------------
* $Id: BCGothercode.barcode.php,v 1.9 2009/11/09 04:13:35 jsgoupil Exp $
* PHP5-Revision: 1.10
*--------------------------------------------------------------------
* Copyright (C) Jean-Sebastien Goupil
* http://www.barcodephp.com
*/
include_once('BCGBarcode1D.php');
// Function str_split is not available for PHP4. So we emulate it here.
if (!function_exists('str_split')) {
function str_split($string, $split_length = 1) {
$array = explode("\r\n", chunk_split($string, $split_length));
array_pop($array);
return $array;
}
}
class BCGothercode extends BCGBarcode1D {
/**
* Constructor
*/
function BCGothercode() {
BCGBarcode1D::BCGBarcode1D();
}
/**
* Draws the barcode
*
* @param resource $im
*/
function draw(&$im) {
$this->drawChar($im, $this->text, true);
$this->drawText($im);
}
function getLabel() {
$label = $this->label;
if($this->label === $this->AUTO_LABEL) {
$label = '';
}
return $label;
}
/**
* Returns the maximal size of a barcode
*
* @return int[]
*/
function getMaxSize() {
$p = BCGBarcode1D::getMaxSize();
$array = str_split($this->text, 1);
$textlength = (array_sum($array) + count($array)) * $this->scale;
return array($p[0] + $textlength, $p[1]);
}
/**
* Overloaded method for drawing special label
*
* @param resource $im
*/
function drawText(&$im) {
if($this->label !== $this->AUTO_LABEL && $this->label !== '') {
$pA = $this->getMaxSize();
$pB = BCGBarcode1D::getMaxSize();
$w = $pA[0] - $pB[0];
if(is_a($this->textfont, 'BCGFont')) {
$textfont = $this->textfont; // clone
$textfont->setText($this->label);
$xPosition = ($w / 2) - $textfont->getWidth() / 2 + $this->offsetX * $this->scale;
$yPosition = $this->thickness * $this->scale + $textfont->getHeight() - $textfont->getUnderBaseline() + $this->SIZE_SPACING_FONT + $this->offsetY * $this->scale;
$text_color = $this->colorFg->allocate($im);
$textfont->draw($im, $text_color, $xPosition, $yPosition);
} elseif($this->textfont !== 0) {
$xPosition = ($w / 2) - (strlen($this->label) * imagefontwidth($this->textfont)) / 2 + $this->offsetX * $this->scale;
$yPosition = $this->thickness * $this->scale + $this->offsetY * $this->scale + $this->SIZE_SPACING_FONT;
$text_color = $this->colorFg->allocate($im);
imagestring($im, $this->textfont, $xPosition, $yPosition, $this->label, $text_color);
}
}
}
};
?>