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
- BufferedReadStream.cs
- TextDecorationCollection.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- DifferencingCollection.cs
- PrtCap_Public_Simple.cs
- XsdDateTime.cs
- CustomValidator.cs
- UnsafeNativeMethods.cs
- SimpleWorkerRequest.cs
- PerformanceCounterPermissionAttribute.cs
- SettingsContext.cs
- OracleLob.cs
- DataRowComparer.cs
- ColumnWidthChangedEvent.cs
- Property.cs
- TraceUtility.cs
- ScriptRegistrationManager.cs
- HttpConfigurationContext.cs
- UserControl.cs
- DefaultPrintController.cs
- ClientUrlResolverWrapper.cs
- RectAnimationClockResource.cs
- StackBuilderSink.cs
- RequestQueue.cs
- EncoderBestFitFallback.cs
- StringDictionaryCodeDomSerializer.cs
- SqlConnectionHelper.cs
- RegexReplacement.cs
- InkPresenterAutomationPeer.cs
- PropertyInfoSet.cs
- FileSystemWatcher.cs
- SupportingTokenDuplexChannel.cs
- FontConverter.cs
- Calendar.cs
- JsonDeserializer.cs
- Array.cs
- StoryFragments.cs
- XmlDeclaration.cs
- WeakReferenceList.cs
- OleDbMetaDataFactory.cs
- PageParser.cs
- ProfilePropertySettingsCollection.cs
- CollectionChangeEventArgs.cs
- RepeaterItem.cs
- LayoutTableCell.cs
- IApplicationTrustManager.cs
- CompositeDispatchFormatter.cs
- MetabaseServerConfig.cs
- Event.cs
- CodeMemberField.cs
- TextTreeInsertUndoUnit.cs
- DockingAttribute.cs
- StrokeDescriptor.cs
- QualifiedCellIdBoolean.cs
- SqlDesignerDataSourceView.cs
- RuntimeVariableList.cs
- References.cs
- QuestionEventArgs.cs
- GenericTypeParameterBuilder.cs
- DateTimeConverter.cs
- TdsParserStaticMethods.cs
- Timer.cs
- SystemIcons.cs
- _AutoWebProxyScriptWrapper.cs
- PublisherMembershipCondition.cs
- OdbcUtils.cs
- SqlOuterApplyReducer.cs
- NotifyCollectionChangedEventArgs.cs
- ErrorHandler.cs
- IndexedGlyphRun.cs
- HandlerFactoryCache.cs
- ByteAnimationBase.cs
- Nullable.cs
- Int32EqualityComparer.cs
- IisTraceListener.cs
- CustomAttributeBuilder.cs
- DockPatternIdentifiers.cs
- XPathSelectionIterator.cs
- DetailsViewRowCollection.cs
- UriTemplateDispatchFormatter.cs
- _UriTypeConverter.cs
- HttpMethodAttribute.cs
- RectangleHotSpot.cs
- XmlMessageFormatter.cs
- ALinqExpressionVisitor.cs
- AutomationEvent.cs
- PKCS1MaskGenerationMethod.cs
- X509UI.cs
- Calendar.cs
- ReplyChannelBinder.cs
- RemoteWebConfigurationHost.cs
- ConfigurationManagerHelperFactory.cs
- X509SecurityTokenAuthenticator.cs
- XmlComplianceUtil.cs
- DrawingContext.cs
- WebPartCatalogAddVerb.cs
- BaseCAMarshaler.cs
- ObjectListGeneralPage.cs
- ParenthesizePropertyNameAttribute.cs
- UTF32Encoding.cs