Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- CodeDomExtensionMethods.cs
- AuthenticationService.cs
- RefreshInfo.cs
- SchemaType.cs
- BitVector32.cs
- DetailsViewInsertEventArgs.cs
- CustomErrorCollection.cs
- SqlDataRecord.cs
- ListBindingHelper.cs
- TableRowGroup.cs
- DictionaryItemsCollection.cs
- HttpListener.cs
- TemplatePropertyEntry.cs
- ProcessModelSection.cs
- CompressEmulationStream.cs
- Tool.cs
- DataGridComponentEditor.cs
- XmlWriterTraceListener.cs
- ComplexObject.cs
- TabletDeviceInfo.cs
- WebHeaderCollection.cs
- FormsAuthenticationUser.cs
- OleDbFactory.cs
- MetadataUtil.cs
- ViewPort3D.cs
- ValidationVisibilityAttribute.cs
- SecurityPermission.cs
- CssClassPropertyAttribute.cs
- HwndSource.cs
- PageAdapter.cs
- PermissionSetTriple.cs
- MouseCaptureWithinProperty.cs
- SqlDuplicator.cs
- selecteditemcollection.cs
- FileDetails.cs
- diagnosticsswitches.cs
- SimpleMailWebEventProvider.cs
- BinaryReader.cs
- TranslateTransform.cs
- GenericIdentity.cs
- StylusPointDescription.cs
- EntityDataSourceChangedEventArgs.cs
- ProcessThread.cs
- GCHandleCookieTable.cs
- ReadOnlyDataSourceView.cs
- PriorityBindingExpression.cs
- BreakRecordTable.cs
- IPGlobalProperties.cs
- LockedBorderGlyph.cs
- SqlParameterCollection.cs
- DesignerForm.cs
- WorkflowInstance.cs
- MethodBody.cs
- SoapIgnoreAttribute.cs
- NativeActivity.cs
- _LazyAsyncResult.cs
- UnicastIPAddressInformationCollection.cs
- CompositeDataBoundControl.cs
- SettingsPropertyIsReadOnlyException.cs
- PlacementWorkspace.cs
- TypeSource.cs
- CommandBinding.cs
- Viewport2DVisual3D.cs
- ISAPIRuntime.cs
- CommandBinding.cs
- NamespaceListProperty.cs
- WarningException.cs
- Int32RectValueSerializer.cs
- DemultiplexingClientMessageFormatter.cs
- MemberHolder.cs
- HttpVersion.cs
- CultureSpecificCharacterBufferRange.cs
- NGCSerializationManager.cs
- AsymmetricSignatureDeformatter.cs
- TextContainer.cs
- WebBaseEventKeyComparer.cs
- PolicyVersionConverter.cs
- Receive.cs
- VirtualPath.cs
- CatalogPart.cs
- UiaCoreTypesApi.cs
- XmlSchemaGroupRef.cs
- ToggleButtonAutomationPeer.cs
- DataGridViewSelectedRowCollection.cs
- DeleteHelper.cs
- DeflateEmulationStream.cs
- CssStyleCollection.cs
- RadioButtonList.cs
- NameScope.cs
- BindingContext.cs
- DataGridHeaderBorder.cs
- DbConnectionPoolGroup.cs
- AtlasWeb.Designer.cs
- ReferenceConverter.cs
- SafePEFileHandle.cs
- XmlDataSourceView.cs
- FixedSOMLineCollection.cs
- NullRuntimeConfig.cs
- VBIdentifierDesigner.xaml.cs
- AnchorEditor.cs