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
- ProviderConnectionPointCollection.cs
- ZoneMembershipCondition.cs
- Blend.cs
- ZoneButton.cs
- XamlToRtfParser.cs
- ContextStack.cs
- TextSelectionHighlightLayer.cs
- RequiredFieldValidator.cs
- CheckPair.cs
- InvalidOperationException.cs
- XmlByteStreamReader.cs
- UrlParameterWriter.cs
- XmlAttributeProperties.cs
- SettingsBindableAttribute.cs
- SetStateDesigner.cs
- ReferenceService.cs
- ThreadExceptionEvent.cs
- Rect.cs
- XmlReaderSettings.cs
- ResourcePool.cs
- Literal.cs
- InputLanguageProfileNotifySink.cs
- KeyMatchBuilder.cs
- Conditional.cs
- X509Utils.cs
- DataControlHelper.cs
- ButtonPopupAdapter.cs
- Operand.cs
- PageHandlerFactory.cs
- RoleBoolean.cs
- SiteMapDataSourceView.cs
- ResolveResponseInfo.cs
- UrlMappingsModule.cs
- DataSourceProvider.cs
- EntityDataSourceDataSelectionPanel.cs
- RootAction.cs
- TextRangeSerialization.cs
- TreeNodeCollection.cs
- LinqDataSourceHelper.cs
- DrawListViewItemEventArgs.cs
- NameValuePair.cs
- HostedImpersonationContext.cs
- UnsafeNativeMethods.cs
- TraceHelpers.cs
- DLinqColumnProvider.cs
- SafeSecurityHandles.cs
- StartUpEventArgs.cs
- AtomicFile.cs
- PageRequestManager.cs
- CapacityStreamGeometryContext.cs
- EdmScalarPropertyAttribute.cs
- BoundField.cs
- VariableExpressionConverter.cs
- DataGridViewCellValidatingEventArgs.cs
- AliasGenerator.cs
- HandleCollector.cs
- PersistenceTypeAttribute.cs
- WsdlExporter.cs
- ProjectionCamera.cs
- ConditionalAttribute.cs
- VisualProxy.cs
- PolyLineSegment.cs
- CollectionViewGroup.cs
- MouseButton.cs
- OpenFileDialog.cs
- DocumentViewerAutomationPeer.cs
- PhysicalAddress.cs
- RowUpdatedEventArgs.cs
- CriticalHandle.cs
- EnvironmentPermission.cs
- MDIControlStrip.cs
- TakeQueryOptionExpression.cs
- XsltInput.cs
- StreamGeometry.cs
- TraceEventCache.cs
- ExpressionVisitor.cs
- GenericWebPart.cs
- CultureInfo.cs
- ProgressBar.cs
- XamlParser.cs
- DataGridViewCellMouseEventArgs.cs
- PasswordBoxAutomationPeer.cs
- WindowsAltTab.cs
- ListViewAutomationPeer.cs
- DBPropSet.cs
- DBSqlParser.cs
- SoapEnumAttribute.cs
- DelegatingHeader.cs
- FtpWebResponse.cs
- BaseParser.cs
- UnmanagedMarshal.cs
- Tablet.cs
- StringComparer.cs
- RouteParser.cs
- PartManifestEntry.cs
- SingleStorage.cs
- DataServiceKeyAttribute.cs
- AttachedAnnotationChangedEventArgs.cs
- ToolStripSettings.cs
- XmlSerializerNamespaces.cs