private void RenderCollapsedText(int RowIndex, int xPos)
{
GDISurface bbuff = GFX.BackBuffer;
bbuff.Font = GFX.FontBold;
bbuff.FontTransparent = true;
bbuff.TextForeColor = Control.OutlineColor;
Row r = Control.Document[RowIndex];
string str = r.CollapsedText;
xPos++;
int taborig = -Control.View.FirstVisibleColumn*Control.View.CharWidth + Control.View.TextMargin;
GFX.StringBuffer.Font = GFX.FontBold;
int wdh = GFX.StringBuffer.DrawTabbedString(str, xPos + 1, 0, taborig, Control.PixelTabSize).Width;
bbuff.FillRect(GFX.OutlineBrush, xPos + 0, 0, wdh + 2, Control.View.RowHeight);
bbuff.FillRect(GFX.BackgroundBrush, xPos + 1, 1, wdh, Control.View.RowHeight - 2);
wdh = bbuff.DrawTabbedString(str, xPos + 1, 0, taborig, Control.PixelTabSize).Width;
//this can crash if document not fully parsed , on error resume next
try
{
if (r.expansion_StartSpan.EndRow != null)
{
if (r.expansion_StartSpan.EndRow.RowState == RowState.SpanParsed)
Control.Document.Parser.ParseRow(r.expansion_StartSpan.EndRow.Index, true);
Word last = r.expansion_StartSpan.EndWord;
xPos += Control.View.FirstVisibleColumn*Control.View.CharWidth;
r.expansion_StartSpan.EndRow.Expansion_PixelStart = xPos + wdh - Control.View.TextMargin + 2;
r.Expansion_PixelEnd = xPos - 1;
RenderText(Control.Document.IndexOf(r.expansion_StartSpan.EndRow), r.expansion_StartSpan.EndRow.Expansion_PixelStart, last);
}
}
catch {}
}