Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- brushes.cs
- RoutedEventConverter.cs
- BatchStream.cs
- XmlNamespaceMapping.cs
- DrawListViewSubItemEventArgs.cs
- ArrayTypeMismatchException.cs
- DataGridViewButtonColumn.cs
- XmlNamespaceDeclarationsAttribute.cs
- Identifier.cs
- SerializationInfo.cs
- Lazy.cs
- CombinedHttpChannel.cs
- Drawing.cs
- CqlQuery.cs
- OdbcParameterCollection.cs
- SystemColors.cs
- GridViewSortEventArgs.cs
- TiffBitmapEncoder.cs
- regiisutil.cs
- RecognitionEventArgs.cs
- SoapAttributes.cs
- SortedSet.cs
- TraceEventCache.cs
- ObjectTypeMapping.cs
- PathGeometry.cs
- PointAnimationUsingPath.cs
- CompoundFileStorageReference.cs
- Matrix3DStack.cs
- Soap.cs
- ZipIOFileItemStream.cs
- BaseAppDomainProtocolHandler.cs
- HttpModuleCollection.cs
- ListViewPagedDataSource.cs
- TextDpi.cs
- ToolZone.cs
- login.cs
- MarshalByValueComponent.cs
- RegexCapture.cs
- HtmlControlPersistable.cs
- BaseCollection.cs
- ByteStack.cs
- Token.cs
- AVElementHelper.cs
- CardSpaceSelector.cs
- TypeCodeDomSerializer.cs
- XmlArrayItemAttributes.cs
- MessageTraceRecord.cs
- StrongNameMembershipCondition.cs
- Int64AnimationUsingKeyFrames.cs
- PartialTrustVisibleAssembliesSection.cs
- ModelTreeEnumerator.cs
- DataMemberFieldConverter.cs
- ByteStream.cs
- SharedUtils.cs
- TextEditorCopyPaste.cs
- EpmContentSerializerBase.cs
- SchemaInfo.cs
- OpenTypeCommon.cs
- CachedCompositeFamily.cs
- OpenTypeLayout.cs
- AppDomainGrammarProxy.cs
- SoapSchemaMember.cs
- XmlnsDictionary.cs
- WebPartConnectionsEventArgs.cs
- RotateTransform.cs
- AlternateView.cs
- InkCanvas.cs
- IISUnsafeMethods.cs
- XamlTreeBuilder.cs
- ErrorStyle.cs
- MailFileEditor.cs
- ClientRolePrincipal.cs
- ByteFacetDescriptionElement.cs
- ReadOnlyCollectionBase.cs
- OrderedDictionaryStateHelper.cs
- PrintEvent.cs
- DBAsyncResult.cs
- CodeMemberField.cs
- SspiSafeHandles.cs
- Regex.cs
- objectresult_tresulttype.cs
- relpropertyhelper.cs
- SelectionHighlightInfo.cs
- ListBox.cs
- XmlSchemaProviderAttribute.cs
- xsdvalidator.cs
- FormsAuthenticationModule.cs
- TemplateXamlTreeBuilder.cs
- TextFormatter.cs
- DataGridViewImageColumn.cs
- ClientCredentialsElement.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- OracleSqlParser.cs
- InputScopeConverter.cs
- RetrieveVirtualItemEventArgs.cs
- EventManager.cs
- RelationshipConverter.cs
- ConditionBrowserDialog.cs
- InputProviderSite.cs
- httpapplicationstate.cs