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
- SecurityResources.cs
- TypeSource.cs
- PagedDataSource.cs
- SoapSchemaExporter.cs
- Baml6Assembly.cs
- DataBinding.cs
- CodeAccessSecurityEngine.cs
- DataContractFormatAttribute.cs
- FixedTextSelectionProcessor.cs
- EntityTransaction.cs
- SmiRecordBuffer.cs
- TraceRecord.cs
- SqlDataSourceSelectingEventArgs.cs
- EventBuilder.cs
- WebUtil.cs
- NodeInfo.cs
- PolyLineSegment.cs
- TextEncodedRawTextWriter.cs
- CollectionEditor.cs
- Crypto.cs
- TemplateBaseAction.cs
- DataRelationCollection.cs
- EntitySetDataBindingList.cs
- XmlMessageFormatter.cs
- SQLByteStorage.cs
- ColumnReorderedEventArgs.cs
- WindowsServiceElement.cs
- SerialReceived.cs
- Scripts.cs
- ChildTable.cs
- SemanticResultKey.cs
- CompilerParameters.cs
- MimeTypePropertyAttribute.cs
- PriorityBindingExpression.cs
- FixedFlowMap.cs
- BamlResourceDeserializer.cs
- SynchronizedDispatch.cs
- CharacterMetrics.cs
- WinFormsSecurity.cs
- AncillaryOps.cs
- _NetworkingPerfCounters.cs
- ThreadAbortException.cs
- PathTooLongException.cs
- ResourceDictionary.cs
- SqlDataSourceCache.cs
- DiscoveryService.cs
- ReceiveContent.cs
- CellCreator.cs
- ContentTextAutomationPeer.cs
- RotateTransform3D.cs
- TdsParserStateObject.cs
- PinProtectionHelper.cs
- DataSourceView.cs
- AutomationPropertyInfo.cs
- TreeIterators.cs
- MailHeaderInfo.cs
- GeometryDrawing.cs
- RepeatInfo.cs
- IteratorFilter.cs
- TableAdapterManagerNameHandler.cs
- BindingContext.cs
- ApplicationDirectory.cs
- EntitySetDataBindingList.cs
- ConfigurationProperty.cs
- PipelineComponent.cs
- Stack.cs
- WebServiceHandler.cs
- SystemWebExtensionsSectionGroup.cs
- ObjectTag.cs
- AggregatePushdown.cs
- SizeAnimation.cs
- Win32.cs
- SapiAttributeParser.cs
- XmlParser.cs
- COM2ExtendedBrowsingHandler.cs
- SamlAdvice.cs
- OledbConnectionStringbuilder.cs
- ImageSource.cs
- PingOptions.cs
- Border.cs
- WinFormsSpinner.cs
- TemplateBindingExtensionConverter.cs
- HtmlInputImage.cs
- ProviderConnectionPointCollection.cs
- _FtpControlStream.cs
- HotSpotCollection.cs
- TickBar.cs
- WorkflowOperationErrorHandler.cs
- HttpStreams.cs
- IntersectQueryOperator.cs
- LocatorBase.cs
- Interfaces.cs
- WebConfigurationHostFileChange.cs
- TextTreeTextElementNode.cs
- RootBrowserWindow.cs
- ListenerHandler.cs
- DesignerDataStoredProcedure.cs
- DocumentScope.cs
- VScrollProperties.cs
- DataControlButton.cs