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
- WindowsSolidBrush.cs
- DbSource.cs
- SortKey.cs
- IntegrationExceptionEventArgs.cs
- SecurityAccessDeniedException.cs
- HtmlTableCellCollection.cs
- Int64.cs
- RegistryKey.cs
- DataGridViewCheckBoxColumn.cs
- Pair.cs
- ObjectSet.cs
- ParserStreamGeometryContext.cs
- MenuItemStyle.cs
- SafeRegistryHandle.cs
- _OverlappedAsyncResult.cs
- CreateUserWizardStep.cs
- KeyEvent.cs
- ViewCellRelation.cs
- CmsUtils.cs
- ExtensionFile.cs
- TargetFrameworkAttribute.cs
- TextTreeNode.cs
- metadatamappinghashervisitor.cs
- ObjectDataSourceStatusEventArgs.cs
- CrossSiteScriptingValidation.cs
- BaseDataBoundControl.cs
- __Error.cs
- DataMemberListEditor.cs
- EnumMember.cs
- DataTableMappingCollection.cs
- SchemaObjectWriter.cs
- Win32Native.cs
- XmlAttributeAttribute.cs
- EntityDataSourceContainerNameConverter.cs
- XmlStreamNodeWriter.cs
- BoundingRectTracker.cs
- TextBlock.cs
- DataGridTextBoxColumn.cs
- DataListItemCollection.cs
- NavigationHelper.cs
- IISMapPath.cs
- TextSchema.cs
- ContextProperty.cs
- Durable.cs
- ArgumentOutOfRangeException.cs
- SystemInfo.cs
- SHA384Managed.cs
- SqlTopReducer.cs
- FileDialog.cs
- PageCodeDomTreeGenerator.cs
- StreamUpdate.cs
- ProfileParameter.cs
- Attachment.cs
- TypeUtils.cs
- PropertyInfoSet.cs
- TemplateEditingService.cs
- FontFamilyValueSerializer.cs
- TextSelection.cs
- SafeEventLogReadHandle.cs
- Permission.cs
- WebPartZoneDesigner.cs
- SqlLiftIndependentRowExpressions.cs
- CorrelationToken.cs
- SerializationEventsCache.cs
- MimeObjectFactory.cs
- TextCollapsingProperties.cs
- SID.cs
- RoleService.cs
- SimpleHandlerFactory.cs
- TypeCodeDomSerializer.cs
- DoubleLink.cs
- ImmutableCollection.cs
- XmlReaderDelegator.cs
- WebPartConnectVerb.cs
- EdgeModeValidation.cs
- PropertyGridEditorPart.cs
- XmlSerializerAssemblyAttribute.cs
- __Error.cs
- HtmlLink.cs
- ThreadExceptionEvent.cs
- DiscoveryVersionConverter.cs
- DocumentSequenceHighlightLayer.cs
- WebHeaderCollection.cs
- DispatchOperation.cs
- DataListItemCollection.cs
- CustomAttributeSerializer.cs
- PropertyGrid.cs
- EastAsianLunisolarCalendar.cs
- CapabilitiesSection.cs
- CompilerTypeWithParams.cs
- AsyncResult.cs
- DataGridColumn.cs
- XPathDocumentNavigator.cs
- FormViewDeletedEventArgs.cs
- InvalidEnumArgumentException.cs
- XmlEntityReference.cs
- XmlIgnoreAttribute.cs
- NavigationHelper.cs
- BamlLocalizableResource.cs
- OdbcError.cs