예제 #1
0
        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();
        }
예제 #2
0
 /// <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;
 }
예제 #3
0
 /// <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;
 }
예제 #4
0
 /// <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;
 }
예제 #5
0
 /// <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;
        }
예제 #7
0
 /// <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;
 }