string TextImplementor.GetTextAfterOffset(int offset, TextBoundary boundary_type, out int start_offset, out int end_offset)
{
LineSegment line;
switch (boundary_type)
{
case Atk.TextBoundary.Char:
start_offset = offset;
end_offset = offset + 1;
break;
case Atk.TextBoundary.SentenceEnd:
case Atk.TextBoundary.LineEnd:
line = Document.GetLineByOffset(offset);
start_offset = offset;
end_offset = line.Offset + line.EditableLength;
break;
case Atk.TextBoundary.SentenceStart:
case Atk.TextBoundary.LineStart:
line = Document.GetLineByOffset(offset);
start_offset = line.Offset;
end_offset = offset;
break;
case Atk.TextBoundary.WordEnd:
start_offset = offset;
end_offset = TextEditorData.FindCurrentWordEnd(offset);
break;
case Atk.TextBoundary.WordStart:
start_offset = TextEditorData.FindCurrentWordStart(offset);
end_offset = offset;
break;
default:
start_offset = end_offset = offset;
break;
}
start_offset = System.Math.Min(start_offset, offset);
return(Document.GetTextBetween(start_offset, end_offset));
}