moodle/lib/tcpdf/barcode/barcode.php
2006-09-04 08:11:37 +00:00

441 lines
No EOL
9.5 KiB
PHP
Executable file

<?php
//============================================================+
// File name : barcode.php
// Begin : 2002-07-31
// Last Update : 2005-01-02
// Author : Karim Mribti [barcode@mribti.com]
// Version : 1.1 [0.0.8a (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 : Generic Barcode Render Class for PHP using
// the GD graphics library.
//
// NOTE:
// This version contains changes by Nicola Asuni:
// - porting to PHP4
// - code style and formatting
// - automatic php documentation in PhpDocumentor Style
// (www.phpdoc.org)
// - minor bug fixing
// - $mCharSet and $mChars variables were added here
//============================================================+
/**
* Barcode Render Class for PHP using the GD graphics library.
* @author Karim Mribti, Nicola Asuni
* @name BarcodeObject
* @package com.tecnick.tcpdf
* @version 0.0.8a 2001-04-01 (original code)
* @since 2001-03-25
* @license http://www.gnu.org/copyleft/lesser.html LGPL
*/
// Styles
// Global
/**
* option: generate barcode border
*/
define("BCS_BORDER", 1);
/**
* option: use transparent background
*/
define("BCS_TRANSPARENT", 2);
/**
* option: center barcode
*/
define("BCS_ALIGN_CENTER", 4);
/**
* option: align left
*/
define("BCS_ALIGN_LEFT", 8);
/**
* option: align right
*/
define("BCS_ALIGN_RIGHT", 16);
/**
* option: generate JPEG image
*/
define("BCS_IMAGE_JPEG", 32);
/**
* option: generate PNG image
*/
define("BCS_IMAGE_PNG", 64);
/**
* option: draw text
*/
define("BCS_DRAW_TEXT", 128);
/**
* option: stretch text
*/
define("BCS_STRETCH_TEXT", 256);
/**
* option: reverse color
*/
define("BCS_REVERSE_COLOR", 512);
/**
* option: draw check
* (only for I25 code)
*/
define("BCS_I25_DRAW_CHECK", 2048);
/**
* set default background color
*/
define("BCD_DEFAULT_BACKGROUND_COLOR", 0xFFFFFF);
/**
* set default foreground color
*/
define("BCD_DEFAULT_FOREGROUND_COLOR", 0x000000);
/**
* set default style options
*/
define("BCD_DEFAULT_STYLE", BCS_BORDER | BCS_ALIGN_CENTER | BCS_IMAGE_PNG);
/**
* set default width
*/
define("BCD_DEFAULT_WIDTH", 460);
/**
* set default height
*/
define("BCD_DEFAULT_HEIGHT", 120);
/**
* set default font
*/
define("BCD_DEFAULT_FONT", 5);
/**
* st default horizontal resolution
*/
define("BCD_DEFAULT_XRES", 2);
// Margins
/**
* set default margin
*/
define("BCD_DEFAULT_MAR_Y1", 0);
/**
* set default margin
*/
define("BCD_DEFAULT_MAR_Y2", 0);
/**
* set default text offset
*/
define("BCD_DEFAULT_TEXT_OFFSET", 2);
// For the I25 Only
/**
* narrow bar option
* (only for I25 code)
*/
define("BCD_I25_NARROW_BAR", 1);
/**
* wide bar option
* (only for I25 code)
*/
define("BCD_I25_WIDE_BAR", 2);
// For the C39 Only
/**
* narrow bar option
* (only for c39 code)
*/
define("BCD_C39_NARROW_BAR", 1);
/**
* wide bar option
* (only for c39 code)
*/
define("BCD_C39_WIDE_BAR", 2);
// For Code 128
/**
* set type 1 bar
* (only for c128 code)
*/
define("BCD_C128_BAR_1", 1);
/**
* set type 2 bar
* (only for c128 code)
*/
define("BCD_C128_BAR_2", 2);
/**
* set type 3 bar
* (only for c128 code)
*/
define("BCD_C128_BAR_3", 3);
/**
* set type 4 bar
* (only for c128 code)
*/
define("BCD_C128_BAR_4", 4);
/**
* Barcode Render Class for PHP using the GD graphics library.
* @author Karim Mribti, Nicola Asuni
* @name BarcodeObject
* @package com.tecnick.tcpdf
* @version 0.0.8a 2001-04-01 (original code)
* @since 2001-03-25
* @license http://www.gnu.org/copyleft/lesser.html LGPL
*/
class BarcodeObject {
/**
* @var Image width in pixels.
* @access protected
*/
var $mWidth;
/**
* @var Image height in pixels.
* @access protected
*/
var $mHeight;
/**
* @var Numeric code for Barcode style.
* @access protected
*/
var $mStyle;
/**
* @var Background color.
* @access protected
*/
var $mBgcolor;
/**
* @var Brush color.
* @access protected
*/
var $mBrush;
/**
* @var Image object.
* @access protected
*/
var $mImg;
/**
* @var Numeric code for character font.
* @access protected
*/
var $mFont;
/**
* @var Error message.
* @access protected
*/
var $mError;
/**
* @var Character Set.
* @access protected
*/
var $mCharSet;
/**
* @var Allowed symbols.
* @access protected
*/
var $mChars;
/**
* Class Constructor.
* @param int $Width Image width in pixels.
* @param int $Height Image height in pixels.
* @param int $Style Barcode style.
*/
function BarcodeObject($Width=BCD_DEFAULT_WIDTH, $Height=BCD_DEFAULT_HEIGHT, $Style=BCD_DEFAULT_STYLE) {
$this->mWidth = $Width;
$this->mHeight = $Height;
$this->mStyle = $Style;
$this->mFont = BCD_DEFAULT_FONT;
$this->mImg = ImageCreate($this->mWidth, $this->mHeight);
$dbColor = $this->mStyle & BCS_REVERSE_COLOR ? BCD_DEFAULT_FOREGROUND_COLOR : BCD_DEFAULT_BACKGROUND_COLOR;
$dfColor = $this->mStyle & BCS_REVERSE_COLOR ? BCD_DEFAULT_BACKGROUND_COLOR : BCD_DEFAULT_FOREGROUND_COLOR;
$this->mBgcolor = ImageColorAllocate($this->mImg, ($dbColor & 0xFF0000) >> 16,
($dbColor & 0x00FF00) >> 8, $dbColor & 0x0000FF);
$this->mBrush = ImageColorAllocate($this->mImg, ($dfColor & 0xFF0000) >> 16,
($dfColor & 0x00FF00) >> 8, $dfColor & 0x0000FF);
if (!($this->mStyle & BCS_TRANSPARENT)) {
ImageFill($this->mImg, $this->mWidth, $this->mHeight, $this->mBgcolor);
}
}
/**
* Returns the image object.
* @return object image.
* @author Nicola Asuni
* @since 1.5.2
*/
function getImage() {
return $this->mImg;
}
/**
* Abstract method used to draw the barcode image.
* @param int $xres Horizontal resolution.
*/
function DrawObject($xres) {
/* there is not implementation neded, is simply the asbsract function. */
return false;
}
/**
* Draws the barcode border.
* @access protected
*/
function DrawBorder() {
ImageRectangle($this->mImg, 0, 0, $this->mWidth-1, $this->mHeight-1, $this->mBrush);
}
/**
* Draws the alphanumeric code.
* @param int $Font Font type.
* @param int $xPos Horiziontal position.
* @param int $yPos Vertical position.
* @param int $Char Alphanumeric code to write.
* @access protected
*/
function DrawChar($Font, $xPos, $yPos, $Char) {
ImageString($this->mImg,$Font,$xPos,$yPos,$Char,$this->mBrush);
}
/**
* Draws a character string.
* @param int $Font Font type.
* @param int $xPos Horiziontal position.
* @param int $yPos Vertical position.
* @param int $Char string to write.
* @access protected
*/
function DrawText($Font, $xPos, $yPos, $Char) {
ImageString($this->mImg,$Font,$xPos,$yPos,$Char,$this->mBrush);
}
/**
* Draws a single barcode bar.
* @param int $xPos Horiziontal position.
* @param int $yPos Vertical position.
* @param int $xSize Horizontal size.
* @param int $xSize Vertical size.
* @return bool trur in case of success, false otherwise.
* @access protected
*/
function DrawSingleBar($xPos, $yPos, $xSize, $ySize) {
if ($xPos>=0 && $xPos<=$this->mWidth && ($xPos+$xSize)<=$this->mWidth &&
$yPos>=0 && $yPos<=$this->mHeight && ($yPos+$ySize)<=$this->mHeight) {
for ($i=0;$i<$xSize;$i++) {
ImageLine($this->mImg, $xPos+$i, $yPos, $xPos+$i, $yPos+$ySize, $this->mBrush);
}
return true;
}
return false;
}
/**
* Returns the current error message.
* @return string error message.
*/
function GetError() {
return $this->mError;
}
/**
* Returns the font height.
* @param int $font font type.
* @return int font height.
*/
function GetFontHeight($font) {
return ImageFontHeight($font);
}
/**
* Returns the font width.
* @param int $font font type.
* @return int font width.
*/
function GetFontWidth($font) {
return ImageFontWidth($font);
}
/**
* Set font type.
* @param int $font font type.
*/
function SetFont($font) {
$this->mFont = $font;
}
/**
* Returns barcode style.
* @return int barcode style.
*/
function GetStyle() {
return $this->mStyle;
}
/**
* Set barcode style.
* @param int $Style barcode style.
*/
function SetStyle ($Style) {
$this->mStyle = $Style;
}
/**
* Flush the barcode image.
*/
function FlushObject() {
if (($this->mStyle & BCS_BORDER)) {
$this->DrawBorder();
}
if ($this->mStyle & BCS_IMAGE_PNG) {
Header("Content-Type: image/png");
ImagePng($this->mImg);
} else if ($this->mStyle & BCS_IMAGE_JPEG) {
Header("Content-Type: image/jpeg");
ImageJpeg($this->mImg);
}
}
/**
* Destroy the barcode image.
*/
function DestroyObject() {
ImageDestroy($this->mImg);
}
}
//============================================================+
// END OF FILE
//============================================================+
?>