Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / 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 : [....] - 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); } glyphRun.MarkVisibleRealization(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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BooleanFunctions.cs
- RenderOptions.cs
- Panel.cs
- RSAOAEPKeyExchangeFormatter.cs
- CipherData.cs
- TreeNode.cs
- KerberosTokenFactoryCredential.cs
- StylusTip.cs
- LazyLoadBehavior.cs
- WindowInteropHelper.cs
- WebPartEventArgs.cs
- XamlPoint3DCollectionSerializer.cs
- KeyGestureValueSerializer.cs
- WMIGenerator.cs
- EntityClientCacheKey.cs
- VectorCollection.cs
- OleCmdHelper.cs
- NameValueCollection.cs
- Helper.cs
- XamlFigureLengthSerializer.cs
- OutputCacheProfile.cs
- ItemsChangedEventArgs.cs
- DelayedRegex.cs
- CancelEventArgs.cs
- ResolveCriteria11.cs
- FormViewRow.cs
- DBSqlParserColumnCollection.cs
- XmlSerializationGeneratedCode.cs
- Rectangle.cs
- ResourceIDHelper.cs
- XmlBufferReader.cs
- HttpListenerRequest.cs
- InputScopeNameConverter.cs
- CqlParserHelpers.cs
- DefaultProxySection.cs
- PriorityRange.cs
- UniqueIdentifierService.cs
- CapabilitiesPattern.cs
- ActivityCodeDomReferenceService.cs
- SByteConverter.cs
- SafeThemeHandle.cs
- Thumb.cs
- Model3D.cs
- GroupJoinQueryOperator.cs
- CharAnimationUsingKeyFrames.cs
- DiscreteKeyFrames.cs
- HttpPostProtocolImporter.cs
- ExtensionSimplifierMarkupObject.cs
- SchemaRegistration.cs
- BaseTemplateCodeDomTreeGenerator.cs
- MissingMethodException.cs
- DynamicDataResources.Designer.cs
- WindowsIdentity.cs
- UniqueEventHelper.cs
- handlecollector.cs
- FigureParaClient.cs
- LinkUtilities.cs
- PropertyDescriptorComparer.cs
- SpotLight.cs
- PersonalizationProviderHelper.cs
- HandleValueEditor.cs
- Rectangle.cs
- GreenMethods.cs
- ItemDragEvent.cs
- RowVisual.cs
- InvokeCompletedEventArgs.cs
- TabPage.cs
- xmlsaver.cs
- SQLBytesStorage.cs
- SecurityUtils.cs
- TemplatedWizardStep.cs
- ParallelTimeline.cs
- SharedPerformanceCounter.cs
- StyleSheetRefUrlEditor.cs
- ErrorHandler.cs
- PieceDirectory.cs
- ParameterElementCollection.cs
- XmlArrayItemAttributes.cs
- BufferedReadStream.cs
- LowerCaseStringConverter.cs
- SeverityFilter.cs
- hresults.cs
- TypeExtensionConverter.cs
- QueryOutputWriterV1.cs
- OleAutBinder.cs
- OleAutBinder.cs
- CodeAccessPermission.cs
- LayoutExceptionEventArgs.cs
- SelectionHighlightInfo.cs
- FileSystemEnumerable.cs
- StrongNameUtility.cs
- BitmapMetadata.cs
- SafeRightsManagementHandle.cs
- IgnoreSectionHandler.cs
- ApplyTemplatesAction.cs
- TextParaLineResult.cs
- RegexParser.cs
- IpcChannelHelper.cs
- HttpCachePolicyElement.cs
- DataBinding.cs