Code:
/ 4.0 / 4.0 / 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. //---------------------------------------------------------------------------- // // 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
- XmlEncodedRawTextWriter.cs
- BindableTemplateBuilder.cs
- SctClaimDictionary.cs
- ConnectionConsumerAttribute.cs
- UnmanagedMemoryStream.cs
- DefaultAutoFieldGenerator.cs
- Model3DCollection.cs
- SimpleMailWebEventProvider.cs
- ParseHttpDate.cs
- CustomWebEventKey.cs
- DebugViewWriter.cs
- XmlParser.cs
- ColorConvertedBitmap.cs
- CompleteWizardStep.cs
- Rfc2898DeriveBytes.cs
- SafeNativeMethodsMilCoreApi.cs
- XmlDigitalSignatureProcessor.cs
- Literal.cs
- ColorConvertedBitmapExtension.cs
- IgnoreFileBuildProvider.cs
- RTTrackingProfile.cs
- MonitorWrapper.cs
- LogConverter.cs
- WebBrowserUriTypeConverter.cs
- FunctionDetailsReader.cs
- TransactionalPackage.cs
- CodeTypeDelegate.cs
- MouseButton.cs
- DesignerCategoryAttribute.cs
- ObjectDataSourceView.cs
- ReaderWriterLock.cs
- SmiGettersStream.cs
- WebBrowsableAttribute.cs
- HtmlInputRadioButton.cs
- BezierSegment.cs
- DropDownButton.cs
- ReflectionHelper.cs
- FindCriteria11.cs
- Rectangle.cs
- StringBuilder.cs
- ObjectReaderCompiler.cs
- SqlCachedBuffer.cs
- VisualTreeHelper.cs
- GlyphCache.cs
- MruCache.cs
- Metafile.cs
- MailAddressCollection.cs
- ImageButton.cs
- ManagementObjectSearcher.cs
- PropertyTabAttribute.cs
- LocatorPart.cs
- SqlUserDefinedTypeAttribute.cs
- TypeHelper.cs
- StdValidatorsAndConverters.cs
- AuthenticationModulesSection.cs
- ApplicationInterop.cs
- TextTreeTextElementNode.cs
- UnsafeNativeMethods.cs
- HMACMD5.cs
- URLAttribute.cs
- AuthorizationRule.cs
- BooleanSwitch.cs
- DocumentGridContextMenu.cs
- ValidationError.cs
- LiteralTextContainerControlBuilder.cs
- BamlRecordWriter.cs
- DependencyPropertyKind.cs
- SwitchLevelAttribute.cs
- VisualBrush.cs
- OracleTimeSpan.cs
- TypeReference.cs
- HtmlWindowCollection.cs
- XmlSchemaFacet.cs
- IpcServerChannel.cs
- XmlElementCollection.cs
- UriScheme.cs
- SelectionWordBreaker.cs
- DataGridViewCheckBoxColumn.cs
- ColorPalette.cs
- HttpCookie.cs
- RouteItem.cs
- DBSchemaRow.cs
- DesignerAttribute.cs
- GridViewRowPresenterBase.cs
- DbBuffer.cs
- PeerToPeerException.cs
- AssemblyInfo.cs
- relpropertyhelper.cs
- PersonalizationEntry.cs
- Rules.cs
- PreviewPageInfo.cs
- DataGridViewCheckBoxColumn.cs
- UpdateExpressionVisitor.cs
- ConsumerConnectionPoint.cs
- RegexCharClass.cs
- DataColumnChangeEvent.cs
- SeparatorAutomationPeer.cs
- SchemaNames.cs
- TextProperties.cs
- ProgressBarAutomationPeer.cs