96 lines
2.8 KiB
C#
96 lines
2.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Drawing;
|
|
using System.Drawing.Drawing2D;
|
|
using System.Xml;
|
|
|
|
#if AdvTree
|
|
namespace DevComponents.Tree.TextMarkup
|
|
#elif DOTNETBAR
|
|
namespace DevComponents.DotNetBar.TextMarkup
|
|
#elif SUPERGRID
|
|
namespace DevComponents.SuperGrid.TextMarkup
|
|
#elif LAYOUT
|
|
namespace DevComponents.DotNetBar.Layout.TextMarkup
|
|
#endif
|
|
{
|
|
internal class SymbolElement : MarkupElement
|
|
{
|
|
#region Internal Implementation
|
|
private Size _DefaultSize = new Size(16, 16);
|
|
private eSymbol _Symbol = eSymbol.XInCircle;
|
|
|
|
public override void Measure(System.Drawing.Size availableSize, MarkupDrawContext d)
|
|
{
|
|
this.Bounds = new Rectangle(Point.Empty, Dpi.Size(_DefaultSize));
|
|
}
|
|
|
|
protected override void ArrangeCore(System.Drawing.Rectangle finalRect, MarkupDrawContext d) { }
|
|
|
|
public override void Render(MarkupDrawContext d)
|
|
{
|
|
Rectangle r = this.Bounds;
|
|
r.Offset(d.Offset);
|
|
|
|
if (!d.ClipRectangle.IsEmpty && !r.IntersectsWith(d.ClipRectangle))
|
|
return;
|
|
|
|
Graphics g = d.Graphics;
|
|
Color color = d.CurrentForeColor;
|
|
|
|
SmoothingMode sm = g.SmoothingMode;
|
|
g.SmoothingMode = SmoothingMode.AntiAlias;
|
|
|
|
if (_Symbol == eSymbol.XInCircle)
|
|
{
|
|
Rectangle sr = new Rectangle(r.X + (r.Width - Dpi.Width14) / 2, r.Y + (r.Height - Dpi.Height14) / 2, Dpi.Width14, Dpi.Height14);
|
|
using (Pen pen = new Pen(color, 1.51f))
|
|
{
|
|
//sr.Width-=2;
|
|
//sr.Height-=2;
|
|
g.DrawEllipse(pen, sr);
|
|
g.DrawLine(pen, sr.X + Dpi.Width4, sr.Y + Dpi.Height4, sr.X + Dpi.Width10, sr.Y + Dpi.Height10);
|
|
g.DrawLine(pen, sr.X + Dpi.Width10, sr.Y + Dpi.Height4, sr.X + Dpi.Width4, sr.Y + Dpi.Height10);
|
|
}
|
|
}
|
|
|
|
g.SmoothingMode = sm;
|
|
|
|
this.RenderBounds = r;
|
|
}
|
|
|
|
public override void ReadAttributes(XmlTextReader reader)
|
|
{
|
|
_Symbol = eSymbol.XInCircle;
|
|
|
|
for (int i = 0; i < reader.AttributeCount; i++)
|
|
{
|
|
reader.MoveToAttribute(i);
|
|
if (reader.Name.ToLower() == "type")
|
|
{
|
|
string s = reader.Value.ToLower();
|
|
if (s == "xincircle")
|
|
_Symbol = eSymbol.XInCircle;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
private enum eSymbol
|
|
{
|
|
XInCircle
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns whether layout manager can start new line with this element.
|
|
/// </summary>
|
|
public override bool CanStartNewLine
|
|
{
|
|
get { return false; }
|
|
}
|
|
#endregion
|
|
|
|
}
|
|
}
|