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
- StructuredProperty.cs
- PropagatorResult.cs
- EnumMemberAttribute.cs
- CatalogPartChrome.cs
- DataSourceCache.cs
- _HeaderInfo.cs
- ToolstripProfessionalRenderer.cs
- PropertyPathWorker.cs
- PrintDocument.cs
- RestHandler.cs
- CustomCategoryAttribute.cs
- CorePropertiesFilter.cs
- CodePageUtils.cs
- UserMapPath.cs
- _CookieModule.cs
- DbProviderSpecificTypePropertyAttribute.cs
- OpCodes.cs
- SystemTcpConnection.cs
- ErrorStyle.cs
- COSERVERINFO.cs
- ConnectionStringEditor.cs
- EventMappingSettingsCollection.cs
- LogStore.cs
- ElementNotEnabledException.cs
- XmlBinaryReader.cs
- SqlUserDefinedAggregateAttribute.cs
- PartitionedStreamMerger.cs
- DocumentOutline.cs
- XmlNamedNodeMap.cs
- IpcManager.cs
- StateMachine.cs
- LayoutSettings.cs
- StringDictionaryEditor.cs
- CodeBlockBuilder.cs
- HandlerWithFactory.cs
- QuaternionAnimation.cs
- WebResponse.cs
- CommandBinding.cs
- SQLCharsStorage.cs
- AutoGeneratedFieldProperties.cs
- ContextQuery.cs
- PerfService.cs
- SiblingIterators.cs
- MapPathBasedVirtualPathProvider.cs
- RegexCompiler.cs
- ValidatingReaderNodeData.cs
- BinaryNode.cs
- DataListItemEventArgs.cs
- TextWriterTraceListener.cs
- __Filters.cs
- QilFactory.cs
- filewebrequest.cs
- InkSerializer.cs
- tooltip.cs
- IdentityHolder.cs
- DbProviderFactory.cs
- SequentialActivityDesigner.cs
- IPGlobalProperties.cs
- SqlError.cs
- HtmlSelectionListAdapter.cs
- PackageRelationship.cs
- DependencyPropertyConverter.cs
- EntityDataSourceStatementEditorForm.cs
- PropertyChangeTracker.cs
- DoubleLinkListEnumerator.cs
- FileLoadException.cs
- TextReader.cs
- SoapReflectionImporter.cs
- ConcurrencyMode.cs
- AsyncResult.cs
- ObjectListCommandEventArgs.cs
- DecimalFormatter.cs
- FileLogRecord.cs
- DiscoveryDocumentReference.cs
- FlowDocumentReaderAutomationPeer.cs
- DocumentViewerHelper.cs
- WindowsSecurityToken.cs
- DataGridViewAdvancedBorderStyle.cs
- RolePrincipal.cs
- SimpleRecyclingCache.cs
- HttpModulesSection.cs
- AuthenticateEventArgs.cs
- DispatcherTimer.cs
- NullExtension.cs
- MailAddress.cs
- StrokeNodeEnumerator.cs
- ToolBarButtonClickEvent.cs
- XmlSchemaSimpleTypeList.cs
- CSharpCodeProvider.cs
- ToolBarPanel.cs
- SoapClientProtocol.cs
- EventNotify.cs
- ConstantExpression.cs
- GradientBrush.cs
- ClonableStack.cs
- SqlOuterApplyReducer.cs
- CodeGroup.cs
- SQLGuid.cs
- Site.cs
- Pointer.cs