Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Core / CSharp / System / Windows / Media / textformatting / TextModifierScope.cs / 1 / TextModifierScope.cs
//------------------------------------------------------------------------
//
// Microsoft Windows Client Platform
// Copyright (C) Microsoft Corporation, 2001
//
// File: TextModifierScope.cs
//
// Contents: Text modification API
//
// Spec: http://avalon/text/DesignDocsAndSpecs/Text%20Formatting%20API.doc
//
// Created: 12-5-2004 Niklas Borson (niklasb)
//
//-----------------------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Media;
namespace System.Windows.Media.TextFormatting
{
///
/// Represents a single "frame" in the stack of text modifiers. The stack
/// is represented not as an array, but as a linked structure in which each
/// frame points to its parent.
///
internal sealed class TextModifierScope
{
private TextModifierScope _parentScope;
private TextModifier _modifier;
private int _cp;
///
/// Constructs a new text modification state object.
///
/// Parent scope, i.e., the previous top of the stack.
/// Text modifier run fetched from the client.
/// Text source character index of the run.
internal TextModifierScope(TextModifierScope parentScope, TextModifier modifier, int cp)
{
_parentScope = parentScope;
_modifier = modifier;
_cp = cp;
}
///
/// Next item in the stack of text modifiers.
///
public TextModifierScope ParentScope
{
get { return _parentScope; }
}
///
/// Text modifier run fetched from the client.
///
public TextModifier TextModifier
{
get { return _modifier; }
}
///
/// Character index of the text modifier run.
///
public int TextSourceCharacterIndex
{
get { return _cp; }
}
///
/// Modifies the specified text run properties by invoking the modifier at
/// the current scope and all containing scopes.
///
/// Properties to modify.
/// Returns the text run properties after modification.
internal TextRunProperties ModifyProperties(TextRunProperties properties)
{
for (TextModifierScope scope = this; scope != null; scope = scope._parentScope)
{
properties = scope._modifier.ModifyProperties(properties);
}
return properties;
}
///
/// Performs a deep copy of the stack of TextModifierScope objects.
///
/// Returns the top of the new stack.
internal TextModifierScope CloneStack()
{
TextModifierScope top = new TextModifierScope(null, _modifier, _cp);
TextModifierScope scope = top;
for (TextModifierScope source = _parentScope; source != null; source = source._parentScope)
{
scope._parentScope = new TextModifierScope(null, source._modifier, source._cp);
scope = scope._parentScope;
}
return top;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------
//
// Microsoft Windows Client Platform
// Copyright (C) Microsoft Corporation, 2001
//
// File: TextModifierScope.cs
//
// Contents: Text modification API
//
// Spec: http://avalon/text/DesignDocsAndSpecs/Text%20Formatting%20API.doc
//
// Created: 12-5-2004 Niklas Borson (niklasb)
//
//-----------------------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Media;
namespace System.Windows.Media.TextFormatting
{
///
/// Represents a single "frame" in the stack of text modifiers. The stack
/// is represented not as an array, but as a linked structure in which each
/// frame points to its parent.
///
internal sealed class TextModifierScope
{
private TextModifierScope _parentScope;
private TextModifier _modifier;
private int _cp;
///
/// Constructs a new text modification state object.
///
/// Parent scope, i.e., the previous top of the stack.
/// Text modifier run fetched from the client.
/// Text source character index of the run.
internal TextModifierScope(TextModifierScope parentScope, TextModifier modifier, int cp)
{
_parentScope = parentScope;
_modifier = modifier;
_cp = cp;
}
///
/// Next item in the stack of text modifiers.
///
public TextModifierScope ParentScope
{
get { return _parentScope; }
}
///
/// Text modifier run fetched from the client.
///
public TextModifier TextModifier
{
get { return _modifier; }
}
///
/// Character index of the text modifier run.
///
public int TextSourceCharacterIndex
{
get { return _cp; }
}
///
/// Modifies the specified text run properties by invoking the modifier at
/// the current scope and all containing scopes.
///
/// Properties to modify.
/// Returns the text run properties after modification.
internal TextRunProperties ModifyProperties(TextRunProperties properties)
{
for (TextModifierScope scope = this; scope != null; scope = scope._parentScope)
{
properties = scope._modifier.ModifyProperties(properties);
}
return properties;
}
///
/// Performs a deep copy of the stack of TextModifierScope objects.
///
/// Returns the top of the new stack.
internal TextModifierScope CloneStack()
{
TextModifierScope top = new TextModifierScope(null, _modifier, _cp);
TextModifierScope scope = top;
for (TextModifierScope source = _parentScope; source != null; source = source._parentScope)
{
scope._parentScope = new TextModifierScope(null, source._modifier, source._cp);
scope = scope._parentScope;
}
return top;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- OdbcConnectionHandle.cs
- RenderDataDrawingContext.cs
- EditingCoordinator.cs
- XamlPathDataSerializer.cs
- UnsafeNativeMethodsCLR.cs
- Parser.cs
- ClientSettingsProvider.cs
- MaskedTextProvider.cs
- NonSerializedAttribute.cs
- DataKeyCollection.cs
- RtfToXamlLexer.cs
- ThicknessAnimationBase.cs
- UseLicense.cs
- IImplicitResourceProvider.cs
- XmlEntity.cs
- Trace.cs
- SqlDeflator.cs
- ExtenderControl.cs
- UndoUnit.cs
- StructuredProperty.cs
- SafeEventHandle.cs
- InkSerializer.cs
- XmlSortKeyAccumulator.cs
- HttpCacheVaryByContentEncodings.cs
- SuppressMergeCheckAttribute.cs
- connectionpool.cs
- ExpiredSecurityTokenException.cs
- SqlDependencyListener.cs
- MenuItemCollection.cs
- NetCodeGroup.cs
- ServerIdentity.cs
- TimeoutStream.cs
- UpdatePanelTriggerCollection.cs
- MD5HashHelper.cs
- ToolStripSeparator.cs
- SignatureGenerator.cs
- TextBox.cs
- MenuBase.cs
- FastEncoderWindow.cs
- ContentPropertyAttribute.cs
- Utils.cs
- AmbiguousMatchException.cs
- OperationCanceledException.cs
- QuaternionAnimation.cs
- AssemblyHelper.cs
- BaseAddressPrefixFilterElementCollection.cs
- EncryptedXml.cs
- ThreadAbortException.cs
- DataTableReaderListener.cs
- Parser.cs
- DBNull.cs
- Translator.cs
- HeaderedContentControl.cs
- DataIdProcessor.cs
- FormCollection.cs
- Processor.cs
- NavigationEventArgs.cs
- ThicknessKeyFrameCollection.cs
- Helpers.cs
- LineProperties.cs
- WorkflowElementDialog.cs
- AutomationPattern.cs
- EntryPointNotFoundException.cs
- SessionStateUtil.cs
- BrowserCapabilitiesCompiler.cs
- MatrixTransform.cs
- CircleEase.cs
- HttpListenerPrefixCollection.cs
- DataContractSerializerFaultFormatter.cs
- Dump.cs
- HttpCookiesSection.cs
- Util.cs
- DeviceContext.cs
- StrongNameMembershipCondition.cs
- GAC.cs
- BatchStream.cs
- OdbcDataReader.cs
- SymbolDocumentGenerator.cs
- GacUtil.cs
- WebPartsSection.cs
- Tuple.cs
- DataRecordInternal.cs
- SerializationInfoEnumerator.cs
- NotifyParentPropertyAttribute.cs
- BindUriHelper.cs
- DataSourceViewSchemaConverter.cs
- ExpressionVisitorHelpers.cs
- CodeDomSerializationProvider.cs
- DetailsViewModeEventArgs.cs
- TextTreeUndo.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- RuntimeConfig.cs
- sqlser.cs
- EventWaitHandle.cs
- DataGridViewButtonCell.cs
- EntityContainerEmitter.cs
- FormViewPageEventArgs.cs
- URL.cs
- SatelliteContractVersionAttribute.cs
- OpenFileDialog.cs