Code:
/ 4.0 / 4.0 / 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. //---------------------------------------------------------------------------- // // 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
- HMACSHA384.cs
- OLEDB_Enum.cs
- DeclaredTypeValidatorAttribute.cs
- DataPagerField.cs
- XmlNodeList.cs
- CookielessData.cs
- AspNetHostingPermission.cs
- ApplicationHost.cs
- WindowHideOrCloseTracker.cs
- XMLUtil.cs
- CombinedGeometry.cs
- Font.cs
- ISessionStateStore.cs
- SqlBooleanizer.cs
- ByteStreamMessageEncodingElement.cs
- TrackingProvider.cs
- SignatureHelper.cs
- RSAOAEPKeyExchangeDeformatter.cs
- SHA512Managed.cs
- CodeMethodReturnStatement.cs
- BufferedReadStream.cs
- IsolatedStoragePermission.cs
- SQLBoolean.cs
- SoundPlayer.cs
- ModelTreeEnumerator.cs
- DataGridItemEventArgs.cs
- storepermission.cs
- AssertSection.cs
- SymbolResolver.cs
- EnvironmentPermission.cs
- RegexFCD.cs
- SplineQuaternionKeyFrame.cs
- XmlSchemaSimpleTypeRestriction.cs
- AvTrace.cs
- AppDomainAttributes.cs
- InputProcessorProfilesLoader.cs
- SqlDataSourceCache.cs
- DataKey.cs
- CLSCompliantAttribute.cs
- PartBasedPackageProperties.cs
- Divide.cs
- Int64.cs
- ExceptionRoutedEventArgs.cs
- CodeRegionDirective.cs
- Message.cs
- BuildProvider.cs
- IpcChannelHelper.cs
- AsyncStreamReader.cs
- Utils.cs
- HostedHttpTransportManager.cs
- FileDialog_Vista.cs
- PropertyChangedEventManager.cs
- BlockExpression.cs
- AsnEncodedData.cs
- DynamicArgumentDialog.cs
- Table.cs
- Helpers.cs
- UnsafePeerToPeerMethods.cs
- QuaternionKeyFrameCollection.cs
- TypeEnumerableViewSchema.cs
- BuilderPropertyEntry.cs
- DbQueryCommandTree.cs
- EmbossBitmapEffect.cs
- VectorCollectionConverter.cs
- TreeNode.cs
- WebMessageBodyStyleHelper.cs
- XmlQueryRuntime.cs
- MSG.cs
- ClientRuntimeConfig.cs
- GridItemPatternIdentifiers.cs
- _Connection.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- HeaderPanel.cs
- WorkflowInstanceContextProvider.cs
- TextTreeDeleteContentUndoUnit.cs
- LocatorPart.cs
- ImageDrawing.cs
- GlyphingCache.cs
- SystemWebSectionGroup.cs
- HtmlInputImage.cs
- Icon.cs
- ImageField.cs
- CTreeGenerator.cs
- SetStoryboardSpeedRatio.cs
- ping.cs
- NetworkStream.cs
- Brush.cs
- MaxMessageSizeStream.cs
- ListViewGroup.cs
- Console.cs
- EndpointAddressAugust2004.cs
- XmlNodeReader.cs
- StyleModeStack.cs
- WrappedIUnknown.cs
- TextServicesContext.cs
- StringResourceManager.cs
- SourceElementsCollection.cs
- SystemWebExtensionsSectionGroup.cs
- WebBrowserEvent.cs
- DragEvent.cs