DotNet 4.8.1 build of DotNetBar
This commit is contained in:
229
PROMS/DotNetBar Source Code/Metro/Rendering/MetroRender.cs
Normal file
229
PROMS/DotNetBar Source Code/Metro/Rendering/MetroRender.cs
Normal file
@@ -0,0 +1,229 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using DevComponents.DotNetBar.Metro.ColorTables;
|
||||
using System.Drawing;
|
||||
|
||||
namespace DevComponents.DotNetBar.Metro.Rendering
|
||||
{
|
||||
public static class MetroRender
|
||||
{
|
||||
private static MetroRenderer[] _Renderers;
|
||||
static MetroRender()
|
||||
{
|
||||
_Renderers = new MetroRenderer[Enum.GetNames(typeof(Renderers)).Length];
|
||||
_Renderers[(int)Renderers.MetroForm] = new MetroFormRenderer();
|
||||
_Renderers[(int)Renderers.MetroTabItem] = new MetroTabItemPainter();
|
||||
_Renderers[(int)Renderers.MetroTabStrip] = new MetroTabStripPainter();
|
||||
_Renderers[(int)Renderers.MetroStatusBar] = new MetroStatusBarPainter();
|
||||
_Renderers[(int)Renderers.MetroToolbar] = new MetroToolbarPainter();
|
||||
_Renderers[(int)Renderers.MetroTileItem] = new MetroTileItemPainter();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Renders the MetroTileItem.
|
||||
/// </summary>
|
||||
/// <param name="item">MetroTileItem to render.</param>
|
||||
/// <param name="e">Rendering event arguments.</param>
|
||||
public static void Paint(MetroTileItem item, ItemPaintArgs pa)
|
||||
{
|
||||
MetroRenderer renderer = GetRenderer(Renderers.MetroTileItem);
|
||||
renderer.Render(GetRenderingInfo(item, pa, GetColorTable()));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Renders the MetroForm.
|
||||
/// </summary>
|
||||
/// <param name="form">Form to render.</param>
|
||||
/// <param name="e">Rendering event arguments.</param>
|
||||
public static void Paint(MetroAppForm form, PaintEventArgs e)
|
||||
{
|
||||
MetroRenderer renderer = GetRenderer(Renderers.MetroForm);
|
||||
renderer.Render(GetRenderingInfo(form, e, GetColorTable()));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Renders the MetroForm.
|
||||
/// </summary>
|
||||
/// <param name="formOverlay">Form to render.</param>
|
||||
/// <param name="e">Rendering event arguments.</param>
|
||||
internal static void Paint(BorderOverlay formOverlay, PaintEventArgs e)
|
||||
{
|
||||
MetroRenderer renderer = GetRenderer(Renderers.MetroForm);
|
||||
renderer.Render(GetRenderingInfo(formOverlay, e, GetColorTable()));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Renders the MetroTabItem.
|
||||
/// </summary>
|
||||
/// <param name="tab">Form to render.</param>
|
||||
/// <param name="e">Rendering event arguments.</param>
|
||||
public static void Paint(MetroTabItem tab, ItemPaintArgs pa)
|
||||
{
|
||||
MetroRenderer renderer = GetRenderer(Renderers.MetroTabItem);
|
||||
renderer.Render(GetRenderingInfo(tab, pa, GetColorTable()));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Renders the MetroTabStrip
|
||||
/// </summary>
|
||||
/// <param name="tabStrip">TabStrip to render.</param>
|
||||
/// <param name="pa">Paint args</param>
|
||||
public static void Paint(MetroTabStrip tabStrip, ItemPaintArgs pa)
|
||||
{
|
||||
MetroRenderer renderer = GetRenderer(Renderers.MetroTabStrip);
|
||||
MetroRendererInfo info = GetRenderingInfo(tabStrip, pa, GetColorTable());
|
||||
renderer.Render(info);
|
||||
}
|
||||
/// <summary>
|
||||
/// Renders the MetroStatusBar.
|
||||
/// </summary>
|
||||
/// <param name="bar">Status bar to render</param>
|
||||
/// <param name="pa">Paint args</param>
|
||||
public static void Paint(MetroStatusBar bar, ItemPaintArgs pa)
|
||||
{
|
||||
MetroRenderer renderer = GetRenderer(Renderers.MetroStatusBar);
|
||||
renderer.Render(GetRenderingInfo(bar, pa, GetColorTable()));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Renders the MetroStatusBar.
|
||||
/// </summary>
|
||||
/// <param name="bar">Status bar to render</param>
|
||||
/// <param name="pa">Paint args</param>
|
||||
public static void Paint(MetroToolbar bar, ItemPaintArgs pa)
|
||||
{
|
||||
MetroRenderer renderer = GetRenderer(Renderers.MetroToolbar);
|
||||
renderer.Render(GetRenderingInfo(bar, pa, GetColorTable()));
|
||||
}
|
||||
|
||||
private static MetroRenderer GetRenderer(Renderers renderer)
|
||||
{
|
||||
return _Renderers[(int)renderer];
|
||||
}
|
||||
|
||||
private static MetroRendererInfo _RenderingInfo = new MetroRendererInfo();
|
||||
private static MetroRendererInfo GetRenderingInfo(Control control, PaintEventArgs e, MetroColorTable colorTable)
|
||||
{
|
||||
_RenderingInfo.Control = control;
|
||||
_RenderingInfo.PaintEventArgs = e;
|
||||
_RenderingInfo.ColorTable = colorTable;
|
||||
_RenderingInfo.DefaultFont = control.Font;
|
||||
_RenderingInfo.RightToLeft = (control.RightToLeft == RightToLeft.Yes);
|
||||
return _RenderingInfo;
|
||||
}
|
||||
private static MetroRendererInfo GetRenderingInfo(Control control, ItemPaintArgs e, MetroColorTable colorTable)
|
||||
{
|
||||
_RenderingInfo.Control = control;
|
||||
_RenderingInfo.PaintEventArgs = e.PaintEventArgs;
|
||||
_RenderingInfo.DefaultFont = e.Font;
|
||||
_RenderingInfo.ColorTable = colorTable;
|
||||
_RenderingInfo.RightToLeft = e.RightToLeft;
|
||||
_RenderingInfo.ItemPaintArgs = e;
|
||||
return _RenderingInfo;
|
||||
}
|
||||
private static MetroRendererInfo GetRenderingInfo(MetroTabStrip control, ItemPaintArgs e, MetroColorTable colorTable)
|
||||
{
|
||||
_RenderingInfo.Control = control;
|
||||
_RenderingInfo.PaintEventArgs = e.PaintEventArgs;
|
||||
_RenderingInfo.DefaultFont = e.Font;
|
||||
if (e.Font.Bold)
|
||||
_RenderingInfo.DefaultPlainFont = new Font(e.Font, FontStyle.Regular);
|
||||
_RenderingInfo.ColorTable = colorTable;
|
||||
_RenderingInfo.RightToLeft = e.RightToLeft;
|
||||
_RenderingInfo.ItemPaintArgs = e;
|
||||
return _RenderingInfo;
|
||||
}
|
||||
private static MetroRendererInfo GetRenderingInfo(object control, ItemPaintArgs e, MetroColorTable colorTable)
|
||||
{
|
||||
_RenderingInfo.Control = control;
|
||||
_RenderingInfo.PaintEventArgs = e.PaintEventArgs;
|
||||
_RenderingInfo.DefaultFont = e.Font;
|
||||
_RenderingInfo.ColorTable = colorTable;
|
||||
_RenderingInfo.RightToLeft = e.RightToLeft;
|
||||
_RenderingInfo.ItemPaintArgs = e;
|
||||
return _RenderingInfo;
|
||||
}
|
||||
|
||||
private static MetroColorTable _ColorTable = null;
|
||||
public static MetroColorTable GetColorTable()
|
||||
{
|
||||
if (_ColorTable == null)
|
||||
{
|
||||
UpdateColorTable(MetroColorGeneratorParameters.Default);
|
||||
}
|
||||
return _ColorTable;
|
||||
}
|
||||
|
||||
internal static void UpdateColorTable(MetroColorGeneratorParameters colorParams)
|
||||
{
|
||||
if (StyleManager.IsVisualStudio2012(StyleManager.Style))
|
||||
_ColorTable = VisualStudio2012ColorTableInitializer.CreateColorTable(colorParams);
|
||||
else if (StyleManager.Style == eStyle.OfficeMobile2014)
|
||||
_ColorTable = OfficeMobile2014MetroInitializer.CreateColorTable(colorParams);
|
||||
else if (StyleManager.Style == eStyle.Office2016)
|
||||
_ColorTable = Office2016MetroInitializer.CreateColorTable(colorParams);
|
||||
else
|
||||
_ColorTable = MetroColorTableInitializer.CreateColorTable(colorParams);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Defines class for passing rendering information to renderer.
|
||||
/// </summary>
|
||||
public class MetroRendererInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets or sets the control to render.
|
||||
/// </summary>
|
||||
public object Control = null;
|
||||
/// <summary>
|
||||
/// Gets or sets the paint event arguments to use to render out control.
|
||||
/// </summary>
|
||||
public PaintEventArgs PaintEventArgs = null;
|
||||
/// <summary>
|
||||
/// Gets or sets the current color table.
|
||||
/// </summary>
|
||||
public MetroColorTable ColorTable;
|
||||
/// <summary>
|
||||
/// Gets or sets default font.
|
||||
/// </summary>
|
||||
public Font DefaultFont = SystemFonts.DefaultFont;
|
||||
/// <summary>
|
||||
/// Gets or sets default plain font.
|
||||
/// </summary>
|
||||
public Font DefaultPlainFont = null;
|
||||
/// <summary>
|
||||
/// Gets or sets right-to-left setting.
|
||||
/// </summary>
|
||||
public bool RightToLeft = false;
|
||||
/// <summary>
|
||||
/// Gets or sets the paint information for items.
|
||||
/// </summary>
|
||||
public ItemPaintArgs ItemPaintArgs = null;
|
||||
}
|
||||
/// <summary>
|
||||
/// Abstract renderer for rendering Metro-UI controls.
|
||||
/// </summary>
|
||||
public abstract class MetroRenderer
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Renders the
|
||||
/// </summary>
|
||||
/// <param name="renderingInfo"></param>
|
||||
public abstract void Render(MetroRendererInfo renderingInfo);
|
||||
}
|
||||
|
||||
public enum Renderers : int
|
||||
{
|
||||
MetroForm,
|
||||
MetroTabItem,
|
||||
MetroTabStrip,
|
||||
MetroStatusBar,
|
||||
MetroToolbar,
|
||||
MetroTileItem
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user