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
- GenericNameHandler.cs
- ContentValidator.cs
- TextModifierScope.cs
- PermissionListSet.cs
- HealthMonitoringSection.cs
- DataGridItem.cs
- SettingsPropertyValue.cs
- SafeHandles.cs
- ButtonBase.cs
- InstanceDataCollection.cs
- FixedTextContainer.cs
- cookiecontainer.cs
- TraceListener.cs
- PrePrepareMethodAttribute.cs
- CompositeControl.cs
- DesignerRegion.cs
- PropertyReference.cs
- TaskFactory.cs
- SocketException.cs
- StateMachineDesignerPaint.cs
- ListenerAdaptersInstallComponent.cs
- ScriptControlManager.cs
- ParameterCollectionEditor.cs
- DbReferenceCollection.cs
- StringFreezingAttribute.cs
- nulltextnavigator.cs
- ListComponentEditor.cs
- AuthorizationRuleCollection.cs
- SynchronousChannel.cs
- ToolboxItemSnapLineBehavior.cs
- ObfuscationAttribute.cs
- CatalogPartChrome.cs
- Main.cs
- StringValidator.cs
- AccessDataSourceView.cs
- Clock.cs
- ExclusiveCanonicalizationTransform.cs
- WS2007HttpBinding.cs
- ValidationRule.cs
- DataGridTextBoxColumn.cs
- TypeUsageBuilder.cs
- PtsHost.cs
- HtmlImage.cs
- ObjectListCommand.cs
- SQLStringStorage.cs
- RelatedImageListAttribute.cs
- ProfileBuildProvider.cs
- Package.cs
- _HeaderInfo.cs
- ILGenerator.cs
- WebBrowsableAttribute.cs
- TypeSystem.cs
- XmlSchemaImporter.cs
- FolderBrowserDialogDesigner.cs
- TokenizerHelper.cs
- AuthenticationService.cs
- ServiceThrottlingBehavior.cs
- RelationshipEnd.cs
- activationcontext.cs
- DispatchWrapper.cs
- ConditionalDesigner.cs
- OptimizerPatterns.cs
- MyContact.cs
- Queue.cs
- WindowInteropHelper.cs
- HtmlControl.cs
- BamlRecordHelper.cs
- WebDisplayNameAttribute.cs
- TemplateBamlRecordReader.cs
- DocumentOrderQuery.cs
- ColorEditor.cs
- BmpBitmapDecoder.cs
- BasicExpressionVisitor.cs
- FormsAuthentication.cs
- DragEvent.cs
- RadioButton.cs
- DesignTimeVisibleAttribute.cs
- ListViewGroupConverter.cs
- TraceUtility.cs
- CellConstant.cs
- QEncodedStream.cs
- externdll.cs
- FixedElement.cs
- LinearGradientBrush.cs
- MimePart.cs
- Console.cs
- UnionExpr.cs
- CancelEventArgs.cs
- XPathNavigatorException.cs
- SoapParser.cs
- HtmlImage.cs
- XmlName.cs
- DataGridHeadersVisibilityToVisibilityConverter.cs
- PropertyDescriptorGridEntry.cs
- NameScopePropertyAttribute.cs
- UpdateManifestForBrowserApplication.cs
- FlowDocumentView.cs
- ProcessThreadCollection.cs
- UiaCoreApi.cs
- AppDomainManager.cs