]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-11099 and MDL-11655 Don't show external db password in clear
authoriarenaza <iarenaza>
Sun, 18 Nov 2007 12:45:21 +0000 (12:45 +0000)
committeriarenaza <iarenaza>
Sun, 18 Nov 2007 12:45:21 +0000 (12:45 +0000)
enrol/database/config.html
lib/tcpdf/barcode/barcode.php [new file with mode: 0755]
lib/tcpdf/barcode/c128aobject.php [new file with mode: 0755]
lib/tcpdf/barcode/c128bobject.php [new file with mode: 0755]
lib/tcpdf/barcode/c128cobject.php [new file with mode: 0755]
lib/tcpdf/barcode/c39object.php [new file with mode: 0755]
lib/tcpdf/barcode/i25object.php [new file with mode: 0755]
lib/tcpdf/barcode/image.php [new file with mode: 0755]
lib/yui/tabview/assets/tabs.css [new file with mode: 0755]

index 2704c0ec4ac0954e796c3479c0265a371d0e8a6c..df1ed6d4b0a42ab66ac77fc8fa6c4d47bf3136b8 100644 (file)
@@ -56,7 +56,7 @@
 <tr>
     <td align="right">enrol_dbpass:</td>
     <td>
-        <input size="15" type="text" name="enrol_dbpass" value="<?php echo $frm->enrol_dbpass ?>" />
+        <input size="15" type="password" name="enrol_dbpass" value="<?php echo $frm->enrol_dbpass ?>" />
     </td>
     <td>
     <?php  print_string("dbpass","enrol_database") ?>
diff --git a/lib/tcpdf/barcode/barcode.php b/lib/tcpdf/barcode/barcode.php
new file mode 100755 (executable)
index 0000000..133d8ce
--- /dev/null
@@ -0,0 +1,441 @@
+<?php
+//============================================================+
+// File name   : barcode.php
+// Begin       : 2002-07-31
+// Last Update : 2005-01-02
+// Author      : Karim Mribti [barcode@mribti.com]
+// Version     : 1.1 [0.0.8a (original code)]
+// License     : GNU LGPL (Lesser General Public License) 2.1
+//               http://www.gnu.org/copyleft/lesser.txt
+// Source Code : http://www.mribti.com/barcode/
+//
+// Description : Generic Barcode Render Class for PHP using
+//               the GD graphics library.
+//
+// NOTE:
+// This version contains changes by Nicola Asuni:
+//  - porting to PHP4
+//  - code style and formatting
+//  - automatic php documentation in PhpDocumentor Style
+//    (www.phpdoc.org)
+//  - minor bug fixing
+//  - $mCharSet and $mChars variables were added here
+//============================================================+
+
+/**
+ * Barcode Render Class for PHP using the GD graphics library.
+ * @author Karim Mribti, Nicola Asuni
+ * @name BarcodeObject
+ * @package com.tecnick.tcpdf
+ * @version 0.0.8a 2001-04-01 (original code)
+ * @since 2001-03-25
+ * @license http://www.gnu.org/copyleft/lesser.html LGPL
+ */
+
+// Styles
+// Global
+
+/**
+ * option: generate barcode border
+ */
+define("BCS_BORDER", 1);
+
+/**
+ * option: use transparent background
+ */
+define("BCS_TRANSPARENT", 2);
+
+/**
+ * option: center barcode
+ */
+define("BCS_ALIGN_CENTER", 4);
+
+/**
+ * option: align left
+ */
+define("BCS_ALIGN_LEFT", 8);
+
+/**
+ * option: align right
+ */
+define("BCS_ALIGN_RIGHT", 16);
+
+/**
+ * option: generate JPEG image
+ */
+define("BCS_IMAGE_JPEG", 32);
+
+/**
+ * option: generate PNG image
+ */
+define("BCS_IMAGE_PNG", 64);
+
+/**
+ * option: draw text
+ */
+define("BCS_DRAW_TEXT", 128);
+
+/**
+ * option: stretch text
+ */
+define("BCS_STRETCH_TEXT", 256);
+
+/**
+ * option: reverse color
+ */
+define("BCS_REVERSE_COLOR", 512);
+
+/**
+ * option: draw check
+ * (only for I25 code)
+ */
+define("BCS_I25_DRAW_CHECK", 2048);
+
+/**
+ * set default background color
+ */
+define("BCD_DEFAULT_BACKGROUND_COLOR", 0xFFFFFF);
+
+/**
+ * set default foreground color
+ */
+define("BCD_DEFAULT_FOREGROUND_COLOR", 0x000000);
+
+/**
+ * set default style options
+ */
+define("BCD_DEFAULT_STYLE", BCS_BORDER | BCS_ALIGN_CENTER | BCS_IMAGE_PNG);
+
+/**
+ * set default width
+ */
+define("BCD_DEFAULT_WIDTH", 460);
+
+/**
+ * set default height
+ */
+define("BCD_DEFAULT_HEIGHT", 120);
+
+/**
+ * set default font
+ */
+define("BCD_DEFAULT_FONT", 5);
+
+/**
+ * st default horizontal resolution
+ */
+define("BCD_DEFAULT_XRES", 2);
+
+// Margins
+
+/**
+ * set default margin
+ */
+define("BCD_DEFAULT_MAR_Y1", 0);
+
+/**
+ * set default margin
+ */
+define("BCD_DEFAULT_MAR_Y2", 0);
+
+/**
+ * set default text offset
+ */
+define("BCD_DEFAULT_TEXT_OFFSET", 2);
+
+// For the I25 Only
+
+/**
+ * narrow bar option
+ * (only for I25 code)
+ */
+define("BCD_I25_NARROW_BAR", 1);
+
+/**
+ * wide bar option
+ * (only for I25 code)
+ */
+define("BCD_I25_WIDE_BAR", 2);
+
+// For the C39 Only
+
+/**
+ * narrow bar option
+ * (only for c39 code)
+ */
+define("BCD_C39_NARROW_BAR", 1);
+
+/**
+ * wide bar option
+ * (only for c39 code)
+ */
+define("BCD_C39_WIDE_BAR", 2);
+
+// For Code 128
+
+/**
+ * set type 1 bar
+ * (only for c128 code)
+ */
+define("BCD_C128_BAR_1", 1);
+
+/**
+ * set type 2 bar
+ * (only for c128 code)
+ */
+define("BCD_C128_BAR_2", 2);
+
+/**
+ * set type 3 bar
+ * (only for c128 code)
+ */
+define("BCD_C128_BAR_3", 3);
+
+/**
+ * set type 4 bar
+ * (only for c128 code)
+ */
+define("BCD_C128_BAR_4", 4);
+
+/**
+ * Barcode Render Class for PHP using the GD graphics library.
+ * @author Karim Mribti, Nicola Asuni
+ * @name BarcodeObject
+ * @package com.tecnick.tcpdf
+ * @version 0.0.8a 2001-04-01 (original code)
+ * @since 2001-03-25
+ * @license http://www.gnu.org/copyleft/lesser.html LGPL
+ */
+class BarcodeObject {
+    /**
+     * @var Image width in pixels.
+     * @access protected
+     */
+    var $mWidth;
+    
+    /**
+     * @var Image height in pixels.
+     * @access protected
+     */
+    var $mHeight;
+    
+    /**
+     * @var Numeric code for Barcode style.
+     * @access protected
+     */
+    var $mStyle;
+    
+    /**
+     * @var Background color.
+     * @access protected
+     */
+    var $mBgcolor;
+    
+    /**
+     * @var Brush color.
+     * @access protected
+     */
+    var $mBrush;
+    
+    /**
+     * @var Image object.
+     * @access protected
+     */
+    var $mImg;
+    
+    /**
+     * @var Numeric code for character font.
+     * @access protected
+     */
+    var $mFont;
+    
+    /**
+     * @var Error message.
+     * @access protected
+     */
+    var $mError;
+    
+    /**
+     * @var Character Set.
+     * @access protected
+     */
+    var $mCharSet;
+    
+    /**
+     * @var Allowed symbols.
+     * @access protected
+     */
+    var $mChars;
+
+    /**
+     * Class Constructor.
+     * @param int $Width Image width in pixels.
+     * @param int $Height Image height in pixels. 
+     * @param int $Style Barcode style.
+     */
+    function BarcodeObject($Width=BCD_DEFAULT_WIDTH, $Height=BCD_DEFAULT_HEIGHT, $Style=BCD_DEFAULT_STYLE) {
+        $this->mWidth = $Width;
+        $this->mHeight = $Height;
+        $this->mStyle = $Style;
+        $this->mFont = BCD_DEFAULT_FONT;
+        $this->mImg = ImageCreate($this->mWidth, $this->mHeight);
+        $dbColor = $this->mStyle & BCS_REVERSE_COLOR ? BCD_DEFAULT_FOREGROUND_COLOR : BCD_DEFAULT_BACKGROUND_COLOR;
+        $dfColor = $this->mStyle & BCS_REVERSE_COLOR ? BCD_DEFAULT_BACKGROUND_COLOR : BCD_DEFAULT_FOREGROUND_COLOR;
+        $this->mBgcolor = ImageColorAllocate($this->mImg, ($dbColor & 0xFF0000) >> 16,
+        ($dbColor & 0x00FF00) >> 8, $dbColor & 0x0000FF);
+        $this->mBrush = ImageColorAllocate($this->mImg, ($dfColor & 0xFF0000) >> 16,
+        ($dfColor & 0x00FF00) >> 8, $dfColor & 0x0000FF);
+        if (!($this->mStyle & BCS_TRANSPARENT)) {
+            ImageFill($this->mImg, $this->mWidth, $this->mHeight, $this->mBgcolor);
+        }
+    }
+
+    /**
+     * Returns the image object.
+     * @return object image.
+     * @author Nicola Asuni
+     * @since 1.5.2
+     */
+    function getImage() {
+        return $this->mImg;
+    }
+    
+    /**
+     * Abstract method used to draw the barcode image.
+     * @param int $xres Horizontal resolution.
+     */
+    function DrawObject($xres)  {
+        /* there is not implementation neded, is simply the asbsract function. */
+        return false;
+    }
+    
+    /**
+     * Draws the barcode border.
+     * @access protected
+     */
+    function DrawBorder() {
+        ImageRectangle($this->mImg, 0, 0, $this->mWidth-1, $this->mHeight-1, $this->mBrush);
+    }
+    
+    /**
+     * Draws the alphanumeric code.
+     * @param int $Font Font type.
+     * @param int $xPos Horiziontal position.
+     * @param int $yPos Vertical position.
+     * @param int $Char Alphanumeric code to write.
+     * @access protected
+     */
+    function DrawChar($Font, $xPos, $yPos, $Char) {
+        ImageString($this->mImg,$Font,$xPos,$yPos,$Char,$this->mBrush);
+    }
+    
+    /**
+     * Draws a character string.
+     * @param int $Font Font type.
+     * @param int $xPos Horiziontal position.
+     * @param int $yPos Vertical position.
+     * @param int $Char string to write.
+     * @access protected
+     */
+    function DrawText($Font, $xPos, $yPos, $Char) {
+        ImageString($this->mImg,$Font,$xPos,$yPos,$Char,$this->mBrush);
+    }
+
+    /**
+     * Draws a single barcode bar.
+     * @param int $xPos Horiziontal position.
+     * @param int $yPos Vertical position.
+     * @param int $xSize Horizontal size.
+     * @param int $xSize Vertical size.
+     * @return bool trur in case of success, false otherwise.
+     * @access protected
+     */
+    function DrawSingleBar($xPos, $yPos, $xSize, $ySize) {
+        if ($xPos>=0 && $xPos<=$this->mWidth && ($xPos+$xSize)<=$this->mWidth &&
+        $yPos>=0 && $yPos<=$this->mHeight && ($yPos+$ySize)<=$this->mHeight) {
+            for ($i=0;$i<$xSize;$i++) {
+                ImageLine($this->mImg, $xPos+$i, $yPos, $xPos+$i, $yPos+$ySize, $this->mBrush);
+            }
+            return true;
+        }
+        return false;
+    }
+    
+    /**
+     * Returns the current error message.
+     * @return string error message.
+     */
+    function GetError() {
+        return $this->mError;
+    }
+    
+    /**
+     * Returns the font height.
+     * @param int $font font type.
+     * @return int font height.
+     */
+    function GetFontHeight($font) {
+        return ImageFontHeight($font);
+    }
+    
+    /**
+     * Returns the font width.
+     * @param int $font font type.
+     * @return int font width.
+     */
+    function GetFontWidth($font) {
+        return ImageFontWidth($font);
+    }
+    
+    /**
+     * Set font type.
+     * @param int $font font type.
+     */
+    function SetFont($font) {
+        $this->mFont = $font;
+    }
+    
+    /**
+     * Returns barcode style.
+     * @return int barcode style.
+     */
+    function GetStyle() {
+        return $this->mStyle;
+    }
+
+    /**
+     * Set barcode style.
+     * @param int $Style barcode style.
+     */
+    function SetStyle ($Style) {
+        $this->mStyle = $Style;
+    }
+
+    /**
+     * Flush the barcode image.
+     */
+    function FlushObject() {
+        if (($this->mStyle & BCS_BORDER)) {
+            $this->DrawBorder();
+        }
+        if ($this->mStyle & BCS_IMAGE_PNG) {
+            Header("Content-Type: image/png");
+            ImagePng($this->mImg);
+        } else if ($this->mStyle & BCS_IMAGE_JPEG) {
+            Header("Content-Type: image/jpeg");
+            ImageJpeg($this->mImg);
+        }
+    }
+    
+    /**
+     * Destroy the barcode image.
+     */
+    function DestroyObject() {
+        ImageDestroy($this->mImg);
+    }
+}
+
+//============================================================+
+// END OF FILE
+//============================================================+
+?>
\ No newline at end of file
diff --git a/lib/tcpdf/barcode/c128aobject.php b/lib/tcpdf/barcode/c128aobject.php
new file mode 100755 (executable)
index 0000000..15cbbfa
--- /dev/null
@@ -0,0 +1,399 @@
+<?php
+//============================================================+
+// File name   : c128aobject.php
+// 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 PHP4
+//  - 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.
+     */
+    function C128AObject($Width, $Height, $Style, $Value) {
+        $this->BarcodeObject($Width, $Height, $Style);
+        $this->mValue   = $Value;
+        $this->mChars   = " !\"#$%&'()*+�-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_";
+        $this->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 */
+        );
+    }
+
+    /**
+     * Returns the character index.
+     * @param char $char character.
+     * @return int character index or -1 in case of error.
+     * @access private
+     */
+    function GetCharIndex($char) {
+        for ($i=0;$i<64;$i++) {
+            if ($this->mChars[$i] == $char) {
+                return $i;
+            }
+        }
+        return -1;
+    }
+    
+    /**
+     * Returns the bar size.
+     * @param int $xres Horizontal resolution.
+     * @param char $char Character.
+     * @return int barcode size.
+     * @access private
+     */
+    function GetBarSize($xres, $char) {
+        switch ($char) {
+            case '1': {
+                $cVal = BCD_C128_BAR_1;
+                break;
+            }
+            case '2': {
+                $cVal = BCD_C128_BAR_2;
+                break;
+            }
+            case '3': {
+                $cVal = BCD_C128_BAR_3;
+                break;
+            }
+            case '4': {
+                $cVal = BCD_C128_BAR_4;
+                break;
+            }
+            default: {
+                $cVal = 0;
+            }
+        }
+        return  $cVal * $xres;
+    }
+    
+    /**
+     * Returns barcode size.
+     * @param int $xres Horizontal resolution.
+     * @return barcode size.
+     * @access private
+     */
+    function GetSize($xres) {
+        $len = strlen($this->mValue);
+
+        if ($len == 0)  {
+            $this->mError = "Null value";
+            return false;
+        }
+        $ret = 0;
+        for ($i=0;$i<$len;$i++) {
+            if (($id = $this->GetCharIndex($this->mValue[$i])) == -1) {
+                $this->mError = "C128A not include the char '".$this->mValue[$i]."'";
+                return false;
+            } else {
+                $cset = $this->mCharSet[$id];
+                $ret += $this->GetBarSize($xres, $cset[0]);
+                $ret += $this->GetBarSize($xres, $cset[1]);
+                $ret += $this->GetBarSize($xres, $cset[2]);
+                $ret += $this->GetBarSize($xres, $cset[3]);
+                $ret += $this->GetBarSize($xres, $cset[4]);
+                $ret += $this->GetBarSize($xres, $cset[5]);
+            }
+        }
+
+        /* length of Check character */
+        $cset = $this->GetCheckCharValue();
+        $CheckSize = 0;
+        for ($i=0;$i<6;$i++) {
+            $CheckSize += $this->GetBarSize($cset[$i], $xres);
+        }
+        $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;
+    }
+    
+    /**
+     * Returns the check-char value.
+     * @return string.
+     * @access private
+     */
+    function GetCheckCharValue() {
+        $len = strlen($this->mValue);
+        $sum = 103; // 'A' type;
+        for ($i=0;$i<$len;$i++) {
+            $sum +=  $this->GetCharIndex($this->mValue[$i]) * ($i+1);
+        }
+        $check  = $sum % 103;
+        return $this->mCharSet[$check];
+    }
+
+    /**
+     * 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
+     */
+    function DrawStart($DrawPos, $yPos, $ySize, $xres) {
+        /* Start code is '211412' */
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('2', $xres) , $ySize);
+        $DrawPos += $this->GetBarSize('2', $xres);
+        $DrawPos += $this->GetBarSize('1', $xres);
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('1', $xres) , $ySize);
+        $DrawPos += $this->GetBarSize('1', $xres);
+        $DrawPos += $this->GetBarSize('4', $xres);
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('1', $xres) , $ySize);
+        $DrawPos += $this->GetBarSize('1', $xres);
+        $DrawPos += $this->GetBarSize('2', $xres);
+        return $DrawPos;
+    }
+    
+    /**
+     * 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
+     */
+    function DrawStop($DrawPos, $yPos, $ySize, $xres) {
+        /* Stop code is '2331112' */
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('2', $xres) , $ySize);
+        $DrawPos += $this->GetBarSize('2', $xres);
+        $DrawPos += $this->GetBarSize('3', $xres);
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('3', $xres) , $ySize);
+        $DrawPos += $this->GetBarSize('3', $xres);
+        $DrawPos += $this->GetBarSize('1', $xres);
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('1', $xres) , $ySize);
+        $DrawPos += $this->GetBarSize('1', $xres);
+        $DrawPos += $this->GetBarSize('1', $xres);
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('2', $xres) , $ySize);
+        $DrawPos += $this->GetBarSize('2', $xres);
+        return $DrawPos;
+    }
+    
+    /**
+     * 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
+     */
+    function DrawCheckChar($DrawPos, $yPos, $ySize, $xres) {
+        $cset = $this->GetCheckCharValue();
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[0], $xres) , $ySize);
+        $DrawPos += $this->GetBarSize($cset[0], $xres);
+        $DrawPos += $this->GetBarSize($cset[1], $xres);
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[2], $xres) , $ySize);
+        $DrawPos += $this->GetBarSize($cset[2], $xres);
+        $DrawPos += $this->GetBarSize($cset[3], $xres);
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[4], $xres) , $ySize);
+        $DrawPos += $this->GetBarSize($cset[4], $xres);
+        $DrawPos += $this->GetBarSize($cset[5], $xres);
+        return $DrawPos;
+    }
+
+    /**
+     * Draws the barcode object.
+     * @param int $xres Horizontal resolution.
+     * @return bool true in case of success.
+     */
+    function DrawObject($xres) {
+        $len = strlen($this->mValue);
+        if (($size = $this->GetSize($xres))==0) {
+            return false;
+        }
+
+        if ($this->mStyle & BCS_ALIGN_CENTER) $sPos = (integer)(($this->mWidth - $size ) / 2);
+        else if ($this->mStyle & BCS_ALIGN_RIGHT) $sPos = $this->mWidth - $size;
+        else $sPos = 0;
+
+        /* Total height of bar code -Bars only- */
+        if ($this->mStyle & BCS_DRAW_TEXT) $ysize = $this->mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2 - $this->GetFontHeight($this->mFont);
+        else $ysize = $this->mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2;
+
+        /* Draw text */
+        if ($this->mStyle & BCS_DRAW_TEXT) {
+            if ($this->mStyle & BCS_STRETCH_TEXT) {
+                for ($i=0;$i<$len;$i++) {
+                    $this->DrawChar($this->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, $this->mValue[$i]);
+                }
+            } else {/* Center */
+            $text_width = $this->GetFontWidth($this->mFont) * strlen($this->mValue);
+            $this->DrawText($this->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, $this->mValue);
+            }
+        }
+
+        $cPos = 0;
+        $DrawPos = $this->DrawStart($sPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);
+        do {
+            $c     = $this->GetCharIndex($this->mValue[$cPos]);
+            $cset  = $this->mCharSet[$c];
+            $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[0], $xres) , $ysize);
+            $DrawPos += $this->GetBarSize($cset[0], $xres);
+            $DrawPos += $this->GetBarSize($cset[1], $xres);
+            $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[2], $xres) , $ysize);
+            $DrawPos += $this->GetBarSize($cset[2], $xres);
+            $DrawPos += $this->GetBarSize($cset[3], $xres);
+            $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[4], $xres) , $ysize);
+            $DrawPos += $this->GetBarSize($cset[4], $xres);
+            $DrawPos += $this->GetBarSize($cset[5], $xres);
+            $cPos++;
+        } while ($cPos<$len);
+        $DrawPos = $this->DrawCheckChar($DrawPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);
+        $DrawPos =  $this->DrawStop($DrawPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);
+        return true;
+    }
+}
+
+//============================================================+
+// END OF FILE
+//============================================================+
+?>
\ No newline at end of file
diff --git a/lib/tcpdf/barcode/c128bobject.php b/lib/tcpdf/barcode/c128bobject.php
new file mode 100755 (executable)
index 0000000..f3d5540
--- /dev/null
@@ -0,0 +1,399 @@
+<?php
+//============================================================+
+// File name   : c128bobject.php
+// 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-B Barcode Render Class for PHP using
+//               the GD graphics library.
+//               Code 128-B is a continuous, multilevel and full
+//               ASCII code.
+//
+// NOTE:
+// This version contains changes by Nicola Asuni:
+//  - porting to PHP4
+//  - code style and formatting
+//  - automatic php documentation in PhpDocumentor Style
+//    (www.phpdoc.org)
+//  - minor bug fixing
+//============================================================+
+
+/**
+* Code 128-B Barcode Render Class for PHP using the GD graphics library.<br>
+* Code 128-B is a continuous, multilevel and full ASCII code.
+* @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-B Barcode Render Class for PHP using the GD graphics library.<br>
+* Code 128-B is a continuous, multilevel and full ASCII code.
+* @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 C128BObject 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.
+     */
+    function C128BObject($Width, $Height, $Style, $Value) {
+        $this->BarcodeObject($Width, $Height, $Style);
+        $this->mValue = $Value;
+        $this->mChars = " !\"#$%&'()*+�-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{ }~";
+        $this->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 */
+        );
+    }
+
+    /**
+     * Returns the character index.
+     * @param char $char character.
+     * @return int character index or -1 in case of error.
+     * @access private
+     */
+    function GetCharIndex($char) {
+        for ($i=0;$i<95;$i++) {
+            if ($this->mChars[$i] == $char) {
+                return $i;
+            }
+        }
+        return -1;
+    }
+    
+    /**
+     * Returns the bar size.
+     * @param int $xres Horizontal resolution.
+     * @param char $char Character.
+     * @return int barcode size.
+     * @access private
+     */
+    function GetBarSize($xres, $char) {
+        switch ($char) {
+            case '1': {
+                $cVal = BCD_C128_BAR_1;
+                break;
+            }
+            case '2': {
+                $cVal = BCD_C128_BAR_2;
+                break;
+            }
+            case '3': {
+                $cVal = BCD_C128_BAR_3;
+                break;
+            }
+            case '4': {
+                $cVal = BCD_C128_BAR_4;
+                break;
+            }
+            default: {
+                $cVal = 0;
+            }
+        }
+        return  $cVal * $xres;
+    }
+    
+    /**
+     * Returns barcode size.
+     * @param int $xres Horizontal resolution.
+     * @return barcode size.
+     * @access private
+     */
+    function GetSize($xres) {
+        $len = strlen($this->mValue);
+
+        if ($len == 0)  {
+            $this->mError = "Null value";
+            return false;
+        }
+        $ret = 0;
+        for ($i=0;$i<$len;$i++) {
+            if (($id = $this->GetCharIndex($this->mValue[$i])) == -1) {
+                $this->mError = "C128B not include the char '".$this->mValue[$i]."'";
+                return false;
+            } else {
+                $cset = $this->mCharSet[$id];
+                $ret += $this->GetBarSize($xres, $cset[0]);
+                $ret += $this->GetBarSize($xres, $cset[1]);
+                $ret += $this->GetBarSize($xres, $cset[2]);
+                $ret += $this->GetBarSize($xres, $cset[3]);
+                $ret += $this->GetBarSize($xres, $cset[4]);
+                $ret += $this->GetBarSize($xres, $cset[5]);
+            }
+        }
+        /* length of Check character */
+        $cset = $this->GetCheckCharValue();
+        $CheckSize = 0;
+        for ($i=0;$i<6;$i++) {
+            $CheckSize += $this->GetBarSize($cset[$i], $xres);
+        }
+
+        $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;
+    }
+    
+    /**
+     * Returns the check-char value.
+     * @return string.
+     * @access private
+     */
+    function GetCheckCharValue() {
+        $len = strlen($this->mValue);
+        $sum = 104; // 'B' type;
+        for ($i=0;$i<$len;$i++) {
+            $sum += $this->GetCharIndex($this->mValue[$i]) * ($i+1);
+        }
+        $check  = $sum % 103;
+        return $this->mCharSet[$check];
+    }
+
+    /**
+     * 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
+     */
+    function DrawStart($DrawPos, $yPos, $ySize, $xres) {
+        /* Start code is '211214' */
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('2', $xres), $ySize);
+        $DrawPos += $this->GetBarSize('2', $xres);
+        $DrawPos += $this->GetBarSize('1', $xres);
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('1', $xres), $ySize);
+        $DrawPos += $this->GetBarSize('1', $xres);
+        $DrawPos += $this->GetBarSize('2', $xres);
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('1', $xres), $ySize);
+        $DrawPos += $this->GetBarSize('1', $xres);
+        $DrawPos += $this->GetBarSize('4', $xres);
+        return $DrawPos;
+    }
+    
+    /**
+     * 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
+     */
+    function DrawStop($DrawPos, $yPos, $ySize, $xres) {
+        /* Stop code is '2331112' */
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('2', $xres) , $ySize);
+        $DrawPos += $this->GetBarSize('2', $xres);
+        $DrawPos += $this->GetBarSize('3', $xres);
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('3', $xres) , $ySize);
+        $DrawPos += $this->GetBarSize('3', $xres);
+        $DrawPos += $this->GetBarSize('1', $xres);
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('1', $xres) , $ySize);
+        $DrawPos += $this->GetBarSize('1', $xres);
+        $DrawPos += $this->GetBarSize('1', $xres);
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('2', $xres) , $ySize);
+        $DrawPos += $this->GetBarSize('2', $xres);
+        return $DrawPos;
+    }
+    
+    /**
+     * 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
+     */
+    function DrawCheckChar($DrawPos, $yPos, $ySize, $xres) {
+        $cset = $this->GetCheckCharValue();
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[0], $xres) , $ySize);
+        $DrawPos += $this->GetBarSize($cset[0], $xres);
+        $DrawPos += $this->GetBarSize($cset[1], $xres);
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[2], $xres) , $ySize);
+        $DrawPos += $this->GetBarSize($cset[2], $xres);
+        $DrawPos += $this->GetBarSize($cset[3], $xres);
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[4], $xres) , $ySize);
+        $DrawPos += $this->GetBarSize($cset[4], $xres);
+        $DrawPos += $this->GetBarSize($cset[5], $xres);
+        return $DrawPos;
+    }
+
+    /**
+     * Draws the barcode object.
+     * @param int $xres Horizontal resolution.
+     * @return bool true in case of success.
+     */
+    function DrawObject($xres) {
+        $len = strlen($this->mValue);
+        if (($size = $this->GetSize($xres))==0) {
+            return false;
+        }
+
+        if ($this->mStyle & BCS_ALIGN_CENTER) $sPos = (integer)(($this->mWidth - $size ) / 2);
+        else if ($this->mStyle & BCS_ALIGN_RIGHT) $sPos = $this->mWidth - $size;
+        else $sPos = 0;
+
+        /* Total height of bar code -Bars only- */
+        if ($this->mStyle & BCS_DRAW_TEXT) $ysize = $this->mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2 - $this->GetFontHeight($this->mFont);
+        else $ysize = $this->mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2;
+
+        /* Draw text */
+        if ($this->mStyle & BCS_DRAW_TEXT) {
+            if ($this->mStyle & BCS_STRETCH_TEXT) {
+                for ($i=0;$i<$len;$i++) {
+                    $this->DrawChar($this->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, $this->mValue[$i]);
+                }
+            } else {/* Center */
+            $text_width = $this->GetFontWidth($this->mFont) * strlen($this->mValue);
+            $this->DrawText($this->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, $this->mValue);
+            }
+        }
+
+        $cPos = 0;
+        $DrawPos = $this->DrawStart($sPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);
+        do {
+            $c     = $this->GetCharIndex($this->mValue[$cPos]);
+            $cset  = $this->mCharSet[$c];
+            $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[0], $xres) , $ysize);
+            $DrawPos += $this->GetBarSize($cset[0], $xres);
+            $DrawPos += $this->GetBarSize($cset[1], $xres);
+            $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[2], $xres) , $ysize);
+            $DrawPos += $this->GetBarSize($cset[2], $xres);
+            $DrawPos += $this->GetBarSize($cset[3], $xres);
+            $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[4], $xres) , $ysize);
+            $DrawPos += $this->GetBarSize($cset[4], $xres);
+            $DrawPos += $this->GetBarSize($cset[5], $xres);
+            $cPos++;
+        } while ($cPos<$len);
+        $DrawPos = $this->DrawCheckChar($DrawPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);
+        $DrawPos =  $this->DrawStop($DrawPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);
+        return true;
+    }
+}
+
+//============================================================+
+// END OF FILE
+//============================================================+
+?>
\ No newline at end of file
diff --git a/lib/tcpdf/barcode/c128cobject.php b/lib/tcpdf/barcode/c128cobject.php
new file mode 100755 (executable)
index 0000000..cb4923c
--- /dev/null
@@ -0,0 +1,419 @@
+<?php
+//============================================================+
+// File name   : c128cobject.php
+// Begin       : 2002-07-31
+// Last Update : 2004-12-29
+// Author      : Karim Mribti [barcode@mribti.com]
+//             : Sam Michaels [swampgas@swampgas.org]
+//             : Nicola Asuni [info@tecnick.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-C Barcode Render Class for PHP using
+//               the GD graphics library.
+//               Code 128-C is numeric only and provides the
+//               most efficiency.
+//
+// NOTE:
+// This version contains changes by Nicola Asuni:
+//  - porting to PHP4
+//  - code style and formatting
+//  - automatic php documentation in PhpDocumentor Style
+//    (www.phpdoc.org)
+//  - minor bug fixing
+//============================================================+
+
+/**
+ * Code 128-C Barcode Render Class for PHP using the GD graphics library.<br>
+ * Code 128-C is numeric only and provides the most efficiency.
+ * @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-C Barcode Render Class for PHP using the GD graphics library.<br>
+ * Code 128-C is numeric only and provides the most efficiency.
+ * @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 C128CObject 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.
+     */
+    function C128CObject($Width, $Height, $Style, $Value) {
+        $this->BarcodeObject($Width, $Height, $Style);
+        $this->mValue = $Value;
+        $this->mChars = array (
+        "00", "01", "02", "03", "04", "05", "06", "07", "08", "09",
+        "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
+        "20", "21", "22", "23", "24", "25", "26", "27", "28", "29",
+        "30", "31", "32", "33", "34", "35", "36", "37", "38", "39",
+        "40", "41", "42", "43", "44", "45", "46", "47", "48", "49",
+        "50", "51", "52", "53", "54", "55", "56", "57", "58", "59",
+        "60", "61", "62", "63", "64", "65", "66", "67", "68", "69",
+        "70", "71", "72", "73", "74", "75", "76", "77", "78", "79",
+        "80", "81", "82", "83", "84", "85", "86", "87", "88", "89",
+        "90", "91", "92", "93", "94", "95", "96", "97", "98", "99",
+        );
+        $this->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 */
+        );
+    }
+
+    /**
+     * Returns the character index.
+     * @param char $char character.
+     * @return int character index or -1 in case of error.
+     * @access private
+     */
+    function GetCharIndex($char) {
+        for ($i=0;$i<100;$i++) {
+            if ($this->mChars[$i] == $char) {
+                return $i;
+            }
+        }
+        return -1;
+    }
+    
+    /**
+     * Returns the bar size.
+     * @param int $xres Horizontal resolution.
+     * @param char $char Character.
+     * @return int barcode size.
+     * @access private
+     */
+    function GetBarSize($xres, $char) {
+        switch ($char) {
+            case '1': {
+                $cVal = BCD_C128_BAR_1;
+                break;
+            }
+            case '2': {
+                $cVal = BCD_C128_BAR_2;
+                break;
+            }
+            case '3': {
+                $cVal = BCD_C128_BAR_3;
+                break;
+            }
+            case '4': {
+                $cVal = BCD_C128_BAR_4;
+                break;
+            }
+            default: {
+                $cVal = 0;
+            }
+        }
+        return  $cVal * $xres;
+    }
+
+    /**
+     * Returns barcode size.
+     * @param int $xres Horizontal resolution.
+     * @return barcode size.
+     * @access private
+     */
+    function GetSize($xres) {
+        $len = strlen($this->mValue);
+
+        if ($len == 0)  {
+            $this->mError = "Null value";
+            return false;
+        }
+        $ret = 0;
+
+        for ($i=0;$i<$len;$i++) {
+            if ((ord($this->mValue[$i])<48) || (ord($this->mValue[$i])>57)) {
+                $this->mError = "Code-128C is numeric only";
+                return false;
+            }
+        }
+
+        if (($len%2) != 0) {
+            $this->mError = "The length of barcode value must be even.  You must pad the number with zeros.";
+            return false;
+        }
+
+        for ($i=0;$i<$len;$i+=2) {
+            $id = $this->GetCharIndex($this->mValue[$i].$this->mValue[$i+1]);
+            $cset = $this->mCharSet[$id];
+            $ret += $this->GetBarSize($xres, $cset[0]);
+            $ret += $this->GetBarSize($xres, $cset[1]);
+            $ret += $this->GetBarSize($xres, $cset[2]);
+            $ret += $this->GetBarSize($xres, $cset[3]);
+            $ret += $this->GetBarSize($xres, $cset[4]);
+            $ret += $this->GetBarSize($xres, $cset[5]);
+        }
+        /* length of Check character */
+        $cset = $this->GetCheckCharValue();
+        $CheckSize = 0;
+        for ($i=0;$i<6;$i++) {
+            $CheckSize += $this->GetBarSize($cset[$i], $xres);
+        }
+
+        $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;
+    }
+    
+    /**
+     * Returns the check-char value.
+     * @return string.
+     * @access private
+     */
+    function GetCheckCharValue() {
+        $len = strlen($this->mValue);
+        $sum = 105; // 'C' type;
+        $m = 0;
+        for ($i=0;$i<$len;$i+=2) {
+            $m++;
+            $sum +=  $this->GetCharIndex($this->mValue[$i].$this->mValue[$i+1]) * $m;
+        }
+        $check  = $sum % 103;
+        return $this->mCharSet[$check];
+    }
+
+    /**
+     * 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
+     */
+    function DrawStart($DrawPos, $yPos, $ySize, $xres) {
+        /* Start code is '211232' */
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('2', $xres) , $ySize);
+        $DrawPos += $this->GetBarSize('2', $xres);
+        $DrawPos += $this->GetBarSize('1', $xres);
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('1', $xres) , $ySize);
+        $DrawPos += $this->GetBarSize('1', $xres);
+        $DrawPos += $this->GetBarSize('2', $xres);
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('3', $xres) , $ySize);
+        $DrawPos += $this->GetBarSize('3', $xres);
+        $DrawPos += $this->GetBarSize('2', $xres);
+        return $DrawPos;
+    }
+    
+    /**
+     * 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
+     */
+    function DrawStop($DrawPos, $yPos, $ySize, $xres) {
+        /* Stop code is '2331112' */
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('2', $xres) , $ySize);
+        $DrawPos += $this->GetBarSize('2', $xres);
+        $DrawPos += $this->GetBarSize('3', $xres);
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('3', $xres) , $ySize);
+        $DrawPos += $this->GetBarSize('3', $xres);
+        $DrawPos += $this->GetBarSize('1', $xres);
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('1', $xres) , $ySize);
+        $DrawPos += $this->GetBarSize('1', $xres);
+        $DrawPos += $this->GetBarSize('1', $xres);
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('2', $xres) , $ySize);
+        $DrawPos += $this->GetBarSize('2', $xres);
+        return $DrawPos;
+    }
+    
+    /**
+     * 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
+     */
+    function DrawCheckChar($DrawPos, $yPos, $ySize, $xres) {
+        $cset = $this->GetCheckCharValue();
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[0], $xres) , $ySize);
+        $DrawPos += $this->GetBarSize($cset[0], $xres);
+        $DrawPos += $this->GetBarSize($cset[1], $xres);
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[2], $xres) , $ySize);
+        $DrawPos += $this->GetBarSize($cset[2], $xres);
+        $DrawPos += $this->GetBarSize($cset[3], $xres);
+        $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[4], $xres) , $ySize);
+        $DrawPos += $this->GetBarSize($cset[4], $xres);
+        $DrawPos += $this->GetBarSize($cset[5], $xres);
+        return $DrawPos;
+    }
+
+    /**
+     * Draws the barcode object.
+     * @param int $xres Horizontal resolution.
+     * @return bool true in case of success.
+     */
+    function DrawObject($xres) {
+        $len = strlen($this->mValue);
+        if (($size = $this->GetSize($xres))==0) {
+            return false;
+        }
+
+        if ($this->mStyle & BCS_ALIGN_CENTER) $sPos = (integer)(($this->mWidth - $size ) / 2);
+        else if ($this->mStyle & BCS_ALIGN_RIGHT) $sPos = $this->mWidth - $size;
+        else $sPos = 0;
+
+        /* Total height of bar code -Bars only- */
+        if ($this->mStyle & BCS_DRAW_TEXT) $ysize = $this->mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2 - $this->GetFontHeight($this->mFont);
+        else $ysize = $this->mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2;
+
+        /* Draw text */
+        if ($this->mStyle & BCS_DRAW_TEXT) {
+            if ($this->mStyle & BCS_STRETCH_TEXT) {
+                for ($i=0;$i<$len;$i++) {
+                    $this->DrawChar($this->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, $this->mValue[$i]);
+                }
+            } else {/* Center */
+            $text_width = $this->GetFontWidth($this->mFont) * strlen($this->mValue);
+            $this->DrawText($this->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, $this->mValue);
+            }
+        }
+
+        $cPos = 0;
+        $DrawPos = $this->DrawStart($sPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);
+        do {
+            $c     = $this->GetCharIndex($this->mValue[$cPos].$this->mValue[$cPos+1]);
+            $cset  = $this->mCharSet[$c];
+            $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[0], $xres) , $ysize);
+            $DrawPos += $this->GetBarSize($cset[0], $xres);
+            $DrawPos += $this->GetBarSize($cset[1], $xres);
+            $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[2], $xres) , $ysize);
+            $DrawPos += $this->GetBarSize($cset[2], $xres);
+            $DrawPos += $this->GetBarSize($cset[3], $xres);
+            $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[4], $xres) , $ysize);
+            $DrawPos += $this->GetBarSize($cset[4], $xres);
+            $DrawPos += $this->GetBarSize($cset[5], $xres);
+            $cPos += 2;
+        } while ($cPos<$len);
+        $DrawPos = $this->DrawCheckChar($DrawPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);
+        $DrawPos =  $this->DrawStop($DrawPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);
+        return true;
+    }
+}
+
+//============================================================+
+// END OF FILE
+//============================================================+
+?>
diff --git a/lib/tcpdf/barcode/c39object.php b/lib/tcpdf/barcode/c39object.php
new file mode 100755 (executable)
index 0000000..bb253cb
--- /dev/null
@@ -0,0 +1,283 @@
+<?php
+//============================================================+
+// File name   : c39object.php
+// Begin       : 2002-07-31
+// Last Update : 2004-12-29
+// Author      : Karim Mribti [barcode@mribti.com]
+//             : Nicola Asuni [info@tecnick.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 39 Barcode Render Class for PHP using
+//               the GD graphics library.
+//               Code 39 is an alphanumeric bar code that can
+//               encode decimal number, case alphabet and some
+//               special symbols.
+//
+// NOTE:
+// This version contains changes by Nicola Asuni:
+//  - porting to PHP4
+//  - code style and formatting
+//  - automatic php documentation in PhpDocumentor Style
+//    (www.phpdoc.org)
+//  - minor bug fixing
+//============================================================+
+
+/**
+ * Code 39 Barcode Render Class.<br>
+ * Code 39 is an alphanumeric bar code that can encode decimal number, case alphabet and some special symbols.
+ * @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 39 Barcode Render Class.<br>
+ * Code 39 is an alphanumeric bar code that can encode decimal number, case alphabet and some special symbols.
+ * @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 C39Object 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.
+     */
+    function C39Object($Width, $Height, $Style, $Value) {
+        $this->BarcodeObject($Width, $Height, $Style);
+        $this->mValue = $Value;
+        $this->mChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%";
+        $this->mCharSet = array (
+        /* 0  */ "000110100",
+        /* 1  */ "100100001",
+        /* 2  */ "001100001",
+        /* 3  */ "101100000",
+        /* 4  */ "000110001",
+        /* 5  */ "100110000",
+        /* 6  */ "001110000",
+        /* 7  */ "000100101",
+        /* 8  */ "100100100",
+        /* 9  */ "001100100",
+        /* A  */ "100001001",
+        /* B  */ "001001001",
+        /* C  */ "101001000",
+        /* D  */ "000011001",
+        /* E  */ "100011000",
+        /* F  */ "001011000",
+        /* G  */ "000001101",
+        /* H  */ "100001100",
+        /* I  */ "001001100",
+        /* J  */ "000011100",
+        /* K  */ "100000011",
+        /* L  */ "001000011",
+        /* M  */ "101000010",
+        /* N  */ "000010011",
+        /* O  */ "100010010",
+        /* P  */ "001010010",
+        /* Q  */ "000000111",
+        /* R  */ "100000110",
+        /* S  */ "001000110",
+        /* T  */ "000010110",
+        /* U  */ "110000001",
+        /* V  */ "011000001",
+        /* W  */ "111000000",
+        /* X  */ "010010001",
+        /* Y  */ "110010000",
+        /* Z  */ "011010000",
+        /* -  */ "010000101",
+        /* .  */ "110000100",
+        /* SP */ "011000100",
+        /* *  */ "010010100",
+        /* $  */ "010101000",
+        /* /  */ "010100010",
+        /* +  */ "010001010",
+        /* %  */ "000101010"
+        );
+    }
+
+    /**
+     * Returns the character index.
+     * @param char $char character.
+     * @return int character index or -1 in case of error.
+     * @access private
+     */
+    function GetCharIndex($char) {
+        for ($i=0;$i<44;$i++) {
+            if ($this->mChars[$i] == $char) {
+                return $i;
+            }
+        }
+        return -1;
+    }
+    
+    /**
+     * Returns barcode size.
+     * @param int $xres Horizontal resolution.
+     * @return barcode size.
+     * @access private
+     */
+    function GetSize($xres) {
+        $len = strlen($this->mValue);
+
+        if ($len == 0)  {
+            $this->mError = "Null value";
+            return false;
+        }
+
+        for ($i=0;$i<$len;$i++) {
+            if ($this->GetCharIndex($this->mValue[$i]) == -1 || $this->mValue[$i] == '*') {
+                /* The asterisk is only used as a start and stop code */
+                $this->mError = "C39 not include the char '".$this->mValue[$i]."'";
+                return false;
+            }
+        }
+
+        /* Start, Stop is 010010100 == '*'  */
+        $StartSize = BCD_C39_NARROW_BAR * $xres * 6 + BCD_C39_WIDE_BAR * $xres * 3;
+        $StopSize  = BCD_C39_NARROW_BAR * $xres * 6 + BCD_C39_WIDE_BAR * $xres * 3;
+        $CharSize  = BCD_C39_NARROW_BAR * $xres * 6 + BCD_C39_WIDE_BAR * $xres * 3; /* Same for all chars */
+
+        return $CharSize * $len + $StartSize + $StopSize + /* Space between chars */ BCD_C39_NARROW_BAR * $xres * ($len-1);
+    }
+
+    /**
+     * 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
+     */
+    function DrawStart($DrawPos, $yPos, $ySize, $xres) {
+        /* Start code is '*' */
+        $narrow = BCD_C39_NARROW_BAR * $xres;
+        $wide   = BCD_C39_WIDE_BAR * $xres;
+        $this->DrawSingleBar($DrawPos, $yPos, $narrow , $ySize);
+        $DrawPos += $narrow;
+        $DrawPos += $wide;
+        $this->DrawSingleBar($DrawPos, $yPos, $narrow , $ySize);
+        $DrawPos += $narrow;
+        $DrawPos += $narrow;
+        $this->DrawSingleBar($DrawPos, $yPos, $wide , $ySize);
+        $DrawPos += $wide;
+        $DrawPos += $narrow;
+        $this->DrawSingleBar($DrawPos, $yPos, $wide , $ySize);
+        $DrawPos += $wide;
+        $DrawPos += $narrow;
+        $this->DrawSingleBar($DrawPos, $yPos, $narrow, $ySize);
+        $DrawPos += $narrow;
+        $DrawPos += $narrow; /* Space between chars */
+        return $DrawPos;
+    }
+    
+    /**
+     * 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
+     */
+    function DrawStop($DrawPos, $yPos, $ySize, $xres) {
+        /* Stop code is '*' */
+        $narrow = BCD_C39_NARROW_BAR * $xres;
+        $wide   = BCD_C39_WIDE_BAR * $xres;
+        $this->DrawSingleBar($DrawPos, $yPos, $narrow , $ySize);
+        $DrawPos += $narrow;
+        $DrawPos += $wide;
+        $this->DrawSingleBar($DrawPos, $yPos, $narrow , $ySize);
+        $DrawPos += $narrow;
+        $DrawPos += $narrow;
+        $this->DrawSingleBar($DrawPos, $yPos, $wide , $ySize);
+        $DrawPos += $wide;
+        $DrawPos += $narrow;
+        $this->DrawSingleBar($DrawPos, $yPos, $wide , $ySize);
+        $DrawPos += $wide;
+        $DrawPos += $narrow;
+        $this->DrawSingleBar($DrawPos, $yPos, $narrow, $ySize);
+        $DrawPos += $narrow;
+        return $DrawPos;
+    }
+    
+    /**
+     * Draws the barcode object.
+     * @param int $xres Horizontal resolution.
+     * @return bool true in case of success.
+     */
+    function DrawObject($xres) {
+        $len = strlen($this->mValue);
+
+        $narrow = BCD_C39_NARROW_BAR * $xres;
+        $wide   = BCD_C39_WIDE_BAR * $xres;
+
+        if (($size = $this->GetSize($xres))==0) {
+            return false;
+        }
+
+        $cPos = 0;
+        if ($this->mStyle & BCS_ALIGN_CENTER) $sPos = (integer)(($this->mWidth - $size ) / 2);
+        else if ($this->mStyle & BCS_ALIGN_RIGHT) $sPos = $this->mWidth - $size;
+        else $sPos = 0;
+
+        /* Total height of bar code -Bars only- */
+        if ($this->mStyle & BCS_DRAW_TEXT) $ysize = $this->mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2 - $this->GetFontHeight($this->mFont);
+        else $ysize = $this->mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2;
+
+        /* Draw text */
+        if ($this->mStyle & BCS_DRAW_TEXT) {
+            if ($this->mStyle & BCS_STRETCH_TEXT) {
+                for ($i=0;$i<$len;$i++) {
+                    $this->DrawChar($this->mFont, $sPos+($narrow*6+$wide*3)+($size/$len)*$i,
+                    $ysize + BCD_DEFAULT_MAR_Y1 + BCD_DEFAULT_TEXT_OFFSET, $this->mValue[$i]);
+                }
+            } else {/* Center */
+            $text_width = $this->GetFontWidth($this->mFont) * strlen($this->mValue);
+            $this->DrawText($this->mFont, $sPos+(($size-$text_width)/2)+($narrow*6+$wide*3),
+            $ysize + BCD_DEFAULT_MAR_Y1 + BCD_DEFAULT_TEXT_OFFSET, $this->mValue);
+            }
+        }
+
+        $DrawPos = $this->DrawStart($sPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);
+        do {
+            $c     = $this->GetCharIndex($this->mValue[$cPos]);
+            $cset  = $this->mCharSet[$c];
+            $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, ($cset[0] == '0') ? $narrow : $wide , $ysize);
+            $DrawPos += ($cset[0] == '0') ? $narrow : $wide;
+            $DrawPos += ($cset[1] == '0') ? $narrow : $wide;
+            $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, ($cset[2] == '0') ? $narrow : $wide , $ysize);
+            $DrawPos += ($cset[2] == '0') ? $narrow : $wide;
+            $DrawPos += ($cset[3] == '0') ? $narrow : $wide;
+            $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, ($cset[4] == '0') ? $narrow : $wide , $ysize);
+            $DrawPos += ($cset[4] == '0') ? $narrow : $wide;
+            $DrawPos += ($cset[5] == '0') ? $narrow : $wide;
+            $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, ($cset[6] == '0') ? $narrow : $wide , $ysize);
+            $DrawPos += ($cset[6] == '0') ? $narrow : $wide;
+            $DrawPos += ($cset[7] == '0') ? $narrow : $wide;
+            $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, ($cset[8] == '0') ? $narrow : $wide , $ysize);
+            $DrawPos += ($cset[8] == '0') ? $narrow : $wide;
+            $DrawPos += $narrow; /* Space between chars */
+            $cPos++;
+        } while ($cPos<$len);
+        $DrawPos =  $this->DrawStop($DrawPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres);
+        return true;
+    }
+}
+
+//============================================================+
+// END OF FILE
+//============================================================+
+?>
\ No newline at end of file
diff --git a/lib/tcpdf/barcode/i25object.php b/lib/tcpdf/barcode/i25object.php
new file mode 100755 (executable)
index 0000000..3e58959
--- /dev/null
@@ -0,0 +1,217 @@
+<?php
+//============================================================+
+// File name   : i25aobject.php
+// Begin       : 2002-07-31
+// Last Update : 2004-12-29
+// Author      : Karim Mribti [barcode@mribti.com]
+//             : Nicola Asuni [info@tecnick.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 : I25 Barcode Render Class for PHP using
+//               the GD graphics library.
+//               Interleaved 2 of 5 is a numeric only bar code
+//               with a optional check number.
+//
+// NOTE:
+// This version contains changes by Nicola Asuni:
+//  - porting to PHP4
+//  - code style and formatting
+//  - automatic php documentation in PhpDocumentor Style
+//    (www.phpdoc.org)
+//  - minor bug fixing
+//============================================================+
+
+/**
+ * I25 Barcode Render Class for PHP using the GD graphics library.<br<
+ * Interleaved 2 of 5 is a numeric only bar code with a optional check number.
+ * @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
+ */
+
+/**
+ * I25 Barcode Render Class for PHP using the GD graphics library.<br<
+ * Interleaved 2 of 5 is a numeric only bar code with a optional check number.
+ * @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 I25Object 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.
+     */
+    function I25Object($Width, $Height, $Style, $Value) {
+        $this->BarcodeObject($Width, $Height, $Style);
+        $this->mValue = $Value;
+        $this->mCharSet = array (
+        /* 0 */ "00110",
+        /* 1 */ "10001",
+        /* 2 */ "01001",
+        /* 3 */ "11000",
+        /* 4 */ "00101",
+        /* 5 */ "10100",
+        /* 6 */ "01100",
+        /* 7 */ "00011",
+        /* 8 */ "10010",
+        /* 9 */ "01010"
+        );
+    }
+    
+    /**
+     * Returns barcode size.
+     * @param int $xres Horizontal resolution.
+     * @return barcode size.
+     * @access private
+     */
+    function GetSize($xres) {
+        $len = strlen($this->mValue);
+
+        if ($len == 0)  {
+            $this->mError = "Null value";
+            return false;
+        }
+
+        for ($i=0;$i<$len;$i++) {
+            if ((ord($this->mValue[$i])<48) || (ord($this->mValue[$i])>57)) {
+                $this->mError = "I25 is numeric only";
+                return false;
+            }
+        }
+
+        if (($len%2) != 0) {
+            $this->mError = "The length of barcode value must be even";
+            return false;
+        }
+        $StartSize = BCD_I25_NARROW_BAR * 4  * $xres;
+        $StopSize  = BCD_I25_WIDE_BAR * $xres + 2 * BCD_I25_NARROW_BAR * $xres;
+        $cPos = 0;
+        $sPos = 0;
+        do {
+            $c1    = $this->mValue[$cPos];
+            $c2    = $this->mValue[$cPos+1];
+            $cset1 = $this->mCharSet[$c1];
+            $cset2 = $this->mCharSet[$c2];
+
+            for ($i=0;$i<5;$i++) {
+                $type1 = ($cset1[$i]==0) ? (BCD_I25_NARROW_BAR  * $xres) : (BCD_I25_WIDE_BAR * $xres);
+                $type2 = ($cset2[$i]==0) ? (BCD_I25_NARROW_BAR  * $xres) : (BCD_I25_WIDE_BAR * $xres);
+                $sPos += ($type1 + $type2);
+            }
+            $cPos+=2;
+        } while ($cPos<$len);
+
+        return $sPos + $StartSize + $StopSize;
+    }
+
+    /**
+     * 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
+     */
+    function DrawStart($DrawPos, $yPos, $ySize, $xres) {
+        /* Start code is "0000" */
+        $this->DrawSingleBar($DrawPos, $yPos, BCD_I25_NARROW_BAR  * $xres , $ySize);
+        $DrawPos += BCD_I25_NARROW_BAR  * $xres;
+        $DrawPos += BCD_I25_NARROW_BAR  * $xres;
+        $this->DrawSingleBar($DrawPos, $yPos, BCD_I25_NARROW_BAR  * $xres , $ySize);
+        $DrawPos += BCD_I25_NARROW_BAR  * $xres;
+        $DrawPos += BCD_I25_NARROW_BAR  * $xres;
+        return $DrawPos;
+    }
+    
+    /**
+     * 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
+     */
+    function DrawStop($DrawPos, $yPos, $ySize, $xres) {
+        /* Stop code is "100" */
+        $this->DrawSingleBar($DrawPos, $yPos, BCD_I25_WIDE_BAR * $xres , $ySize);
+        $DrawPos += BCD_I25_WIDE_BAR  * $xres;
+        $DrawPos += BCD_I25_NARROW_BAR  * $xres;
+        $this->DrawSingleBar($DrawPos, $yPos, BCD_I25_NARROW_BAR  * $xres , $ySize);
+        $DrawPos += BCD_I25_NARROW_BAR  * $xres;
+        return $DrawPos;
+    }
+
+    /**
+     * Draws the barcode object.
+     * @param int $xres Horizontal resolution.
+     * @return bool true in case of success.
+     */
+    function DrawObject($xres) {
+        $len = strlen($this->mValue);
+
+        if (($size = $this->GetSize($xres))==0) {
+            return false;
+        }
+
+        $cPos  = 0;
+
+        if ($this->mStyle & BCS_DRAW_TEXT) $ysize = $this->mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2 - $this->GetFontHeight($this->mFont);
+        else $ysize = $this->mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2;
+
+        if ($this->mStyle & BCS_ALIGN_CENTER) $sPos = (integer)(($this->mWidth - $size ) / 2);
+        else if ($this->mStyle & BCS_ALIGN_RIGHT) $sPos = $this->mWidth - $size;
+        else $sPos = 0;
+
+        if ($this->mStyle & BCS_DRAW_TEXT) {
+            if ($this->mStyle & BCS_STRETCH_TEXT) {
+                /* Stretch */
+                for ($i=0;$i<$len;$i++) {
+                    $this->DrawChar($this->mFont, $sPos+BCD_I25_NARROW_BAR*4*$xres+($size/$len)*$i,
+                    $ysize + BCD_DEFAULT_MAR_Y1 + BCD_DEFAULT_TEXT_OFFSET , $this->mValue[$i]);
+                }
+            }else {/* Center */
+            $text_width = $this->GetFontWidth($this->mFont) * strlen($this->mValue);
+            $this->DrawText($this->mFont, $sPos+(($size-$text_width)/2)+(BCD_I25_NARROW_BAR*4*$xres),
+            $ysize + BCD_DEFAULT_MAR_Y1 + BCD_DEFAULT_TEXT_OFFSET, $this->mValue);
+            }
+        }
+
+        $sPos = $this->DrawStart($sPos, BCD_DEFAULT_MAR_Y1, $ysize, $xres);
+        do {
+            $c1 = $this->mValue[$cPos];
+            $c2 = $this->mValue[$cPos+1];
+            $cset1 = $this->mCharSet[$c1];
+            $cset2 = $this->mCharSet[$c2];
+
+            for ($i=0;$i<5;$i++) {
+                $type1 = ($cset1[$i]==0) ? (BCD_I25_NARROW_BAR * $xres) : (BCD_I25_WIDE_BAR * $xres);
+                $type2 = ($cset2[$i]==0) ? (BCD_I25_NARROW_BAR * $xres) : (BCD_I25_WIDE_BAR * $xres);
+                $this->DrawSingleBar($sPos, BCD_DEFAULT_MAR_Y1, $type1 , $ysize);
+                $sPos += ($type1 + $type2);
+            }
+            $cPos+=2;
+        } while ($cPos<$len);
+        $sPos =  $this->DrawStop($sPos, BCD_DEFAULT_MAR_Y1, $ysize, $xres);
+        return true;
+    }
+}
+
+//============================================================+
+// END OF FILE
+//============================================================+
+?>
\ No newline at end of file
diff --git a/lib/tcpdf/barcode/image.php b/lib/tcpdf/barcode/image.php
new file mode 100755 (executable)
index 0000000..056eace
--- /dev/null
@@ -0,0 +1,88 @@
+<?php
+//============================================================+
+// File name   : image.php
+// Begin       : 2002-07-31
+// Last Update : 2005-01-08
+// Author      : Karim Mribti [barcode@mribti.com]
+//             : Nicola Asuni [info@tecnick.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 : Barcode Image Rendering.
+//
+// NOTE:
+// This version contains changes by Nicola Asuni:
+//  - porting to PHP5
+//  - code style and formatting
+//  - automatic php documentation in PhpDocumentor Style
+//    (www.phpdoc.org)
+//  - minor bug fixing
+//============================================================+
+
+/**
+ * Barcode Image Rendering.
+ * @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
+ */
+
+/**
+ * 
+ */
+
+require("../../shared/barcode/barcode.php");
+require("../../shared/barcode/i25object.php");
+require("../../shared/barcode/c39object.php");
+require("../../shared/barcode/c128aobject.php");
+require("../../shared/barcode/c128bobject.php");
+require("../../shared/barcode/c128cobject.php");
+
+if (!isset($_REQUEST['style'])) $_REQUEST['style'] = BCD_DEFAULT_STYLE;
+if (!isset($_REQUEST['width'])) $_REQUEST['width'] = BCD_DEFAULT_WIDTH;
+if (!isset($_REQUEST['height'])) $_REQUEST['height'] = BCD_DEFAULT_HEIGHT;
+if (!isset($_REQUEST['xres'])) $_REQUEST['xres'] = BCD_DEFAULT_XRES;
+if (!isset($_REQUEST['font'])) $_REQUEST['font'] = BCD_DEFAULT_FONT;
+if (!isset($_REQUEST['type'])) $_REQUEST['type'] = "C39";
+if (!isset($_REQUEST['code'])) $_REQUEST['code'] = "";
+
+switch (strtoupper($_REQUEST['type'])) {
+    case "I25": {
+        $obj = new I25Object($_REQUEST['width'], $_REQUEST['height'], $_REQUEST['style'], $_REQUEST['code']);
+        break;
+    }
+    case "C128A": {
+        $obj = new C128AObject($_REQUEST['width'], $_REQUEST['height'], $_REQUEST['style'], $_REQUEST['code']);
+        break;
+    }
+    case "C128B": {
+        $obj = new C128BObject($_REQUEST['width'], $_REQUEST['height'], $_REQUEST['style'], $_REQUEST['code']);
+        break;
+    }
+    case "C128C": {
+        $obj = new C128CObject($_REQUEST['width'], $_REQUEST['height'], $_REQUEST['style'], $_REQUEST['code']);
+        break;
+    }
+    case "C39":
+    default: {
+        $obj = new C39Object($_REQUEST['width'], $_REQUEST['height'], $_REQUEST['style'], $_REQUEST['code']);
+        break;
+    }
+}
+
+if ($obj) {
+    $obj->SetFont($_REQUEST['font']);   
+    $obj->DrawObject($_REQUEST['xres']);
+    $obj->FlushObject();
+    $obj->DestroyObject();
+    unset($obj);  /* clean */
+}
+
+//============================================================+
+// END OF FILE                                                 
+//============================================================+
+?>
\ No newline at end of file
diff --git a/lib/yui/tabview/assets/tabs.css b/lib/yui/tabview/assets/tabs.css
new file mode 100755 (executable)
index 0000000..da8ef13
--- /dev/null
@@ -0,0 +1,66 @@
+/* default space between tabs */\r
+.yui-navset-top .yui-nav li, .yui-navset-bottom .yui-nav li {\r
+    margin-right:0.5em; /* horizontal tabs */\r
+}\r
+.yui-navset-left .yui-nav li, .yui-navset-right .yui-nav li {\r
+    margin-bottom:0.5em; /* vertical tabs */\r
+}\r
+\r
+.yui-navset .yui-nav li em { padding:.5em; } /* default tab padding */\r
+\r
+/* default width for side tabs */\r
+.yui-navset-left .yui-nav, .yui-navset-right .yui-nav { width:6em; }\r
+.yui-navset-left { padding-left:6em; } /* map to nav width */\r
+.yui-navset-right { padding-right:6em; } /* ditto */\r
+\r
+/* core */\r
+\r
+.yui-nav, .yui-nav li {\r
+    margin:0;\r
+    padding:0;\r
+    list-style:none;\r
+}\r
+.yui-navset li em { font-style:normal; }\r
+\r
+.yui-navset {\r
+    position:relative; /* contain absolute positioned tabs (left/right) */\r
+    zoom:1;\r
+}\r
+\r
+.yui-navset .yui-content { zoom:1; }\r
+\r
+.yui-navset-top .yui-nav li, .yui-navset-bottom .yui-nav li {\r
+    display:inline-block;\r
+    display:-moz-inline-stack;\r
+    *display:inline; /* IE */\r
+    vertical-align:bottom; /* safari: for overlap */\r
+    cursor:pointer; /* gecko: due to -moz-inline-stack on anchor */\r
+    zoom:1; /* IE: kill space between horizontal tabs */\r
+}\r
+\r
+.yui-navset .yui-nav a {\r
+    outline:0; /* gecko: keep from shifting */\r
+}\r
+\r
+.yui-navset .yui-nav a { position:relative; } /* IE: to allow overlap */\r
+\r
+.yui-navset .yui-nav li a {\r
+    display:block;\r
+    zoom:1;\r
+}\r
+\r
+.yui-navset-top .yui-nav li a, .yui-navset-bottom .yui-nav li a {\r
+    display:inline-block;\r
+    vertical-align:bottom; /* safari: for overlap */\r
+}\r
+\r
+.yui-navset-bottom .yui-nav li a {\r
+    vertical-align:text-top; /* for inline overlap (reverse for Op border bug) */\r
+}\r
+\r
+.yui-navset .yui-nav li a em { display:block; }\r
+\r
+/* position left and right oriented tabs */\r
+.yui-navset-left .yui-nav, .yui-navset-right .yui-nav { position:absolute; z-index:1; }\r
+.yui-navset-left .yui-nav { left:0; }\r
+.yui-navset-right .yui-nav { right:0; }\r