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
- StrokeNodeEnumerator.cs
- WebServiceResponseDesigner.cs
- CSharpCodeProvider.cs
- TogglePattern.cs
- PersonalizationStateQuery.cs
- DBCSCodePageEncoding.cs
- VoiceObjectToken.cs
- BaseCollection.cs
- XmlDataSource.cs
- IndexOutOfRangeException.cs
- DataServiceProcessingPipelineEventArgs.cs
- DateTimePickerDesigner.cs
- HtmlAnchor.cs
- CacheHelper.cs
- RawStylusInputCustomDataList.cs
- HealthMonitoringSection.cs
- LocalizationComments.cs
- FixUpCollection.cs
- x509utils.cs
- VirtualPathProvider.cs
- NamespaceInfo.cs
- TableLayoutStyle.cs
- Authorization.cs
- TreeBuilder.cs
- XmlSchemaSimpleType.cs
- InvalidPrinterException.cs
- SiteMapSection.cs
- DataGridViewCellFormattingEventArgs.cs
- MonikerUtility.cs
- DataGridViewTextBoxCell.cs
- PieceNameHelper.cs
- FamilyTypeface.cs
- EncoderParameter.cs
- TerminatorSinks.cs
- InheritanceContextChangedEventManager.cs
- EntityRecordInfo.cs
- DeploymentExceptionMapper.cs
- XmlObjectSerializer.cs
- LinkDescriptor.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- FixedSOMFixedBlock.cs
- PackageProperties.cs
- WorkflowViewService.cs
- VScrollBar.cs
- ListViewTableCell.cs
- _RequestLifetimeSetter.cs
- mediaeventargs.cs
- KnownTypeDataContractResolver.cs
- CustomAttributeBuilder.cs
- TextRange.cs
- FixedSOMLineCollection.cs
- Completion.cs
- DataGridViewImageColumn.cs
- ArraySet.cs
- SamlSecurityToken.cs
- Sentence.cs
- AppSettingsSection.cs
- FontInfo.cs
- SerializationEventsCache.cs
- HtmlElementErrorEventArgs.cs
- MessageSecurityOverMsmq.cs
- StringAnimationUsingKeyFrames.cs
- ActiveDesignSurfaceEvent.cs
- QilInvokeEarlyBound.cs
- codemethodreferenceexpression.cs
- BufferAllocator.cs
- TextWriter.cs
- DirectoryNotFoundException.cs
- DebugHandleTracker.cs
- SoapAttributes.cs
- DataGridViewCheckBoxColumn.cs
- RoleService.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- SmiContext.cs
- ValueConversionAttribute.cs
- Graphics.cs
- DesignerPerfEventProvider.cs
- ISAPIApplicationHost.cs
- QueryCursorEventArgs.cs
- BuildManager.cs
- QuadTree.cs
- IProvider.cs
- TransactionBridge.cs
- TableItemPatternIdentifiers.cs
- WindowsStatic.cs
- ThreadExceptionDialog.cs
- Parallel.cs
- MimeTypeAttribute.cs
- Size3D.cs
- CodeArgumentReferenceExpression.cs
- DataSourceView.cs
- XmlDocumentFragment.cs
- ProjectionPath.cs
- ReflectionTypeLoadException.cs
- SmiEventSink_DeferedProcessing.cs
- UnsafeNativeMethods.cs
- WebPartDescriptionCollection.cs
- FocusChangedEventArgs.cs
- CodeValidator.cs
- CodeCompiler.cs