static List<Cairo.Rectangle> CalculateChunkPath (MonoTextEditor editor, List<Hunk> diff, List<TextSegment> words, bool useRemove)
{
List<Cairo.Rectangle> result = new List<Cairo.Rectangle> ();
int startOffset = -1;
int endOffset = -1;
foreach (var hunk in diff) {
int start = useRemove ? hunk.RemoveStart : hunk.InsertStart;
int count = useRemove ? hunk.Removed : hunk.Inserted;
for (int i = 0; i < count; i++) {
var word = words[start + i - 1];
if (endOffset != word.Offset) {
if (startOffset >= 0)
result.AddRange (GetDiffRectangles (editor, startOffset, endOffset));
startOffset = word.Offset;
}
endOffset = word.EndOffset;
}
}
if (startOffset >= 0)
result.AddRange (GetDiffRectangles (editor, startOffset, endOffset));
return result;
}