public bool IsMatch(string code) { if (code == "*") { return(true); } if (code == SymbolCode) { return(true); } if (SymbolCode.Length == 6) { if (SymbolCode.Substring(0, 3) == code) { return(true); } if (SymbolCode.Substring(3, 3) == code) { return(true); } } // TODO other detections? return(false); }
private void InternalGenerateEulerValue( char[] sourceChars, Font font, int minSize, int maxSize, List <Symbol> symbols) { foreach (char chr in sourceChars) { for (int size = minSize; size < maxSize + 1; size++) { // TODO Что бы красиво выводить побуквенно идут по размерам каждой буквы, иначе тут лучше не вертикально а горизонтально по слою проходить using (var newFont = new Font(font.FontFamily, size, font.Style, GraphicsUnit.Pixel)) { IMonomap monomap = PrintChar(chr, newFont); int height = GetFontHeight(monomap); if (height < minSize) { continue; } var euler = EulerCharacteristicComputer.Compute2D(monomap); var chr1 = chr; Symbol symbol = symbols.First(s => s.Chr == chr1); SymbolCode symbolCode = new SymbolCode(height, euler); lock (_syncObject) { symbol.Codes.Add(symbolCode); } BitmapCreated?.Invoke(this, new BitmapEventArgs(monomap.ToBitmap(), newFont, chr)); } } } }