Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / Documents / TextSegment.cs / 1 / TextSegment.cs
//---------------------------------------------------------------------------- // // File: TextSegment.cs // // Copyright (C) Microsoft Corporation. All rights reserved. // // Description: A pair of TextPositions used to denote a run of TextContainer content. // //--------------------------------------------------------------------------- namespace System.Windows.Documents { using MS.Internal; using System.Collections; ////// A pair of TextPositions used to denote a run of TextContainer content. /// // internal struct TextSegment { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors ////// Constructor. /// /// /// Position preceeding the TextSegment's content. /// /// /// Position following the TextSegment's content. /// ////// If startPosition or endPosition are TextNavigators (derived from /// TextPointer), the TextSegment constructor will store new TextPointer /// instances internally. The values returned by the Start and End /// properties are always immutable TextPositions. /// internal TextSegment(ITextPointer startPosition, ITextPointer endPosition) : this(startPosition, endPosition, false) { } ////// Constructor. /// /// /// Position preceeding the TextSegment's content. /// /// /// Position following the TextSegment's content. /// /// /// Whether preserves LogicalDirection of start and end positions. /// internal TextSegment(ITextPointer startPosition, ITextPointer endPosition, bool preserveLogicalDirection) { ValidationHelper.VerifyPositionPair(startPosition, endPosition); if (startPosition.CompareTo(endPosition) == 0) { // To preserve segment emptiness // we use the same instance of a pointer // for both segment ends. _start = startPosition.GetFrozenPointer(startPosition.LogicalDirection); _end = _start; } else { Invariant.Assert(startPosition.CompareTo(endPosition) < 0); _start = startPosition.GetFrozenPointer(preserveLogicalDirection ? startPosition.LogicalDirection : LogicalDirection.Backward); _end = endPosition.GetFrozenPointer(preserveLogicalDirection ? endPosition.LogicalDirection : LogicalDirection.Forward); } } #endregion Constructors //------------------------------------------------------ // // Internal Methods // //----------------------------------------------------- #region Internal Methods ////// returns true if the segment contains a given position /// // internal bool Contains(ITextPointer position) { return (!this.IsNull && this._start.CompareTo(position) <= 0 && position.CompareTo(this._end) <= 0); } #endregion Internal Methods //------------------------------------------------------ // // Internal Properties // //------------------------------------------------------ #region Internal Properties ////// Position preceeding the TextSegment's content. /// internal ITextPointer Start { get { return _start; } } ////// Position following the TextSegment's content. /// internal ITextPointer End { get { return _end; } } internal bool IsNull { get { return _start == null || _end == null; } } #endregion Internal Properties ////// The "TextSegment.Null" value. /// ////// TextSegtemt.Null is used in contexts where text segment is missing. /// internal static readonly TextSegment Null = new TextSegment(); //----------------------------------------------------- // // Private Fields // //------------------------------------------------------ #region Private Fields // Position preceeding the TextSegment's content. private readonly ITextPointer _start; // Position following the TextSegment's content. private readonly ITextPointer _end; #endregion Private Fields } } // 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
- CodeStatementCollection.cs
- DefaultProxySection.cs
- XmlCDATASection.cs
- ReturnEventArgs.cs
- WebPartTransformerCollection.cs
- WebPartsPersonalizationAuthorization.cs
- DatatypeImplementation.cs
- ToolStrip.cs
- ObjectSecurity.cs
- Substitution.cs
- DATA_BLOB.cs
- CalendarAutomationPeer.cs
- UIElement.cs
- SmuggledIUnknown.cs
- QueryGenerator.cs
- MsmqHostedTransportManager.cs
- WebPartTransformerAttribute.cs
- DynamicDataExtensions.cs
- Vars.cs
- KnownTypeDataContractResolver.cs
- LockedHandleGlyph.cs
- DataSourceXmlElementAttribute.cs
- Part.cs
- CacheAxisQuery.cs
- NewItemsContextMenuStrip.cs
- Models.cs
- DataSetMappper.cs
- DesignerVerb.cs
- RegisteredHiddenField.cs
- EnterpriseServicesHelper.cs
- Processor.cs
- ObjectNotFoundException.cs
- GeometryModel3D.cs
- Substitution.cs
- DocumentGridContextMenu.cs
- Graph.cs
- CustomAttributeSerializer.cs
- FontStyleConverter.cs
- WebFormDesignerActionService.cs
- _UncName.cs
- BitmapEffectInput.cs
- ProcessProtocolHandler.cs
- PartialTrustVisibleAssemblyCollection.cs
- BrowserInteropHelper.cs
- SharedPersonalizationStateInfo.cs
- safex509handles.cs
- IndexOutOfRangeException.cs
- DataGridViewCellStyleConverter.cs
- OciHandle.cs
- StrokeCollection.cs
- XLinq.cs
- HttpProtocolImporter.cs
- FormParameter.cs
- TimeSpanStorage.cs
- AttachedPropertyBrowsableAttribute.cs
- DrawingContextWalker.cs
- TableLayoutStyleCollection.cs
- ApplicationDirectory.cs
- Types.cs
- SettingsBase.cs
- InvokeWebServiceDesigner.cs
- SqlAliaser.cs
- RelationshipFixer.cs
- AmbientLight.cs
- FormConverter.cs
- PagerSettings.cs
- ProtocolsSection.cs
- TextInfo.cs
- ConnectionStringsExpressionBuilder.cs
- ColorConvertedBitmap.cs
- UrlAuthFailedErrorFormatter.cs
- WindowInteropHelper.cs
- DoubleAnimationUsingPath.cs
- XmlStreamStore.cs
- WorkflowInlining.cs
- DataGridColumnCollection.cs
- ConstraintEnumerator.cs
- Point3D.cs
- DeviceOverridableAttribute.cs
- QuaternionConverter.cs
- DeflateStream.cs
- FileAuthorizationModule.cs
- IMembershipProvider.cs
- CounterCreationDataCollection.cs
- AllMembershipCondition.cs
- XNodeValidator.cs
- IsolatedStorage.cs
- Parameter.cs
- CapabilitiesSection.cs
- TransformProviderWrapper.cs
- RecommendedAsConfigurableAttribute.cs
- FontWeight.cs
- EncoderParameter.cs
- ProfileModule.cs
- IResourceProvider.cs
- CSharpCodeProvider.cs
- RowsCopiedEventArgs.cs
- ButtonStandardAdapter.cs
- Internal.cs
- QueryCacheEntry.cs