Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- DesignTimeParseData.cs
- ExpandoObject.cs
- CodeObject.cs
- SyndicationSerializer.cs
- PointValueSerializer.cs
- CalendarDay.cs
- RepeaterCommandEventArgs.cs
- IndexerNameAttribute.cs
- DecimalStorage.cs
- CodeDelegateCreateExpression.cs
- typedescriptorpermissionattribute.cs
- LinqDataSource.cs
- RtfControlWordInfo.cs
- XmlSerializationReader.cs
- TogglePatternIdentifiers.cs
- ProtocolsConfigurationEntry.cs
- InvalidWMPVersionException.cs
- ActivityExecutionFilter.cs
- SqlConnectionStringBuilder.cs
- SharedDp.cs
- HttpProfileGroupBase.cs
- ExtensionFile.cs
- DataSetMappper.cs
- TransformerInfo.cs
- X509AsymmetricSecurityKey.cs
- WebPartConnectionsDisconnectVerb.cs
- CacheRequest.cs
- BlurBitmapEffect.cs
- SamlAuthorizationDecisionClaimResource.cs
- SchemaImporter.cs
- DataGridTableCollection.cs
- UserControlAutomationPeer.cs
- HttpHandlerActionCollection.cs
- Visitors.cs
- CacheHelper.cs
- ObjectItemAttributeAssemblyLoader.cs
- XPathDocument.cs
- PeerName.cs
- PriorityQueue.cs
- ObjectContextServiceProvider.cs
- TraceEventCache.cs
- ISO2022Encoding.cs
- StateBag.cs
- TextSelection.cs
- GatewayIPAddressInformationCollection.cs
- DocumentGridPage.cs
- ConnectionConsumerAttribute.cs
- HotCommands.cs
- SoapExtensionReflector.cs
- DataGridCaption.cs
- RequestDescription.cs
- MemoryStream.cs
- TrackingQueryElement.cs
- SecurityPolicySection.cs
- SqlParameter.cs
- XmlNode.cs
- Soap.cs
- NameService.cs
- PlatformNotSupportedException.cs
- Queue.cs
- BamlMapTable.cs
- RoleManagerEventArgs.cs
- SymDocumentType.cs
- Utils.cs
- EdmTypeAttribute.cs
- MobileCategoryAttribute.cs
- Ops.cs
- TextContainerHelper.cs
- SapiRecognizer.cs
- StickyNoteHelper.cs
- X509SecurityTokenAuthenticator.cs
- VerificationAttribute.cs
- DataTableMappingCollection.cs
- NamespaceCollection.cs
- UxThemeWrapper.cs
- Binding.cs
- Pointer.cs
- ThumbAutomationPeer.cs
- Solver.cs
- NamedElement.cs
- SrgsRuleRef.cs
- FormsAuthenticationEventArgs.cs
- coordinatorscratchpad.cs
- SafeLocalMemHandle.cs
- StructuredProperty.cs
- ReadOnlyCollectionBase.cs
- UpDownEvent.cs
- DictionaryContent.cs
- SqlServer2KCompatibilityAnnotation.cs
- TdsParameterSetter.cs
- BindingCompleteEventArgs.cs
- StrongNameUtility.cs
- SoundPlayer.cs
- StyleConverter.cs
- XmlQueryRuntime.cs
- XComponentModel.cs
- TemplatePartAttribute.cs
- TableLayoutCellPaintEventArgs.cs
- ZipIOLocalFileHeader.cs
- Operator.cs