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
- SettingsProviderCollection.cs
- AlignmentYValidation.cs
- DataGridViewLinkCell.cs
- DrawingGroup.cs
- ping.cs
- ConcurrentStack.cs
- ConfigUtil.cs
- SplitterPanel.cs
- HtmlButton.cs
- ChildTable.cs
- RelationshipType.cs
- BitmapEffectGeneralTransform.cs
- ExpressionEvaluator.cs
- ConnectionInterfaceCollection.cs
- SBCSCodePageEncoding.cs
- DataGridViewControlCollection.cs
- Compiler.cs
- ComboBox.cs
- NameValueSectionHandler.cs
- ResourceDefaultValueAttribute.cs
- OperationCanceledException.cs
- ConfigurationValues.cs
- DataGridViewCellCancelEventArgs.cs
- EventBookmark.cs
- MailBnfHelper.cs
- CursorConverter.cs
- ValidateNames.cs
- HttpContextWrapper.cs
- BulletedList.cs
- WindowsNonControl.cs
- HtmlPageAdapter.cs
- ParallelTimeline.cs
- ISAPIApplicationHost.cs
- TextBox.cs
- DataTableExtensions.cs
- SmiMetaDataProperty.cs
- Substitution.cs
- HorizontalAlignConverter.cs
- RecognizeCompletedEventArgs.cs
- ObjectToModelValueConverter.cs
- XmlSchemaAttributeGroupRef.cs
- Slider.cs
- TextRangeBase.cs
- HttpMethodAttribute.cs
- HeaderedContentControl.cs
- ActivityCodeGenerator.cs
- Error.cs
- TextEditorCharacters.cs
- _TransmitFileOverlappedAsyncResult.cs
- DataListDesigner.cs
- SplitterEvent.cs
- FeatureManager.cs
- TypeToArgumentTypeConverter.cs
- DependencyPropertyConverter.cs
- ProviderCommandInfoUtils.cs
- log.cs
- TextElementEditingBehaviorAttribute.cs
- ScriptResourceHandler.cs
- ToolBarPanel.cs
- ImportCatalogPart.cs
- ItemsControl.cs
- ArrayList.cs
- DragEventArgs.cs
- WebPartConnectionsEventArgs.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- PageAsyncTask.cs
- _SingleItemRequestCache.cs
- ParseElementCollection.cs
- HeaderCollection.cs
- GridProviderWrapper.cs
- C14NUtil.cs
- GPRECT.cs
- ItemContainerProviderWrapper.cs
- SQLGuidStorage.cs
- WindowHelperService.cs
- EditorPart.cs
- SendSecurityHeaderElementContainer.cs
- CustomTokenProvider.cs
- AsyncPostBackErrorEventArgs.cs
- SponsorHelper.cs
- IndexedString.cs
- SEHException.cs
- InputProviderSite.cs
- TextEditorMouse.cs
- MsmqIntegrationValidationBehavior.cs
- CodeLabeledStatement.cs
- ResourceReferenceKeyNotFoundException.cs
- OleAutBinder.cs
- WsatProxy.cs
- DataGridViewMethods.cs
- TransactionWaitAsyncResult.cs
- ConfigurationLocationCollection.cs
- OrCondition.cs
- SqlUtils.cs
- SafeHandles.cs
- InternalDuplexChannelFactory.cs
- X509ClientCertificateCredentialsElement.cs
- BamlRecords.cs
- EventLogTraceListener.cs
- HttpHandlerActionCollection.cs