Beispiel #1
0
 private void InitContainer(Grid container)
 {
     container.Tapped       += (sender, e) => Container_OnTap((Grid)sender, e);
     container.DoubleTapped += (sender, e) => Container_OnDoubleTap((Grid)sender, e);
     FormulaTokenTemplate.SetStyle(container, false);
     FormulaTokenTemplate.SetFontSize(container, ActualFontSize);
 }
Beispiel #2
0
        private void UpdateStyles()
        {
            var index = 0;

            foreach (var container in Containers)
            {
                var isSelected = SelectionStart <= index && index < SelectionEnd;
                FormulaTokenTemplate.SetStyle(container, isSelected);
                index++;
            }
        }
Beispiel #3
0
        //private double CalculateFontSize(IList<int> characterWidths)
        //{
        //    var fontSize = NormalFontSize;
        //    if (!IsAutoFontSize) return fontSize;

        //    double oldFontSize;
        //    int maxSinglePartWidth;
        //    var trials = 0;
        //    do
        //    {
        //        trials++;
        //        maxSinglePartWidth = 0;
        //        oldFontSize = fontSize;

        //        var oldMaxLinesUsed = LinesNormalFontSize * (NormalFontSize / fontSize);

        //        var currentCharactersPerLine = CharactersInOneLineNormalFontSize * (NormalFontSize / fontSize);
        //        double linesUsedWithCurrentFontSize = 1;
        //        double currentLineCharacters = 0;
        //        foreach (var width in characterWidths)
        //        {
        //            currentLineCharacters += width;

        //            if (currentLineCharacters > currentCharactersPerLine)
        //            {
        //                currentLineCharacters = width;
        //                linesUsedWithCurrentFontSize++;
        //            }

        //            maxSinglePartWidth = Math.Max(maxSinglePartWidth, width);
        //        }

        //        fontSize = (0.5) * oldFontSize + 0.5 * (oldFontSize * (oldMaxLinesUsed / linesUsedWithCurrentFontSize));

        //    } while (Math.Abs(fontSize - oldFontSize) > 7.0 && trials < 10);

        //    var singleLineFontSize = maxSinglePartWidth == 0 ? MaxFontSize : NormalFontSize * (((double) CharactersInOneLineNormalFontSize) / maxSinglePartWidth);

        //    fontSize = Math.Min(fontSize, singleLineFontSize);

        //    if (fontSize < MinFontSize) fontSize = MinFontSize;
        //    if (fontSize > MaxFontSize) fontSize = MaxFontSize;
        //    return fontSize;
        //}


        private void UpdateFontSize()
        {
            //var oldFontSize = ActualFontSize;
            //var characterWidths = Children.OfType<Grid>().Select(FormulaTokenTemplate.GetCharacterWidth).ToList();
            //var fontSize = CalculateFontSize(characterWidths);
            //if (Math.Abs(fontSize - oldFontSize) <= 0.1) return;
            //ActualFontSize = fontSize;

            foreach (var container in Containers)
            {
                FormulaTokenTemplate.SetFontSize(container, ActualFontSize);
            }
            SetCaretFontSize(ActualFontSize);
        }