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
- SharedDp.cs
- DesignTimeTemplateParser.cs
- Rect3DConverter.cs
- IndentedTextWriter.cs
- WebPartEditorOkVerb.cs
- LocatorBase.cs
- BoundingRectTracker.cs
- BaseWebProxyFinder.cs
- RadioButton.cs
- QueryConverter.cs
- SqlDuplicator.cs
- DesignerDeviceConfig.cs
- ApplicationActivator.cs
- SchemaAttDef.cs
- GroupBoxRenderer.cs
- SoapTransportImporter.cs
- RichTextBoxConstants.cs
- DetailsViewPageEventArgs.cs
- Compiler.cs
- XamlReaderHelper.cs
- CodeSpit.cs
- BaseContextMenu.cs
- DbSourceCommand.cs
- SafeUserTokenHandle.cs
- HtmlTableCell.cs
- PageEventArgs.cs
- FloatUtil.cs
- MsmqIntegrationBindingCollectionElement.cs
- WorkflowRuntimeService.cs
- TaskDesigner.cs
- SchemaManager.cs
- RunWorkerCompletedEventArgs.cs
- FieldCollectionEditor.cs
- CacheSection.cs
- ServiceBehaviorElementCollection.cs
- COM2ComponentEditor.cs
- ResourceReferenceKeyNotFoundException.cs
- Mappings.cs
- _OSSOCK.cs
- EditingScopeUndoUnit.cs
- LambdaCompiler.Generated.cs
- TransformGroup.cs
- BasicExpandProvider.cs
- ConsoleKeyInfo.cs
- FunctionDescription.cs
- NumericUpDownAccelerationCollection.cs
- RecordConverter.cs
- SystemIcmpV4Statistics.cs
- _NegoStream.cs
- SchemaObjectWriter.cs
- DrawingImage.cs
- XmlSchemaAny.cs
- Serializer.cs
- TypedElement.cs
- RuleElement.cs
- BinaryNode.cs
- Switch.cs
- Helpers.cs
- RealizedColumnsBlock.cs
- BackgroundWorker.cs
- SecurityPolicySection.cs
- AdornerPresentationContext.cs
- EntityDataReader.cs
- CompressEmulationStream.cs
- DbBuffer.cs
- Int32.cs
- CheckBoxList.cs
- OperatorExpressions.cs
- DataControlFieldCell.cs
- ToolStripItemTextRenderEventArgs.cs
- TemplatePropertyEntry.cs
- CodeTypeReferenceExpression.cs
- IdentityNotMappedException.cs
- ProtocolViolationException.cs
- WorkflowInstance.cs
- X500Name.cs
- MouseActionValueSerializer.cs
- JpegBitmapEncoder.cs
- ErrorRuntimeConfig.cs
- ProfileServiceManager.cs
- HashHelpers.cs
- DataColumnChangeEvent.cs
- AspNetPartialTrustHelpers.cs
- ParenthesizePropertyNameAttribute.cs
- ClientWindowsAuthenticationMembershipProvider.cs
- SafeTimerHandle.cs
- BufferedWebEventProvider.cs
- TypeSource.cs
- LinqDataSourceView.cs
- TreeNodeConverter.cs
- _Win32.cs
- DataListCommandEventArgs.cs
- AccessorTable.cs
- dataSvcMapFileLoader.cs
- RuleAction.cs
- DelegateHelpers.cs
- BitmapMetadata.cs
- initElementDictionary.cs
- UserControlCodeDomTreeGenerator.cs
- BindingList.cs