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
- ObjectDataSourceFilteringEventArgs.cs
- ExpressionBuilder.cs
- ExpandedWrapper.cs
- ProvidersHelper.cs
- ProtocolsConfigurationEntry.cs
- AvTrace.cs
- TdsParserSessionPool.cs
- CryptoHelper.cs
- RequiredFieldValidator.cs
- TabControl.cs
- PropertyStore.cs
- TableSectionStyle.cs
- BidPrivateBase.cs
- AutoGeneratedFieldProperties.cs
- SapiRecoInterop.cs
- GPRECTF.cs
- ParameterReplacerVisitor.cs
- ErrorWrapper.cs
- AutomationEvent.cs
- SoapFaultCodes.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- ResponseStream.cs
- PictureBox.cs
- DynamicPropertyHolder.cs
- DataSourceCacheDurationConverter.cs
- ColumnReorderedEventArgs.cs
- WeakReferenceKey.cs
- SafeEventLogWriteHandle.cs
- AuthorizationSection.cs
- JulianCalendar.cs
- ComponentEvent.cs
- CmsInterop.cs
- TraceLevelStore.cs
- DateTimeFormatInfoScanner.cs
- FileCodeGroup.cs
- SerializerProvider.cs
- JsonXmlDataContract.cs
- OleDbFactory.cs
- SqlReferenceCollection.cs
- ISO2022Encoding.cs
- TypeDefinition.cs
- CodePrimitiveExpression.cs
- EventEntry.cs
- WebContext.cs
- dataprotectionpermission.cs
- ParsedAttributeCollection.cs
- WindowHelperService.cs
- EventProxy.cs
- FormsAuthenticationCredentials.cs
- DetailsViewUpdatedEventArgs.cs
- PreservationFileReader.cs
- SynchronizedKeyedCollection.cs
- RequestQueryParser.cs
- PathBox.cs
- GenerateScriptTypeAttribute.cs
- HtmlImageAdapter.cs
- DataServiceBehavior.cs
- ExpressionConverter.cs
- UIPropertyMetadata.cs
- HandlerWithFactory.cs
- WebPart.cs
- UnicodeEncoding.cs
- DesignerSelectionListAdapter.cs
- InkCanvasSelectionAdorner.cs
- ZoomPercentageConverter.cs
- TypeName.cs
- ObjectStateManager.cs
- DataTable.cs
- COM2ExtendedUITypeEditor.cs
- MemberDescriptor.cs
- InputReportEventArgs.cs
- GridEntryCollection.cs
- SoapEnumAttribute.cs
- Brush.cs
- SspiSecurityToken.cs
- GACMembershipCondition.cs
- DnsPermission.cs
- ServiceProviders.cs
- DetailsViewCommandEventArgs.cs
- WebPartEditorOkVerb.cs
- WebPartVerbsEventArgs.cs
- AliasExpr.cs
- OracleBinary.cs
- Funcletizer.cs
- SiteIdentityPermission.cs
- FlowDocumentScrollViewer.cs
- FactoryRecord.cs
- TextBoxBase.cs
- RadioButtonPopupAdapter.cs
- MethodBuilder.cs
- MonthChangedEventArgs.cs
- EdmProperty.cs
- References.cs
- ApplicationSecurityManager.cs
- BufferedGraphicsContext.cs
- CodeAccessSecurityEngine.cs
- BitmapEffect.cs
- MergeExecutor.cs
- ObjectQueryExecutionPlan.cs
- DiscreteKeyFrames.cs