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
- PackageDocument.cs
- MarkupExtensionParser.cs
- StrokeSerializer.cs
- MemberAssignmentAnalysis.cs
- StorageBasedPackageProperties.cs
- Signature.cs
- XPathNodeInfoAtom.cs
- RectConverter.cs
- PropertyTabAttribute.cs
- TextWriterTraceListener.cs
- IPAddressCollection.cs
- TypeExtensionConverter.cs
- XmlComplianceUtil.cs
- Listen.cs
- ResourceWriter.cs
- List.cs
- formatter.cs
- HttpCacheVaryByContentEncodings.cs
- ExtendedPropertyDescriptor.cs
- Types.cs
- ConfigUtil.cs
- DataServiceException.cs
- WindowsAuthenticationModule.cs
- UITypeEditor.cs
- _LocalDataStoreMgr.cs
- HttpVersion.cs
- SystemResourceHost.cs
- StopStoryboard.cs
- OleDbConnectionInternal.cs
- SQLInt64.cs
- StateRuntime.cs
- TailCallAnalyzer.cs
- AttachmentCollection.cs
- XmlDocumentSerializer.cs
- ControlCollection.cs
- SqlDataSourceFilteringEventArgs.cs
- JapaneseLunisolarCalendar.cs
- KnownTypesHelper.cs
- Int32Rect.cs
- ObjectStateManager.cs
- SqlGenericUtil.cs
- Cursors.cs
- DesignerValidatorAdapter.cs
- Int16Storage.cs
- XmlQualifiedNameTest.cs
- CharUnicodeInfo.cs
- MouseOverProperty.cs
- EmptyReadOnlyDictionaryInternal.cs
- ProtocolsConfigurationHandler.cs
- CaseInsensitiveHashCodeProvider.cs
- XamlHostingConfiguration.cs
- CompressionTransform.cs
- ArrayConverter.cs
- ProxyAttribute.cs
- Stylesheet.cs
- ControlCollection.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- RootNamespaceAttribute.cs
- SqlCommandBuilder.cs
- LogLogRecord.cs
- BinaryReader.cs
- AdRotatorDesigner.cs
- ManagementDateTime.cs
- SessionState.cs
- TextTreeRootNode.cs
- View.cs
- CodeMethodReturnStatement.cs
- FontDriver.cs
- ProbeDuplexCD1AsyncResult.cs
- TableCellsCollectionEditor.cs
- DesignTimeTemplateParser.cs
- CanonicalFontFamilyReference.cs
- XslAstAnalyzer.cs
- ParallelQuery.cs
- ProxySimple.cs
- NativeRightsManagementAPIsStructures.cs
- DataObject.cs
- CompilationUtil.cs
- CqlLexer.cs
- DESCryptoServiceProvider.cs
- ResourceAttributes.cs
- Parsers.cs
- XamlSerializationHelper.cs
- HttpRawResponse.cs
- UniformGrid.cs
- ADMembershipProvider.cs
- QilLiteral.cs
- WSFederationHttpSecurityMode.cs
- DrawingContext.cs
- ContextItem.cs
- ContentDisposition.cs
- ObjectListGeneralPage.cs
- MimePart.cs
- NativeCppClassAttribute.cs
- ObjectDataSourceStatusEventArgs.cs
- PolyQuadraticBezierSegment.cs
- ThreadNeutralSemaphore.cs
- MimeParameter.cs
- BaseAutoFormat.cs
- ChangePassword.cs