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
- DataGridViewControlCollection.cs
- DateTimeConverter2.cs
- MasterPageBuildProvider.cs
- XsdBuilder.cs
- GridEntry.cs
- SqlCachedBuffer.cs
- FreezableOperations.cs
- ToggleButton.cs
- ColorTransform.cs
- QilGeneratorEnv.cs
- HWStack.cs
- TimeManager.cs
- FontNamesConverter.cs
- CommonProperties.cs
- WebPartExportVerb.cs
- DataMemberFieldConverter.cs
- PartitionResolver.cs
- PropertyStore.cs
- Selection.cs
- Html32TextWriter.cs
- TabletDeviceInfo.cs
- AnalyzedTree.cs
- StylusDevice.cs
- ResourceManager.cs
- ItemsChangedEventArgs.cs
- HostedTransportConfigurationManager.cs
- WebBodyFormatMessageProperty.cs
- TextHintingModeValidation.cs
- ProviderException.cs
- ManualResetEventSlim.cs
- Variant.cs
- Renderer.cs
- SqlConnectionHelper.cs
- KeyToListMap.cs
- LayoutTableCell.cs
- UserControlBuildProvider.cs
- FileNotFoundException.cs
- SetterBaseCollection.cs
- SafeHandles.cs
- ColorAnimationBase.cs
- BmpBitmapEncoder.cs
- followingquery.cs
- DetailsViewUpdateEventArgs.cs
- WebDescriptionAttribute.cs
- DependentList.cs
- ExpressionLexer.cs
- BindingContext.cs
- MessageDescriptionCollection.cs
- NullableIntMinMaxAggregationOperator.cs
- FunctionDetailsReader.cs
- DBPropSet.cs
- UnmanagedBitmapWrapper.cs
- LayeredChannelListener.cs
- GlyphRun.cs
- OleDbErrorCollection.cs
- ProfileModule.cs
- SafeCryptoHandles.cs
- RedBlackList.cs
- AssemblyFilter.cs
- Figure.cs
- ClientApiGenerator.cs
- ToolTipService.cs
- WindowsSpinner.cs
- ConfigurationManagerInternalFactory.cs
- ElementInit.cs
- SmiEventStream.cs
- BuildProvider.cs
- CookieProtection.cs
- EntityDataSourceQueryBuilder.cs
- ValueQuery.cs
- ISCIIEncoding.cs
- RectangleF.cs
- InternalConfigRoot.cs
- WebServiceFaultDesigner.cs
- PointHitTestResult.cs
- Model3D.cs
- MimeWriter.cs
- ContainerUtilities.cs
- DispatcherProcessingDisabled.cs
- PageContentAsyncResult.cs
- ClientEndpointLoader.cs
- LocatorManager.cs
- DiscoveryDocumentReference.cs
- XmlSchema.cs
- MSHTMLHostUtil.cs
- AdjustableArrowCap.cs
- ExpandCollapseProviderWrapper.cs
- PrimitiveSchema.cs
- RegexWriter.cs
- ThaiBuddhistCalendar.cs
- XmlDictionaryReader.cs
- DefaultAsyncDataDispatcher.cs
- XDRSchema.cs
- UseLicense.cs
- DebugHandleTracker.cs
- Point3DValueSerializer.cs
- UpdateCompiler.cs
- HMACSHA1.cs
- DataGridSortCommandEventArgs.cs
- OpCodes.cs