comparison vendor/plugins/rfpdf/lib/barcode/barcode.rb @ 441:cbce1fd3b1b7 redmine-1.2

Update to Redmine 1.2-stable branch (Redmine SVN rev 6000)
author Chris Cannam
date Mon, 06 Jun 2011 14:24:13 +0100
parents
children
comparison
equal deleted inserted replaced
245:051f544170fe 441:cbce1fd3b1b7
1
2 #============================================================+
3 # File name : barcode.rb
4 # Begin : 2002-07-31
5 # Last Update : 2005-01-02
6 # Author : Karim Mribti [barcode@mribti.com]
7 # Version : 1.1 [0.0.8a (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 : Generic Barcode Render Class for PHP using
13 # the GD graphics library.
14 #
15 # NOTE:
16 # This version contains changes by Nicola Asuni:
17 # - porting to Ruby
18 # - code style and formatting
19 # - automatic php documentation in PhpDocumentor Style
20 # (www.phpdoc.org)
21 # - minor bug fixing
22 # - $mCharSet and $mChars variables were added here
23 #============================================================+
24
25 #
26 # Barcode Render Class for PHP using the GD graphics library.
27 # @author Karim Mribti, Nicola Asuni
28 # @name BarcodeObject
29 # @package com.tecnick.tcpdf
30 # @@version 0.0.8a 2001-04-01 (original code)
31 # @since 2001-03-25
32 # @license http://www.gnu.org/copyleft/lesser.html LGPL
33 #
34
35 # Styles
36 # Global
37
38 #
39 # option: generate barcode border
40 #
41 define("BCS_BORDER", 1);
42
43 #
44 # option: use transparent background
45 #
46 define("BCS_TRANSPARENT", 2);
47
48 #
49 # option: center barcode
50 #
51 define("BCS_ALIGN_CENTER", 4);
52
53 #
54 # option: align left
55 #
56 define("BCS_ALIGN_LEFT", 8);
57
58 #
59 # option: align right
60 #
61 define("BCS_ALIGN_RIGHT", 16);
62
63 #
64 # option: generate JPEG image
65 #
66 define("BCS_IMAGE_JPEG", 32);
67
68 #
69 # option: generate PNG image
70 #
71 define("BCS_IMAGE_PNG", 64);
72
73 #
74 # option: draw text
75 #
76 define("BCS_DRAW_TEXT", 128);
77
78 #
79 # option: stretch text
80 #
81 define("BCS_STRETCH_TEXT", 256);
82
83 #
84 # option: reverse color
85 #
86 define("BCS_REVERSE_COLOR", 512);
87
88 #
89 # option: draw check
90 # (only for I25 code)
91 #
92 define("BCS_I25_DRAW_CHECK", 2048);
93
94 #
95 # set default background color
96 #
97 define("BCD_DEFAULT_BACKGROUND_COLOR", 0xFFFFFF);
98
99 #
100 # set default foreground color
101 #
102 define("BCD_DEFAULT_FOREGROUND_COLOR", 0x000000);
103
104 #
105 # set default style options
106 #
107 define("BCD_DEFAULT_STYLE", BCS_BORDER | BCS_ALIGN_CENTER | BCS_IMAGE_PNG);
108
109 #
110 # set default width
111 #
112 define("BCD_DEFAULT_WIDTH", 460);
113
114 #
115 # set default height
116 #
117 define("BCD_DEFAULT_HEIGHT", 120);
118
119 #
120 # set default font
121 #
122 define("BCD_DEFAULT_FONT", 5);
123
124 #
125 # st default horizontal resolution
126 #
127 define("BCD_DEFAULT_XRES", 2);
128
129 # Margins
130
131 #
132 # set default margin
133 #
134 define("BCD_DEFAULT_MAR_Y1", 0);
135
136 #
137 # set default margin
138 #
139 define("BCD_DEFAULT_MAR_Y2", 0);
140
141 #
142 # set default text offset
143 #
144 define("BCD_DEFAULT_TEXT_OFFSET", 2);
145
146 # For the I25 Only
147
148 #
149 # narrow bar option
150 # (only for I25 code)
151 #
152 define("BCD_I25_NARROW_BAR", 1);
153
154 #
155 # wide bar option
156 # (only for I25 code)
157 #
158 define("BCD_I25_WIDE_BAR", 2);
159
160 # For the C39 Only
161
162 #
163 # narrow bar option
164 # (only for c39 code)
165 #
166 define("BCD_C39_NARROW_BAR", 1);
167
168 #
169 # wide bar option
170 # (only for c39 code)
171 #
172 define("BCD_C39_WIDE_BAR", 2);
173
174 # For Code 128
175
176 #
177 # set type 1 bar
178 # (only for c128 code)
179 #
180 define("BCD_C128_BAR_1", 1);
181
182 #
183 # set type 2 bar
184 # (only for c128 code)
185 #
186 define("BCD_C128_BAR_2", 2);
187
188 #
189 # set type 3 bar
190 # (only for c128 code)
191 #
192 define("BCD_C128_BAR_3", 3);
193
194 #
195 # set type 4 bar
196 # (only for c128 code)
197 #
198 define("BCD_C128_BAR_4", 4);
199
200 #
201 # Barcode Render Class for PHP using the GD graphics library.
202 # @author Karim Mribti, Nicola Asuni
203 # @name BarcodeObject
204 # @package com.tecnick.tcpdf
205 # @@version 0.0.8a 2001-04-01 (original code)
206 # @since 2001-03-25
207 # @license http://www.gnu.org/copyleft/lesser.html LGPL
208 #
209 class BarcodeObject {
210 #
211 # @var Image width in pixels.
212 # @access protected
213 #
214 protected $mWidth;
215
216 #
217 # @var Image height in pixels.
218 # @access protected
219 #
220 protected $mHeight;
221
222 #
223 # @var Numeric code for Barcode style.
224 # @access protected
225 #
226 protected $mStyle;
227
228 #
229 # @var Background color.
230 # @access protected
231 #
232 protected $mBgcolor;
233
234 #
235 # @var Brush color.
236 # @access protected
237 #
238 protected $mBrush;
239
240 #
241 # @var Image object.
242 # @access protected
243 #
244 protected $mImg;
245
246 #
247 # @var Numeric code for character font.
248 # @access protected
249 #
250 protected $mFont;
251
252 #
253 # @var Error message.
254 # @access protected
255 #
256 protected $mError;
257
258 #
259 # @var Character Set.
260 # @access protected
261 #
262 protected $mCharSet;
263
264 #
265 # @var Allowed symbols.
266 # @access protected
267 #
268 protected $mChars;
269
270 #
271 # Class Constructor.
272 # @param int $Width Image width in pixels.
273 # @param int $Height Image height in pixels.
274 # @param int $Style Barcode style.
275 #
276 def __construct($Width=BCD_DEFAULT_WIDTH, $Height=BCD_DEFAULT_HEIGHT, $Style=BCD_DEFAULT_STYLE)
277 @mWidth = $Width;
278 @mHeight = $Height;
279 @mStyle = $Style;
280 @mFont = BCD_DEFAULT_FONT;
281 @mImg = ImageCreate(@mWidth, @mHeight);
282 $dbColor = @mStyle & BCS_REVERSE_COLOR ? BCD_DEFAULT_FOREGROUND_COLOR : BCD_DEFAULT_BACKGROUND_COLOR;
283 $dfColor = @mStyle & BCS_REVERSE_COLOR ? BCD_DEFAULT_BACKGROUND_COLOR : BCD_DEFAULT_FOREGROUND_COLOR;
284 @mBgcolor = ImageColorAllocate(@mImg, ($dbColor & 0xFF0000) >> 16,
285 ($dbColor & 0x00FF00) >> 8, $dbColor & 0x0000FF);
286 @mBrush = ImageColorAllocate(@mImg, ($dfColor & 0xFF0000) >> 16,
287 ($dfColor & 0x00FF00) >> 8, $dfColor & 0x0000FF);
288 if (!(@mStyle & BCS_TRANSPARENT))
289 ImageFill(@mImg, @mWidth, @mHeight, @mBgcolor);
290 end
291 end
292
293 #
294 # Class Destructor.
295 # Destroy image object.
296 #
297 def __destructor()
298 @DestroyObject();
299 end
300
301 #
302 # Returns the image object.
303 # @return object image.
304 # @author Nicola Asuni
305 # @since 1.5.2
306 #
307 def getImage()
308 return @mImg;
309 end
310
311 #
312 # Abstract method used to draw the barcode image.
313 # @param int $xres Horizontal resolution.
314 #
315 def DrawObject($xres) {
316 # there is not implementation neded, is simply the asbsract function.#
317 return false;
318 end
319
320 #
321 # Draws the barcode border.
322 # @access protected
323 #
324 protected function DrawBorder()
325 ImageRectangle(@mImg, 0, 0, @mWidth-1, @mHeight-1, @mBrush);
326 end
327
328 #
329 # Draws the alphanumeric code.
330 # @param int $Font Font type.
331 # @param int $xPos Horiziontal position.
332 # @param int $yPos Vertical position.
333 # @param int $Char Alphanumeric code to write.
334 # @access protected
335 #
336 protected function DrawChar($Font, $xPos, $yPos, $Char)
337 ImageString(@mImg,$Font,$xPos,$yPos,$Char,@mBrush);
338 end
339
340 #
341 # Draws a character string.
342 # @param int $Font Font type.
343 # @param int $xPos Horiziontal position.
344 # @param int $yPos Vertical position.
345 # @param int $Char string to write.
346 # @access protected
347 #
348 protected function DrawText($Font, $xPos, $yPos, $Char)
349 ImageString(@mImg,$Font,$xPos,$yPos,$Char,@mBrush);
350 end
351
352 #
353 # Draws a single barcode bar.
354 # @param int $xPos Horiziontal position.
355 # @param int $yPos Vertical position.
356 # @param int $xSize Horizontal size.
357 # @param int $xSize Vertical size.
358 # @return bool trur in case of success, false otherwise.
359 # @access protected
360 #
361 protected function DrawSingleBar($xPos, $yPos, $xSize, $ySize)
362 if ($xPos>=0 && $xPos<=@mWidth && ($xPos+$xSize)<=@mWidth &&
363 $yPos>=0 && $yPos<=@mHeight && ($yPos+$ySize)<=@mHeight)
364 for ($i=0;$i<$xSize;$i++)
365 ImageLine(@mImg, $xPos+$i, $yPos, $xPos+$i, $yPos+$ySize, @mBrush);
366 end
367 return true;
368 end
369 return false;
370 end
371
372 #
373 # Returns the current error message.
374 # @return string error message.
375 #
376 def GetError()
377 return @mError;
378 end
379
380 #
381 # Returns the font height.
382 # @param int $font font type.
383 # @return int font height.
384 #
385 def GetFontHeight($font)
386 return ImageFontHeight($font);
387 end
388
389 #
390 # Returns the font width.
391 # @param int $font font type.
392 # @return int font width.
393 #
394 def GetFontWidth($font)
395 return ImageFontWidth($font);
396 end
397
398 #
399 # Set font type.
400 # @param int $font font type.
401 #
402 def SetFont($font)
403 @mFont = $font;
404 end
405
406 #
407 # Returns barcode style.
408 # @return int barcode style.
409 #
410 def GetStyle()
411 return @mStyle;
412 end
413
414 #
415 # Set barcode style.
416 # @param int $Style barcode style.
417 #
418 def SetStyle ($Style)
419 @mStyle = $Style;
420 end
421
422 #
423 # Flush the barcode image.
424 #
425 def FlushObject()
426 if ((@mStyle & BCS_BORDER))
427 @DrawBorder();
428 end
429 if (@mStyle & BCS_IMAGE_PNG)
430 Header("Content-Type: image/png");
431 ImagePng(@mImg);
432 elsif (@mStyle & BCS_IMAGE_JPEG)
433 Header("Content-Type: image/jpeg");
434 ImageJpeg(@mImg);
435 end
436 end
437
438 #
439 # Destroy the barcode image.
440 #
441 def DestroyObject()
442 ImageDestroy(@mImg);
443 end
444 }
445
446 #============================================================+
447 # END OF FILE
448 #============================================================+