Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- AtlasWeb.Designer.cs
- ThreadStartException.cs
- DropAnimation.xaml.cs
- StaticFileHandler.cs
- ConfigurationLockCollection.cs
- NonVisualControlAttribute.cs
- RuntimeCompatibilityAttribute.cs
- CompositeScriptReferenceEventArgs.cs
- CheckBoxField.cs
- Environment.cs
- RuleSettingsCollection.cs
- XmlDesignerDataSourceView.cs
- GetWinFXPath.cs
- SystemWebExtensionsSectionGroup.cs
- ScalarConstant.cs
- UrlAuthFailedErrorFormatter.cs
- DataGridViewCellEventArgs.cs
- ServiceManagerHandle.cs
- TextBox.cs
- Parameter.cs
- WebSysDisplayNameAttribute.cs
- ListControl.cs
- StructuredTypeInfo.cs
- ProgramNode.cs
- UriTemplateClientFormatter.cs
- CatalogZone.cs
- DeobfuscatingStream.cs
- ImageFormatConverter.cs
- HttpResponseWrapper.cs
- UriTemplateVariableQueryValue.cs
- NativeMethods.cs
- ValidationPropertyAttribute.cs
- WebPartTransformer.cs
- TerminateDesigner.cs
- DockAndAnchorLayout.cs
- OleDbCommandBuilder.cs
- SqlCommandSet.cs
- FontStretchConverter.cs
- Pkcs9Attribute.cs
- KeyValueSerializer.cs
- ImageAutomationPeer.cs
- RichTextBoxAutomationPeer.cs
- Dynamic.cs
- DeferredBinaryDeserializerExtension.cs
- WindowProviderWrapper.cs
- TabControl.cs
- _BaseOverlappedAsyncResult.cs
- DataGridBoolColumn.cs
- DocumentsTrace.cs
- IPPacketInformation.cs
- XmlSchemaSimpleType.cs
- Socket.cs
- EpmCustomContentWriterNodeData.cs
- DataControlFieldsEditor.cs
- oledbmetadatacollectionnames.cs
- BaseUriHelper.cs
- VBCodeProvider.cs
- PrintControllerWithStatusDialog.cs
- NativeMethods.cs
- SchemaConstraints.cs
- ConfigUtil.cs
- HttpHeaderCollection.cs
- TableColumn.cs
- HiddenFieldPageStatePersister.cs
- WebDisplayNameAttribute.cs
- HGlobalSafeHandle.cs
- MeasurementDCInfo.cs
- _ConnectOverlappedAsyncResult.cs
- TimeSpanValidator.cs
- ButtonFlatAdapter.cs
- DbResourceAllocator.cs
- Brushes.cs
- DataReceivedEventArgs.cs
- XmlNodeList.cs
- Annotation.cs
- DataExpression.cs
- BitVec.cs
- BooleanAnimationUsingKeyFrames.cs
- DataRow.cs
- UriWriter.cs
- DesignerEditorPartChrome.cs
- ObjectToIdCache.cs
- EnumConverter.cs
- FatalException.cs
- FormViewInsertEventArgs.cs
- PointF.cs
- _NetworkingPerfCounters.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- DynamicValidatorEventArgs.cs
- ApplicationSecurityInfo.cs
- QilPatternVisitor.cs
- VScrollBar.cs
- EtwProvider.cs
- AccessViolationException.cs
- RadialGradientBrush.cs
- IgnoreDataMemberAttribute.cs
- MainMenu.cs
- BamlRecordHelper.cs
- FilterableData.cs
- DefaultShape.cs