Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / MS / Internal / PtsHost / PageVisual.cs / 1 / PageVisual.cs
//----------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// File: PageVisual.cs
//
// Description: Visual representing a PTS page.
//
// History:
// 11/11/2003 : [....] - created.
//
//---------------------------------------------------------------------------
using System;
using System.Diagnostics;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Threading;
namespace MS.Internal.PtsHost
{
// ---------------------------------------------------------------------
// Visual representing a PTS page.
// ---------------------------------------------------------------------
internal class PageVisual : DrawingVisual, IContentHost
{
// ------------------------------------------------------------------
// Create a visual representing a PTS page.
// -----------------------------------------------------------------
internal PageVisual(FlowDocumentPage owner)
{
_owner = new WeakReference(owner);
}
// ------------------------------------------------------------------
// Set information about background that is necessary for rendering
// process.
//
// backgroundBrush - The background brush used for background.
// renderBounds - Render bounds of the visual.
// ------------------------------------------------------------------
internal void DrawBackground(Brush backgroundBrush, Rect renderBounds)
{
if (_backgroundBrush != backgroundBrush || _renderBounds != renderBounds)
{
_backgroundBrush = backgroundBrush;
_renderBounds = renderBounds;
// Open DrawingContext and draw background.
// If background is not set, Open will clean the render data, but it
// will preserve visual children.
using (DrawingContext dc = RenderOpen())
{
if (_backgroundBrush != null)
{
dc.DrawRectangle(_backgroundBrush, null, _renderBounds);
}
else
{
dc.DrawRectangle(Brushes.Transparent, null, _renderBounds);
}
}
}
}
// -----------------------------------------------------------------
// Get/Set visual child.
// ------------------------------------------------------------------
internal Visual Child
{
get
{
VisualCollection vc = this.Children;
Debug.Assert(vc.Count <= 1);
return (vc.Count == 0) ? null : vc[0];
}
set
{
VisualCollection vc = this.Children;
Debug.Assert(vc.Count <= 1);
if (vc.Count == 0)
{
vc.Add(value);
}
else if (vc[0] != value)
{
vc[0] = value;
}
// else Visual child is the same as already stored; do nothing.
}
}
// -----------------------------------------------------------------
// Clear its DrawingContext
// Opening and closing a DrawingContext, clears it.
// -----------------------------------------------------------------
internal void ClearDrawingContext()
{
DrawingContext ctx = this.RenderOpen();
if(ctx != null)
ctx.Close();
}
//-------------------------------------------------------------------
//
// IContentHost Members
//
//--------------------------------------------------------------------
#region IContentHost Members
///
///
///
IInputElement IContentHost.InputHitTest(Point point)
{
IContentHost host = _owner.Target as IContentHost;
if (host != null)
{
return host.InputHitTest(point);
}
return null;
}
///
///
///
ReadOnlyCollection IContentHost.GetRectangles(ContentElement child)
{
IContentHost host = _owner.Target as IContentHost;
if (host != null)
{
return host.GetRectangles(child);
}
return new ReadOnlyCollection(new List(0));
}
///
///
///
IEnumerator IContentHost.HostedElements
{
get
{
IContentHost host = _owner.Target as IContentHost;
if (host != null)
{
return host.HostedElements;
}
return null;
}
}
///
///
///
void IContentHost.OnChildDesiredSizeChanged(UIElement child)
{
IContentHost host = _owner.Target as IContentHost;
if (host != null)
{
host.OnChildDesiredSizeChanged(child);
}
}
#endregion IContentHost Members
// -----------------------------------------------------------------
// Reference to DocumentPage that owns this visual.
// ------------------------------------------------------------------
private readonly WeakReference _owner;
// ------------------------------------------------------------------
// Brush used for background rendering.
// -----------------------------------------------------------------
private Brush _backgroundBrush;
// ------------------------------------------------------------------
// Render bounds.
// -----------------------------------------------------------------
private Rect _renderBounds;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- FrameworkElement.cs
- GuidConverter.cs
- CompilerScopeManager.cs
- DateTime.cs
- AppSettingsReader.cs
- NativeMethods.cs
- FrameworkContentElementAutomationPeer.cs
- ContainerUtilities.cs
- AttributedMetaModel.cs
- ExpandCollapsePattern.cs
- HwndSourceKeyboardInputSite.cs
- FontSizeConverter.cs
- QueryResults.cs
- DataGridColumn.cs
- HostExecutionContextManager.cs
- ListViewEditEventArgs.cs
- OdbcTransaction.cs
- ErrorFormatterPage.cs
- ChannelManager.cs
- LinkTarget.cs
- UserControl.cs
- ExpressionWriter.cs
- SerializationAttributes.cs
- TextInfo.cs
- DataServiceProcessingPipeline.cs
- GeometryValueSerializer.cs
- IISUnsafeMethods.cs
- ButtonPopupAdapter.cs
- Geometry.cs
- TableDetailsRow.cs
- TypedRowGenerator.cs
- ObjectSecurity.cs
- TextServicesCompartment.cs
- TraceRecord.cs
- TokenBasedSetEnumerator.cs
- initElementDictionary.cs
- XamlVector3DCollectionSerializer.cs
- AtomContentProperty.cs
- Int32EqualityComparer.cs
- GC.cs
- SecurityUtils.cs
- DocumentGridPage.cs
- InteropBitmapSource.cs
- Missing.cs
- CodeSnippetStatement.cs
- HttpContext.cs
- DropShadowBitmapEffect.cs
- UndirectedGraph.cs
- HttpCacheVary.cs
- PersonalizationProviderCollection.cs
- XPathNodeInfoAtom.cs
- PropertyOverridesTypeEditor.cs
- CodeGenerator.cs
- SignedPkcs7.cs
- VisualState.cs
- RelationshipEndMember.cs
- PlatformCulture.cs
- Schema.cs
- DictionaryEntry.cs
- NavigateEvent.cs
- DbTransaction.cs
- XmlNodeComparer.cs
- PageStatePersister.cs
- UnionCqlBlock.cs
- CustomMenuItemCollection.cs
- SystemIPAddressInformation.cs
- Base64Stream.cs
- XmlDataImplementation.cs
- SurrogateEncoder.cs
- ReflectEventDescriptor.cs
- WebPartsPersonalization.cs
- TransactionOptions.cs
- RectangleGeometry.cs
- FileDialog.cs
- Graphics.cs
- PerfCounterSection.cs
- TemplateParser.cs
- DigestTraceRecordHelper.cs
- ToolStripDropDownMenu.cs
- DummyDataSource.cs
- PrimaryKeyTypeConverter.cs
- NumericPagerField.cs
- XmlSchemaSimpleTypeList.cs
- QilList.cs
- CutCopyPasteHelper.cs
- selecteditemcollection.cs
- PhysicalFontFamily.cs
- UrlRoutingModule.cs
- ListItemCollection.cs
- BStrWrapper.cs
- NetWebProxyFinder.cs
- EventlogProvider.cs
- CheckBoxRenderer.cs
- TextBoxLine.cs
- XmlReflectionImporter.cs
- MethodToken.cs
- CommonProperties.cs
- WeakRefEnumerator.cs
- LayoutEvent.cs
- PathFigure.cs