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
- ServicesUtilities.cs
- FindProgressChangedEventArgs.cs
- BasicDesignerLoader.cs
- DBNull.cs
- DbParameterCollectionHelper.cs
- PackageStore.cs
- HeaderLabel.cs
- ADRoleFactoryConfiguration.cs
- dataobject.cs
- InnerItemCollectionView.cs
- Transform.cs
- EntityDataSourceReferenceGroup.cs
- Switch.cs
- XamlStyleSerializer.cs
- BooleanStorage.cs
- WorkflowShape.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- SelfIssuedAuthRSAPKCS1SignatureFormatter.cs
- DiscoveryUtility.cs
- GeneralTransform2DTo3DTo2D.cs
- NamespaceList.cs
- FontWeights.cs
- WindowsToolbarItemAsMenuItem.cs
- CompositeFontParser.cs
- MgmtConfigurationRecord.cs
- QilXmlWriter.cs
- TableLayoutRowStyleCollection.cs
- Socket.cs
- XMLSyntaxException.cs
- RemoteCryptoSignHashRequest.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- InvalidOperationException.cs
- CodeDomSerializationProvider.cs
- ExecutorLocksHeldException.cs
- SingleAnimationUsingKeyFrames.cs
- Mouse.cs
- DropShadowBitmapEffect.cs
- RolePrincipal.cs
- SystemResources.cs
- CheckBoxAutomationPeer.cs
- StorageEntitySetMapping.cs
- MembershipAdapter.cs
- FormViewInsertEventArgs.cs
- XmlSchemaSequence.cs
- ReadContentAsBinaryHelper.cs
- SignatureHelper.cs
- WindowsButton.cs
- ASCIIEncoding.cs
- PersonalizationProvider.cs
- SrgsElementFactory.cs
- LayoutEngine.cs
- WSSecureConversationDec2005.cs
- SafeNativeMethods.cs
- ListViewAutomationPeer.cs
- CodeSnippetTypeMember.cs
- WindowsTokenRoleProvider.cs
- BasicHttpMessageCredentialType.cs
- DataShape.cs
- WebPartVerbCollection.cs
- EntityCommandDefinition.cs
- Vector3DAnimationUsingKeyFrames.cs
- StructureChangedEventArgs.cs
- BitmapEffectGroup.cs
- PartManifestEntry.cs
- CompleteWizardStep.cs
- XmlReader.cs
- LineGeometry.cs
- RadioButtonPopupAdapter.cs
- ImageListStreamer.cs
- TraceSection.cs
- InternalUserCancelledException.cs
- EventLogStatus.cs
- FieldNameLookup.cs
- RegexCompiler.cs
- CategoryAttribute.cs
- Menu.cs
- SafePipeHandle.cs
- RIPEMD160Managed.cs
- XmlDataProvider.cs
- TransactionContextValidator.cs
- BinaryReader.cs
- ListenerSessionConnectionReader.cs
- XmlNamespaceMapping.cs
- SiteIdentityPermission.cs
- EntityTypeEmitter.cs
- HtmlImage.cs
- BrowserCapabilitiesFactory.cs
- KnownTypeAttribute.cs
- ChangeInterceptorAttribute.cs
- BindingWorker.cs
- Automation.cs
- ChtmlMobileTextWriter.cs
- PointAnimationClockResource.cs
- XhtmlBasicPhoneCallAdapter.cs
- PostBackOptions.cs
- SqlCharStream.cs
- DataSourceSelectArguments.cs
- Fonts.cs
- validationstate.cs
- glyphs.cs