void InsertLine(int insertAt, EditableTextLine textLine)
{
if (insertAt < 0)
{
throw new NotSupportedException();
}
List<EditableTextLine> lines = lineCollection as List<EditableTextLine>;
if (lines != null)
{
int j = lines.Count;
if (insertAt > j - 1)
{
AppendLine(textLine);
}
else
{
EditableTextLine line = lines[insertAt];
int cy = line.Top;
textLine.SetTop(cy);
textLine.SetLineNumber(insertAt);
cy += line.ActualLineHeight;
for (int i = insertAt; i < j; i++)
{
line = lines[i];
line.SetTop(cy);
line.SetLineNumber(i + 1);
cy += line.ActualLineHeight;
}
textLine.editableFlowLayer = this;
lines.Insert(insertAt, textLine);
}
}
else
{
lines = new List<EditableTextLine>();
lines.Add((EditableTextLine)lineCollection);
lineCollection = lines;
FlowLayerHasMultiLines = true;
int j = lines.Count;
if (insertAt > j - 1)
{
AppendLine(textLine);
}
else
{
EditableTextLine line = lines[insertAt];
int cy = line.Top;
textLine.SetTop(cy);
textLine.SetLineNumber(insertAt);
cy += line.ActualLineHeight;
for (int i = insertAt; i < j; i++)
{
line = lines[i];
line.SetTop(cy);
line.SetLineNumber(i + 1);
cy += line.ActualLineHeight;
}
textLine.editableFlowLayer = this;
lines.Insert(insertAt, textLine);
}
}
}