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
- SqlCommandBuilder.cs
- EnvelopedSignatureTransform.cs
- RelationshipConverter.cs
- TreeNodeStyle.cs
- UIPropertyMetadata.cs
- RequestQueryParser.cs
- FreeIndexList.cs
- StrongTypingException.cs
- SmtpFailedRecipientsException.cs
- WebControlsSection.cs
- ValueQuery.cs
- Helpers.cs
- BinaryMethodMessage.cs
- MarshalByValueComponent.cs
- LinearGradientBrush.cs
- CodeAttachEventStatement.cs
- CodeSubDirectory.cs
- TypeSemantics.cs
- SecurityException.cs
- Base64WriteStateInfo.cs
- TextViewElement.cs
- ScalarType.cs
- GridItem.cs
- ServiceObjectContainer.cs
- XmlExpressionDumper.cs
- EditorAttributeInfo.cs
- CompilationUnit.cs
- DigestComparer.cs
- TabItemAutomationPeer.cs
- XPathScanner.cs
- Int16Converter.cs
- BaseAsyncResult.cs
- RemotingException.cs
- GeneralTransform2DTo3DTo2D.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- LineVisual.cs
- FamilyTypefaceCollection.cs
- HtmlFormParameterWriter.cs
- Pkcs9Attribute.cs
- TransportDefaults.cs
- cache.cs
- ObjectSet.cs
- ChannelSinkStacks.cs
- CodeCatchClauseCollection.cs
- DropDownList.cs
- Cursors.cs
- WinFormsSecurity.cs
- CharStorage.cs
- TextContainer.cs
- ButtonRenderer.cs
- SmiSettersStream.cs
- WindowsGraphicsCacheManager.cs
- CacheVirtualItemsEvent.cs
- StylusCaptureWithinProperty.cs
- DiscardableAttribute.cs
- WebPartExportVerb.cs
- ThreadStateException.cs
- DataListItem.cs
- DateTimeConverter2.cs
- MailBnfHelper.cs
- SourceChangedEventArgs.cs
- SmiGettersStream.cs
- EventPropertyMap.cs
- xml.cs
- SelectionItemPattern.cs
- TracePayload.cs
- TaiwanCalendar.cs
- WmlFormAdapter.cs
- Parameter.cs
- WindowsSidIdentity.cs
- ConversionHelper.cs
- ExpressionEditorAttribute.cs
- CacheMemory.cs
- XAMLParseException.cs
- SettingsContext.cs
- CodeCatchClause.cs
- WaitHandle.cs
- ProjectionCamera.cs
- GridEntry.cs
- StringUtil.cs
- GlyphTypeface.cs
- PartitionedStreamMerger.cs
- TextElementCollection.cs
- DataPagerFieldCollection.cs
- TemplateBindingExtensionConverter.cs
- InvalidFilterCriteriaException.cs
- Button.cs
- ServiceModelConfigurationSection.cs
- UpDownEvent.cs
- ValidationErrorCollection.cs
- ParserExtension.cs
- WindowsEditBoxRange.cs
- CustomValidator.cs
- SqlServer2KCompatibilityAnnotation.cs
- BitmapDecoder.cs
- SoapSchemaImporter.cs
- ImageMetadata.cs
- DBPropSet.cs
- EdmToObjectNamespaceMap.cs
- ActivityCodeDomSerializer.cs