Code Duplication    Length = 347-348 lines in 2 locations

pdf/barcode/c128aobject.php 1 location

@@ 48-394 (lines=347) @@
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
	function C128AObject($Width, $Height, $Style, $Value) {
58
		$this->BarcodeObject($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
	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
	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
	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
	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
	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
	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
	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
	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

pdf/barcode/c128bobject.php 1 location

@@ 47-394 (lines=348) @@
44
* @since 2001-03-25
45
* @license http://www.gnu.org/copyleft/lesser.html LGPL
46
*/
47
class C128BObject extends BarcodeObject {
48
	
49
	/**
50
	 * Class Constructor.
51
	 * @param int $Width Image width in pixels.
52
	 * @param int $Height Image height in pixels. 
53
	 * @param int $Style Barcode style.
54
	 * @param int $Value value to print on barcode.
55
	 */
56
	function C128BObject($Width, $Height, $Style, $Value) {
57
		$this->BarcodeObject($Width, $Height, $Style);
58
		$this->mValue = $Value;
59
		$this->mChars = " !\"#$%&'()*+�-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{ }~";
60
		$this->mCharSet = array (
61
		"212222",   /*   00 */
62
		"222122",   /*   01 */
63
		"222221",   /*   02 */
64
		"121223",   /*   03 */
65
		"121322",   /*   04 */
66
		"131222",   /*   05 */
67
		"122213",   /*   06 */
68
		"122312",   /*   07 */
69
		"132212",   /*   08 */
70
		"221213",   /*   09 */
71
		"221312",   /*   10 */
72
		"231212",   /*   11 */
73
		"112232",   /*   12 */
74
		"122132",   /*   13 */
75
		"122231",   /*   14 */
76
		"113222",   /*   15 */
77
		"123122",   /*   16 */
78
		"123221",   /*   17 */
79
		"223211",   /*   18 */
80
		"221132",   /*   19 */
81
		"221231",   /*   20 */
82
		"213212",   /*   21 */
83
		"223112",   /*   22 */
84
		"312131",   /*   23 */
85
		"311222",   /*   24 */
86
		"321122",   /*   25 */
87
		"321221",   /*   26 */
88
		"312212",   /*   27 */
89
		"322112",   /*   28 */
90
		"322211",   /*   29 */
91
		"212123",   /*   30 */
92
		"212321",   /*   31 */
93
		"232121",   /*   32 */
94
		"111323",   /*   33 */
95
		"131123",   /*   34 */
96
		"131321",   /*   35 */
97
		"112313",   /*   36 */
98
		"132113",   /*   37 */
99
		"132311",   /*   38 */
100
		"211313",   /*   39 */
101
		"231113",   /*   40 */
102
		"231311",   /*   41 */
103
		"112133",   /*   42 */
104
		"112331",   /*   43 */
105
		"132131",   /*   44 */
106
		"113123",   /*   45 */
107
		"113321",   /*   46 */
108
		"133121",   /*   47 */
109
		"313121",   /*   48 */
110
		"211331",   /*   49 */
111
		"231131",   /*   50 */
112
		"213113",   /*   51 */
113
		"213311",   /*   52 */
114
		"213131",   /*   53 */
115
		"311123",   /*   54 */
116
		"311321",   /*   55 */
117
		"331121",   /*   56 */
118
		"312113",   /*   57 */
119
		"312311",   /*   58 */
120
		"332111",   /*   59 */
121
		"314111",   /*   60 */
122
		"221411",   /*   61 */
123
		"431111",   /*   62 */
124
		"111224",   /*   63 */
125
		"111422",   /*   64 */
126
		"121124",   /*   65 */
127
		"121421",   /*   66 */
128
		"141122",   /*   67 */
129
		"141221",   /*   68 */
130
		"112214",   /*   69 */
131
		"112412",   /*   70 */
132
		"122114",   /*   71 */
133
		"122411",   /*   72 */
134
		"142112",   /*   73 */
135
		"142211",   /*   74 */
136
		"241211",   /*   75 */
137
		"221114",   /*   76 */
138
		"413111",   /*   77 */
139
		"241112",   /*   78 */
140
		"134111",   /*   79 */
141
		"111242",   /*   80 */
142
		"121142",   /*   81 */
143
		"121241",   /*   82 */
144
		"114212",   /*   83 */
145
		"124112",   /*   84 */
146
		"124211",   /*   85 */
147
		"411212",   /*   86 */
148
		"421112",   /*   87 */
149
		"421211",   /*   88 */
150
		"212141",   /*   89 */
151
		"214121",   /*   90 */
152
		"412121",   /*   91 */
153
		"111143",   /*   92 */
154
		"111341",   /*   93 */
155
		"131141",   /*   94 */
156
		"114113",   /*   95 */
157
		"114311",   /*   96 */
158
		"411113",   /*   97 */
159
		"411311",   /*   98 */
160
		"113141",   /*   99 */
161
		"114131",   /*  100 */
162
		"311141",   /*  101 */
163
		"411131"    /*  102 */
164
		);
165
	}
166
167
	/**
168
	 * Returns the character index.
169
	 * @param char $char character.
170
	 * @return int character index or -1 in case of error.
171
	 * @access private
172
	 */
173
	function GetCharIndex($char) {
174
		for ($i=0;$i<95;$i++) {
175
			if ($this->mChars[$i] == $char) {
176
				return $i;
177
			}
178
		}
179
		return -1;
180
	}
181
	
182
	/**
183
	 * Returns the bar size.
184
	 * @param int $xres Horizontal resolution.
185
	 * @param char $char Character.
186
	 * @return int barcode size.
187
	 * @access private
188
	 */
189
	function GetBarSize($xres, $char) {
190
		switch ($char) {
191
			case '1': {
192
				$cVal = BCD_C128_BAR_1;
193
				break;
194
			}
195
			case '2': {
196
				$cVal = BCD_C128_BAR_2;
197
				break;
198
			}
199
			case '3': {
200
				$cVal = BCD_C128_BAR_3;
201
				break;
202
			}
203
			case '4': {
204
				$cVal = BCD_C128_BAR_4;
205
				break;
206
			}
207
			default: {
208
				$cVal = 0;
209
			}
210
		}
211
		return  $cVal * $xres;
212
	}
213
	
214
	/**
215
	 * Returns barcode size.
216
	 * @param int $xres Horizontal resolution.
217
	 * @return barcode size.
218
	 * @access private
219
	 */
220
	function GetSize($xres) {
221
		$len = strlen($this->mValue);
222
223
		if ($len == 0)  {
224
			$this->mError = "Null value";
225
			return false;
226
		}
227
		$ret = 0;
228
		for ($i=0;$i<$len;$i++) {
229
			if (($id = $this->GetCharIndex($this->mValue[$i])) == -1) {
230
				$this->mError = "C128B not include the char '".$this->mValue[$i]."'";
231
				return false;
232
			} else {
233
				$cset = $this->mCharSet[$id];
234
				$ret += $this->GetBarSize($xres, $cset[0]);
235
				$ret += $this->GetBarSize($xres, $cset[1]);
236
				$ret += $this->GetBarSize($xres, $cset[2]);
237
				$ret += $this->GetBarSize($xres, $cset[3]);
238
				$ret += $this->GetBarSize($xres, $cset[4]);
239
				$ret += $this->GetBarSize($xres, $cset[5]);
240
			}
241
		}
242
		/* length of Check character */
243
		$cset = $this->GetCheckCharValue();
244
		$CheckSize = 0;
245
		for ($i=0;$i<6;$i++) {
246
			$CheckSize += $this->GetBarSize($cset[$i], $xres);
247
		}
248
249
		$StartSize = 2*BCD_C128_BAR_2*$xres + 3*BCD_C128_BAR_1*$xres + BCD_C128_BAR_4*$xres;
250
		$StopSize  = 2*BCD_C128_BAR_2*$xres + 3*BCD_C128_BAR_1*$xres + 2*BCD_C128_BAR_3*$xres;
251
252
		return $StartSize + $ret + $CheckSize + $StopSize;
253
	}
254
	
255
	/**
256
	 * Returns the check-char value.
257
	 * @return string.
258
	 * @access private
259
	 */
260
	function GetCheckCharValue() {
261
		$len = strlen($this->mValue);
262
		$sum = 104; // 'B' 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
	function DrawStart($DrawPos, $yPos, $ySize, $xres) {
280
		/* Start code is '211214' */
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('2', $xres);
287
		$this->DrawSingleBar($DrawPos, BCD_DEFAULT_MAR_Y1, $this->GetBarSize('1', $xres), $ySize);
288
		$DrawPos += $this->GetBarSize('1', $xres);
289
		$DrawPos += $this->GetBarSize('4', $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
	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
	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
	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