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()); }
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); } }
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); } } }
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(); }