private void MoveStep(int line) { if (stepLength == 0) { stepLine = line; } else if (stepLine < line) { while (stepLine < line) { stepLine++; PerLine data = perLineData[stepLine]; data.Start += stepLength; perLineData[stepLine] = data; } } else if (stepLine > line) { while (stepLine > line) { PerLine data = perLineData[stepLine]; data.Start -= stepLength; perLineData[stepLine] = data; stepLine--; } } }
/// <summary> /// Tracks a new line with the given CHARACTER length. /// </summary> private void InsertPerLine(int index, int length = 0) { MoveStep(index); PerLine data; var lineStart = 0; // Add the new line length to the existing line start data = perLineData[index]; lineStart = data.Start; data.Start += length; perLineData[index] = data; // Insert the new line data = new PerLine { Start = lineStart }; perLineData.Insert(index, data); // Move the step stepLength += length; stepLine++; }