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
- Component.cs
- ListViewCancelEventArgs.cs
- SemanticBasicElement.cs
- RestHandler.cs
- PropertyManager.cs
- BamlLocalizableResource.cs
- GetRecipientListRequest.cs
- QueryStatement.cs
- ViewCellSlot.cs
- DrawingVisual.cs
- HealthMonitoringSectionHelper.cs
- NotificationContext.cs
- InterleavedZipPartStream.cs
- ResumeStoryboard.cs
- ExtenderControl.cs
- HwndSource.cs
- FileSecurity.cs
- Size.cs
- BufferedGraphics.cs
- TextModifier.cs
- PreservationFileWriter.cs
- DataContractSerializerSection.cs
- InputBindingCollection.cs
- XPathNodePointer.cs
- Gdiplus.cs
- UserControlParser.cs
- ButtonChrome.cs
- WS2007HttpBinding.cs
- httpapplicationstate.cs
- SafeRegistryHandle.cs
- comcontractssection.cs
- FlowDocumentView.cs
- PolicyAssertionCollection.cs
- HtmlInputText.cs
- DocumentViewerConstants.cs
- Stylus.cs
- FileEnumerator.cs
- MemberRelationshipService.cs
- XamlSerializer.cs
- OracleBFile.cs
- EditingMode.cs
- WhileDesigner.cs
- RouteParameter.cs
- StylusPointPropertyInfo.cs
- PersonalizationEntry.cs
- GridViewCancelEditEventArgs.cs
- DbConnectionPoolGroupProviderInfo.cs
- DefaultAsyncDataDispatcher.cs
- WhitespaceRule.cs
- MobileComponentEditorPage.cs
- _OverlappedAsyncResult.cs
- SequentialOutput.cs
- AuthenticationManager.cs
- Transform3D.cs
- CreateInstanceBinder.cs
- WorkflowServiceInstance.cs
- HttpCookie.cs
- EntityDataSourceMemberPath.cs
- QueryPageSettingsEventArgs.cs
- ReferentialConstraint.cs
- CalendarDateRange.cs
- TreeViewImageIndexConverter.cs
- DataObjectPastingEventArgs.cs
- CmsInterop.cs
- ReadOnlyHierarchicalDataSource.cs
- BaseHashHelper.cs
- BitConverter.cs
- InputProcessorProfilesLoader.cs
- XslVisitor.cs
- XmlSchemaDatatype.cs
- ListViewUpdatedEventArgs.cs
- MarkerProperties.cs
- ThaiBuddhistCalendar.cs
- HttpCapabilitiesBase.cs
- BitmapSizeOptions.cs
- OdbcConnectionOpen.cs
- ClientConfigPaths.cs
- HGlobalSafeHandle.cs
- StorageEndPropertyMapping.cs
- ParameterEditorUserControl.cs
- MsmqIntegrationAppDomainProtocolHandler.cs
- Hyperlink.cs
- StateMachineWorkflow.cs
- DataControlCommands.cs
- cookie.cs
- DebugTracing.cs
- BamlBinaryWriter.cs
- StickyNoteContentControl.cs
- MaskedTextBoxTextEditorDropDown.cs
- ModuleConfigurationInfo.cs
- ScrollData.cs
- StickyNoteHelper.cs
- BooleanFacetDescriptionElement.cs
- HwndSourceKeyboardInputSite.cs
- _DigestClient.cs
- DoubleConverter.cs
- ObjectMemberMapping.cs
- sqlmetadatafactory.cs
- BulletedList.cs
- _NetworkingPerfCounters.cs