[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 <?php 2 //============================================================+ 3 // File name : c128aobject.php 4 // Begin : 2002-07-31 5 // Last Update : 2004-12-29 6 // Author : Karim Mribti [[email protected]] 7 // Version : 0.0.8a 2001-04-01 (original code) 8 // License : GNU LGPL (Lesser General Public License) 2.1 9 // http://www.gnu.org/copyleft/lesser.txt 10 // Source Code : http://www.mribti.com/barcode/ 11 // 12 // Description : Code 128-A Barcode Render Class for PHP using 13 // the GD graphics library. 14 // Code 128-A is a continuous, multilevel and 15 // include all upper case alphanumeric characters 16 // and ASCII control characters. 17 // 18 // NOTE: 19 // This version contains changes by Nicola Asuni: 20 // - porting to PHP5 21 // - code style and formatting 22 // - automatic php documentation in PhpDocumentor Style 23 // (www.phpdoc.org) 24 // - minor bug fixing 25 //============================================================+ 26 27 /** 28 * Code 128-A Barcode Render Class for PHP using the GD graphics library.<br> 29 * Code 128-A is a continuous, multilevel and include all upper case alphanumeric characters and ASCII control characters. 30 * @author Karim Mribti, Nicola Asuni 31 * @name BarcodeObject 32 * @package com.tecnick.tcpdf 33 * @version 0.0.8a 2001-04-01 (original code) 34 * @since 2001-03-25 35 * @license http://www.gnu.org/copyleft/lesser.html LGPL 36 */ 37 38 /** 39 * Code 128-A Barcode Render Class for PHP using the GD graphics library.<br> 40 * Code 128-A is a continuous, multilevel and include all upper case alphanumeric characters and ASCII control characters. 41 * @author Karim Mribti, Nicola Asuni 42 * @name BarcodeObject 43 * @package com.tecnick.tcpdf 44 * @version 0.0.8a 2001-04-01 (original code) 45 * @since 2001-03-25 46 * @license http://www.gnu.org/copyleft/lesser.html LGPL 47 */ 48 class C128AObject extends BarcodeObject { 49 50 /** 51 * Class Constructor. 52 * @param int $Width Image width in pixels. 53 * @param int $Height Image height in pixels. 54 * @param int $Style Barcode style. 55 * @param int $Value value to print on barcode. 56 */ 57 public function __construct($Width, $Height, $Style, $Value) { 58 parent::__construct($Width, $Height, $Style); 59 $this->mValue = $Value; 60 $this->mChars = " !\"#$%&'()*+�-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"; 61 $this->mCharSet = array ( 62 "212222", /* 00 */ 63 "222122", /* 01 */ 64 "222221", /* 02 */ 65 "121223", /* 03 */ 66 "121322", /* 04 */ 67 "131222", /* 05 */ 68 "122213", /* 06 */ 69 "122312", /* 07 */ 70 "132212", /* 08 */ 71 "221213", /* 09 */ 72 "221312", /* 10 */ 73 "231212", /* 11 */ 74 "112232", /* 12 */ 75 "122132", /* 13 */ 76 "122231", /* 14 */ 77 "113222", /* 15 */ 78 "123122", /* 16 */ 79 "123221", /* 17 */ 80 "223211", /* 18 */ 81 "221132", /* 19 */ 82 "221231", /* 20 */ 83 "213212", /* 21 */ 84 "223112", /* 22 */ 85 "312131", /* 23 */ 86 "311222", /* 24 */ 87 "321122", /* 25 */ 88 "321221", /* 26 */ 89 "312212", /* 27 */ 90 "322112", /* 28 */ 91 "322211", /* 29 */ 92 "212123", /* 30 */ 93 "212321", /* 31 */ 94 "232121", /* 32 */ 95 "111323", /* 33 */ 96 "131123", /* 34 */ 97 "131321", /* 35 */ 98 "112313", /* 36 */ 99 "132113", /* 37 */ 100 "132311", /* 38 */ 101 "211313", /* 39 */ 102 "231113", /* 40 */ 103 "231311", /* 41 */ 104 "112133", /* 42 */ 105 "112331", /* 43 */ 106 "132131", /* 44 */ 107 "113123", /* 45 */ 108 "113321", /* 46 */ 109 "133121", /* 47 */ 110 "313121", /* 48 */ 111 "211331", /* 49 */ 112 "231131", /* 50 */ 113 "213113", /* 51 */ 114 "213311", /* 52 */ 115 "213131", /* 53 */ 116 "311123", /* 54 */ 117 "311321", /* 55 */ 118 "331121", /* 56 */ 119 "312113", /* 57 */ 120 "312311", /* 58 */ 121 "332111", /* 59 */ 122 "314111", /* 60 */ 123 "221411", /* 61 */ 124 "431111", /* 62 */ 125 "111224", /* 63 */ 126 "111422", /* 64 */ 127 "121124", /* 65 */ 128 "121421", /* 66 */ 129 "141122", /* 67 */ 130 "141221", /* 68 */ 131 "112214", /* 69 */ 132 "112412", /* 70 */ 133 "122114", /* 71 */ 134 "122411", /* 72 */ 135 "142112", /* 73 */ 136 "142211", /* 74 */ 137 "241211", /* 75 */ 138 "221114", /* 76 */ 139 "413111", /* 77 */ 140 "241112", /* 78 */ 141 "134111", /* 79 */ 142 "111242", /* 80 */ 143 "121142", /* 81 */ 144 "121241", /* 82 */ 145 "114212", /* 83 */ 146 "124112", /* 84 */ 147 "124211", /* 85 */ 148 "411212", /* 86 */ 149 "421112", /* 87 */ 150 "421211", /* 88 */ 151 "212141", /* 89 */ 152 "214121", /* 90 */ 153 "412121", /* 91 */ 154 "111143", /* 92 */ 155 "111341", /* 93 */ 156 "131141", /* 94 */ 157 "114113", /* 95 */ 158 "114311", /* 96 */ 159 "411113", /* 97 */ 160 "411311", /* 98 */ 161 "113141", /* 99 */ 162 "114131", /* 100 */ 163 "311141", /* 101 */ 164 "411131" /* 102 */ 165 ); 166 } 167 168 /** 169 * Returns the character index. 170 * @param char $char character. 171 * @return int character index or -1 in case of error. 172 * @access private 173 */ 174 private function GetCharIndex($char) { 175 for ($i=0;$i<64;$i++) { 176 if ($this->mChars[$i] == $char) { 177 return $i; 178 } 179 } 180 return -1; 181 } 182 183 /** 184 * Returns the bar size. 185 * @param int $xres Horizontal resolution. 186 * @param char $char Character. 187 * @return int barcode size. 188 * @access private 189 */ 190 private function GetBarSize($xres, $char) { 191 switch ($char) { 192 case '1': { 193 $cVal = BCD_C128_BAR_1; 194 break; 195 } 196 case '2': { 197 $cVal = BCD_C128_BAR_2; 198 break; 199 } 200 case '3': { 201 $cVal = BCD_C128_BAR_3; 202 break; 203 } 204 case '4': { 205 $cVal = BCD_C128_BAR_4; 206 break; 207 } 208 default: { 209 $cVal = 0; 210 } 211 } 212 return $cVal * $xres; 213 } 214 215 /** 216 * Returns barcode size. 217 * @param int $xres Horizontal resolution. 218 * @return barcode size. 219 * @access private 220 */ 221 private function GetSize($xres) { 222 $len = strlen($this->mValue); 223 224 if ($len == 0) { 225 $this->mError = "Null value"; 226 return false; 227 } 228 $ret = 0; 229 for ($i=0;$i<$len;$i++) { 230 if (($id = $this->GetCharIndex($this->mValue[$i])) == -1) { 231 $this->mError = "C128A not include the char '".$this->mValue[$i]."'"; 232 return false; 233 } else { 234 $cset = $this->mCharSet[$id]; 235 $ret += $this->GetBarSize($xres, $cset[0]); 236 $ret += $this->GetBarSize($xres, $cset[1]); 237 $ret += $this->GetBarSize($xres, $cset[2]); 238 $ret += $this->GetBarSize($xres, $cset[3]); 239 $ret += $this->GetBarSize($xres, $cset[4]); 240 $ret += $this->GetBarSize($xres, $cset[5]); 241 } 242 } 243 244 /* length of Check character */ 245 $cset = $this->GetCheckCharValue(); 246 $CheckSize = 0; 247 for ($i=0;$i<6;$i++) { 248 $CheckSize += $this->GetBarSize($cset[$i], $xres); 249 } 250 $StartSize = 2*BCD_C128_BAR_2*$xres + 3*BCD_C128_BAR_1*$xres + BCD_C128_BAR_4*$xres; 251 $StopSize = 2*BCD_C128_BAR_2*$xres + 3*BCD_C128_BAR_1*$xres + 2*BCD_C128_BAR_3*$xres; 252 return $StartSize + $ret + $CheckSize + $StopSize; 253 } 254 255 /** 256 * Returns the check-char value. 257 * @return string. 258 * @access private 259 */ 260 private function GetCheckCharValue() { 261 $len = strlen($this->mValue); 262 $sum = 103; // 'A' type; 263 for ($i=0;$i<$len;$i++) { 264 $sum += $this->GetCharIndex($this->mValue[$i]) * ($i+1); 265 } 266 $check = $sum % 103; 267 return $this->mCharSet[$check]; 268 } 269 270 /** 271 * Draws the start code. 272 * @param int $DrawPos Drawing position. 273 * @param int $yPos Vertical position. 274 * @param int $ySize Vertical size. 275 * @param int $xres Horizontal resolution. 276 * @return int drawing position. 277 * @access private 278 */ 279 private function DrawStart($DrawPos, $yPos, $ySize, $xres) { 280 /* Start code is '211412' */ 281 $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('2', $xres) , $ySize); 282 $DrawPos += $this->GetBarSize('2', $xres); 283 $DrawPos += $this->GetBarSize('1', $xres); 284 $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('1', $xres) , $ySize); 285 $DrawPos += $this->GetBarSize('1', $xres); 286 $DrawPos += $this->GetBarSize('4', $xres); 287 $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('1', $xres) , $ySize); 288 $DrawPos += $this->GetBarSize('1', $xres); 289 $DrawPos += $this->GetBarSize('2', $xres); 290 return $DrawPos; 291 } 292 293 /** 294 * Draws the stop code. 295 * @param int $DrawPos Drawing position. 296 * @param int $yPos Vertical position. 297 * @param int $ySize Vertical size. 298 * @param int $xres Horizontal resolution. 299 * @return int drawing position. 300 * @access private 301 */ 302 private function DrawStop($DrawPos, $yPos, $ySize, $xres) { 303 /* Stop code is '2331112' */ 304 $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('2', $xres) , $ySize); 305 $DrawPos += $this->GetBarSize('2', $xres); 306 $DrawPos += $this->GetBarSize('3', $xres); 307 $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('3', $xres) , $ySize); 308 $DrawPos += $this->GetBarSize('3', $xres); 309 $DrawPos += $this->GetBarSize('1', $xres); 310 $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('1', $xres) , $ySize); 311 $DrawPos += $this->GetBarSize('1', $xres); 312 $DrawPos += $this->GetBarSize('1', $xres); 313 $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('2', $xres) , $ySize); 314 $DrawPos += $this->GetBarSize('2', $xres); 315 return $DrawPos; 316 } 317 318 /** 319 * Draws the check-char code. 320 * @param int $DrawPos Drawing position. 321 * @param int $yPos Vertical position. 322 * @param int $ySize Vertical size. 323 * @param int $xres Horizontal resolution. 324 * @return int drawing position. 325 * @access private 326 */ 327 private function DrawCheckChar($DrawPos, $yPos, $ySize, $xres) { 328 $cset = $this->GetCheckCharValue(); 329 $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[0], $xres) , $ySize); 330 $DrawPos += $this->GetBarSize($cset[0], $xres); 331 $DrawPos += $this->GetBarSize($cset[1], $xres); 332 $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[2], $xres) , $ySize); 333 $DrawPos += $this->GetBarSize($cset[2], $xres); 334 $DrawPos += $this->GetBarSize($cset[3], $xres); 335 $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[4], $xres) , $ySize); 336 $DrawPos += $this->GetBarSize($cset[4], $xres); 337 $DrawPos += $this->GetBarSize($cset[5], $xres); 338 return $DrawPos; 339 } 340 341 /** 342 * Draws the barcode object. 343 * @param int $xres Horizontal resolution. 344 * @return bool true in case of success. 345 */ 346 public function DrawObject($xres) { 347 $len = strlen($this->mValue); 348 if (($size = $this->GetSize($xres))==0) { 349 return false; 350 } 351 352 if ($this->mStyle & BCS_ALIGN_CENTER) $sPos = (integer)(($this->mWidth - $size ) / 2); 353 else if ($this->mStyle & BCS_ALIGN_RIGHT) $sPos = $this->mWidth - $size; 354 else $sPos = 0; 355 356 /* Total height of bar code -Bars only- */ 357 if ($this->mStyle & BCS_DRAW_TEXT) $ysize = $this->mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2 - $this->GetFontHeight($this->mFont); 358 else $ysize = $this->mHeight - BCD_DEFAULT_MAR_Y1 - BCD_DEFAULT_MAR_Y2; 359 360 /* Draw text */ 361 if ($this->mStyle & BCS_DRAW_TEXT) { 362 if ($this->mStyle & BCS_STRETCH_TEXT) { 363 for ($i=0;$i<$len;$i++) { 364 $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, 365 $ysize + BCD_DEFAULT_MAR_Y1 + BCD_DEFAULT_TEXT_OFFSET, $this->mValue[$i]); 366 } 367 } else {/* Center */ 368 $text_width = $this->GetFontWidth($this->mFont) * strlen($this->mValue); 369 $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), 370 $ysize + BCD_DEFAULT_MAR_Y1 + BCD_DEFAULT_TEXT_OFFSET, $this->mValue); 371 } 372 } 373 374 $cPos = 0; 375 $DrawPos = $this->DrawStart($sPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres); 376 do { 377 $c = $this->GetCharIndex($this->mValue[$cPos]); 378 $cset = $this->mCharSet[$c]; 379 $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[0], $xres) , $ysize); 380 $DrawPos += $this->GetBarSize($cset[0], $xres); 381 $DrawPos += $this->GetBarSize($cset[1], $xres); 382 $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[2], $xres) , $ysize); 383 $DrawPos += $this->GetBarSize($cset[2], $xres); 384 $DrawPos += $this->GetBarSize($cset[3], $xres); 385 $this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize($cset[4], $xres) , $ysize); 386 $DrawPos += $this->GetBarSize($cset[4], $xres); 387 $DrawPos += $this->GetBarSize($cset[5], $xres); 388 $cPos++; 389 } while ($cPos<$len); 390 $DrawPos = $this->DrawCheckChar($DrawPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres); 391 $DrawPos = $this->DrawStop($DrawPos, BCD_DEFAULT_MAR_Y1 , $ysize, $xres); 392 return true; 393 } 394 } 395 396 //============================================================+ 397 // END OF FILE 398 //============================================================+ 399 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |