Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------------------ // // 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
- Rectangle.cs
- XmlSchemaValidationException.cs
- GraphicsPathIterator.cs
- CryptoKeySecurity.cs
- AxWrapperGen.cs
- AsyncResult.cs
- WindowsFormsHost.cs
- MimePart.cs
- PenLineCapValidation.cs
- FastPropertyAccessor.cs
- TemplateBamlTreeBuilder.cs
- ColumnResizeUndoUnit.cs
- InkCanvasSelectionAdorner.cs
- HMACSHA256.cs
- SEHException.cs
- SecurityContext.cs
- BaseTreeIterator.cs
- IntPtr.cs
- MailAddress.cs
- UdpDiscoveryEndpointProvider.cs
- RepeatButtonAutomationPeer.cs
- TableParagraph.cs
- PinnedBufferMemoryStream.cs
- HashHelper.cs
- TreeIterator.cs
- BamlResourceContent.cs
- ConnectionManagementSection.cs
- CheckPair.cs
- DbQueryCommandTree.cs
- ThreadAbortException.cs
- RuleSettings.cs
- BookmarkWorkItem.cs
- MULTI_QI.cs
- ErrorHandler.cs
- HtmlButton.cs
- ExpandCollapsePattern.cs
- ECDiffieHellmanPublicKey.cs
- DbReferenceCollection.cs
- StreamMarshaler.cs
- XmlMtomReader.cs
- BaseValidator.cs
- hresults.cs
- BitmapEffectDrawingContent.cs
- ToolStripItemCollection.cs
- Signature.cs
- AuthorizationSection.cs
- BaseHashHelper.cs
- PropertyMap.cs
- KeyedHashAlgorithm.cs
- ManifestResourceInfo.cs
- Dictionary.cs
- BoundPropertyEntry.cs
- WebPartManagerInternals.cs
- IgnoreFileBuildProvider.cs
- WorkflowControlClient.cs
- ExpressionParser.cs
- MergePropertyDescriptor.cs
- FrugalList.cs
- TabPanel.cs
- IndexOutOfRangeException.cs
- Emitter.cs
- SystemFonts.cs
- Tag.cs
- CustomCredentialPolicy.cs
- DataGridCaption.cs
- CompiledRegexRunnerFactory.cs
- ReceiveContextCollection.cs
- SafeNativeMethods.cs
- AuthorizationRuleCollection.cs
- HierarchicalDataBoundControlAdapter.cs
- RoutingConfiguration.cs
- WebPartConnectionsConfigureVerb.cs
- CheckBoxRenderer.cs
- ConnectionStringsSection.cs
- RemotingException.cs
- XamlTypeMapper.cs
- ExtensionSimplifierMarkupObject.cs
- JavaScriptObjectDeserializer.cs
- EmptyEnumerator.cs
- MemoryMappedViewAccessor.cs
- PagedDataSource.cs
- XmlMembersMapping.cs
- HttpHostedTransportConfiguration.cs
- MarginsConverter.cs
- XmlBinaryWriterSession.cs
- VerificationException.cs
- CheckBoxAutomationPeer.cs
- WebServiceHost.cs
- SinglePageViewer.cs
- DataGridViewSelectedCellCollection.cs
- OleDbParameter.cs
- MappingModelBuildProvider.cs
- VSDExceptions.cs
- BinaryCommonClasses.cs
- PathFigureCollection.cs
- SqlDataSourceCommandEventArgs.cs
- FixedPosition.cs
- StatusStrip.cs
- WebPartActionVerb.cs
- FontStretch.cs