Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- OdbcHandle.cs
- _AuthenticationState.cs
- DataObjectEventArgs.cs
- FilterElement.cs
- XDeferredAxisSource.cs
- EntryPointNotFoundException.cs
- TreeView.cs
- ConnectionStringSettingsCollection.cs
- CategoryList.cs
- BinHexEncoder.cs
- InProcStateClientManager.cs
- DataGridViewComboBoxEditingControl.cs
- Border.cs
- ServiceModelSectionGroup.cs
- DataSourceProvider.cs
- Timer.cs
- TextServicesHost.cs
- ControlIdConverter.cs
- BrowserCapabilitiesFactoryBase.cs
- StringToken.cs
- Solver.cs
- SocketInformation.cs
- MatrixAnimationBase.cs
- XPathExpr.cs
- CannotUnloadAppDomainException.cs
- GeneralTransform3DTo2D.cs
- FileCodeGroup.cs
- BookmarkEventArgs.cs
- AutomationProperty.cs
- DataPointer.cs
- ObjectStateManagerMetadata.cs
- SQlBooleanStorage.cs
- PolyBezierSegment.cs
- FlowDecisionDesigner.xaml.cs
- InputLanguage.cs
- SchemaTableOptionalColumn.cs
- RuleAttributes.cs
- DBConcurrencyException.cs
- SharedMemory.cs
- CurrencyWrapper.cs
- ObjectDataSourceView.cs
- RequestUriProcessor.cs
- ImageField.cs
- PenThreadWorker.cs
- CustomAttribute.cs
- StylusPlugin.cs
- TypedColumnHandler.cs
- RequestDescription.cs
- ChangeBlockUndoRecord.cs
- DataGridViewCellCancelEventArgs.cs
- PropertyEmitterBase.cs
- ApplicationSettingsBase.cs
- ServiceReference.cs
- CryptoConfig.cs
- SocketPermission.cs
- QilGeneratorEnv.cs
- ConfigXmlAttribute.cs
- CopyNodeSetAction.cs
- VisualTreeHelper.cs
- Label.cs
- WebResourceAttribute.cs
- CalendarModeChangedEventArgs.cs
- SafeLocalMemHandle.cs
- EntitySqlQueryCacheKey.cs
- MouseEvent.cs
- ShaderEffect.cs
- DataObjectFieldAttribute.cs
- WebPartManager.cs
- OracleLob.cs
- XmlElementList.cs
- OrderPreservingMergeHelper.cs
- ClientSettingsProvider.cs
- ProxyHelper.cs
- SerializationAttributes.cs
- PageContentAsyncResult.cs
- AutoGeneratedFieldProperties.cs
- ArgumentsParser.cs
- StringComparer.cs
- ManipulationDevice.cs
- LockCookie.cs
- CodeDelegateInvokeExpression.cs
- ObjectFullSpanRewriter.cs
- SectionUpdates.cs
- SafeNativeMethods.cs
- CodeStatementCollection.cs
- ECDiffieHellmanPublicKey.cs
- Section.cs
- BindingSource.cs
- ResourceAssociationSetEnd.cs
- HtmlInputSubmit.cs
- WebBrowserPermission.cs
- DataControlCommands.cs
- GridViewSelectEventArgs.cs
- DelimitedListTraceListener.cs
- GridViewColumn.cs
- TemplateNameScope.cs
- HMAC.cs
- UserThread.cs
- ToolStripTextBox.cs
- URLBuilder.cs