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
- UpDownEvent.cs
- ObjectDataProvider.cs
- ConstraintCollection.cs
- ZipPackage.cs
- SeekableReadStream.cs
- AdditionalEntityFunctions.cs
- Matrix3D.cs
- CellPartitioner.cs
- LocalizabilityAttribute.cs
- LinqExpressionNormalizer.cs
- ConfigXmlDocument.cs
- DbFunctionCommandTree.cs
- CustomCategoryAttribute.cs
- Size3D.cs
- EntitySet.cs
- XmlSubtreeReader.cs
- BamlLocalizer.cs
- SqlFlattener.cs
- StateMachine.cs
- RelationshipSet.cs
- InvokeProviderWrapper.cs
- CodeDirectiveCollection.cs
- XmlSerializationReader.cs
- Binding.cs
- ListViewItemEventArgs.cs
- StrokeNodeData.cs
- DoubleAnimationClockResource.cs
- DbConnectionPoolGroup.cs
- WebPartDeleteVerb.cs
- SafeNativeMethods.cs
- StylusButtonEventArgs.cs
- EdmFunctions.cs
- SearchExpression.cs
- BuildProviderCollection.cs
- DefaultValueTypeConverter.cs
- GraphicsPathIterator.cs
- DispatcherProcessingDisabled.cs
- TextRangeEditLists.cs
- _LocalDataStoreMgr.cs
- ScriptResourceInfo.cs
- DbConnectionClosed.cs
- GenerateScriptTypeAttribute.cs
- ActivityInstanceMap.cs
- EmptyControlCollection.cs
- TabItemWrapperAutomationPeer.cs
- GenerateHelper.cs
- CountdownEvent.cs
- LogSwitch.cs
- HtmlElementCollection.cs
- UserControlBuildProvider.cs
- counter.cs
- ConsoleCancelEventArgs.cs
- ValidatedControlConverter.cs
- DataGridViewCellCancelEventArgs.cs
- InstallerTypeAttribute.cs
- NotConverter.cs
- DecoderReplacementFallback.cs
- Queue.cs
- Stylesheet.cs
- IncrementalReadDecoders.cs
- ListItemCollection.cs
- CellRelation.cs
- EntitySqlQueryBuilder.cs
- XmlSchemaSet.cs
- AttributeQuery.cs
- TreeView.cs
- UnsafeNativeMethods.cs
- TemplatedWizardStep.cs
- XmlIlTypeHelper.cs
- StreamInfo.cs
- MemberCollection.cs
- BaseCodePageEncoding.cs
- AsyncCompletedEventArgs.cs
- X509Chain.cs
- TextTreeExtractElementUndoUnit.cs
- DecimalAverageAggregationOperator.cs
- Inline.cs
- _KerberosClient.cs
- PropertyGrid.cs
- SafeCryptoKeyHandle.cs
- IndicShape.cs
- propertyentry.cs
- LinqDataSourceDeleteEventArgs.cs
- DelegateBodyWriter.cs
- HasActivatableWorkflowEvent.cs
- ScriptBehaviorDescriptor.cs
- StructuralType.cs
- Timeline.cs
- PersonalizationStateInfoCollection.cs
- ProfileSettings.cs
- LineProperties.cs
- _Rfc2616CacheValidators.cs
- SubstitutionDesigner.cs
- MonthChangedEventArgs.cs
- DbExpressionBuilder.cs
- ITextView.cs
- DbInsertCommandTree.cs
- CodeCatchClause.cs
- GACIdentityPermission.cs
- LocationUpdates.cs