Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- embossbitmapeffect.cs
- XsdDuration.cs
- Size.cs
- ComContractElementCollection.cs
- ListenerConstants.cs
- Constants.cs
- SslStreamSecurityElement.cs
- XsdBuilder.cs
- ToolStripStatusLabel.cs
- SafeRightsManagementHandle.cs
- XMLDiffLoader.cs
- HttpCookie.cs
- WindowsMenu.cs
- ECDiffieHellmanCng.cs
- DecoratedNameAttribute.cs
- XmlTextReaderImpl.cs
- XsdBuilder.cs
- ResolvedKeyFrameEntry.cs
- PackageRelationship.cs
- MenuAdapter.cs
- DataGridViewLinkColumn.cs
- DropDownButton.cs
- RegexWriter.cs
- CompilationRelaxations.cs
- CommentEmitter.cs
- SourceCollection.cs
- ApplicationActivator.cs
- CriticalHandle.cs
- ListCardsInFileRequest.cs
- HtmlLinkAdapter.cs
- MeshGeometry3D.cs
- WebPartConnectionsConfigureVerb.cs
- ConfigurationElementProperty.cs
- AppDomainProtocolHandler.cs
- SkinIDTypeConverter.cs
- WinFormsSecurity.cs
- SystemException.cs
- ConfigurationValue.cs
- WsatConfiguration.cs
- ExpressionLexer.cs
- KnownTypeDataContractResolver.cs
- PrinterResolution.cs
- RealizationContext.cs
- DocumentPage.cs
- RemoveStoryboard.cs
- HttpVersion.cs
- ClientSession.cs
- EdmValidator.cs
- BooleanExpr.cs
- bidPrivateBase.cs
- PixelShader.cs
- Camera.cs
- PropertyNames.cs
- TextSearch.cs
- MenuItemCollection.cs
- Visitor.cs
- xmlfixedPageInfo.cs
- ConfigurationSection.cs
- InvokeGenerator.cs
- GroupBox.cs
- EmbossBitmapEffect.cs
- SrgsSemanticInterpretationTag.cs
- PrintPreviewControl.cs
- XmlSchemaAttributeGroupRef.cs
- MatcherBuilder.cs
- ManagementObjectCollection.cs
- StylusOverProperty.cs
- EpmCustomContentSerializer.cs
- Soap11ServerProtocol.cs
- DataKeyArray.cs
- ToolZone.cs
- CollectionViewGroupInternal.cs
- UTF32Encoding.cs
- LogPolicy.cs
- SafeSecurityHelper.cs
- KeyGesture.cs
- GroupItem.cs
- AudioBase.cs
- Panel.cs
- SQLMembershipProvider.cs
- SafeFileMapViewHandle.cs
- VideoDrawing.cs
- DataRowChangeEvent.cs
- _HTTPDateParse.cs
- WindowsListViewGroupHelper.cs
- ConcurrentBag.cs
- webeventbuffer.cs
- DurationConverter.cs
- ExecutionTracker.cs
- TagNameToTypeMapper.cs
- PageCatalogPartDesigner.cs
- SchemaCollectionCompiler.cs
- PresentationTraceSources.cs
- QueryCacheKey.cs
- ControlAdapter.cs
- DockingAttribute.cs
- DecoderNLS.cs
- UnsupportedPolicyOptionsException.cs
- FloaterBaseParagraph.cs
- SmtpFailedRecipientException.cs