Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- HasCopySemanticsAttribute.cs
- ScriptReferenceEventArgs.cs
- StringCollectionEditor.cs
- SocketException.cs
- SoapProtocolImporter.cs
- ResourceDescriptionAttribute.cs
- Lookup.cs
- GlobalizationAssembly.cs
- WebResourceAttribute.cs
- Lease.cs
- ItemCheckedEvent.cs
- MonitorWrapper.cs
- TaskFormBase.cs
- AdCreatedEventArgs.cs
- ZipIOExtraFieldZip64Element.cs
- AlternateView.cs
- XmlUtil.cs
- StructuredTypeInfo.cs
- TypeDescriptor.cs
- BrowserDefinitionCollection.cs
- ServiceActivationException.cs
- MDIControlStrip.cs
- PeerNameRecord.cs
- DataRecordInternal.cs
- TransactionManagerProxy.cs
- Effect.cs
- DispatchChannelSink.cs
- ObjectDataSourceMethodEventArgs.cs
- XmlnsCache.cs
- AttachedPropertyBrowsableAttribute.cs
- WeakReferenceList.cs
- XmlNamespaceManager.cs
- SqlDelegatedTransaction.cs
- CmsUtils.cs
- ByteKeyFrameCollection.cs
- RoutedEventValueSerializer.cs
- ColorKeyFrameCollection.cs
- BitmapCacheBrush.cs
- IntSecurity.cs
- SmtpNtlmAuthenticationModule.cs
- TreeIterator.cs
- BindingCompleteEventArgs.cs
- WebReferencesBuildProvider.cs
- Typeface.cs
- Queue.cs
- XmlEntity.cs
- PropertyGridView.cs
- DataSetSchema.cs
- HelpProvider.cs
- Directory.cs
- DictionarySectionHandler.cs
- Regex.cs
- DnsEndPoint.cs
- CacheRequest.cs
- LayoutExceptionEventArgs.cs
- ConnectionStringSettingsCollection.cs
- KeyValuePair.cs
- TraceContextEventArgs.cs
- EventSchemaTraceListener.cs
- Soap.cs
- UiaCoreTypesApi.cs
- TreeBuilder.cs
- FrameAutomationPeer.cs
- XmlLinkedNode.cs
- StrongBox.cs
- DataSourceControlBuilder.cs
- UIElementParaClient.cs
- PropertyInfo.cs
- User.cs
- TextContainerHelper.cs
- ConnectionsZoneAutoFormat.cs
- HwndMouseInputProvider.cs
- SrgsNameValueTag.cs
- XMLSchema.cs
- HtmlInputCheckBox.cs
- ToolBarButtonClickEvent.cs
- PassportIdentity.cs
- XmlC14NWriter.cs
- FigureParaClient.cs
- InsufficientMemoryException.cs
- SQLDouble.cs
- XmlSchemaSimpleContentRestriction.cs
- TagMapInfo.cs
- ExpressionBinding.cs
- Ticks.cs
- RijndaelManagedTransform.cs
- ActivityDesignerHighlighter.cs
- SqlRowUpdatingEvent.cs
- COM2IDispatchConverter.cs
- IntSecurity.cs
- PropertyRecord.cs
- LinkButton.cs
- ForeignConstraint.cs
- TraceSection.cs
- SubtreeProcessor.cs
- TableParagraph.cs
- TextEditorTables.cs
- StrokeDescriptor.cs
- PrimaryKeyTypeConverter.cs
- UniqueConstraint.cs