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
- IPAddress.cs
- AppDomainUnloadedException.cs
- RouteParametersHelper.cs
- PngBitmapDecoder.cs
- StreamWithDictionary.cs
- SoapHeader.cs
- SqlFunctionAttribute.cs
- MouseCaptureWithinProperty.cs
- ErrorHandler.cs
- NavigationPropertyEmitter.cs
- XsdDataContractExporter.cs
- UnsafeNativeMethodsCLR.cs
- DEREncoding.cs
- CharEntityEncoderFallback.cs
- DetailsViewDeletedEventArgs.cs
- DataBindEngine.cs
- ExpressionPrinter.cs
- IssuedTokenClientBehaviorsElement.cs
- MimeTypeAttribute.cs
- IISMapPath.cs
- ExpressionTable.cs
- XsltQilFactory.cs
- ExtensibleClassFactory.cs
- _PooledStream.cs
- TCPListener.cs
- LineServices.cs
- CategoryNameCollection.cs
- ConnectionConsumerAttribute.cs
- StagingAreaInputItem.cs
- TreeNodeStyle.cs
- PreProcessInputEventArgs.cs
- Hashtable.cs
- DataStreams.cs
- TypeDescriptionProvider.cs
- DataGridCaption.cs
- ExpandCollapsePattern.cs
- ListItemCollection.cs
- Size3D.cs
- ConfigurationErrorsException.cs
- EmissiveMaterial.cs
- XmlDataImplementation.cs
- NGCSerializationManager.cs
- _BufferOffsetSize.cs
- FuncTypeConverter.cs
- MultipartIdentifier.cs
- RemoveStoryboard.cs
- ReferenceEqualityComparer.cs
- PageThemeBuildProvider.cs
- QualifiedCellIdBoolean.cs
- ValidatingReaderNodeData.cs
- CustomAttributeFormatException.cs
- HyperLink.cs
- ObjectViewFactory.cs
- XmlSchemaIdentityConstraint.cs
- SettingsAttributes.cs
- MetaModel.cs
- DataBinding.cs
- RefreshResponseInfo.cs
- TrackingServices.cs
- MatrixTransform.cs
- DesignerInterfaces.cs
- ClassicBorderDecorator.cs
- WebConfigurationHost.cs
- CompilerCollection.cs
- GeneralTransform.cs
- TogglePattern.cs
- FixedSOMContainer.cs
- PreviousTrackingServiceAttribute.cs
- RbTree.cs
- XmlQueryCardinality.cs
- SystemDiagnosticsSection.cs
- SystemMulticastIPAddressInformation.cs
- PortCache.cs
- TypeGeneratedEventArgs.cs
- WindowsEditBox.cs
- TypeReference.cs
- NotifyCollectionChangedEventArgs.cs
- Triangle.cs
- WebPartDescriptionCollection.cs
- DataGridViewToolTip.cs
- GeneralTransform.cs
- PassportAuthenticationEventArgs.cs
- WindowsToolbarAsMenu.cs
- SiteMapDataSource.cs
- ResourceSetExpression.cs
- BinaryObjectWriter.cs
- FileDataSourceCache.cs
- AssociationType.cs
- ConnectionPointGlyph.cs
- HtmlTableCell.cs
- HtmlSelect.cs
- ResourceExpressionBuilder.cs
- TableParagraph.cs
- OleDbFactory.cs
- LayoutUtils.cs
- ZoneButton.cs
- DocumentGridContextMenu.cs
- VarRefManager.cs
- DocumentXPathNavigator.cs
- SemanticResultValue.cs