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
- JournalEntry.cs
- Signature.cs
- TypeConverterHelper.cs
- EventLogPermissionEntry.cs
- FormViewDeletedEventArgs.cs
- WinFormsSecurity.cs
- WindowsStartMenu.cs
- ForwardPositionQuery.cs
- BitStack.cs
- JsonDeserializer.cs
- AttributeEmitter.cs
- HttpException.cs
- SqlConnectionHelper.cs
- EntryPointNotFoundException.cs
- KerberosRequestorSecurityTokenAuthenticator.cs
- SemanticKeyElement.cs
- APCustomTypeDescriptor.cs
- _CookieModule.cs
- Durable.cs
- TypeDescriptor.cs
- HttpListenerResponse.cs
- VisualCollection.cs
- tooltip.cs
- HotSpotCollection.cs
- SqlGenericUtil.cs
- ToolStripPanel.cs
- CodeDomLoader.cs
- PropertyTab.cs
- ContentElement.cs
- ThreadPool.cs
- ResolveInfo.cs
- PrimitiveSchema.cs
- DateTimeConstantAttribute.cs
- SmtpAuthenticationManager.cs
- Unit.cs
- Propagator.ExtentPlaceholderCreator.cs
- CultureSpecificStringDictionary.cs
- UnhandledExceptionEventArgs.cs
- compensatingcollection.cs
- SingleConverter.cs
- TemplateControlParser.cs
- Cursor.cs
- Tracking.cs
- ComponentFactoryHelpers.cs
- UniqueConstraint.cs
- ClientConfigurationHost.cs
- RuleConditionDialog.Designer.cs
- SQLSingle.cs
- DetailsViewUpdatedEventArgs.cs
- CacheChildrenQuery.cs
- Geometry.cs
- ContainerUtilities.cs
- CodeTypeReferenceExpression.cs
- CodeTypeMemberCollection.cs
- OpacityConverter.cs
- MenuItemBinding.cs
- EditorPart.cs
- AppDomain.cs
- IApplicationTrustManager.cs
- SslStreamSecurityElement.cs
- Delegate.cs
- BindingRestrictions.cs
- AmbientProperties.cs
- EntitySqlQueryCacheKey.cs
- ProviderCollection.cs
- DesigntimeLicenseContextSerializer.cs
- ProgressBarBrushConverter.cs
- ComEventsHelper.cs
- TabletDevice.cs
- AssemblyName.cs
- ViewCellRelation.cs
- ComponentChangedEvent.cs
- ConfigurationException.cs
- SqlCharStream.cs
- XmlDataProvider.cs
- WebPartUserCapability.cs
- Gdiplus.cs
- XsdDuration.cs
- ExtensionQuery.cs
- ComponentChangingEvent.cs
- NavigatingCancelEventArgs.cs
- Image.cs
- Calendar.cs
- StatusBarDrawItemEvent.cs
- XpsS0ValidatingLoader.cs
- BaseTemplateParser.cs
- IntegrationExceptionEventArgs.cs
- HttpListenerException.cs
- ControlCollection.cs
- SqlClientWrapperSmiStream.cs
- MappingModelBuildProvider.cs
- Padding.cs
- Identifier.cs
- Keywords.cs
- GrammarBuilderPhrase.cs
- ConfigurationProperty.cs
- CurrentTimeZone.cs
- PropVariant.cs
- Message.cs
- PropertyEntry.cs