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
- ButtonFlatAdapter.cs
- FocusTracker.cs
- SqlInternalConnectionSmi.cs
- SByte.cs
- InfoCardBaseException.cs
- PeerNeighborManager.cs
- IdentityModelStringsVersion1.cs
- tibetanshape.cs
- COM2ComponentEditor.cs
- DefaultBinder.cs
- TextEmbeddedObject.cs
- Point4DValueSerializer.cs
- IDQuery.cs
- SystemException.cs
- BaseResourcesBuildProvider.cs
- FamilyTypefaceCollection.cs
- TimeSpanOrInfiniteValidator.cs
- XmlTextEncoder.cs
- ProxySimple.cs
- DataServiceRequestException.cs
- DateTimeFormatInfo.cs
- ValidationResult.cs
- ServiceDocument.cs
- Brush.cs
- InfoCardTraceRecord.cs
- CodeAccessSecurityEngine.cs
- AddressHeaderCollection.cs
- ProviderConnectionPoint.cs
- OSEnvironmentHelper.cs
- XmlElementAttribute.cs
- CommonXSendMessage.cs
- PolicyManager.cs
- GestureRecognizer.cs
- IconConverter.cs
- ReliableMessagingVersionConverter.cs
- SelectiveScrollingGrid.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- ViewBox.cs
- ResourceDictionary.cs
- NopReturnReader.cs
- QuotaThrottle.cs
- SqlMethodTransformer.cs
- XPathExpr.cs
- ElementProxy.cs
- TextControlDesigner.cs
- ProfilePropertySettings.cs
- WindowsToolbar.cs
- Selection.cs
- ValidatingCollection.cs
- WorkflowInstanceUnhandledExceptionRecord.cs
- XPathItem.cs
- DynamicValueConverter.cs
- ToolStripItemRenderEventArgs.cs
- WindowsAuthenticationModule.cs
- AddInBase.cs
- followingsibling.cs
- PenLineJoinValidation.cs
- ProviderConnectionPoint.cs
- DriveNotFoundException.cs
- StylusPointPropertyId.cs
- KerberosSecurityTokenProvider.cs
- ImageUrlEditor.cs
- TTSVoice.cs
- MultipartContentParser.cs
- TextEndOfParagraph.cs
- ComponentManagerBroker.cs
- TreeViewCancelEvent.cs
- WebPageTraceListener.cs
- basecomparevalidator.cs
- DtrList.cs
- GetWinFXPath.cs
- UserThread.cs
- Nodes.cs
- DeleteIndexBinder.cs
- Stack.cs
- SmtpDateTime.cs
- WorkflowInstanceUnhandledExceptionRecord.cs
- FormViewPagerRow.cs
- IdentityReference.cs
- TextContainerChangeEventArgs.cs
- CrossContextChannel.cs
- ControlPropertyNameConverter.cs
- KeyFrames.cs
- PassportPrincipal.cs
- TextTrailingCharacterEllipsis.cs
- Literal.cs
- InvokeBinder.cs
- FormViewCommandEventArgs.cs
- NavigationProperty.cs
- DbSource.cs
- OrderPreservingMergeHelper.cs
- DataExpression.cs
- InProcStateClientManager.cs
- ThreadPool.cs
- MessagePropertyVariants.cs
- XmlILStorageConverter.cs
- ScriptingRoleServiceSection.cs
- ReflectionTypeLoadException.cs
- XPathDocumentNavigator.cs
- SimpleApplicationHost.cs