private Point GetTextPointPixelPos(TextPoint tp)
{
Row xtr = Control.Document[tp.Y];
if (xtr.RowState == RowState.SpanParsed)
Control.Document.Parser.ParseRow(xtr.Index, true);
Row r = xtr.IsCollapsedEndPart ? xtr.Expansion_StartRow : xtr;
int index = r.VisibleIndex;
int yPos = (index - Control.View.FirstVisibleRow);
if (yPos < 0 || yPos > Control.View.VisibleRowCount)
return new Point(-1, -1);
yPos *= Control.View.RowHeight;
bool Collapsed = (xtr.IsCollapsedEndPart);
int pos = MeasureRow(xtr, tp.X).Width + 1;
if (Collapsed)
{
pos += xtr.Expansion_PixelStart;
pos -= MeasureRow(xtr, xtr.Expansion_StartChar).Width;
}
int xPos = pos + Control.View.TextMargin - Control.View.ClientAreaStart;
if (xPos < Control.View.TextMargin || xPos > Control.View.ClientAreaWidth + Control.View.TextMargin)
return new Point(-1, -1);
return new Point(xPos, yPos);
}