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
- StylusButtonEventArgs.cs
- VirtualizingStackPanel.cs
- BitmapEffectState.cs
- MailMessage.cs
- AssemblyBuilder.cs
- Stacktrace.cs
- EllipseGeometry.cs
- SmiEventSink_DeferedProcessing.cs
- NativeCompoundFileAPIs.cs
- Int32AnimationBase.cs
- AssociationEndMember.cs
- EndpointNotFoundException.cs
- Event.cs
- SqlTypeConverter.cs
- ThicknessAnimationBase.cs
- KeyValuePair.cs
- PixelShader.cs
- x509utils.cs
- OrderedEnumerableRowCollection.cs
- ColorConvertedBitmap.cs
- CapabilitiesAssignment.cs
- InputReportEventArgs.cs
- OleServicesContext.cs
- Base64Encoder.cs
- StatusBarPanel.cs
- WizardPanel.cs
- ADRoleFactory.cs
- ValidationError.cs
- NextPreviousPagerField.cs
- SystemIPv4InterfaceProperties.cs
- HttpCachePolicy.cs
- LicenseManager.cs
- SemanticKeyElement.cs
- StylusEditingBehavior.cs
- LoginAutoFormat.cs
- SafeBitVector32.cs
- CustomAttribute.cs
- SoapAttributes.cs
- FieldMetadata.cs
- RuntimeResourceSet.cs
- WebBrowserUriTypeConverter.cs
- WorkflowApplicationCompletedException.cs
- AnnotationAdorner.cs
- StringSource.cs
- RayHitTestParameters.cs
- Types.cs
- ErrorEventArgs.cs
- HtmlEncodedRawTextWriter.cs
- Zone.cs
- SymbolPair.cs
- TextBox.cs
- GenericXmlSecurityToken.cs
- SingleSelectRootGridEntry.cs
- UiaCoreApi.cs
- TreeNodeEventArgs.cs
- DispatchChannelSink.cs
- QueryOutputWriter.cs
- AccessText.cs
- PropertiesTab.cs
- FillRuleValidation.cs
- UnlockCardRequest.cs
- AudioDeviceOut.cs
- VirtualizedItemPattern.cs
- OdbcStatementHandle.cs
- ReadOnlyDictionary.cs
- RequestNavigateEventArgs.cs
- Solver.cs
- DataGridRowHeader.cs
- PointAnimationUsingKeyFrames.cs
- UnsafeNativeMethods.cs
- RowToParametersTransformer.cs
- PublishLicense.cs
- TimeoutException.cs
- CodeTypeConstructor.cs
- SSmlParser.cs
- WsiProfilesElement.cs
- IPipelineRuntime.cs
- ObjectSecurity.cs
- OdbcDataReader.cs
- FormViewInsertedEventArgs.cs
- KeyManager.cs
- XPathScanner.cs
- ChildrenQuery.cs
- IDQuery.cs
- SplitterPanel.cs
- WsdlBuildProvider.cs
- StringSorter.cs
- DragStartedEventArgs.cs
- TemplateBamlRecordReader.cs
- EllipseGeometry.cs
- StylusDevice.cs
- UpdatePanelTriggerCollection.cs
- OptionalRstParameters.cs
- ControlFilterExpression.cs
- ClassicBorderDecorator.cs
- DataObjectEventArgs.cs
- BufferModeSettings.cs
- DisplayNameAttribute.cs
- XmlElement.cs
- ErrorHandler.cs