#-- encoding: UTF-8 #============================================================+ # File name : barcode.rb # 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 Ruby # - 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 # protected $mWidth; # # @var Image height in pixels. # @access protected # protected $mHeight; # # @var Numeric code for Barcode style. # @access protected # protected $mStyle; # # @var Background color. # @access protected # protected $mBgcolor; # # @var Brush color. # @access protected # protected $mBrush; # # @var Image object. # @access protected # protected $mImg; # # @var Numeric code for character font. # @access protected # protected $mFont; # # @var Error message. # @access protected # protected $mError; # # @var Character Set. # @access protected # protected $mCharSet; # # @var Allowed symbols. # @access protected # protected $mChars; # # Class Constructor. # @param int $Width Image width in pixels. # @param int $Height Image height in pixels. # @param int $Style Barcode style. # def __construct($Width=BCD_DEFAULT_WIDTH, $Height=BCD_DEFAULT_HEIGHT, $Style=BCD_DEFAULT_STYLE) @mWidth = $Width; @mHeight = $Height; @mStyle = $Style; @mFont = BCD_DEFAULT_FONT; @mImg = ImageCreate(@mWidth, @mHeight); $dbColor = @mStyle & BCS_REVERSE_COLOR ? BCD_DEFAULT_FOREGROUND_COLOR : BCD_DEFAULT_BACKGROUND_COLOR; $dfColor = @mStyle & BCS_REVERSE_COLOR ? BCD_DEFAULT_BACKGROUND_COLOR : BCD_DEFAULT_FOREGROUND_COLOR; @mBgcolor = ImageColorAllocate(@mImg, ($dbColor & 0xFF0000) >> 16, ($dbColor & 0x00FF00) >> 8, $dbColor & 0x0000FF); @mBrush = ImageColorAllocate(@mImg, ($dfColor & 0xFF0000) >> 16, ($dfColor & 0x00FF00) >> 8, $dfColor & 0x0000FF); if (!(@mStyle & BCS_TRANSPARENT)) ImageFill(@mImg, @mWidth, @mHeight, @mBgcolor); end end # # Class Destructor. # Destroy image object. # def __destructor() @DestroyObject(); end # # Returns the image object. # @return object image. # @author Nicola Asuni # @since 1.5.2 # def getImage() return @mImg; end # # Abstract method used to draw the barcode image. # @param int $xres Horizontal resolution. # def DrawObject($xres) { # there is not implementation neded, is simply the asbsract function.# return false; end # # Draws the barcode border. # @access protected # protected function DrawBorder() ImageRectangle(@mImg, 0, 0, @mWidth-1, @mHeight-1, @mBrush); end # # 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 # protected function DrawChar($Font, $xPos, $yPos, $Char) ImageString(@mImg,$Font,$xPos,$yPos,$Char,@mBrush); end # # 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 # protected function DrawText($Font, $xPos, $yPos, $Char) ImageString(@mImg,$Font,$xPos,$yPos,$Char,@mBrush); end # # 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 # protected function DrawSingleBar($xPos, $yPos, $xSize, $ySize) if ($xPos>=0 && $xPos<=@mWidth && ($xPos+$xSize)<=@mWidth && $yPos>=0 && $yPos<=@mHeight && ($yPos+$ySize)<=@mHeight) for ($i=0;$i<$xSize;$i++) ImageLine(@mImg, $xPos+$i, $yPos, $xPos+$i, $yPos+$ySize, @mBrush); end return true; end return false; end # # Returns the current error message. # @return string error message. # def GetError() return @mError; end # # Returns the font height. # @param int $font font type. # @return int font height. # def GetFontHeight($font) return ImageFontHeight($font); end # # Returns the font width. # @param int $font font type. # @return int font width. # def GetFontWidth($font) return ImageFontWidth($font); end # # Set font type. # @param int $font font type. # def SetFont($font) @mFont = $font; end # # Returns barcode style. # @return int barcode style. # def GetStyle() return @mStyle; end # # Set barcode style. # @param int $Style barcode style. # def SetStyle ($Style) @mStyle = $Style; end # # Flush the barcode image. # def FlushObject() if ((@mStyle & BCS_BORDER)) @DrawBorder(); end if (@mStyle & BCS_IMAGE_PNG) Header("Content-Type: image/png"); ImagePng(@mImg); elsif (@mStyle & BCS_IMAGE_JPEG) Header("Content-Type: image/jpeg"); ImageJpeg(@mImg); end end # # Destroy the barcode image. # def DestroyObject() ImageDestroy(@mImg); end } #============================================================+ # END OF FILE #============================================================+