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
- SmtpNegotiateAuthenticationModule.cs
- CultureInfo.cs
- HttpRequest.cs
- ReflectPropertyDescriptor.cs
- DefaultMemberAttribute.cs
- RelationshipConstraintValidator.cs
- DecoratedNameAttribute.cs
- QilLoop.cs
- CoTaskMemHandle.cs
- WorkflowElementDialog.cs
- ToolstripProfessionalRenderer.cs
- ConfigXmlReader.cs
- AdjustableArrowCap.cs
- ProfileSettingsCollection.cs
- TextFindEngine.cs
- SymbolEqualComparer.cs
- DataObjectSettingDataEventArgs.cs
- CircleHotSpot.cs
- SqlTransaction.cs
- ReadingWritingEntityEventArgs.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- Geometry3D.cs
- EncryptedData.cs
- TemplateControlParser.cs
- GenerateDerivedKeyRequest.cs
- CryptoStream.cs
- DmlSqlGenerator.cs
- OrthographicCamera.cs
- PreservationFileReader.cs
- XmlSubtreeReader.cs
- CurrentChangingEventArgs.cs
- ExternalCalls.cs
- SmtpFailedRecipientsException.cs
- WindowsListViewGroupSubsetLink.cs
- ManagementScope.cs
- MsmqNonTransactedPoisonHandler.cs
- FlatButtonAppearance.cs
- QuaternionAnimation.cs
- Span.cs
- RegexTypeEditor.cs
- TemplatedWizardStep.cs
- SettingsPropertyNotFoundException.cs
- PagesSection.cs
- FilterEventArgs.cs
- WindowsEditBox.cs
- SelectionHighlightInfo.cs
- UndoUnit.cs
- GrammarBuilderDictation.cs
- CriticalFileToken.cs
- FamilyCollection.cs
- _FtpControlStream.cs
- ImpersonationContext.cs
- SafeNativeMethods.cs
- rsa.cs
- AppDomainInfo.cs
- AdRotatorDesigner.cs
- WindowsStatic.cs
- ByteStreamBufferedMessageData.cs
- Matrix.cs
- TemplateField.cs
- WorkflowInstanceSuspendedRecord.cs
- MessageBox.cs
- HtmlInputPassword.cs
- XAMLParseException.cs
- rsa.cs
- RelationshipManager.cs
- ScrollProviderWrapper.cs
- StrokeSerializer.cs
- NameTable.cs
- TextTabProperties.cs
- DoubleLinkListEnumerator.cs
- RegexInterpreter.cs
- AvTraceDetails.cs
- BaseValidator.cs
- SqlFormatter.cs
- Container.cs
- KeyEventArgs.cs
- WebContext.cs
- Environment.cs
- CapiNative.cs
- RectAnimationClockResource.cs
- WindowsTreeView.cs
- ShimAsPublicXamlType.cs
- Cursors.cs
- BufferedOutputStream.cs
- Rotation3D.cs
- DbFunctionCommandTree.cs
- JsonFormatWriterGenerator.cs
- TextAdaptor.cs
- FontFaceLayoutInfo.cs
- Documentation.cs
- _RequestCacheProtocol.cs
- TableLayoutCellPaintEventArgs.cs
- NumericUpDownAcceleration.cs
- SymbolResolver.cs
- AssemblyAttributes.cs
- TreeViewImageIndexConverter.cs
- AdRotator.cs
- ReachPageContentSerializerAsync.cs
- CheckBox.cs