internal override EditableRun Remove(int startIndex, int length, bool withFreeRun)
{
EditableRun freeRun = null;
if (startIndex > -1 && length > 0)
{
int oldLexLength = mybuffer.Length;
char[] newBuff = new char[oldLexLength - length];
if (withFreeRun)
{
freeRun = MakeTextRun(startIndex, length);
}
if (startIndex > 0)
{
Array.Copy(mybuffer, 0, newBuff, 0, startIndex);
}
Array.Copy(mybuffer, startIndex + length, newBuff, startIndex, oldLexLength - startIndex - length);
this.mybuffer = newBuff;
UpdateRunWidth();
}
if (withFreeRun)
{
return freeRun;
}
else
{
return null;
}
}
}