Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- PointCollection.cs
- CodeDelegateInvokeExpression.cs
- DecoderReplacementFallback.cs
- DataObjectCopyingEventArgs.cs
- InvokeHandlers.cs
- OrElse.cs
- TextOptions.cs
- AuthenticateEventArgs.cs
- ConnectionStringsExpressionEditor.cs
- AppliedDeviceFiltersEditor.cs
- InstancePersistenceCommand.cs
- Socket.cs
- TextPattern.cs
- Pair.cs
- ToolStripGripRenderEventArgs.cs
- CodeNamespaceImportCollection.cs
- WebPartCatalogAddVerb.cs
- TypeDescriptionProvider.cs
- WsrmMessageInfo.cs
- AdapterDictionary.cs
- RelationshipFixer.cs
- PersonalizationEntry.cs
- CompModSwitches.cs
- DataRelation.cs
- LinkDesigner.cs
- PropertyGridCommands.cs
- RequestCacheEntry.cs
- Tool.cs
- HtmlTableCellCollection.cs
- ContextMenuAutomationPeer.cs
- DocumentCollection.cs
- CustomError.cs
- SoapCodeExporter.cs
- DrawingServices.cs
- FactoryMaker.cs
- GifBitmapEncoder.cs
- TextBoxAutomationPeer.cs
- SemaphoreSecurity.cs
- MetaTable.cs
- LowerCaseStringConverter.cs
- Line.cs
- DataContractSet.cs
- DataTransferEventArgs.cs
- GC.cs
- Camera.cs
- XmlText.cs
- ThrowHelper.cs
- GridItemCollection.cs
- EndpointBehaviorElement.cs
- JsonFormatReaderGenerator.cs
- X509CertificateValidator.cs
- HostedTransportConfigurationBase.cs
- CustomPopupPlacement.cs
- Int32AnimationUsingKeyFrames.cs
- OpCodes.cs
- XsltArgumentList.cs
- ALinqExpressionVisitor.cs
- DataConnectionHelper.cs
- VisualProxy.cs
- ListControl.cs
- CellParaClient.cs
- HiddenFieldPageStatePersister.cs
- SqlBooleanizer.cs
- Optimizer.cs
- PrivilegedConfigurationManager.cs
- QilNode.cs
- ClrPerspective.cs
- WebPartMenuStyle.cs
- HwndTarget.cs
- BoundPropertyEntry.cs
- ConfigurationValue.cs
- WSDualHttpBinding.cs
- AssemblySettingAttributes.cs
- WebInvokeAttribute.cs
- CacheEntry.cs
- Rule.cs
- xmlfixedPageInfo.cs
- TypeExtensionConverter.cs
- MediaPlayerState.cs
- CharEntityEncoderFallback.cs
- HMACSHA1.cs
- Highlights.cs
- SctClaimSerializer.cs
- Image.cs
- RecordConverter.cs
- safex509handles.cs
- ReaderWriterLock.cs
- CredentialCache.cs
- TextRunProperties.cs
- AttributeQuery.cs
- BinaryOperationBinder.cs
- PhonemeEventArgs.cs
- DynamicValueConverter.cs
- WebServiceParameterData.cs
- CachedFontFace.cs
- BindingManagerDataErrorEventArgs.cs
- DrawItemEvent.cs
- StreamGeometry.cs
- WindowsUpDown.cs
- SiteMapNodeItemEventArgs.cs