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
- PTUtility.cs
- KeyEvent.cs
- EntityRecordInfo.cs
- CompilerTypeWithParams.cs
- RtfToXamlLexer.cs
- ClientProtocol.cs
- ButtonPopupAdapter.cs
- EndOfStreamException.cs
- Thumb.cs
- LineSegment.cs
- ObjectDataSourceMethodEditor.cs
- DataRelation.cs
- ReflectionPermission.cs
- BinaryNode.cs
- OdbcConnectionStringbuilder.cs
- SelectionGlyphBase.cs
- VariableBinder.cs
- HealthMonitoringSectionHelper.cs
- ByteStreamMessageEncoderFactory.cs
- LoadGrammarCompletedEventArgs.cs
- SystemTcpConnection.cs
- EnvelopedSignatureTransform.cs
- GACMembershipCondition.cs
- FileStream.cs
- ScriptModule.cs
- CodeTryCatchFinallyStatement.cs
- PhoneCall.cs
- FacetChecker.cs
- CultureMapper.cs
- WebPartMenuStyle.cs
- DataSourceSelectArguments.cs
- UserControlParser.cs
- FontCacheUtil.cs
- srgsitem.cs
- FloaterBaseParagraph.cs
- EraserBehavior.cs
- basecomparevalidator.cs
- cookie.cs
- StateChangeEvent.cs
- NavigatorOutput.cs
- BinaryParser.cs
- XmlDataSourceView.cs
- ObjectAssociationEndMapping.cs
- Utility.cs
- PageClientProxyGenerator.cs
- MsmqInputMessage.cs
- RoutedUICommand.cs
- Trace.cs
- ReadOnlyHierarchicalDataSource.cs
- Boolean.cs
- BitmapEffectInputData.cs
- FormatConvertedBitmap.cs
- AsmxEndpointPickerExtension.cs
- EngineSiteSapi.cs
- XsltLoader.cs
- EdmItemCollection.cs
- DataGridColumnEventArgs.cs
- RSAPKCS1SignatureDeformatter.cs
- FrameworkObject.cs
- DecoderExceptionFallback.cs
- SafeMarshalContext.cs
- TextEditorSpelling.cs
- OraclePermissionAttribute.cs
- FileDialog.cs
- DebugView.cs
- StateItem.cs
- Win32PrintDialog.cs
- PageContentAsyncResult.cs
- DeviceFiltersSection.cs
- TextComposition.cs
- ConfigurationCollectionAttribute.cs
- ColumnHeaderCollectionEditor.cs
- ResourcesGenerator.cs
- XmlTextEncoder.cs
- PropertyMapper.cs
- TreeNode.cs
- TempEnvironment.cs
- BufferedMessageData.cs
- COM2TypeInfoProcessor.cs
- shaperfactoryquerycacheentry.cs
- BitStack.cs
- FunctionCommandText.cs
- XmlIlVisitor.cs
- parserscommon.cs
- PreviewPrintController.cs
- Constraint.cs
- CharUnicodeInfo.cs
- ImageEditor.cs
- StickyNoteAnnotations.cs
- Identity.cs
- ToolStripDropDownClosingEventArgs.cs
- Exceptions.cs
- DefaultDialogButtons.cs
- Environment.cs
- ToolStripTextBox.cs
- TripleDESCryptoServiceProvider.cs
- CodeDelegateCreateExpression.cs
- DBAsyncResult.cs
- HeaderedItemsControl.cs
- WorkflowView.cs