コード例 #1
0
        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);
        }
コード例 #2
0
        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));
                    }
                }
            }
        }