summaryrefslogtreecommitdiffstats
path: root/vendor/plugins/rfpdf/lib/barcode/c128aobject.rb
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/plugins/rfpdf/lib/barcode/c128aobject.rb')
-rwxr-xr-xvendor/plugins/rfpdf/lib/barcode/c128aobject.rb393
1 files changed, 393 insertions, 0 deletions
diff --git a/vendor/plugins/rfpdf/lib/barcode/c128aobject.rb b/vendor/plugins/rfpdf/lib/barcode/c128aobject.rb
new file mode 100755
index 000000000..c9543759c
--- /dev/null
+++ b/vendor/plugins/rfpdf/lib/barcode/c128aobject.rb
@@ -0,0 +1,393 @@
+
+#============================================================+
+# File name : c128aobject.rb
+# Begin : 2002-07-31
+# Last Update : 2004-12-29
+# Author : Karim Mribti [barcode@mribti.com]
+# Version : 0.0.8a 2001-04-01 (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 : Code 128-A Barcode Render Class for PHP using
+# the GD graphics library.
+# Code 128-A is a continuous, multilevel and
+# include all upper case alphanumeric characters
+# and ASCII control characters.
+#
+# 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
+#============================================================+
+
+#
+# Code 128-A Barcode Render Class for PHP using the GD graphics library.<br>
+# Code 128-A is a continuous, multilevel and include all upper case alphanumeric characters and ASCII control characters.
+# @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
+#
+
+#
+# Code 128-A Barcode Render Class for PHP using the GD graphics library.<br>
+# Code 128-A is a continuous, multilevel and include all upper case alphanumeric characters and ASCII control characters.
+# @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 C128AObject extends BarcodeObject {
+
+ #
+ # Class Constructor.
+ # @param int $Width Image width in pixels.
+ # @param int $Height Image height in pixels.
+ # @param int $Style Barcode style.
+ # @param int $Value value to print on barcode.
+ #
+ def __construct($Width, $Height, $Style, $Value)
+ parent::__construct($Width, $Height, $Style);
+ @mValue = $Value;
+ @mChars = " !\"#$%&'()*+�-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_";
+ @mCharSet = array (
+ "212222", # 00#
+ "222122", # 01#
+ "222221", # 02#
+ "121223", # 03#
+ "121322", # 04#
+ "131222", # 05#
+ "122213", # 06#
+ "122312", # 07#
+ "132212", # 08#
+ "221213", # 09#
+ "221312", # 10#
+ "231212", # 11#
+ "112232", # 12#
+ "122132", # 13#
+ "122231", # 14#
+ "113222", # 15#
+ "123122", # 16#
+ "123221", # 17#
+ "223211", # 18#
+ "221132", # 19#
+ "221231", # 20#
+ "213212", # 21#
+ "223112", # 22#
+ "312131", # 23#
+ "311222", # 24#
+ "321122", # 25#
+ "321221", # 26#
+ "312212", # 27#
+ "322112", # 28#
+ "322211", # 29#
+ "212123", # 30#
+ "212321", # 31#
+ "232121", # 32#
+ "111323", # 33#
+ "131123", # 34#
+ "131321", # 35#
+ "112313", # 36#
+ "132113", # 37#
+ "132311", # 38#
+ "211313", # 39#
+ "231113", # 40#
+ "231311", # 41#
+ "112133", # 42#
+ "112331", # 43#
+ "132131", # 44#
+ "113123", # 45#
+ "113321", # 46#
+ "133121", # 47#
+ "313121", # 48#
+ "211331", # 49#
+ "231131", # 50#
+ "213113", # 51#
+ "213311", # 52#
+ "213131", # 53#
+ "311123", # 54#
+ "311321", # 55#
+ "331121", # 56#
+ "312113", # 57#
+ "312311", # 58#
+ "332111", # 59#
+ "314111", # 60#
+ "221411", # 61#
+ "431111", # 62#
+ "111224", # 63#
+ "111422", # 64#
+ "121124", # 65#
+ "121421", # 66#
+ "141122", # 67#
+ "141221", # 68#
+ "112214", # 69#
+ "112412", # 70#
+ "122114", # 71#
+ "122411", # 72#
+ "142112", # 73#
+ "142211", # 74#
+ "241211", # 75#
+ "221114", # 76#
+ "413111", # 77#
+ "241112", # 78#
+ "134111", # 79#
+ "111242", # 80#
+ "121142", # 81#
+ "121241", # 82#
+ "114212", # 83#
+ "124112", # 84#
+ "124211", # 85#
+ "411212", # 86#
+ "421112", # 87#
+ "421211", # 88#
+ "212141", # 89#
+ "214121", # 90#
+ "412121", # 91#
+ "111143", # 92#
+ "111341", # 93#
+ "131141", # 94#
+ "114113", # 95#
+ "114311", # 96#
+ "411113", # 97#
+ "411311", # 98#
+ "113141", # 99#
+ "114131", # 100#
+ "311141", # 101#
+ "411131" # 102#
+ );
+ end
+
+ #
+ # Returns the character index.
+ # @param char $char character.
+ # @return int character index or -1 in case of error.
+ # @access private
+ #
+ def GetCharIndex($char)
+ for ($i=0;$i<64;$i++)
+ if (@mChars[$i] == $char)
+ return $i;
+ end
+ end
+ return -1;
+ end
+
+ #
+ # Returns the bar size.
+ # @param int $xres Horizontal resolution.
+ # @param char $char Character.
+ # @return int barcode size.
+ # @access private
+ #
+ def GetBarSize($xres, $char)
+ switch ($char)
+ case '1'
+ $cVal = BCD_C128_BAR_1;
+
+ case '2'
+ $cVal = BCD_C128_BAR_2;
+
+ case '3'
+ $cVal = BCD_C128_BAR_3;
+
+ case '4'
+ $cVal = BCD_C128_BAR_4;
+
+ default
+ $cVal = 0;
+ end
+ end
+ return $cVal# $xres;
+ end
+
+ #
+ # Returns barcode size.
+ # @param int $xres Horizontal resolution.
+ # @return barcode size.
+ # @access private
+ #
+ def GetSize($xres)
+ $len = @mValue.length;
+
+ if ($len == 0) {
+ @mError = "Null value";
+ return false;
+ end
+ $ret = 0;
+ for ($i=0;$i<$len;$i++)
+ if (($id = GetCharIndex(@mValue[$i])) == -1)
+ @mError = "C128A not include the char '".@mValue[$i]."'";
+ return false;
+ else
+ $cset = @mCharSet[$id];
+ $ret += GetBarSize($xres, $cset[0]);
+ $ret += GetBarSize($xres, $cset[1]);
+ $ret += GetBarSize($xres, $cset[2]);
+ $ret += GetBarSize($xres, $cset[3]);
+ $ret += GetBarSize($xres, $cset[4]);
+ $ret += GetBarSize($xres, $cset[5]);
+ end
+ end
+
+ # length of Check character#
+ $cset = GetCheckCharValue();
+ $CheckSize = 0;
+ for ($i=0;$i<6;$i++)
+ $CheckSize += GetBarSize($cset[$i], $xres);
+ end
+ $StartSize = 2*BCD_C128_BAR_2*$xres + 3*BCD_C128_BAR_1*$xres + BCD_C128_BAR_4*$xres;
+ $StopSize = 2*BCD_C128_BAR_2*$xres + 3*BCD_C128_BAR_1*$xres + 2*BCD_C128_BAR_3*$xres;
+ return $StartSize + $ret + $CheckSize + $StopSize;
+ end
+
+ #
+ # Returns the check-char value.
+ # @return string.
+ # @access private
+ #
+ def GetCheckCharValue()
+ $len = @mValue.length;
+ $sum = 103; # 'A' type;
+ for ($i=0;$i<$len;$i++)
+ $sum += GetCharIndex(@mValue[$i])# ($i+1);
+ end
+ $check = $sum % 103;
+ return @mCharSet[$check];
+ end
+
+ #
+ # Draws the start code.
+ # @param int $DrawPos Drawing position.
+ # @param int $yPos Vertical position.
+ # @param int $ySize Vertical size.
+ # @param int $xres Horizontal resolution.
+ # @return int drawing position.
+ # @access private
+ #
+ def DrawStart($DrawPos, $yPos, $ySize, $xres)
+ # Start code is '211412'#
+ @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('2', $xres) , $ySize);
+ $DrawPos += GetBarSize('2', $xres);
+ $DrawPos += GetBarSize('1', $xres);
+ @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('1', $xres) , $ySize);
+ $DrawPos += GetBarSize('1', $xres);
+ $DrawPos += GetBarSize('4', $xres);
+ @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('1', $xres) , $ySize);
+ $DrawPos += GetBarSize('1', $xres);
+ $DrawPos += GetBarSize('2', $xres);
+ return $DrawPos;
+ end
+
+ #
+ # Draws the stop code.
+ # @param int $DrawPos Drawing position.
+ # @param int $yPos Vertical position.
+ # @param int $ySize Vertical size.
+ # @param int $xres Horizontal resolution.
+ # @return int drawing position.
+ # @access private
+ #
+ def DrawStop($DrawPos, $yPos, $ySize, $xres)
+ # Stop code is '2331112'#
+ @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('2', $xres) , $ySize);
+ $DrawPos += GetBarSize('2', $xres);
+ $DrawPos += GetBarSize('3', $xres);
+ @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('3', $xres) , $ySize);
+ $DrawPos += GetBarSize('3', $xres);
+ $DrawPos += GetBarSize('1', $xres);
+ @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('1', $xres) , $ySize);
+ $DrawPos += GetBarSize('1', $xres);
+ $DrawPos += GetBarSize('1', $xres);
+ @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize('2', $xres) , $ySize);
+ $DrawPos += GetBarSize('2', $xres);
+ return $DrawPos;
+ end
+
+ #
+ # Draws the check-char code.
+ # @param int $DrawPos Drawing position.
+ # @param int $yPos Vertical position.
+ # @param int $ySize Vertical size.
+ # @param int $xres Horizontal resolution.
+ # @return int drawing position.
+ # @access private
+ #
+ def DrawCheckChar($DrawPos, $yPos, $ySize, $xres)
+ $cset = GetCheckCharValue();
+ @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[0], $xres) , $ySize);
+ $DrawPos += GetBarSize($cset[0], $xres);
+ $DrawPos += GetBarSize($cset[1], $xres);
+ @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[2], $xres) , $ySize);
+ $DrawPos += GetBarSize($cset[2], $xres);
+ $DrawPos += GetBarSize($cset[3], $xres);
+ @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[4], $xres) , $ySize);
+ $DrawPos += GetBarSize($cset[4], $xres);
+ $DrawPos += GetBarSize($cset[5], $xres);
+ return $DrawPos;
+ end
+
+ #
+ # Draws the barcode object.
+ # @param int $xres Horizontal resolution.
+ # @return bool true in case of success.
+ #
+ def DrawObject($xres)
+ $len = @mValue.length;
+ if (($size = GetSize($xres))==0)
+ return false;
+ end
+
+ if (@mStyle & BCS_ALIGN_CENTER) $sPos = (integer)((@mWidth - $size ) / 2);
+ elsif (@mStyle & BCS_ALIGN_RIGHT) $sPos = @mWidth - $size;
+ else $sPos = 0;
+
+ # Total height of bar code -Bars only-#
+ if (@mStyle & BCS_DRAW_TEXT) $ysize = @mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2 - GetFontHeight(@mFont);
+ else $ysize = @mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2;
+
+ # Draw text#
+ if (@mStyle & BCS_DRAW_TEXT)
+ if (@mStyle & BCS_STRETCH_TEXT)
+ for ($i=0;$i<$len;$i++)
+ @DrawChar(@mFont, $sPos+(2*BCD_C128_BAR_2*$xres + 3*BCD_C128_BAR_1*$xres + BCD_C128_BAR_4*$xres)+($size/$len)*$i,
+ $ysize + BCD_DEFAULT_MAR_Y1 + BCD_DEFAULT_TEXT_OFFSET, @mValue[$i]);
+ else# Center#
+ $text_width = GetFontWidth(@mFont)# @mValue.length;
+ @DrawText(@mFont, $sPos+(($size-$text_width)/2)+(2*BCD_C128_BAR_2*$xres + 3*BCD_C128_BAR_1*$xres + BCD_C128_BAR_4*$xres),
+ $ysize + BCD_DEFAULT_MAR_Y1 + BCD_DEFAULT_TEXT_OFFSET, @mValue);
+ end
+ end
+
+ $cPos = 0;
+ $DrawPos = @DrawStart($sPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);
+ do {
+ $c = GetCharIndex(@mValue[$cPos]);
+ $cset = @mCharSet[$c];
+ @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[0], $xres) , $ysize);
+ $DrawPos += GetBarSize($cset[0], $xres);
+ $DrawPos += GetBarSize($cset[1], $xres);
+ @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[2], $xres) , $ysize);
+ $DrawPos += GetBarSize($cset[2], $xres);
+ $DrawPos += GetBarSize($cset[3], $xres);
+ @DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, GetBarSize($cset[4], $xres) , $ysize);
+ $DrawPos += GetBarSize($cset[4], $xres);
+ $DrawPos += GetBarSize($cset[5], $xres);
+ $cPos += 1;
+ end while ($cPos<$len);
+ $DrawPos = @DrawCheckChar($DrawPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);
+ $DrawPos = @DrawStop($DrawPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);
+ return true;
+ end
+}
+
+#============================================================+
+# END OF FILE
+#============================================================+