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
- SqlPersonalizationProvider.cs
- DPAPIProtectedConfigurationProvider.cs
- ErrorEventArgs.cs
- XmlEncodedRawTextWriter.cs
- MatrixAnimationBase.cs
- KeyboardEventArgs.cs
- GotoExpression.cs
- FormViewModeEventArgs.cs
- EntityCommandDefinition.cs
- CheckBoxAutomationPeer.cs
- FormViewPagerRow.cs
- GCHandleCookieTable.cs
- MultiDataTrigger.cs
- Scene3D.cs
- ModelPropertyDescriptor.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- RuleRef.cs
- NamedPipeProcessProtocolHandler.cs
- AssemblyBuilderData.cs
- DivideByZeroException.cs
- Subtree.cs
- EncoderBestFitFallback.cs
- TextTreeInsertElementUndoUnit.cs
- DataServiceQueryOfT.cs
- XmlStreamedByteStreamReader.cs
- AssociativeAggregationOperator.cs
- ExtensionFile.cs
- JoinElimination.cs
- WhitespaceRule.cs
- EntityDataSourceEntitySetNameItem.cs
- QueryContinueDragEventArgs.cs
- ParenthesizePropertyNameAttribute.cs
- DataGridColumn.cs
- ContextBase.cs
- DbProviderFactoriesConfigurationHandler.cs
- NetSectionGroup.cs
- ToolStripSettings.cs
- BasePropertyDescriptor.cs
- SmiConnection.cs
- DataGridViewEditingControlShowingEventArgs.cs
- ByteAnimationUsingKeyFrames.cs
- XmlObjectSerializerContext.cs
- TagPrefixAttribute.cs
- ProtocolsConfigurationEntry.cs
- AnyAllSearchOperator.cs
- CompilationSection.cs
- Switch.cs
- PathSegmentCollection.cs
- KnowledgeBase.cs
- DocumentViewerAutomationPeer.cs
- HeaderCollection.cs
- GPPOINTF.cs
- FormattedTextSymbols.cs
- ViewPort3D.cs
- TokenizerHelper.cs
- Contracts.cs
- DesignConnection.cs
- CollectionViewGroupRoot.cs
- UnsafeCollabNativeMethods.cs
- ResourceSet.cs
- QueryInterceptorAttribute.cs
- XmlDataSourceView.cs
- BooleanFunctions.cs
- SourceFilter.cs
- DialogResultConverter.cs
- Int32RectValueSerializer.cs
- WebPartCatalogAddVerb.cs
- SynchronizationScope.cs
- SmiEventSink_DeferedProcessing.cs
- ImageClickEventArgs.cs
- LocatorGroup.cs
- PartManifestEntry.cs
- PhysicalAddress.cs
- SqlConnectionStringBuilder.cs
- BindingExpression.cs
- SizeConverter.cs
- ImpersonateTokenRef.cs
- FlowDocumentPage.cs
- DataGridViewSelectedColumnCollection.cs
- PageClientProxyGenerator.cs
- Baml2006KnownTypes.cs
- XmlExtensionFunction.cs
- FixedDocumentSequencePaginator.cs
- SessionState.cs
- CodeDirectoryCompiler.cs
- UnsafeNetInfoNativeMethods.cs
- FieldMetadata.cs
- WindowsTreeView.cs
- EventLogger.cs
- TextProperties.cs
- Rule.cs
- CaseKeyBox.xaml.cs
- SslStream.cs
- Lease.cs
- SimpleMailWebEventProvider.cs
- ProxyAttribute.cs
- RelationalExpressions.cs
- CacheForPrimitiveTypes.cs
- Metafile.cs
- BrowserCapabilitiesCompiler.cs