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
- Trace.cs
- RelationshipNavigation.cs
- DeflateStreamAsyncResult.cs
- WebPartVerb.cs
- HtmlEmptyTagControlBuilder.cs
- StylusSystemGestureEventArgs.cs
- StrongNamePublicKeyBlob.cs
- DataSetUtil.cs
- PlaceHolder.cs
- PersonalizableTypeEntry.cs
- PolyLineSegment.cs
- BitmapEncoder.cs
- TextServicesContext.cs
- RelationshipWrapper.cs
- HostProtectionException.cs
- SubstitutionList.cs
- TableItemProviderWrapper.cs
- LineSegment.cs
- ProxyWebPartConnectionCollection.cs
- KnownTypesProvider.cs
- TemplateControlCodeDomTreeGenerator.cs
- HttpListenerPrefixCollection.cs
- CounterSet.cs
- TemplateComponentConnector.cs
- Win32MouseDevice.cs
- CanonicalizationDriver.cs
- SqlBulkCopyColumnMapping.cs
- DesignSurfaceCollection.cs
- JsonMessageEncoderFactory.cs
- DataGridColumn.cs
- MethodExpr.cs
- _ConnectionGroup.cs
- FormatConvertedBitmap.cs
- RequestBringIntoViewEventArgs.cs
- TypeDelegator.cs
- ImageKeyConverter.cs
- DateTimeOffsetStorage.cs
- WindowHideOrCloseTracker.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- UrlMapping.cs
- QuaternionAnimation.cs
- WorkflowOperationErrorHandler.cs
- HttpHandlerActionCollection.cs
- ProfileManager.cs
- XmlAttributes.cs
- graph.cs
- UriParserTemplates.cs
- BinHexDecoder.cs
- Dispatcher.cs
- ToolStripTextBox.cs
- AmbientLight.cs
- MulticastIPAddressInformationCollection.cs
- SiteMembershipCondition.cs
- NullRuntimeConfig.cs
- Int16.cs
- SqlBuffer.cs
- COM2TypeInfoProcessor.cs
- TextRangeBase.cs
- RightNameExpirationInfoPair.cs
- SimpleMailWebEventProvider.cs
- SkinBuilder.cs
- IisTraceWebEventProvider.cs
- EntityStoreSchemaFilterEntry.cs
- QueryValue.cs
- ImageAttributes.cs
- WrappedIUnknown.cs
- HtmlWindow.cs
- XmlDocumentFragment.cs
- TypeHelper.cs
- WebPartEditorOkVerb.cs
- ConstrainedDataObject.cs
- _SafeNetHandles.cs
- DateTimeConstantAttribute.cs
- TouchEventArgs.cs
- FreeFormDragDropManager.cs
- D3DImage.cs
- UpDownEvent.cs
- RoleGroupCollection.cs
- CSharpCodeProvider.cs
- Int32Animation.cs
- InheritanceAttribute.cs
- SourceLineInfo.cs
- ArraySet.cs
- WebControl.cs
- PaperSize.cs
- ConstraintStruct.cs
- DispatcherExceptionEventArgs.cs
- EntityDataReader.cs
- SignatureHelper.cs
- SerializationHelper.cs
- SchemaType.cs
- UInt16Storage.cs
- XmlReflectionMember.cs
- DependencyPropertyChangedEventArgs.cs
- InputMethodStateTypeInfo.cs
- DataContractSerializer.cs
- PrivilegeNotHeldException.cs
- SmtpCommands.cs
- TextTreeExtractElementUndoUnit.cs
- SymmetricAlgorithm.cs