public Size MeasureRow(Row xtr, int Count)
{
int width = 0;
int taborig = -Control.View.FirstVisibleColumn*Control.View.CharWidth + Control.View.TextMargin;
int xpos = Control.View.TextMargin - Control.View.ClientAreaStart;
if (xtr.InQueue)
{
SetStringFont(false, false, false);
int Padd = Math.Max(Count - xtr.Text.Length, 0);
var PaddStr = new String(' ', Padd);
string TotStr = xtr.Text + PaddStr;
width = GFX.StringBuffer.MeasureTabbedString(TotStr.Substring(0, Count), Control.PixelTabSize).Width;
}
else
{
int CharNo = 0;
int TotWidth = 0;
foreach (Word w in xtr.FormattedWords)
{
if (w.Type == WordType.Word && w.Style != null)
SetStringFont(w.Style.Bold, w.Style.Italic, w.Style.Underline);
else
SetStringFont(false, false, false);
if (w.Text.Length + CharNo >= Count || w == xtr.FormattedWords[xtr.FormattedWords.Count - 1])
{
int CharPos = Count - CharNo;
int MaxChars = Math.Min(CharPos, w.Text.Length);
TotWidth += GFX.StringBuffer.DrawTabbedString(w.Text.Substring(0, MaxChars), xpos + TotWidth, 0, taborig, Control.PixelTabSize).Width;
width = TotWidth;
break;
}
TotWidth += GFX.StringBuffer.DrawTabbedString(w.Text, xpos + TotWidth, 0, taborig, Control.PixelTabSize).Width;
CharNo += w.Text.Length;
}
SetStringFont(false, false, false);
int Padd = Math.Max(Count - xtr.Text.Length, 0);
var PaddStr = new String(' ', Padd);
width += GFX.StringBuffer.DrawTabbedString(PaddStr, xpos + TotWidth, 0, taborig, Control.PixelTabSize).Width;
}
return new Size(width, 0);
// return GFX.BackBuffer.MeasureTabbedString (xtr.Text.Substring (0,Count),Control.PixelTabSize);
}