diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2019-04-09 01:47:48 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2019-04-09 01:47:48 +0300 |
| commit | 080f1697e97e13461ec6df4d31c8924d01257a1b (patch) | |
| tree | b1fe0285de7bc9bc52e9e2195e66fe022bf8f5b3 /Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Rendering/VisualLineElementTextRunProperties.cs | |
| parent | 1608e69a417bc5e40a607c3958c4a60f19f66f1a (diff) | |
| download | Tango-080f1697e97e13461ec6df4d31c8924d01257a1b.tar.gz Tango-080f1697e97e13461ec6df4d31c8924d01257a1b.zip | |
MERGE
Diffstat (limited to 'Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Rendering/VisualLineElementTextRunProperties.cs')
| -rw-r--r-- | Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Rendering/VisualLineElementTextRunProperties.cs | 241 |
1 files changed, 241 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Rendering/VisualLineElementTextRunProperties.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Rendering/VisualLineElementTextRunProperties.cs new file mode 100644 index 000000000..a39276c5b --- /dev/null +++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Rendering/VisualLineElementTextRunProperties.cs @@ -0,0 +1,241 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) +// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) + +using System; +using System.Globalization; +using System.Windows; +using System.Windows.Media; +using System.Windows.Media.TextFormatting; +using Tango.Scripting.Editors.Utils; + +namespace Tango.Scripting.Editors.Rendering +{ + /// <summary> + /// <see cref="TextRunProperties"/> implementation that allows changing the properties. + /// A <see cref="VisualLineElementTextRunProperties"/> instance usually is assigned to a single + /// <see cref="VisualLineElement"/>. + /// </summary> + public class VisualLineElementTextRunProperties : TextRunProperties, ICloneable + { + Brush backgroundBrush; + BaselineAlignment baselineAlignment; + CultureInfo cultureInfo; + double fontHintingEmSize; + double fontRenderingEmSize; + Brush foregroundBrush; + Typeface typeface; + TextDecorationCollection textDecorations; + TextEffectCollection textEffects; + TextRunTypographyProperties typographyProperties; + NumberSubstitution numberSubstitution; + + /// <summary> + /// Creates a new VisualLineElementTextRunProperties instance that copies its values + /// from the specified <paramref name="textRunProperties"/>. + /// For the <see cref="TextDecorations"/> and <see cref="TextEffects"/> collections, deep copies + /// are created if those collections are not frozen. + /// </summary> + public VisualLineElementTextRunProperties(TextRunProperties textRunProperties) + { + if (textRunProperties == null) + throw new ArgumentNullException("textRunProperties"); + backgroundBrush = textRunProperties.BackgroundBrush; + baselineAlignment = textRunProperties.BaselineAlignment; + cultureInfo = textRunProperties.CultureInfo; + fontHintingEmSize = textRunProperties.FontHintingEmSize; + fontRenderingEmSize = textRunProperties.FontRenderingEmSize; + foregroundBrush = textRunProperties.ForegroundBrush; + typeface = textRunProperties.Typeface; + textDecorations = textRunProperties.TextDecorations; + if (textDecorations != null && !textDecorations.IsFrozen) { + textDecorations = textDecorations.Clone(); + } + textEffects = textRunProperties.TextEffects; + if (textEffects != null && !textEffects.IsFrozen) { + textEffects = textEffects.Clone(); + } + typographyProperties = textRunProperties.TypographyProperties; + numberSubstitution = textRunProperties.NumberSubstitution; + } + + /// <summary> + /// Creates a copy of this instance. + /// </summary> + public virtual VisualLineElementTextRunProperties Clone() + { + return new VisualLineElementTextRunProperties(this); + } + + object ICloneable.Clone() + { + return Clone(); + } + + /// <inheritdoc/> + public override Brush BackgroundBrush { + get { return backgroundBrush; } + } + + /// <summary> + /// Sets the <see cref="BackgroundBrush"/>. + /// </summary> + public void SetBackgroundBrush(Brush value) + { + ExtensionMethods.CheckIsFrozen(value); + backgroundBrush = value; + } + + /// <inheritdoc/> + public override BaselineAlignment BaselineAlignment { + get { return baselineAlignment; } + } + + /// <summary> + /// Sets the <see cref="BaselineAlignment"/>. + /// </summary> + public void SetBaselineAlignment(BaselineAlignment value) + { + baselineAlignment = value; + } + + /// <inheritdoc/> + public override CultureInfo CultureInfo { + get { return cultureInfo; } + } + + /// <summary> + /// Sets the <see cref="CultureInfo"/>. + /// </summary> + public void SetCultureInfo(CultureInfo value) + { + if (value == null) + throw new ArgumentNullException("value"); + cultureInfo = value; + } + + /// <inheritdoc/> + public override double FontHintingEmSize { + get { return fontHintingEmSize; } + } + + /// <summary> + /// Sets the <see cref="FontHintingEmSize"/>. + /// </summary> + public void SetFontHintingEmSize(double value) + { + fontHintingEmSize = value; + } + + /// <inheritdoc/> + public override double FontRenderingEmSize { + get { return fontRenderingEmSize; } + } + + /// <summary> + /// Sets the <see cref="FontRenderingEmSize"/>. + /// </summary> + public void SetFontRenderingEmSize(double value) + { + fontRenderingEmSize = value; + } + + /// <inheritdoc/> + public override Brush ForegroundBrush { + get { return foregroundBrush; } + } + + /// <summary> + /// Sets the <see cref="ForegroundBrush"/>. + /// </summary> + public void SetForegroundBrush(Brush value) + { + ExtensionMethods.CheckIsFrozen(value); + foregroundBrush = value; + } + + /// <inheritdoc/> + public override Typeface Typeface { + get { return typeface; } + } + + /// <summary> + /// Sets the <see cref="Typeface"/>. + /// </summary> + public void SetTypeface(Typeface value) + { + if (value == null) + throw new ArgumentNullException("value"); + typeface = value; + } + + /// <summary> + /// Gets the text decorations. The value may be null, a frozen <see cref="TextDecorationCollection"/> + /// or an unfrozen <see cref="TextDecorationCollection"/>. + /// If the value is an unfrozen <see cref="TextDecorationCollection"/>, you may assume that the + /// collection instance is only used for this <see cref="TextRunProperties"/> instance and it is safe + /// to add <see cref="TextDecoration"/>s. + /// </summary> + public override TextDecorationCollection TextDecorations { + get { return textDecorations; } + } + + /// <summary> + /// Sets the <see cref="TextDecorations"/>. + /// </summary> + public void SetTextDecorations(TextDecorationCollection value) + { + ExtensionMethods.CheckIsFrozen(value); + textDecorations = value; + } + + /// <summary> + /// Gets the text effects. The value may be null, a frozen <see cref="TextEffectCollection"/> + /// or an unfrozen <see cref="TextEffectCollection"/>. + /// If the value is an unfrozen <see cref="TextEffectCollection"/>, you may assume that the + /// collection instance is only used for this <see cref="TextRunProperties"/> instance and it is safe + /// to add <see cref="TextEffect"/>s. + /// </summary> + public override TextEffectCollection TextEffects { + get { return textEffects; } + } + + /// <summary> + /// Sets the <see cref="TextEffects"/>. + /// </summary> + public void SetTextEffects(TextEffectCollection value) + { + ExtensionMethods.CheckIsFrozen(value); + textEffects = value; + } + + /// <summary> + /// Gets the typography properties for the text run. + /// </summary> + public override TextRunTypographyProperties TypographyProperties { + get { return typographyProperties; } + } + + /// <summary> + /// Sets the <see cref="TypographyProperties"/>. + /// </summary> + public void SetTypographyProperties(TextRunTypographyProperties value) + { + typographyProperties = value; + } + + /// <summary> + /// Gets the number substitution settings for the text run. + /// </summary> + public override NumberSubstitution NumberSubstitution { + get { return numberSubstitution; } + } + + /// <summary> + /// Sets the <see cref="NumberSubstitution"/>. + /// </summary> + public void SetNumberSubstitution(NumberSubstitution value) + { + numberSubstitution = value; + } + } +} |
