89 lines
3.0 KiB
C#
89 lines
3.0 KiB
C#
using System;
|
|
using System.Drawing.Drawing2D;
|
|
using System.Drawing;
|
|
|
|
namespace DevComponents.DotNetBar
|
|
{
|
|
/// <summary>
|
|
/// Represents class for item display.
|
|
/// </summary>
|
|
internal class ItemDisplay
|
|
{
|
|
public ItemDisplay()
|
|
{
|
|
}
|
|
|
|
public void Paint(ItemContainer container, ItemPaintArgs p)
|
|
{
|
|
foreach(BaseItem item in container.SubItems)
|
|
{
|
|
if(item.Visible && item.Displayed)
|
|
{
|
|
if (item.BeginGroup)
|
|
{
|
|
if (p.Renderer != null)
|
|
p.Renderer.DrawItemContainerSeparator(new ItemContainerSeparatorRendererEventArgs(p.Graphics, container, item));
|
|
}
|
|
if (p.ClipRectangle.IsEmpty || p.ClipRectangle.IntersectsWith(item.DisplayRectangle))
|
|
{
|
|
Region oldClip = p.Graphics.Clip as Region;
|
|
p.Graphics.SetClip(item.DisplayRectangle, CombineMode.Intersect);
|
|
if (!p.Graphics.IsClipEmpty)
|
|
item.Paint(p);
|
|
p.Graphics.Clip = oldClip;
|
|
if (oldClip != null) oldClip.Dispose();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void Paint(BaseItem container, ItemPaintArgs p)
|
|
{
|
|
foreach (BaseItem item in container.SubItems)
|
|
{
|
|
if (item.Visible && item.Displayed)
|
|
{
|
|
if (p.ClipRectangle.IsEmpty || p.ClipRectangle.IntersectsWith(item.DisplayRectangle))
|
|
{
|
|
Region oldClip = p.Graphics.Clip; //.Clone() as Region;
|
|
p.Graphics.SetClip(item.DisplayRectangle, CombineMode.Intersect);
|
|
item.Paint(p);
|
|
p.Graphics.Clip = oldClip;
|
|
if (oldClip != null)
|
|
oldClip.Dispose();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void Paint(StepItemContainer container, ItemPaintArgs p)
|
|
{
|
|
StepItem mouseOverItem = null;
|
|
foreach (BaseItem item in container.SubItems)
|
|
{
|
|
if (item.Visible && item.Displayed)
|
|
{
|
|
if (p.ClipRectangle.IsEmpty || p.ClipRectangle.IntersectsWith(item.DisplayRectangle))
|
|
{
|
|
if (item is StepItem && ((StepItem)item).IsMouseOver)
|
|
{
|
|
mouseOverItem = (StepItem)item;
|
|
continue;
|
|
}
|
|
Region oldClip = p.Graphics.Clip;
|
|
p.Graphics.SetClip(item.DisplayRectangle, CombineMode.Intersect);
|
|
item.Paint(p);
|
|
p.Graphics.Clip = oldClip;
|
|
if (oldClip != null)
|
|
oldClip.Dispose();
|
|
}
|
|
}
|
|
}
|
|
if (mouseOverItem != null)
|
|
{
|
|
mouseOverItem.Paint(p);
|
|
}
|
|
}
|
|
}
|
|
}
|