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
- CharConverter.cs
- UpdateRecord.cs
- MethodToken.cs
- SystemWebCachingSectionGroup.cs
- BindingCollection.cs
- WorkflowOwnershipException.cs
- StatusBarAutomationPeer.cs
- DynamicValidatorEventArgs.cs
- ContainsRowNumberChecker.cs
- HtmlShim.cs
- Emitter.cs
- HtmlInputReset.cs
- SerializableAuthorizationContext.cs
- AccessDataSourceWizardForm.cs
- ApplicationDirectoryMembershipCondition.cs
- BaseCodeDomTreeGenerator.cs
- AutomationPropertyInfo.cs
- ReadOnlyMetadataCollection.cs
- EncryptedType.cs
- ProfilePropertySettings.cs
- ViewBox.cs
- DeviceSpecificChoiceCollection.cs
- ReliableChannelBinder.cs
- ShapeTypeface.cs
- HtmlInputButton.cs
- AsyncResult.cs
- XmlSchemaSimpleTypeRestriction.cs
- EmptyControlCollection.cs
- WebReferenceCollection.cs
- XmlParserContext.cs
- DiscreteKeyFrames.cs
- FileLevelControlBuilderAttribute.cs
- ClientApiGenerator.cs
- DbProviderServices.cs
- MarkupExtensionParser.cs
- util.cs
- UniqueEventHelper.cs
- ResourcePool.cs
- QilNode.cs
- XmlSchemaIdentityConstraint.cs
- SQLString.cs
- GridEntry.cs
- DbConnectionPool.cs
- CapabilitiesAssignment.cs
- DataViewManagerListItemTypeDescriptor.cs
- DbConnectionStringBuilder.cs
- Single.cs
- QilInvokeEarlyBound.cs
- XmlExceptionHelper.cs
- DictionarySurrogate.cs
- AccessViolationException.cs
- JoinElimination.cs
- MultipleFilterMatchesException.cs
- XmlBinaryReader.cs
- DateTimeSerializationSection.cs
- SpecularMaterial.cs
- StylusLogic.cs
- ClassGenerator.cs
- MouseButton.cs
- RSAPKCS1KeyExchangeFormatter.cs
- CustomPopupPlacement.cs
- GridViewUpdatedEventArgs.cs
- MessageRpc.cs
- PointConverter.cs
- BaseTreeIterator.cs
- AssemblyCache.cs
- GenericTypeParameterBuilder.cs
- SortedList.cs
- SQLInt16Storage.cs
- X509SecurityTokenProvider.cs
- AuthenticatingEventArgs.cs
- CodeMethodInvokeExpression.cs
- Operand.cs
- ResourceExpressionBuilder.cs
- cache.cs
- WpfKnownMember.cs
- FileVersion.cs
- Pkcs7Signer.cs
- securestring.cs
- externdll.cs
- NonParentingControl.cs
- DataSourceView.cs
- XPathArrayIterator.cs
- LazyTextWriterCreator.cs
- IncrementalHitTester.cs
- WindowsStreamSecurityElement.cs
- HandleCollector.cs
- MSAAWinEventWrap.cs
- AttachedAnnotation.cs
- SelectionItemProviderWrapper.cs
- AtomMaterializerLog.cs
- SpeechAudioFormatInfo.cs
- Restrictions.cs
- UIElementHelper.cs
- DiscoveryClientDuplexChannel.cs
- WebException.cs
- MenuCommand.cs
- ParsedAttributeCollection.cs
- DoubleCollectionValueSerializer.cs
- SQLSingleStorage.cs