Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Documents / TextSegment.cs / 1305600 / 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
- NavigationPropertyEmitter.cs
- RestClientProxyHandler.cs
- InputScope.cs
- NullRuntimeConfig.cs
- ProvideValueServiceProvider.cs
- SeekableMessageNavigator.cs
- SqlLiftWhereClauses.cs
- ImageMetadata.cs
- sqlstateclientmanager.cs
- HandleDictionary.cs
- RawKeyboardInputReport.cs
- _NestedSingleAsyncResult.cs
- TableCellCollection.cs
- ImageList.cs
- TimerTable.cs
- EventLogInternal.cs
- BinarySecretSecurityToken.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- CancellationTokenSource.cs
- BuildResult.cs
- RedirectionProxy.cs
- ParameterBuilder.cs
- ZipIORawDataFileBlock.cs
- SqlVersion.cs
- updatecommandorderer.cs
- PropertyNames.cs
- QueryValue.cs
- DataBindingCollectionConverter.cs
- HttpResponseWrapper.cs
- Int16.cs
- WebBrowserDocumentCompletedEventHandler.cs
- SqlDataSourceCache.cs
- WebCategoryAttribute.cs
- MultiViewDesigner.cs
- CookielessHelper.cs
- EnumerableRowCollection.cs
- CriticalFinalizerObject.cs
- CommandSet.cs
- CharEntityEncoderFallback.cs
- ValidationError.cs
- validationstate.cs
- NonParentingControl.cs
- ConstructorExpr.cs
- SqlHelper.cs
- TreeNodeMouseHoverEvent.cs
- RootProfilePropertySettingsCollection.cs
- HttpRuntimeSection.cs
- EmbeddedMailObject.cs
- SafeProcessHandle.cs
- PrintPreviewControl.cs
- SafeCertificateContext.cs
- StickyNoteHelper.cs
- ImportContext.cs
- ToolStripContentPanelRenderEventArgs.cs
- BindingContext.cs
- CellTreeNode.cs
- Int32.cs
- TypeGeneratedEventArgs.cs
- ServerIdentity.cs
- SmiContext.cs
- JsonClassDataContract.cs
- ExpressionBuilderContext.cs
- ProtocolElement.cs
- CodeStatement.cs
- WindowsImpersonationContext.cs
- categoryentry.cs
- DBSchemaTable.cs
- DelegateInArgument.cs
- login.cs
- SoapObjectInfo.cs
- embossbitmapeffect.cs
- CodeIdentifiers.cs
- ThicknessAnimation.cs
- AssemblyContextControlItem.cs
- X509AsymmetricSecurityKey.cs
- XmlSchemaValidator.cs
- OptimalTextSource.cs
- InvocationExpression.cs
- SocketAddress.cs
- SerializationObjectManager.cs
- HttpCachePolicyBase.cs
- InsufficientMemoryException.cs
- TreeWalker.cs
- TriggerAction.cs
- SqlTransaction.cs
- DebugView.cs
- SqlFormatter.cs
- PathFigureCollection.cs
- RelationHandler.cs
- QueryCacheEntry.cs
- DbProviderConfigurationHandler.cs
- StaticContext.cs
- WebRequestModulesSection.cs
- WsdlEndpointConversionContext.cs
- Constraint.cs
- CodeThrowExceptionStatement.cs
- DnsPermission.cs
- CompiledQuery.cs
- NullReferenceException.cs
- TreeSet.cs