private float DrawRef(DrawRefArgs drawRefArgs, float offset, string name, Color headColor, ArrowType arrowType, bool dashedLine = false, bool fill = false)
{
var textColor = fill ? headColor : Lerp(headColor, Color.White, 0.5f);
if (IsCardLayout())
{
using (Brush textBrush = new SolidBrush(textColor))
{
string headName = name;
offset += drawRefArgs.Graphics.MeasureString(headName, drawRefArgs.RefsFont).Width + 6;
var location = new PointF(drawRefArgs.CellBounds.Right - offset, drawRefArgs.CellBounds.Top + 4);
var size = new SizeF(drawRefArgs.Graphics.MeasureString(headName, drawRefArgs.RefsFont).Width,
drawRefArgs.Graphics.MeasureString(headName, drawRefArgs.RefsFont).Height);
if (fill)
drawRefArgs.Graphics.FillRectangle(SystemBrushes.Info, location.X - 1,
location.Y - 1, size.Width + 3, size.Height + 2);
drawRefArgs.Graphics.DrawRectangle(SystemPens.InfoText, location.X - 1,
location.Y - 1, size.Width + 3, size.Height + 2);
drawRefArgs.Graphics.DrawString(headName, drawRefArgs.RefsFont, textBrush, location);
}
}
else
{
string headName = IsFilledBranchesLayout()
? name
: string.Concat("[", name, "] ");
var headBounds = AdjustCellBounds(drawRefArgs.CellBounds, offset);
SizeF textSize = drawRefArgs.Graphics.MeasureString(headName, drawRefArgs.RefsFont);
offset += textSize.Width;
if (IsFilledBranchesLayout())
{
offset += 9;
float extraOffset = DrawHeadBackground(drawRefArgs.IsRowSelected, drawRefArgs.Graphics,
headColor, headBounds.X,
headBounds.Y,
RoundToEven(textSize.Width + 3),
RoundToEven(textSize.Height), 3,
arrowType, dashedLine, fill);
offset += extraOffset;
headBounds.Offset((int)(extraOffset + 1), 0);
}
DrawColumnText(drawRefArgs.Graphics, headName, drawRefArgs.RefsFont, textColor, headBounds);
}
return offset;
}