Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- basevalidator.cs
- InputReport.cs
- Font.cs
- GridViewRow.cs
- ChameleonKey.cs
- adornercollection.cs
- DataGridParentRows.cs
- PathParser.cs
- RowsCopiedEventArgs.cs
- XamlReader.cs
- HandleCollector.cs
- RemotingConfigParser.cs
- DataPointer.cs
- SignedPkcs7.cs
- DataGridAutoFormatDialog.cs
- IIS7UserPrincipal.cs
- ScrollEvent.cs
- AuthorizationSection.cs
- RoutedUICommand.cs
- TextBoxRenderer.cs
- BaseInfoTable.cs
- PhysicalOps.cs
- XmlSchemaAnnotated.cs
- SecurityDescriptor.cs
- IImplicitResourceProvider.cs
- MemberPath.cs
- HtmlLabelAdapter.cs
- TreeViewImageIndexConverter.cs
- ComplexLine.cs
- ApplicationId.cs
- WindowsAuthenticationModule.cs
- DetailsView.cs
- XmlHierarchicalEnumerable.cs
- x509store.cs
- ToolStripControlHost.cs
- TypeBuilder.cs
- DragCompletedEventArgs.cs
- WebServicesInteroperability.cs
- TemplateKey.cs
- ServiceEndpointElement.cs
- FlowDocument.cs
- MenuItemAutomationPeer.cs
- DataBindingCollection.cs
- Calendar.cs
- SQLInt64Storage.cs
- SchemaType.cs
- ArgumentValueSerializer.cs
- XmlILTrace.cs
- DebuggerAttributes.cs
- OpCopier.cs
- ListControlConvertEventArgs.cs
- MeasureData.cs
- UseLicense.cs
- HatchBrush.cs
- MimeReflector.cs
- ResXFileRef.cs
- DataGridColumn.cs
- Trace.cs
- EditingMode.cs
- ColumnMapVisitor.cs
- XmlCharCheckingReader.cs
- ObjectToken.cs
- VariantWrapper.cs
- FontDialog.cs
- SortDescription.cs
- DataGridViewCheckBoxColumn.cs
- dataprotectionpermissionattribute.cs
- TextTreePropertyUndoUnit.cs
- Propagator.JoinPropagator.cs
- DefaultPrintController.cs
- OleDbException.cs
- SourceLineInfo.cs
- DesignBindingConverter.cs
- ModulesEntry.cs
- Math.cs
- DaylightTime.cs
- TextBlockAutomationPeer.cs
- EventProxy.cs
- IPGlobalProperties.cs
- FixedBufferAttribute.cs
- MappingModelBuildProvider.cs
- EventsTab.cs
- SHA1Managed.cs
- ProtocolState.cs
- PropertyPathConverter.cs
- SudsParser.cs
- SizeAnimation.cs
- TableLayoutPanelCellPosition.cs
- TreeViewImageIndexConverter.cs
- RSATokenProvider.cs
- DateRangeEvent.cs
- TextOptionsInternal.cs
- ChannelSinkStacks.cs
- KoreanCalendar.cs
- PeerCollaboration.cs
- CodeAccessSecurityEngine.cs
- Cursor.cs
- OSFeature.cs
- AppliedDeviceFiltersEditor.cs
- WinFormsSecurity.cs