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
- ManagedFilter.cs
- WebBrowserContainer.cs
- DefinitionProperties.cs
- GlyphShapingProperties.cs
- AttachedAnnotation.cs
- Vector3DAnimationBase.cs
- PeerChannelFactory.cs
- BindingEditor.xaml.cs
- ToolStripItemImageRenderEventArgs.cs
- DiagnosticEventProvider.cs
- OleDbDataAdapter.cs
- NumberFormatter.cs
- ToolStripRenderEventArgs.cs
- PopupEventArgs.cs
- controlskin.cs
- EventBuilder.cs
- ValidatingReaderNodeData.cs
- MaskedTextBox.cs
- ImageSourceConverter.cs
- HttpResponseHeader.cs
- BackStopAuthenticationModule.cs
- KeyValueConfigurationCollection.cs
- ZipIOBlockManager.cs
- FileUtil.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- CodeExpressionStatement.cs
- DynamicPropertyReader.cs
- FileInfo.cs
- SimpleTextLine.cs
- DataContractSerializerElement.cs
- SerialErrors.cs
- SemanticKeyElement.cs
- SiteMapProvider.cs
- SoapServerProtocol.cs
- ResourceManager.cs
- Solver.cs
- SpeechRecognitionEngine.cs
- COM2TypeInfoProcessor.cs
- XPathAxisIterator.cs
- SolidColorBrush.cs
- Pair.cs
- ValidatingCollection.cs
- ProviderSettings.cs
- NumberAction.cs
- KeyboardInputProviderAcquireFocusEventArgs.cs
- TypographyProperties.cs
- ToolStripPanelRenderEventArgs.cs
- HierarchicalDataSourceControl.cs
- AbsoluteQuery.cs
- CompensateDesigner.cs
- ExternalCalls.cs
- XmlSchemaDatatype.cs
- ModelItemExtensions.cs
- PtsCache.cs
- WebPartMovingEventArgs.cs
- ChangeDirector.cs
- WebEventTraceProvider.cs
- ControlParameter.cs
- WebServiceReceiveDesigner.cs
- DoubleConverter.cs
- Typeface.cs
- ManipulationDevice.cs
- RankException.cs
- DefaultValueTypeConverter.cs
- NavigationWindowAutomationPeer.cs
- TriState.cs
- DSASignatureFormatter.cs
- Models.cs
- NonVisualControlAttribute.cs
- IndicCharClassifier.cs
- TextParaClient.cs
- Light.cs
- ControlBuilder.cs
- ImageKeyConverter.cs
- DateTimeFormatInfo.cs
- Single.cs
- SimpleRecyclingCache.cs
- PolyBezierSegment.cs
- WebBrowsableAttribute.cs
- ListViewItem.cs
- _OSSOCK.cs
- TextTreeDeleteContentUndoUnit.cs
- PasswordPropertyTextAttribute.cs
- MessageQueueAccessControlEntry.cs
- DynamicRouteExpression.cs
- XmlCharacterData.cs
- ValueSerializer.cs
- ManagedCodeMarkers.cs
- SystemNetworkInterface.cs
- SmiMetaData.cs
- PermissionSetTriple.cs
- Atom10FormatterFactory.cs
- LocalizedNameDescriptionPair.cs
- XmlNodeComparer.cs
- CurrencyWrapper.cs
- StatusBarPanel.cs
- MeasureData.cs
- FixedPage.cs
- ValueType.cs
- BitVector32.cs