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
- EntityParameter.cs
- NonBatchDirectoryCompiler.cs
- CodeArrayIndexerExpression.cs
- FormViewCommandEventArgs.cs
- FormsAuthenticationModule.cs
- SerializationAttributes.cs
- XmlSerializationWriter.cs
- XmlDeclaration.cs
- MsmqTransportReceiveParameters.cs
- SqlProviderServices.cs
- ProcessRequestArgs.cs
- AdornerPresentationContext.cs
- BooleanProjectedSlot.cs
- RtfControlWordInfo.cs
- OdbcUtils.cs
- QueryCacheManager.cs
- TypedElement.cs
- CalendarDateRange.cs
- StrokeDescriptor.cs
- ReadOnlyCollectionBase.cs
- Rect3DConverter.cs
- ListBoxItemWrapperAutomationPeer.cs
- EventData.cs
- EventLogEntry.cs
- TreeChangeInfo.cs
- NativeMethods.cs
- FlowDocumentReaderAutomationPeer.cs
- PanelStyle.cs
- PageCatalogPartDesigner.cs
- PocoEntityKeyStrategy.cs
- OpenTypeLayout.cs
- DataGridViewCellValueEventArgs.cs
- DataGridSortingEventArgs.cs
- ReferenceEqualityComparer.cs
- Function.cs
- PropertyTabChangedEvent.cs
- DesigntimeLicenseContextSerializer.cs
- ItemTypeToolStripMenuItem.cs
- TypeDependencyAttribute.cs
- EnvironmentPermission.cs
- StandardBindingElementCollection.cs
- Viewport2DVisual3D.cs
- CustomBindingCollectionElement.cs
- ADMembershipUser.cs
- TextServicesPropertyRanges.cs
- DynamicVirtualDiscoSearcher.cs
- CheckBox.cs
- EmptyStringExpandableObjectConverter.cs
- XNameConverter.cs
- ReachSerializationUtils.cs
- CompilationRelaxations.cs
- FormatControl.cs
- CqlGenerator.cs
- PageContent.cs
- JapaneseLunisolarCalendar.cs
- XDRSchema.cs
- MexTcpBindingElement.cs
- ProgressBar.cs
- SecurityCriticalDataForSet.cs
- ContractType.cs
- SQLInt32Storage.cs
- SequentialWorkflowRootDesigner.cs
- UserPrincipalNameElement.cs
- TextDpi.cs
- DependencyPropertyChangedEventArgs.cs
- Expression.cs
- BrowserTree.cs
- BitmapInitialize.cs
- EntityExpressionVisitor.cs
- SaveFileDialog.cs
- SortQuery.cs
- GetPageCompletedEventArgs.cs
- ToolStripSeparator.cs
- PageResolution.cs
- ActiveXSite.cs
- TextChange.cs
- TextDecoration.cs
- DocumentXPathNavigator.cs
- ToolStripTextBox.cs
- ThicknessAnimationBase.cs
- BeginStoryboard.cs
- TextRangeProviderWrapper.cs
- StylusDevice.cs
- XhtmlBasicTextViewAdapter.cs
- MenuItemBindingCollection.cs
- FontInfo.cs
- ThaiBuddhistCalendar.cs
- SHA512Managed.cs
- EpmSourcePathSegment.cs
- List.cs
- DoubleStorage.cs
- COM2Properties.cs
- MobileUserControlDesigner.cs
- EmissiveMaterial.cs
- ConfigurationValues.cs
- ImageCollectionEditor.cs
- ListViewTableCell.cs
- EDesignUtil.cs
- TypedReference.cs
- AssertUtility.cs