Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / MS / Internal / Shaping / ShapeTypeface.cs / 1305600 / ShapeTypeface.cs
//------------------------------------------------------------------------ // // Microsoft Windows Client Platform // Copyright (C) Microsoft Corporation, 2002 // // File: ShapeTypeface.cs // // Contents: GlyphTypeface with shaping capability // // Created: 10-13-2003 Worachai Chaoweeraprasit (wchao) // //----------------------------------------------------------------------- using System; using System.Runtime.InteropServices; using System.Collections; using System.Collections.Generic; using System.Globalization; using System.Diagnostics; using System.Security; using System.Windows; using System.Windows.Media; using System.Windows.Media.TextFormatting; using MS.Utility; using MS.Internal; using MS.Internal.FontCache; using MS.Internal.FontFace; using MS.Internal.TextFormatting; using FontFace = MS.Internal.FontFace; namespace MS.Internal.Shaping { ////// Typeface that is capable of shaping character string. Shaping is done /// thru shaping engines. /// internal class ShapeTypeface { private GlyphTypeface _glyphTypeface; private IDeviceFont _deviceFont; internal ShapeTypeface( GlyphTypeface glyphTypeface, IDeviceFont deviceFont ) { Invariant.Assert(glyphTypeface != null); _glyphTypeface = glyphTypeface; _deviceFont = deviceFont; } public override int GetHashCode() { return HashFn.HashMultiply(_glyphTypeface.GetHashCode()) + (_deviceFont == null ? 0 : _deviceFont.Name.GetHashCode()); } public override bool Equals(object o) { ShapeTypeface t = o as ShapeTypeface; if(t == null) return false; if (_deviceFont == null) { if (t._deviceFont != null) return false; } else { if (t._deviceFont == null || t._deviceFont.Name != _deviceFont.Name) return false; } return _glyphTypeface.Equals(t._glyphTypeface); } internal IDeviceFont DeviceFont { get { return _deviceFont; } } ////// Get physical font face /// internal GlyphTypeface GlyphTypeface { get { return _glyphTypeface; } } } ////// Scaled shape typeface /// internal class ScaledShapeTypeface { private ShapeTypeface _shapeTypeface; private double _scaleInEm; private bool _nullShape; internal ScaledShapeTypeface( GlyphTypeface glyphTypeface, IDeviceFont deviceFont, double scaleInEm, bool nullShape ) { _shapeTypeface = new ShapeTypeface(glyphTypeface, deviceFont); _scaleInEm = scaleInEm; _nullShape = nullShape; } internal ShapeTypeface ShapeTypeface { get { return _shapeTypeface; } } internal double ScaleInEm { get { return _scaleInEm; } } internal bool NullShape { get { return _nullShape; } } public override int GetHashCode() { int hash = _shapeTypeface.GetHashCode(); unsafe { hash = HashFn.HashMultiply(hash) + (int)(_nullShape ? 1 : 0); hash = HashFn.HashMultiply(hash) + _scaleInEm.GetHashCode(); return HashFn.HashScramble(hash); } } public override bool Equals(object o) { ScaledShapeTypeface t = o as ScaledShapeTypeface; if (t == null) return false; return _shapeTypeface.Equals(t._shapeTypeface) && _scaleInEm == t._scaleInEm && _nullShape == t._nullShape; } } } // 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
- EntityDescriptor.cs
- DBCSCodePageEncoding.cs
- TableSectionStyle.cs
- InstanceDataCollection.cs
- OleDbErrorCollection.cs
- DataFormats.cs
- EdmScalarPropertyAttribute.cs
- HttpCapabilitiesSectionHandler.cs
- X509WindowsSecurityToken.cs
- DataGridCheckBoxColumn.cs
- ParagraphVisual.cs
- MaskedTextBox.cs
- HttpHandlersInstallComponent.cs
- ReflectionHelper.cs
- PropertyConverter.cs
- SafeFileMappingHandle.cs
- OleDbDataAdapter.cs
- PhysicalOps.cs
- MarginCollapsingState.cs
- MimeBasePart.cs
- FontClient.cs
- GridViewColumnHeader.cs
- CodeArgumentReferenceExpression.cs
- GestureRecognitionResult.cs
- DBSchemaRow.cs
- WebHeaderCollection.cs
- EntityConnectionStringBuilder.cs
- ProbeDuplex11AsyncResult.cs
- SystemDiagnosticsSection.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- Literal.cs
- TextServicesHost.cs
- GeneratedCodeAttribute.cs
- CacheDependency.cs
- XmlReturnReader.cs
- WebPartEditorApplyVerb.cs
- SmtpSection.cs
- BaseResourcesBuildProvider.cs
- AnnouncementClient.cs
- BinaryConverter.cs
- TextTreeDeleteContentUndoUnit.cs
- MailWebEventProvider.cs
- CodeDirectoryCompiler.cs
- DetectEofStream.cs
- HttpCapabilitiesBase.cs
- InputBindingCollection.cs
- DeclaredTypeElement.cs
- ScrollViewerAutomationPeer.cs
- UrlRoutingHandler.cs
- SoapSchemaMember.cs
- SrgsText.cs
- ManualResetEventSlim.cs
- ElementNotEnabledException.cs
- Mouse.cs
- CalendarItem.cs
- DictionarySectionHandler.cs
- SafeHandle.cs
- ApplicationCommands.cs
- ClientConvert.cs
- ActionFrame.cs
- WebControl.cs
- Zone.cs
- FixedSchema.cs
- ExtensionSurface.cs
- Main.cs
- ObjectListCommandEventArgs.cs
- PropertyInfoSet.cs
- Brush.cs
- BooleanSwitch.cs
- NamespaceCollection.cs
- CharacterHit.cs
- documentsequencetextcontainer.cs
- NamespaceEmitter.cs
- SchemaImporterExtension.cs
- HtmlShim.cs
- RenderDataDrawingContext.cs
- DateTimeFormatInfoScanner.cs
- ParameterToken.cs
- BindingExpressionUncommonField.cs
- KeyValuePairs.cs
- BordersPage.cs
- SQLDouble.cs
- StringFreezingAttribute.cs
- InfoCardRSAPKCS1KeyExchangeFormatter.cs
- Baml2006SchemaContext.cs
- ClientFormsIdentity.cs
- IdentitySection.cs
- UnsafeNativeMethodsMilCoreApi.cs
- ListParaClient.cs
- Lasso.cs
- SoapSchemaExporter.cs
- Deflater.cs
- SafeCryptHandles.cs
- Tracer.cs
- ConnectionPoolManager.cs
- QueryOutputWriter.cs
- FixedDocument.cs
- sortedlist.cs
- SelectedDatesCollection.cs
- DoubleLinkList.cs