1 /*************************************************
\r
3 * EasyBMP Cross-Platform Windows Bitmap Library *
\r
5 * Author: Paul Macklin *
\r
6 * email: pmacklin@math.uci.edu *
\r
8 * file: EasyBMP_Font.h *
\r
10 * version: 1.05.00 *
\r
12 * License: BSD (revised) *
\r
13 * Copyright: 2005-2006 by the EasyBMP Project *
\r
15 * description: draw a simple font *
\r
17 *************************************************/
\r
19 #include "../../../../include/freenet/captcha/easybmp/EasyBMP_Geometry.h"
\r
20 #include "../../../../include/freenet/captcha/easybmp/EasyBMP_Font.h"
\r
22 int PrintString( BMP& Image, char* String , int TopLeftX, int TopLeftY , int Height ,
\r
26 int StartX = TopLeftX;
\r
27 int Spacing = (int) ebmpRound( 0.2*Height );
\r
31 for( CharNumber = 0 ; CharNumber < strlen( String ) ; CharNumber++ )
\r
33 int ReturnPosition = PrintLetter( Image , String[CharNumber] , StartX , TopLeftY , Height , Color );
\r
34 StartX = ReturnPosition;
\r
40 int PrintLetter( BMP& Image, char Letter , int TopLeftX, int TopLeftY, int Height ,
\r
43 int Width = (int) floor( 0.6*Height);
\r
44 if( Width % 2 != 0 ){ Width++; }
\r
45 int Center = (Width)/2;
\r
47 RGBApixel TempColor;
\r
49 TempColor.Green = 255;
\r
52 double pi = 3.14159265358979;
\r
54 // if( isalpha(Letter) )
\r
55 // { Letter = toupper(Letter); }
\r
57 if( Letter == COPYRIGHT_SYMBOL )
\r
59 return PrintCopyright( Image, TopLeftX, TopLeftY, Height, Color );
\r
64 double x1 = TopLeftX + 0.25*Height;
\r
65 double y1 = TopLeftY + 0.75*Height;
\r
67 int x2 = ebmpRound(TopLeftX+0.5*Height);
\r
68 int y2 = ebmpRound(TopLeftY+0.5*Height);
\r
71 int y3 = TopLeftY+Height;
\r
73 DrawArc(Image,x1,y1,0.25*Height,0,2*pi,Color);
\r
74 DrawLine(Image,x2,y2,x3,y3,Color);
\r
76 return ebmpRound( TopLeftX + 0.5*Height );
\r
81 double x1 = TopLeftX + 0.25*Height;
\r
82 double y1 = TopLeftY + 0.75*Height;
\r
84 int x2 = TopLeftX; // ebmpRound(TopLeftX+0.5*Height);
\r
85 int y2 = TopLeftY; // ebmpRound(TopLeftY+0.5*Height);
\r
88 int y3 = TopLeftY+Height;
\r
90 DrawArc(Image,x1,y1,0.25*Height,0,2*pi,Color);
\r
91 DrawLine(Image,x2,y2,x3,y3,Color);
\r
93 return ebmpRound( TopLeftX + 0.5*Height );
\r
98 double x1 = TopLeftX + 0.25*Height;
\r
99 double y1 = TopLeftY + 0.75*Height;
\r
101 DrawArc(Image,x1,y1,0.25*Height,0.25*pi,-0.25*pi,Color);
\r
102 return ebmpRound( TopLeftX+0.5*Height);
\r
105 if( Letter == 'd' )
\r
107 double x1 = TopLeftX + 0.25*Height;
\r
108 double y1 = TopLeftY + 0.75*Height;
\r
110 int x2 = ebmpRound(TopLeftX+0.5*Height);
\r
111 int y2 = TopLeftY; // ebmpRound(TopLeftY+0.5*Height);
\r
114 int y3 = TopLeftY+Height;
\r
116 DrawArc(Image,x1,y1,0.25*Height,0,2*pi,Color);
\r
117 DrawLine(Image,x2,y2,x3,y3,Color);
\r
119 return ebmpRound( TopLeftX + 0.5*Height );
\r
122 if( Letter == 'e' )
\r
124 double x1 = TopLeftX + 0.25*Height;
\r
125 double y1 = TopLeftY + 0.75*Height;
\r
128 int y2 = ebmpRound(TopLeftY + 0.75*Height);
\r
130 int x3 = ebmpRound( TopLeftX+0.5*Height);
\r
133 DrawArc(Image,x1,y1,0.25*Height,0.25*pi,0,Color);
\r
134 DrawLine(Image,x2,y2,x3,y3,Color);
\r
139 if( Letter == 'f' )
\r
141 int x1 = ebmpRound( TopLeftX + 0.25*Height);
\r
142 int y1 = TopLeftY + Center;
\r
145 int y2 = TopLeftY + Height;
\r
148 int y3 = ebmpRound( TopLeftY + 0.5*Height);
\r
150 int x4 = x1 + (x1-x3);
\r
153 double x5 = TopLeftX+0.5*Height;
\r
154 double y5 = TopLeftY+0.25*Height;
\r
156 if( Height % 4 == 3 )
\r
159 DrawLine(Image,x1,y1,x2,y2,Color);
\r
160 DrawLine(Image,x3,y3,x4,y4,Color);
\r
162 DrawArc(Image,x5,y5,0.25*Height,7*pi/8 ,2*pi,Color);
\r
167 if( Letter == 'g' )
\r
169 double x1 = TopLeftX+0.25*Height;
\r
170 double y1 = TopLeftY+0.75*Height;
\r
172 int x2 = ebmpRound(TopLeftX+0.5*Height);
\r
173 int y2 = ebmpRound(TopLeftY+0.5*Height);
\r
176 int y3 = ebmpRound(TopLeftY+1.25*Height);
\r
179 double y4 = TopLeftY+1.25*Height;
\r
181 DrawArc(Image,x1,y1,0.25*Height,0,2*pi,Color);
\r
182 DrawArc(Image,x4,y4,0.25*Height,0,pi,Color);
\r
183 DrawLine(Image,x2,y2,x3,y3,Color);
\r
185 return ebmpRound(TopLeftX+0.5*Height);
\r
188 if( Letter == 'h' )
\r
190 double x1 = TopLeftX + 0.25*Height;
\r
191 double y1 = TopLeftY + 0.75*Height;
\r
194 int y3 = TopLeftY; // ebmpRound(TopLeftY+0.5*Height);
\r
197 int y4 = TopLeftY + Height;
\r
199 int x5 = ebmpRound(TopLeftX+0.5*Height);
\r
200 int y5 = ebmpRound(TopLeftY+0.75*Height);
\r
205 DrawArc(Image,x1,y1,0.25*Height,pi,2*pi,Color);
\r
207 DrawLine(Image,x3,y3,x4,y4,Color);
\r
208 DrawLine(Image,x5,y5,x6,y6,Color);
\r
213 if( Letter == 'i' )
\r
216 int y1 = ebmpRound(TopLeftY+0.5*Height);
\r
219 int y2 = TopLeftY+Height;
\r
222 double y3 = y1 - 2.5;
\r
224 DrawArc( Image, x3, y3, 0.75 , 0 , 6.3 , Color );
\r
225 DrawLine(Image,x1,y1,x2,y2,Color);
\r
227 return ebmpRound(x1+1.25);
\r
230 if( Letter == 'j' )
\r
232 int x1 = ebmpRound(TopLeftX+0.25*Height);
\r
233 int y1 = ebmpRound(TopLeftY+0.5*Height);
\r
236 int y2 = ebmpRound(TopLeftY+1.25*Height);
\r
239 double y3 = y1 - 2.5;
\r
241 double x4 = TopLeftX;
\r
242 double y4 = TopLeftY+1.25*Height;
\r
244 DrawArc( Image, x3, y3, 0.75 , 0 , 6.3 , Color );
\r
245 DrawLine(Image,x1,y1,x2,y2,Color);
\r
247 DrawArc(Image,x4,y4,0.25*Height,0,pi,Color);
\r
252 if( Letter == 'k' )
\r
258 int y2 = TopLeftY+Height;
\r
261 int y3 = ebmpRound(TopLeftY+0.75*Height);
\r
263 int x4 = ebmpRound(TopLeftX+0.3*Height);
\r
264 int y4 = ebmpRound(TopLeftY+0.5*Height);
\r
269 DrawLine(Image,x1,y1,x2,y2,Color);
\r
270 DrawLine(Image,x3,y3,x4,y4,Color);
\r
271 DrawLine(Image,x3,y3,x5,y5,Color);
\r
276 if( Letter == 'm' )
\r
278 double x1 = TopLeftX + 0.25*Height;
\r
279 double y1 = TopLeftY + 0.75*Height;
\r
281 double x2 = TopLeftX + 0.75*Height;
\r
285 int y3 = ebmpRound(TopLeftY+0.5*Height);
\r
288 int y4 = TopLeftY + Height;
\r
290 int x5 = ebmpRound(TopLeftX+0.5*Height);
\r
291 int y5 = ebmpRound(TopLeftY+0.75*Height);
\r
296 int x7 = ebmpRound(TopLeftX+Height);
\r
297 if( x7 - x5 > x5 - x3 )
\r
306 DrawArc(Image,x1,y1,0.25*Height,pi,2*pi,Color);
\r
307 DrawArc(Image,x2,y2,0.25*Height,pi,2*pi,Color);
\r
309 DrawLine(Image,x3,y3,x4,y4,Color);
\r
310 DrawLine(Image,x5,y5,x6,y6,Color);
\r
311 DrawLine(Image,x7,y7,x8,y8,Color);
\r
316 if( Letter == 'n' )
\r
318 double x1 = TopLeftX + 0.25*Height;
\r
319 double y1 = TopLeftY + 0.75*Height;
\r
322 int y3 = ebmpRound(TopLeftY+0.5*Height);
\r
325 int y4 = TopLeftY + Height;
\r
327 int x5 = ebmpRound(TopLeftX+0.5*Height);
\r
328 int y5 = ebmpRound(TopLeftY+0.75*Height);
\r
333 DrawArc(Image,x1,y1,0.25*Height,pi,2*pi,Color);
\r
335 DrawLine(Image,x3,y3,x4,y4,Color);
\r
336 DrawLine(Image,x5,y5,x6,y6,Color);
\r
341 if( Letter == 'o' )
\r
343 double x1 = TopLeftX + 0.25*Height;
\r
344 double y1 = TopLeftY + 0.75*Height;
\r
346 DrawArc(Image,x1,y1,0.25*Height,0,2*pi,Color);
\r
348 return ebmpRound(TopLeftX + 0.5*Height);
\r
351 if( Letter == 'p' )
\r
353 double x1 = TopLeftX + 0.25*Height;
\r
354 double y1 = TopLeftY + 0.75*Height;
\r
357 int y2 = ebmpRound(TopLeftY + 0.5*Height);
\r
360 int y3 = ebmpRound(TopLeftY + 1.5*Height);
\r
362 DrawArc(Image,x1,y1,0.25*Height,0,2*pi,Color);
\r
363 DrawLine(Image,x2,y2,x3,y3,Color);
\r
365 return ebmpRound( TopLeftX + 0.5*Height );
\r
368 if( Letter == 'q' )
\r
370 double x1 = TopLeftX+0.25*Height;
\r
371 double y1 = TopLeftY+0.75*Height;
\r
373 int x2 = ebmpRound(TopLeftX+0.5*Height);
\r
374 int y2 = ebmpRound(TopLeftY+0.5*Height);
\r
377 int y3 = ebmpRound(TopLeftY+1.5*Height);
\r
379 int x4 = ebmpRound(x3+0.2*Height);
\r
380 int y4 = ebmpRound(y3-0.2*Height);
\r
382 DrawArc(Image,x1,y1,0.25*Height,0,2*pi,Color);
\r
383 DrawLine(Image,x2,y2,x3,y3,Color);
\r
384 DrawLine(Image,x3,y3,x4,y4,Color);
\r
386 return ebmpRound(TopLeftX+0.5*Height);
\r
389 if( Letter == 'r' )
\r
391 double x1 = TopLeftX + 0.25*Height;
\r
392 double y1 = TopLeftY + 0.75*Height;
\r
395 int y3 = ebmpRound(TopLeftY+0.5*Height);
\r
398 int y4 = TopLeftY + Height;
\r
401 int x5 = ebmpRound(TopLeftX+0.5*Height);
\r
402 int y5 = ebmpRound(TopLeftY+0.75*Height);
\r
408 DrawArc(Image,x1,y1,0.25*Height,pi,2*pi,Color);
\r
410 DrawLine(Image,x3,y3,x4,y4,Color);
\r
411 // DrawLine(Image,x5,y5,x6,y6,Color);
\r
413 return ebmpRound(TopLeftX+0.5*Height);
\r
416 if( Letter == 's' )
\r
418 double x1 = TopLeftX+0.125*Height;
\r
419 double y1 = TopLeftY+0.625*Height;
\r
422 double y2 = (TopLeftY+0.875*Height);
\r
424 double difference = (TopLeftY+Height)-y2;
\r
425 double MaxAngle1 = 0;
\r
426 double MaxAngle2 = pi;
\r
427 if( difference < 1.5 )
\r
428 { difference = 1.5; MaxAngle1 = 0; MaxAngle2 = 1.5; x1 = TopLeftX + difference; x2 = x1; }
\r
430 y1 = y2 - 2*difference;
\r
432 DrawArc(Image,x1,y1,difference,0.5*pi,MaxAngle1,Color);
\r
433 DrawArc(Image,x2,y2,difference,-0.5*pi,pi,Color);
\r
435 return ebmpRound(TopLeftX+2*difference);
\r
438 if( Letter == 't' )
\r
440 int x1 = ebmpRound( TopLeftX + 0.25*Height);
\r
441 int y1 = TopLeftY + Center;
\r
444 int y2 = TopLeftY + Height;
\r
447 int y3 = ebmpRound( TopLeftY + 0.5*Height);
\r
449 int x4 = x1 + (x1-x3);
\r
452 DrawLine(Image,x1,y1,x2,y2,Color);
\r
453 DrawLine(Image,x3,y3,x4,y4,Color);
\r
458 if( Letter == 'u' )
\r
460 double x1 = TopLeftX + 0.25*Height;
\r
461 double y1 = TopLeftY + 0.75*Height;
\r
464 int y3 = ebmpRound(TopLeftY+0.5*Height);
\r
467 int y4 = ebmpRound(TopLeftY+0.75*Height);// + Height;
\r
469 int x5 = ebmpRound(TopLeftX+0.5*Height);
\r
470 int y5 = TopLeftY + Height;// ebmpRound(TopLeftY+0.75*Height);
\r
475 DrawArc(Image,x1,y1,0.25*Height,0,pi,Color);
\r
477 DrawLine(Image,x3,y3,x4,y4,Color);
\r
478 DrawLine(Image,x5,y5,x6,y6,Color);
\r
483 if( Letter == 'v' )
\r
486 int y1 = ebmpRound(TopLeftY+0.5*Height);
\r
488 int x2 = ebmpRound( TopLeftX+0.2*Height);
\r
489 int y2 = TopLeftY+Height;
\r
491 int x3 = ebmpRound( TopLeftX+0.4*Height);
\r
494 DrawLine(Image,x1,y1,x2,y2,Color);
\r
495 DrawLine(Image,x2,y2,x3,y3,Color);
\r
500 if( Letter == 'w' )
\r
503 int y1 = ebmpRound(TopLeftY+0.5*Height);
\r
505 int x2 = ebmpRound(TopLeftX+0.2*Height);
\r
506 int y2 = TopLeftY+Height;
\r
508 int x3 = ebmpRound(TopLeftX+0.4*Height);
\r
511 int x4 = ebmpRound(x3+0.2*Height);
\r
514 int x5 = ebmpRound(x3+0.4*Height);
\r
517 DrawLine(Image,x1,y1,x2,y2,Color);
\r
518 DrawLine(Image,x2,y2,x3,y3,Color);
\r
519 DrawLine(Image,x3,y3,x4,y4,Color);
\r
520 DrawLine(Image,x4,y4,x5,y5,Color);
\r
525 if( Letter == 'x' )
\r
528 int y1 = ebmpRound(TopLeftY+0.5*Height);
\r
530 int x2 = ebmpRound(TopLeftX+0.5*Height);
\r
534 int y3 = TopLeftY+Height;
\r
539 DrawLine(Image,x1,y1,x4,y4,Color);
\r
540 DrawLine(Image,x2,y2,x3,y3,Color);
\r
545 if( Letter == 'y' )
\r
548 int y1 = ebmpRound(TopLeftY+0.5*Height);
\r
550 int x2 = ebmpRound(TopLeftX+0.5*Height);
\r
553 int x3 = ebmpRound(x1+0.25*Height);
\r
554 int y3 = TopLeftY+Height;
\r
557 int y4 = ebmpRound(TopLeftY+1.25*Height)+1;
\r
559 DrawLine(Image,x1,y1,x3,y3,Color);
\r
560 DrawLine(Image,x2,y2,x4,y4,Color);
\r
565 if( Letter == 'z' )
\r
568 int y1 = ebmpRound(TopLeftY+0.5*Height);
\r
570 int x2 = ebmpRound(TopLeftX+0.5*Height);
\r
574 int y3 = TopLeftY+Height;
\r
579 DrawLine(Image,x1,y1,x2,y2,Color);
\r
580 DrawLine(Image,x2,y2,x3,y3,Color);
\r
581 DrawLine(Image,x3,y3,x4,y4,Color);
\r
586 if( Letter == 'A' )
\r
588 // define some control points
\r
591 int y1 = TopLeftY+Height;
\r
593 int x2 = TopLeftX + ebmpRound( 0.3*Height );
\r
596 int x3 = TopLeftX + ebmpRound( 0.6*Height );
\r
599 int x4 = TopLeftX + ebmpRound( 0.1*Height );
\r
600 int y4 = ebmpRound( y1 - Height/3.0 );
\r
602 int x5 = ebmpRound( x3 - 0.1*Height );
\r
605 DrawLine( Image , x1, y1, x2, y2, Color );
\r
606 DrawLine( Image , x2, y2, x3, y3, Color );
\r
607 DrawLine( Image , x4, y4, x5, y5, Color );
\r
612 if( Letter == 'B' )
\r
615 int y1 = TopLeftY+Height;
\r
620 int x3 = TopLeftX + Center; // (int) ebmpRound( 0.3*Height );
\r
624 int y4 = (int) ebmpRound( TopLeftY + 0.5*Height );
\r
632 // centers of the circles
\r
635 double y7 = ( TopLeftY + 0.25*Height );
\r
638 double y8 = ( TopLeftY + 0.75*Height );
\r
640 DrawLine( Image , x1, y1, x2, y2, Color );
\r
641 DrawLine( Image , x2, y2, x3, y3, Color );
\r
643 DrawLine( Image , x2, y2, x3, y3, Color );
\r
644 DrawLine( Image , x4, y4, x5, y5, Color );
\r
645 DrawLine( Image , x1, y1, x6, y6, Color );
\r
647 DrawArc( Image, x7, y7 , 0.25*Height , -1.57079632679490 , 1.57079632679490 , Color );
\r
648 DrawArc( Image, x8, y8 , 0.25*Height , -1.57079632679490 , 1.57079632679490 , Color );
\r
650 return ebmpRound( TopLeftX + Center + 0.25*Height);
\r
653 if( Letter == 'C' )
\r
655 double x5 = TopLeftX + Center;
\r
656 double y5 = TopLeftY + Center;
\r
659 double y6 = TopLeftY + Height - Center;
\r
662 int y7 = (int) y5;
\r
665 int y8 = (int) y6;
\r
667 DrawArc( Image, x5, y5 , Center , -3.14159265358979 , 0 , Color );
\r
668 DrawArc( Image, x6, y6 , Center , 0 , 3.14159265358979, Color );
\r
670 DrawLine( Image , x7, y7, x8, y8, Color );
\r
672 return TopLeftX + Width; // ebmpRound(TopLeftX+0.6*Height);
\r
675 if( Letter == 'D' )
\r
680 int x2 = TopLeftX + Center; // ebmpRound( TopLeftX + 0.3*Height );
\r
684 int y3 = TopLeftY+Height;
\r
690 double y5 = TopLeftY + Center; // TopLeftY + 0.3*Height;
\r
693 double y6 = TopLeftY + Height - Center; // TopLeftY + 0.7*Height;
\r
695 int x7 = TopLeftX + Width; // ebmpRound(TopLeftX + 0.6*Height);
\r
696 int y7 = (int) y5; // ebmpRound( y5 );
\r
699 int y8 = (int) y6; // ebmpRound( y6 );
\r
701 DrawLine( Image , x1, y1, x2, y2, Color );
\r
702 DrawLine( Image , x1, y1, x3, y3, Color );
\r
703 DrawLine( Image , x3, y3, x4, y4, Color );
\r
705 DrawArc( Image, x5, y5 , Center , -1.57079632679490 , 0 , Color );
\r
706 DrawArc( Image, x6, y6 , Center , 0 , 1.57079632679490 , Color );
\r
708 DrawLine( Image , x7, y7, x8, y8, Color );
\r
713 if( Letter == 'E' )
\r
719 int y2 = TopLeftY + Height;
\r
721 int x3 = TopLeftX + Width;
\r
725 int y4 = ebmpRound( TopLeftY + 0.5*Height);
\r
727 int x5 = ebmpRound( TopLeftX + 0.45*Height);
\r
730 int x6 = TopLeftX + Width;
\r
733 DrawLine( Image , x1, y1, x2, y2, Color );
\r
734 DrawLine( Image , x1, y1, x3, y3, Color );
\r
735 DrawLine( Image , x4, y4, x5, y5, Color );
\r
736 DrawLine( Image , x2, y2, x6, y6, Color );
\r
741 if( Letter == 'F' )
\r
747 int y2 = TopLeftY + Height;
\r
749 int x3 = TopLeftX + Width;
\r
753 int y4 = ebmpRound( TopLeftY + 0.5*Height);
\r
755 int x5 = ebmpRound( TopLeftX + 0.45*Height); // x3;
\r
758 DrawLine( Image , x1, y1, x2, y2, Color );
\r
759 DrawLine( Image , x1, y1, x3, y3, Color );
\r
760 DrawLine( Image , x4, y4, x5, y5, Color );
\r
765 if( Letter == 'G' )
\r
767 double x5 = TopLeftX + Center;
\r
768 double y5 = TopLeftY + Center;
\r
771 double y6 = TopLeftY + Height - Center;
\r
774 int y7 = (int) y5;
\r
777 int y8 = (int) y6;
\r
779 int x9 = TopLeftX + Center; // ebmpRound( TopLeftX + 0.45*Height );
\r
780 int y9 = ebmpRound( TopLeftY + 0.6*Height );
\r
782 int x10 = TopLeftX + Width; // ebmpRound( TopLeftX + 0.65*Height );
\r
786 int y11 = TopLeftY + Height;
\r
788 DrawArc( Image, x5, y5 , Center , -3.14159265358979 , 0 , Color );
\r
789 DrawArc( Image, x6, y6 , Center , 0 , 3.14159265358979, Color );
\r
791 DrawLine( Image , x7, y7, x8, y8, Color );
\r
793 DrawLine( Image , x9, y9, x10 ,y10 ,Color );
\r
794 DrawLine( Image , x10, y10, x11 ,y11 ,Color );
\r
796 return x10; // ebmpRound(TopLeftX+0.6*Height);
\r
799 if( Letter == 'H' )
\r
805 int y2 = TopLeftY + Height;
\r
807 int x3 = TopLeftX + Width;
\r
814 int y5 = ebmpRound( TopLeftY + 0.5*Height );
\r
819 DrawLine( Image , x1, y1, x2, y2, Color );
\r
820 DrawLine( Image , x3, y3, x4, y4, Color );
\r
821 DrawLine( Image , x5, y5, x6, y6, Color );
\r
826 if( Letter == 'I' )
\r
828 int x1 = ebmpRound( TopLeftX + Height*0.05);
\r
831 int x2 = ebmpRound(x1 + 0.4*Height);
\r
834 int x3 = ebmpRound( x1 + 0.2*Height);
\r
838 int y4 = TopLeftY+Height;
\r
846 DrawLine( Image , x1, y1, x2, y2, Color );
\r
847 DrawLine( Image , x3, y3, x6, y6, Color );
\r
848 DrawLine( Image , x4, y4, x5, y5, Color );
\r
853 if( Letter == 'J' )
\r
855 int x1 = TopLeftX + Width;
\r
859 int y2 = TopLeftY + Height - Center;
\r
861 double x3 = TopLeftX + Center;
\r
864 DrawLine( Image , x1, y1, x2, y2, Color );
\r
865 DrawArc( Image, x3, y3, Center , 0 , 1.1*pi , Color );
\r
869 if( Letter == 'K' )
\r
875 int y2 = TopLeftY + Height;
\r
878 int y3 = TopLeftY + Height - Center; // ebmpRound( TopLeftY + 0.6*Height );
\r
880 int x4 = TopLeftX + Width;
\r
883 int x5 = TopLeftX + Center;
\r
884 int y5 = ebmpRound( TopLeftY + 0.5*Height );
\r
889 DrawLine( Image, x1, y1, x2, y2, Color );
\r
890 DrawLine( Image, x3, y3, x4, y4, Color );
\r
891 DrawLine( Image, x5, y5, x6, y6, Color );
\r
896 if( Letter == 'L' )
\r
902 int y2 = TopLeftY + Height;
\r
904 int x3 = TopLeftX + Width;
\r
907 DrawLine( Image , x1, y1, x2, y2, Color );
\r
908 DrawLine( Image , x2, y2, x3, y3, Color );
\r
913 if( Letter == 'M' )
\r
919 int y2 = TopLeftY + Height;
\r
921 int x3 = TopLeftX + Width;
\r
927 int x5 = TopLeftX + Center;
\r
930 DrawLine( Image , x1, y1, x2, y2, Color );
\r
931 DrawLine( Image , x3, y3, x4, y4, Color );
\r
932 DrawLine( Image , x1, y1, x5, y5, Color );
\r
933 DrawLine( Image , x3, y3, x5, y5, Color );
\r
938 if( Letter == 'N' )
\r
944 int y2 = TopLeftY + Height;
\r
946 int x3 = TopLeftX + Width;
\r
952 DrawLine( Image , x1, y1, x2, y2, Color );
\r
953 DrawLine( Image , x3, y3, x4, y4, Color );
\r
954 DrawLine( Image , x1, y1, x4, y4, Color );
\r
959 if( Letter == 'P' )
\r
962 int y1 = TopLeftY+Height;
\r
967 int x3 = TopLeftX + Center;
\r
971 int y4 = ebmpRound( TopLeftY + 0.5*Height );
\r
979 // centers of the circles
\r
982 double y7 = ( 0.5*(y3+y5) );
\r
984 DrawLine( Image , x1, y1, x2, y2, Color );
\r
985 DrawLine( Image , x2, y2, x3, y3, Color );
\r
987 DrawLine( Image , x2, y2, x3, y3, Color );
\r
988 DrawLine( Image , x4, y4, x5, y5, Color );
\r
990 DrawArc( Image, x7, y7 , 0.25*Height , -1.57079632679490 , 1.57079632679490 , Color );
\r
992 return ebmpRound( TopLeftX + Center + 0.25*Height);
\r
995 if( Letter == 'Q' )
\r
998 int y1 = TopLeftY + Height - Center;
\r
1001 int y2 = TopLeftY + Center;
\r
1003 int x3 = TopLeftX + Width;
\r
1009 // centers of the circles
\r
1011 double x5 = TopLeftX + Center;
\r
1012 double y5 = TopLeftY + Center;
\r
1015 double y6 = TopLeftY + Height - Center;
\r
1019 int x7 = TopLeftX + Width;
\r
1020 int y7 = TopLeftY + Height;
\r
1022 int x8 = x7 - Center;
\r
1023 int y8 = y7 - Center;
\r
1025 DrawLine( Image , x1, y1, x2, y2, Color );
\r
1026 DrawLine( Image , x3, y3, x4, y4, Color );
\r
1028 DrawArc( Image, x5, y5 , Center , 3.14159265358979 , 6.28318530717959 , Color );
\r
1029 DrawArc( Image, x6, y6 , Center , 0 , 3.14159265358979 , Color );
\r
1031 DrawLine( Image , x7, y7 , x8, y8 , Color );
\r
1036 if( Letter == 'R' )
\r
1038 int x1 = TopLeftX;
\r
1039 int y1 = TopLeftY+Height;
\r
1041 int x2 = TopLeftX;
\r
1042 int y2 = TopLeftY;
\r
1044 int x3 = TopLeftX + Center;
\r
1045 int y3 = TopLeftY;
\r
1048 int y4 = ebmpRound( TopLeftY + 0.5*Height );
\r
1056 // centers of the circles
\r
1059 double y7 = ( 0.5*(y3+y5) );
\r
1063 int x8 = TopLeftX + Width;
\r
1066 int x9 = ebmpRound( TopLeftX + 0.25*Height);
\r
1069 DrawLine( Image , x1, y1, x2, y2, Color );
\r
1070 DrawLine( Image , x2, y2, x3, y3, Color );
\r
1072 DrawLine( Image , x2, y2, x3, y3, Color );
\r
1073 DrawLine( Image , x4, y4, x5, y5, Color );
\r
1075 DrawArc( Image, x7, y7 , 0.25*Height , -1.57079632679490 , 1.57079632679490 , Color );
\r
1077 DrawLine( Image , x8, y8, x9, y9 , Color);
\r
1079 return TopLeftX + Width;
\r
1082 if( Letter == 'T' )
\r
1084 int x1 = TopLeftX;
\r
1085 int y1 = TopLeftY;
\r
1087 int x2 = TopLeftX + Width;
\r
1090 int x3 = TopLeftX + Center;
\r
1094 int y4 = TopLeftY + Height;
\r
1096 DrawLine( Image , x1, y1, x2, y2, Color );
\r
1097 DrawLine( Image , x3, y3, x4, y4, Color );
\r
1102 if( Letter == 'S' )
\r
1104 double x1 = TopLeftX + 0.25*Height;
\r
1105 double y1 = TopLeftY + 0.25*Height;
\r
1108 double y2 = TopLeftY + 0.75*Height;
\r
1110 DrawArc( Image, x1, y1 , 0.25*Height, 1.5707963267948 , 6.28318530717 , Color );
\r
1111 DrawArc( Image, x2, y2 , 0.25*Height, -1.5707963267948 ,3.1415926535897 , Color );
\r
1113 return ebmpRound( TopLeftX + 0.5*Height );
\r
1116 if( Letter == 'U' )
\r
1118 int x1 = TopLeftX;
\r
1119 int y1 = TopLeftY + Height - Center;
\r
1122 int y2 = TopLeftY;
\r
1124 int x3 = TopLeftX + Width;
\r
1130 // centers of the circle
\r
1132 double x5 = TopLeftX + Center;
\r
1133 double y5 = TopLeftY + Height - Center;
\r
1135 DrawLine( Image , x1, y1, x2, y2, Color );
\r
1136 DrawLine( Image , x3, y3, x4, y4, Color );
\r
1138 DrawArc( Image, x5, y5 , Center , 0 , 3.14159265358979 , Color );
\r
1143 if( Letter == 'V' )
\r
1145 int x1 = TopLeftX;
\r
1146 int y1 = TopLeftY;
\r
1148 int x2 = TopLeftX + Width;
\r
1151 int x3 = TopLeftX + Center;
\r
1152 int y3 = TopLeftY + Height;
\r
1154 DrawLine( Image , x1, y1, x3, y3, Color );
\r
1155 DrawLine( Image , x2, y2, x3, y3, Color );
\r
1160 if( Letter == 'W' )
\r
1162 int x1 = TopLeftX;
\r
1163 int y1 = TopLeftY;
\r
1165 int x2 = ebmpRound(TopLeftX + 0.4*Height);
\r
1168 int x3 = ebmpRound( TopLeftX + 0.8*Height);
\r
1171 int x4 = ebmpRound( TopLeftX + 0.2*Height );
\r
1172 int y4 = TopLeftY + Height;
\r
1174 int x5 = ebmpRound( TopLeftX + 0.6*Height );
\r
1177 DrawLine( Image , x1, y1, x4, y4, Color );
\r
1178 DrawLine( Image , x4, y4, x2, y2, Color );
\r
1179 DrawLine( Image , x2, y2, x5, y5, Color );
\r
1180 DrawLine( Image , x5, y5, x3, y3, Color );
\r
1185 if( Letter == 'X' )
\r
1187 int x1 = TopLeftX;
\r
1188 int y1 = TopLeftY;
\r
1190 int x2 = TopLeftX + Width;
\r
1194 int y3 = TopLeftY + Height;
\r
1199 DrawLine( Image , x1 , y1, x4, y4 , Color );
\r
1200 DrawLine( Image , x2 , y2, x3, y3 , Color );
\r
1205 if( Letter == 'Y' )
\r
1207 int x1 = TopLeftX;
\r
1208 int y1 = TopLeftY;
\r
1210 int x2 = TopLeftX + Width;
\r
1213 int x3 = TopLeftX + Center;
\r
1214 int y3 = ebmpRound( TopLeftY + 0.5*Height);
\r
1217 int y4 = TopLeftY + Height;
\r
1219 DrawLine( Image , x1, y1, x3, y3, Color );
\r
1220 DrawLine( Image , x2, y2, x3, y3, Color );
\r
1221 DrawLine( Image , x3, y3, x4, y4, Color );
\r
1226 if( Letter == 'Z' )
\r
1228 int x1 = TopLeftX;
\r
1229 int y1 = TopLeftY;
\r
1231 int x2 = TopLeftX + Width;
\r
1235 int y3 = TopLeftY + Height;
\r
1241 DrawLine( Image , x1 , y1, x2, y2 , Color );
\r
1242 DrawLine( Image , x2 , y2, x3, y3 , Color );
\r
1243 DrawLine( Image , x3 , y3, x4, y4 , Color );
\r
1250 if( Letter == ' ' || Letter == '\t' )
\r
1252 return ebmpRound( TopLeftX + 0.5*Height );
\r
1257 if( Letter == '0' || Letter == 'O' )
\r
1259 int x1 = TopLeftX;
\r
1260 int y1 = TopLeftY + Height - Center;
\r
1263 int y2 = TopLeftY + Center;
\r
1265 int x3 = TopLeftX + Width;
\r
1271 // centers of the circles
\r
1273 double x5 = TopLeftX + Center;
\r
1274 double y5 = TopLeftY + Center;
\r
1277 double y6 = TopLeftY + Height - Center;
\r
1279 DrawLine( Image , x1, y1, x2, y2, Color );
\r
1280 DrawLine( Image , x3, y3, x4, y4, Color );
\r
1282 DrawArc( Image, x5, y5 , Center , 3.14159265358979 , 6.28318530717959 , Color );
\r
1283 DrawArc( Image, x6, y6 , Center , 0 , 3.14159265358979 , Color );
\r
1288 if( Letter == '1' )
\r
1290 int x1 = ebmpRound( TopLeftX + Height*0.05);
\r
1291 int y1 = TopLeftY+Height;
\r
1293 int x2 = ebmpRound(x1 + 0.4*Height);
\r
1296 int x3 = ebmpRound( x1 + 0.2*Height);
\r
1300 int y4 = TopLeftY;
\r
1302 int x5 = ebmpRound(x1 + 0.05*Height);
\r
1303 int y5 = ebmpRound(TopLeftY+ 0.2*Height);
\r
1305 DrawLine( Image , x1, y1, x2, y2, Color );
\r
1306 DrawLine( Image , x3, y3, x4, y4, Color );
\r
1307 DrawLine( Image , x4, y4, x5, y5, Color );
\r
1309 return ebmpRound(x2 + Height*0.05);
\r
1312 if( Letter == '2' )
\r
1314 int x1 = TopLeftX + Width; // ebmpRound( TopLeftX + 0.6*Height );
\r
1315 int y1 = TopLeftY+Height;
\r
1317 int x2 = TopLeftX;
\r
1321 int y3 = TopLeftY + Center; // ebmpRound( TopLeftY + 0.3*Height )+1;
\r
1323 double x4 = TopLeftX + Center; // TopLeftX + (0.3*Height);
\r
1324 double y4 = TopLeftY + Center; // TopLeftY + (0.3*Height);
\r
1326 DrawLine( Image , x1, y1, x2, y2, Color );
\r
1327 DrawLine( Image , x2, y2, x3, y3, Color );
\r
1329 DrawArc( Image , x4 , y4 , Center , 2.74 , 6.3 , Color );
\r
1334 if( Letter == '3' )
\r
1336 double x1 = TopLeftX + (0.25*Height);
\r
1337 double y1 = TopLeftY + (0.25*Height);
\r
1340 double y2 = TopLeftY + (0.75*Height);
\r
1342 int x3 = ebmpRound( TopLeftX + 0.3*Height);
\r
1343 int y3 = ebmpRound( TopLeftY + 0.5*Height);
\r
1345 int x4 = ebmpRound( TopLeftX + 0.2*Height);
\r
1348 DrawArc( Image , x1 , y1 , 0.25*Height , -3.14159265358979 , 1.57079632679490 , Color );
\r
1349 DrawArc( Image , x2 , y2 , 0.25*Height , -1.57079632679490 , 3.14159265358979 , Color );
\r
1350 DrawLine( Image , x3, y3, x4, y4, Color );
\r
1352 return ebmpRound(TopLeftX + 0.5*Height);
\r
1355 if( Letter == '4' )
\r
1357 // define some control points
\r
1359 int x1 = TopLeftX+Width;
\r
1360 int y1 = TopLeftY+ebmpRound(Height*2.0/3.0);
\r
1362 int x2 = TopLeftX;
\r
1365 int x3 = ebmpRound( TopLeftX + 0.5*Height );
\r
1366 int y3 = TopLeftY;
\r
1369 int y4 = TopLeftY + Height;
\r
1372 DrawLine( Image , x1, y1, x2, y2, Color );
\r
1373 DrawLine( Image , x2, y2, x3, y3, Color );
\r
1374 DrawLine( Image , x3, y3, x4, y4, Color );
\r
1379 if( Letter == '5' )
\r
1381 int x1 = TopLeftX + Width;
\r
1382 int y1 = TopLeftY;
\r
1385 int y2 = TopLeftY;
\r
1387 int x3 = TopLeftX + ebmpRound( 0.2*Height )-1;
\r
1388 int y3 = TopLeftY + ebmpRound( 0.48786796564404*Height );
\r
1392 double x4 = TopLeftX + Center;
\r
1393 double y4 = TopLeftY + Height - Center;
\r
1395 DrawArc( Image , x4, y4, Center, -2.35619449019234 , 3 , Color );
\r
1397 DrawLine( Image , x1, y1, x2, y2, Color );
\r
1398 DrawLine( Image , x2, y2, x3, y3, Color );
\r
1403 if( Letter == '6' )
\r
1405 double x1 = TopLeftX + (0.25*Height);
\r
1406 double y1 = TopLeftY + (0.25*Height);
\r
1409 double y2 = TopLeftY + (0.75*Height);
\r
1411 int x3 = TopLeftX;
\r
1412 int y3 = ebmpRound( y1 );
\r
1415 int y4 = ebmpRound( y2 );
\r
1417 DrawArc( Image , x1 , y1 , 0.25*Height , 3.1 , 6.2 , Color );
\r
1418 DrawArc( Image , x2 , y2 , 0.25*Height , 0 , 6.29 , Color );
\r
1420 DrawLine( Image , x3, y3, x4, y4, Color );
\r
1422 return TopLeftX + (int) ebmpRound(.5*Height);
\r
1425 if( Letter == '7' )
\r
1427 int x1 = TopLeftX;
\r
1428 int y1 = TopLeftY;
\r
1430 int x2 = TopLeftX + Width;
\r
1433 int x3 = ebmpRound(TopLeftX + 0.1*Height);
\r
1434 int y3 = TopLeftY + Height;
\r
1436 DrawLine( Image , x1, y1, x2, y2, Color );
\r
1437 DrawLine( Image , x2, y2, x3, y3, Color );
\r
1442 if( Letter == '8' )
\r
1444 double x1 = TopLeftX + (0.25*Height);
\r
1445 double y1 = TopLeftY + (0.25*Height);
\r
1448 double y2 = TopLeftY + (0.75*Height);
\r
1450 DrawArc( Image , x1 , y1 , 0.25*Height , 0 , 6.28318530717959 , Color );
\r
1451 DrawArc( Image , x2 , y2 , 0.25*Height , 0 , 6.28318530717959 , Color );
\r
1453 return TopLeftX + (int) ebmpRound(.5*Height);
\r
1456 if( Letter == '9' )
\r
1458 double x1 = TopLeftX + (0.25*Height);
\r
1459 double y1 = TopLeftY + (0.25*Height);
\r
1462 double y2 = TopLeftY + (0.75*Height);
\r
1464 int x3 = ebmpRound( TopLeftX + 0.5*Height );
\r
1465 int y3 = ebmpRound( y1 );
\r
1468 int y4 = ebmpRound( y2 );
\r
1470 DrawArc( Image , x1 , y1 , 0.25*Height , 0 , 6.28318530717959 , Color );
\r
1471 DrawArc( Image , x2 , y2 , 0.25*Height , 0 , 3 , Color );
\r
1473 DrawLine( Image , x3, y3, x4, y4, Color );
\r
1475 return TopLeftX + (int) ebmpRound(.5*Height);
\r
1478 if( Letter == '.' )
\r
1480 double x1 = TopLeftX + 1.25;
\r
1481 double y1 = TopLeftY + Height - 0.5;
\r
1483 DrawArc( Image, x1, y1, 0.75 , 0 , 6.3 , Color );
\r
1485 return ebmpRound( x1 + 1.25 );
\r
1488 if( Letter == '!' )
\r
1490 double x1 = TopLeftX + 1.25;
\r
1491 double y1 = TopLeftY + Height - 0.5;
\r
1493 int x2 = ebmpRound( x1 );
\r
1494 int y2 = TopLeftY;
\r
1497 int y3 = ebmpRound( y1 - 2 );
\r
1499 int y4 = ebmpRound( 0.05*(13*y3+7*y2) );
\r
1501 DrawArc( Image, x1, y1, 0.75 , 0 , 6.3 , Color );
\r
1503 DrawLine( Image, x2,y2, x3,y3 , Color);
\r
1504 DrawLine( Image, x2-1, y2, x3-1,y4 , Color);
\r
1506 return ebmpRound( x1 + 1.25 );
\r
1509 if( Letter == ',' )
\r
1511 double x1 = TopLeftX + 1.25;
\r
1512 double y1 = TopLeftY + Height - 0.5;
\r
1515 double y3 = y1 + 1.75;
\r
1517 DrawArc( Image, x1, y1, 0.75 , 0 , 6.3 , Color );
\r
1518 DrawArc( Image, x3, y3, 1.75 , -0.5*pi , 0.65*pi , Color );
\r
1520 return ebmpRound( x1 + 1.25 );
\r
1523 if( Letter == '\'' )
\r
1525 double x1 = TopLeftX + 1.25;
\r
1526 double y1 = TopLeftY + Center - 0.5;
\r
1529 double y3 = y1 + 1.75;
\r
1531 DrawArc( Image, x1, y1, 0.75 , 0 , 6.3 , Color );
\r
1532 DrawArc( Image, x3, y3, 1.75 , -0.5*pi , 0.65*pi , Color );
\r
1534 return ebmpRound( x1 + 1.25 );
\r
1537 if( Letter == '`' )
\r
1539 double x1 = TopLeftX + 1.25;
\r
1540 double y1 = TopLeftY + Center - 0.5;
\r
1543 double y3 = y1 + 1.75;
\r
1545 DrawArc( Image, x1, y1, 0.75 , 0 , 6.3 , Color );
\r
1546 DrawArc( Image, x3, y3, 1.75 , 0.35*pi , 1.5*pi , Color );
\r
1548 return ebmpRound( x1 + 1.25 );
\r
1552 if( Letter == '"' )
\r
1554 double x1 = TopLeftX + 1.25;
\r
1555 double y1 = TopLeftY + Center - 0.5;
\r
1558 double y3 = y1 + 1.75;
\r
1560 DrawArc( Image, x1, y1, 0.75 , 0 , 6.3 , Color );
\r
1561 DrawArc( Image, x3, y3, 1.75 , -0.5*pi , 0.65*pi , Color );
\r
1563 DrawArc( Image, x1+3.5, y1, 0.75 , 0 , 6.3 , Color );
\r
1564 DrawArc( Image, x3+3.5, y3, 1.75 , -0.5*pi , 0.65*pi , Color );
\r
1566 return ebmpRound( x1 + 1.25 + 3.5);
\r
1569 if( Letter == '[' )
\r
1571 int x1 = TopLeftX;
\r
1572 int y1 = TopLeftY;
\r
1575 int y2 = y1 + Height;
\r
1577 int x3 = ebmpRound(TopLeftX + 0.15*Height)+1;
\r
1583 DrawLine(Image,x1,y1,x2,y2,Color);
\r
1584 DrawLine(Image,x1,y1,x3,y3,Color);
\r
1585 DrawLine(Image,x2,y2,x4,y4,Color);
\r
1590 if( Letter == ']' )
\r
1592 int x1 = TopLeftX;
\r
1593 int y1 = TopLeftY;
\r
1596 int y2 = y1 + Height;
\r
1598 int x3 = ebmpRound(TopLeftX + 0.15*Height)+1;
\r
1604 DrawLine(Image,x3,y3,x4,y4,Color);
\r
1605 DrawLine(Image,x1,y1,x3,y3,Color);
\r
1606 DrawLine(Image,x2,y2,x4,y4,Color);
\r
1611 if( Letter == '|' || Letter == 'l' )
\r
1613 int x1 = TopLeftX+2;
\r
1614 int y1 = TopLeftY;
\r
1617 int y2 = y1 + Height;
\r
1619 DrawLine(Image,x1,y1,x2,y2,Color);
\r
1624 if( Letter == ':' )
\r
1626 double x1 = TopLeftX + 1.25;
\r
1627 double y1 = TopLeftY + Height - 0.5;
\r
1630 double y2 = TopLeftY + 0.5*Height;
\r
1632 DrawArc( Image, x1, y1, 0.75 , 0 , 6.3 , Color );
\r
1633 DrawArc( Image, x2, y2, 0.75 , 0 , 6.3 , Color );
\r
1635 return ebmpRound( x1 + 1.25 );
\r
1638 if( Letter == ';' )
\r
1640 double x1 = TopLeftX + 1.25;
\r
1641 double y1 = TopLeftY + Height - 0.5;
\r
1644 double y2 = TopLeftY + 0.5*Height;
\r
1647 double y3 = y1 + 1.75;
\r
1649 DrawArc( Image, x1, y1, 0.75 , 0 , 6.3 , Color );
\r
1650 DrawArc( Image, x2, y2, 0.75 , 0 , 6.3 , Color );
\r
1651 DrawArc( Image, x3, y3, 1.75 , -0.5*pi , 0.65*pi , Color );
\r
1653 return ebmpRound( x1 + 1.25 );
\r
1656 if( Letter == '-' )
\r
1658 int TempWidth = ebmpRound(0.5*Height);
\r
1659 if( TempWidth % 2 != 0 )
\r
1661 int TempRad = (TempWidth-1)/2;
\r
1663 int x1 = TopLeftX;
\r
1664 int y1 = TopLeftY + TempWidth;
\r
1666 int x2 = TopLeftX + TempWidth;
\r
1669 DrawLine( Image, x1, y1, x2, y2 , Color );
\r
1674 if( Letter == '=' )
\r
1676 int TempWidth = ebmpRound(0.5*Height);
\r
1677 if( TempWidth % 2 != 0 )
\r
1679 int TempRad = (TempWidth-1)/2;
\r
1681 int x1 = TopLeftX;
\r
1682 int y1 = TopLeftY + TempWidth-1;
\r
1684 int x2 = TopLeftX + TempWidth+1;
\r
1694 DrawLine( Image, x1, y1, x2, y2 , Color );
\r
1695 DrawLine( Image, x3, y3, x4, y4 , Color );
\r
1700 if( Letter == '+' )
\r
1702 int TempWidth = ebmpRound(0.5*Height);
\r
1703 if( TempWidth % 2 != 0 )
\r
1705 int TempRad = (TempWidth-1)/2;
\r
1707 int x1 = TopLeftX;
\r
1708 int y1 = TopLeftY + TempWidth;
\r
1710 int x2 = TopLeftX + TempWidth;
\r
1713 int x3 = ( x1 + TempRad + 1);
\r
1714 int y3 = ( y1 + TempRad + 1);
\r
1717 int y4 = ( y1 - TempRad - 1);
\r
1719 DrawLine( Image, x1, y1, x2, y2 , Color );
\r
1720 DrawLine( Image, x3, y3, x4, y4 , Color );
\r
1725 if( Letter == '/' )
\r
1727 int x1 = TopLeftX;
\r
1728 int y1 = TopLeftY+Height;
\r
1730 int x2 = TopLeftX+Width;
\r
1731 int y2 = TopLeftY;
\r
1733 DrawLine(Image,x1,y1,x2,y2,Color);
\r
1737 if( Letter == '\\' )
\r
1739 int x1 = TopLeftX+Width;
\r
1740 int y1 = TopLeftY+Height;
\r
1742 int x2 = TopLeftX;
\r
1743 int y2 = TopLeftY;
\r
1745 DrawLine(Image,x1,y1,x2,y2,Color);
\r
1750 if( Letter == '%' )
\r
1752 int x1 = TopLeftX;
\r
1753 int y1 = TopLeftY+Height;
\r
1755 int x2 = TopLeftX+Width;
\r
1756 int y2 = TopLeftY;
\r
1758 double x3 = TopLeftX + 0.15*Height;
\r
1759 double y3 = TopLeftY + 0.15*Height;
\r
1761 double x4 = ceil( TopLeftX + 0.45*Height + 0.5);
\r
1762 double y4 = ceil( TopLeftY + 0.85*Height );
\r
1764 DrawLine(Image,x1,y1,x2,y2,Color);
\r
1766 DrawArc(Image,x3,y3,0.15*Height,0,2*pi,Color);
\r
1767 DrawArc(Image,x4,y4,0.15*Height,0,2*pi,Color);
\r
1772 if( Letter == '_' )
\r
1774 DrawLine(Image,TopLeftX,TopLeftY+Height,TopLeftX+Width,TopLeftY+Height,Color);
\r
1776 return TopLeftX + Width;
\r
1779 if( Letter == '^' )
\r
1781 DrawLine(Image,TopLeftX,TopLeftY+Center,TopLeftX+Center,TopLeftY,Color);
\r
1782 DrawLine(Image,TopLeftX+Center,TopLeftY,TopLeftX+Width,TopLeftY+Center,Color);
\r
1784 return TopLeftX + Width;
\r
1787 if( Letter == '<' )
\r
1789 int x1 = TopLeftX;
\r
1790 int y1 = ebmpRound( TopLeftY + 0.5*Height );
\r
1792 int x2 = TopLeftX+Width;
\r
1793 int y2 = TopLeftY;
\r
1796 int y3 = TopLeftY+Height;
\r
1798 DrawLine(Image,x1,y1,x2,y2,Color);
\r
1799 DrawLine(Image,x1,y1,x3,y3,Color);
\r
1804 if( Letter == '>' )
\r
1806 int x1 = TopLeftX+Width;
\r
1807 int y1 = ebmpRound( TopLeftY + 0.5*Height );
\r
1809 int x2 = TopLeftX;
\r
1810 int y2 = TopLeftY;
\r
1813 int y3 = TopLeftY+Height;
\r
1815 DrawLine(Image,x1,y1,x2,y2,Color);
\r
1816 DrawLine(Image,x1,y1,x3,y3,Color);
\r
1821 if( Letter == '#' )
\r
1823 int TempWidth = ebmpRound(0.5*Height);
\r
1824 if( TempWidth % 2 != 0 )
\r
1826 int TempRad = (TempWidth-1)/2;
\r
1828 int x1 = TopLeftX;
\r
1829 int y1 = (int) floor(TopLeftY + 0.5*Height-1);
\r
1831 int x2 = TopLeftX + Width;
\r
1840 int x5 = TopLeftX+Center-1;
\r
1841 int y5 = TopLeftY;
\r
1844 int y6 = TopLeftY+Height;
\r
1846 int x7 = TopLeftX+Center+1;
\r
1847 int y7 = TopLeftY;
\r
1850 int y8 = TopLeftY+Height;
\r
1852 DrawLine( Image, x1, y1, x2, y2 , Color );
\r
1853 DrawLine( Image, x3, y3, x4, y4 , Color );
\r
1854 DrawLine( Image, x5, y5, x6, y6, Color );
\r
1855 DrawLine( Image, x7,y7,x8,y8,Color);
\r
1860 if( Letter == '?' )
\r
1862 double x1 = TopLeftX+Center;
\r
1863 double y1 = TopLeftY+Center;
\r
1865 int x2 = (int) x1;
\r
1866 int y2 = TopLeftY + Width;
\r
1869 int y3 = ebmpRound(TopLeftY+ 0.8*Height);
\r
1870 if( TopLeftY+Height-y3 <= 2 )
\r
1874 double y4 = TopLeftY + Height - 0.5;
\r
1876 DrawArc(Image,x1,y1,Center,pi,pi/2,Color);
\r
1877 DrawLine(Image,x2,y2,x3,y3,Color);
\r
1878 DrawArc( Image, x4, y4, 0.75 , 0 , 6.3 , Color );
\r
1880 return TopLeftX + Width;
\r
1883 if( Letter == '*' )
\r
1885 int x1 = TopLeftX+Center;
\r
1886 int y1 = TopLeftY;
\r
1889 int y2 = TopLeftY+Height;
\r
1891 int x3 = TopLeftX;
\r
1892 int y3 = ebmpRound(TopLeftY+0.5*Height);
\r
1894 int x4 = TopLeftX+Width;
\r
1897 int x5 = TopLeftX+1; // ebmpRound(TopLeftX+0.15*Width);
\r
1898 int y5 = TopLeftY+1; // ebmpRound(TopLeftY+0.15*Height);
\r
1900 int x6 = TopLeftX+Width-1; // ebmpRound(TopLeftX+0.45*Width);
\r
1901 int y6 = TopLeftY+Height-1; // ebmpRound(TopLeftY+0.85*Height);
\r
1909 DrawLine(Image,x1,y1,x2,y2,Color);
\r
1910 DrawLine(Image,x3,y3,x4,y4,Color);
\r
1911 DrawLine(Image,x5,y5,x6,y6,Color);
\r
1912 DrawLine(Image,x7,y7,x8,y8,Color);
\r
1917 if( Letter == '@' )
\r
1919 double x1 = TopLeftX + 1.5*Center;
\r
1920 double y1 = TopLeftY + Height - 1.5*Center;
\r
1922 double x2 = x1 + .35*Center + .6*Center;
\r
1923 double y2 = y1 + .35*Center;
\r
1925 DrawArc(Image,x1,y1,Center*1.5,0,2*pi,Color);
\r
1926 DrawArc(Image,x1,y1,Center*0.5,0,2*pi,Color);
\r
1928 DrawArc(Image,x2,y2,Center*0.45,0,pi,Color);
\r
1930 return ebmpRound(TopLeftX + 3*Center);
\r
1933 if( Letter == '~' )
\r
1935 double x1 = TopLeftX + 0.2*Height;
\r
1936 double y1 = TopLeftY + 0.4*Height;
\r
1938 double x2 = TopLeftX + 0.6*Height;
\r
1941 DrawArc(Image,x1,y1,0.2*Height, 0.7*pi,2*pi, Color);
\r
1942 DrawArc(Image,x2,y2,0.2*Height, -0.3*pi,pi, Color);
\r
1944 return ebmpRound(TopLeftX + 0.8*Height);
\r
1947 if( Letter == '(' )
\r
1949 double x5 = TopLeftX + Center;
\r
1950 double y5 = TopLeftY + 0.5*Height;
\r
1952 DrawArc( Image, x5, y5 , 0.7*Height , 0.5*pi , -0.5*pi , Color );
\r
1957 if( Letter == ')' )
\r
1959 double x5 = TopLeftX - Center;
\r
1960 double y5 = TopLeftY + 0.5*Height;
\r
1962 DrawArc( Image, x5, y5 , 0.7*Height , -0.5*pi , 0.5*pi , Color );
\r
1967 if( Letter == '&' )
\r
1969 double x1 = TopLeftX + Center;
\r
1970 double y1 = TopLeftY + Height-Center;
\r
1973 double y2 = TopLeftY + 0.2*Height;
\r
1975 int x3 = ebmpRound(TopLeftX+0.5*Height);
\r
1976 int y3 = ebmpRound(y2);
\r
1978 int x4 = TopLeftX;
\r
1979 int y4 = ebmpRound(y1);
\r
1981 int x5 = ebmpRound(TopLeftX+0.25*Height);
\r
1982 int y5 = TopLeftY+Height-2*Center;
\r
1984 int x6 = ebmpRound(TopLeftX+1.1*Width);
\r
1985 int y6 = TopLeftY+Height;
\r
1988 DrawArc( Image, x1,y1, Center, -.1*pi, 1.5*pi, Color);
\r
1989 DrawArc( Image, x2,y2, 0.2*Height, 0,2*pi,Color);
\r
1991 // DrawLine( Image, x3,y3, x4,y4, Color);
\r
1992 DrawLine( Image, x5,y5, x6,y6, Color);
\r
1997 if( Letter == '&' && 1 == 0 ) // alt ampersand &
\r
1999 double x1 = TopLeftX + Center;
\r
2000 double y1 = TopLeftY + Height-Center;
\r
2003 double y2 = TopLeftY + 0.2*Height;
\r
2005 int x3 = ebmpRound(TopLeftX+0.5*Height);
\r
2006 int y3 = ebmpRound(y2);
\r
2008 int x4 = TopLeftX;
\r
2009 int y4 = ebmpRound(y1);
\r
2011 int x5 = ebmpRound(TopLeftX+0.1*Height);
\r
2014 int x6 = ebmpRound(TopLeftX+1.1*Width);
\r
2015 int y6 = TopLeftY+Height;
\r
2018 DrawArc( Image, x1,y1, Center, -.25*pi, pi, Color);
\r
2019 DrawArc( Image, x2,y2, 0.2*Height, pi,2*pi,Color);
\r
2021 DrawLine( Image, x3,y3, x4,y4, Color);
\r
2022 DrawLine( Image, x5,y5, x6,y6, Color);
\r
2027 if( Letter == '$' )
\r
2029 double x1 = TopLeftX + 0.25*Height;
\r
2030 double y1 = TopLeftY + 0.25*Height;
\r
2033 double y2 = TopLeftY + 0.75*Height;
\r
2035 int x3 = ebmpRound(x1);
\r
2036 int y3 = ebmpRound(TopLeftY-0.1*Height);
\r
2039 int y4 = ebmpRound(TopLeftY+1.1*Height);
\r
2041 DrawArc( Image, x1, y1 , 0.25*Height, 1.5707963267948 , 6.28318530717 , Color );
\r
2042 DrawArc( Image, x2, y2 , 0.25*Height, -1.5707963267948 ,3.1415926535897 , Color );
\r
2043 DrawLine( Image, x3, y3, x4, y4, Color);
\r
2045 return ebmpRound( TopLeftX + 0.5*Height );
\r
2048 if( Letter == '}' )
\r
2050 double x1 = TopLeftX;
\r
2051 double y1 = TopLeftY + 0.15*Height;
\r
2053 double x2 = x1+0.3*Height;
\r
2054 double y2 = TopLeftY + 0.4*Height;
\r
2057 double y3 = TopLeftY + 0.6*Height;
\r
2060 double y4 = TopLeftY + 0.85*Height;
\r
2062 DrawArc( Image, x1,y1, 0.2*Height, 1.5*pi, 2*pi, Color);
\r
2064 DrawArc( Image, x2,y2, 0.1*Height, 0.5*pi,pi, Color);
\r
2065 DrawArc( Image, x3,y3, 0.1*Height, pi,1.5*pi, Color);
\r
2067 DrawArc( Image, x4,y4, 0.2*Height, 0,0.5*pi, Color);
\r
2069 int x5 = ebmpRound( TopLeftX+0.2*Height);
\r
2070 int y5 = ebmpRound( TopLeftY+0.15*Height);
\r
2073 int y6 = ebmpRound( TopLeftY+0.4*Height);
\r
2075 DrawLine( Image, x5,y5, x6,y6, Color );
\r
2078 int y7 = ebmpRound( TopLeftY+0.6*Height);
\r
2081 int y8 = ebmpRound( TopLeftY+0.85*Height);
\r
2083 DrawLine( Image, x7,y7, x8,y8, Color );
\r
2085 return ebmpRound(TopLeftX + 0.4*Height);
\r
2088 if( Letter == '{' )
\r
2090 double x1 = TopLeftX + 0.3*Height;
\r
2091 double y1 = TopLeftY + 0.15*Height;
\r
2093 double x2 = TopLeftX ;
\r
2094 double y2 = TopLeftY + 0.4*Height;
\r
2097 double y3 = TopLeftY + 0.6*Height;
\r
2100 double y4 = TopLeftY + 0.85*Height;
\r
2102 DrawArc( Image, x1,y1, 0.2*Height, pi,1.5*pi, Color);
\r
2104 DrawArc( Image, x2,y2, 0.1*Height, 0,0.5*pi, Color);
\r
2105 DrawArc( Image, x3,y3, 0.1*Height, 1.5*pi,2*pi, Color);
\r
2107 DrawArc( Image, x4,y4, 0.2*Height, 0.5*pi,pi, Color);
\r
2109 int x5 = ebmpRound( TopLeftX+0.1*Height);
\r
2110 int y5 = ebmpRound( TopLeftY+0.15*Height);
\r
2113 int y6 = ebmpRound( TopLeftY+0.4*Height);
\r
2115 DrawLine( Image, x5,y5, x6,y6, Color );
\r
2118 int y7 = ebmpRound( TopLeftY+0.6*Height);
\r
2121 int y8 = ebmpRound( TopLeftY+0.85*Height);
\r
2123 DrawLine( Image, x7,y7, x8,y8, Color );
\r
2125 return ebmpRound(TopLeftX + 0.4*Height);
\r
2128 if( Letter == '&' && 1 == 0 ) // old ampersand '&'
\r
2130 double x1 = TopLeftX + (0.25*Height);
\r
2131 double y1 = TopLeftY + (0.25*Height);
\r
2134 double y2 = TopLeftY + (0.75*Height);
\r
2136 int x3 = ebmpRound( TopLeftX + 0.3*Height);
\r
2137 int y3 = ebmpRound( TopLeftY + 0.5*Height);
\r
2139 int x4 = ebmpRound( TopLeftX + 0.2*Height);
\r
2142 int x5 = ebmpRound(TopLeftX + 0.35*Height);
\r
2143 int y5 = ebmpRound(TopLeftY + 0.75*Height);
\r
2145 int x6 = ebmpRound(TopLeftX + 0.65*Height);
\r
2149 DrawArc( Image , x1 , y1 , 0.25*Height , 1.57079632679490 , 2*pi , Color );
\r
2150 DrawArc( Image , x2 , y2 , 0.25*Height , 0, 1.5*pi , Color );
\r
2151 DrawLine( Image , x3, y3, x4, y4, Color );
\r
2152 DrawLine( Image , x5, y5, x6, y6, Color );
\r
2161 int PrintCopyright( BMP& Image, int TopLeftX, int TopLeftY , int Height ,
\r
2164 double pi = 3.14159265358979;
\r
2166 int CharNumber = 0;
\r
2167 int StartX = ebmpRound(TopLeftX+0.25*Height);
\r
2168 int Spacing = (int) ebmpRound( 0.2*Height );
\r
2171 int StartY = ebmpRound( TopLeftY-0.25*Height);
\r
2173 double x1 = TopLeftX + 0.5*Height;
\r
2174 double y1 = TopLeftY + 0.5*Height;
\r
2176 DrawArc(Image, x1, y1, 0.6*Height , 0, 2*pi , Color );
\r
2177 return PrintLetter( Image, 'c' , StartX, StartY , Height, Color ) + Spacing;
\r