Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Documents / StaticTextPointer.cs / 1305600 / StaticTextPointer.cs
//---------------------------------------------------------------------------- // // File: StaticTextPointer.cs // // Copyright (C) Microsoft Corporation. All rights reserved. // // Description: Optimized minimal version of TextPointer that gets stored on the stack. // //--------------------------------------------------------------------------- namespace System.Windows.Documents { using System; using MS.Internal; using System.Threading; using System.Windows; using System.Collections; internal struct StaticTextPointer { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors internal StaticTextPointer(ITextContainer textContainer, object handle0) : this(textContainer, handle0, 0) { } internal StaticTextPointer(ITextContainer textContainer, object handle0, int handle1) { _textContainer = textContainer; _generation = (textContainer != null) ? textContainer.Generation : 0; _handle0 = handle0; _handle1 = handle1; } #endregion Constructors //------------------------------------------------------ // // Internal Methods // //----------------------------------------------------- #region Internal Methods internal ITextPointer CreateDynamicTextPointer(LogicalDirection direction) { AssertGeneration(); return _textContainer.CreateDynamicTextPointer(this, direction); } internal TextPointerContext GetPointerContext(LogicalDirection direction) { AssertGeneration(); return _textContainer.GetPointerContext(this, direction); } internal int GetOffsetToPosition(StaticTextPointer position) { AssertGeneration(); return _textContainer.GetOffsetToPosition(this, position); } internal int GetTextInRun(LogicalDirection direction, char[] textBuffer, int startIndex, int count) { AssertGeneration(); return _textContainer.GetTextInRun(this, direction, textBuffer, startIndex, count); } internal object GetAdjacentElement(LogicalDirection direction) { AssertGeneration(); return _textContainer.GetAdjacentElement(this, direction); } internal StaticTextPointer CreatePointer(int offset) { AssertGeneration(); return _textContainer.CreatePointer(this, offset); } internal StaticTextPointer GetNextContextPosition(LogicalDirection direction) { AssertGeneration(); return _textContainer.GetNextContextPosition(this, direction); } internal int CompareTo(StaticTextPointer position) { AssertGeneration(); return _textContainer.CompareTo(this, position); } internal int CompareTo(ITextPointer position) { AssertGeneration(); return _textContainer.CompareTo(this, position); } internal object GetValue(DependencyProperty formattingProperty) { AssertGeneration(); return _textContainer.GetValue(this, formattingProperty); } internal static StaticTextPointer Min(StaticTextPointer position1, StaticTextPointer position2) { position2.AssertGeneration(); return position1.CompareTo(position2) <= 0 ? position1 : position2; } internal static StaticTextPointer Max(StaticTextPointer position1, StaticTextPointer position2) { position2.AssertGeneration(); return position1.CompareTo(position2) >= 0 ? position1 : position2; } // Asserts this StaticTextPointer is synchronized to the current tree generation. internal void AssertGeneration() { if (_textContainer != null) { Invariant.Assert(_generation == _textContainer.Generation, "StaticTextPointer not synchronized to tree generation!"); } } #endregion Internal Methods //------------------------------------------------------ // // Internal Properties // //------------------------------------------------------ #region Internal Properties internal ITextContainer TextContainer { get { return _textContainer; } } internal DependencyObject Parent { get { return _textContainer.GetParent(this); } } internal bool IsNull { get { return (_textContainer == null); } } internal object Handle0 { get { return _handle0; } } internal int Handle1 { get { return _handle1; } } #endregion Internal Properties //----------------------------------------------------- // // Internal Fields // //------------------------------------------------------ #region Internal Fields internal static StaticTextPointer Null = new StaticTextPointer(null, null, 0); #endregion Internal Fields //----------------------------------------------------- // // Private Fields // //----------------------------------------------------- #region Private Fields private readonly ITextContainer _textContainer; private readonly uint _generation; private readonly object _handle0; private readonly int _handle1; #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
- MethodBody.cs
- EntityDataSourceWrapperPropertyDescriptor.cs
- AnnotationResourceChangedEventArgs.cs
- ConditionalAttribute.cs
- NullableBoolConverter.cs
- ResXFileRef.cs
- QilFactory.cs
- XsltFunctions.cs
- OutputCacheEntry.cs
- Root.cs
- Error.cs
- WmfPlaceableFileHeader.cs
- WebUtil.cs
- TextDecoration.cs
- HTTP_SERVICE_CONFIG_URLACL_PARAM.cs
- ListViewItem.cs
- SynchronizingStream.cs
- isolationinterop.cs
- IDictionary.cs
- WebControl.cs
- HostedBindingBehavior.cs
- HttpPostedFileBase.cs
- Vector3DKeyFrameCollection.cs
- FormViewPagerRow.cs
- RootBrowserWindowAutomationPeer.cs
- RectAnimationUsingKeyFrames.cs
- ComboBoxItem.cs
- ExpandSegment.cs
- SettingsPropertyNotFoundException.cs
- SharedMemory.cs
- SoapSchemaImporter.cs
- AsymmetricCryptoHandle.cs
- CodeDelegateInvokeExpression.cs
- Int32KeyFrameCollection.cs
- SubpageParaClient.cs
- StaticResourceExtension.cs
- DBConcurrencyException.cs
- Effect.cs
- WebPartDisplayModeEventArgs.cs
- CodeSubDirectoriesCollection.cs
- CTreeGenerator.cs
- IntegrationExceptionEventArgs.cs
- ReflectPropertyDescriptor.cs
- BufferBuilder.cs
- CfgRule.cs
- XmlNode.cs
- securitycriticaldataClass.cs
- MDIClient.cs
- HandledEventArgs.cs
- StyleXamlTreeBuilder.cs
- TimeSpanOrInfiniteValidator.cs
- SqlAggregateChecker.cs
- ColorMap.cs
- linebase.cs
- TransformDescriptor.cs
- ExtendedPropertyDescriptor.cs
- PriorityQueue.cs
- PinnedBufferMemoryStream.cs
- QuadraticBezierSegment.cs
- WriteStateInfoBase.cs
- TypeUsage.cs
- FormClosingEvent.cs
- CommonEndpointBehaviorElement.cs
- XmlSchemaSimpleContentRestriction.cs
- XmlNodeComparer.cs
- ColumnMapProcessor.cs
- MatrixAnimationBase.cs
- HostingPreferredMapPath.cs
- FlowLayout.cs
- ObjectReaderCompiler.cs
- DefaultValueMapping.cs
- SmtpAuthenticationManager.cs
- MarkerProperties.cs
- TiffBitmapDecoder.cs
- TabControlAutomationPeer.cs
- ProtectedUri.cs
- PropertyRecord.cs
- ServicePointManager.cs
- NavigationCommands.cs
- CapacityStreamGeometryContext.cs
- ShapeTypeface.cs
- MatrixTransform3D.cs
- Path.cs
- SchemaNamespaceManager.cs
- PropertyNames.cs
- PostBackOptions.cs
- OutOfMemoryException.cs
- XsdDuration.cs
- Size.cs
- ByeMessage11.cs
- SqlUtils.cs
- ClientViaElement.cs
- ChangeBlockUndoRecord.cs
- Wildcard.cs
- EntityDesignerUtils.cs
- HoistedLocals.cs
- XmlDataCollection.cs
- HtmlGenericControl.cs
- XsltConvert.cs
- Keyboard.cs