Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- SectionVisual.cs
- GroupBox.cs
- TableProviderWrapper.cs
- RemotingConfigParser.cs
- HashCodeCombiner.cs
- XmlHierarchicalDataSourceView.cs
- RtfControlWordInfo.cs
- TextFormatter.cs
- InputBuffer.cs
- AppDomainShutdownMonitor.cs
- DocumentProperties.cs
- BatchParser.cs
- NativeCppClassAttribute.cs
- UnsafeNetInfoNativeMethods.cs
- BindingNavigator.cs
- RepeaterItemCollection.cs
- VoiceSynthesis.cs
- QuaternionAnimationBase.cs
- HttpInputStream.cs
- ChannelManager.cs
- PropertyConverter.cs
- TextEditorMouse.cs
- FixedPosition.cs
- Calendar.cs
- DataObject.cs
- TextViewSelectionProcessor.cs
- DynamicILGenerator.cs
- PcmConverter.cs
- AmbientLight.cs
- AudioException.cs
- FilterableData.cs
- Fault.cs
- HostingEnvironmentSection.cs
- PartialCachingAttribute.cs
- TextBox.cs
- RepeatBehavior.cs
- UrlMappingsModule.cs
- BaseResourcesBuildProvider.cs
- CommaDelimitedStringAttributeCollectionConverter.cs
- ProcessInputEventArgs.cs
- Assert.cs
- WindowsButton.cs
- BindingGroup.cs
- LayoutEditorPart.cs
- CodeRemoveEventStatement.cs
- BrowserCapabilitiesFactoryBase.cs
- FileDialog_Vista.cs
- XmlQuerySequence.cs
- XmlSchemaSimpleTypeList.cs
- OdbcDataReader.cs
- StringUtil.cs
- FileSystemEventArgs.cs
- Polygon.cs
- CounterSetInstance.cs
- PropertyEmitterBase.cs
- _DigestClient.cs
- MaskedTextBox.cs
- PropertyInfoSet.cs
- IdnElement.cs
- CreateUserErrorEventArgs.cs
- TableLayoutSettingsTypeConverter.cs
- BaseParser.cs
- DownloadProgressEventArgs.cs
- WebPartDisplayMode.cs
- RegisteredScript.cs
- CompleteWizardStep.cs
- FacetDescriptionElement.cs
- GB18030Encoding.cs
- QueryOptionExpression.cs
- Image.cs
- SvcFileManager.cs
- DependentTransaction.cs
- ObjectQuery.cs
- SqlDuplicator.cs
- ParserContext.cs
- ContentPlaceHolder.cs
- CodeTypeMember.cs
- ReaderWriterLockSlim.cs
- XmlIlTypeHelper.cs
- DoubleCollectionConverter.cs
- ClientScriptManager.cs
- recordstatefactory.cs
- DocumentViewerAutomationPeer.cs
- ViewgenContext.cs
- GlyphShapingProperties.cs
- CodeObjectCreateExpression.cs
- GroupStyle.cs
- PortCache.cs
- SurrogateSelector.cs
- DataGridViewSortCompareEventArgs.cs
- StaticExtensionConverter.cs
- ExceptionHandler.cs
- EnumerableCollectionView.cs
- PersonalizationStateInfoCollection.cs
- WeakReferenceEnumerator.cs
- ThreadStateException.cs
- SourceLocation.cs
- SimpleWebHandlerParser.cs
- DictionaryCustomTypeDescriptor.cs
- KeyPressEvent.cs