Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- HttpHandlerAction.cs
- ActivityPreviewDesigner.cs
- WebPartTransformer.cs
- __TransparentProxy.cs
- ComponentChangedEvent.cs
- JsonReaderWriterFactory.cs
- WebPartCollection.cs
- TypeUtils.cs
- XmlSchemaSimpleContent.cs
- EntityModelBuildProvider.cs
- MembershipUser.cs
- SerialReceived.cs
- FixedSOMGroup.cs
- WSSecurityXXX2005.cs
- EditingCommands.cs
- FormViewUpdateEventArgs.cs
- EventProviderWriter.cs
- RequestSecurityToken.cs
- CopyAttributesAction.cs
- InstanceKeyNotReadyException.cs
- ValidationRuleCollection.cs
- CounterCreationDataCollection.cs
- PermissionRequestEvidence.cs
- EdmRelationshipRoleAttribute.cs
- DataSourceView.cs
- ListControl.cs
- SimpleColumnProvider.cs
- MarkupProperty.cs
- LightweightEntityWrapper.cs
- X509CertificateCollection.cs
- ArrayElementGridEntry.cs
- HttpListenerException.cs
- DataBoundLiteralControl.cs
- ProfileParameter.cs
- HttpMethodConstraint.cs
- ListItem.cs
- XmlSerializerVersionAttribute.cs
- XmlSequenceWriter.cs
- handlecollector.cs
- Misc.cs
- DesignTimeHTMLTextWriter.cs
- Compensate.cs
- Parallel.cs
- DataViewManager.cs
- CorrelationToken.cs
- SubclassTypeValidatorAttribute.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- HttpsChannelFactory.cs
- Decimal.cs
- TransformedBitmap.cs
- SimpleTypeResolver.cs
- MailHeaderInfo.cs
- CharEnumerator.cs
- XmlArrayItemAttributes.cs
- HotSpotCollection.cs
- DbBuffer.cs
- BoundField.cs
- PageThemeParser.cs
- DeploymentExceptionMapper.cs
- QueryableDataSource.cs
- PointKeyFrameCollection.cs
- HttpHandlersSection.cs
- ObjectRef.cs
- Currency.cs
- typedescriptorpermission.cs
- CheckBox.cs
- IRCollection.cs
- ElementsClipboardData.cs
- ColorConverter.cs
- altserialization.cs
- BrowserCapabilitiesFactoryBase.cs
- DbMetaDataCollectionNames.cs
- DmlSqlGenerator.cs
- WebServiceBindingAttribute.cs
- TypeConverterAttribute.cs
- CodeNamespace.cs
- FixedPageStructure.cs
- UICuesEvent.cs
- DependencyObject.cs
- PkcsMisc.cs
- WebHttpSecurityModeHelper.cs
- PageSetupDialog.cs
- WebRequestModuleElementCollection.cs
- DetailsViewInsertedEventArgs.cs
- ComponentSerializationService.cs
- JumpPath.cs
- SqlMethodAttribute.cs
- SqlBulkCopy.cs
- ConversionValidationRule.cs
- Hash.cs
- sqlmetadatafactory.cs
- BindableTemplateBuilder.cs
- DataGridViewRowEventArgs.cs
- DeclarativeCatalogPartDesigner.cs
- QueuePathDialog.cs
- SqlDataSource.cs
- Parallel.cs
- WebPartTransformerCollection.cs
- DataGridViewElement.cs
- TypedTableBaseExtensions.cs