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); }
private void UpdateStyles() { var index = 0; foreach (var container in Containers) { var isSelected = SelectionStart <= index && index < SelectionEnd; FormulaTokenTemplate.SetStyle(container, isSelected); index++; } }
//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); }