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
- DbXmlEnabledProviderManifest.cs
- SqlDependencyListener.cs
- SamlAuthorizationDecisionClaimResource.cs
- UpdateException.cs
- ReaderOutput.cs
- ValueProviderWrapper.cs
- ObjectStateEntryDbDataRecord.cs
- BlobPersonalizationState.cs
- SecurityException.cs
- SecurityManager.cs
- BamlVersionHeader.cs
- CurrentChangingEventArgs.cs
- DbInsertCommandTree.cs
- ConcurrentDictionary.cs
- Bold.cs
- PathFigure.cs
- DefaultSection.cs
- ErrorRuntimeConfig.cs
- CTreeGenerator.cs
- RectangleGeometry.cs
- TextParentUndoUnit.cs
- CodeValidator.cs
- AssemblyUtil.cs
- ArrayTypeMismatchException.cs
- ServiceReference.cs
- ErrorReporting.cs
- ClosableStream.cs
- StylesEditorDialog.cs
- DataObjectFieldAttribute.cs
- DeflateStream.cs
- LinearKeyFrames.cs
- AutomationProperties.cs
- CodeIndexerExpression.cs
- Stopwatch.cs
- Events.cs
- ACE.cs
- XmlValueConverter.cs
- SQLMembershipProvider.cs
- _RequestLifetimeSetter.cs
- TreeViewHitTestInfo.cs
- HijriCalendar.cs
- BitVector32.cs
- SafeSecurityHandles.cs
- EventHandlersStore.cs
- BitStack.cs
- MexBindingBindingCollectionElement.cs
- XmlArrayAttribute.cs
- MouseGestureConverter.cs
- SerialStream.cs
- ParallelTimeline.cs
- DelegatingConfigHost.cs
- RepeaterItemCollection.cs
- DependencyStoreSurrogate.cs
- ObjectTag.cs
- ParallelTimeline.cs
- FrameworkElement.cs
- IDispatchConstantAttribute.cs
- LateBoundBitmapDecoder.cs
- ObjectFullSpanRewriter.cs
- TextSerializer.cs
- Journaling.cs
- XmlSchemaNotation.cs
- ActivitiesCollection.cs
- RSACryptoServiceProvider.cs
- SafeFileMappingHandle.cs
- DoubleConverter.cs
- RecordBuilder.cs
- PropertyGeneratedEventArgs.cs
- FontSizeConverter.cs
- CodeDirectionExpression.cs
- DBAsyncResult.cs
- SqlTransaction.cs
- CommandLibraryHelper.cs
- PointCollection.cs
- ToolStripOverflowButton.cs
- EntitySqlQueryCacheEntry.cs
- VisualStyleRenderer.cs
- CachedPathData.cs
- ClientScriptManager.cs
- IdentifierCollection.cs
- LineProperties.cs
- DirectoryObjectSecurity.cs
- DecoderNLS.cs
- RadioButtonStandardAdapter.cs
- XmlJsonReader.cs
- SortedList.cs
- PerformanceCounterPermissionAttribute.cs
- WebPartsPersonalizationAuthorization.cs
- DiscoveryClientRequestChannel.cs
- JsonClassDataContract.cs
- Profiler.cs
- FormClosedEvent.cs
- RuleDefinitions.cs
- AppDomainInfo.cs
- DocumentDesigner.cs
- LightweightCodeGenerator.cs
- ParallelTimeline.cs
- DiffuseMaterial.cs
- JavaScriptSerializer.cs
- MetadataArtifactLoaderComposite.cs