Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- MonitoringDescriptionAttribute.cs
- EventBuilder.cs
- IntSecurity.cs
- AuthorizationSection.cs
- PersonalizationDictionary.cs
- AdjustableArrowCap.cs
- StylusOverProperty.cs
- UnsafeNativeMethods.cs
- LocationUpdates.cs
- ParamArrayAttribute.cs
- OleDbCommandBuilder.cs
- SectionUpdates.cs
- XmlSerializationGeneratedCode.cs
- Permission.cs
- WsatServiceAddress.cs
- SectionInput.cs
- BinaryParser.cs
- CheckBox.cs
- ResXBuildProvider.cs
- Propagator.ExtentPlaceholderCreator.cs
- IItemProperties.cs
- AppDomainResourcePerfCounters.cs
- TransformerInfoCollection.cs
- HwndHost.cs
- RangeBaseAutomationPeer.cs
- HierarchicalDataSourceControl.cs
- Win32KeyboardDevice.cs
- SearchForVirtualItemEventArgs.cs
- SqlClientWrapperSmiStream.cs
- TemplateBindingExtension.cs
- ConnectionPoint.cs
- RoleManagerSection.cs
- SafeRightsManagementSessionHandle.cs
- XmlSchemaGroupRef.cs
- HostedNamedPipeTransportManager.cs
- TextEditorSelection.cs
- UserNameServiceElement.cs
- RunClient.cs
- PathTooLongException.cs
- AsymmetricSignatureFormatter.cs
- FormClosingEvent.cs
- SHA384.cs
- SourceLineInfo.cs
- SqlDataReaderSmi.cs
- NullableFloatAverageAggregationOperator.cs
- ToolStripOverflowButton.cs
- SerializationException.cs
- _StreamFramer.cs
- Int32Animation.cs
- SamlDelegatingWriter.cs
- SimpleApplicationHost.cs
- ToolBarPanel.cs
- Model3D.cs
- StyleHelper.cs
- ExitEventArgs.cs
- QueryOpeningEnumerator.cs
- compensatingcollection.cs
- WebPartConnectionsCancelEventArgs.cs
- ChangeProcessor.cs
- ContextMenu.cs
- NativeRecognizer.cs
- SynchronizedDispatch.cs
- Options.cs
- SQlBooleanStorage.cs
- SizeF.cs
- EventLogPermissionHolder.cs
- RowCache.cs
- MimeObjectFactory.cs
- HttpValueCollection.cs
- SingleAnimationBase.cs
- MissingMethodException.cs
- CompositeCollectionView.cs
- PolyLineSegment.cs
- IteratorDescriptor.cs
- RewritingSimplifier.cs
- ContextMenu.cs
- DataGridBoolColumn.cs
- ServiceOperation.cs
- _Semaphore.cs
- WindowsListViewGroupHelper.cs
- MetadataHelper.cs
- FloaterParaClient.cs
- GridViewDeletedEventArgs.cs
- Symbol.cs
- ValidatorAttribute.cs
- LicenseManager.cs
- SettingsProperty.cs
- HostExecutionContextManager.cs
- Publisher.cs
- MenuItemCollection.cs
- AudioFormatConverter.cs
- TdsParserHelperClasses.cs
- PropertyTabChangedEvent.cs
- FreeFormDragDropManager.cs
- XpsViewerException.cs
- ListViewInsertionMark.cs
- WorkflowServiceHost.cs
- SelectionProviderWrapper.cs
- ColorMap.cs
- DataGridPageChangedEventArgs.cs