Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / 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. //---------------------------------------------------------------------------- // // 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
- CookieHandler.cs
- LineMetrics.cs
- Latin1Encoding.cs
- NumberFormatInfo.cs
- ArraySet.cs
- IDReferencePropertyAttribute.cs
- WebPartUtil.cs
- CommentEmitter.cs
- DictionarySectionHandler.cs
- ConfigXmlSignificantWhitespace.cs
- processwaithandle.cs
- SqlConnectionPoolGroupProviderInfo.cs
- Point.cs
- ThemeInfoAttribute.cs
- UdpTransportBindingElement.cs
- ValueHandle.cs
- OpCellTreeNode.cs
- XmlElement.cs
- SelectionGlyphBase.cs
- SqlRowUpdatingEvent.cs
- Literal.cs
- UserControl.cs
- ContextInformation.cs
- IPEndPointCollection.cs
- TextViewBase.cs
- WebPartHeaderCloseVerb.cs
- CheckBoxField.cs
- StylusPointPropertyUnit.cs
- XmlQueryRuntime.cs
- PropagatorResult.cs
- WorkflowCompensationBehavior.cs
- NameSpaceEvent.cs
- UInt64Storage.cs
- UrlAuthorizationModule.cs
- ResXResourceSet.cs
- StagingAreaInputItem.cs
- ChildChangedEventArgs.cs
- StopStoryboard.cs
- ExceptionUtil.cs
- HttpCapabilitiesBase.cs
- TableStyle.cs
- BookmarkEventArgs.cs
- SqlDataAdapter.cs
- NamedObject.cs
- CompileXomlTask.cs
- ViewPort3D.cs
- IOThreadScheduler.cs
- ListViewItemEventArgs.cs
- TreeView.cs
- CommonProperties.cs
- OrCondition.cs
- XhtmlBasicLabelAdapter.cs
- DBSqlParserTable.cs
- XmlNode.cs
- webproxy.cs
- WindowsScrollBar.cs
- ResourceCodeDomSerializer.cs
- ClrProviderManifest.cs
- DateTimeOffset.cs
- DecoderNLS.cs
- WebPartChrome.cs
- RowType.cs
- HttpClientCertificate.cs
- HttpListenerRequest.cs
- OracleConnection.cs
- FormsAuthenticationUserCollection.cs
- NativeObjectSecurity.cs
- AnnotationResource.cs
- SingleConverter.cs
- UiaCoreProviderApi.cs
- QueryInterceptorAttribute.cs
- Substitution.cs
- QueryRewriter.cs
- TransformPatternIdentifiers.cs
- dbdatarecord.cs
- DataErrorValidationRule.cs
- CharacterHit.cs
- initElementDictionary.cs
- DashStyle.cs
- AxisAngleRotation3D.cs
- PaginationProgressEventArgs.cs
- FloaterBaseParagraph.cs
- MatcherBuilder.cs
- Action.cs
- MultilineStringConverter.cs
- ReflectionServiceProvider.cs
- WinEventHandler.cs
- ConfigUtil.cs
- FlowDocumentReaderAutomationPeer.cs
- COM2Enum.cs
- AliasExpr.cs
- SystemWebCachingSectionGroup.cs
- Vector3DCollection.cs
- CodeSubDirectoriesCollection.cs
- DefaultTextStore.cs
- TreeViewImageKeyConverter.cs
- DoubleAnimation.cs
- SqlDataSourceSelectingEventArgs.cs
- EventArgs.cs
- BooleanConverter.cs