private void PushChar(int lineNum) { if (mLines.Count < lineNum) { mLines.Add(new TextboxLine(base.Size.Width, mFont, mForeColor)); } if (mLines[lineNum].LineFull()) { TextBoxChar charToSwitch = mLines[lineNum].Chars[mLines[lineNum].Chars.Count - 1]; mLines[lineNum].Chars.Remove(charToSwitch); mLines[lineNum].RecalculateWidth(); if (mLines.Count < lineNum + 1) { mLines.Add(new TextboxLine(base.Size.Width, mFont, mForeColor)); } mLines[lineNum + 1].Chars.Insert(0, charToSwitch); mLines[lineNum + 1].RecalculateWidth(); if (mLines[lineNum + 1].LineFull()) { PushChar(lineNum + 1); } } }
private void PullChar(int lineNum, int charNum) { if (mLines.Count > lineNum + 1) { if (mLines[lineNum + 1].Chars.Count == 0) { mLines.RemoveAt(lineNum + 1); } } mLines[lineNum].RecalculateWidth(); if (mLines[lineNum].LineFull() == false && mLines.Count > lineNum + 1) { TextBoxChar charToSwitch = mLines[lineNum + 1].Chars[0]; mLines[lineNum + 1].Chars.Remove(charToSwitch); mLines[lineNum + 1].RecalculateWidth(); mLines[lineNum].Chars.Insert(mLines[lineNum].Chars.Count - 1, charToSwitch); mLines[lineNum].RecalculateWidth(); mLines[lineNum + 1].RecalculateWidth(); if (mLines[lineNum].LineFull() == false) { PullChar(lineNum, charNum + 1); } } }