+++ /dev/null
-\r
-#============================================================+\r
-# File name : barcode.rb\r
-# Begin : 2002-07-31\r
-# Last Update : 2005-01-02\r
-# Author : Karim Mribti [barcode@mribti.com]\r
-# Version : 1.1 [0.0.8a (original code)]\r
-# License : GNU LGPL (Lesser General Public License) 2.1\r
-# http://www.gnu.org/copyleft/lesser.txt\r
-# Source Code : http://www.mribti.com/barcode/\r
-#\r
-# Description : Generic Barcode Render Class for PHP using\r
-# the GD graphics library.\r
-#\r
-# NOTE:\r
-# This version contains changes by Nicola Asuni:\r
-# - porting to Ruby\r
-# - code style and formatting\r
-# - automatic php documentation in PhpDocumentor Style\r
-# (www.phpdoc.org)\r
-# - minor bug fixing\r
-# - $mCharSet and $mChars variables were added here\r
-#============================================================+\r
-\r
-#\r
-# Barcode Render Class for PHP using the GD graphics library.\r
-# @author Karim Mribti, Nicola Asuni\r
-# @name BarcodeObject\r
-# @package com.tecnick.tcpdf\r
-# @@version 0.0.8a 2001-04-01 (original code)\r
-# @since 2001-03-25\r
-# @license http://www.gnu.org/copyleft/lesser.html LGPL\r
-#\r
-\r
-# Styles\r
-# Global\r
-\r
-#\r
-# option: generate barcode border\r
-#\r
-define("BCS_BORDER", 1);\r
-\r
-#\r
-# option: use transparent background\r
-#\r
-define("BCS_TRANSPARENT", 2);\r
-\r
-#\r
-# option: center barcode\r
-#\r
-define("BCS_ALIGN_CENTER", 4);\r
-\r
-#\r
-# option: align left\r
-#\r
-define("BCS_ALIGN_LEFT", 8);\r
-\r
-#\r
-# option: align right\r
-#\r
-define("BCS_ALIGN_RIGHT", 16);\r
-\r
-#\r
-# option: generate JPEG image\r
-#\r
-define("BCS_IMAGE_JPEG", 32);\r
-\r
-#\r
-# option: generate PNG image\r
-#\r
-define("BCS_IMAGE_PNG", 64);\r
-\r
-#\r
-# option: draw text\r
-#\r
-define("BCS_DRAW_TEXT", 128);\r
-\r
-#\r
-# option: stretch text\r
-#\r
-define("BCS_STRETCH_TEXT", 256);\r
-\r
-#\r
-# option: reverse color\r
-#\r
-define("BCS_REVERSE_COLOR", 512);\r
-\r
-#\r
-# option: draw check\r
-# (only for I25 code)\r
-#\r
-define("BCS_I25_DRAW_CHECK", 2048);\r
-\r
-#\r
-# set default background color\r
-#\r
-define("BCD_DEFAULT_BACKGROUND_COLOR", 0xFFFFFF);\r
-\r
-#\r
-# set default foreground color\r
-#\r
-define("BCD_DEFAULT_FOREGROUND_COLOR", 0x000000);\r
-\r
-#\r
-# set default style options\r
-#\r
-define("BCD_DEFAULT_STYLE", BCS_BORDER | BCS_ALIGN_CENTER | BCS_IMAGE_PNG);\r
-\r
-#\r
-# set default width\r
-#\r
-define("BCD_DEFAULT_WIDTH", 460);\r
-\r
-#\r
-# set default height\r
-#\r
-define("BCD_DEFAULT_HEIGHT", 120);\r
-\r
-#\r
-# set default font\r
-#\r
-define("BCD_DEFAULT_FONT", 5);\r
-\r
-#\r
-# st default horizontal resolution\r
-#\r
-define("BCD_DEFAULT_XRES", 2);\r
-\r
-# Margins\r
-\r
-#\r
-# set default margin\r
-#\r
-define("BCD_DEFAULT_MAR_Y1", 0);\r
-\r
-#\r
-# set default margin\r
-#\r
-define("BCD_DEFAULT_MAR_Y2", 0);\r
-\r
-#\r
-# set default text offset\r
-#\r
-define("BCD_DEFAULT_TEXT_OFFSET", 2);\r
-\r
-# For the I25 Only\r
-\r
-#\r
-# narrow bar option\r
-# (only for I25 code)\r
-#\r
-define("BCD_I25_NARROW_BAR", 1);\r
-\r
-#\r
-# wide bar option\r
-# (only for I25 code)\r
-#\r
-define("BCD_I25_WIDE_BAR", 2);\r
-\r
-# For the C39 Only\r
-\r
-#\r
-# narrow bar option\r
-# (only for c39 code)\r
-#\r
-define("BCD_C39_NARROW_BAR", 1);\r
-\r
-#\r
-# wide bar option\r
-# (only for c39 code)\r
-#\r
-define("BCD_C39_WIDE_BAR", 2);\r
-\r
-# For Code 128\r
-\r
-#\r
-# set type 1 bar\r
-# (only for c128 code)\r
-#\r
-define("BCD_C128_BAR_1", 1);\r
-\r
-#\r
-# set type 2 bar\r
-# (only for c128 code)\r
-#\r
-define("BCD_C128_BAR_2", 2);\r
-\r
-#\r
-# set type 3 bar\r
-# (only for c128 code)\r
-#\r
-define("BCD_C128_BAR_3", 3);\r
-\r
-#\r
-# set type 4 bar\r
-# (only for c128 code)\r
-#\r
-define("BCD_C128_BAR_4", 4);\r
-\r
-#\r
-# Barcode Render Class for PHP using the GD graphics library.\r
-# @author Karim Mribti, Nicola Asuni\r
-# @name BarcodeObject\r
-# @package com.tecnick.tcpdf\r
-# @@version 0.0.8a 2001-04-01 (original code)\r
-# @since 2001-03-25\r
-# @license http://www.gnu.org/copyleft/lesser.html LGPL\r
-#\r
-class BarcodeObject {\r
- #\r
- # @var Image width in pixels.\r
- # @access protected\r
- #\r
- protected $mWidth;\r
- \r
- #\r
- # @var Image height in pixels.\r
- # @access protected\r
- #\r
- protected $mHeight;\r
- \r
- #\r
- # @var Numeric code for Barcode style.\r
- # @access protected\r
- #\r
- protected $mStyle;\r
- \r
- #\r
- # @var Background color.\r
- # @access protected\r
- #\r
- protected $mBgcolor;\r
- \r
- #\r
- # @var Brush color.\r
- # @access protected\r
- #\r
- protected $mBrush;\r
- \r
- #\r
- # @var Image object.\r
- # @access protected\r
- #\r
- protected $mImg;\r
- \r
- #\r
- # @var Numeric code for character font.\r
- # @access protected\r
- #\r
- protected $mFont;\r
- \r
- #\r
- # @var Error message.\r
- # @access protected\r
- #\r
- protected $mError;\r
- \r
- #\r
- # @var Character Set.\r
- # @access protected\r
- #\r
- protected $mCharSet;\r
- \r
- #\r
- # @var Allowed symbols.\r
- # @access protected\r
- #\r
- protected $mChars;\r
-\r
- #\r
- # Class Constructor.\r
- # @param int $Width Image width in pixels.\r
- # @param int $Height Image height in pixels. \r
- # @param int $Style Barcode style.\r
- #\r
- def __construct($Width=BCD_DEFAULT_WIDTH, $Height=BCD_DEFAULT_HEIGHT, $Style=BCD_DEFAULT_STYLE)\r
- @mWidth = $Width;\r
- @mHeight = $Height;\r
- @mStyle = $Style;\r
- @mFont = BCD_DEFAULT_FONT;\r
- @mImg = ImageCreate(@mWidth, @mHeight);\r
- $dbColor = @mStyle & BCS_REVERSE_COLOR ? BCD_DEFAULT_FOREGROUND_COLOR : BCD_DEFAULT_BACKGROUND_COLOR;\r
- $dfColor = @mStyle & BCS_REVERSE_COLOR ? BCD_DEFAULT_BACKGROUND_COLOR : BCD_DEFAULT_FOREGROUND_COLOR;\r
- @mBgcolor = ImageColorAllocate(@mImg, ($dbColor & 0xFF0000) >> 16,\r
- ($dbColor & 0x00FF00) >> 8, $dbColor & 0x0000FF);\r
- @mBrush = ImageColorAllocate(@mImg, ($dfColor & 0xFF0000) >> 16,\r
- ($dfColor & 0x00FF00) >> 8, $dfColor & 0x0000FF);\r
- if (!(@mStyle & BCS_TRANSPARENT))\r
- ImageFill(@mImg, @mWidth, @mHeight, @mBgcolor);\r
- end\r
- end\r
- \r
- #\r
- # Class Destructor.\r
- # Destroy image object.\r
- #\r
- def __destructor()\r
- @DestroyObject();\r
- end\r
-\r
- #\r
- # Returns the image object.\r
- # @return object image.\r
- # @author Nicola Asuni\r
- # @since 1.5.2\r
- #\r
- def getImage()\r
- return @mImg;\r
- end\r
- \r
- #\r
- # Abstract method used to draw the barcode image.\r
- # @param int $xres Horizontal resolution.\r
- #\r
- def DrawObject($xres) {\r
- # there is not implementation neded, is simply the asbsract function.#\r
- return false;\r
- end\r
- \r
- #\r
- # Draws the barcode border.\r
- # @access protected\r
- #\r
- protected function DrawBorder()\r
- ImageRectangle(@mImg, 0, 0, @mWidth-1, @mHeight-1, @mBrush);\r
- end\r
- \r
- #\r
- # Draws the alphanumeric code.\r
- # @param int $Font Font type.\r
- # @param int $xPos Horiziontal position.\r
- # @param int $yPos Vertical position.\r
- # @param int $Char Alphanumeric code to write.\r
- # @access protected\r
- #\r
- protected function DrawChar($Font, $xPos, $yPos, $Char)\r
- ImageString(@mImg,$Font,$xPos,$yPos,$Char,@mBrush);\r
- end\r
- \r
- #\r
- # Draws a character string.\r
- # @param int $Font Font type.\r
- # @param int $xPos Horiziontal position.\r
- # @param int $yPos Vertical position.\r
- # @param int $Char string to write.\r
- # @access protected\r
- #\r
- protected function DrawText($Font, $xPos, $yPos, $Char)\r
- ImageString(@mImg,$Font,$xPos,$yPos,$Char,@mBrush);\r
- end\r
-\r
- #\r
- # Draws a single barcode bar.\r
- # @param int $xPos Horiziontal position.\r
- # @param int $yPos Vertical position.\r
- # @param int $xSize Horizontal size.\r
- # @param int $xSize Vertical size.\r
- # @return bool trur in case of success, false otherwise.\r
- # @access protected\r
- #\r
- protected function DrawSingleBar($xPos, $yPos, $xSize, $ySize)\r
- if ($xPos>=0 && $xPos<=@mWidth && ($xPos+$xSize)<=@mWidth &&\r
- $yPos>=0 && $yPos<=@mHeight && ($yPos+$ySize)<=@mHeight)\r
- for ($i=0;$i<$xSize;$i++)\r
- ImageLine(@mImg, $xPos+$i, $yPos, $xPos+$i, $yPos+$ySize, @mBrush);\r
- end\r
- return true;\r
- end\r
- return false;\r
- end\r
- \r
- #\r
- # Returns the current error message.\r
- # @return string error message.\r
- #\r
- def GetError()\r
- return @mError;\r
- end\r
- \r
- #\r
- # Returns the font height.\r
- # @param int $font font type.\r
- # @return int font height.\r
- #\r
- def GetFontHeight($font)\r
- return ImageFontHeight($font);\r
- end\r
- \r
- #\r
- # Returns the font width.\r
- # @param int $font font type.\r
- # @return int font width.\r
- #\r
- def GetFontWidth($font)\r
- return ImageFontWidth($font);\r
- end\r
- \r
- #\r
- # Set font type.\r
- # @param int $font font type.\r
- #\r
- def SetFont($font)\r
- @mFont = $font;\r
- end\r
- \r
- #\r
- # Returns barcode style.\r
- # @return int barcode style.\r
- #\r
- def GetStyle()\r
- return @mStyle;\r
- end\r
-\r
- #\r
- # Set barcode style.\r
- # @param int $Style barcode style.\r
- #\r
- def SetStyle ($Style)\r
- @mStyle = $Style;\r
- end\r
-\r
- #\r
- # Flush the barcode image.\r
- #\r
- def FlushObject()\r
- if ((@mStyle & BCS_BORDER))\r
- @DrawBorder();\r
- end\r
- if (@mStyle & BCS_IMAGE_PNG)\r
- Header("Content-Type: image/png");\r
- ImagePng(@mImg);\r
- elsif (@mStyle & BCS_IMAGE_JPEG)\r
- Header("Content-Type: image/jpeg");\r
- ImageJpeg(@mImg);\r
- end\r
- end\r
- \r
- #\r
- # Destroy the barcode image.\r
- #\r
- def DestroyObject()\r
- ImageDestroy(@mImg);\r
- end\r
-}\r
-\r
-#============================================================+\r
-# END OF FILE\r
-#============================================================+\r
+++ /dev/null
-\r
-#============================================================+\r
-# File name : c128aobject.rb\r
-# Begin : 2002-07-31\r
-# Last Update : 2004-12-29\r
-# Author : Karim Mribti [barcode@mribti.com]\r
-# Version : 0.0.8a 2001-04-01 (original code)\r
-# License : GNU LGPL (Lesser General Public License) 2.1\r
-# http://www.gnu.org/copyleft/lesser.txt\r
-# Source Code : http://www.mribti.com/barcode/\r
-#\r
-# Description : Code 128-A Barcode Render Class for PHP using\r
-# the GD graphics library.\r
-# Code 128-A is a continuous, multilevel and\r
-# include all upper case alphanumeric characters\r
-# and ASCII control characters.\r
-#\r
-# NOTE:\r
-# This version contains changes by Nicola Asuni:\r
-# - porting to Ruby\r
-# - code style and formatting\r
-# - automatic php documentation in PhpDocumentor Style\r
-# (www.phpdoc.org)\r
-# - minor bug fixing\r
-#============================================================+\r
-\r
-#\r
-# Code 128-A Barcode Render Class for PHP using the GD graphics library.<br>\r
-# Code 128-A is a continuous, multilevel and include all upper case alphanumeric characters and ASCII control characters.\r
-# @author Karim Mribti, Nicola Asuni\r
-# @name BarcodeObject\r
-# @package com.tecnick.tcpdf\r
-# @@version 0.0.8a 2001-04-01 (original code)\r
-# @since 2001-03-25\r
-# @license http://www.gnu.org/copyleft/lesser.html LGPL\r
-#\r
-\r
-#\r
-# Code 128-A Barcode Render Class for PHP using the GD graphics library.<br>\r
-# Code 128-A is a continuous, multilevel and include all upper case alphanumeric characters and ASCII control characters.\r
-# @author Karim Mribti, Nicola Asuni\r
-# @name BarcodeObject\r
-# @package com.tecnick.tcpdf\r
-# @@version 0.0.8a 2001-04-01 (original code)\r
-# @since 2001-03-25\r
-# @license http://www.gnu.org/copyleft/lesser.html LGPL\r
-#\r
-class C128AObject extends BarcodeObject {\r
- \r
- #\r
- # Class Constructor.\r
- # @param int $Width Image width in pixels.\r
- # @param int $Height Image height in pixels. \r
- # @param int $Style Barcode style.\r
- # @param int $Value value to print on barcode.\r
- #\r
- def __construct($Width, $Height, $Style, $Value)\r
- parent::__construct($Width, $Height, $Style);\r
- @mValue = $Value;\r
- @mChars = " !\"#$%&'()*+�-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_";\r
- @mCharSet = array (\r
- "212222", # 00#\r
- "222122", # 01#\r
- "222221", # 02#\r
- "121223", # 03#\r
- "121322", # 04#\r
- "131222", # 05#\r
- "122213", # 06#\r
- "122312", # 07#\r
- "132212", # 08#\r
- "221213", # 09#\r
- "221312", # 10#\r
- "231212", # 11#\r
- "112232", # 12#\r
- "122132", # 13#\r
- "122231", # 14#\r
- "113222", # 15#\r
- "123122", # 16#\r
- "123221", # 17#\r
- "223211", # 18#\r
- "221132", # 19#\r
- "221231", # 20#\r
- "213212", # 21#\r
- "223112", # 22#\r
- "312131", # 23#\r
- "311222", # 24#\r
- "321122", # 25#\r
- "321221", # 26#\r
- "312212", # 27#\r
- "322112", # 28#\r
- "322211", # 29#\r
- "212123", # 30#\r
- "212321", # 31#\r
- "232121", # 32#\r
- "111323", # 33#\r
- "131123", # 34#\r
- "131321", # 35#\r
- "112313", # 36#\r
- "132113", # 37#\r
- "132311", # 38#\r
- "211313", # 39#\r
- "231113", # 40#\r
- "231311", # 41#\r
- "112133", # 42#\r
- "112331", # 43#\r
- "132131", # 44#\r
- "113123", # 45#\r
- "113321", # 46#\r
- "133121", # 47#\r
- "313121", # 48#\r
- "211331", # 49#\r
- "231131", # 50#\r
- "213113", # 51#\r
- "213311", # 52#\r
- "213131", # 53#\r
- "311123", # 54#\r
- "311321", # 55#\r
- "331121", # 56#\r
- "312113", # 57#\r
- "312311", # 58#\r
- "332111", # 59#\r
- "314111", # 60#\r
- "221411", # 61#\r
- "431111", # 62#\r
- "111224", # 63#\r
- "111422", # 64#\r
- "121124", # 65#\r
- "121421", # 66#\r
- "141122", # 67#\r
- "141221", # 68#\r
- "112214", # 69#\r
- "112412", # 70#\r
- "122114", # 71#\r
- "122411", # 72#\r
- "142112", # 73#\r
- "142211", # 74#\r
- "241211", # 75#\r
- "221114", # 76#\r
- "413111", # 77#\r
- "241112", # 78#\r
- "134111", # 79#\r
- "111242", # 80#\r
- "121142", # 81#\r
- "121241", # 82#\r
- "114212", # 83#\r
- "124112", # 84#\r
- "124211", # 85#\r
- "411212", # 86#\r
- "421112", # 87#\r
- "421211", # 88#\r
- "212141", # 89#\r
- "214121", # 90#\r
- "412121", # 91#\r
- "111143", # 92#\r
- "111341", # 93#\r
- "131141", # 94#\r
- "114113", # 95#\r
- "114311", # 96#\r
- "411113", # 97#\r
- "411311", # 98#\r
- "113141", # 99#\r
- "114131", # 100#\r
- "311141", # 101#\r
- "411131" # 102#\r
- );\r
- end\r
-\r
- #\r
- # Returns the character index.\r
- # @param char $char character.\r
- # @return int character index or -1 in case of error.\r
- # @access private\r
- #\r
- def GetCharIndex($char)\r
- for ($i=0;$i<64;$i++)\r
- if (@mChars[$i] == $char)\r
- return $i;\r
- end\r
- end\r
- return -1;\r
- end\r
- \r
- #\r
- # Returns the bar size.\r
- # @param int $xres Horizontal resolution.\r
- # @param char $char Character.\r
- # @return int barcode size.\r
- # @access private\r
- #\r
- def GetBarSize($xres, $char)\r
- switch ($char)\r
- case '1'\r
- $cVal = BCD_C128_BAR_1;\r
- \r
- case '2'\r
- $cVal = BCD_C128_BAR_2;\r
- \r
- case '3'\r
- $cVal = BCD_C128_BAR_3;\r
- \r
- case '4'\r
- $cVal = BCD_C128_BAR_4;\r
- \r
- default\r
- $cVal = 0;\r
- end\r
- end\r
- return $cVal# $xres;\r
- end\r
- \r
- #\r
- # Returns barcode size.\r
- # @param int $xres Horizontal resolution.\r
- # @return barcode size.\r
- # @access private\r
- #\r
- def GetSize($xres)\r
- $len = @mValue.length;\r
-\r
- if ($len == 0) {\r
- @mError = "Null value";\r
- return false;\r
- end\r
- $ret = 0;\r
- for ($i=0;$i<$len;$i++)\r
- if (($id = GetCharIndex(@mValue[$i])) == -1)\r
- @mError = "C128A not include the char '".@mValue[$i]."'";\r
- return false;\r
- else\r
- $cset = @mCharSet[$id];\r
- $ret += GetBarSize($xres, $cset[0]);\r
- $ret += GetBarSize($xres, $cset[1]);\r
- $ret += GetBarSize($xres, $cset[2]);\r
- $ret += GetBarSize($xres, $cset[3]);\r
- $ret += GetBarSize($xres, $cset[4]);\r
- $ret += GetBarSize($xres, $cset[5]);\r
- end\r
- end\r
-\r
- # length of Check character#\r
- $cset = GetCheckCharValue();\r
- $CheckSize = 0;\r
- for ($i=0;$i<6;$i++)\r
- $CheckSize += GetBarSize($cset[$i], $xres);\r
- end\r
- $StartSize = 2*BCD_C128_BAR_2*$xres + 3*BCD_C128_BAR_1*$xres + BCD_C128_BAR_4*$xres;\r
- $StopSize = 2*BCD_C128_BAR_2*$xres + 3*BCD_C128_BAR_1*$xres + 2*BCD_C128_BAR_3*$xres;\r
- return $StartSize + $ret + $CheckSize + $StopSize;\r
- end\r
- \r
- #\r
- # Returns the check-char value.\r
- # @return string.\r
- # @access private\r
- #\r
- def GetCheckCharValue()\r
- $len = @mValue.length;\r
- $sum = 103; # 'A' type;\r
- for ($i=0;$i<$len;$i++)\r
- $sum += GetCharIndex(@mValue[$i])# ($i+1);\r
- end\r
- $check = $sum % 103;\r
- return @mCharSet[$check];\r
- end\r
-\r
- #\r
- # Draws the start code.\r
- # @param int $DrawPos Drawing position.\r
- # @param int $yPos Vertical position.\r
- # @param int $ySize Vertical size.\r
- # @param int $xres Horizontal resolution.\r
- # @return int drawing position.\r
- # @access private\r
- #\r
- def DrawStart($DrawPos, $yPos, $ySize, $xres)\r
- # Start code is '211412'#\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('2', $xres) , $ySize);\r
- $DrawPos += GetBarSize('2', $xres);\r
- $DrawPos += GetBarSize('1', $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('1', $xres) , $ySize);\r
- $DrawPos += GetBarSize('1', $xres);\r
- $DrawPos += GetBarSize('4', $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('1', $xres) , $ySize);\r
- $DrawPos += GetBarSize('1', $xres);\r
- $DrawPos += GetBarSize('2', $xres);\r
- return $DrawPos;\r
- end\r
- \r
- #\r
- # Draws the stop code.\r
- # @param int $DrawPos Drawing position.\r
- # @param int $yPos Vertical position.\r
- # @param int $ySize Vertical size.\r
- # @param int $xres Horizontal resolution.\r
- # @return int drawing position.\r
- # @access private\r
- #\r
- def DrawStop($DrawPos, $yPos, $ySize, $xres)\r
- # Stop code is '2331112'#\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('2', $xres) , $ySize);\r
- $DrawPos += GetBarSize('2', $xres);\r
- $DrawPos += GetBarSize('3', $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('3', $xres) , $ySize);\r
- $DrawPos += GetBarSize('3', $xres);\r
- $DrawPos += GetBarSize('1', $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('1', $xres) , $ySize);\r
- $DrawPos += GetBarSize('1', $xres);\r
- $DrawPos += GetBarSize('1', $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('2', $xres) , $ySize);\r
- $DrawPos += GetBarSize('2', $xres);\r
- return $DrawPos;\r
- end\r
- \r
- #\r
- # Draws the check-char code.\r
- # @param int $DrawPos Drawing position.\r
- # @param int $yPos Vertical position.\r
- # @param int $ySize Vertical size.\r
- # @param int $xres Horizontal resolution.\r
- # @return int drawing position.\r
- # @access private\r
- #\r
- def DrawCheckChar($DrawPos, $yPos, $ySize, $xres)\r
- $cset = GetCheckCharValue();\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[0], $xres) , $ySize);\r
- $DrawPos += GetBarSize($cset[0], $xres);\r
- $DrawPos += GetBarSize($cset[1], $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[2], $xres) , $ySize);\r
- $DrawPos += GetBarSize($cset[2], $xres);\r
- $DrawPos += GetBarSize($cset[3], $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[4], $xres) , $ySize);\r
- $DrawPos += GetBarSize($cset[4], $xres);\r
- $DrawPos += GetBarSize($cset[5], $xres);\r
- return $DrawPos;\r
- end\r
-\r
- #\r
- # Draws the barcode object.\r
- # @param int $xres Horizontal resolution.\r
- # @return bool true in case of success.\r
- #\r
- def DrawObject($xres)\r
- $len = @mValue.length;\r
- if (($size = GetSize($xres))==0)\r
- return false;\r
- end\r
-\r
- if (@mStyle & BCS_ALIGN_CENTER) $sPos = (integer)((@mWidth - $size ) / 2);\r
- elsif (@mStyle & BCS_ALIGN_RIGHT) $sPos = @mWidth - $size;\r
- else $sPos = 0;\r
-\r
- # Total height of bar code -Bars only-#\r
- if (@mStyle & BCS_DRAW_TEXT) $ysize = @mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2 - GetFontHeight(@mFont);\r
- else $ysize = @mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2;\r
-\r
- # Draw text#\r
- if (@mStyle & BCS_DRAW_TEXT)\r
- if (@mStyle & BCS_STRETCH_TEXT)\r
- for ($i=0;$i<$len;$i++)\r
- @DrawChar(@mFont, $sPos+(2*BCD_C128_BAR_2*$xres + 3*BCD_C128_BAR_1*$xres + BCD_C128_BAR_4*$xres)+($size/$len)*$i,\r
- $ysize + BCD_DEFAULT_MAR_Y1 + BCD_DEFAULT_TEXT_OFFSET, @mValue[$i]);\r
- else# Center#\r
- $text_width = GetFontWidth(@mFont)# @mValue.length;\r
- @DrawText(@mFont, $sPos+(($size-$text_width)/2)+(2*BCD_C128_BAR_2*$xres + 3*BCD_C128_BAR_1*$xres + BCD_C128_BAR_4*$xres),\r
- $ysize + BCD_DEFAULT_MAR_Y1 + BCD_DEFAULT_TEXT_OFFSET, @mValue);\r
- end\r
- end\r
-\r
- $cPos = 0;\r
- $DrawPos = @DrawStart($sPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);\r
- do {\r
- $c = GetCharIndex(@mValue[$cPos]);\r
- $cset = @mCharSet[$c];\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[0], $xres) , $ysize);\r
- $DrawPos += GetBarSize($cset[0], $xres);\r
- $DrawPos += GetBarSize($cset[1], $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[2], $xres) , $ysize);\r
- $DrawPos += GetBarSize($cset[2], $xres);\r
- $DrawPos += GetBarSize($cset[3], $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[4], $xres) , $ysize);\r
- $DrawPos += GetBarSize($cset[4], $xres);\r
- $DrawPos += GetBarSize($cset[5], $xres);\r
- $cPos += 1;\r
- end while ($cPos<$len);\r
- $DrawPos = @DrawCheckChar($DrawPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);\r
- $DrawPos = @DrawStop($DrawPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);\r
- return true;\r
- end\r
-}\r
-\r
-#============================================================+\r
-# END OF FILE\r
-#============================================================+\r
+++ /dev/null
-\r
-#============================================================+\r
-# File name : c128bobject.rb\r
-# Begin : 2002-07-31\r
-# Last Update : 2004-12-29\r
-# Author : Karim Mribti [barcode@mribti.com]\r
-# Version : 0.0.8a 2001-04-01 (original code)\r
-# License : GNU LGPL (Lesser General Public License) 2.1\r
-# http://www.gnu.org/copyleft/lesser.txt\r
-# Source Code : http://www.mribti.com/barcode/\r
-#\r
-# Description : Code 128-B Barcode Render Class for PHP using\r
-# the GD graphics library.\r
-# Code 128-B is a continuous, multilevel and full\r
-# ASCII code.\r
-#\r
-# NOTE:\r
-# This version contains changes by Nicola Asuni:\r
-# - porting to Ruby\r
-# - code style and formatting\r
-# - automatic php documentation in PhpDocumentor Style\r
-# (www.phpdoc.org)\r
-# - minor bug fixing\r
-#============================================================+\r
-\r
-#\r
-# Code 128-B Barcode Render Class for PHP using the GD graphics library.<br>\r
-# Code 128-B is a continuous, multilevel and full ASCII code.\r
-# @author Karim Mribti, Nicola Asuni\r
-# @name BarcodeObject\r
-# @package com.tecnick.tcpdf\r
-# @@version 0.0.8a 2001-04-01 (original code)\r
-# @since 2001-03-25\r
-# @license http://www.gnu.org/copyleft/lesser.html LGPL\r
-#\r
-\r
-#\r
-# Code 128-B Barcode Render Class for PHP using the GD graphics library.<br>\r
-# Code 128-B is a continuous, multilevel and full ASCII code.\r
-# @author Karim Mribti, Nicola Asuni\r
-# @name BarcodeObject\r
-# @package com.tecnick.tcpdf\r
-# @@version 0.0.8a 2001-04-01 (original code)\r
-# @since 2001-03-25\r
-# @license http://www.gnu.org/copyleft/lesser.html LGPL\r
-#\r
-class C128BObject extends BarcodeObject {\r
- \r
- #\r
- # Class Constructor.\r
- # @param int $Width Image width in pixels.\r
- # @param int $Height Image height in pixels. \r
- # @param int $Style Barcode style.\r
- # @param int $Value value to print on barcode.\r
- #\r
- def __construct($Width, $Height, $Style, $Value)\r
- parent::__construct($Width, $Height, $Style);\r
- @mValue = $Value;\r
- @mChars = " !\"#$%&'()*+�-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{ }~";\r
- @mCharSet = array (\r
- "212222", # 00#\r
- "222122", # 01#\r
- "222221", # 02#\r
- "121223", # 03#\r
- "121322", # 04#\r
- "131222", # 05#\r
- "122213", # 06#\r
- "122312", # 07#\r
- "132212", # 08#\r
- "221213", # 09#\r
- "221312", # 10#\r
- "231212", # 11#\r
- "112232", # 12#\r
- "122132", # 13#\r
- "122231", # 14#\r
- "113222", # 15#\r
- "123122", # 16#\r
- "123221", # 17#\r
- "223211", # 18#\r
- "221132", # 19#\r
- "221231", # 20#\r
- "213212", # 21#\r
- "223112", # 22#\r
- "312131", # 23#\r
- "311222", # 24#\r
- "321122", # 25#\r
- "321221", # 26#\r
- "312212", # 27#\r
- "322112", # 28#\r
- "322211", # 29#\r
- "212123", # 30#\r
- "212321", # 31#\r
- "232121", # 32#\r
- "111323", # 33#\r
- "131123", # 34#\r
- "131321", # 35#\r
- "112313", # 36#\r
- "132113", # 37#\r
- "132311", # 38#\r
- "211313", # 39#\r
- "231113", # 40#\r
- "231311", # 41#\r
- "112133", # 42#\r
- "112331", # 43#\r
- "132131", # 44#\r
- "113123", # 45#\r
- "113321", # 46#\r
- "133121", # 47#\r
- "313121", # 48#\r
- "211331", # 49#\r
- "231131", # 50#\r
- "213113", # 51#\r
- "213311", # 52#\r
- "213131", # 53#\r
- "311123", # 54#\r
- "311321", # 55#\r
- "331121", # 56#\r
- "312113", # 57#\r
- "312311", # 58#\r
- "332111", # 59#\r
- "314111", # 60#\r
- "221411", # 61#\r
- "431111", # 62#\r
- "111224", # 63#\r
- "111422", # 64#\r
- "121124", # 65#\r
- "121421", # 66#\r
- "141122", # 67#\r
- "141221", # 68#\r
- "112214", # 69#\r
- "112412", # 70#\r
- "122114", # 71#\r
- "122411", # 72#\r
- "142112", # 73#\r
- "142211", # 74#\r
- "241211", # 75#\r
- "221114", # 76#\r
- "413111", # 77#\r
- "241112", # 78#\r
- "134111", # 79#\r
- "111242", # 80#\r
- "121142", # 81#\r
- "121241", # 82#\r
- "114212", # 83#\r
- "124112", # 84#\r
- "124211", # 85#\r
- "411212", # 86#\r
- "421112", # 87#\r
- "421211", # 88#\r
- "212141", # 89#\r
- "214121", # 90#\r
- "412121", # 91#\r
- "111143", # 92#\r
- "111341", # 93#\r
- "131141", # 94#\r
- "114113", # 95#\r
- "114311", # 96#\r
- "411113", # 97#\r
- "411311", # 98#\r
- "113141", # 99#\r
- "114131", # 100#\r
- "311141", # 101#\r
- "411131" # 102#\r
- );\r
- end\r
-\r
- #\r
- # Returns the character index.\r
- # @param char $char character.\r
- # @return int character index or -1 in case of error.\r
- # @access private\r
- #\r
- def GetCharIndex($char)\r
- for ($i=0;$i<95;$i++)\r
- if (@mChars[$i] == $char)\r
- return $i;\r
- end\r
- end\r
- return -1;\r
- end\r
- \r
- #\r
- # Returns the bar size.\r
- # @param int $xres Horizontal resolution.\r
- # @param char $char Character.\r
- # @return int barcode size.\r
- # @access private\r
- #\r
- def GetBarSize($xres, $char)\r
- switch ($char)\r
- case '1'\r
- $cVal = BCD_C128_BAR_1;\r
- \r
- case '2'\r
- $cVal = BCD_C128_BAR_2;\r
- \r
- case '3'\r
- $cVal = BCD_C128_BAR_3;\r
- \r
- case '4'\r
- $cVal = BCD_C128_BAR_4;\r
- \r
- default\r
- $cVal = 0;\r
- end\r
- end\r
- return $cVal# $xres;\r
- end\r
- \r
- #\r
- # Returns barcode size.\r
- # @param int $xres Horizontal resolution.\r
- # @return barcode size.\r
- # @access private\r
- #\r
- def GetSize($xres)\r
- $len = @mValue.length;\r
-\r
- if ($len == 0) {\r
- @mError = "Null value";\r
- return false;\r
- end\r
- $ret = 0;\r
- for ($i=0;$i<$len;$i++)\r
- if (($id = GetCharIndex(@mValue[$i])) == -1)\r
- @mError = "C128B not include the char '".@mValue[$i]."'";\r
- return false;\r
- else\r
- $cset = @mCharSet[$id];\r
- $ret += GetBarSize($xres, $cset[0]);\r
- $ret += GetBarSize($xres, $cset[1]);\r
- $ret += GetBarSize($xres, $cset[2]);\r
- $ret += GetBarSize($xres, $cset[3]);\r
- $ret += GetBarSize($xres, $cset[4]);\r
- $ret += GetBarSize($xres, $cset[5]);\r
- end\r
- end\r
- # length of Check character#\r
- $cset = GetCheckCharValue();\r
- $CheckSize = 0;\r
- for ($i=0;$i<6;$i++)\r
- $CheckSize += GetBarSize($cset[$i], $xres);\r
- end\r
-\r
- $StartSize = 2*BCD_C128_BAR_2*$xres + 3*BCD_C128_BAR_1*$xres + BCD_C128_BAR_4*$xres;\r
- $StopSize = 2*BCD_C128_BAR_2*$xres + 3*BCD_C128_BAR_1*$xres + 2*BCD_C128_BAR_3*$xres;\r
-\r
- return $StartSize + $ret + $CheckSize + $StopSize;\r
- end\r
- \r
- #\r
- # Returns the check-char value.\r
- # @return string.\r
- # @access private\r
- #\r
- def GetCheckCharValue()\r
- $len = @mValue.length;\r
- $sum = 104; # 'B' type;\r
- for ($i=0;$i<$len;$i++)\r
- $sum += GetCharIndex(@mValue[$i])# ($i+1);\r
- end\r
- $check = $sum % 103;\r
- return @mCharSet[$check];\r
- end\r
-\r
- #\r
- # Draws the start code.\r
- # @param int $DrawPos Drawing position.\r
- # @param int $yPos Vertical position.\r
- # @param int $ySize Vertical size.\r
- # @param int $xres Horizontal resolution.\r
- # @return int drawing position.\r
- # @access private\r
- #\r
- def DrawStart($DrawPos, $yPos, $ySize, $xres)\r
- # Start code is '211214'#\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('2', $xres), $ySize);\r
- $DrawPos += GetBarSize('2', $xres);\r
- $DrawPos += GetBarSize('1', $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('1', $xres), $ySize);\r
- $DrawPos += GetBarSize('1', $xres);\r
- $DrawPos += GetBarSize('2', $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('1', $xres), $ySize);\r
- $DrawPos += GetBarSize('1', $xres);\r
- $DrawPos += GetBarSize('4', $xres);\r
- return $DrawPos;\r
- end\r
- \r
- #\r
- # Draws the stop code.\r
- # @param int $DrawPos Drawing position.\r
- # @param int $yPos Vertical position.\r
- # @param int $ySize Vertical size.\r
- # @param int $xres Horizontal resolution.\r
- # @return int drawing position.\r
- # @access private\r
- #\r
- def DrawStop($DrawPos, $yPos, $ySize, $xres)\r
- # Stop code is '2331112'#\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('2', $xres) , $ySize);\r
- $DrawPos += GetBarSize('2', $xres);\r
- $DrawPos += GetBarSize('3', $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('3', $xres) , $ySize);\r
- $DrawPos += GetBarSize('3', $xres);\r
- $DrawPos += GetBarSize('1', $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('1', $xres) , $ySize);\r
- $DrawPos += GetBarSize('1', $xres);\r
- $DrawPos += GetBarSize('1', $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('2', $xres) , $ySize);\r
- $DrawPos += GetBarSize('2', $xres);\r
- return $DrawPos;\r
- end\r
- \r
- #\r
- # Draws the check-char code.\r
- # @param int $DrawPos Drawing position.\r
- # @param int $yPos Vertical position.\r
- # @param int $ySize Vertical size.\r
- # @param int $xres Horizontal resolution.\r
- # @return int drawing position.\r
- # @access private\r
- #\r
- def DrawCheckChar($DrawPos, $yPos, $ySize, $xres)\r
- $cset = GetCheckCharValue();\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[0], $xres) , $ySize);\r
- $DrawPos += GetBarSize($cset[0], $xres);\r
- $DrawPos += GetBarSize($cset[1], $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[2], $xres) , $ySize);\r
- $DrawPos += GetBarSize($cset[2], $xres);\r
- $DrawPos += GetBarSize($cset[3], $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[4], $xres) , $ySize);\r
- $DrawPos += GetBarSize($cset[4], $xres);\r
- $DrawPos += GetBarSize($cset[5], $xres);\r
- return $DrawPos;\r
- end\r
-\r
- #\r
- # Draws the barcode object.\r
- # @param int $xres Horizontal resolution.\r
- # @return bool true in case of success.\r
- #\r
- def DrawObject($xres)\r
- $len = @mValue.length;\r
- if (($size = GetSize($xres))==0)\r
- return false;\r
- end\r
-\r
- if (@mStyle & BCS_ALIGN_CENTER) $sPos = (integer)((@mWidth - $size ) / 2);\r
- elsif (@mStyle & BCS_ALIGN_RIGHT) $sPos = @mWidth - $size;\r
- else $sPos = 0;\r
-\r
- # Total height of bar code -Bars only-#\r
- if (@mStyle & BCS_DRAW_TEXT) $ysize = @mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2 - GetFontHeight(@mFont);\r
- else $ysize = @mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2;\r
-\r
- # Draw text#\r
- if (@mStyle & BCS_DRAW_TEXT)\r
- if (@mStyle & BCS_STRETCH_TEXT)\r
- for ($i=0;$i<$len;$i++)\r
- @DrawChar(@mFont, $sPos+(2*BCD_C128_BAR_2*$xres + 3*BCD_C128_BAR_1*$xres + BCD_C128_BAR_4*$xres)+($size/$len)*$i,\r
- $ysize + BCD_DEFAULT_MAR_Y1 + BCD_DEFAULT_TEXT_OFFSET, @mValue[$i]);\r
- else# Center#\r
- $text_width = GetFontWidth(@mFont)# @mValue.length;\r
- @DrawText(@mFont, $sPos+(($size-$text_width)/2)+(2*BCD_C128_BAR_2*$xres + 3*BCD_C128_BAR_1*$xres + BCD_C128_BAR_4*$xres),\r
- $ysize + BCD_DEFAULT_MAR_Y1 + BCD_DEFAULT_TEXT_OFFSET, @mValue);\r
- end\r
- end\r
-\r
- $cPos = 0;\r
- $DrawPos = @DrawStart($sPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);\r
- do {\r
- $c = GetCharIndex(@mValue[$cPos]);\r
- $cset = @mCharSet[$c];\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[0], $xres) , $ysize);\r
- $DrawPos += GetBarSize($cset[0], $xres);\r
- $DrawPos += GetBarSize($cset[1], $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[2], $xres) , $ysize);\r
- $DrawPos += GetBarSize($cset[2], $xres);\r
- $DrawPos += GetBarSize($cset[3], $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[4], $xres) , $ysize);\r
- $DrawPos += GetBarSize($cset[4], $xres);\r
- $DrawPos += GetBarSize($cset[5], $xres);\r
- $cPos += 1;\r
- end while ($cPos<$len);\r
- $DrawPos = @DrawCheckChar($DrawPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);\r
- $DrawPos = @DrawStop($DrawPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);\r
- return true;\r
- end\r
-}\r
-\r
-#============================================================+\r
-# END OF FILE\r
-#============================================================+\r
+++ /dev/null
-\r
-#============================================================+\r
-# File name : c128cobject.rb\r
-# Begin : 2002-07-31\r
-# Last Update : 2004-12-29\r
-# Author : Karim Mribti [barcode@mribti.com]\r
-# : Sam Michaels [swampgas@swampgas.org]\r
-# : Nicola Asuni [info@tecnick.com]\r
-# Version : 0.0.8a 2001-04-01 (original code)\r
-# License : GNU LGPL (Lesser General Public License) 2.1\r
-# http://www.gnu.org/copyleft/lesser.txt\r
-# Source Code : http://www.mribti.com/barcode/\r
-#\r
-# Description : Code 128-C Barcode Render Class for PHP using\r
-# the GD graphics library.\r
-# Code 128-C is numeric only and provides the\r
-# most efficiency.\r
-#\r
-# NOTE:\r
-# This version contains changes by Nicola Asuni:\r
-# - porting to Ruby\r
-# - code style and formatting\r
-# - automatic php documentation in PhpDocumentor Style\r
-# (www.phpdoc.org)\r
-# - minor bug fixing\r
-#============================================================+\r
-\r
-#\r
-# Code 128-C Barcode Render Class for PHP using the GD graphics library.<br>\r
-# Code 128-C is numeric only and provides the most efficiency.\r
-# @author Karim Mribti, Nicola Asuni\r
-# @name BarcodeObject\r
-# @package com.tecnick.tcpdf\r
-# @@version 0.0.8a 2001-04-01 (original code)\r
-# @since 2001-03-25\r
-# @license http://www.gnu.org/copyleft/lesser.html LGPL\r
-#\r
-\r
-#\r
-# Code 128-C Barcode Render Class for PHP using the GD graphics library.<br>\r
-# Code 128-C is numeric only and provides the most efficiency.\r
-# @author Karim Mribti, Nicola Asuni\r
-# @name BarcodeObject\r
-# @package com.tecnick.tcpdf\r
-# @@version 0.0.8a 2001-04-01 (original code)\r
-# @since 2001-03-25\r
-# @license http://www.gnu.org/copyleft/lesser.html LGPL\r
-#\r
-class C128CObject extends BarcodeObject {\r
- \r
- #\r
- # Class Constructor.\r
- # @param int $Width Image width in pixels.\r
- # @param int $Height Image height in pixels. \r
- # @param int $Style Barcode style.\r
- # @param int $Value value to print on barcode.\r
- #\r
- def __construct($Width, $Height, $Style, $Value)\r
- parent::__construct($Width, $Height, $Style);\r
- @mValue = $Value;\r
- @mChars = array (\r
- "00", "01", "02", "03", "04", "05", "06", "07", "08", "09",\r
- "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",\r
- "20", "21", "22", "23", "24", "25", "26", "27", "28", "29",\r
- "30", "31", "32", "33", "34", "35", "36", "37", "38", "39",\r
- "40", "41", "42", "43", "44", "45", "46", "47", "48", "49",\r
- "50", "51", "52", "53", "54", "55", "56", "57", "58", "59",\r
- "60", "61", "62", "63", "64", "65", "66", "67", "68", "69",\r
- "70", "71", "72", "73", "74", "75", "76", "77", "78", "79",\r
- "80", "81", "82", "83", "84", "85", "86", "87", "88", "89",\r
- "90", "91", "92", "93", "94", "95", "96", "97", "98", "99",\r
- );\r
- @mCharSet = array (\r
- "212222", # 00#\r
- "222122", # 01#\r
- "222221", # 02#\r
- "121223", # 03#\r
- "121322", # 04#\r
- "131222", # 05#\r
- "122213", # 06#\r
- "122312", # 07#\r
- "132212", # 08#\r
- "221213", # 09#\r
- "221312", # 10#\r
- "231212", # 11#\r
- "112232", # 12#\r
- "122132", # 13#\r
- "122231", # 14#\r
- "113222", # 15#\r
- "123122", # 16#\r
- "123221", # 17#\r
- "223211", # 18#\r
- "221132", # 19#\r
- "221231", # 20#\r
- "213212", # 21#\r
- "223112", # 22#\r
- "312131", # 23#\r
- "311222", # 24#\r
- "321122", # 25#\r
- "321221", # 26#\r
- "312212", # 27#\r
- "322112", # 28#\r
- "322211", # 29#\r
- "212123", # 30#\r
- "212321", # 31#\r
- "232121", # 32#\r
- "111323", # 33#\r
- "131123", # 34#\r
- "131321", # 35#\r
- "112313", # 36#\r
- "132113", # 37#\r
- "132311", # 38#\r
- "211313", # 39#\r
- "231113", # 40#\r
- "231311", # 41#\r
- "112133", # 42#\r
- "112331", # 43#\r
- "132131", # 44#\r
- "113123", # 45#\r
- "113321", # 46#\r
- "133121", # 47#\r
- "313121", # 48#\r
- "211331", # 49#\r
- "231131", # 50#\r
- "213113", # 51#\r
- "213311", # 52#\r
- "213131", # 53#\r
- "311123", # 54#\r
- "311321", # 55#\r
- "331121", # 56#\r
- "312113", # 57#\r
- "312311", # 58#\r
- "332111", # 59#\r
- "314111", # 60#\r
- "221411", # 61#\r
- "431111", # 62#\r
- "111224", # 63#\r
- "111422", # 64#\r
- "121124", # 65#\r
- "121421", # 66#\r
- "141122", # 67#\r
- "141221", # 68#\r
- "112214", # 69#\r
- "112412", # 70#\r
- "122114", # 71#\r
- "122411", # 72#\r
- "142112", # 73#\r
- "142211", # 74#\r
- "241211", # 75#\r
- "221114", # 76#\r
- "413111", # 77#\r
- "241112", # 78#\r
- "134111", # 79#\r
- "111242", # 80#\r
- "121142", # 81#\r
- "121241", # 82#\r
- "114212", # 83#\r
- "124112", # 84#\r
- "124211", # 85#\r
- "411212", # 86#\r
- "421112", # 87#\r
- "421211", # 88#\r
- "212141", # 89#\r
- "214121", # 90#\r
- "412121", # 91#\r
- "111143", # 92#\r
- "111341", # 93#\r
- "131141", # 94#\r
- "114113", # 95#\r
- "114311", # 96#\r
- "411113", # 97#\r
- "411311", # 98#\r
- "113141", # 99#\r
- );\r
- end\r
-\r
- #\r
- # Returns the character index.\r
- # @param char $char character.\r
- # @return int character index or -1 in case of error.\r
- # @access private\r
- #\r
- def GetCharIndex($char)\r
- for ($i=0;$i<100;$i++)\r
- if (@mChars[$i] == $char)\r
- return $i;\r
- end\r
- end\r
- return -1;\r
- end\r
- \r
- #\r
- # Returns the bar size.\r
- # @param int $xres Horizontal resolution.\r
- # @param char $char Character.\r
- # @return int barcode size.\r
- # @access private\r
- #\r
- def GetBarSize($xres, $char)\r
- switch ($char)\r
- case '1'\r
- $cVal = BCD_C128_BAR_1;\r
- \r
- case '2'\r
- $cVal = BCD_C128_BAR_2;\r
- \r
- case '3'\r
- $cVal = BCD_C128_BAR_3;\r
- \r
- case '4'\r
- $cVal = BCD_C128_BAR_4;\r
- \r
- default\r
- $cVal = 0;\r
- end\r
- end\r
- return $cVal# $xres;\r
- end\r
-\r
- #\r
- # Returns barcode size.\r
- # @param int $xres Horizontal resolution.\r
- # @return barcode size.\r
- # @access private\r
- #\r
- def GetSize($xres)\r
- $len = @mValue.length;\r
-\r
- if ($len == 0) {\r
- @mError = "Null value";\r
- return false;\r
- end\r
- $ret = 0;\r
-\r
- for ($i=0;$i<$len;$i++)\r
- if ((@mValue[$i][0] < 48) || (@mValue[$i][0] > 57))\r
- @mError = "Code-128C is numeric only";\r
- return false;\r
- end\r
- end\r
-\r
- if (($len%2) != 0)\r
- @mError = "The length of barcode value must be even. You must pad the number with zeros.";\r
- return false;\r
- end\r
-\r
- for ($i=0;$i<$len;$i+=2)\r
- $id = GetCharIndex(@mValue[$i].@mValue[$i+1]);\r
- $cset = @mCharSet[$id];\r
- $ret += GetBarSize($xres, $cset[0]);\r
- $ret += GetBarSize($xres, $cset[1]);\r
- $ret += GetBarSize($xres, $cset[2]);\r
- $ret += GetBarSize($xres, $cset[3]);\r
- $ret += GetBarSize($xres, $cset[4]);\r
- $ret += GetBarSize($xres, $cset[5]);\r
- end\r
- # length of Check character#\r
- $cset = GetCheckCharValue();\r
- $CheckSize = 0;\r
- for ($i=0;$i<6;$i++)\r
- $CheckSize += GetBarSize($cset[$i], $xres);\r
- end\r
-\r
- $StartSize = 2*BCD_C128_BAR_2*$xres + 3*BCD_C128_BAR_1*$xres + BCD_C128_BAR_4*$xres;\r
- $StopSize = 2*BCD_C128_BAR_2*$xres + 3*BCD_C128_BAR_1*$xres + 2*BCD_C128_BAR_3*$xres;\r
- return $StartSize + $ret + $CheckSize + $StopSize;\r
- end\r
- \r
- #\r
- # Returns the check-char value.\r
- # @return string.\r
- # @access private\r
- #\r
- def GetCheckCharValue()\r
- $len = @mValue.length;\r
- $sum = 105; # 'C' type;\r
- $m = 0;\r
- for ($i=0;$i<$len;$i+=2)\r
- $m += 1;\r
- $sum += GetCharIndex(@mValue[$i].@mValue[$i+1])# $m;\r
- end\r
- $check = $sum % 103;\r
- return @mCharSet[$check];\r
- end\r
-\r
- #\r
- # Draws the start code.\r
- # @param int $DrawPos Drawing position.\r
- # @param int $yPos Vertical position.\r
- # @param int $ySize Vertical size.\r
- # @param int $xres Horizontal resolution.\r
- # @return int drawing position.\r
- # @access private\r
- #\r
- def DrawStart($DrawPos, $yPos, $ySize, $xres)\r
- # Start code is '211232'#\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('2', $xres) , $ySize);\r
- $DrawPos += GetBarSize('2', $xres);\r
- $DrawPos += GetBarSize('1', $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('1', $xres) , $ySize);\r
- $DrawPos += GetBarSize('1', $xres);\r
- $DrawPos += GetBarSize('2', $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('3', $xres) , $ySize);\r
- $DrawPos += GetBarSize('3', $xres);\r
- $DrawPos += GetBarSize('2', $xres);\r
- return $DrawPos;\r
- end\r
- \r
- #\r
- # Draws the stop code.\r
- # @param int $DrawPos Drawing position.\r
- # @param int $yPos Vertical position.\r
- # @param int $ySize Vertical size.\r
- # @param int $xres Horizontal resolution.\r
- # @return int drawing position.\r
- # @access private\r
- #\r
- def DrawStop($DrawPos, $yPos, $ySize, $xres)\r
- # Stop code is '2331112'#\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('2', $xres) , $ySize);\r
- $DrawPos += GetBarSize('2', $xres);\r
- $DrawPos += GetBarSize('3', $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('3', $xres) , $ySize);\r
- $DrawPos += GetBarSize('3', $xres);\r
- $DrawPos += GetBarSize('1', $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('1', $xres) , $ySize);\r
- $DrawPos += GetBarSize('1', $xres);\r
- $DrawPos += GetBarSize('1', $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('2', $xres) , $ySize);\r
- $DrawPos += GetBarSize('2', $xres);\r
- return $DrawPos;\r
- end\r
- \r
- #\r
- # Draws the check-char code.\r
- # @param int $DrawPos Drawing position.\r
- # @param int $yPos Vertical position.\r
- # @param int $ySize Vertical size.\r
- # @param int $xres Horizontal resolution.\r
- # @return int drawing position.\r
- # @access private\r
- #\r
- def DrawCheckChar($DrawPos, $yPos, $ySize, $xres)\r
- $cset = GetCheckCharValue();\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[0], $xres) , $ySize);\r
- $DrawPos += GetBarSize($cset[0], $xres);\r
- $DrawPos += GetBarSize($cset[1], $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[2], $xres) , $ySize);\r
- $DrawPos += GetBarSize($cset[2], $xres);\r
- $DrawPos += GetBarSize($cset[3], $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[4], $xres) , $ySize);\r
- $DrawPos += GetBarSize($cset[4], $xres);\r
- $DrawPos += GetBarSize($cset[5], $xres);\r
- return $DrawPos;\r
- end\r
-\r
- #\r
- # Draws the barcode object.\r
- # @param int $xres Horizontal resolution.\r
- # @return bool true in case of success.\r
- #\r
- def DrawObject($xres)\r
- $len = @mValue.length;\r
- if (($size = GetSize($xres))==0)\r
- return false;\r
- end\r
-\r
- if (@mStyle & BCS_ALIGN_CENTER) $sPos = (integer)((@mWidth - $size ) / 2);\r
- elsif (@mStyle & BCS_ALIGN_RIGHT) $sPos = @mWidth - $size;\r
- else $sPos = 0;\r
-\r
- # Total height of bar code -Bars only-#\r
- if (@mStyle & BCS_DRAW_TEXT) $ysize = @mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2 - GetFontHeight(@mFont);\r
- else $ysize = @mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2;\r
-\r
- # Draw text#\r
- if (@mStyle & BCS_DRAW_TEXT)\r
- if (@mStyle & BCS_STRETCH_TEXT)\r
- for ($i=0;$i<$len;$i++)\r
- @DrawChar(@mFont, $sPos+(2*BCD_C128_BAR_2*$xres + 3*BCD_C128_BAR_1*$xres + BCD_C128_BAR_4*$xres)+($size/$len)*$i,\r
- $ysize + BCD_DEFAULT_MAR_Y1 + BCD_DEFAULT_TEXT_OFFSET, @mValue[$i]);\r
- else# Center#\r
- $text_width = GetFontWidth(@mFont) * @mValue.length;\r
- @DrawText(@mFont, $sPos+(($size-$text_width)/2)+(2*BCD_C128_BAR_2*$xres + 3*BCD_C128_BAR_1*$xres + BCD_C128_BAR_4*$xres),\r
- $ysize + BCD_DEFAULT_MAR_Y1 + BCD_DEFAULT_TEXT_OFFSET, @mValue);\r
- end\r
- end\r
-\r
- $cPos = 0;\r
- $DrawPos = @DrawStart($sPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);\r
- do {\r
- $c = GetCharIndex(@mValue[$cPos].@mValue[$cPos+1]);\r
- $cset = @mCharSet[$c];\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[0], $xres) , $ysize);\r
- $DrawPos += GetBarSize($cset[0], $xres);\r
- $DrawPos += GetBarSize($cset[1], $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[2], $xres) , $ysize);\r
- $DrawPos += GetBarSize($cset[2], $xres);\r
- $DrawPos += GetBarSize($cset[3], $xres);\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[4], $xres) , $ysize);\r
- $DrawPos += GetBarSize($cset[4], $xres);\r
- $DrawPos += GetBarSize($cset[5], $xres);\r
- $cPos += 2;\r
- end while ($cPos<$len);\r
- $DrawPos = @DrawCheckChar($DrawPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);\r
- $DrawPos = @DrawStop($DrawPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);\r
- return true;\r
- end\r
-}\r
-\r
-#============================================================+\r
-# END OF FILE\r
-#============================================================+\r
-\r
+++ /dev/null
-\r
-#============================================================+\r
-# File name : c39object.rb\r
-# Begin : 2002-07-31\r
-# Last Update : 2004-12-29\r
-# Author : Karim Mribti [barcode@mribti.com]\r
-# : Nicola Asuni [info@tecnick.com]\r
-# Version : 0.0.8a 2001-04-01 (original code)\r
-# License : GNU LGPL (Lesser General Public License) 2.1\r
-# http://www.gnu.org/copyleft/lesser.txt\r
-# Source Code : http://www.mribti.com/barcode/\r
-#\r
-# Description : Code 39 Barcode Render Class for PHP using\r
-# the GD graphics library.\r
-# Code 39 is an alphanumeric bar code that can\r
-# encode decimal number, case alphabet and some\r
-# special symbols.\r
-#\r
-# NOTE:\r
-# This version contains changes by Nicola Asuni:\r
-# - porting to Ruby\r
-# - code style and formatting\r
-# - automatic php documentation in PhpDocumentor Style\r
-# (www.phpdoc.org)\r
-# - minor bug fixing\r
-#============================================================+\r
-\r
-#\r
-# Code 39 Barcode Render Class.<br>\r
-# Code 39 is an alphanumeric bar code that can encode decimal number, case alphabet and some special symbols.\r
-# @author Karim Mribti, Nicola Asuni\r
-# @name BarcodeObject\r
-# @package com.tecnick.tcpdf\r
-# @@version 0.0.8a 2001-04-01 (original code)\r
-# @since 2001-03-25\r
-# @license http://www.gnu.org/copyleft/lesser.html LGPL\r
-#\r
-\r
-#\r
-# Code 39 Barcode Render Class.<br>\r
-# Code 39 is an alphanumeric bar code that can encode decimal number, case alphabet and some special symbols.\r
-# @author Karim Mribti, Nicola Asuni\r
-# @name BarcodeObject\r
-# @package com.tecnick.tcpdf\r
-# @@version 0.0.8a 2001-04-01 (original code)\r
-# @since 2001-03-25\r
-# @license http://www.gnu.org/copyleft/lesser.html LGPL\r
-#\r
-class C39Object extends BarcodeObject {\r
- \r
- #\r
- # Class Constructor.\r
- # @param int $Width Image width in pixels.\r
- # @param int $Height Image height in pixels. \r
- # @param int $Style Barcode style.\r
- # @param int $Value value to print on barcode.\r
- #\r
- def __construct($Width, $Height, $Style, $Value)\r
- parent::__construct($Width, $Height, $Style);\r
- @mValue = $Value;\r
- @mChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-.#$/+%";\r
- @mCharSet = array (\r
- # 0 # "000110100",\r
- # 1 # "100100001",\r
- # 2 # "001100001",\r
- # 3 # "101100000",\r
- # 4 # "000110001",\r
- # 5 # "100110000",\r
- # 6 # "001110000",\r
- # 7 # "000100101",\r
- # 8 # "100100100",\r
- # 9 # "001100100",\r
- # A # "100001001",\r
- # B # "001001001",\r
- # C # "101001000",\r
- # D # "000011001",\r
- # E # "100011000",\r
- # F # "001011000",\r
- # G # "000001101",\r
- # H # "100001100",\r
- # I # "001001100",\r
- # J # "000011100",\r
- # K # "100000011",\r
- # L # "001000011",\r
- # M # "101000010",\r
- # N # "000010011",\r
- # O # "100010010",\r
- # P # "001010010",\r
- # Q # "000000111",\r
- # R # "100000110",\r
- # S # "001000110",\r
- # T # "000010110",\r
- # U # "110000001",\r
- # V # "011000001",\r
- # W # "111000000",\r
- # X # "010010001",\r
- # Y # "110010000",\r
- # Z # "011010000",\r
- # - # "010000101",\r
- # . # "110000100",\r
- # SP# "011000100",\r
- /*# # "010010100",\r
- # $ # "010101000",\r
- # / # "010100010",\r
- # + # "010001010",\r
- # % # "000101010"\r
- );\r
- end\r
-\r
- #\r
- # Returns the character index.\r
- # @param char $char character.\r
- # @return int character index or -1 in case of error.\r
- # @access private\r
- #\r
- def GetCharIndex($char)\r
- for ($i=0;$i<44;$i++)\r
- if (@mChars[$i] == $char)\r
- return $i;\r
- end\r
- end\r
- return -1;\r
- end\r
- \r
- #\r
- # Returns barcode size.\r
- # @param int $xres Horizontal resolution.\r
- # @return barcode size.\r
- # @access private\r
- #\r
- def GetSize($xres)\r
- $len = @mValue.length;\r
-\r
- if ($len == 0) {\r
- @mError = "Null value";\r
- return false;\r
- end\r
-\r
- for ($i=0;$i<$len;$i++)\r
- if (GetCharIndex(@mValue[$i]) == -1 || @mValue[$i] == '*')\r
- # The asterisk is only used as a start and stop code#\r
- @mError = "C39 not include the char '".@mValue[$i]."'";\r
- return false;\r
- end\r
- end\r
-\r
- # Start, Stop is 010010100 == '*' #\r
- $StartSize = BCD_C39_NARROW_BAR# $xres# 6 + BCD_C39_WIDE_BAR# $xres# 3;\r
- $StopSize = BCD_C39_NARROW_BAR# $xres# 6 + BCD_C39_WIDE_BAR# $xres# 3;\r
- $CharSize = BCD_C39_NARROW_BAR# $xres# 6 + BCD_C39_WIDE_BAR# $xres# 3; # Same for all chars#\r
-\r
- return $CharSize# $len + $StartSize + $StopSize + # Space between chars# BCD_C39_NARROW_BAR# $xres# ($len-1);\r
- end\r
-\r
- #\r
- # Draws the start code.\r
- # @param int $DrawPos Drawing position.\r
- # @param int $yPos Vertical position.\r
- # @param int $ySize Vertical size.\r
- # @param int $xres Horizontal resolution.\r
- # @return int drawing position.\r
- # @access private\r
- #\r
- def DrawStart($DrawPos, $yPos, $ySize, $xres)\r
- # Start code is '*'#\r
- $narrow = BCD_C39_NARROW_BAR# $xres;\r
- $wide = BCD_C39_WIDE_BAR# $xres;\r
- @DrawSingleBar($DrawPos, $yPos, $narrow , $ySize);\r
- $DrawPos += $narrow;\r
- $DrawPos += $wide;\r
- @DrawSingleBar($DrawPos, $yPos, $narrow , $ySize);\r
- $DrawPos += $narrow;\r
- $DrawPos += $narrow;\r
- @DrawSingleBar($DrawPos, $yPos, $wide , $ySize);\r
- $DrawPos += $wide;\r
- $DrawPos += $narrow;\r
- @DrawSingleBar($DrawPos, $yPos, $wide , $ySize);\r
- $DrawPos += $wide;\r
- $DrawPos += $narrow;\r
- @DrawSingleBar($DrawPos, $yPos, $narrow, $ySize);\r
- $DrawPos += $narrow;\r
- $DrawPos += $narrow; # Space between chars#\r
- return $DrawPos;\r
- end\r
- \r
- #\r
- # Draws the stop code.\r
- # @param int $DrawPos Drawing position.\r
- # @param int $yPos Vertical position.\r
- # @param int $ySize Vertical size.\r
- # @param int $xres Horizontal resolution.\r
- # @return int drawing position.\r
- # @access private\r
- #\r
- def DrawStop($DrawPos, $yPos, $ySize, $xres)\r
- # Stop code is '*'#\r
- $narrow = BCD_C39_NARROW_BAR# $xres;\r
- $wide = BCD_C39_WIDE_BAR# $xres;\r
- @DrawSingleBar($DrawPos, $yPos, $narrow , $ySize);\r
- $DrawPos += $narrow;\r
- $DrawPos += $wide;\r
- @DrawSingleBar($DrawPos, $yPos, $narrow , $ySize);\r
- $DrawPos += $narrow;\r
- $DrawPos += $narrow;\r
- @DrawSingleBar($DrawPos, $yPos, $wide , $ySize);\r
- $DrawPos += $wide;\r
- $DrawPos += $narrow;\r
- @DrawSingleBar($DrawPos, $yPos, $wide , $ySize);\r
- $DrawPos += $wide;\r
- $DrawPos += $narrow;\r
- @DrawSingleBar($DrawPos, $yPos, $narrow, $ySize);\r
- $DrawPos += $narrow;\r
- return $DrawPos;\r
- end\r
- \r
- #\r
- # Draws the barcode object.\r
- # @param int $xres Horizontal resolution.\r
- # @return bool true in case of success.\r
- #\r
- def DrawObject($xres)\r
- $len = @mValue.length;\r
-\r
- $narrow = BCD_C39_NARROW_BAR# $xres;\r
- $wide = BCD_C39_WIDE_BAR# $xres;\r
-\r
- if (($size = GetSize($xres))==0)\r
- return false;\r
- end\r
-\r
- $cPos = 0;\r
- if (@mStyle & BCS_ALIGN_CENTER) $sPos = (integer)((@mWidth - $size ) / 2);\r
- elsif (@mStyle & BCS_ALIGN_RIGHT) $sPos = @mWidth - $size;\r
- else $sPos = 0;\r
-\r
- # Total height of bar code -Bars only-#\r
- if (@mStyle & BCS_DRAW_TEXT) $ysize = @mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2 - GetFontHeight(@mFont);\r
- else $ysize = @mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2;\r
-\r
- # Draw text#\r
- if (@mStyle & BCS_DRAW_TEXT)\r
- if (@mStyle & BCS_STRETCH_TEXT)\r
- for ($i=0;$i<$len;$i++)\r
- @DrawChar(@mFont, $sPos+($narrow*6+$wide*3)+($size/$len)*$i,\r
- $ysize + BCD_DEFAULT_MAR_Y1 + BCD_DEFAULT_TEXT_OFFSET, @mValue[$i]);\r
- else# Center#\r
- $text_width = GetFontWidth(@mFont)# @mValue.length;\r
- @DrawText(@mFont, $sPos+(($size-$text_width)/2)+($narrow*6+$wide*3),\r
- $ysize + BCD_DEFAULT_MAR_Y1 + BCD_DEFAULT_TEXT_OFFSET, @mValue);\r
- end\r
- end\r
-\r
- $DrawPos = @DrawStart($sPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);\r
- do {\r
- $c = GetCharIndex(@mValue[$cPos]);\r
- $cset = @mCharSet[$c];\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, ($cset[0] == '0') ? $narrow : $wide , $ysize);\r
- $DrawPos += ($cset[0] == '0') ? $narrow : $wide;\r
- $DrawPos += ($cset[1] == '0') ? $narrow : $wide;\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, ($cset[2] == '0') ? $narrow : $wide , $ysize);\r
- $DrawPos += ($cset[2] == '0') ? $narrow : $wide;\r
- $DrawPos += ($cset[3] == '0') ? $narrow : $wide;\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, ($cset[4] == '0') ? $narrow : $wide , $ysize);\r
- $DrawPos += ($cset[4] == '0') ? $narrow : $wide;\r
- $DrawPos += ($cset[5] == '0') ? $narrow : $wide;\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, ($cset[6] == '0') ? $narrow : $wide , $ysize);\r
- $DrawPos += ($cset[6] == '0') ? $narrow : $wide;\r
- $DrawPos += ($cset[7] == '0') ? $narrow : $wide;\r
- @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, ($cset[8] == '0') ? $narrow : $wide , $ysize);\r
- $DrawPos += ($cset[8] == '0') ? $narrow : $wide;\r
- $DrawPos += $narrow; # Space between chars#\r
- $cPos += 1;\r
- end while ($cPos<$len);\r
- $DrawPos = @DrawStop($DrawPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);\r
- return true;\r
- end\r
-}\r
-\r
-#============================================================+\r
-# END OF FILE\r
-#============================================================+\r
+++ /dev/null
-\r
-#============================================================+\r
-# File name : i25aobject.rb\r
-# Begin : 2002-07-31\r
-# Last Update : 2004-12-29\r
-# Author : Karim Mribti [barcode@mribti.com]\r
-# : Nicola Asuni [info@tecnick.com]\r
-# Version : 0.0.8a 2001-04-01 (original code)\r
-# License : GNU LGPL (Lesser General Public License) 2.1\r
-# http://www.gnu.org/copyleft/lesser.txt\r
-# Source Code : http://www.mribti.com/barcode/\r
-#\r
-# Description : I25 Barcode Render Class for PHP using\r
-# the GD graphics library.\r
-# Interleaved 2 of 5 is a numeric only bar code\r
-# with a optional check number.\r
-#\r
-# NOTE:\r
-# This version contains changes by Nicola Asuni:\r
-# - porting to Ruby\r
-# - code style and formatting\r
-# - automatic php documentation in PhpDocumentor Style\r
-# (www.phpdoc.org)\r
-# - minor bug fixing\r
-#============================================================+\r
-\r
-#\r
-# I25 Barcode Render Class for PHP using the GD graphics library.<br<\r
-# Interleaved 2 of 5 is a numeric only bar code with a optional check number.\r
-# @author Karim Mribti, Nicola Asuni\r
-# @name BarcodeObject\r
-# @package com.tecnick.tcpdf\r
-# @@version 0.0.8a 2001-04-01 (original code)\r
-# @since 2001-03-25\r
-# @license http://www.gnu.org/copyleft/lesser.html LGPL\r
-#\r
-\r
-#\r
-# I25 Barcode Render Class for PHP using the GD graphics library.<br<\r
-# Interleaved 2 of 5 is a numeric only bar code with a optional check number.\r
-# @author Karim Mribti, Nicola Asuni\r
-# @name BarcodeObject\r
-# @package com.tecnick.tcpdf\r
-# @@version 0.0.8a 2001-04-01 (original code)\r
-# @since 2001-03-25\r
-# @license http://www.gnu.org/copyleft/lesser.html LGPL\r
-#\r
-class I25Object extends BarcodeObject {\r
- \r
- #\r
- # Class Constructor.\r
- # @param int $Width Image width in pixels.\r
- # @param int $Height Image height in pixels. \r
- # @param int $Style Barcode style.\r
- # @param int $Value value to print on barcode.\r
- #\r
- def __construct($Width, $Height, $Style, $Value)\r
- parent::__construct($Width, $Height, $Style);\r
- @mValue = $Value;\r
- @mCharSet = array (\r
- # 0# "00110",\r
- # 1# "10001",\r
- # 2# "01001",\r
- # 3# "11000",\r
- # 4# "00101",\r
- # 5# "10100",\r
- # 6# "01100",\r
- # 7# "00011",\r
- # 8# "10010",\r
- # 9# "01010"\r
- );\r
- end\r
- \r
- #\r
- # Returns barcode size.\r
- # @param int $xres Horizontal resolution.\r
- # @return barcode size.\r
- # @access private\r
- #\r
- def GetSize($xres)\r
- $len = @mValue.length;\r
-\r
- if ($len == 0) {\r
- @mError = "Null value";\r
- return false;\r
- end\r
-\r
- for ($i=0;$i<$len;$i++)\r
- if ((@mValue[$i][0] < 48) || (@mValue[$i][0] > 57))\r
- @mError = "I25 is numeric only";\r
- return false;\r
- end\r
- end\r
-\r
- if (($len%2) != 0)\r
- @mError = "The length of barcode value must be even";\r
- return false;\r
- end\r
- $StartSize = BCD_I25_NARROW_BAR# 4 # $xres;\r
- $StopSize = BCD_I25_WIDE_BAR# $xres + 2# BCD_I25_NARROW_BAR# $xres;\r
- $cPos = 0;\r
- $sPos = 0;\r
- do {\r
- $c1 = @mValue[$cPos];\r
- $c2 = @mValue[$cPos+1];\r
- $cset1 = @mCharSet[$c1];\r
- $cset2 = @mCharSet[$c2];\r
-\r
- for ($i=0;$i<5;$i++)\r
- $type1 = ($cset1[$i]==0) ? (BCD_I25_NARROW_BAR # $xres) : (BCD_I25_WIDE_BAR# $xres);\r
- $type2 = ($cset2[$i]==0) ? (BCD_I25_NARROW_BAR # $xres) : (BCD_I25_WIDE_BAR# $xres);\r
- $sPos += ($type1 + $type2);\r
- end\r
- $cPos+=2;\r
- end while ($cPos<$len);\r
-\r
- return $sPos + $StartSize + $StopSize;\r
- end\r
-\r
- #\r
- # Draws the start code.\r
- # @param int $DrawPos Drawing position.\r
- # @param int $yPos Vertical position.\r
- # @param int $ySize Vertical size.\r
- # @param int $xres Horizontal resolution.\r
- # @return int drawing position.\r
- # @access private\r
- #\r
- def DrawStart($DrawPos, $yPos, $ySize, $xres)\r
- # Start code is "0000"#\r
- @DrawSingleBar($DrawPos, $yPos, BCD_I25_NARROW_BAR # $xres , $ySize);\r
- $DrawPos += BCD_I25_NARROW_BAR # $xres;\r
- $DrawPos += BCD_I25_NARROW_BAR # $xres;\r
- @DrawSingleBar($DrawPos, $yPos, BCD_I25_NARROW_BAR # $xres , $ySize);\r
- $DrawPos += BCD_I25_NARROW_BAR # $xres;\r
- $DrawPos += BCD_I25_NARROW_BAR # $xres;\r
- return $DrawPos;\r
- end\r
- \r
- #\r
- # Draws the stop code.\r
- # @param int $DrawPos Drawing position.\r
- # @param int $yPos Vertical position.\r
- # @param int $ySize Vertical size.\r
- # @param int $xres Horizontal resolution.\r
- # @return int drawing position.\r
- # @access private\r
- #\r
- def DrawStop($DrawPos, $yPos, $ySize, $xres)\r
- # Stop code is "100"#\r
- @DrawSingleBar($DrawPos, $yPos, BCD_I25_WIDE_BAR# $xres , $ySize);\r
- $DrawPos += BCD_I25_WIDE_BAR # $xres;\r
- $DrawPos += BCD_I25_NARROW_BAR # $xres;\r
- @DrawSingleBar($DrawPos, $yPos, BCD_I25_NARROW_BAR # $xres , $ySize);\r
- $DrawPos += BCD_I25_NARROW_BAR # $xres;\r
- return $DrawPos;\r
- end\r
-\r
- #\r
- # Draws the barcode object.\r
- # @param int $xres Horizontal resolution.\r
- # @return bool true in case of success.\r
- #\r
- def DrawObject($xres)\r
- $len = @mValue.length;\r
-\r
- if (($size = GetSize($xres))==0)\r
- return false;\r
- end\r
-\r
- $cPos = 0;\r
-\r
- if (@mStyle & BCS_DRAW_TEXT) $ysize = @mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2 - GetFontHeight(@mFont);\r
- else $ysize = @mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2;\r
-\r
- if (@mStyle & BCS_ALIGN_CENTER) $sPos = (integer)((@mWidth - $size ) / 2);\r
- elsif (@mStyle & BCS_ALIGN_RIGHT) $sPos = @mWidth - $size;\r
- else $sPos = 0;\r
-\r
- if (@mStyle & BCS_DRAW_TEXT)\r
- if (@mStyle & BCS_STRETCH_TEXT)\r
- # Stretch#\r
- for ($i=0;$i<$len;$i++)\r
- @DrawChar(@mFont, $sPos+BCD_I25_NARROW_BAR*4*$xres+($size/$len)*$i,\r
- $ysize + BCD_DEFAULT_MAR_Y1 + BCD_DEFAULT_TEXT_OFFSET , @mValue[$i]);\r
- end\r
- endelse# Center#\r
- $text_width = GetFontWidth(@mFont) * @mValue.length;\r
- @DrawText(@mFont, $sPos+(($size-$text_width)/2)+(BCD_I25_NARROW_BAR*4*$xres),\r
- $ysize + BCD_DEFAULT_MAR_Y1 + BCD_DEFAULT_TEXT_OFFSET, @mValue);\r
- end\r
- end\r
-\r
- $sPos = @DrawStart($sPos, BCD_DEFAULT_MAR_Y1, $ysize, $xres);\r
- do {\r
- $c1 = @mValue[$cPos];\r
- $c2 = @mValue[$cPos+1];\r
- $cset1 = @mCharSet[$c1];\r
- $cset2 = @mCharSet[$c2];\r
-\r
- for ($i=0;$i<5;$i++)\r
- $type1 = ($cset1[$i]==0) ? (BCD_I25_NARROW_BAR# $xres) : (BCD_I25_WIDE_BAR# $xres);\r
- $type2 = ($cset2[$i]==0) ? (BCD_I25_NARROW_BAR# $xres) : (BCD_I25_WIDE_BAR# $xres);\r
- @DrawSingleBar($sPos, BCD_DEFAULT_MAR_Y1, $type1 , $ysize);\r
- $sPos += ($type1 + $type2);\r
- end\r
- $cPos+=2;\r
- end while ($cPos<$len);\r
- $sPos = @DrawStop($sPos, BCD_DEFAULT_MAR_Y1, $ysize, $xres);\r
- return true;\r
- end\r
-}\r
-\r
-#============================================================+\r
-# END OF FILE\r
-#============================================================+\r
+++ /dev/null
-\r
-#============================================================+\r
-# File name : image.rb\r
-# Begin : 2002-07-31\r
-# Last Update : 2005-01-08\r
-# Author : Karim Mribti [barcode@mribti.com]\r
-# : Nicola Asuni [info@tecnick.com]\r
-# Version : 0.0.8a 2001-04-01 (original code)\r
-# License : GNU LGPL (Lesser General Public License) 2.1\r
-# http://www.gnu.org/copyleft/lesser.txt\r
-# Source Code : http://www.mribti.com/barcode/\r
-#\r
-# Description : Barcode Image Rendering.\r
-#\r
-# NOTE:\r
-# This version contains changes by Nicola Asuni:\r
-# - porting to Ruby\r
-# - code style and formatting\r
-# - automatic php documentation in PhpDocumentor Style\r
-# (www.phpdoc.org)\r
-# - minor bug fixing\r
-#============================================================+\r
-\r
-#\r
-# Barcode Image Rendering.\r
-# @author Karim Mribti, Nicola Asuni\r
-# @name BarcodeObject\r
-# @package com.tecnick.tcpdf\r
-# @@version 0.0.8a 2001-04-01 (original code)\r
-# @since 2001-03-25\r
-# @license http://www.gnu.org/copyleft/lesser.html LGPL\r
-#\r
-\r
-#\r
-# \r
-#\r
-\r
-require("../../shared/barcode/barcode.rb");\r
-require("../../shared/barcode/i25object.rb");\r
-require("../../shared/barcode/c39object.rb");\r
-require("../../shared/barcode/c128aobject.rb");\r
-require("../../shared/barcode/c128bobject.rb");\r
-require("../../shared/barcode/c128cobject.rb");\r
-\r
-if (!$_REQUEST['style'].nil?) $_REQUEST['style'] = BCD_DEFAULT_STYLE;\r
-if (!$_REQUEST['width'].nil?) $_REQUEST['width'] = BCD_DEFAULT_WIDTH;\r
-if (!$_REQUEST['height'].nil?) $_REQUEST['height'] = BCD_DEFAULT_HEIGHT;\r
-if (!$_REQUEST['xres'].nil?) $_REQUEST['xres'] = BCD_DEFAULT_XRES;\r
-if (!$_REQUEST['font'].nil?) $_REQUEST['font'] = BCD_DEFAULT_FONT;\r
-if (!$_REQUEST['type'].nil?) $_REQUEST['type'] = "C39";\r
-if (!$_REQUEST['code'].nil?) $_REQUEST['code'] = "";\r
-\r
-switch ($_REQUEST['type'].upcase)\r
- case "I25"\r
- $obj = new I25Object($_REQUEST['width'], $_REQUEST['height'], $_REQUEST['style'], $_REQUEST['code']);\r
- break;\r
- end\r
- case "C128A"\r
- $obj = new C128AObject($_REQUEST['width'], $_REQUEST['height'], $_REQUEST['style'], $_REQUEST['code']);\r
- break;\r
- end\r
- case "C128B"\r
- $obj = new C128BObject($_REQUEST['width'], $_REQUEST['height'], $_REQUEST['style'], $_REQUEST['code']);\r
- break;\r
- end\r
- case "C128C"\r
- $obj = new C128CObject($_REQUEST['width'], $_REQUEST['height'], $_REQUEST['style'], $_REQUEST['code']);\r
- break;\r
- end\r
- case "C39":\r
- default\r
- $obj = new C39Object($_REQUEST['width'], $_REQUEST['height'], $_REQUEST['style'], $_REQUEST['code']);\r
- break;\r
- end\r
-}\r
-\r
-if ($obj)\r
- $obj->SetFont($_REQUEST['font']); \r
- $obj->DrawObject($_REQUEST['xres']);\r
- $obj->FlushObject();\r
- $obj->DestroyObject();\r
- unset($obj); # clean#\r
-}\r
-\r
-#============================================================+\r
-# END OF FILE \r
-#============================================================+\r
+++ /dev/null
- GNU LESSER GENERAL PUBLIC LICENSE\r
- Version 2.1, February 1999\r
-\r
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.\r
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
- Everyone is permitted to copy and distribute verbatim copies\r
- of this license document, but changing it is not allowed.\r
-\r
-[This is the first released version of the Lesser GPL. It also counts\r
- as the successor of the GNU Library Public License, version 2, hence\r
- the version number 2.1.]\r
-\r
- Preamble\r
-\r
- The licenses for most software are designed to take away your\r
-freedom to share and change it. By contrast, the GNU General Public\r
-Licenses are intended to guarantee your freedom to share and change\r
-free software--to make sure the software is free for all its users.\r
-\r
- This license, the Lesser General Public License, applies to some\r
-specially designated software packages--typically libraries--of the\r
-Free Software Foundation and other authors who decide to use it. You\r
-can use it too, but we suggest you first think carefully about whether\r
-this license or the ordinary General Public License is the better\r
-strategy to use in any particular case, based on the explanations below.\r
-\r
- When we speak of free software, we are referring to freedom of use,\r
-not price. Our General Public Licenses are designed to make sure that\r
-you have the freedom to distribute copies of free software (and charge\r
-for this service if you wish); that you receive source code or can get\r
-it if you want it; that you can change the software and use pieces of\r
-it in new free programs; and that you are informed that you can do\r
-these things.\r
-\r
- To protect your rights, we need to make restrictions that forbid\r
-distributors to deny you these rights or to ask you to surrender these\r
-rights. These restrictions translate to certain responsibilities for\r
-you if you distribute copies of the library or if you modify it.\r
-\r
- For example, if you distribute copies of the library, whether gratis\r
-or for a fee, you must give the recipients all the rights that we gave\r
-you. You must make sure that they, too, receive or can get the source\r
-code. If you link other code with the library, you must provide\r
-complete object files to the recipients, so that they can relink them\r
-with the library after making changes to the library and recompiling\r
-it. And you must show them these terms so they know their rights.\r
-\r
- We protect your rights with a two-step method: (1) we copyright the\r
-library, and (2) we offer you this license, which gives you legal\r
-permission to copy, distribute and/or modify the library.\r
-\r
- To protect each distributor, we want to make it very clear that\r
-there is no warranty for the free library. Also, if the library is\r
-modified by someone else and passed on, the recipients should know\r
-that what they have is not the original version, so that the original\r
-author's reputation will not be affected by problems that might be\r
-introduced by others.\r
-\r
- Finally, software patents pose a constant threat to the existence of\r
-any free program. We wish to make sure that a company cannot\r
-effectively restrict the users of a free program by obtaining a\r
-restrictive license from a patent holder. Therefore, we insist that\r
-any patent license obtained for a version of the library must be\r
-consistent with the full freedom of use specified in this license.\r
-\r
- Most GNU software, including some libraries, is covered by the\r
-ordinary GNU General Public License. This license, the GNU Lesser\r
-General Public License, applies to certain designated libraries, and\r
-is quite different from the ordinary General Public License. We use\r
-this license for certain libraries in order to permit linking those\r
-libraries into non-free programs.\r
-\r
- When a program is linked with a library, whether statically or using\r
-a shared library, the combination of the two is legally speaking a\r
-combined work, a derivative of the original library. The ordinary\r
-General Public License therefore permits such linking only if the\r
-entire combination fits its criteria of freedom. The Lesser General\r
-Public License permits more lax criteria for linking other code with\r
-the library.\r
-\r
- We call this license the "Lesser" General Public License because it\r
-does Less to protect the user's freedom than the ordinary General\r
-Public License. It also provides other free software developers Less\r
-of an advantage over competing non-free programs. These disadvantages\r
-are the reason we use the ordinary General Public License for many\r
-libraries. However, the Lesser license provides advantages in certain\r
-special circumstances.\r
-\r
- For example, on rare occasions, there may be a special need to\r
-encourage the widest possible use of a certain library, so that it becomes\r
-a de-facto standard. To achieve this, non-free programs must be\r
-allowed to use the library. A more frequent case is that a free\r
-library does the same job as widely used non-free libraries. In this\r
-case, there is little to gain by limiting the free library to free\r
-software only, so we use the Lesser General Public License.\r
-\r
- In other cases, permission to use a particular library in non-free\r
-programs enables a greater number of people to use a large body of\r
-free software. For example, permission to use the GNU C Library in\r
-non-free programs enables many more people to use the whole GNU\r
-operating system, as well as its variant, the GNU/Linux operating\r
-system.\r
-\r
- Although the Lesser General Public License is Less protective of the\r
-users' freedom, it does ensure that the user of a program that is\r
-linked with the Library has the freedom and the wherewithal to run\r
-that program using a modified version of the Library.\r
-\r
- The precise terms and conditions for copying, distribution and\r
-modification follow. Pay close attention to the difference between a\r
-"work based on the library" and a "work that uses the library". The\r
-former contains code derived from the library, whereas the latter must\r
-be combined with the library in order to run.\r
-\r
- GNU LESSER GENERAL PUBLIC LICENSE\r
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\r
-\r
- 0. This License Agreement applies to any software library or other\r
-program which contains a notice placed by the copyright holder or\r
-other authorized party saying it may be distributed under the terms of\r
-this Lesser General Public License (also called "this License").\r
-Each licensee is addressed as "you".\r
-\r
- A "library" means a collection of software functions and/or data\r
-prepared so as to be conveniently linked with application programs\r
-(which use some of those functions and data) to form executables.\r
-\r
- The "Library", below, refers to any such software library or work\r
-which has been distributed under these terms. A "work based on the\r
-Library" means either the Library or any derivative work under\r
-copyright law: that is to say, a work containing the Library or a\r
-portion of it, either verbatim or with modifications and/or translated\r
-straightforwardly into another language. (Hereinafter, translation is\r
-included without limitation in the term "modification".)\r
-\r
- "Source code" for a work means the preferred form of the work for\r
-making modifications to it. For a library, complete source code means\r
-all the source code for all modules it contains, plus any associated\r
-interface definition files, plus the scripts used to control compilation\r
-and installation of the library.\r
-\r
- Activities other than copying, distribution and modification are not\r
-covered by this License; they are outside its scope. The act of\r
-running a program using the Library is not restricted, and output from\r
-such a program is covered only if its contents constitute a work based\r
-on the Library (independent of the use of the Library in a tool for\r
-writing it). Whether that is true depends on what the Library does\r
-and what the program that uses the Library does.\r
- \r
- 1. You may copy and distribute verbatim copies of the Library's\r
-complete source code as you receive it, in any medium, provided that\r
-you conspicuously and appropriately publish on each copy an\r
-appropriate copyright notice and disclaimer of warranty; keep intact\r
-all the notices that refer to this License and to the absence of any\r
-warranty; and distribute a copy of this License along with the\r
-Library.\r
-\r
- You may charge a fee for the physical act of transferring a copy,\r
-and you may at your option offer warranty protection in exchange for a\r
-fee.\r
-\r
- 2. You may modify your copy or copies of the Library or any portion\r
-of it, thus forming a work based on the Library, and copy and\r
-distribute such modifications or work under the terms of Section 1\r
-above, provided that you also meet all of these conditions:\r
-\r
- a) The modified work must itself be a software library.\r
-\r
- b) You must cause the files modified to carry prominent notices\r
- stating that you changed the files and the date of any change.\r
-\r
- c) You must cause the whole of the work to be licensed at no\r
- charge to all third parties under the terms of this License.\r
-\r
- d) If a facility in the modified Library refers to a function or a\r
- table of data to be supplied by an application program that uses\r
- the facility, other than as an argument passed when the facility\r
- is invoked, then you must make a good faith effort to ensure that,\r
- in the event an application does not supply such function or\r
- table, the facility still operates, and performs whatever part of\r
- its purpose remains meaningful.\r
-\r
- (For example, a function in a library to compute square roots has\r
- a purpose that is entirely well-defined independent of the\r
- application. Therefore, Subsection 2d requires that any\r
- application-supplied function or table used by this function must\r
- be optional: if the application does not supply it, the square\r
- root function must still compute square roots.)\r
-\r
-These requirements apply to the modified work as a whole. If\r
-identifiable sections of that work are not derived from the Library,\r
-and can be reasonably considered independent and separate works in\r
-themselves, then this License, and its terms, do not apply to those\r
-sections when you distribute them as separate works. But when you\r
-distribute the same sections as part of a whole which is a work based\r
-on the Library, the distribution of the whole must be on the terms of\r
-this License, whose permissions for other licensees extend to the\r
-entire whole, and thus to each and every part regardless of who wrote\r
-it.\r
-\r
-Thus, it is not the intent of this section to claim rights or contest\r
-your rights to work written entirely by you; rather, the intent is to\r
-exercise the right to control the distribution of derivative or\r
-collective works based on the Library.\r
-\r
-In addition, mere aggregation of another work not based on the Library\r
-with the Library (or with a work based on the Library) on a volume of\r
-a storage or distribution medium does not bring the other work under\r
-the scope of this License.\r
-\r
- 3. You may opt to apply the terms of the ordinary GNU General Public\r
-License instead of this License to a given copy of the Library. To do\r
-this, you must alter all the notices that refer to this License, so\r
-that they refer to the ordinary GNU General Public License, version 2,\r
-instead of to this License. (If a newer version than version 2 of the\r
-ordinary GNU General Public License has appeared, then you can specify\r
-that version instead if you wish.) Do not make any other change in\r
-these notices.\r
-\r
- Once this change is made in a given copy, it is irreversible for\r
-that copy, so the ordinary GNU General Public License applies to all\r
-subsequent copies and derivative works made from that copy.\r
-\r
- This option is useful when you wish to copy part of the code of\r
-the Library into a program that is not a library.\r
-\r
- 4. You may copy and distribute the Library (or a portion or\r
-derivative of it, under Section 2) in object code or executable form\r
-under the terms of Sections 1 and 2 above provided that you accompany\r
-it with the complete corresponding machine-readable source code, which\r
-must be distributed under the terms of Sections 1 and 2 above on a\r
-medium customarily used for software interchange.\r
-\r
- If distribution of object code is made by offering access to copy\r
-from a designated place, then offering equivalent access to copy the\r
-source code from the same place satisfies the requirement to\r
-distribute the source code, even though third parties are not\r
-compelled to copy the source along with the object code.\r
-\r
- 5. A program that contains no derivative of any portion of the\r
-Library, but is designed to work with the Library by being compiled or\r
-linked with it, is called a "work that uses the Library". Such a\r
-work, in isolation, is not a derivative work of the Library, and\r
-therefore falls outside the scope of this License.\r
-\r
- However, linking a "work that uses the Library" with the Library\r
-creates an executable that is a derivative of the Library (because it\r
-contains portions of the Library), rather than a "work that uses the\r
-library". The executable is therefore covered by this License.\r
-Section 6 states terms for distribution of such executables.\r
-\r
- When a "work that uses the Library" uses material from a header file\r
-that is part of the Library, the object code for the work may be a\r
-derivative work of the Library even though the source code is not.\r
-Whether this is true is especially significant if the work can be\r
-linked without the Library, or if the work is itself a library. The\r
-threshold for this to be true is not precisely defined by law.\r
-\r
- If such an object file uses only numerical parameters, data\r
-structure layouts and accessors, and small macros and small inline\r
-functions (ten lines or less in length), then the use of the object\r
-file is unrestricted, regardless of whether it is legally a derivative\r
-work. (Executables containing this object code plus portions of the\r
-Library will still fall under Section 6.)\r
-\r
- Otherwise, if the work is a derivative of the Library, you may\r
-distribute the object code for the work under the terms of Section 6.\r
-Any executables containing that work also fall under Section 6,\r
-whether or not they are linked directly with the Library itself.\r
-\r
- 6. As an exception to the Sections above, you may also combine or\r
-link a "work that uses the Library" with the Library to produce a\r
-work containing portions of the Library, and distribute that work\r
-under terms of your choice, provided that the terms permit\r
-modification of the work for the customer's own use and reverse\r
-engineering for debugging such modifications.\r
-\r
- You must give prominent notice with each copy of the work that the\r
-Library is used in it and that the Library and its use are covered by\r
-this License. You must supply a copy of this License. If the work\r
-during execution displays copyright notices, you must include the\r
-copyright notice for the Library among them, as well as a reference\r
-directing the user to the copy of this License. Also, you must do one\r
-of these things:\r
-\r
- a) Accompany the work with the complete corresponding\r
- machine-readable source code for the Library including whatever\r
- changes were used in the work (which must be distributed under\r
- Sections 1 and 2 above); and, if the work is an executable linked\r
- with the Library, with the complete machine-readable "work that\r
- uses the Library", as object code and/or source code, so that the\r
- user can modify the Library and then relink to produce a modified\r
- executable containing the modified Library. (It is understood\r
- that the user who changes the contents of definitions files in the\r
- Library will not necessarily be able to recompile the application\r
- to use the modified definitions.)\r
-\r
- b) Use a suitable shared library mechanism for linking with the\r
- Library. A suitable mechanism is one that (1) uses at run time a\r
- copy of the library already present on the user's computer system,\r
- rather than copying library functions into the executable, and (2)\r
- will operate properly with a modified version of the library, if\r
- the user installs one, as long as the modified version is\r
- interface-compatible with the version that the work was made with.\r
-\r
- c) Accompany the work with a written offer, valid for at\r
- least three years, to give the same user the materials\r
- specified in Subsection 6a, above, for a charge no more\r
- than the cost of performing this distribution.\r
-\r
- d) If distribution of the work is made by offering access to copy\r
- from a designated place, offer equivalent access to copy the above\r
- specified materials from the same place.\r
-\r
- e) Verify that the user has already received a copy of these\r
- materials or that you have already sent this user a copy.\r
-\r
- For an executable, the required form of the "work that uses the\r
-Library" must include any data and utility programs needed for\r
-reproducing the executable from it. However, as a special exception,\r
-the materials to be distributed need not include anything that is\r
-normally distributed (in either source or binary form) with the major\r
-components (compiler, kernel, and so on) of the operating system on\r
-which the executable runs, unless that component itself accompanies\r
-the executable.\r
-\r
- It may happen that this requirement contradicts the license\r
-restrictions of other proprietary libraries that do not normally\r
-accompany the operating system. Such a contradiction means you cannot\r
-use both them and the Library together in an executable that you\r
-distribute.\r
-\r
- 7. You may place library facilities that are a work based on the\r
-Library side-by-side in a single library together with other library\r
-facilities not covered by this License, and distribute such a combined\r
-library, provided that the separate distribution of the work based on\r
-the Library and of the other library facilities is otherwise\r
-permitted, and provided that you do these two things:\r
-\r
- a) Accompany the combined library with a copy of the same work\r
- based on the Library, uncombined with any other library\r
- facilities. This must be distributed under the terms of the\r
- Sections above.\r
-\r
- b) Give prominent notice with the combined library of the fact\r
- that part of it is a work based on the Library, and explaining\r
- where to find the accompanying uncombined form of the same work.\r
-\r
- 8. You may not copy, modify, sublicense, link with, or distribute\r
-the Library except as expressly provided under this License. Any\r
-attempt otherwise to copy, modify, sublicense, link with, or\r
-distribute the Library is void, and will automatically terminate your\r
-rights under this License. However, parties who have received copies,\r
-or rights, from you under this License will not have their licenses\r
-terminated so long as such parties remain in full compliance.\r
-\r
- 9. You are not required to accept this License, since you have not\r
-signed it. However, nothing else grants you permission to modify or\r
-distribute the Library or its derivative works. These actions are\r
-prohibited by law if you do not accept this License. Therefore, by\r
-modifying or distributing the Library (or any work based on the\r
-Library), you indicate your acceptance of this License to do so, and\r
-all its terms and conditions for copying, distributing or modifying\r
-the Library or works based on it.\r
-\r
- 10. Each time you redistribute the Library (or any work based on the\r
-Library), the recipient automatically receives a license from the\r
-original licensor to copy, distribute, link with or modify the Library\r
-subject to these terms and conditions. You may not impose any further\r
-restrictions on the recipients' exercise of the rights granted herein.\r
-You are not responsible for enforcing compliance by third parties with\r
-this License.\r
-\r
- 11. If, as a consequence of a court judgment or allegation of patent\r
-infringement or for any other reason (not limited to patent issues),\r
-conditions are imposed on you (whether by court order, agreement or\r
-otherwise) that contradict the conditions of this License, they do not\r
-excuse you from the conditions of this License. If you cannot\r
-distribute so as to satisfy simultaneously your obligations under this\r
-License and any other pertinent obligations, then as a consequence you\r
-may not distribute the Library at all. For example, if a patent\r
-license would not permit royalty-free redistribution of the Library by\r
-all those who receive copies directly or indirectly through you, then\r
-the only way you could satisfy both it and this License would be to\r
-refrain entirely from distribution of the Library.\r
-\r
-If any portion of this section is held invalid or unenforceable under any\r
-particular circumstance, the balance of the section is intended to apply,\r
-and the section as a whole is intended to apply in other circumstances.\r
-\r
-It is not the purpose of this section to induce you to infringe any\r
-patents or other property right claims or to contest validity of any\r
-such claims; this section has the sole purpose of protecting the\r
-integrity of the free software distribution system which is\r
-implemented by public license practices. Many people have made\r
-generous contributions to the wide range of software distributed\r
-through that system in reliance on consistent application of that\r
-system; it is up to the author/donor to decide if he or she is willing\r
-to distribute software through any other system and a licensee cannot\r
-impose that choice.\r
-\r
-This section is intended to make thoroughly clear what is believed to\r
-be a consequence of the rest of this License.\r
-\r
- 12. If the distribution and/or use of the Library is restricted in\r
-certain countries either by patents or by copyrighted interfaces, the\r
-original copyright holder who places the Library under this License may add\r
-an explicit geographical distribution limitation excluding those countries,\r
-so that distribution is permitted only in or among countries not thus\r
-excluded. In such case, this License incorporates the limitation as if\r
-written in the body of this License.\r
-\r
- 13. The Free Software Foundation may publish revised and/or new\r
-versions of the Lesser General Public License from time to time.\r
-Such new versions will be similar in spirit to the present version,\r
-but may differ in detail to address new problems or concerns.\r
-\r
-Each version is given a distinguishing version number. If the Library\r
-specifies a version number of this License which applies to it and\r
-"any later version", you have the option of following the terms and\r
-conditions either of that version or of any later version published by\r
-the Free Software Foundation. If the Library does not specify a\r
-license version number, you may choose any version ever published by\r
-the Free Software Foundation.\r
-\r
- 14. If you wish to incorporate parts of the Library into other free\r
-programs whose distribution conditions are incompatible with these,\r
-write to the author to ask for permission. For software which is\r
-copyrighted by the Free Software Foundation, write to the Free\r
-Software Foundation; we sometimes make exceptions for this. Our\r
-decision will be guided by the two goals of preserving the free status\r
-of all derivatives of our free software and of promoting the sharing\r
-and reuse of software generally.\r
-\r
- NO WARRANTY\r
-\r
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\r
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\r
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\r
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY\r
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\r
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\r
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\r
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\r
-\r
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\r
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\r
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\r
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\r
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\r
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\r
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\r
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\r
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
-DAMAGES.\r
-\r
- END OF TERMS AND CONDITIONS\r
-\r
- How to Apply These Terms to Your New Libraries\r
-\r
- If you develop a new library, and you want it to be of the greatest\r
-possible use to the public, we recommend making it free software that\r
-everyone can redistribute and change. You can do so by permitting\r
-redistribution under these terms (or, alternatively, under the terms of the\r
-ordinary General Public License).\r
-\r
- To apply these terms, attach the following notices to the library. It is\r
-safest to attach them to the start of each source file to most effectively\r
-convey the exclusion of warranty; and each file should have at least the\r
-"copyright" line and a pointer to where the full notice is found.\r
-\r
- <one line to give the library's name and a brief idea of what it does.>\r
- Copyright (C) <year> <name of author>\r
-\r
- This library is free software; you can redistribute it and/or\r
- modify it under the terms of the GNU Lesser General Public\r
- License as published by the Free Software Foundation; either\r
- version 2.1 of the License, or (at your option) any later version.\r
-\r
- This library is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
- Lesser General Public License for more details.\r
-\r
- You should have received a copy of the GNU Lesser General Public\r
- License along with this library; if not, write to the Free Software\r
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
-\r
-Also add information on how to contact you by electronic and paper mail.\r
-\r
-You should also get your employer (if you work as a programmer) or your\r
-school, if any, to sign a "copyright disclaimer" for the library, if\r
-necessary. Here is a sample; alter the names:\r
-\r
- Yoyodyne, Inc., hereby disclaims all copyright interest in the\r
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.\r
-\r
- <signature of Ty Coon>, 1 April 1990\r
- Ty Coon, President of Vice\r
-\r
-That's all there is to it!\r
-\r
-\r