public TextPosition getParagraphBackward(TextPosition position, TextAffinity?affinity = null) { var lineCount = this._textPainter.getLineCount(); Paragraph.LineRange line = null; for (int i = lineCount - 1; i >= 0; --i) { line = this._textPainter.getLineRange(i); if (i != 0 && !this._textPainter.getLineRange(i - 1).hardBreak) { continue; } if (line.start < position.offset) { break; } } if (line == null) { return(new TextPosition(position.offset, affinity ?? position.affinity)); } return(new TextPosition(line.start, affinity ?? position.affinity)); }
public TextPosition getParagraphForward(TextPosition position, TextAffinity?affinity = null) { var lineCount = this._textPainter.getLineCount(); Paragraph.LineRange line = null; for (int i = 0; i < lineCount; ++i) { line = this._textPainter.getLineRange(i); if (!line.hardBreak) { continue; } if (line.end > position.offset) { break; } } if (line == null) { return(new TextPosition(position.offset, affinity ?? position.affinity)); } return(new TextPosition(line.end, affinity ?? position.affinity)); }