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
- TimeSpanMinutesOrInfiniteConverter.cs
- SEHException.cs
- ToolStripItemCollection.cs
- AnonymousIdentificationModule.cs
- JournalEntryListConverter.cs
- IssuedTokenClientBehaviorsElement.cs
- DeferredSelectedIndexReference.cs
- ImageAutomationPeer.cs
- FixedSOMGroup.cs
- RemotingAttributes.cs
- TextLineResult.cs
- StreamReader.cs
- Trigger.cs
- ProxyWebPartManagerDesigner.cs
- COM2PropertyDescriptor.cs
- SynchronousChannelMergeEnumerator.cs
- GeometryHitTestResult.cs
- UrlRoutingHandler.cs
- InvalidPropValue.cs
- OpacityConverter.cs
- Int32Storage.cs
- TemplateComponentConnector.cs
- TargetFrameworkUtil.cs
- MessageQueuePermissionEntryCollection.cs
- TextBoxAutomationPeer.cs
- KernelTypeValidation.cs
- SynchronousChannel.cs
- HMACSHA256.cs
- RichTextBoxAutomationPeer.cs
- SqlCommandBuilder.cs
- ClientEventManager.cs
- ClickablePoint.cs
- TypeListConverter.cs
- HelpKeywordAttribute.cs
- FixedPageAutomationPeer.cs
- FileUpload.cs
- MappingMetadataHelper.cs
- SettingsSavedEventArgs.cs
- ListViewCancelEventArgs.cs
- TransformValueSerializer.cs
- IdentifierCreationService.cs
- ADMembershipUser.cs
- DataMemberConverter.cs
- XmlUTF8TextReader.cs
- ToggleButton.cs
- SoapIncludeAttribute.cs
- EnumerableRowCollection.cs
- EventListener.cs
- NamedObject.cs
- EventLogEntryCollection.cs
- XmlHierarchicalEnumerable.cs
- RevocationPoint.cs
- SelectedDatesCollection.cs
- XsltOutput.cs
- FacetEnabledSchemaElement.cs
- InternalConfigHost.cs
- UnmanagedMarshal.cs
- AnonymousIdentificationModule.cs
- File.cs
- WebPartCollection.cs
- DateTimeFormat.cs
- Signature.cs
- InputLangChangeRequestEvent.cs
- SqlNamer.cs
- ToolStripSplitStackLayout.cs
- DbDeleteCommandTree.cs
- SqlConnectionHelper.cs
- ScrollViewer.cs
- DataGridPageChangedEventArgs.cs
- EdmToObjectNamespaceMap.cs
- LoadedOrUnloadedOperation.cs
- FilteredAttributeCollection.cs
- EntityKeyElement.cs
- OpenFileDialog.cs
- Bold.cs
- PropertyPushdownHelper.cs
- DBDataPermission.cs
- WbmpConverter.cs
- StyleXamlParser.cs
- DoubleIndependentAnimationStorage.cs
- CommandEventArgs.cs
- ISessionStateStore.cs
- InboundActivityHelper.cs
- BuildProviderAppliesToAttribute.cs
- RepeatInfo.cs
- MenuScrollingVisibilityConverter.cs
- CapabilitiesSection.cs
- RepeaterItem.cs
- Pair.cs
- SessionParameter.cs
- ButtonChrome.cs
- ECDiffieHellmanCng.cs
- ControlEvent.cs
- ZipIORawDataFileBlock.cs
- OdbcConnectionHandle.cs
- MdiWindowListItemConverter.cs
- DynamicValidatorEventArgs.cs
- StatusStrip.cs
- QilCloneVisitor.cs
- DataGridPageChangedEventArgs.cs