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
- RadioButtonAutomationPeer.cs
- PlainXmlSerializer.cs
- CurrentChangingEventManager.cs
- MenuStrip.cs
- BinaryFormatterWriter.cs
- ServerIdentity.cs
- EntityCollectionChangedParams.cs
- Opcode.cs
- TableDetailsRow.cs
- ColorBlend.cs
- SectionInput.cs
- FontStretch.cs
- ImageSourceValueSerializer.cs
- BasicBrowserDialog.designer.cs
- OlePropertyStructs.cs
- RelationshipManager.cs
- PageHandlerFactory.cs
- Point3DAnimationBase.cs
- DbConnectionPoolGroup.cs
- WebPartDisplayModeCancelEventArgs.cs
- PolicyException.cs
- TextControl.cs
- SqlRetyper.cs
- FontSizeConverter.cs
- OrderByBuilder.cs
- LineSegment.cs
- SynchronizedInputHelper.cs
- Int16Converter.cs
- RegexTree.cs
- OracleInternalConnection.cs
- NativeMethodsCLR.cs
- ProxyDataContractResolver.cs
- ContentType.cs
- ViewManagerAttribute.cs
- PropertyChangedEventArgs.cs
- _ListenerRequestStream.cs
- LoginCancelEventArgs.cs
- HttpRequestTraceRecord.cs
- UpdatePanelTrigger.cs
- AssemblyName.cs
- HttpHandlerAction.cs
- HttpServerVarsCollection.cs
- InstalledVoice.cs
- Win32SafeHandles.cs
- HtmlButton.cs
- assertwrapper.cs
- HtmlInputCheckBox.cs
- DataRowView.cs
- DrawingGroup.cs
- RelatedView.cs
- UnitControl.cs
- NavigationPropertyEmitter.cs
- securitycriticaldataClass.cs
- ConfigXmlComment.cs
- CommonDialog.cs
- DateTimeFormatInfoScanner.cs
- RowToFieldTransformer.cs
- DateTimeParse.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- EditModeSwitchButton.cs
- PropertyChangedEventManager.cs
- CallbackValidatorAttribute.cs
- HtmlShim.cs
- mactripleDES.cs
- NameValuePermission.cs
- Compilation.cs
- ServiceRouteHandler.cs
- ForwardPositionQuery.cs
- SingleSelectRootGridEntry.cs
- MetadataItemCollectionFactory.cs
- RequestQueryProcessor.cs
- CapabilitiesSection.cs
- RightNameExpirationInfoPair.cs
- TransformProviderWrapper.cs
- ChannelTracker.cs
- ParameterExpression.cs
- returneventsaver.cs
- SiteMapSection.cs
- InvalidOperationException.cs
- MethodRental.cs
- HttpModuleCollection.cs
- ResourceContainer.cs
- JsonEncodingStreamWrapper.cs
- HttpFileCollection.cs
- Point3DAnimationBase.cs
- HybridDictionary.cs
- PseudoWebRequest.cs
- RegexTree.cs
- Mappings.cs
- FrameSecurityDescriptor.cs
- ProcessStartInfo.cs
- FilterableAttribute.cs
- Literal.cs
- Types.cs
- TextDataBindingHandler.cs
- TagMapInfo.cs
- NextPreviousPagerField.cs
- RegionInfo.cs
- VectorCollection.cs
- XmlEntityReference.cs