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
- XappLauncher.cs
- WorkflowInstanceAbortedRecord.cs
- OrthographicCamera.cs
- VirtualizingStackPanel.cs
- TextEditor.cs
- PixelShader.cs
- WebPartExportVerb.cs
- X509UI.cs
- SelectedCellsChangedEventArgs.cs
- ControlEvent.cs
- Int32CollectionValueSerializer.cs
- ClientSettingsStore.cs
- AlternationConverter.cs
- ExpressionEvaluator.cs
- TypeToken.cs
- EventProvider.cs
- TableSectionStyle.cs
- ServiceModelEnhancedConfigurationElementCollection.cs
- XslException.cs
- JoinElimination.cs
- RotationValidation.cs
- ToolStripItem.cs
- OracleRowUpdatingEventArgs.cs
- DataKeyArray.cs
- SplineKeyFrames.cs
- ListBindableAttribute.cs
- ChangeConflicts.cs
- Brush.cs
- TypefaceMetricsCache.cs
- WindowsListViewGroupSubsetLink.cs
- Debug.cs
- WebPartVerb.cs
- FunctionMappingTranslator.cs
- WindowInteropHelper.cs
- GradientStopCollection.cs
- SelectedDatesCollection.cs
- RectAnimation.cs
- TriggerCollection.cs
- UDPClient.cs
- StateMachineHelpers.cs
- DataSourceXmlAttributeAttribute.cs
- HtmlHead.cs
- CancelEventArgs.cs
- LoopExpression.cs
- WhitespaceRuleReader.cs
- SystemColors.cs
- QuadraticBezierSegment.cs
- WebService.cs
- ObjectIDGenerator.cs
- TypeInitializationException.cs
- Odbc32.cs
- WebColorConverter.cs
- WebConvert.cs
- SqlWorkflowInstanceStore.cs
- x509store.cs
- SafeNativeMethods.cs
- Primitive.cs
- webeventbuffer.cs
- RecognizedWordUnit.cs
- ClaimSet.cs
- WriteTimeStream.cs
- SystemEvents.cs
- HtmlHistory.cs
- PrimitiveXmlSerializers.cs
- Vector.cs
- PerformanceCountersElement.cs
- SettingsProviderCollection.cs
- HiddenField.cs
- MetricEntry.cs
- DateTimeOffsetAdapter.cs
- PlanCompiler.cs
- TextElementCollection.cs
- DrawingGroup.cs
- StreamMarshaler.cs
- HWStack.cs
- WorkflowInstanceExtensionManager.cs
- ResourceContainer.cs
- Parameter.cs
- URLMembershipCondition.cs
- Tokenizer.cs
- HuffCodec.cs
- OracleConnection.cs
- WebPartDescriptionCollection.cs
- BaseCAMarshaler.cs
- UIElementHelper.cs
- HttpCapabilitiesBase.cs
- FileLevelControlBuilderAttribute.cs
- StandardCommandToolStripMenuItem.cs
- ValueExpressions.cs
- BindingNavigator.cs
- LinkUtilities.cs
- UnsafeNativeMethods.cs
- WeakReference.cs
- CompoundFileStreamReference.cs
- Operators.cs
- KnownIds.cs
- RegistrySecurity.cs
- SystemWebSectionGroup.cs
- CommandHelpers.cs
- ArraySegment.cs