private void LineParagraphNormalize (bool is_line)
{
if (!accessible.StateSet.Contains (StateType.MultiLine)) {
startOffset = 0;
endOffset = text.CharacterCount;
return;
}
int n_chars = 0;
string txt = text.GetText ();
// First, fix up the start point
int new_start = 0;
for (int i = startOffset; i >= 0; i--) {
if (BackwardPeekNewline (i, txt, out n_chars)) {
new_start = i + 1;
break;
}
}
StartOffset = new_start;
// if our range ends with a newline, don't do anything [Case 3]
if (endOffset - 1 >= 0
&& BackwardPeekNewline (endOffset - 1, txt, out n_chars)) {
return;
}
int new_end = -1;
if (is_line) {
// walk backward until you hit a newline, or the startOffset
for (int i = endOffset; i > startOffset; i--) {
if (BackwardPeekNewline (i, txt, out n_chars)) {
new_end = i + 1;
break;
}
}
} else {
new_end = txt.Length;
// walk forward until you hit a newline, or the end
for (int i = endOffset; i < txt.Length; i++) {
if (ForwardPeekNewline (i, txt, out n_chars)) {
new_end = i + n_chars;
break;
}
}
EndOffset = new_end;
return;
}
// if we found a newline, move on
if (new_end >= 0) {
EndOffset = new_end;
return;
}
// we hit the start, so look forward for a newline
new_end = txt.Length;
for (int i = endOffset; i < txt.Length; i++) {
if (ForwardPeekNewline (i, txt, out n_chars)) {
new_end = i + n_chars;
break;
}
}
EndOffset = new_end;
}