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
- MethodBuilderInstantiation.cs
- KnownTypesProvider.cs
- EntityDataSourceWrapperCollection.cs
- MailWebEventProvider.cs
- DrawingContextWalker.cs
- ItemCheckEvent.cs
- DrawListViewColumnHeaderEventArgs.cs
- XmlToDatasetMap.cs
- SelectionItemProviderWrapper.cs
- SerializationSectionGroup.cs
- Component.cs
- _KerberosClient.cs
- GiveFeedbackEventArgs.cs
- HandoffBehavior.cs
- QueryOperationResponseOfT.cs
- OperationSelectorBehavior.cs
- PolyLineSegment.cs
- CodeDomConfigurationHandler.cs
- CacheEntry.cs
- ScrollViewerAutomationPeer.cs
- MessageQueue.cs
- PersonalizationStateInfoCollection.cs
- DefaultMemberAttribute.cs
- QuestionEventArgs.cs
- RuleConditionDialog.cs
- SqlTriggerAttribute.cs
- SpecularMaterial.cs
- TextCollapsingProperties.cs
- CustomValidator.cs
- ChannelServices.cs
- ReflectionHelper.cs
- ComEventsMethod.cs
- OleStrCAMarshaler.cs
- AttributeParameterInfo.cs
- PeerContact.cs
- HtmlString.cs
- ArgumentValidation.cs
- TrackBar.cs
- OleDbException.cs
- WindowExtensionMethods.cs
- ToolStripSeparator.cs
- ArrayWithOffset.cs
- WebPartManager.cs
- RawUIStateInputReport.cs
- SqlTrackingService.cs
- EdgeModeValidation.cs
- WebPartExportVerb.cs
- login.cs
- DragDeltaEventArgs.cs
- ButtonRenderer.cs
- FixedSOMLineCollection.cs
- QueryOutputWriterV1.cs
- ProxySimple.cs
- RecognitionResult.cs
- SQLInt64Storage.cs
- UIntPtr.cs
- BoolExpressionVisitors.cs
- SettingsPropertyCollection.cs
- EdmComplexPropertyAttribute.cs
- HttpRequest.cs
- HttpHandlersSection.cs
- ToolboxBitmapAttribute.cs
- ProxyHwnd.cs
- XmlILAnnotation.cs
- RemoteWebConfigurationHostStream.cs
- RolePrincipal.cs
- Operator.cs
- CharEntityEncoderFallback.cs
- SystemWebExtensionsSectionGroup.cs
- RelatedImageListAttribute.cs
- GC.cs
- TraceUtility.cs
- UIElementPropertyUndoUnit.cs
- ColumnTypeConverter.cs
- Graphics.cs
- RenderingEventArgs.cs
- UrlMappingsModule.cs
- NamedPipeProcessProtocolHandler.cs
- UnionCodeGroup.cs
- SettingsProperty.cs
- NullableDoubleSumAggregationOperator.cs
- CqlQuery.cs
- GlobalizationSection.cs
- ElementHost.cs
- NullExtension.cs
- BaseCodePageEncoding.cs
- ClaimTypes.cs
- FixedSchema.cs
- Exceptions.cs
- TargetConverter.cs
- GPRECT.cs
- ListViewItemCollectionEditor.cs
- ListItemConverter.cs
- ProcessProtocolHandler.cs
- IgnoreDataMemberAttribute.cs
- QueryCursorEventArgs.cs
- WindowsListViewItemStartMenu.cs
- Invariant.cs
- AuthorizationSection.cs
- AsyncOperationManager.cs