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
- Internal.cs
- ThreadExceptionEvent.cs
- QilIterator.cs
- Repeater.cs
- KnownTypeDataContractResolver.cs
- ListViewSelectEventArgs.cs
- BCLDebug.cs
- TokenFactoryCredential.cs
- PointAnimationUsingKeyFrames.cs
- XPathNodeIterator.cs
- DataTemplate.cs
- DataIdProcessor.cs
- ListSortDescription.cs
- Encoder.cs
- Encoding.cs
- listitem.cs
- BaseTemplateBuildProvider.cs
- PrintEvent.cs
- HTTPRemotingHandler.cs
- GridViewRowPresenter.cs
- ExitEventArgs.cs
- KeyPressEvent.cs
- ExpressionBinding.cs
- ProviderConnectionPoint.cs
- LocalizableResourceBuilder.cs
- FixedPosition.cs
- OleDbPermission.cs
- GradientStop.cs
- HierarchicalDataBoundControl.cs
- ExpressionContext.cs
- StringValidator.cs
- CodeDirectoryCompiler.cs
- UrlPropertyAttribute.cs
- PropertyGrid.cs
- ConditionedDesigner.cs
- XhtmlBasicPhoneCallAdapter.cs
- GroupLabel.cs
- ProtectedConfigurationSection.cs
- BaseContextMenu.cs
- SqlWebEventProvider.cs
- TreeBuilder.cs
- EventBuilder.cs
- RuntimeHandles.cs
- CodeFieldReferenceExpression.cs
- XmlSerializerNamespaces.cs
- EdmScalarPropertyAttribute.cs
- CodePageEncoding.cs
- SqlPersonalizationProvider.cs
- CacheRequest.cs
- unsafeIndexingFilterStream.cs
- LinearKeyFrames.cs
- Misc.cs
- CompressedStack.cs
- FixedDocumentSequencePaginator.cs
- BindingExpressionUncommonField.cs
- CollectionViewGroupRoot.cs
- TempEnvironment.cs
- PhoneCall.cs
- EdmToObjectNamespaceMap.cs
- TemplateKeyConverter.cs
- SpellCheck.cs
- ScrollProperties.cs
- Event.cs
- GenericIdentity.cs
- Int32AnimationUsingKeyFrames.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- SocketAddress.cs
- Helper.cs
- InputProcessorProfilesLoader.cs
- DbBuffer.cs
- Int32RectConverter.cs
- JsonDeserializer.cs
- XPathException.cs
- AutoGeneratedField.cs
- ObjectStateManager.cs
- Schema.cs
- ProcessHostConfigUtils.cs
- SpellCheck.cs
- URL.cs
- HtmlEncodedRawTextWriter.cs
- QueryResponse.cs
- PageThemeParser.cs
- SchemaDeclBase.cs
- SmiContext.cs
- Win32Native.cs
- ItemType.cs
- PageContentCollection.cs
- SwitchLevelAttribute.cs
- AdjustableArrowCap.cs
- SchemaElementDecl.cs
- ListViewTableRow.cs
- ZoneButton.cs
- TraceContextEventArgs.cs
- ConstructorNeedsTagAttribute.cs
- AddInServer.cs
- ConfigurationManagerInternal.cs
- TextSegment.cs
- Part.cs
- DesignerAutoFormatCollection.cs
- brushes.cs