From: Jeff R. <jef...@us...> - 2005-11-21 19:42:23
|
Update of /cvsroot/svgdomcsharp/SharpVectorGraphics/src/SharpVectorBindings/SharpVectors/Dom/Svg/Rendering In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21149/src/SharpVectorBindings/SharpVectors/Dom/Svg/Rendering Added Files: ISvgRenderer.cs RenderingNode.cs Log Message: Removed from SharpVecotObjectModel and move to SharpVectorBindings --- NEW FILE: RenderingNode.cs --- using System; using System.Drawing; using SharpVectors.Dom.Svg; namespace SharpVectors.Dom.Svg.Rendering { /// <summary> /// Defines the interface required for a rendering node to interact with the renderer and the SVG DOM /// </summary> /// <developer>ke...@ke...</developer> /// <completed>0</completed> public abstract class RenderingNode { #region Fields protected ISvgElement element; #endregion protected RenderingNode(ISvgElement element) { this.element = element; } public ISvgElement Element { get{return element;} } protected RectangleF screenRegion = RectangleF.Empty; public RectangleF ScreenRegion { get { return screenRegion; } set { screenRegion = value; } } public virtual bool NeedRender(ISvgRenderer renderer) { // We make this assumption so that the first pass is still fast // That way we don't have to calculate the screen regions // Before a full rerender if (screenRegion == RectangleF.Empty) return true; if (renderer.InvalidRect == RectangleF.Empty) return true; if (renderer.InvalidRect.IntersectsWith(screenRegion)) // TODO: Eventually add a full path check here? return true; return false; } // define empty handlers by default public virtual void BeforeRender(ISvgRenderer renderer) {} public virtual void Render(ISvgRenderer renderer) {} public virtual void AfterRender(ISvgRenderer renderer) {} } } --- NEW FILE: ISvgRenderer.cs --- using System; using System.Xml; using System.Drawing; using SharpVectors.Dom.Svg; namespace SharpVectors.Dom.Svg.Rendering { public delegate void RenderEvent(RectangleF updatedRect); /// <summary> /// Defines the interface required by a renderer to render the SVG DOM. /// </summary> /// <remarks> /// The <see cref="ISvgRenderer">ISvgRenderer</see> is used to render /// a <see cref="SvgElement">SvgElement</see> object onto a bitmap. /// During the rendering process, it will also generate /// <see cref="RenderingNode">RenderingNode</see> objects for each /// <see cref="XmlElement">XmlElement</see> object in the DOM tree to /// assist in the rendering. /// </remarks> /// <developer>ke...@ke...</developer> /// <completed>0</completed> public interface ISvgRenderer { /// <summary> /// The window that is being rendered to. /// </summary> ISvgWindow Window { get; set; } /// <summary> /// Creates a <see cref="RenderingNode">RenderingNode</see> for /// <c>node</c> so that it may be rendered. /// </summary> /// <param name="node"> /// The <see cref="XmlEleemnt">XmlElement</see> object for which /// the <see cref="RenderingNode">RenderingNode</see> object is /// created. /// </param> /// <returns> /// A new <see cref="RenderingNode">RenderingNode</see> object /// which can be used to render <c>node</c>. /// </returns> RenderingNode GetRenderingNode( ISvgElement node); /// <summary> /// Creates a new <see cref="ISvgRenderer">ISvgRenderer</see> object. /// This method is not used. /// </summary> ISvgRenderer GetRenderer(); /// <summary> /// Renders an <see cref="SvgElement">SvgElement</see> object onto a /// bitmap and returns that bitmap. /// </summary> /// <param name="node"> /// The SvgElement object to be rendered. /// </param> /// <returns> /// A bitmap with <c>node</c> rendered onto it. /// </returns> Bitmap Render( ISvgElement node); /// <summary> /// Renders an <see cref="SvgDocument">SvgDocument</see> object onto /// a bitmap and returns that bitmap. /// </summary> /// <param name="node"> /// The SvgDocument object to be rendered. /// </param> /// <returns> /// A bitmap with <c>node</c> rendered onto it. /// </returns> Bitmap Render( ISvgDocument node); /// <summary> /// Controls the rendering of the document. /// </summary> RectangleF InvalidRect { get; set; } /// <summary> /// Allows you to establish or add to the existing invalidation rectangle /// </summary> /// <param name="rect"></param> void InvalidateRect(RectangleF rect); /// <summary> /// Event Delegate to report when the SVG renderer does it's work. /// </summary> RenderEvent OnRender { get; set; } } } |