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
- ContourSegment.cs
- WindowsScrollBar.cs
- NullToBooleanConverter.cs
- DBSchemaRow.cs
- sqlstateclientmanager.cs
- XmlSchemaSimpleTypeUnion.cs
- CompoundFileReference.cs
- Clause.cs
- DataGridViewControlCollection.cs
- SynchronizedInputProviderWrapper.cs
- HttpInputStream.cs
- GeometryHitTestParameters.cs
- InstanceView.cs
- securitycriticaldata.cs
- SqlRemoveConstantOrderBy.cs
- OverlappedAsyncResult.cs
- AuthenticationSchemesHelper.cs
- ConnectionPoolManager.cs
- StateRuntime.cs
- ToolStripDropTargetManager.cs
- SqlRowUpdatedEvent.cs
- TextBoxDesigner.cs
- BaseTemplateCodeDomTreeGenerator.cs
- PropertyGridDesigner.cs
- PartManifestEntry.cs
- Binding.cs
- BamlLocalizableResourceKey.cs
- AspNetHostingPermission.cs
- activationcontext.cs
- LinkedResourceCollection.cs
- CoreChannel.cs
- HandlerMappingMemo.cs
- TransactionState.cs
- X509Utils.cs
- EventHandlersStore.cs
- XamlTemplateSerializer.cs
- ContainerParagraph.cs
- XmlDataSource.cs
- ServerValidateEventArgs.cs
- ExpressionBinding.cs
- Membership.cs
- UserUseLicenseDictionaryLoader.cs
- ProviderCommandInfoUtils.cs
- ValidationEventArgs.cs
- ParameterReplacerVisitor.cs
- CodeDefaultValueExpression.cs
- ConfigViewGenerator.cs
- XmlReflectionMember.cs
- WindowsScrollBarBits.cs
- Point3DKeyFrameCollection.cs
- XslException.cs
- RuleValidation.cs
- OracleEncoding.cs
- ChineseLunisolarCalendar.cs
- TableAdapterManagerNameHandler.cs
- GradientBrush.cs
- WindowsFont.cs
- RequestQueue.cs
- BindingExpressionBase.cs
- FontStretches.cs
- Utils.cs
- SecurityManager.cs
- ConsumerConnectionPoint.cs
- DataService.cs
- GroupItemAutomationPeer.cs
- HexParser.cs
- JpegBitmapDecoder.cs
- EdmMember.cs
- UnsafeNativeMethods.cs
- RuleProcessor.cs
- CompiledXpathExpr.cs
- XmlWrappingWriter.cs
- SectionVisual.cs
- Debug.cs
- KeyedHashAlgorithm.cs
- ImageInfo.cs
- ProtocolsSection.cs
- ReadingWritingEntityEventArgs.cs
- ExpressionEditor.cs
- OutputScopeManager.cs
- ClassDataContract.cs
- Boolean.cs
- DiscoveryMessageSequenceCD1.cs
- EdmMember.cs
- FocusManager.cs
- FrugalMap.cs
- SchemaImporterExtensionElement.cs
- ScrollItemPattern.cs
- DiscreteKeyFrames.cs
- HttpListener.cs
- EntityConnection.cs
- PersonalizationStateQuery.cs
- ConfigurationManagerInternalFactory.cs
- DataGridViewCellStyle.cs
- RadioButton.cs
- ResolvedKeyFrameEntry.cs
- ColumnWidthChangingEvent.cs
- ValueType.cs
- URLMembershipCondition.cs
- SystemEvents.cs