mirror of
https://github.com/moodle/moodle.git
synced 2025-08-04 16:36:37 +02:00
441 lines
No EOL
9.5 KiB
PHP
Executable file
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
|
|
//============================================================+
|
|
?>
|