Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- MemberHolder.cs
- Header.cs
- SetterBaseCollection.cs
- InputLanguageCollection.cs
- ToolBarTray.cs
- InternalConfigSettingsFactory.cs
- SqlEnums.cs
- RequiredAttributeAttribute.cs
- UriTemplatePathSegment.cs
- ReflectionTypeLoadException.cs
- AsyncStreamReader.cs
- AuthorizationRule.cs
- PageBuildProvider.cs
- BinHexEncoder.cs
- oledbconnectionstring.cs
- FixedTextBuilder.cs
- DataGridViewImageColumn.cs
- DeploymentExceptionMapper.cs
- QueryCacheManager.cs
- ResourcePermissionBaseEntry.cs
- PropertyConverter.cs
- Clock.cs
- TableLayoutPanelResizeGlyph.cs
- CDSCollectionETWBCLProvider.cs
- KeyConstraint.cs
- ToolStripCodeDomSerializer.cs
- CacheAxisQuery.cs
- Internal.cs
- DesignerLoader.cs
- ExpressionTextBoxAutomationPeer.cs
- StringValidatorAttribute.cs
- controlskin.cs
- XmlnsPrefixAttribute.cs
- GlobalizationAssembly.cs
- TextDecoration.cs
- ButtonBaseAutomationPeer.cs
- BindingValueChangedEventArgs.cs
- SecurityTokenAuthenticator.cs
- StatusBarPanelClickEvent.cs
- DataKey.cs
- TaiwanLunisolarCalendar.cs
- EventBuilder.cs
- ButtonFieldBase.cs
- ResourceExpressionEditorSheet.cs
- ComponentEvent.cs
- ArraySegment.cs
- KeyProperty.cs
- ServerType.cs
- TypedTableBaseExtensions.cs
- SqlAggregateChecker.cs
- DataGridViewComboBoxCell.cs
- DetailsViewModeEventArgs.cs
- Blend.cs
- SourceLocation.cs
- EqualityComparer.cs
- HelloOperation11AsyncResult.cs
- ProtocolsConfigurationEntry.cs
- IteratorFilter.cs
- Memoizer.cs
- ListContractAdapter.cs
- BaseTemplateParser.cs
- UnsafeNativeMethods.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- X509Extension.cs
- Registry.cs
- IUnknownConstantAttribute.cs
- GridViewPageEventArgs.cs
- ChameleonKey.cs
- AQNBuilder.cs
- DecimalAnimationBase.cs
- WindowsButton.cs
- PhonemeEventArgs.cs
- RenderingBiasValidation.cs
- columnmapfactory.cs
- HyperLinkColumn.cs
- CaseExpr.cs
- ChannelEndpointElement.cs
- AsymmetricCryptoHandle.cs
- SqlDeflator.cs
- CollaborationHelperFunctions.cs
- HostingEnvironment.cs
- AssemblyCache.cs
- ConstNode.cs
- FunctionDetailsReader.cs
- XmlTextAttribute.cs
- Menu.cs
- OdbcDataReader.cs
- ResXBuildProvider.cs
- ObjectTypeMapping.cs
- DataControlLinkButton.cs
- unitconverter.cs
- Vector3DAnimationBase.cs
- XComponentModel.cs
- MonitorWrapper.cs
- SystemIPInterfaceStatistics.cs
- HitTestResult.cs
- GroupItem.cs
- DataGridCellsPanel.cs
- Model3D.cs
- PasswordTextContainer.cs