in ExampleGallery/SubscriptSuperscript.xaml.cs [86:169]
void EnsureResources(ICanvasResourceCreatorWithDpi resourceCreator, Size targetSize)
{
if (resourceRealizationSize == targetSize && !needsResourceRecreation)
return;
float canvasWidth = (float)targetSize.Width;
float canvasHeight = (float)targetSize.Height;
sizeDim = Math.Min(canvasWidth, canvasHeight);
textBrush = new CanvasSolidColorBrush(resourceCreator, Colors.Thistle);
if (!defaultFontSizeSet)
{
if (ThumbnailGenerator.IsDrawingThumbnail)
{
CurrentFontSize = 180;
}
else
{
CurrentFontSize = sizeDim / 20;
}
CurrentFontSize = Math.Max((float)fontSizeSlider.Minimum, CurrentFontSize);
CurrentFontSize = Math.Min((float)fontSizeSlider.Maximum, CurrentFontSize);
fontSizeSlider.Value = CurrentFontSize;
defaultFontSizeSet = true;
}
string sampleText = null;
switch (CurrentTextSampleOption)
{
case TextSampleOption.ChemicalFormula:
sampleText =
"H2O is the chemical formula for water.\r\n\r\n" +
"And, the isotope Carbon-12 may be written as 12C.\r\n\r\n" +
"Often, chemical formulas make use of both superscript and subscript text.";
break;
case TextSampleOption.RightTriangle:
sampleText =
"The side lengths of a right-angle triangle can be written as a2 + b2 = c2.\r\n\r\n" +
"If the triangle's shorter sides are lengths 3 and 4, the remaining side must be 5, since 32 + 42 = 52.";
break;
case TextSampleOption.ShortExpression:
sampleText = "ax2by3";
break;
default:
Debug.Assert(false, "Unexpected text sample option");
break;
}
if (textLayout != null)
textLayout.Dispose();
textLayout = CreateTextLayout(sampleText, resourceCreator, canvasWidth, canvasHeight);
switch (CurrentTextSampleOption)
{
case TextSampleOption.ChemicalFormula:
SetSubscript(textLayout, sampleText.IndexOf("H2O") + 1, 1);
SetSuperscript(textLayout, sampleText.IndexOf("12C"), 2);
SetSubscript(textLayout, sampleText.IndexOf("subscript"), "subscript".Length);
SetSuperscript(textLayout, sampleText.IndexOf("superscript"), "superscript".Length);
break;
case TextSampleOption.RightTriangle:
for (int i = 0; i < sampleText.Length; ++i)
{
if (sampleText[i] == '2')
SetSuperscript(textLayout, i, 1);
}
break;
case TextSampleOption.ShortExpression:
SetSubscript(textLayout, 1, 1);
SetSuperscript(textLayout, 2, 1);
SetSubscript(textLayout, 4, 1);
SetSuperscript(textLayout, 5, 1);
break;
default:
Debug.Assert(false, "Unexpected text sample option");
break;
}
subscriptSuperscriptRenderer = new SubscriptSuperscriptRenderer();
needsResourceRecreation = false;
resourceRealizationSize = targetSize;
}