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
- PublisherMembershipCondition.cs
- Root.cs
- ArgumentElement.cs
- UdpReplyToBehavior.cs
- DataGridViewAutoSizeModeEventArgs.cs
- FirstQueryOperator.cs
- cryptoapiTransform.cs
- TimeEnumHelper.cs
- StylusPointProperty.cs
- TreeViewImageIndexConverter.cs
- AnnouncementEventArgs.cs
- OpenTypeLayout.cs
- ColumnMapVisitor.cs
- UrlAuthorizationModule.cs
- StreamAsIStream.cs
- ObjectPersistData.cs
- ErrorEventArgs.cs
- Listbox.cs
- ClientScriptItemCollection.cs
- DesignerTextWriter.cs
- EmbeddedObject.cs
- ProfileService.cs
- MsmqIntegrationAppDomainProtocolHandler.cs
- DbConnectionClosed.cs
- Propagator.JoinPropagator.cs
- RandomNumberGenerator.cs
- ConfigurationPropertyAttribute.cs
- EntityDataSourceWrapperCollection.cs
- COAUTHIDENTITY.cs
- ConnectionManagementSection.cs
- WinEventQueueItem.cs
- SrgsRulesCollection.cs
- NavigationProperty.cs
- BehaviorEditorPart.cs
- DataControlFieldCell.cs
- GeometryModel3D.cs
- ByteBufferPool.cs
- RecognizeCompletedEventArgs.cs
- MetadataItemEmitter.cs
- XmlSchemaObject.cs
- TextServicesLoader.cs
- CountAggregationOperator.cs
- ResourceManager.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- BufferedGraphicsManager.cs
- XmlReader.cs
- ObjectContext.cs
- BooleanProjectedSlot.cs
- PersonalizationStateInfoCollection.cs
- CatalogPartChrome.cs
- DataGridViewIntLinkedList.cs
- ResourcesChangeInfo.cs
- ReliabilityContractAttribute.cs
- FunctionImportElement.cs
- WebMessageEncoderFactory.cs
- ImmutableObjectAttribute.cs
- ComplexTypeEmitter.cs
- StatusStrip.cs
- DataColumnCollection.cs
- GreaterThanOrEqual.cs
- WebPartConnectionsCancelEventArgs.cs
- EntityClientCacheKey.cs
- AVElementHelper.cs
- Utils.cs
- RewritingProcessor.cs
- invalidudtexception.cs
- DataContractSerializerElement.cs
- DuplicateWaitObjectException.cs
- EnumMember.cs
- itemelement.cs
- PrtTicket_Public_Simple.cs
- SourceFileInfo.cs
- SubclassTypeValidatorAttribute.cs
- TypedTableBaseExtensions.cs
- _OSSOCK.cs
- ChangeTracker.cs
- ECDiffieHellman.cs
- CapabilitiesRule.cs
- OperationAbortedException.cs
- LocalizabilityAttribute.cs
- UIElement3D.cs
- SystemResources.cs
- BinHexDecoder.cs
- SafeRightsManagementQueryHandle.cs
- EpmHelper.cs
- StatusBarPanel.cs
- AppDomainManager.cs
- SamlAction.cs
- CodeDomConfigurationHandler.cs
- MultiDataTrigger.cs
- ExpressionDumper.cs
- FormsAuthenticationUserCollection.cs
- TreeViewAutomationPeer.cs
- TextRangeBase.cs
- DependencyPropertyHelper.cs
- XmlEntityReference.cs
- UnsafeNetInfoNativeMethods.cs
- HiddenFieldPageStatePersister.cs
- SQLStringStorage.cs
- _DigestClient.cs