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
- WorkflowNamespace.cs
- RotateTransform.cs
- UpdateTracker.cs
- SHA1.cs
- COAUTHIDENTITY.cs
- PopupEventArgs.cs
- FilterRepeater.cs
- ManagementOperationWatcher.cs
- FullTextLine.cs
- HttpAsyncResult.cs
- XmlDataImplementation.cs
- CodePrimitiveExpression.cs
- PropertyBuilder.cs
- PersonalizationStateInfo.cs
- mansign.cs
- AlphabetConverter.cs
- DataGridViewComboBoxCell.cs
- DesignerVerbToolStripMenuItem.cs
- ObjectAssociationEndMapping.cs
- LayoutEngine.cs
- CheckBoxFlatAdapter.cs
- PcmConverter.cs
- CryptoApi.cs
- filewebresponse.cs
- QilIterator.cs
- HtmlInputPassword.cs
- RandomDelayQueuedSendsAsyncResult.cs
- SwitchLevelAttribute.cs
- EdmToObjectNamespaceMap.cs
- StateItem.cs
- pingexception.cs
- EntityDescriptor.cs
- WebGetAttribute.cs
- ProtocolReflector.cs
- VirtualPathUtility.cs
- ThemeInfoAttribute.cs
- ArcSegment.cs
- XNodeValidator.cs
- MissingFieldException.cs
- LateBoundBitmapDecoder.cs
- AssemblyBuilder.cs
- InputManager.cs
- ErrorInfoXmlDocument.cs
- TemplateColumn.cs
- CompareInfo.cs
- DbConnectionStringCommon.cs
- ExpressionPrinter.cs
- GlobalProxySelection.cs
- DataServiceQueryProvider.cs
- ClientScriptManagerWrapper.cs
- ScrollChrome.cs
- DeploymentSection.cs
- OracleInfoMessageEventArgs.cs
- InsufficientMemoryException.cs
- IResourceProvider.cs
- ConfigurationException.cs
- GAC.cs
- AmbientProperties.cs
- SByte.cs
- SqlDataRecord.cs
- XXXInfos.cs
- CustomDictionarySources.cs
- RijndaelManagedTransform.cs
- CurrencyWrapper.cs
- AndMessageFilter.cs
- ScriptReferenceEventArgs.cs
- BoundColumn.cs
- TypeDelegator.cs
- SqlPersonalizationProvider.cs
- DesignerAutoFormatCollection.cs
- EntityProxyTypeInfo.cs
- indexingfiltermarshaler.cs
- SynchronizedCollection.cs
- HtmlElementErrorEventArgs.cs
- Journaling.cs
- HelpEvent.cs
- DataGridTemplateColumn.cs
- ContainerParaClient.cs
- CultureData.cs
- MinimizableAttributeTypeConverter.cs
- IsolatedStorageFilePermission.cs
- UserPreferenceChangingEventArgs.cs
- XmlStreamStore.cs
- ProviderCommandInfoUtils.cs
- KeyValueInternalCollection.cs
- XmlConvert.cs
- PerformanceCounter.cs
- AssemblyResourceLoader.cs
- GregorianCalendarHelper.cs
- ProjectionRewriter.cs
- WindowsAuthenticationModule.cs
- PrimitiveType.cs
- SqlLiftWhereClauses.cs
- BuildProvider.cs
- OleDbInfoMessageEvent.cs
- HotSpotCollection.cs
- CustomValidator.cs
- ACE.cs
- TableLayoutStyleCollection.cs
- DynamicPropertyReader.cs