Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Documents / TextSegment.cs / 1305600 / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- InvalidDataException.cs
- CaretElement.cs
- PrinterUnitConvert.cs
- DataPagerField.cs
- StrokeNodeOperations2.cs
- ToolStripGripRenderEventArgs.cs
- AssociationType.cs
- FlowDocumentPage.cs
- TemplatedAdorner.cs
- OdbcStatementHandle.cs
- StrongNameUtility.cs
- GenericsNotImplementedException.cs
- PolyQuadraticBezierSegment.cs
- AstNode.cs
- WebServiceHostFactory.cs
- SequenceNumber.cs
- DialogResultConverter.cs
- GifBitmapDecoder.cs
- TypeReference.cs
- ListDictionaryInternal.cs
- IIS7UserPrincipal.cs
- DummyDataSource.cs
- EventItfInfo.cs
- BindingUtils.cs
- CachedFontFamily.cs
- SchemaTypeEmitter.cs
- LineMetrics.cs
- CalendarTable.cs
- Symbol.cs
- GradientStop.cs
- IxmlLineInfo.cs
- RuntimeCompatibilityAttribute.cs
- ScrollBar.cs
- CheckBoxBaseAdapter.cs
- TreeViewItem.cs
- ContainerFilterService.cs
- XamlPathDataSerializer.cs
- WaitHandle.cs
- SafeHandles.cs
- Configuration.cs
- SkewTransform.cs
- PreApplicationStartMethodAttribute.cs
- ViewPort3D.cs
- Compensation.cs
- TagPrefixAttribute.cs
- QueryableFilterRepeater.cs
- TextSpan.cs
- CaseCqlBlock.cs
- ContentDisposition.cs
- TextContainerHelper.cs
- DependencyPropertyConverter.cs
- TableLayoutCellPaintEventArgs.cs
- ProfileWorkflowElement.cs
- SqlCachedBuffer.cs
- SortDescription.cs
- NullRuntimeConfig.cs
- TypeDescriptionProvider.cs
- DocumentApplicationJournalEntry.cs
- ToolBarPanel.cs
- ChangeDirector.cs
- ExecutionContext.cs
- ProviderCollection.cs
- PersonalizationDictionary.cs
- EditingCoordinator.cs
- WebServiceTypeData.cs
- DropDownButton.cs
- MethodBuilderInstantiation.cs
- DbSourceCommand.cs
- SQLInt64Storage.cs
- AddingNewEventArgs.cs
- Geometry3D.cs
- COM2Enum.cs
- PersistenceTypeAttribute.cs
- PrintingPermissionAttribute.cs
- WindowsIdentity.cs
- Visual3D.cs
- ClientScriptManager.cs
- AddressAccessDeniedException.cs
- BaseValidatorDesigner.cs
- IResourceProvider.cs
- VisualTreeUtils.cs
- XsltLibrary.cs
- RegexCharClass.cs
- DataGridBoolColumn.cs
- ForwardPositionQuery.cs
- UserNameSecurityToken.cs
- RadioButtonRenderer.cs
- RsaSecurityToken.cs
- SqlEnums.cs
- CompilerResults.cs
- TransformerTypeCollection.cs
- OleDbParameterCollection.cs
- InvalidBodyAccessException.cs
- HtmlInputImage.cs
- ListControl.cs
- FontStretches.cs
- HtmlButton.cs
- SafeCryptoKeyHandle.cs
- SQLResource.cs
- SpellCheck.cs