Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- ProtectedConfiguration.cs
- DataServiceResponse.cs
- LayoutManager.cs
- ParameterElement.cs
- ThreadStateException.cs
- WorkBatch.cs
- ITreeGenerator.cs
- IPEndPointCollection.cs
- shaperfactoryquerycacheentry.cs
- ObjectAnimationUsingKeyFrames.cs
- DbConnectionInternal.cs
- ControlIdConverter.cs
- CollectionType.cs
- EntityContainerAssociationSet.cs
- SamlDoNotCacheCondition.cs
- SqlNodeAnnotations.cs
- DesignerOptionService.cs
- DataGridViewComboBoxColumn.cs
- ConstraintEnumerator.cs
- HierarchicalDataTemplate.cs
- ConstraintCollection.cs
- DataGridLinkButton.cs
- CompiledQuery.cs
- HostSecurityManager.cs
- TriggerActionCollection.cs
- TypeForwardedToAttribute.cs
- MarkupObject.cs
- Duration.cs
- rsa.cs
- GetWinFXPath.cs
- RSAOAEPKeyExchangeFormatter.cs
- Lookup.cs
- CategoryNameCollection.cs
- DropTarget.cs
- XPathNavigatorKeyComparer.cs
- COM2IPerPropertyBrowsingHandler.cs
- LoadedEvent.cs
- ObjectCloneHelper.cs
- NetworkAddressChange.cs
- SafeViewOfFileHandle.cs
- MultipartIdentifier.cs
- FacetChecker.cs
- BulletChrome.cs
- BamlTreeNode.cs
- FloaterParagraph.cs
- ContentPropertyAttribute.cs
- PKCS1MaskGenerationMethod.cs
- NameValueFileSectionHandler.cs
- Formatter.cs
- DefaultObjectMappingItemCollection.cs
- DragDeltaEventArgs.cs
- ProcessDesigner.cs
- ShaderEffect.cs
- WebPartTracker.cs
- FlatButtonAppearance.cs
- HtmlTitle.cs
- WebPartManagerInternals.cs
- HttpListenerPrefixCollection.cs
- RangeValidator.cs
- CalendarDateRangeChangingEventArgs.cs
- StringConverter.cs
- XmlSecureResolver.cs
- StreamMarshaler.cs
- UnauthorizedWebPart.cs
- Registry.cs
- HGlobalSafeHandle.cs
- MutexSecurity.cs
- EventTask.cs
- UInt16Storage.cs
- DeleteHelper.cs
- WebPartZoneCollection.cs
- ManagementClass.cs
- PropertyCondition.cs
- MatchingStyle.cs
- ToolStripEditorManager.cs
- XmlSigningNodeWriter.cs
- DoubleCollectionConverter.cs
- ListBox.cs
- TypeInitializationException.cs
- DrawingCollection.cs
- TextEditorDragDrop.cs
- AudienceUriMode.cs
- ConfigurationStrings.cs
- ListViewItem.cs
- HtmlGenericControl.cs
- TemplatedMailWebEventProvider.cs
- StreamGeometry.cs
- BamlLocalizabilityResolver.cs
- LocationSectionRecord.cs
- NativeCppClassAttribute.cs
- TextFormattingConverter.cs
- Utils.cs
- MessageBox.cs
- XmlSchemaSimpleType.cs
- LayoutTableCell.cs
- Nodes.cs
- XmlUtf8RawTextWriter.cs
- smtppermission.cs
- HandlerWithFactory.cs
- SpecularMaterial.cs