Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / MS / Internal / Shaping / GlyphingCache.cs / 1305600 / GlyphingCache.cs
//---------------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // Description: High level glyphing cache // // History: 5-19-2005 garyyang created // //--------------------------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using System.Globalization; using System.Windows.Media; using System.Windows.Media.TextFormatting; using MS.Internal; using MS.Internal.TextFormatting; namespace MS.Internal.Shaping { ////// GlyphingCache stores the runtime state of shaping engines and the mapping between Unicode scalar /// value and the physical font being used to display it. This class is not thread-safe. The client is /// responsible for synchronizing access from multiple threads. It is generally recommended that the client /// manages a single instance of this class per text formatting session. /// /// It currently only caches one key-value pair: /// o Typeface - TypefaceMap /// /// This pair is cached in SizeLimitedCache which implement LRU algorithm through /// a linked list. When cache is full, the least used entry in the cache will be replaced /// by the latest entry. /// internal class GlyphingCache { private SizeLimitedCache_sizeLimitedCache; internal GlyphingCache(int capacity) { _sizeLimitedCache = new SizeLimitedCache (capacity); } internal void GetShapeableText( Typeface typeface, CharacterBufferReference characterBufferReference, int stringLength, TextRunProperties textRunProperties, CultureInfo digitCulture, bool isRightToLeftParagraph, IList shapeableList, IShapeableTextCollector collector, TextFormattingMode textFormattingMode ) { if (!typeface.Symbol) { Lookup(typeface).GetShapeableText( characterBufferReference, stringLength, textRunProperties, digitCulture, isRightToLeftParagraph, shapeableList, collector, textFormattingMode ); } else { // It's a non-Unicode ("symbol") font, where code points have non-standard meanings. We // therefore want to bypass the usual itemization and font linking. Instead, just map // everything to the default script and first GlyphTypeface. ShapeTypeface shapeTypeface = new ShapeTypeface( typeface.TryGetGlyphTypeface(), null // device font ); collector.Add( shapeableList, new CharacterBufferRange(characterBufferReference, stringLength), textRunProperties, new MS.Internal.Text.TextInterface.ItemProps(), shapeTypeface, 1.0, // scale in Em false, // null shape textFormattingMode ); } } /// /// Look up the font mapping data for a typeface. /// private TypefaceMap Lookup(Typeface key) { TypefaceMap typefaceMap = _sizeLimitedCache.Get(key); if (typefaceMap == null) { typefaceMap = new TypefaceMap( key.FontFamily, key.FallbackFontFamily, key.CanonicalStyle, key.CanonicalWeight, key.CanonicalStretch, key.NullFont ); _sizeLimitedCache.Add( key, typefaceMap, false // is not permanent in the cache. ); } return typefaceMap; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XsltLoader.cs
- XmlJsonWriter.cs
- InstancePersistence.cs
- AssemblyInfo.cs
- ISFClipboardData.cs
- BooleanProjectedSlot.cs
- XmlAutoDetectWriter.cs
- CryptoApi.cs
- HtmlInputButton.cs
- ArrayWithOffset.cs
- DataBindingExpressionBuilder.cs
- MessageProtectionOrder.cs
- OLEDB_Util.cs
- RequestResizeEvent.cs
- OuterGlowBitmapEffect.cs
- ipaddressinformationcollection.cs
- ColumnBinding.cs
- CqlBlock.cs
- DataPagerCommandEventArgs.cs
- PanelStyle.cs
- TdsParser.cs
- AnimationClockResource.cs
- VBCodeProvider.cs
- HtmlFormParameterWriter.cs
- BidPrivateBase.cs
- SQLDecimalStorage.cs
- FatalException.cs
- Section.cs
- EvidenceTypeDescriptor.cs
- SecurityKeyIdentifierClause.cs
- IOThreadTimer.cs
- QilCloneVisitor.cs
- __Error.cs
- ObjectDataProvider.cs
- SchemaObjectWriter.cs
- BezierSegment.cs
- DataServiceContext.cs
- ConversionHelper.cs
- Privilege.cs
- WebRequestModuleElementCollection.cs
- ProxySimple.cs
- TextRangeProviderWrapper.cs
- CodePageEncoding.cs
- EndpointAddressMessageFilter.cs
- ToolstripProfessionalRenderer.cs
- GlyphRunDrawing.cs
- BindingValueChangedEventArgs.cs
- SafeNativeMethods.cs
- CipherData.cs
- mda.cs
- DynamicEntity.cs
- ProgressBar.cs
- ipaddressinformationcollection.cs
- ExpressionReplacer.cs
- dataprotectionpermission.cs
- ConfigurationPropertyAttribute.cs
- PropertyTabChangedEvent.cs
- PrintDialogException.cs
- DesignerSerializerAttribute.cs
- ObjectItemCachedAssemblyLoader.cs
- DebugView.cs
- HttpWebRequest.cs
- SamlEvidence.cs
- FileChangesMonitor.cs
- CompensatableSequenceActivity.cs
- RegexMatch.cs
- ThreadInterruptedException.cs
- ColorMatrix.cs
- SqlCacheDependencyDatabaseCollection.cs
- ButtonRenderer.cs
- Symbol.cs
- RadioButton.cs
- StaticContext.cs
- CacheVirtualItemsEvent.cs
- XmlHierarchicalEnumerable.cs
- DataTransferEventArgs.cs
- ObjectKeyFrameCollection.cs
- WorkflowMessageEventArgs.cs
- XmlSchemaDocumentation.cs
- SettingsPropertyWrongTypeException.cs
- TabletCollection.cs
- TypeConverterAttribute.cs
- CriticalFinalizerObject.cs
- SerializerWriterEventHandlers.cs
- SessionState.cs
- X509CertificateValidator.cs
- SystemKeyConverter.cs
- Win32SafeHandles.cs
- TreeBuilderXamlTranslator.cs
- FullTextLine.cs
- SafeCoTaskMem.cs
- RegexWriter.cs
- SqlFlattener.cs
- HotCommands.cs
- BaseResourcesBuildProvider.cs
- _NtlmClient.cs
- ZipIOLocalFileHeader.cs
- Pts.cs
- XmlWrappingWriter.cs
- OleDbConnectionInternal.cs