private void RenderCollapsedSelection(int RowIndex)
{
Row xtr = Control.Document[RowIndex];
if ((RowIndex > Control.Selection.LogicalBounds.FirstRow) && (RowIndex < Control.Selection.LogicalBounds.LastRow))
{
int width = MeasureRow(xtr, xtr.Expansion_EndChar).Width;
RenderBox(Control.View.TextMargin, 0, Math.Max(width - Control.View.ClientAreaStart, 0), Control.View.RowHeight);
}
else if ((RowIndex == Control.Selection.LogicalBounds.FirstRow) && (RowIndex == Control.Selection.LogicalBounds.LastRow))
{
int start = MeasureRow(xtr, Math.Min(xtr.Text.Length, Control.Selection.LogicalBounds.FirstColumn)).Width;
int min = Math.Min(xtr.Text.Length, Control.Selection.LogicalBounds.LastColumn);
min = Math.Min(min, xtr.Expansion_EndChar);
int width = MeasureRow(xtr, min).Width - start;
RenderBox(Control.View.TextMargin + start - Control.View.ClientAreaStart, 0, width, Control.View.RowHeight);
}
else if (RowIndex == Control.Selection.LogicalBounds.LastRow)
{
int width = MeasureRow(xtr, Math.Min(xtr.Text.Length, Control.Selection.LogicalBounds.LastColumn)).Width;
RenderBox(Control.View.TextMargin, 0, Math.Max(width - Control.View.ClientAreaStart, 0), Control.View.RowHeight);
}
else if (RowIndex == Control.Selection.LogicalBounds.FirstRow)
{
int start = MeasureRow(xtr, Math.Min(xtr.Text.Length, Control.Selection.LogicalBounds.FirstColumn)).Width;
int width = MeasureRow(xtr, Math.Min(xtr.Text.Length, xtr.Expansion_EndChar)).Width - start;
RenderBox(Control.View.TextMargin + start - Control.View.ClientAreaStart, 0, width, Control.View.RowHeight);
}
if (Control.Selection.LogicalBounds.LastRow > RowIndex && Control.Selection.LogicalBounds.FirstRow <= RowIndex)
{
int start = xtr.Expansion_PixelEnd;
int end = xtr.Expansion_EndRow.Expansion_PixelStart - start + Control.View.TextMargin;
//start+=100;
//end=200;
RenderBox(start - Control.View.ClientAreaStart, 0, end, Control.View.RowHeight);
}
RowIndex = xtr.Expansion_EndRow.Index;
xtr = xtr.Expansion_EndRow;
if (Control.Selection.LogicalBounds.FirstRow <= RowIndex && Control.Selection.LogicalBounds.LastRow >= RowIndex)
{
int endchar = Control.Selection.LogicalBounds.LastRow != RowIndex ? xtr.Text.Length : Math.Min(Control.Selection.LogicalBounds.LastColumn, xtr.Text.Length);
int end = MeasureRow(xtr, endchar).Width;
end += xtr.Expansion_PixelStart;
end -= MeasureRow(xtr, xtr.Expansion_StartChar).Width;
int start;
if (Control.Selection.LogicalBounds.FirstRow == RowIndex)
{
int startchar = Math.Max(Control.Selection.LogicalBounds.FirstColumn, xtr.Expansion_StartChar);
start = MeasureRow(xtr, startchar).Width;
start += xtr.Expansion_PixelStart;
start -= MeasureRow(xtr, xtr.Expansion_StartChar).Width;
}
else
{
start = MeasureRow(xtr, xtr.Expansion_StartChar).Width;
start += xtr.Expansion_PixelStart;
start -= MeasureRow(xtr, xtr.Expansion_StartChar).Width;
}
end -= start;
if (Control.Selection.LogicalBounds.LastRow != RowIndex)
end += 6;
RenderBox(Control.View.TextMargin + start - Control.View.ClientAreaStart, 0, end, Control.View.RowHeight);
}
}