private void btnBreakText_Click(object sender, EventArgs e) { string strInput = txtInput.Text; if (string.IsNullOrEmpty(strInput)) { return; } txtOutput.Clear(); LineBreak linebreak = new LineBreak(); LineBreakElement[] lbElements = linebreak.FindLineBreaks(strInput); StringBuilder sb = new StringBuilder(); int lineWidth = 0; int maxLineWidth = (int)nudLineWidth.Value; int ich = 0; foreach (char ch in strInput) { LineBreakCondition lbCondition = lbElements[ich].Condition; ich++; string strElem = ch.ToString(); if (lbCondition == LineBreakCondition.Allowed) { if (lineWidth >= maxLineWidth) { sb.AppendLine(string.Empty); lineWidth = 0; } sb.Append(strElem); } else if (lbCondition == LineBreakCondition.Mandatory) { sb.AppendLine(string.Empty); lineWidth = 0; //sb.Append(strElem); // sb.AppendLine(strElem); } else { sb.Append(strElem); } lineWidth++; } txtOutput.Text = sb.ToString(); }
/// <summary> /// Initializes a new instance of the class <see cref="LineBreakElement"/>. /// </summary> /// <param name="position"></param> /// <param name="condition"></param> public LineBreakElement(int position, LineBreakCondition condition) { m_position = position; m_condition = condition; }
/// <summary> /// Initializes a new instance of the class <see cref="NLineBreak.LineBreakEventArgs"/>. /// </summary> /// <param name="condition">A condition of the line break.</param> /// <param name="position">A position of the line break.</param> public LineBreakEventArgs(LineBreakCondition condition, int position) { m_position = position; m_condition = condition; }
/// <summary> /// Raises the LineBreakFound event. /// </summary> /// <param name="position">Line break opportunity position.</param> /// <param name="condition">Line break opportunity condition.</param> private void OnLineBreakFound(int position, LineBreakCondition condition) { if (LineBreakFound != null) { LineBreakFound(this, new LineBreakEventArgs(condition, position)); } }
private LsBrkCond BreakConditionToLsBrkCond(LineBreakCondition breakCondition) { switch (breakCondition) { case LineBreakCondition.BreakDesired: return LsBrkCond.Please; case LineBreakCondition.BreakPossible: return LsBrkCond.Can; case LineBreakCondition.BreakRestrained: return LsBrkCond.Never; case LineBreakCondition.BreakAlways: return LsBrkCond.Must; } Debug.Assert(false); return LsBrkCond.Please; }