Browse Source

Tidied up RendererMixin.

Filename wasn't matching class name so renamed file and tidied some
stuff up.
pull/386/head
Steven Kirk 11 years ago
parent
commit
b4e23af46e
  1. 2
      src/Perspex.SceneGraph/Perspex.SceneGraph.csproj
  2. 44
      src/Perspex.SceneGraph/Rendering/RendererMixin.cs

2
src/Perspex.SceneGraph/Perspex.SceneGraph.csproj

@ -118,7 +118,7 @@
<Compile Include="Rect.cs" />
<Compile Include="Rendering\IRenderRoot.cs" />
<Compile Include="Rendering\IRenderQueueManager.cs" />
<Compile Include="Rendering\RendererBase.cs" />
<Compile Include="Rendering\RendererMixin.cs" />
<Compile Include="Rendering\RenderQueueManager.cs" />
<Compile Include="Size.cs" />
<Compile Include="Thickness.cs" />

44
src/Perspex.SceneGraph/Rendering/RendererBase.cs → src/Perspex.SceneGraph/Rendering/RendererMixin.cs

@ -5,14 +5,13 @@ using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using Perspex.Media;
using Perspex.Platform;
namespace Perspex.Rendering
{
/// <summary>
/// Base class for standard renderers.
/// Extension methods for rendering.
/// </summary>
/// <remarks>
/// This class provides implements the platform-independent parts of <see cref="IRenderTarget"/>.
@ -21,11 +20,20 @@ namespace Perspex.Rendering
[SuppressMessage("ReSharper", "ForCanBeConvertedToForeach")]
public static class RendererMixin
{
static int s_frameNum;
static int s_fps;
static int s_currentFrames;
static TimeSpan s_lastMeasure;
static readonly Stopwatch s_stopwatch = Stopwatch.StartNew();
private static int s_frameNum;
private static int s_fps;
private static int s_currentFrames;
private static TimeSpan s_lastMeasure;
private static readonly Stopwatch s_stopwatch = Stopwatch.StartNew();
private static readonly Stack<List<IVisual>> s_listPool = new Stack<List<IVisual>>();
private static readonly ZIndexComparer s_visualComparer = new ZIndexComparer();
/// <summary>
/// Gets or sets a value which determines whether an FPS counted will be drawn on each
/// rendered frame.
/// </summary>
public static bool DrawFpsCounter { get; set; }
/// <summary>
/// Renders the specified visual.
/// </summary>
@ -62,13 +70,10 @@ namespace Perspex.Rendering
}
}
public static bool DrawFpsCounter { get; set; }
/// <summary>
/// Renders the specified visual.
/// </summary>
/// <param name="visual">The visual to render.</param>
///
/// <param name="context">The drawing context.</param>
public static void Render(this DrawingContext context, IVisual visual)
{
@ -103,29 +108,24 @@ namespace Perspex.Rendering
}
}
static readonly Stack<List<IVisual>> ListPool = new Stack<List<IVisual>>();
static readonly ZIndexComparer VisualComparer = new ZIndexComparer();
class ZIndexComparer : IComparer<IVisual>
{
public int Compare(IVisual x, IVisual y) => x.ZIndex.CompareTo(y.ZIndex);
}
static void ReturnListToPool(List<IVisual> lst)
{
lst.Clear();
ListPool.Push(lst);
s_listPool.Push(lst);
}
static List<IVisual> GetSortedVisualList(IReadOnlyList<IVisual> source)
{
var lst = ListPool.Count == 0 ? new List<IVisual>() : ListPool.Pop();
var lst = s_listPool.Count == 0 ? new List<IVisual>() : s_listPool.Pop();
for (var c = 0; c < source.Count; c++)
lst.Add(source[c]);
lst.Sort(VisualComparer);
lst.Sort(s_visualComparer);
return lst;
}
class ZIndexComparer : IComparer<IVisual>
{
public int Compare(IVisual x, IVisual y) => x.ZIndex.CompareTo(y.ZIndex);
}
}
}
Loading…
Cancel
Save