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
- Region.cs
- OleDbReferenceCollection.cs
- SqlClientFactory.cs
- SafeFileMappingHandle.cs
- StatusBarAutomationPeer.cs
- Speller.cs
- FormsAuthenticationConfiguration.cs
- DataGridViewToolTip.cs
- BlockCollection.cs
- BitmapEffect.cs
- EventKeyword.cs
- RenderDataDrawingContext.cs
- UnmanagedMarshal.cs
- ContentPresenter.cs
- WMICapabilities.cs
- SecurityPolicyVersion.cs
- ClockGroup.cs
- BaseValidator.cs
- FunctionParameter.cs
- WMICapabilities.cs
- ProfileParameter.cs
- DataProtection.cs
- TiffBitmapDecoder.cs
- NullNotAllowedCollection.cs
- CustomValidator.cs
- DesignerValidatorAdapter.cs
- InheritanceContextChangedEventManager.cs
- ChunkedMemoryStream.cs
- DecoratedNameAttribute.cs
- FormsAuthenticationCredentials.cs
- SingleObjectCollection.cs
- ClassGenerator.cs
- FrameworkElementAutomationPeer.cs
- UnsafeNativeMethods.cs
- LazyInitializer.cs
- HideDisabledControlAdapter.cs
- StandardOleMarshalObject.cs
- ResourceWriter.cs
- HuffmanTree.cs
- ResourceReferenceKeyNotFoundException.cs
- BitmapEffectCollection.cs
- OleServicesContext.cs
- TrackingRecord.cs
- NavigatingCancelEventArgs.cs
- SqlParameterCollection.cs
- WebControlToolBoxItem.cs
- DbException.cs
- DataGridTextBoxColumn.cs
- XmlAggregates.cs
- ISFClipboardData.cs
- ParamArrayAttribute.cs
- documentsequencetextcontainer.cs
- CheckedListBox.cs
- ListBoxItemAutomationPeer.cs
- ConvertersCollection.cs
- MultiTrigger.cs
- SoapFaultCodes.cs
- OleDbConnectionInternal.cs
- FolderBrowserDialog.cs
- IxmlLineInfo.cs
- CustomAttribute.cs
- DataList.cs
- DbConnectionPoolGroupProviderInfo.cs
- TemplateNameScope.cs
- OuterGlowBitmapEffect.cs
- ExpressionBuilderCollection.cs
- StackSpiller.Generated.cs
- xsdvalidator.cs
- PasswordBox.cs
- VisualStyleRenderer.cs
- ExceptionUtil.cs
- SafeProcessHandle.cs
- ExceptionHandler.cs
- FormsAuthenticationCredentials.cs
- ByteStorage.cs
- WindowsRichEdit.cs
- Listbox.cs
- QilScopedVisitor.cs
- DesignerUtility.cs
- ImageAutomationPeer.cs
- Boolean.cs
- SymbolEqualComparer.cs
- SafeNativeMethodsOther.cs
- CustomCategoryAttribute.cs
- HttpWebRequestElement.cs
- SetMemberBinder.cs
- PageSettings.cs
- ObjectDataProvider.cs
- HtmlInputImage.cs
- ValidatorAttribute.cs
- ListViewDeletedEventArgs.cs
- SelectionWordBreaker.cs
- ClientRolePrincipal.cs
- RoleManagerModule.cs
- TagNameToTypeMapper.cs
- WebPartZone.cs
- SqlClientFactory.cs
- BitSet.cs
- EntityTemplateUserControl.cs
- NetCodeGroup.cs