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
- Int32Collection.cs
- FrameworkElement.cs
- ParseChildrenAsPropertiesAttribute.cs
- AutomationPropertyInfo.cs
- Win32Native.cs
- XsltQilFactory.cs
- httpapplicationstate.cs
- ClickablePoint.cs
- COM2FontConverter.cs
- ClientUtils.cs
- SimpleColumnProvider.cs
- TimerEventSubscriptionCollection.cs
- SettingsPropertyWrongTypeException.cs
- Int64AnimationBase.cs
- AppearanceEditorPart.cs
- SimpleFileLog.cs
- XmlSchemaDocumentation.cs
- HandlerFactoryCache.cs
- KnownBoxes.cs
- SolidBrush.cs
- ContentPlaceHolder.cs
- FileDialogCustomPlaces.cs
- AdRotator.cs
- SqlUserDefinedAggregateAttribute.cs
- _HeaderInfoTable.cs
- SqlLiftWhereClauses.cs
- Point4D.cs
- RuntimeResourceSet.cs
- UnsafeNetInfoNativeMethods.cs
- Invariant.cs
- CustomAssemblyResolver.cs
- WCFServiceClientProxyGenerator.cs
- DuplexChannel.cs
- VectorCollectionConverter.cs
- SerializationSectionGroup.cs
- ToolboxItemLoader.cs
- ToolBarButtonClickEvent.cs
- CodeObject.cs
- HitTestParameters3D.cs
- Base64Decoder.cs
- TableRowCollection.cs
- OdbcError.cs
- ComplexPropertyEntry.cs
- DataGridViewEditingControlShowingEventArgs.cs
- WebBrowserEvent.cs
- ProcessHostMapPath.cs
- KnownBoxes.cs
- WebPartEventArgs.cs
- DesignerAttribute.cs
- DataListCommandEventArgs.cs
- HttpCapabilitiesBase.cs
- ProcessModelInfo.cs
- ListViewDeleteEventArgs.cs
- Queue.cs
- DetailsViewDeletedEventArgs.cs
- TeredoHelper.cs
- ImageListUtils.cs
- ExitEventArgs.cs
- EntityDataSourceChangedEventArgs.cs
- ToggleProviderWrapper.cs
- OleDbTransaction.cs
- dtdvalidator.cs
- PersistenceTypeAttribute.cs
- MenuItemStyleCollection.cs
- GridItemCollection.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- Char.cs
- Attributes.cs
- Timeline.cs
- CompiledXpathExpr.cs
- XhtmlStyleClass.cs
- EventProviderWriter.cs
- HWStack.cs
- SapiInterop.cs
- ByteKeyFrameCollection.cs
- UriSchemeKeyedCollection.cs
- CultureTableRecord.cs
- Content.cs
- UnsafeNativeMethods.cs
- Lease.cs
- ClientBuildManager.cs
- ImageSource.cs
- StrongNamePublicKeyBlob.cs
- SecurityContext.cs
- BinaryCommonClasses.cs
- FormatterConverter.cs
- DataList.cs
- ExtentCqlBlock.cs
- MemoryStream.cs
- TrackingValidationObjectDictionary.cs
- DeploymentSectionCache.cs
- WindowsGraphicsWrapper.cs
- SchemaImporterExtensionElement.cs
- Dispatcher.cs
- TreeNodeBindingCollection.cs
- BaseParser.cs
- ServiceObjectContainer.cs
- HtmlInputPassword.cs
- CredentialCache.cs