Beispiel #1
0
        public string decode(Bitmap bmp, LetterFont compareFont)
        {
            string decodeString = "";

            using (UnsafeBitmap ubm = new UnsafeBitmap(bmp))
            {
                ubm.LockBitmap();

                for (int i = 0; i < ubm.Bitmap.Height - compareFont.charHeight + 1; i++)
                {
                    int lastCol = 0;
                    for (int j = 0; j < ubm.Bitmap.Width; j++)
                    {
                        Letter letter = compareFont.findLetter(ubm, j, i, lastCol > 0);
                        if (letter != null)
                        {
                            int padding = (j - lastCol) / compareFont.spaceWidth;
                            for (int k = 0; k < padding; k++)
                            {
                                decodeString += " ";
                            }
                            decodeString += letter.convertString;
                            j            += letter.ubm.Bitmap.Width - 1;
                            lastCol       = j + 1;
                        }
                    }
                    if (lastCol > 0)
                    {
                        decodeString += "\r\n";
                        i            += compareFont.charHeight - 1;
                    }
                }
            }
            return(decodeString.Trim());
        }
Beispiel #2
0
 public Letter(string filename)
 {
     bmp = new Bitmap(filename);
     ubm = new UnsafeBitmap(bmp);
     ubm.LockBitmap();
     string baseString = Path.GetFileNameWithoutExtension(filename);
     if (baseString.Length == 1)
     {
         convertString = baseString;
     }
     else if (baseString.EndsWith("_cap"))
     {
         convertString = baseString[0].ToString().ToUpper();
     }
     else switch (baseString)
         {
             case "dash":
                 convertString = "-";
                 break;
             case "dot":
                 convertString = ".";
                 break;
             case "bracket_open":
                 convertString = "<";
                 break;
             case "bracket_close":
                 convertString = ">";
                 break;
             case "paren_open":
                 convertString = "(";
                 break;
             case "paren_close":
                 convertString = ")";
                 break;
             case "plus":
                 convertString = "+";
                 break;
             case "slash":
                 convertString = "/";
                 break;
             case "colon":
                 convertString = ":";
                 break;
             case "underscore":
                 convertString = "_";
                 break;
             case "square_bracket_open":
                 convertString = "[";
                 break;
             case "square_bracket_close":
                 convertString = "]";
                 break;
             case "comma":
                 convertString = ",";
                 break;
             case "percent":
                 convertString = "%";
                 break;
             case "pound_sign":
                 convertString = "#";
                 break;
             case "star":
                 convertString = "*";
                 break;
             default:
                 throw new Exception(filename);
         }
 }
Beispiel #3
0
        public Letter(string filename)
        {
            bmp = new Bitmap(filename);
            ubm = new UnsafeBitmap(bmp);
            ubm.LockBitmap();
            string baseString = Path.GetFileNameWithoutExtension(filename);

            if (baseString.Length == 1)
            {
                convertString = baseString;
            }
            else if (baseString.EndsWith("_cap"))
            {
                convertString = baseString[0].ToString().ToUpper();
            }
            else
            {
                switch (baseString)
                {
                case "dash":
                    convertString = "-";
                    break;

                case "dot":
                    convertString = ".";
                    break;

                case "bracket_open":
                    convertString = "<";
                    break;

                case "bracket_close":
                    convertString = ">";
                    break;

                case "paren_open":
                    convertString = "(";
                    break;

                case "paren_close":
                    convertString = ")";
                    break;

                case "plus":
                    convertString = "+";
                    break;

                case "slash":
                    convertString = "/";
                    break;

                case "colon":
                    convertString = ":";
                    break;

                case "underscore":
                    convertString = "_";
                    break;

                case "square_bracket_open":
                    convertString = "[";
                    break;

                case "square_bracket_close":
                    convertString = "]";
                    break;

                case "comma":
                    convertString = ",";
                    break;

                case "percent":
                    convertString = "%";
                    break;

                case "pound_sign":
                    convertString = "#";
                    break;

                case "star":
                    convertString = "*";
                    break;

                default:
                    throw new Exception(filename);
                }
            }
        }
Beispiel #4
0
        public string decode(Bitmap bmp, LetterFont compareFont)
        {
            string decodeString = "";
            using (UnsafeBitmap ubm = new UnsafeBitmap(bmp))
            {
                ubm.LockBitmap();

                for (int i = 0; i < ubm.Bitmap.Height - compareFont.charHeight + 1; i++)
                {
                    int lastCol = 0;
                    for (int j = 0; j < ubm.Bitmap.Width; j++)
                    {
                        Letter letter = compareFont.findLetter(ubm, j, i, lastCol > 0);
                        if (letter != null)
                        {
                            int padding = (j - lastCol) / compareFont.spaceWidth;
                            for (int k = 0; k < padding; k++)
                            {
                                decodeString += " ";
                            }
                            decodeString += letter.convertString;
                            j += letter.ubm.Bitmap.Width - 1;
                            lastCol = j + 1;
                        }

                    }
                    if (lastCol > 0)
                    {
                        decodeString += "\r\n";
                        i += compareFont.charHeight - 1;
                    }
                }
            }
            return decodeString.Trim();
        }