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
- QilUnary.cs
- StrongName.cs
- MatrixTransform3D.cs
- SmtpDigestAuthenticationModule.cs
- AmbiguousMatchException.cs
- FragmentQuery.cs
- InkCanvasSelection.cs
- SqlDataSourceCustomCommandPanel.cs
- ByteRangeDownloader.cs
- TextPointer.cs
- sortedlist.cs
- OracleParameterBinding.cs
- CompiledXpathExpr.cs
- PeerService.cs
- ListViewCancelEventArgs.cs
- TableLayoutRowStyleCollection.cs
- PartialCachingAttribute.cs
- WebBrowserUriTypeConverter.cs
- MetadataPropertyCollection.cs
- SweepDirectionValidation.cs
- ThreadSafeList.cs
- UInt16Converter.cs
- CompilerResults.cs
- SqlUtil.cs
- HandlerFactoryCache.cs
- wgx_exports.cs
- ColumnResizeUndoUnit.cs
- InkCanvasAutomationPeer.cs
- UserControl.cs
- DoubleConverter.cs
- GcSettings.cs
- SafeNativeMethods.cs
- NamespaceCollection.cs
- DataFormat.cs
- recordstatefactory.cs
- HttpSysSettings.cs
- AutomationAttributeInfo.cs
- SoapSchemaExporter.cs
- DateTimeStorage.cs
- DeflateEmulationStream.cs
- InteropBitmapSource.cs
- CounterCreationDataCollection.cs
- StorageMappingFragment.cs
- XmlIgnoreAttribute.cs
- DnsCache.cs
- ObjectReferenceStack.cs
- PageAdapter.cs
- ComponentResourceKeyConverter.cs
- DelegateHelpers.Generated.cs
- StylusPointPropertyInfo.cs
- Point3DAnimation.cs
- WebPartDisplayModeEventArgs.cs
- CompositeDataBoundControl.cs
- RuleElement.cs
- BaseTemplateCodeDomTreeGenerator.cs
- Vector3DAnimationBase.cs
- TextSelectionHelper.cs
- ApplicationFileCodeDomTreeGenerator.cs
- HtmlElementErrorEventArgs.cs
- BrowserCapabilitiesCodeGenerator.cs
- InputLanguageSource.cs
- GlobalizationSection.cs
- PerformanceCounterManager.cs
- OSFeature.cs
- PerfCounterSection.cs
- BinaryNode.cs
- BaseCodePageEncoding.cs
- ResourceSet.cs
- RuleProcessor.cs
- MultiSelectRootGridEntry.cs
- GenerateTemporaryAssemblyTask.cs
- FileSystemEventArgs.cs
- SqlBulkCopyColumnMappingCollection.cs
- CodeParameterDeclarationExpression.cs
- SynchronousReceiveBehavior.cs
- OutOfMemoryException.cs
- SerialReceived.cs
- OleDbError.cs
- SystemPens.cs
- Vars.cs
- StretchValidation.cs
- ConfigurationSectionGroupCollection.cs
- X509Extension.cs
- StructuredTypeEmitter.cs
- RegexGroup.cs
- HostExecutionContextManager.cs
- XmlCharType.cs
- CDSCollectionETWBCLProvider.cs
- PropertyStore.cs
- RTLAwareMessageBox.cs
- CalloutQueueItem.cs
- Int64.cs
- HtmlFormParameterReader.cs
- TextStore.cs
- Column.cs
- IFlowDocumentViewer.cs
- mil_commands.cs
- HttpHeaderCollection.cs
- GcHandle.cs
- ControlParameter.cs