PNG  IHDR* pHYs+ IDATx]n#; cdLb Ǚ[at¤_:uP}>!Usă cag޿ ֵNu`ݼTâabO7uL&y^wFٝA"l[|ŲHLN밪4*sG3|Dv}?+y߉{OuOAt4Jj.u]Gz*҉sP'VQKbA1u\`& Af;HWj hsO;ogTu uj7S3/QzUr&wS`M$X_L7r2;aE+ώ%vikDA:dR+%KzƉo>eOth$z%: :{WwaQ:wz%4foɹE[9<]#ERINƻv溂E%P1i01 |Jvҗ&{b?9g=^wζXn/lK::90KwrюO\!ջ3uzuGv^;騢wq<Iatv09:tt~hEG`v;3@MNZD.1]L:{ծI3`L(÷ba")Y.iljCɄae#I"1 `3*Bdz>j<fU40⨬%O$3cGt]j%Fߠ_twJ;ABU8vP3uEԑwQ V:h%))LfraqX-ۿX]v-\9I gl8tzX ]ecm)-cgʒ#Uw=Wlێn(0hPP/ӨtQ“&J35 $=]r1{tLuǮ*i0_;NƝ8;-vݏr8+U-kruȕYr0RnC]*ެ(M:]gE;{]tg(#ZJ9y>utRDRMdr9㪩̞zֹb<ģ&wzJM"iI( .ꮅX)Qw:9,i좜\Ԛi7&N0:asϓc];=ΗOӣ APqz93 y $)A*kVHZwBƺnWNaby>XMN*45~ղM6Nvm;A=jֲ.~1}(9`KJ/V F9[=`~[;sRuk]rєT!)iQO)Y$V ی ۤmzWz5IM Zb )ˆC`6 rRa}qNmUfDsWuˤV{ Pݝ'=Kֳbg,UҘVz2ﴻnjNgBb{? ߮tcsͻQuxVCIY۠:(V뺕 ٥2;t`@Fo{Z9`;]wMzU~%UA蛚dI vGq\r82iu +St`cR.6U/M9IENDB`starting = 103; elseif($start=='B') $this->starting = 104; elseif($start=='C') $this->starting = 105; $this->ending = 106; $this->currentCode = $start; /* CODE 128 A */ $this->keysA = array(' ','!','"','#','$','%','&','\'','(',')','*','+',',','-','.','/','0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[','\\',']','^','_','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',chr(128),chr(129)); /* CODE 128 B */ $this->keysB = array(' ','!','"','#','$','%','&','\'','(',')','*','+',',','-','.','/','0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[','\\',']','^','_','`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','{','|','}','~','','','','',chr(128),'',chr(130)); /* CODE 128 C */ $this->keysC = array(); for($i=0;$i<=99;$i++) $this->keysC[] = sprintf('%02d',$i); $this->keysC[] = chr(129); $this->keysC[] = chr(130); $this->code = array( '101111', /* 00 */ '111011', /* 01 */ '111110', /* 02 */ '010112', /* 03 */ '010211', /* 04 */ '020111', /* 05 */ '011102', /* 06 */ '011201', /* 07 */ '021101', /* 08 */ '110102', /* 09 */ '110201', /* 10 */ '120101', /* 11 */ '001121', /* 12 */ '011021', /* 13 */ '011120', /* 14 */ '002111', /* 15 */ '012011', /* 16 */ '012110', /* 17 */ '112100', /* 18 */ '110021', /* 19 */ '110120', /* 20 */ '102101', /* 21 */ '112001', /* 22 */ '201020', /* 23 */ '200111', /* 24 */ '210011', /* 25 */ '210110', /* 26 */ '201101', /* 27 */ '211001', /* 28 */ '211100', /* 29 */ '101012', /* 30 */ '101210', /* 31 */ '121010', /* 32 */ '000212', /* 33 */ '020012', /* 34 */ '020210', /* 35 */ '001202', /* 36 */ '021002', /* 37 */ '021200', /* 38 */ '100202', /* 39 */ '120002', /* 40 */ '120200', /* 41 */ '001022', /* 42 */ '001220', /* 43 */ '021020', /* 44 */ '002012', /* 45 */ '002210', /* 46 */ '022010', /* 47 */ '202010', /* 48 */ '100220', /* 49 */ '120020', /* 50 */ '102002', /* 51 */ '102200', /* 52 */ '102020', /* 53 */ '200012', /* 54 */ '200210', /* 55 */ '220010', /* 56 */ '201002', /* 57 */ '201200', /* 58 */ '221000', /* 59 */ '203000', /* 60 */ '110300', /* 61 */ '320000', /* 62 */ '000113', /* 63 */ '000311', /* 64 */ '010013', /* 65 */ '010310', /* 66 */ '030011', /* 67 */ '030110', /* 68 */ '001103', /* 69 */ '001301', /* 70 */ '011003', /* 71 */ '011300', /* 72 */ '031001', /* 73 */ '031100', /* 74 */ '130100', /* 75 */ '110003', /* 76 */ '302000', /* 77 */ '130001', /* 78 */ '023000', /* 79 */ '000131', /* 80 */ '010031', /* 81 */ '010130', /* 82 */ '003101', /* 83 */ '013001', /* 84 */ '013100', /* 85 */ '300101', /* 86 */ '310001', /* 87 */ '310100', /* 88 */ '101030', /* 89 */ '103010', /* 90 */ '301010', /* 91 */ '000032', /* 92 */ '000230', /* 93 */ '020030', /* 94 */ '003002', /* 95 */ '003200', /* 96 */ '300002', /* 97 */ '300200', /* 98 */ '002030', /* 99 */ '003020', /* 100*/ '200030', /* 101*/ '300020', /* 102*/ '100301', /* 103*/ '100103', /* 104*/ '100121', /* 105*/ '122000' /*STOP*/ ); $this->setText($text); $this->textfont = $textfont; $this->usingCode($start); $this->starting_text = $start; } /** * Saves Text * * @param string $text */ public function setText($text) { $this->text = $text; } private function usingCode($code) { if($code=='A') $this->keys = $this->keysA; elseif($code=='B') $this->keys = $this->keysB; elseif($code=='C') $this->keys = $this->keysC; $this->currentCode = $code; } /** * Draws the barcode * * @param ressource $im */ public function draw($im) { $error_stop = false; $this->usingCode($this->starting_text); // Checking if all chars are allowed for($i=0;$itext);$i++) { if($this->currentCode=='C') { if(isset($this->text[$i+1]) && $this->check_int($this->text[$i+1])) { $value_test = array_search($this->text[$i].$this->text[$i+1],$this->keys); $i++; } else { $this->DrawError($im,'With Code C, you must provide always pair of two integers.'); $error_stop = true; } } else $value_test = array_search($this->text[$i],$this->keys); if(!is_int($value_test)) { $this->DrawError($im,'Char \''.$this->text[$i].'\' not allowed.'); $error_stop = true; } if($this->findIndex($this->text[$i]) == 99 && $this->currentCode != 'C') $this->usingCode('C'); elseif($this->findIndex($this->text[$i]) == 100 && $this->currentCode != 'B') $this->usingCode('B'); elseif($this->findIndex($this->text[$i]) == 101 && $this->currentCode != 'A') $this->usingCode('A'); } if($error_stop == false) { // The START-A, START-B, START-C, STOP are not allowed if(is_int(strpos($this->text,chr(135))) || is_int(strpos($this->text,chr(136))) || is_int(strpos($this->text,chr(137))) || is_int(strpos($this->text,chr(138)))) { $this->DrawError($im,'Chars START-A, START-B, START-C, STOP not allowed.'); $error_stop = true; } if($error_stop == false) { $this->usingCode($this->starting_text); // Starting Code $this->DrawChar($im,$this->code[$this->starting],1); // Chars for($i=0;$itext);$i++) { if($this->currentCode=='C') { $this->DrawChar($im,$this->findCode($this->text[$i].$this->text[$i+1]),1); $i++; } else $this->DrawChar($im,$this->findCode($this->text[$i]),1); if($this->findIndex($this->text[$i]) == 99 && $this->currentCode != 'C') $this->usingCode('C'); elseif($this->findIndex($this->text[$i]) == 100 && $this->currentCode != 'B') $this->usingCode('B'); elseif($this->findIndex($this->text[$i]) == 101 && $this->currentCode != 'A') $this->usingCode('A'); } // Checksum // First Char (START) // + Starting with the first data character following the start character, // take the value of the character (between 0 and 102, inclusive) multiply // it by its character position (1) and add that to the running checksum. // Modulated 103 if($this->starting == 103) $this->usingCode('A'); elseif($this->starting == 104) $this->usingCode('B'); elseif($this->starting == 105) $this->usingCode('C'); $checksum = 0; $checksum += $this->starting; for($position=1,$i=0;$itext);$position++,$i++) { if($this->currentCode=='C') { $checksum += intval($this->text[$i].$this->text[$i+1]) * $position; $i++; } else $checksum += $this->findIndex($this->text[$i]) * $position; if($this->findIndex($this->text[$i]) == 99 && $this->currentCode != 'C') $this->usingCode('C'); elseif($this->findIndex($this->text[$i]) == 100 && $this->currentCode != 'B') $this->usingCode('B'); elseif($this->findIndex($this->text[$i]) == 101 && $this->currentCode != 'A') $this->usingCode('A'); } $this->DrawChar($im,$this->code[$checksum % 103],1); // Ending Code $this->DrawChar($im,$this->code[$this->ending],1); // Draw a Final Bar $this->DrawChar($im,'1',1); $this->lastX = $this->positionX; $this->lastY = $this->maxHeight; // Removing Special Code $this->text = ereg_replace(chr(128),'',$this->text); $this->text = ereg_replace(chr(129),'',$this->text); $this->text = ereg_replace(chr(130),'',$this->text); $this->DrawText($im); } } } private function check_int($var) { if(intval($var)>=0 || intval($var)<=9) return true; else return false; } }; ?>