Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Misc / GDI / DeviceContexts.cs / 3 / DeviceContexts.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- #if WGCM_TEST_SUITE // Enable tracking when built for the test suites. #define TRACK_HDC #define GDI_FONT_CACHE_TRACK #endif #if WINFORMS_NAMESPACE namespace System.Windows.Forms.Internal #elif DRAWING_NAMESPACE namespace System.Drawing.Internal #else namespace System.Experimental.Gdi #endif { using System; using System.Collections.Generic; using System.Internal; using System.Diagnostics; using System.Drawing; using System.Threading; using Microsoft.Win32; ////// Keeps a cache of some graphics primitives. /// Created to improve performance of TextRenderer.MeasureText methods that don't receive a WindowsGraphics. /// This class mantains a cache of MRU WindowsFont objects in the process. (See VSWhidbey#301492). /// #if WINFORMS_PUBLIC_GRAPHICS_LIBRARY public #else internal #endif static class DeviceContexts { [ThreadStatic] private static ClientUtils.WeakRefCollection activeDeviceContexts; ////// WindowsGraphicsCacheManager needs to track DeviceContext /// objects so it can ask them if a font is in use before they /// it's deleted. internal static void AddDeviceContext(DeviceContext dc) { if (activeDeviceContexts == null) { activeDeviceContexts = new ClientUtils.WeakRefCollection(); activeDeviceContexts.RefCheckThreshold = 20; // See DevDiv#82664 (the repro app attached to this bug was used to determine this number). } if (!activeDeviceContexts.Contains(dc)) { activeDeviceContexts.Add(dc); } } internal static void RemoveDeviceContext(DeviceContext dc) { if (activeDeviceContexts == null) { return; } activeDeviceContexts.RemoveByHashCode(dc); } #if !DRAWING_NAMESPACE internal static bool IsFontInUse(WindowsFont wf) { if (wf == null) { return false; } for (int i = 0; i < activeDeviceContexts.Count; i++) { DeviceContext dc = activeDeviceContexts[i] as DeviceContext; if (dc != null && (dc.ActiveFont == wf || dc.IsFontOnContextStack(wf))) { return true; } } return false; } #endif } } // 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
- TextFormatter.cs
- NativeMethods.cs
- CompositeKey.cs
- EventMappingSettings.cs
- Button.cs
- ObjectView.cs
- UserInitiatedNavigationPermission.cs
- ProfileParameter.cs
- WebDisplayNameAttribute.cs
- BitmapCacheBrush.cs
- CellRelation.cs
- SyntaxCheck.cs
- AxHost.cs
- WindowsTitleBar.cs
- AstNode.cs
- Vector3DAnimation.cs
- PropertyRecord.cs
- IPGlobalProperties.cs
- SQLBytesStorage.cs
- CodeArgumentReferenceExpression.cs
- HttpClientProtocol.cs
- XPathNavigator.cs
- Application.cs
- XhtmlBasicImageAdapter.cs
- TTSEngineTypes.cs
- ProgressChangedEventArgs.cs
- TextContainerChangedEventArgs.cs
- DocumentApplicationDocumentViewer.cs
- DiscoveryClientRequestChannel.cs
- DataService.cs
- AssociationSetMetadata.cs
- OletxTransactionManager.cs
- METAHEADER.cs
- DataColumn.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- Configuration.cs
- DbConnectionPoolIdentity.cs
- FixedSOMLineRanges.cs
- cookieexception.cs
- WrapPanel.cs
- NavigationService.cs
- ObjectHandle.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- DelegatingTypeDescriptionProvider.cs
- DiscoveryEndpointValidator.cs
- BitmapDownload.cs
- CallbackHandler.cs
- MembershipSection.cs
- HttpWebResponse.cs
- RegionData.cs
- WindowsListViewItem.cs
- WebPartTransformerCollection.cs
- RoutingEndpointTrait.cs
- querybuilder.cs
- DependencyObject.cs
- BaseCollection.cs
- InvokePattern.cs
- MailWriter.cs
- BmpBitmapDecoder.cs
- ComponentEditorPage.cs
- AssemblyBuilder.cs
- XmlILModule.cs
- StringKeyFrameCollection.cs
- GenericRootAutomationPeer.cs
- QueryOperatorEnumerator.cs
- TemplatedMailWebEventProvider.cs
- MenuStrip.cs
- ChannelPool.cs
- PartEditor.cs
- UIElementPropertyUndoUnit.cs
- CngProperty.cs
- InternalEnumValidatorAttribute.cs
- OneOf.cs
- ImageMetadata.cs
- FixedStringLookup.cs
- TypeBuilderInstantiation.cs
- NumericUpDown.cs
- TableLayoutPanel.cs
- Trace.cs
- ExpressionCopier.cs
- InstanceDataCollectionCollection.cs
- ProvideValueServiceProvider.cs
- DataGridViewComponentPropertyGridSite.cs
- NetworkInformationPermission.cs
- PenContext.cs
- ArgumentOutOfRangeException.cs
- SqlDataAdapter.cs
- PageStatePersister.cs
- TextServicesContext.cs
- BitmapFrameEncode.cs
- ServiceContractGenerator.cs
- ProvideValueServiceProvider.cs
- SessionPageStatePersister.cs
- URL.cs
- DbConnectionPoolIdentity.cs
- DataServiceException.cs
- RefreshPropertiesAttribute.cs
- OpenTypeLayoutCache.cs
- JournalEntryListConverter.cs
- Predicate.cs