Chris@441: Chris@441: #============================================================+ Chris@441: # File name : i25aobject.rb Chris@441: # Begin : 2002-07-31 Chris@441: # Last Update : 2004-12-29 Chris@441: # Author : Karim Mribti [barcode@mribti.com] Chris@441: # : Nicola Asuni [info@tecnick.com] Chris@441: # Version : 0.0.8a 2001-04-01 (original code) Chris@441: # License : GNU LGPL (Lesser General Public License) 2.1 Chris@441: # http://www.gnu.org/copyleft/lesser.txt Chris@441: # Source Code : http://www.mribti.com/barcode/ Chris@441: # Chris@441: # Description : I25 Barcode Render Class for PHP using Chris@441: # the GD graphics library. Chris@441: # Interleaved 2 of 5 is a numeric only bar code Chris@441: # with a optional check number. Chris@441: # Chris@441: # NOTE: Chris@441: # This version contains changes by Nicola Asuni: Chris@441: # - porting to Ruby Chris@441: # - code style and formatting Chris@441: # - automatic php documentation in PhpDocumentor Style Chris@441: # (www.phpdoc.org) Chris@441: # - minor bug fixing Chris@441: #============================================================+ Chris@441: Chris@441: # Chris@441: # I25 Barcode Render Class for PHP using the GD graphics library. 57)) Chris@441: @mError = "I25 is numeric only"; Chris@441: return false; Chris@441: end Chris@441: end Chris@441: Chris@441: if (($len%2) != 0) Chris@441: @mError = "The length of barcode value must be even"; Chris@441: return false; Chris@441: end Chris@441: $StartSize = BCD_I25_NARROW_BAR# 4 # $xres; Chris@441: $StopSize = BCD_I25_WIDE_BAR# $xres + 2# BCD_I25_NARROW_BAR# $xres; Chris@441: $cPos = 0; Chris@441: $sPos = 0; Chris@441: do { Chris@441: $c1 = @mValue[$cPos]; Chris@441: $c2 = @mValue[$cPos+1]; Chris@441: $cset1 = @mCharSet[$c1]; Chris@441: $cset2 = @mCharSet[$c2]; Chris@441: Chris@441: for ($i=0;$i<5;$i++) Chris@441: $type1 = ($cset1[$i]==0) ? (BCD_I25_NARROW_BAR # $xres) : (BCD_I25_WIDE_BAR# $xres); Chris@441: $type2 = ($cset2[$i]==0) ? (BCD_I25_NARROW_BAR # $xres) : (BCD_I25_WIDE_BAR# $xres); Chris@441: $sPos += ($type1 + $type2); Chris@441: end Chris@441: $cPos+=2; Chris@441: end while ($cPos<$len); Chris@441: Chris@441: return $sPos + $StartSize + $StopSize; Chris@441: end Chris@441: Chris@441: # Chris@441: # Draws the start code. Chris@441: # @param int $DrawPos Drawing position. Chris@441: # @param int $yPos Vertical position. Chris@441: # @param int $ySize Vertical size. Chris@441: # @param int $xres Horizontal resolution. Chris@441: # @return int drawing position. Chris@441: # @access private Chris@441: # Chris@441: def DrawStart($DrawPos, $yPos, $ySize, $xres) Chris@441: # Start code is "0000"# Chris@441: @DrawSingleBar($DrawPos, $yPos, BCD_I25_NARROW_BAR # $xres , $ySize); Chris@441: $DrawPos += BCD_I25_NARROW_BAR # $xres; Chris@441: $DrawPos += BCD_I25_NARROW_BAR # $xres; Chris@441: @DrawSingleBar($DrawPos, $yPos, BCD_I25_NARROW_BAR # $xres , $ySize); Chris@441: $DrawPos += BCD_I25_NARROW_BAR # $xres; Chris@441: $DrawPos += BCD_I25_NARROW_BAR # $xres; Chris@441: return $DrawPos; Chris@441: end Chris@441: Chris@441: # Chris@441: # Draws the stop code. Chris@441: # @param int $DrawPos Drawing position. Chris@441: # @param int $yPos Vertical position. Chris@441: # @param int $ySize Vertical size. Chris@441: # @param int $xres Horizontal resolution. Chris@441: # @return int drawing position. Chris@441: # @access private Chris@441: # Chris@441: def DrawStop($DrawPos, $yPos, $ySize, $xres) Chris@441: # Stop code is "100"# Chris@441: @DrawSingleBar($DrawPos, $yPos, BCD_I25_WIDE_BAR# $xres , $ySize); Chris@441: $DrawPos += BCD_I25_WIDE_BAR # $xres; Chris@441: $DrawPos += BCD_I25_NARROW_BAR # $xres; Chris@441: @DrawSingleBar($DrawPos, $yPos, BCD_I25_NARROW_BAR # $xres , $ySize); Chris@441: $DrawPos += BCD_I25_NARROW_BAR # $xres; Chris@441: return $DrawPos; Chris@441: end Chris@441: Chris@441: # Chris@441: # Draws the barcode object. Chris@441: # @param int $xres Horizontal resolution. Chris@441: # @return bool true in case of success. Chris@441: # Chris@441: def DrawObject($xres) Chris@441: $len = @mValue.length; Chris@441: Chris@441: if (($size = GetSize($xres))==0) Chris@441: return false; Chris@441: end Chris@441: Chris@441: $cPos = 0; Chris@441: Chris@441: if (@mStyle & BCS_DRAW_TEXT) $ysize = @mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2 - GetFontHeight(@mFont); Chris@441: else $ysize = @mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2; Chris@441: Chris@441: if (@mStyle & BCS_ALIGN_CENTER) $sPos = (integer)((@mWidth - $size ) / 2); Chris@441: elsif (@mStyle & BCS_ALIGN_RIGHT) $sPos = @mWidth - $size; Chris@441: else $sPos = 0; Chris@441: Chris@441: if (@mStyle & BCS_DRAW_TEXT) Chris@441: if (@mStyle & BCS_STRETCH_TEXT) Chris@441: # Stretch# Chris@441: for ($i=0;$i<$len;$i++) Chris@441: @DrawChar(@mFont, $sPos+BCD_I25_NARROW_BAR*4*$xres+($size/$len)*$i, Chris@441: $ysize + BCD_DEFAULT_MAR_Y1 + BCD_DEFAULT_TEXT_OFFSET , @mValue[$i]); Chris@441: end Chris@441: endelse# Center# Chris@441: $text_width = GetFontWidth(@mFont) * @mValue.length; Chris@441: @DrawText(@mFont, $sPos+(($size-$text_width)/2)+(BCD_I25_NARROW_BAR*4*$xres), Chris@441: $ysize + BCD_DEFAULT_MAR_Y1 + BCD_DEFAULT_TEXT_OFFSET, @mValue); Chris@441: end Chris@441: end Chris@441: Chris@441: $sPos = @DrawStart($sPos, BCD_DEFAULT_MAR_Y1, $ysize, $xres); Chris@441: do { Chris@441: $c1 = @mValue[$cPos]; Chris@441: $c2 = @mValue[$cPos+1]; Chris@441: $cset1 = @mCharSet[$c1]; Chris@441: $cset2 = @mCharSet[$c2]; Chris@441: Chris@441: for ($i=0;$i<5;$i++) Chris@441: $type1 = ($cset1[$i]==0) ? (BCD_I25_NARROW_BAR# $xres) : (BCD_I25_WIDE_BAR# $xres); Chris@441: $type2 = ($cset2[$i]==0) ? (BCD_I25_NARROW_BAR# $xres) : (BCD_I25_WIDE_BAR# $xres); Chris@441: @DrawSingleBar($sPos, BCD_DEFAULT_MAR_Y1, $type1 , $ysize); Chris@441: $sPos += ($type1 + $type2); Chris@441: end Chris@441: $cPos+=2; Chris@441: end while ($cPos<$len); Chris@441: $sPos = @DrawStop($sPos, BCD_DEFAULT_MAR_Y1, $ysize, $xres); Chris@441: return true; Chris@441: end Chris@441: } Chris@441: Chris@441: #============================================================+ Chris@441: # END OF FILE Chris@441: #============================================================+