+/*************************************************\r
+* *\r
+* EasyBMP Cross-Platform Windows Bitmap Library * \r
+* *\r
+* Author: Paul Macklin *\r
+* email: pmacklin@math.uci.edu *\r
+* *\r
+* file: EasyBMP_Font.h *\r
+* date: 2-21-2005 *\r
+* version: 1.05.00 *\r
+* *\r
+* License: BSD (revised) *\r
+* Copyright: 2005-2006 by the EasyBMP Project * \r
+* *\r
+* description: draw a simple font *\r
+* *\r
+*************************************************/\r
+\r
+#include "../../../../include/freenet/captcha/easybmp/EasyBMP_Geometry.h"\r
+#include "../../../../include/freenet/captcha/easybmp/EasyBMP_Font.h"\r
+ \r
+int PrintString( BMP& Image, char* String , int TopLeftX, int TopLeftY , int Height , \r
+ RGBApixel Color )\r
+{\r
+ int CharNumber = 0;\r
+ int StartX = TopLeftX;\r
+ int Spacing = (int) ebmpRound( 0.2*Height );\r
+ if( Spacing < 3 )\r
+ { Spacing = 3; }\r
+ \r
+ for( CharNumber = 0 ; CharNumber < strlen( String ) ; CharNumber++ )\r
+ {\r
+ int ReturnPosition = PrintLetter( Image , String[CharNumber] , StartX , TopLeftY , Height , Color );\r
+ StartX = ReturnPosition;\r
+ StartX += Spacing;\r
+ }\r
+ return StartX;\r
+}\r
+\r
+int PrintLetter( BMP& Image, char Letter , int TopLeftX, int TopLeftY, int Height , \r
+ RGBApixel Color )\r
+{\r
+ int Width = (int) floor( 0.6*Height);\r
+ if( Width % 2 != 0 ){ Width++; }\r
+ int Center = (Width)/2;\r
+ \r
+ RGBApixel TempColor;\r
+ TempColor.Red = 0;\r
+ TempColor.Green = 255;\r
+ TempColor.Blue = 0;\r
+ \r
+ double pi = 3.14159265358979;\r
+\r
+// if( isalpha(Letter) )\r
+// { Letter = toupper(Letter); }\r
+\r
+ if( Letter == COPYRIGHT_SYMBOL )\r
+ {\r
+ return PrintCopyright( Image, TopLeftX, TopLeftY, Height, Color );\r
+ }\r
+\r
+ if( Letter == 'a' )\r
+ {\r
+ double x1 = TopLeftX + 0.25*Height;\r
+ double y1 = TopLeftY + 0.75*Height;\r
+ \r
+ int x2 = ebmpRound(TopLeftX+0.5*Height);\r
+ int y2 = ebmpRound(TopLeftY+0.5*Height);\r
+ \r
+ int x3 = x2;\r
+ int y3 = TopLeftY+Height;\r
+ \r
+ DrawArc(Image,x1,y1,0.25*Height,0,2*pi,Color);\r
+ DrawLine(Image,x2,y2,x3,y3,Color);\r
+ \r
+ return ebmpRound( TopLeftX + 0.5*Height );\r
+ }\r
+ \r
+ if( Letter == 'b' )\r
+ {\r
+ double x1 = TopLeftX + 0.25*Height;\r
+ double y1 = TopLeftY + 0.75*Height;\r
+ \r
+ int x2 = TopLeftX; // ebmpRound(TopLeftX+0.5*Height);\r
+ int y2 = TopLeftY; // ebmpRound(TopLeftY+0.5*Height);\r
+ \r
+ int x3 = x2;\r
+ int y3 = TopLeftY+Height;\r
+ \r
+ DrawArc(Image,x1,y1,0.25*Height,0,2*pi,Color);\r
+ DrawLine(Image,x2,y2,x3,y3,Color);\r
+ \r
+ return ebmpRound( TopLeftX + 0.5*Height );\r
+ } \r
+ \r
+ if( Letter == 'c' )\r
+ {\r
+ double x1 = TopLeftX + 0.25*Height;\r
+ double y1 = TopLeftY + 0.75*Height;\r
+\r
+ DrawArc(Image,x1,y1,0.25*Height,0.25*pi,-0.25*pi,Color);\r
+ return ebmpRound( TopLeftX+0.5*Height);\r
+ }\r
+\r
+ if( Letter == 'd' )\r
+ {\r
+ double x1 = TopLeftX + 0.25*Height;\r
+ double y1 = TopLeftY + 0.75*Height;\r
+ \r
+ int x2 = ebmpRound(TopLeftX+0.5*Height);\r
+ int y2 = TopLeftY; // ebmpRound(TopLeftY+0.5*Height);\r
+ \r
+ int x3 = x2;\r
+ int y3 = TopLeftY+Height;\r
+ \r
+ DrawArc(Image,x1,y1,0.25*Height,0,2*pi,Color);\r
+ DrawLine(Image,x2,y2,x3,y3,Color);\r
+ \r
+ return ebmpRound( TopLeftX + 0.5*Height );\r
+ } \r
+ \r
+ if( Letter == 'e' )\r
+ {\r
+ double x1 = TopLeftX + 0.25*Height;\r
+ double y1 = TopLeftY + 0.75*Height;\r
+ \r
+ int x2 = TopLeftX;\r
+ int y2 = ebmpRound(TopLeftY + 0.75*Height);\r
+ \r
+ int x3 = ebmpRound( TopLeftX+0.5*Height);\r
+ int y3 = y2;\r
+\r
+ DrawArc(Image,x1,y1,0.25*Height,0.25*pi,0,Color);\r
+ DrawLine(Image,x2,y2,x3,y3,Color);\r
+ \r
+ return x3;\r
+ } \r
+ \r
+ if( Letter == 'f' )\r
+ {\r
+ int x1 = ebmpRound( TopLeftX + 0.25*Height);\r
+ int y1 = TopLeftY + Center;\r
+ \r
+ int x2 = x1;\r
+ int y2 = TopLeftY + Height;\r
+ \r
+ int x3 = TopLeftX;\r
+ int y3 = ebmpRound( TopLeftY + 0.5*Height);\r
+ \r
+ int x4 = x1 + (x1-x3);\r
+ int y4 = y3;\r
+ \r
+ double x5 = TopLeftX+0.5*Height;\r
+ double y5 = TopLeftY+0.25*Height;\r
+ \r
+ if( Height % 4 == 3 )\r
+ { x5 -= 1; }\r
+ \r
+ DrawLine(Image,x1,y1,x2,y2,Color);\r
+ DrawLine(Image,x3,y3,x4,y4,Color);\r
+ \r
+ DrawArc(Image,x5,y5,0.25*Height,7*pi/8 ,2*pi,Color);\r
+\r
+ return x4; \r
+ }\r
+ \r
+ if( Letter == 'g' )\r
+ {\r
+ double x1 = TopLeftX+0.25*Height;\r
+ double y1 = TopLeftY+0.75*Height;\r
+ \r
+ int x2 = ebmpRound(TopLeftX+0.5*Height);\r
+ int y2 = ebmpRound(TopLeftY+0.5*Height);\r
+ \r
+ int x3 = x2;\r
+ int y3 = ebmpRound(TopLeftY+1.25*Height);\r
+ \r
+ double x4 = x1; \r
+ double y4 = TopLeftY+1.25*Height;\r
+ \r
+ DrawArc(Image,x1,y1,0.25*Height,0,2*pi,Color);\r
+ DrawArc(Image,x4,y4,0.25*Height,0,pi,Color);\r
+ DrawLine(Image,x2,y2,x3,y3,Color);\r
+ \r
+ return ebmpRound(TopLeftX+0.5*Height);\r
+ }\r
+ \r
+ if( Letter == 'h' )\r
+ {\r
+ double x1 = TopLeftX + 0.25*Height;\r
+ double y1 = TopLeftY + 0.75*Height;\r
+ \r
+ int x3 = TopLeftX;\r
+ int y3 = TopLeftY; // ebmpRound(TopLeftY+0.5*Height);\r
+ \r
+ int x4 = x3;\r
+ int y4 = TopLeftY + Height;\r
+ \r
+ int x5 = ebmpRound(TopLeftX+0.5*Height);\r
+ int y5 = ebmpRound(TopLeftY+0.75*Height);\r
+ \r
+ int x6 = x5;\r
+ int y6 = y4;\r
+ \r
+ DrawArc(Image,x1,y1,0.25*Height,pi,2*pi,Color);\r
+ \r
+ DrawLine(Image,x3,y3,x4,y4,Color);\r
+ DrawLine(Image,x5,y5,x6,y6,Color);\r
+ \r
+ return x5;\r
+ } \r
+ \r
+ if( Letter == 'i' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = ebmpRound(TopLeftY+0.5*Height);\r
+ \r
+ int x2 = x1;\r
+ int y2 = TopLeftY+Height;\r
+ \r
+ double x3 = x1;\r
+ double y3 = y1 - 2.5;\r
+ \r
+ DrawArc( Image, x3, y3, 0.75 , 0 , 6.3 , Color );\r
+ DrawLine(Image,x1,y1,x2,y2,Color);\r
+ \r
+ return ebmpRound(x1+1.25);\r
+ }\r
+ \r
+ if( Letter == 'j' )\r
+ {\r
+ int x1 = ebmpRound(TopLeftX+0.25*Height);\r
+ int y1 = ebmpRound(TopLeftY+0.5*Height);\r
+ \r
+ int x2 = x1;\r
+ int y2 = ebmpRound(TopLeftY+1.25*Height);\r
+ \r
+ double x3 = x1;\r
+ double y3 = y1 - 2.5;\r
+ \r
+ double x4 = TopLeftX;\r
+ double y4 = TopLeftY+1.25*Height;\r
+ \r
+ DrawArc( Image, x3, y3, 0.75 , 0 , 6.3 , Color );\r
+ DrawLine(Image,x1,y1,x2,y2,Color);\r
+ \r
+ DrawArc(Image,x4,y4,0.25*Height,0,pi,Color);\r
+ \r
+ return x1;\r
+ } \r
+ \r
+ if( Letter == 'k' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY;\r
+ \r
+ int x2 = x1;\r
+ int y2 = TopLeftY+Height;\r
+ \r
+ int x3 = x1;\r
+ int y3 = ebmpRound(TopLeftY+0.75*Height);\r
+ \r
+ int x4 = ebmpRound(TopLeftX+0.3*Height);\r
+ int y4 = ebmpRound(TopLeftY+0.5*Height);\r
+ \r
+ int x5 = x4;\r
+ int y5 = y2;\r
+ \r
+ DrawLine(Image,x1,y1,x2,y2,Color);\r
+ DrawLine(Image,x3,y3,x4,y4,Color);\r
+ DrawLine(Image,x3,y3,x5,y5,Color);\r
+ \r
+ return x5;\r
+ }\r
+ \r
+ if( Letter == 'm' )\r
+ {\r
+ double x1 = TopLeftX + 0.25*Height;\r
+ double y1 = TopLeftY + 0.75*Height;\r
+\r
+ double x2 = TopLeftX + 0.75*Height;\r
+ double y2 = y1; \r
+ \r
+ int x3 = TopLeftX;\r
+ int y3 = ebmpRound(TopLeftY+0.5*Height);\r
+ \r
+ int x4 = x3;\r
+ int y4 = TopLeftY + Height;\r
+ \r
+ int x5 = ebmpRound(TopLeftX+0.5*Height);\r
+ int y5 = ebmpRound(TopLeftY+0.75*Height);\r
+ \r
+ int x6 = x5;\r
+ int y6 = y4;\r
+ \r
+ int x7 = ebmpRound(TopLeftX+Height);\r
+ if( x7 - x5 > x5 - x3 )\r
+ { x7--; }\r
+ \r
+ int y7 = y5;\r
+ \r
+ int x8 = x7;\r
+ int y8 = y4;\r
+ \r
+ \r
+ DrawArc(Image,x1,y1,0.25*Height,pi,2*pi,Color);\r
+ DrawArc(Image,x2,y2,0.25*Height,pi,2*pi,Color);\r
+ \r
+ DrawLine(Image,x3,y3,x4,y4,Color);\r
+ DrawLine(Image,x5,y5,x6,y6,Color);\r
+ DrawLine(Image,x7,y7,x8,y8,Color);\r
+ \r
+ return x7;\r
+ }\r
+ \r
+ if( Letter == 'n' )\r
+ {\r
+ double x1 = TopLeftX + 0.25*Height;\r
+ double y1 = TopLeftY + 0.75*Height;\r
+ \r
+ int x3 = TopLeftX;\r
+ int y3 = ebmpRound(TopLeftY+0.5*Height);\r
+ \r
+ int x4 = x3;\r
+ int y4 = TopLeftY + Height;\r
+ \r
+ int x5 = ebmpRound(TopLeftX+0.5*Height);\r
+ int y5 = ebmpRound(TopLeftY+0.75*Height);\r
+ \r
+ int x6 = x5;\r
+ int y6 = y4;\r
+ \r
+ DrawArc(Image,x1,y1,0.25*Height,pi,2*pi,Color);\r
+ \r
+ DrawLine(Image,x3,y3,x4,y4,Color);\r
+ DrawLine(Image,x5,y5,x6,y6,Color);\r
+ \r
+ return x5;\r
+ } \r
+ \r
+ if( Letter == 'o' )\r
+ {\r
+ double x1 = TopLeftX + 0.25*Height;\r
+ double y1 = TopLeftY + 0.75*Height;\r
+ \r
+ DrawArc(Image,x1,y1,0.25*Height,0,2*pi,Color);\r
+ \r
+ return ebmpRound(TopLeftX + 0.5*Height);\r
+ } \r
+ \r
+ if( Letter == 'p' )\r
+ {\r
+ double x1 = TopLeftX + 0.25*Height;\r
+ double y1 = TopLeftY + 0.75*Height;\r
+ \r
+ int x2 = TopLeftX;\r
+ int y2 = ebmpRound(TopLeftY + 0.5*Height);\r
+ \r
+ int x3 = x2;\r
+ int y3 = ebmpRound(TopLeftY + 1.5*Height);\r
+\r
+ DrawArc(Image,x1,y1,0.25*Height,0,2*pi,Color);\r
+ DrawLine(Image,x2,y2,x3,y3,Color);\r
+\r
+ return ebmpRound( TopLeftX + 0.5*Height );\r
+ }\r
+ \r
+ if( Letter == 'q' )\r
+ {\r
+ double x1 = TopLeftX+0.25*Height;\r
+ double y1 = TopLeftY+0.75*Height;\r
+ \r
+ int x2 = ebmpRound(TopLeftX+0.5*Height);\r
+ int y2 = ebmpRound(TopLeftY+0.5*Height);\r
+ \r
+ int x3 = x2;\r
+ int y3 = ebmpRound(TopLeftY+1.5*Height);\r
+\r
+ int x4 = ebmpRound(x3+0.2*Height);\r
+ int y4 = ebmpRound(y3-0.2*Height);\r
+ \r
+ DrawArc(Image,x1,y1,0.25*Height,0,2*pi,Color);\r
+ DrawLine(Image,x2,y2,x3,y3,Color);\r
+ DrawLine(Image,x3,y3,x4,y4,Color);\r
+ \r
+ return ebmpRound(TopLeftX+0.5*Height);\r
+ }\r
+ \r
+ if( Letter == 'r' )\r
+ {\r
+ double x1 = TopLeftX + 0.25*Height;\r
+ double y1 = TopLeftY + 0.75*Height;\r
+ \r
+ int x3 = TopLeftX;\r
+ int y3 = ebmpRound(TopLeftY+0.5*Height);\r
+ \r
+ int x4 = x3;\r
+ int y4 = TopLeftY + Height;\r
+\r
+/* \r
+ int x5 = ebmpRound(TopLeftX+0.5*Height);\r
+ int y5 = ebmpRound(TopLeftY+0.75*Height);\r
+ \r
+ int x6 = x5;\r
+ int y6 = y4;\r
+*/ \r
+ \r
+ DrawArc(Image,x1,y1,0.25*Height,pi,2*pi,Color);\r
+ \r
+ DrawLine(Image,x3,y3,x4,y4,Color);\r
+// DrawLine(Image,x5,y5,x6,y6,Color);\r
+ \r
+ return ebmpRound(TopLeftX+0.5*Height);\r
+ } \r
+ \r
+ if( Letter == 's' )\r
+ {\r
+ double x1 = TopLeftX+0.125*Height;\r
+ double y1 = TopLeftY+0.625*Height;\r
+\r
+ double x2 = x1;\r
+ double y2 = (TopLeftY+0.875*Height);\r
+ \r
+ double difference = (TopLeftY+Height)-y2;\r
+ double MaxAngle1 = 0;\r
+ double MaxAngle2 = pi;\r
+ if( difference < 1.5 )\r
+ { difference = 1.5; MaxAngle1 = 0; MaxAngle2 = 1.5; x1 = TopLeftX + difference; x2 = x1; }\r
+ \r
+ y1 = y2 - 2*difference;\r
+ \r
+ DrawArc(Image,x1,y1,difference,0.5*pi,MaxAngle1,Color);\r
+ DrawArc(Image,x2,y2,difference,-0.5*pi,pi,Color);\r
+ \r
+ return ebmpRound(TopLeftX+2*difference);\r
+ }\r
+ \r
+ if( Letter == 't' )\r
+ {\r
+ int x1 = ebmpRound( TopLeftX + 0.25*Height);\r
+ int y1 = TopLeftY + Center;\r
+ \r
+ int x2 = x1;\r
+ int y2 = TopLeftY + Height;\r
+ \r
+ int x3 = TopLeftX;\r
+ int y3 = ebmpRound( TopLeftY + 0.5*Height);\r
+ \r
+ int x4 = x1 + (x1-x3);\r
+ int y4 = y3;\r
+ \r
+ DrawLine(Image,x1,y1,x2,y2,Color);\r
+ DrawLine(Image,x3,y3,x4,y4,Color);\r
+\r
+ return x4; \r
+ }\r
+ \r
+ if( Letter == 'u' )\r
+ {\r
+ double x1 = TopLeftX + 0.25*Height;\r
+ double y1 = TopLeftY + 0.75*Height;\r
+ \r
+ int x3 = TopLeftX;\r
+ int y3 = ebmpRound(TopLeftY+0.5*Height);\r
+ \r
+ int x4 = x3;\r
+ int y4 = ebmpRound(TopLeftY+0.75*Height);// + Height;\r
+ \r
+ int x5 = ebmpRound(TopLeftX+0.5*Height);\r
+ int y5 = TopLeftY + Height;// ebmpRound(TopLeftY+0.75*Height);\r
+ \r
+ int x6 = x5;\r
+ int y6 = y3;\r
+ \r
+ DrawArc(Image,x1,y1,0.25*Height,0,pi,Color);\r
+ \r
+ DrawLine(Image,x3,y3,x4,y4,Color);\r
+ DrawLine(Image,x5,y5,x6,y6,Color);\r
+ \r
+ return x5;\r
+ } \r
+ \r
+ if( Letter == 'v' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = ebmpRound(TopLeftY+0.5*Height);\r
+ \r
+ int x2 = ebmpRound( TopLeftX+0.2*Height);\r
+ int y2 = TopLeftY+Height;\r
+ \r
+ int x3 = ebmpRound( TopLeftX+0.4*Height);\r
+ int y3 = y1;\r
+ \r
+ DrawLine(Image,x1,y1,x2,y2,Color);\r
+ DrawLine(Image,x2,y2,x3,y3,Color);\r
+ \r
+ return x3;\r
+ }\r
+\r
+ if( Letter == 'w' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = ebmpRound(TopLeftY+0.5*Height);\r
+ \r
+ int x2 = ebmpRound(TopLeftX+0.2*Height);\r
+ int y2 = TopLeftY+Height;\r
+ \r
+ int x3 = ebmpRound(TopLeftX+0.4*Height);\r
+ int y3 = y1;\r
+ \r
+ int x4 = ebmpRound(x3+0.2*Height);\r
+ int y4 = y2;\r
+ \r
+ int x5 = ebmpRound(x3+0.4*Height);\r
+ int y5 = y1;\r
+ \r
+ DrawLine(Image,x1,y1,x2,y2,Color);\r
+ DrawLine(Image,x2,y2,x3,y3,Color);\r
+ DrawLine(Image,x3,y3,x4,y4,Color);\r
+ DrawLine(Image,x4,y4,x5,y5,Color);\r
+ \r
+ return x5;\r
+ }\r
+ \r
+ if( Letter == 'x' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = ebmpRound(TopLeftY+0.5*Height);\r
+ \r
+ int x2 = ebmpRound(TopLeftX+0.5*Height);\r
+ int y2 = y1;\r
+ \r
+ int x3 = x1;\r
+ int y3 = TopLeftY+Height;\r
+ \r
+ int x4 = x2;\r
+ int y4 = y3;\r
+ \r
+ DrawLine(Image,x1,y1,x4,y4,Color);\r
+ DrawLine(Image,x2,y2,x3,y3,Color);\r
+ \r
+ return x4;\r
+ }\r
+ \r
+ if( Letter == 'y' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = ebmpRound(TopLeftY+0.5*Height);\r
+ \r
+ int x2 = ebmpRound(TopLeftX+0.5*Height);\r
+ int y2 = y1;\r
+ \r
+ int x3 = ebmpRound(x1+0.25*Height);\r
+ int y3 = TopLeftY+Height;\r
+ \r
+ int x4 = x1;\r
+ int y4 = ebmpRound(TopLeftY+1.25*Height)+1;\r
+ \r
+ DrawLine(Image,x1,y1,x3,y3,Color);\r
+ DrawLine(Image,x2,y2,x4,y4,Color);\r
+ \r
+ return x2;\r
+ } \r
+ \r
+ if( Letter == 'z' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = ebmpRound(TopLeftY+0.5*Height);\r
+ \r
+ int x2 = ebmpRound(TopLeftX+0.5*Height);\r
+ int y2 = y1;\r
+ \r
+ int x3 = x1;\r
+ int y3 = TopLeftY+Height;\r
+ \r
+ int x4 = x2;\r
+ int y4 = y3;\r
+ \r
+ DrawLine(Image,x1,y1,x2,y2,Color);\r
+ DrawLine(Image,x2,y2,x3,y3,Color);\r
+ DrawLine(Image,x3,y3,x4,y4,Color);\r
+ \r
+ return x4;\r
+ }\r
+ \r
+ if( Letter == 'A' )\r
+ {\r
+ // define some control points\r
+ \r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY+Height;\r
+ \r
+ int x2 = TopLeftX + ebmpRound( 0.3*Height );\r
+ int y2 = TopLeftY;\r
+ \r
+ int x3 = TopLeftX + ebmpRound( 0.6*Height );\r
+ int y3 = y1;\r
+ \r
+ int x4 = TopLeftX + ebmpRound( 0.1*Height );\r
+ int y4 = ebmpRound( y1 - Height/3.0 );\r
+ \r
+ int x5 = ebmpRound( x3 - 0.1*Height ); \r
+ int y5 = y4;\r
+ \r
+ DrawLine( Image , x1, y1, x2, y2, Color );\r
+ DrawLine( Image , x2, y2, x3, y3, Color );\r
+ DrawLine( Image , x4, y4, x5, y5, Color );\r
+ \r
+ return x3; \r
+ }\r
+ \r
+ if( Letter == 'B' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY+Height;\r
+ \r
+ int x2 = TopLeftX;\r
+ int y2 = TopLeftY;\r
+ \r
+ int x3 = TopLeftX + Center; // (int) ebmpRound( 0.3*Height );\r
+ int y3 = TopLeftY;\r
+ \r
+ int x4 = x1;\r
+ int y4 = (int) ebmpRound( TopLeftY + 0.5*Height );\r
+\r
+ int x5 = x3;\r
+ int y5 = y4;\r
+ \r
+ int x6 = x3;\r
+ int y6 = y1;\r
+\r
+ // centers of the circles\r
+ \r
+ double x7 = x3;\r
+ double y7 = ( TopLeftY + 0.25*Height );\r
+\r
+ double x8 = x3;\r
+ double y8 = ( TopLeftY + 0.75*Height );\r
+ \r
+ DrawLine( Image , x1, y1, x2, y2, Color );\r
+ DrawLine( Image , x2, y2, x3, y3, Color );\r
+ \r
+ DrawLine( Image , x2, y2, x3, y3, Color ); \r
+ DrawLine( Image , x4, y4, x5, y5, Color ); \r
+ DrawLine( Image , x1, y1, x6, y6, Color );\r
+ \r
+ DrawArc( Image, x7, y7 , 0.25*Height , -1.57079632679490 , 1.57079632679490 , Color ); \r
+ DrawArc( Image, x8, y8 , 0.25*Height , -1.57079632679490 , 1.57079632679490 , Color ); \r
+ \r
+ return ebmpRound( TopLeftX + Center + 0.25*Height); \r
+ }\r
+ \r
+ if( Letter == 'C' )\r
+ {\r
+ double x5 = TopLeftX + Center; \r
+ double y5 = TopLeftY + Center; \r
+\r
+ double x6 = x5;\r
+ double y6 = TopLeftY + Height - Center; \r
+ \r
+ int x7 = TopLeftX;\r
+ int y7 = (int) y5; \r
+ \r
+ int x8 = x7;\r
+ int y8 = (int) y6; \r
+\r
+ DrawArc( Image, x5, y5 , Center , -3.14159265358979 , 0 , Color ); \r
+ DrawArc( Image, x6, y6 , Center , 0 , 3.14159265358979, Color ); \r
+ \r
+ DrawLine( Image , x7, y7, x8, y8, Color );\r
+ \r
+ return TopLeftX + Width; // ebmpRound(TopLeftX+0.6*Height);\r
+ } \r
+ \r
+ if( Letter == 'D' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY;\r
+ \r
+ int x2 = TopLeftX + Center; // ebmpRound( TopLeftX + 0.3*Height );\r
+ int y2 = y1;\r
+ \r
+ int x3 = TopLeftX;\r
+ int y3 = TopLeftY+Height;\r
+ \r
+ int x4 = x2;\r
+ int y4 = y3;\r
+ \r
+ double x5 = x2;\r
+ double y5 = TopLeftY + Center; // TopLeftY + 0.3*Height;\r
+\r
+ double x6 = x2;\r
+ double y6 = TopLeftY + Height - Center; // TopLeftY + 0.7*Height;\r
+ \r
+ int x7 = TopLeftX + Width; // ebmpRound(TopLeftX + 0.6*Height);\r
+ int y7 = (int) y5; // ebmpRound( y5 );\r
+ \r
+ int x8 = x7;\r
+ int y8 = (int) y6; // ebmpRound( y6 );\r
+ \r
+ DrawLine( Image , x1, y1, x2, y2, Color );\r
+ DrawLine( Image , x1, y1, x3, y3, Color );\r
+ DrawLine( Image , x3, y3, x4, y4, Color );\r
+\r
+ DrawArc( Image, x5, y5 , Center , -1.57079632679490 , 0 , Color ); \r
+ DrawArc( Image, x6, y6 , Center , 0 , 1.57079632679490 , Color ); \r
+\r
+ DrawLine( Image , x7, y7, x8, y8, Color );\r
+ \r
+ return x7;\r
+ }\r
+ \r
+ if( Letter == 'E' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY;\r
+ \r
+ int x2 = x1;\r
+ int y2 = TopLeftY + Height;\r
+ \r
+ int x3 = TopLeftX + Width;\r
+ int y3 = TopLeftY;\r
+ \r
+ int x4 = TopLeftX;\r
+ int y4 = ebmpRound( TopLeftY + 0.5*Height);\r
+ \r
+ int x5 = ebmpRound( TopLeftX + 0.45*Height);\r
+ int y5 = y4;\r
+ \r
+ int x6 = TopLeftX + Width;\r
+ int y6 = y2;\r
+\r
+ DrawLine( Image , x1, y1, x2, y2, Color );\r
+ DrawLine( Image , x1, y1, x3, y3, Color );\r
+ DrawLine( Image , x4, y4, x5, y5, Color );\r
+ DrawLine( Image , x2, y2, x6, y6, Color );\r
+ \r
+ return x6;\r
+ }\r
+ \r
+ if( Letter == 'F' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY;\r
+ \r
+ int x2 = x1;\r
+ int y2 = TopLeftY + Height;\r
+ \r
+ int x3 = TopLeftX + Width;\r
+ int y3 = TopLeftY;\r
+ \r
+ int x4 = TopLeftX;\r
+ int y4 = ebmpRound( TopLeftY + 0.5*Height);\r
+ \r
+ int x5 = ebmpRound( TopLeftX + 0.45*Height); // x3;\r
+ int y5 = y4;\r
+\r
+ DrawLine( Image , x1, y1, x2, y2, Color );\r
+ DrawLine( Image , x1, y1, x3, y3, Color );\r
+ DrawLine( Image , x4, y4, x5, y5, Color );\r
+ \r
+ return x3;\r
+ } \r
+ \r
+ if( Letter == 'G' )\r
+ {\r
+ double x5 = TopLeftX + Center; \r
+ double y5 = TopLeftY + Center; \r
+\r
+ double x6 = x5;\r
+ double y6 = TopLeftY + Height - Center; \r
+ \r
+ int x7 = TopLeftX;\r
+ int y7 = (int) y5; \r
+ \r
+ int x8 = x7;\r
+ int y8 = (int) y6; \r
+ \r
+ int x9 = TopLeftX + Center; // ebmpRound( TopLeftX + 0.45*Height );\r
+ int y9 = ebmpRound( TopLeftY + 0.6*Height );\r
+ \r
+ int x10 = TopLeftX + Width; // ebmpRound( TopLeftX + 0.65*Height );\r
+ int y10 = y9;\r
+ \r
+ int x11 = x10;\r
+ int y11 = TopLeftY + Height;\r
+\r
+ DrawArc( Image, x5, y5 , Center , -3.14159265358979 , 0 , Color ); \r
+ DrawArc( Image, x6, y6 , Center , 0 , 3.14159265358979, Color ); \r
+ \r
+ DrawLine( Image , x7, y7, x8, y8, Color );\r
+ \r
+ DrawLine( Image , x9, y9, x10 ,y10 ,Color );\r
+ DrawLine( Image , x10, y10, x11 ,y11 ,Color );\r
+ \r
+ return x10; // ebmpRound(TopLeftX+0.6*Height);\r
+ } \r
+ \r
+ if( Letter == 'H' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY;\r
+ \r
+ int x2 = x1;\r
+ int y2 = TopLeftY + Height;\r
+ \r
+ int x3 = TopLeftX + Width;\r
+ int y3 = y1;\r
+ \r
+ int x4 = x3;\r
+ int y4 = y2;\r
+ \r
+ int x5 = x1;\r
+ int y5 = ebmpRound( TopLeftY + 0.5*Height );\r
+ \r
+ int x6 = x3;\r
+ int y6 = y5;\r
+ \r
+ DrawLine( Image , x1, y1, x2, y2, Color );\r
+ DrawLine( Image , x3, y3, x4, y4, Color );\r
+ DrawLine( Image , x5, y5, x6, y6, Color );\r
+\r
+ return x3;\r
+ }\r
+ \r
+ if( Letter == 'I' )\r
+ {\r
+ int x1 = ebmpRound( TopLeftX + Height*0.05);\r
+ int y1 = TopLeftY;\r
+ \r
+ int x2 = ebmpRound(x1 + 0.4*Height);\r
+ int y2 = y1;\r
+ \r
+ int x3 = ebmpRound( x1 + 0.2*Height);\r
+ int y3 = y1;\r
+ \r
+ int x4 = x1;\r
+ int y4 = TopLeftY+Height;\r
+ \r
+ int x5 = x2;\r
+ int y5 = y4;\r
+ \r
+ int x6 = x3;\r
+ int y6 = y4;\r
+ \r
+ DrawLine( Image , x1, y1, x2, y2, Color );\r
+ DrawLine( Image , x3, y3, x6, y6, Color );\r
+ DrawLine( Image , x4, y4, x5, y5, Color );\r
+ \r
+ return x2;\r
+ }\r
+ \r
+ if( Letter == 'J' )\r
+ {\r
+ int x1 = TopLeftX + Width;\r
+ int y1 = TopLeftY;\r
+ \r
+ int x2 = x1;\r
+ int y2 = TopLeftY + Height - Center;\r
+ \r
+ double x3 = TopLeftX + Center;\r
+ double y3 = y2;\r
+ \r
+ DrawLine( Image , x1, y1, x2, y2, Color );\r
+ DrawArc( Image, x3, y3, Center , 0 , 1.1*pi , Color );\r
+ return x1;\r
+ }\r
+ \r
+ if( Letter == 'K' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY;\r
+ \r
+ int x2 = x1;\r
+ int y2 = TopLeftY + Height;\r
+ \r
+ int x3 = x1;\r
+ int y3 = TopLeftY + Height - Center; // ebmpRound( TopLeftY + 0.6*Height );\r
+ \r
+ int x4 = TopLeftX + Width;\r
+ int y4 = y1;\r
+ \r
+ int x5 = TopLeftX + Center;\r
+ int y5 = ebmpRound( TopLeftY + 0.5*Height );\r
+ \r
+ int x6 = x4;\r
+ int y6 = y2;\r
+ \r
+ DrawLine( Image, x1, y1, x2, y2, Color );\r
+ DrawLine( Image, x3, y3, x4, y4, Color );\r
+ DrawLine( Image, x5, y5, x6, y6, Color );\r
+ \r
+ return x4;\r
+ }\r
+ \r
+ if( Letter == 'L' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY;\r
+ \r
+ int x2 = x1;\r
+ int y2 = TopLeftY + Height;\r
+ \r
+ int x3 = TopLeftX + Width;\r
+ int y3 = y2;\r
+ \r
+ DrawLine( Image , x1, y1, x2, y2, Color );\r
+ DrawLine( Image , x2, y2, x3, y3, Color );\r
+\r
+ return x3;\r
+ }\r
+ \r
+ if( Letter == 'M' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY;\r
+ \r
+ int x2 = x1;\r
+ int y2 = TopLeftY + Height;\r
+ \r
+ int x3 = TopLeftX + Width;\r
+ int y3 = y1;\r
+ \r
+ int x4 = x3;\r
+ int y4 = y2;\r
+ \r
+ int x5 = TopLeftX + Center;\r
+ int y5 = y4;\r
+\r
+ DrawLine( Image , x1, y1, x2, y2, Color );\r
+ DrawLine( Image , x3, y3, x4, y4, Color );\r
+ DrawLine( Image , x1, y1, x5, y5, Color );\r
+ DrawLine( Image , x3, y3, x5, y5, Color );\r
+ \r
+ return x3;\r
+ } \r
+ \r
+ if( Letter == 'N' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY;\r
+ \r
+ int x2 = x1;\r
+ int y2 = TopLeftY + Height;\r
+ \r
+ int x3 = TopLeftX + Width;\r
+ int y3 = y1;\r
+ \r
+ int x4 = x3;\r
+ int y4 = y2;\r
+\r
+ DrawLine( Image , x1, y1, x2, y2, Color );\r
+ DrawLine( Image , x3, y3, x4, y4, Color );\r
+ DrawLine( Image , x1, y1, x4, y4, Color );\r
+ \r
+ return x3;\r
+ }\r
+\r
+ if( Letter == 'P' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY+Height;\r
+ \r
+ int x2 = TopLeftX;\r
+ int y2 = TopLeftY;\r
+ \r
+ int x3 = TopLeftX + Center; \r
+ int y3 = TopLeftY;\r
+ \r
+ int x4 = x1;\r
+ int y4 = ebmpRound( TopLeftY + 0.5*Height );\r
+\r
+ int x5 = x3;\r
+ int y5 = y4;\r
+ \r
+ int x6 = x3;\r
+ int y6 = y1;\r
+\r
+ // centers of the circles\r
+ \r
+ double x7 = x3;\r
+ double y7 = ( 0.5*(y3+y5) );\r
+\r
+ DrawLine( Image , x1, y1, x2, y2, Color );\r
+ DrawLine( Image , x2, y2, x3, y3, Color );\r
+ \r
+ DrawLine( Image , x2, y2, x3, y3, Color ); \r
+ DrawLine( Image , x4, y4, x5, y5, Color ); \r
+ \r
+ DrawArc( Image, x7, y7 , 0.25*Height , -1.57079632679490 , 1.57079632679490 , Color ); \r
+ \r
+ return ebmpRound( TopLeftX + Center + 0.25*Height); \r
+ }\r
+ \r
+ if( Letter == 'Q' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY + Height - Center;\r
+ \r
+ int x2 = x1;\r
+ int y2 = TopLeftY + Center; \r
+ \r
+ int x3 = TopLeftX + Width;\r
+ int y3 = y2;\r
+ \r
+ int x4 = x3;\r
+ int y4 = y1;\r
+\r
+ // centers of the circles\r
+ \r
+ double x5 = TopLeftX + Center; \r
+ double y5 = TopLeftY + Center; \r
+\r
+ double x6 = x5;\r
+ double y6 = TopLeftY + Height - Center; \r
+ \r
+ // more points\r
+ \r
+ int x7 = TopLeftX + Width;\r
+ int y7 = TopLeftY + Height;\r
+ \r
+ int x8 = x7 - Center;\r
+ int y8 = y7 - Center;\r
+ \r
+ DrawLine( Image , x1, y1, x2, y2, Color );\r
+ DrawLine( Image , x3, y3, x4, y4, Color );\r
+ \r
+ DrawArc( Image, x5, y5 , Center , 3.14159265358979 , 6.28318530717959 , Color ); \r
+ DrawArc( Image, x6, y6 , Center , 0 , 3.14159265358979 , Color ); \r
+ \r
+ DrawLine( Image , x7, y7 , x8, y8 , Color );\r
+ \r
+ return x3; \r
+ } \r
+ \r
+ if( Letter == 'R' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY+Height;\r
+ \r
+ int x2 = TopLeftX;\r
+ int y2 = TopLeftY;\r
+ \r
+ int x3 = TopLeftX + Center; \r
+ int y3 = TopLeftY;\r
+ \r
+ int x4 = x1;\r
+ int y4 = ebmpRound( TopLeftY + 0.5*Height );\r
+\r
+ int x5 = x3;\r
+ int y5 = y4;\r
+ \r
+ int x6 = x3;\r
+ int y6 = y1;\r
+ \r
+ // centers of the circles\r
+ \r
+ double x7 = x3;\r
+ double y7 = ( 0.5*(y3+y5) );\r
+ \r
+ // more\r
+ \r
+ int x8 = TopLeftX + Width;\r
+ int y8 = y1;\r
+ \r
+ int x9 = ebmpRound( TopLeftX + 0.25*Height);\r
+ int y9 = y4; \r
+\r
+ DrawLine( Image , x1, y1, x2, y2, Color );\r
+ DrawLine( Image , x2, y2, x3, y3, Color );\r
+ \r
+ DrawLine( Image , x2, y2, x3, y3, Color ); \r
+ DrawLine( Image , x4, y4, x5, y5, Color ); \r
+ \r
+ DrawArc( Image, x7, y7 , 0.25*Height , -1.57079632679490 , 1.57079632679490 , Color ); \r
+ \r
+ DrawLine( Image , x8, y8, x9, y9 , Color);\r
+ \r
+ return TopLeftX + Width; \r
+ } \r
+ \r
+ if( Letter == 'T' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY;\r
+ \r
+ int x2 = TopLeftX + Width;\r
+ int y2 = y1; \r
+ \r
+ int x3 = TopLeftX + Center;\r
+ int y3 = y1;\r
+ \r
+ int x4 = x3;\r
+ int y4 = TopLeftY + Height;\r
+ \r
+ DrawLine( Image , x1, y1, x2, y2, Color );\r
+ DrawLine( Image , x3, y3, x4, y4, Color );\r
+ \r
+ return x2;\r
+ }\r
+ \r
+ if( Letter == 'S' )\r
+ {\r
+ double x1 = TopLeftX + 0.25*Height;\r
+ double y1 = TopLeftY + 0.25*Height;\r
+ \r
+ double x2 = x1;\r
+ double y2 = TopLeftY + 0.75*Height;\r
+ \r
+ DrawArc( Image, x1, y1 , 0.25*Height, 1.5707963267948 , 6.28318530717 , Color );\r
+ DrawArc( Image, x2, y2 , 0.25*Height, -1.5707963267948 ,3.1415926535897 , Color );\r
+ \r
+ return ebmpRound( TopLeftX + 0.5*Height );\r
+ }\r
+ \r
+ if( Letter == 'U' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY + Height - Center;\r
+ \r
+ int x2 = x1;\r
+ int y2 = TopLeftY; \r
+ \r
+ int x3 = TopLeftX + Width;\r
+ int y3 = y2;\r
+ \r
+ int x4 = x3;\r
+ int y4 = y1;\r
+\r
+ // centers of the circle\r
+ \r
+ double x5 = TopLeftX + Center;\r
+ double y5 = TopLeftY + Height - Center; \r
+ \r
+ DrawLine( Image , x1, y1, x2, y2, Color );\r
+ DrawLine( Image , x3, y3, x4, y4, Color );\r
+ \r
+ DrawArc( Image, x5, y5 , Center , 0 , 3.14159265358979 , Color ); \r
+\r
+ return x3; \r
+ }\r
+\r
+ if( Letter == 'V' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY;\r
+ \r
+ int x2 = TopLeftX + Width;\r
+ int y2 = y1;\r
+ \r
+ int x3 = TopLeftX + Center;\r
+ int y3 = TopLeftY + Height;\r
+ \r
+ DrawLine( Image , x1, y1, x3, y3, Color );\r
+ DrawLine( Image , x2, y2, x3, y3, Color );\r
+\r
+ return x2;\r
+ } \r
+ \r
+ if( Letter == 'W' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY;\r
+ \r
+ int x2 = ebmpRound(TopLeftX + 0.4*Height);\r
+ int y2 = y1;\r
+ \r
+ int x3 = ebmpRound( TopLeftX + 0.8*Height);\r
+ int y3 = y1;\r
+ \r
+ int x4 = ebmpRound( TopLeftX + 0.2*Height );\r
+ int y4 = TopLeftY + Height;\r
+ \r
+ int x5 = ebmpRound( TopLeftX + 0.6*Height );\r
+ int y5 = y4;\r
+ \r
+ DrawLine( Image , x1, y1, x4, y4, Color );\r
+ DrawLine( Image , x4, y4, x2, y2, Color );\r
+ DrawLine( Image , x2, y2, x5, y5, Color );\r
+ DrawLine( Image , x5, y5, x3, y3, Color );\r
+\r
+ return x3;\r
+ } \r
+ \r
+ if( Letter == 'X' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY;\r
+ \r
+ int x2 = TopLeftX + Width;\r
+ int y2 = y1;\r
+ \r
+ int x3 = x1;\r
+ int y3 = TopLeftY + Height;\r
+ \r
+ int x4 = x2;\r
+ int y4 = y3;\r
+ \r
+ DrawLine( Image , x1 , y1, x4, y4 , Color );\r
+ DrawLine( Image , x2 , y2, x3, y3 , Color );\r
+ \r
+ return x2;\r
+ }\r
+ \r
+ if( Letter == 'Y' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY;\r
+ \r
+ int x2 = TopLeftX + Width;\r
+ int y2 = y1;\r
+ \r
+ int x3 = TopLeftX + Center;\r
+ int y3 = ebmpRound( TopLeftY + 0.5*Height);\r
+ \r
+ int x4 = x3;\r
+ int y4 = TopLeftY + Height;\r
+ \r
+ DrawLine( Image , x1, y1, x3, y3, Color );\r
+ DrawLine( Image , x2, y2, x3, y3, Color );\r
+ DrawLine( Image , x3, y3, x4, y4, Color );\r
+\r
+ return x2;\r
+ }\r
+ \r
+ if( Letter == 'Z' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY;\r
+ \r
+ int x2 = TopLeftX + Width;\r
+ int y2 = y1;\r
+ \r
+ int x3 = x1;\r
+ int y3 = TopLeftY + Height;\r
+ \r
+ int x4 = x2;\r
+ int y4 = y3;\r
+\r
+ \r
+ DrawLine( Image , x1 , y1, x2, y2 , Color );\r
+ DrawLine( Image , x2 , y2, x3, y3 , Color );\r
+ DrawLine( Image , x3 , y3, x4, y4 , Color );\r
+ \r
+ return x2;\r
+ } \r
+ \r
+ // space \r
+ \r
+ if( Letter == ' ' || Letter == '\t' )\r
+ {\r
+ return ebmpRound( TopLeftX + 0.5*Height );\r
+ }\r
+\r
+ // numbers\r
+\r
+ if( Letter == '0' || Letter == 'O' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY + Height - Center;\r
+ \r
+ int x2 = x1;\r
+ int y2 = TopLeftY + Center; \r
+ \r
+ int x3 = TopLeftX + Width;\r
+ int y3 = y2;\r
+ \r
+ int x4 = x3;\r
+ int y4 = y1;\r
+\r
+ // centers of the circles\r
+ \r
+ double x5 = TopLeftX + Center; \r
+ double y5 = TopLeftY + Center; \r
+\r
+ double x6 = x5;\r
+ double y6 = TopLeftY + Height - Center; \r
+ \r
+ DrawLine( Image , x1, y1, x2, y2, Color );\r
+ DrawLine( Image , x3, y3, x4, y4, Color );\r
+ \r
+ DrawArc( Image, x5, y5 , Center , 3.14159265358979 , 6.28318530717959 , Color ); \r
+ DrawArc( Image, x6, y6 , Center , 0 , 3.14159265358979 , Color ); \r
+ \r
+ return x3; \r
+ }\r
+ \r
+ if( Letter == '1' )\r
+ {\r
+ int x1 = ebmpRound( TopLeftX + Height*0.05);\r
+ int y1 = TopLeftY+Height;\r
+ \r
+ int x2 = ebmpRound(x1 + 0.4*Height);\r
+ int y2 = y1;\r
+ \r
+ int x3 = ebmpRound( x1 + 0.2*Height);\r
+ int y3 = y1;\r
+ \r
+ int x4 = x3;\r
+ int y4 = TopLeftY;\r
+ \r
+ int x5 = ebmpRound(x1 + 0.05*Height);\r
+ int y5 = ebmpRound(TopLeftY+ 0.2*Height);\r
+ \r
+ DrawLine( Image , x1, y1, x2, y2, Color );\r
+ DrawLine( Image , x3, y3, x4, y4, Color );\r
+ DrawLine( Image , x4, y4, x5, y5, Color );\r
+ \r
+ return ebmpRound(x2 + Height*0.05);\r
+ } \r
+ \r
+ if( Letter == '2' )\r
+ {\r
+ int x1 = TopLeftX + Width; // ebmpRound( TopLeftX + 0.6*Height );\r
+ int y1 = TopLeftY+Height;\r
+ \r
+ int x2 = TopLeftX;\r
+ int y2 = y1;\r
+ \r
+ int x3 = x1;\r
+ int y3 = TopLeftY + Center; // ebmpRound( TopLeftY + 0.3*Height )+1;\r
+ \r
+ double x4 = TopLeftX + Center; // TopLeftX + (0.3*Height);\r
+ double y4 = TopLeftY + Center; // TopLeftY + (0.3*Height);\r
+ \r
+ DrawLine( Image , x1, y1, x2, y2, Color );\r
+ DrawLine( Image , x2, y2, x3, y3, Color );\r
+ \r
+ DrawArc( Image , x4 , y4 , Center , 2.74 , 6.3 , Color );\r
+ \r
+ return x1;\r
+ } \r
+ \r
+ if( Letter == '3' )\r
+ {\r
+ double x1 = TopLeftX + (0.25*Height);\r
+ double y1 = TopLeftY + (0.25*Height);\r
+ \r
+ double x2 = x1;\r
+ double y2 = TopLeftY + (0.75*Height);\r
+ \r
+ int x3 = ebmpRound( TopLeftX + 0.3*Height);\r
+ int y3 = ebmpRound( TopLeftY + 0.5*Height);\r
+ \r
+ int x4 = ebmpRound( TopLeftX + 0.2*Height);\r
+ int y4 = y3;\r
+ \r
+ DrawArc( Image , x1 , y1 , 0.25*Height , -3.14159265358979 , 1.57079632679490 , Color );\r
+ DrawArc( Image , x2 , y2 , 0.25*Height , -1.57079632679490 , 3.14159265358979 , Color );\r
+ DrawLine( Image , x3, y3, x4, y4, Color );\r
+\r
+ return ebmpRound(TopLeftX + 0.5*Height); \r
+ } \r
+ \r
+ if( Letter == '4' )\r
+ {\r
+ // define some control points\r
+ \r
+ int x1 = TopLeftX+Width;\r
+ int y1 = TopLeftY+ebmpRound(Height*2.0/3.0);\r
+ \r
+ int x2 = TopLeftX;\r
+ int y2 = y1;\r
+ \r
+ int x3 = ebmpRound( TopLeftX + 0.5*Height );\r
+ int y3 = TopLeftY;\r
+ \r
+ int x4 = x3;\r
+ int y4 = TopLeftY + Height;\r
+ \r
+ \r
+ DrawLine( Image , x1, y1, x2, y2, Color );\r
+ DrawLine( Image , x2, y2, x3, y3, Color );\r
+ DrawLine( Image , x3, y3, x4, y4, Color );\r
+ \r
+ return x1;\r
+ }\r
+ \r
+ if( Letter == '5' )\r
+ {\r
+ int x1 = TopLeftX + Width;\r
+ int y1 = TopLeftY;\r
+ \r
+ int x2;\r
+ int y2 = TopLeftY;\r
+ \r
+ int x3 = TopLeftX + ebmpRound( 0.2*Height )-1;\r
+ int y3 = TopLeftY + ebmpRound( 0.48786796564404*Height );\r
+ \r
+ x2 = x3+1;\r
+ \r
+ double x4 = TopLeftX + Center;\r
+ double y4 = TopLeftY + Height - Center;\r
+\r
+ DrawArc( Image , x4, y4, Center, -2.35619449019234 , 3 , Color );\r
+ \r
+ DrawLine( Image , x1, y1, x2, y2, Color );\r
+ DrawLine( Image , x2, y2, x3, y3, Color );\r
+ \r
+ return x1;\r
+ }\r
+\r
+ if( Letter == '6' )\r
+ {\r
+ double x1 = TopLeftX + (0.25*Height);\r
+ double y1 = TopLeftY + (0.25*Height);\r
+ \r
+ double x2 = x1;\r
+ double y2 = TopLeftY + (0.75*Height);\r
+ \r
+ int x3 = TopLeftX;\r
+ int y3 = ebmpRound( y1 );\r
+ \r
+ int x4 = x3;\r
+ int y4 = ebmpRound( y2 );\r
+\r
+ DrawArc( Image , x1 , y1 , 0.25*Height , 3.1 , 6.2 , Color );\r
+ DrawArc( Image , x2 , y2 , 0.25*Height , 0 , 6.29 , Color );\r
+ \r
+ DrawLine( Image , x3, y3, x4, y4, Color );\r
+\r
+ return TopLeftX + (int) ebmpRound(.5*Height); \r
+ } \r
+ \r
+ if( Letter == '7' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY;\r
+ \r
+ int x2 = TopLeftX + Width;\r
+ int y2 = y1;\r
+ \r
+ int x3 = ebmpRound(TopLeftX + 0.1*Height);\r
+ int y3 = TopLeftY + Height;\r
+ \r
+ DrawLine( Image , x1, y1, x2, y2, Color );\r
+ DrawLine( Image , x2, y2, x3, y3, Color );\r
+ \r
+ return x2; \r
+ }\r
+ \r
+ if( Letter == '8' )\r
+ {\r
+ double x1 = TopLeftX + (0.25*Height);\r
+ double y1 = TopLeftY + (0.25*Height);\r
+ \r
+ double x2 = x1;\r
+ double y2 = TopLeftY + (0.75*Height);\r
+\r
+ DrawArc( Image , x1 , y1 , 0.25*Height , 0 , 6.28318530717959 , Color );\r
+ DrawArc( Image , x2 , y2 , 0.25*Height , 0 , 6.28318530717959 , Color );\r
+\r
+ return TopLeftX + (int) ebmpRound(.5*Height); \r
+ } \r
+\r
+ if( Letter == '9' )\r
+ {\r
+ double x1 = TopLeftX + (0.25*Height);\r
+ double y1 = TopLeftY + (0.25*Height);\r
+ \r
+ double x2 = x1;\r
+ double y2 = TopLeftY + (0.75*Height);\r
+ \r
+ int x3 = ebmpRound( TopLeftX + 0.5*Height );\r
+ int y3 = ebmpRound( y1 );\r
+ \r
+ int x4 = x3;\r
+ int y4 = ebmpRound( y2 );\r
+\r
+ DrawArc( Image , x1 , y1 , 0.25*Height , 0 , 6.28318530717959 , Color );\r
+ DrawArc( Image , x2 , y2 , 0.25*Height , 0 , 3 , Color );\r
+ \r
+ DrawLine( Image , x3, y3, x4, y4, Color );\r
+\r
+ return TopLeftX + (int) ebmpRound(.5*Height); \r
+ } \r
+ \r
+ if( Letter == '.' )\r
+ {\r
+ double x1 = TopLeftX + 1.25;\r
+ double y1 = TopLeftY + Height - 0.5;\r
+ \r
+ DrawArc( Image, x1, y1, 0.75 , 0 , 6.3 , Color );\r
+ \r
+ return ebmpRound( x1 + 1.25 );\r
+ }\r
+ \r
+ if( Letter == '!' )\r
+ {\r
+ double x1 = TopLeftX + 1.25;\r
+ double y1 = TopLeftY + Height - 0.5;\r
+ \r
+ int x2 = ebmpRound( x1 );\r
+ int y2 = TopLeftY;\r
+ \r
+ int x3 = x2;\r
+ int y3 = ebmpRound( y1 - 2 );\r
+ \r
+ int y4 = ebmpRound( 0.05*(13*y3+7*y2) );\r
+ \r
+ DrawArc( Image, x1, y1, 0.75 , 0 , 6.3 , Color );\r
+ \r
+ DrawLine( Image, x2,y2, x3,y3 , Color);\r
+ DrawLine( Image, x2-1, y2, x3-1,y4 , Color);\r
+ \r
+ return ebmpRound( x1 + 1.25 );\r
+ } \r
+ \r
+ if( Letter == ',' )\r
+ {\r
+ double x1 = TopLeftX + 1.25;\r
+ double y1 = TopLeftY + Height - 0.5;\r
+ \r
+ double x3 = x1;\r
+ double y3 = y1 + 1.75;\r
+ \r
+ DrawArc( Image, x1, y1, 0.75 , 0 , 6.3 , Color );\r
+ DrawArc( Image, x3, y3, 1.75 , -0.5*pi , 0.65*pi , Color );\r
+ \r
+ return ebmpRound( x1 + 1.25 );\r
+ }\r
+ \r
+ if( Letter == '\'' )\r
+ {\r
+ double x1 = TopLeftX + 1.25;\r
+ double y1 = TopLeftY + Center - 0.5;\r
+ \r
+ double x3 = x1;\r
+ double y3 = y1 + 1.75;\r
+ \r
+ DrawArc( Image, x1, y1, 0.75 , 0 , 6.3 , Color );\r
+ DrawArc( Image, x3, y3, 1.75 , -0.5*pi , 0.65*pi , Color );\r
+ \r
+ return ebmpRound( x1 + 1.25 );\r
+ } \r
+\r
+ if( Letter == '`' )\r
+ {\r
+ double x1 = TopLeftX + 1.25;\r
+ double y1 = TopLeftY + Center - 0.5;\r
+ \r
+ double x3 = x1;\r
+ double y3 = y1 + 1.75;\r
+ \r
+ DrawArc( Image, x1, y1, 0.75 , 0 , 6.3 , Color );\r
+ DrawArc( Image, x3, y3, 1.75 , 0.35*pi , 1.5*pi , Color );\r
+ \r
+ return ebmpRound( x1 + 1.25 );\r
+ } \r
+ \r
+ \r
+ if( Letter == '"' )\r
+ {\r
+ double x1 = TopLeftX + 1.25;\r
+ double y1 = TopLeftY + Center - 0.5;\r
+ \r
+ double x3 = x1;\r
+ double y3 = y1 + 1.75;\r
+ \r
+ DrawArc( Image, x1, y1, 0.75 , 0 , 6.3 , Color );\r
+ DrawArc( Image, x3, y3, 1.75 , -0.5*pi , 0.65*pi , Color );\r
+ \r
+ DrawArc( Image, x1+3.5, y1, 0.75 , 0 , 6.3 , Color );\r
+ DrawArc( Image, x3+3.5, y3, 1.75 , -0.5*pi , 0.65*pi , Color ); \r
+ \r
+ return ebmpRound( x1 + 1.25 + 3.5);\r
+ } \r
+ \r
+ if( Letter == '[' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY;\r
+ \r
+ int x2 = x1;\r
+ int y2 = y1 + Height;\r
+ \r
+ int x3 = ebmpRound(TopLeftX + 0.15*Height)+1;\r
+ int y3 = y1;\r
+ \r
+ int x4 = x3;\r
+ int y4 = y2;\r
+ \r
+ DrawLine(Image,x1,y1,x2,y2,Color);\r
+ DrawLine(Image,x1,y1,x3,y3,Color);\r
+ DrawLine(Image,x2,y2,x4,y4,Color);\r
+ \r
+ return x3;\r
+ } \r
+ \r
+ if( Letter == ']' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY;\r
+ \r
+ int x2 = x1;\r
+ int y2 = y1 + Height;\r
+ \r
+ int x3 = ebmpRound(TopLeftX + 0.15*Height)+1;\r
+ int y3 = y1;\r
+ \r
+ int x4 = x3;\r
+ int y4 = y2;\r
+ \r
+ DrawLine(Image,x3,y3,x4,y4,Color);\r
+ DrawLine(Image,x1,y1,x3,y3,Color);\r
+ DrawLine(Image,x2,y2,x4,y4,Color);\r
+ \r
+ return x3;\r
+ } \r
+ \r
+ if( Letter == '|' || Letter == 'l' )\r
+ {\r
+ int x1 = TopLeftX+2;\r
+ int y1 = TopLeftY;\r
+ \r
+ int x2 = x1;\r
+ int y2 = y1 + Height;\r
+ \r
+ DrawLine(Image,x1,y1,x2,y2,Color);\r
+ \r
+ return x1+2;\r
+ } \r
+ \r
+ if( Letter == ':' )\r
+ {\r
+ double x1 = TopLeftX + 1.25;\r
+ double y1 = TopLeftY + Height - 0.5;\r
+ \r
+ double x2 = x1;\r
+ double y2 = TopLeftY + 0.5*Height;\r
+ \r
+ DrawArc( Image, x1, y1, 0.75 , 0 , 6.3 , Color );\r
+ DrawArc( Image, x2, y2, 0.75 , 0 , 6.3 , Color );\r
+ \r
+ return ebmpRound( x1 + 1.25 );\r
+ } \r
+\r
+ if( Letter == ';' )\r
+ {\r
+ double x1 = TopLeftX + 1.25;\r
+ double y1 = TopLeftY + Height - 0.5;\r
+ \r
+ double x2 = x1;\r
+ double y2 = TopLeftY + 0.5*Height;\r
+ \r
+ double x3 = x1;\r
+ double y3 = y1 + 1.75;\r
+ \r
+ DrawArc( Image, x1, y1, 0.75 , 0 , 6.3 , Color );\r
+ DrawArc( Image, x2, y2, 0.75 , 0 , 6.3 , Color );\r
+ DrawArc( Image, x3, y3, 1.75 , -0.5*pi , 0.65*pi , Color );\r
+ \r
+ return ebmpRound( x1 + 1.25 );\r
+ } \r
+ \r
+ if( Letter == '-' )\r
+ {\r
+ int TempWidth = ebmpRound(0.5*Height);\r
+ if( TempWidth % 2 != 0 )\r
+ { TempWidth++; }\r
+ int TempRad = (TempWidth-1)/2;\r
+ \r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY + TempWidth;\r
+ \r
+ int x2 = TopLeftX + TempWidth;\r
+ int y2 = y1;\r
+ \r
+ DrawLine( Image, x1, y1, x2, y2 , Color );\r
+ \r
+ return x2;\r
+ } \r
+ \r
+ if( Letter == '=' )\r
+ {\r
+ int TempWidth = ebmpRound(0.5*Height);\r
+ if( TempWidth % 2 != 0 )\r
+ { TempWidth++; }\r
+ int TempRad = (TempWidth-1)/2;\r
+ \r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY + TempWidth-1;\r
+ \r
+ int x2 = TopLeftX + TempWidth+1;\r
+ int y2 = y1;\r
+ \r
+ int x3 = x1;\r
+ int y3 = y1+3;\r
+ \r
+ int x4 = x2;\r
+ int y4 = y3;\r
+ \r
+ \r
+ DrawLine( Image, x1, y1, x2, y2 , Color );\r
+ DrawLine( Image, x3, y3, x4, y4 , Color );\r
+ \r
+ return x2;\r
+ } \r
+ \r
+ if( Letter == '+' )\r
+ {\r
+ int TempWidth = ebmpRound(0.5*Height);\r
+ if( TempWidth % 2 != 0 )\r
+ { TempWidth++; }\r
+ int TempRad = (TempWidth-1)/2;\r
+ \r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY + TempWidth;\r
+ \r
+ int x2 = TopLeftX + TempWidth;\r
+ int y2 = y1;\r
+ \r
+ int x3 = ( x1 + TempRad + 1);\r
+ int y3 = ( y1 + TempRad + 1);\r
+\r
+ int x4 = x3;\r
+ int y4 = ( y1 - TempRad - 1);\r
+ \r
+ DrawLine( Image, x1, y1, x2, y2 , Color );\r
+ DrawLine( Image, x3, y3, x4, y4 , Color );\r
+ \r
+ return x2;\r
+ } \r
+ \r
+ if( Letter == '/' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY+Height;\r
+ \r
+ int x2 = TopLeftX+Width;\r
+ int y2 = TopLeftY;\r
+ \r
+ DrawLine(Image,x1,y1,x2,y2,Color);\r
+ \r
+ return x2;\r
+ }\r
+ if( Letter == '\\' )\r
+ {\r
+ int x1 = TopLeftX+Width;\r
+ int y1 = TopLeftY+Height;\r
+ \r
+ int x2 = TopLeftX;\r
+ int y2 = TopLeftY;\r
+ \r
+ DrawLine(Image,x1,y1,x2,y2,Color);\r
+ \r
+ return x1;\r
+ }\r
+ \r
+ if( Letter == '%' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = TopLeftY+Height;\r
+ \r
+ int x2 = TopLeftX+Width;\r
+ int y2 = TopLeftY;\r
+ \r
+ double x3 = TopLeftX + 0.15*Height;\r
+ double y3 = TopLeftY + 0.15*Height;\r
+ \r
+ double x4 = ceil( TopLeftX + 0.45*Height + 0.5);\r
+ double y4 = ceil( TopLeftY + 0.85*Height );\r
+ \r
+ DrawLine(Image,x1,y1,x2,y2,Color);\r
+\r
+ DrawArc(Image,x3,y3,0.15*Height,0,2*pi,Color);\r
+ DrawArc(Image,x4,y4,0.15*Height,0,2*pi,Color);\r
+ \r
+ return x2;\r
+ } \r
+ \r
+ if( Letter == '_' )\r
+ {\r
+ DrawLine(Image,TopLeftX,TopLeftY+Height,TopLeftX+Width,TopLeftY+Height,Color);\r
+ \r
+ return TopLeftX + Width;\r
+ }\r
+ \r
+ if( Letter == '^' )\r
+ {\r
+ DrawLine(Image,TopLeftX,TopLeftY+Center,TopLeftX+Center,TopLeftY,Color);\r
+ DrawLine(Image,TopLeftX+Center,TopLeftY,TopLeftX+Width,TopLeftY+Center,Color);\r
+ \r
+ return TopLeftX + Width;\r
+ } \r
+ \r
+ if( Letter == '<' )\r
+ {\r
+ int x1 = TopLeftX;\r
+ int y1 = ebmpRound( TopLeftY + 0.5*Height );\r
+ \r
+ int x2 = TopLeftX+Width;\r
+ int y2 = TopLeftY;\r
+ \r
+ int x3 = x2;\r
+ int y3 = TopLeftY+Height;\r
+ \r
+ DrawLine(Image,x1,y1,x2,y2,Color);\r
+ DrawLine(Image,x1,y1,x3,y3,Color);\r
+ \r
+ return x2;\r
+ }\r
+ \r
+ if( Letter == '>' )\r
+ {\r
+ int x1 = TopLeftX+Width;\r
+ int y1 = ebmpRound( TopLeftY + 0.5*Height );\r
+ \r
+ int x2 = TopLeftX;\r
+ int y2 = TopLeftY;\r
+ \r
+ int x3 = x2;\r
+ int y3 = TopLeftY+Height;\r
+ \r
+ DrawLine(Image,x1,y1,x2,y2,Color);\r
+ DrawLine(Image,x1,y1,x3,y3,Color);\r
+ \r
+ return x1;\r
+ } \r
+ \r
+ if( Letter == '#' )\r
+ {\r
+ int TempWidth = ebmpRound(0.5*Height);\r
+ if( TempWidth % 2 != 0 )\r
+ { TempWidth++; }\r
+ int TempRad = (TempWidth-1)/2;\r
+ \r
+ int x1 = TopLeftX;\r
+ int y1 = (int) floor(TopLeftY + 0.5*Height-1);\r
+ \r
+ int x2 = TopLeftX + Width;\r
+ int y2 = y1;\r
+ \r
+ int x3 = x1;\r
+ int y3 = y1+2;\r
+ \r
+ int x4 = x2;\r
+ int y4 = y3;\r
+ \r
+ int x5 = TopLeftX+Center-1;\r
+ int y5 = TopLeftY;\r
+\r
+ int x6 = x5;\r
+ int y6 = TopLeftY+Height;\r
+ \r
+ int x7 = TopLeftX+Center+1;\r
+ int y7 = TopLeftY;\r
+\r
+ int x8 = x7;\r
+ int y8 = TopLeftY+Height;\r
+ \r
+ DrawLine( Image, x1, y1, x2, y2 , Color );\r
+ DrawLine( Image, x3, y3, x4, y4 , Color );\r
+ DrawLine( Image, x5, y5, x6, y6, Color );\r
+ DrawLine( Image, x7,y7,x8,y8,Color);\r
+\r
+ return x2;\r
+ }\r
+ \r
+ if( Letter == '?' )\r
+ {\r
+ double x1 = TopLeftX+Center;\r
+ double y1 = TopLeftY+Center;\r
+ \r
+ int x2 = (int) x1;\r
+ int y2 = TopLeftY + Width;\r
+ \r
+ int x3 = x2;\r
+ int y3 = ebmpRound(TopLeftY+ 0.8*Height);\r
+ if( TopLeftY+Height-y3 <= 2 )\r
+ { y3--; }\r
+ \r
+ double x4 = x1;\r
+ double y4 = TopLeftY + Height - 0.5;\r
+ \r
+ DrawArc(Image,x1,y1,Center,pi,pi/2,Color);\r
+ DrawLine(Image,x2,y2,x3,y3,Color);\r
+ DrawArc( Image, x4, y4, 0.75 , 0 , 6.3 , Color );\r
+ \r
+ return TopLeftX + Width;\r
+ }\r
+ \r
+ if( Letter == '*' )\r
+ {\r
+ int x1 = TopLeftX+Center;\r
+ int y1 = TopLeftY;\r
+ \r
+ int x2 = x1;\r
+ int y2 = TopLeftY+Height;\r
+ \r
+ int x3 = TopLeftX;\r
+ int y3 = ebmpRound(TopLeftY+0.5*Height);\r
+ \r
+ int x4 = TopLeftX+Width;\r
+ int y4 = y3;\r
+ \r
+ int x5 = TopLeftX+1; // ebmpRound(TopLeftX+0.15*Width);\r
+ int y5 = TopLeftY+1; // ebmpRound(TopLeftY+0.15*Height);\r
+ \r
+ int x6 = TopLeftX+Width-1; // ebmpRound(TopLeftX+0.45*Width);\r
+ int y6 = TopLeftY+Height-1; // ebmpRound(TopLeftY+0.85*Height);\r
+ \r
+ int x7 = x6;\r
+ int y7 = y5;\r
+ \r
+ int x8 = x5;\r
+ int y8 = y6;\r
+ \r
+ DrawLine(Image,x1,y1,x2,y2,Color);\r
+ DrawLine(Image,x3,y3,x4,y4,Color);\r
+ DrawLine(Image,x5,y5,x6,y6,Color);\r
+ DrawLine(Image,x7,y7,x8,y8,Color);\r
+ \r
+ return x4;\r
+ }\r
+ \r
+ if( Letter == '@' )\r
+ {\r
+ double x1 = TopLeftX + 1.5*Center;\r
+ double y1 = TopLeftY + Height - 1.5*Center;\r
+ \r
+ double x2 = x1 + .35*Center + .6*Center;\r
+ double y2 = y1 + .35*Center;\r
+ \r
+ DrawArc(Image,x1,y1,Center*1.5,0,2*pi,Color);\r
+ DrawArc(Image,x1,y1,Center*0.5,0,2*pi,Color);\r
+ \r
+ DrawArc(Image,x2,y2,Center*0.45,0,pi,Color);\r
+ \r
+ return ebmpRound(TopLeftX + 3*Center);\r
+ }\r
+ \r
+ if( Letter == '~' )\r
+ {\r
+ double x1 = TopLeftX + 0.2*Height;\r
+ double y1 = TopLeftY + 0.4*Height;\r
+ \r
+ double x2 = TopLeftX + 0.6*Height;\r
+ double y2 = y1;\r
+ \r
+ DrawArc(Image,x1,y1,0.2*Height, 0.7*pi,2*pi, Color);\r
+ DrawArc(Image,x2,y2,0.2*Height, -0.3*pi,pi, Color);\r
+ \r
+ return ebmpRound(TopLeftX + 0.8*Height);\r
+ }\r
+ \r
+ if( Letter == '(' ) \r
+ {\r
+ double x5 = TopLeftX + Center; \r
+ double y5 = TopLeftY + 0.5*Height; \r
+\r
+ DrawArc( Image, x5, y5 , 0.7*Height , 0.5*pi , -0.5*pi , Color ); \r
+ \r
+ return TopLeftX;\r
+ }\r
+ \r
+ if( Letter == ')' ) \r
+ {\r
+ double x5 = TopLeftX - Center; \r
+ double y5 = TopLeftY + 0.5*Height; \r
+\r
+ DrawArc( Image, x5, y5 , 0.7*Height , -0.5*pi , 0.5*pi , Color ); \r
+ \r
+ return TopLeftX;\r
+ } \r
+ \r
+ if( Letter == '&' )\r
+ {\r
+ double x1 = TopLeftX + Center;\r
+ double y1 = TopLeftY + Height-Center;\r
+ \r
+ double x2 = x1;\r
+ double y2 = TopLeftY + 0.2*Height;\r
+ \r
+ int x3 = ebmpRound(TopLeftX+0.5*Height);\r
+ int y3 = ebmpRound(y2);\r
+ \r
+ int x4 = TopLeftX;\r
+ int y4 = ebmpRound(y1);\r
+ \r
+ int x5 = ebmpRound(TopLeftX+0.25*Height);\r
+ int y5 = TopLeftY+Height-2*Center;\r
+ \r
+ int x6 = ebmpRound(TopLeftX+1.1*Width);\r
+ int y6 = TopLeftY+Height; \r
+ \r
+ \r
+ DrawArc( Image, x1,y1, Center, -.1*pi, 1.5*pi, Color);\r
+ DrawArc( Image, x2,y2, 0.2*Height, 0,2*pi,Color); \r
+ \r
+// DrawLine( Image, x3,y3, x4,y4, Color);\r
+ DrawLine( Image, x5,y5, x6,y6, Color);\r
+ \r
+ return x6;\r
+ }\r
+\r
+ if( Letter == '&' && 1 == 0 ) // alt ampersand &\r
+ {\r
+ double x1 = TopLeftX + Center;\r
+ double y1 = TopLeftY + Height-Center;\r
+ \r
+ double x2 = x1;\r
+ double y2 = TopLeftY + 0.2*Height;\r
+ \r
+ int x3 = ebmpRound(TopLeftX+0.5*Height);\r
+ int y3 = ebmpRound(y2);\r
+ \r
+ int x4 = TopLeftX;\r
+ int y4 = ebmpRound(y1);\r
+ \r
+ int x5 = ebmpRound(TopLeftX+0.1*Height);\r
+ int y5 = y3;\r
+ \r
+ int x6 = ebmpRound(TopLeftX+1.1*Width);\r
+ int y6 = TopLeftY+Height; \r
+ \r
+ \r
+ DrawArc( Image, x1,y1, Center, -.25*pi, pi, Color);\r
+ DrawArc( Image, x2,y2, 0.2*Height, pi,2*pi,Color); \r
+ \r
+ DrawLine( Image, x3,y3, x4,y4, Color);\r
+ DrawLine( Image, x5,y5, x6,y6, Color);\r
+ \r
+ return x6;\r
+ } \r
+ \r
+ if( Letter == '$' )\r
+ {\r
+ double x1 = TopLeftX + 0.25*Height;\r
+ double y1 = TopLeftY + 0.25*Height;\r
+ \r
+ double x2 = x1;\r
+ double y2 = TopLeftY + 0.75*Height;\r
+ \r
+ int x3 = ebmpRound(x1);\r
+ int y3 = ebmpRound(TopLeftY-0.1*Height);\r
+ \r
+ int x4 = x3;\r
+ int y4 = ebmpRound(TopLeftY+1.1*Height);\r
+ \r
+ DrawArc( Image, x1, y1 , 0.25*Height, 1.5707963267948 , 6.28318530717 , Color );\r
+ DrawArc( Image, x2, y2 , 0.25*Height, -1.5707963267948 ,3.1415926535897 , Color );\r
+ DrawLine( Image, x3, y3, x4, y4, Color);\r
+ \r
+ return ebmpRound( TopLeftX + 0.5*Height );\r
+ }\r
+ \r
+ if( Letter == '}' )\r
+ {\r
+ double x1 = TopLeftX;\r
+ double y1 = TopLeftY + 0.15*Height;\r
+ \r
+ double x2 = x1+0.3*Height;\r
+ double y2 = TopLeftY + 0.4*Height;\r
+\r
+ double x3 = x2;\r
+ double y3 = TopLeftY + 0.6*Height;\r
+ \r
+ double x4 = x1;\r
+ double y4 = TopLeftY + 0.85*Height;\r
+ \r
+ DrawArc( Image, x1,y1, 0.2*Height, 1.5*pi, 2*pi, Color);\r
+ \r
+ DrawArc( Image, x2,y2, 0.1*Height, 0.5*pi,pi, Color);\r
+ DrawArc( Image, x3,y3, 0.1*Height, pi,1.5*pi, Color);\r
+ \r
+ DrawArc( Image, x4,y4, 0.2*Height, 0,0.5*pi, Color);\r
+ \r
+ int x5 = ebmpRound( TopLeftX+0.2*Height);\r
+ int y5 = ebmpRound( TopLeftY+0.15*Height);\r
+ \r
+ int x6 = x5;\r
+ int y6 = ebmpRound( TopLeftY+0.4*Height);\r
+ \r
+ DrawLine( Image, x5,y5, x6,y6, Color );\r
+\r
+ int x7 = x5;\r
+ int y7 = ebmpRound( TopLeftY+0.6*Height);\r
+ \r
+ int x8 = x7;\r
+ int y8 = ebmpRound( TopLeftY+0.85*Height);\r
+ \r
+ DrawLine( Image, x7,y7, x8,y8, Color ); \r
+\r
+ return ebmpRound(TopLeftX + 0.4*Height);\r
+ }\r
+ \r
+ if( Letter == '{' )\r
+ {\r
+ double x1 = TopLeftX + 0.3*Height;\r
+ double y1 = TopLeftY + 0.15*Height;\r
+ \r
+ double x2 = TopLeftX ;\r
+ double y2 = TopLeftY + 0.4*Height;\r
+\r
+ double x3 = x2;\r
+ double y3 = TopLeftY + 0.6*Height;\r
+ \r
+ double x4 = x1;\r
+ double y4 = TopLeftY + 0.85*Height;\r
+ \r
+ DrawArc( Image, x1,y1, 0.2*Height, pi,1.5*pi, Color);\r
+ \r
+ DrawArc( Image, x2,y2, 0.1*Height, 0,0.5*pi, Color);\r
+ DrawArc( Image, x3,y3, 0.1*Height, 1.5*pi,2*pi, Color);\r
+ \r
+ DrawArc( Image, x4,y4, 0.2*Height, 0.5*pi,pi, Color);\r
+ \r
+ int x5 = ebmpRound( TopLeftX+0.1*Height);\r
+ int y5 = ebmpRound( TopLeftY+0.15*Height);\r
+ \r
+ int x6 = x5;\r
+ int y6 = ebmpRound( TopLeftY+0.4*Height);\r
+ \r
+ DrawLine( Image, x5,y5, x6,y6, Color );\r
+\r
+ int x7 = x5;\r
+ int y7 = ebmpRound( TopLeftY+0.6*Height);\r
+ \r
+ int x8 = x7;\r
+ int y8 = ebmpRound( TopLeftY+0.85*Height);\r
+ \r
+ DrawLine( Image, x7,y7, x8,y8, Color ); \r
+\r
+ return ebmpRound(TopLeftX + 0.4*Height);\r
+ } \r
+ \r
+ if( Letter == '&' && 1 == 0 ) // old ampersand '&'\r
+ {\r
+ double x1 = TopLeftX + (0.25*Height);\r
+ double y1 = TopLeftY + (0.25*Height);\r
+ \r
+ double x2 = x1;\r
+ double y2 = TopLeftY + (0.75*Height);\r
+ \r
+ int x3 = ebmpRound( TopLeftX + 0.3*Height);\r
+ int y3 = ebmpRound( TopLeftY + 0.5*Height);\r
+ \r
+ int x4 = ebmpRound( TopLeftX + 0.2*Height);\r
+ int y4 = y3;\r
+ \r
+ int x5 = ebmpRound(TopLeftX + 0.35*Height);\r
+ int y5 = ebmpRound(TopLeftY + 0.75*Height);\r
+ \r
+ int x6 = ebmpRound(TopLeftX + 0.65*Height);\r
+ int y6 = y5;\r
+ \r
+ \r
+ DrawArc( Image , x1 , y1 , 0.25*Height , 1.57079632679490 , 2*pi , Color );\r
+ DrawArc( Image , x2 , y2 , 0.25*Height , 0, 1.5*pi , Color );\r
+ DrawLine( Image , x3, y3, x4, y4, Color );\r
+ DrawLine( Image , x5, y5, x6, y6, Color );\r
+\r
+ return x6;\r
+ } \r
+ \r
+ \r
+ return TopLeftX;\r
+}\r
+\r
+int PrintCopyright( BMP& Image, int TopLeftX, int TopLeftY , int Height , \r
+ RGBApixel Color )\r
+{\r
+ double pi = 3.14159265358979;\r
+ \r
+ int CharNumber = 0;\r
+ int StartX = ebmpRound(TopLeftX+0.25*Height);\r
+ int Spacing = (int) ebmpRound( 0.2*Height );\r
+ if( Spacing < 3 )\r
+ { Spacing = 3; }\r
+ int StartY = ebmpRound( TopLeftY-0.25*Height);\r
+ \r
+ double x1 = TopLeftX + 0.5*Height;\r
+ double y1 = TopLeftY + 0.5*Height;\r
+ \r
+ DrawArc(Image, x1, y1, 0.6*Height , 0, 2*pi , Color );\r
+ return PrintLetter( Image, 'c' , StartX, StartY , Height, Color ) + Spacing; \r
+}\r