Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Core / CSharp / System / Windows / Media / GlyphRunDrawing.cs / 1 / GlyphRunDrawing.cs
//---------------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // Description: GlyphRunDrawing represents a drawing operation that renders // a GlyphRun. // // History: // // 2004/11/17 : timothyc - Created it. // //--------------------------------------------------------------------------- using System.Diagnostics; namespace System.Windows.Media { ////// GlyphRunDrawing represents a drawing operation that renders a GlyphRun. /// public sealed partial class GlyphRunDrawing : Drawing { #region Constructors ////// Default GlyphRunDrawing constructor. /// Constructs an object with all properties set to their default values /// public GlyphRunDrawing() { } ////// Two-argument GlyphRunDrawing constructor. /// Constructs an object with the GlyphRun and ForegroundBrush properties /// set to the value of their respective arguments. /// public GlyphRunDrawing(Brush foregroundBrush, GlyphRun glyphRun) { GlyphRun = glyphRun; ForegroundBrush = foregroundBrush; } #endregion #region Internal methods ////// Called when an object needs to Update it's realizations. /// Currently, GlyphRun is the only MIL object that needs realization /// updates. /// internal override void UpdateRealizations(RealizationContext realizationContext) { if (RequiresRealizationUpdates) { GlyphRun glyphRun = GlyphRun; Brush foregroundBrush = ForegroundBrush; Debug.Assert(glyphRun != null, "Because the RequriesRealizationUpdates flag is only set if GlyphRun != null."); Debug.Assert(foregroundBrush!= null, "Because the RequiresRealizationUpdates flag is only set if ForegroundBrush != null."); Rect bounds = glyphRun.ComputeInkBoundingBox(); if (!bounds.IsEmpty) { Point baselineOrigin = glyphRun.BaselineOrigin; bounds.X += baselineOrigin.X; bounds.Y += baselineOrigin.Y; foregroundBrush.UpdateRealizations(bounds, realizationContext); } } } ////// Calls methods on the DrawingContext that are equivalent to the /// Drawing with the Drawing's current value. /// internal override void WalkCurrentValue(DrawingContextWalker ctx) { // We avoid unneccessary ShouldStopWalking checks based on assumptions // about when ShouldStopWalking is set. Guard that assumption with an // assertion. See DrawingGroup.WalkCurrentValue comment for more details. Debug.Assert(!ctx.ShouldStopWalking); ctx.DrawGlyphRun( ForegroundBrush, GlyphRun ); } ////// PrecomputeCore for GlyphRuns. /// internal override void PrecomputeCore() { // Reset the flag. RequiresRealizationUpdates = false; // Check if we need to push realization updates into the foreground brush. if (GlyphRun != null) { Brush foregroundBrush = ForegroundBrush; if (foregroundBrush != null) { foregroundBrush.Precompute(); // We require realization no matter what because this is a glyph run // drawing. RequiresRealizationUpdates = true; } } } #endregion Internal methods } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // Description: GlyphRunDrawing represents a drawing operation that renders // a GlyphRun. // // History: // // 2004/11/17 : timothyc - Created it. // //--------------------------------------------------------------------------- using System.Diagnostics; namespace System.Windows.Media { ////// GlyphRunDrawing represents a drawing operation that renders a GlyphRun. /// public sealed partial class GlyphRunDrawing : Drawing { #region Constructors ////// Default GlyphRunDrawing constructor. /// Constructs an object with all properties set to their default values /// public GlyphRunDrawing() { } ////// Two-argument GlyphRunDrawing constructor. /// Constructs an object with the GlyphRun and ForegroundBrush properties /// set to the value of their respective arguments. /// public GlyphRunDrawing(Brush foregroundBrush, GlyphRun glyphRun) { GlyphRun = glyphRun; ForegroundBrush = foregroundBrush; } #endregion #region Internal methods ////// Called when an object needs to Update it's realizations. /// Currently, GlyphRun is the only MIL object that needs realization /// updates. /// internal override void UpdateRealizations(RealizationContext realizationContext) { if (RequiresRealizationUpdates) { GlyphRun glyphRun = GlyphRun; Brush foregroundBrush = ForegroundBrush; Debug.Assert(glyphRun != null, "Because the RequriesRealizationUpdates flag is only set if GlyphRun != null."); Debug.Assert(foregroundBrush!= null, "Because the RequiresRealizationUpdates flag is only set if ForegroundBrush != null."); Rect bounds = glyphRun.ComputeInkBoundingBox(); if (!bounds.IsEmpty) { Point baselineOrigin = glyphRun.BaselineOrigin; bounds.X += baselineOrigin.X; bounds.Y += baselineOrigin.Y; foregroundBrush.UpdateRealizations(bounds, realizationContext); } } } ////// Calls methods on the DrawingContext that are equivalent to the /// Drawing with the Drawing's current value. /// internal override void WalkCurrentValue(DrawingContextWalker ctx) { // We avoid unneccessary ShouldStopWalking checks based on assumptions // about when ShouldStopWalking is set. Guard that assumption with an // assertion. See DrawingGroup.WalkCurrentValue comment for more details. Debug.Assert(!ctx.ShouldStopWalking); ctx.DrawGlyphRun( ForegroundBrush, GlyphRun ); } ////// PrecomputeCore for GlyphRuns. /// internal override void PrecomputeCore() { // Reset the flag. RequiresRealizationUpdates = false; // Check if we need to push realization updates into the foreground brush. if (GlyphRun != null) { Brush foregroundBrush = ForegroundBrush; if (foregroundBrush != null) { foregroundBrush.Precompute(); // We require realization no matter what because this is a glyph run // drawing. RequiresRealizationUpdates = true; } } } #endregion Internal methods } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AsyncOperationManager.cs
- TextServicesPropertyRanges.cs
- LinkDescriptor.cs
- PropertyEntry.cs
- ClusterRegistryConfigurationProvider.cs
- DataRecordInternal.cs
- LockCookie.cs
- DataGridViewCheckBoxCell.cs
- COM2IProvidePropertyBuilderHandler.cs
- LayoutEngine.cs
- SoapException.cs
- UpdatableGenericsFeature.cs
- CodeCompileUnit.cs
- NCryptNative.cs
- MimePart.cs
- TimeZoneInfo.cs
- CachedFontFamily.cs
- DataException.cs
- FeatureSupport.cs
- DataBindingCollectionConverter.cs
- StyleSelector.cs
- StyleSheetDesigner.cs
- StrokeIntersection.cs
- WebEventTraceProvider.cs
- CalculatedColumn.cs
- SiteMap.cs
- ClientSettingsSection.cs
- NameScope.cs
- CodeNamespaceImport.cs
- Vector3DCollection.cs
- Policy.cs
- HostingEnvironmentWrapper.cs
- TrackBarRenderer.cs
- XmlDigitalSignatureProcessor.cs
- BaseComponentEditor.cs
- EncryptedKey.cs
- Range.cs
- LeftCellWrapper.cs
- PersonalizationStateInfoCollection.cs
- GC.cs
- XmlDictionaryReader.cs
- ProfilePropertySettings.cs
- HtmlControlPersistable.cs
- DES.cs
- PathSegmentCollection.cs
- NumericUpDown.cs
- UTF8Encoding.cs
- XPathNavigatorReader.cs
- RTLAwareMessageBox.cs
- PieceNameHelper.cs
- SqlTypeConverter.cs
- Base64Decoder.cs
- ButtonFieldBase.cs
- Icon.cs
- MenuAdapter.cs
- TCPListener.cs
- QuadraticBezierSegment.cs
- ListViewPagedDataSource.cs
- ConfigurationSchemaErrors.cs
- GiveFeedbackEvent.cs
- XhtmlConformanceSection.cs
- XmlDataContract.cs
- PresentationTraceSources.cs
- XslCompiledTransform.cs
- ExpressionQuoter.cs
- InvalidEnumArgumentException.cs
- documentsequencetextview.cs
- PathFigureCollection.cs
- ProgressBarHighlightConverter.cs
- DesignerCategoryAttribute.cs
- RadioButtonStandardAdapter.cs
- AQNBuilder.cs
- DataServiceQuery.cs
- tabpagecollectioneditor.cs
- RecommendedAsConfigurableAttribute.cs
- FixedSOMPageElement.cs
- PixelShader.cs
- ErrorStyle.cs
- WindowsEditBox.cs
- X509Utils.cs
- PrimitiveCodeDomSerializer.cs
- RegularExpressionValidator.cs
- DesignerView.xaml.cs
- SolidColorBrush.cs
- TraceSection.cs
- TextSegment.cs
- _NTAuthentication.cs
- OracleTransaction.cs
- DbConnectionPoolOptions.cs
- WsdlBuildProvider.cs
- arabicshape.cs
- Help.cs
- DataGridViewRowPostPaintEventArgs.cs
- WasAdminWrapper.cs
- TextSegment.cs
- SqlDataSourceConnectionPanel.cs
- InputLanguageProfileNotifySink.cs
- SafeRegistryHandle.cs
- KeyMatchBuilder.cs
- ChangeProcessor.cs