コード例 #1
0
        private List <TextTeil> TextTeileGgfInvertieren(List <TextTeil> rohTeile, int invertiertStart, int invertiertLaenge)
        {
            if (invertiertLaenge == 0)
            {
                return(rohTeile);
            }
            List <TextTeil> list = new List <TextTeil>();
            int             num  = 0;

            foreach (TextTeil item in rohTeile)
            {
                bool istNeueZeile = item.IstNeueZeile;
                if (invertiertStart > num + item.Text.Length)
                {
                    item.Invertiert = false;
                    list.Add(item);
                }
                else if (invertiertStart + invertiertLaenge < num)
                {
                    list.Add(item);
                }
                else
                {
                    int val = invertiertLaenge + invertiertStart - num;
                    val = Math.Min(val, item.Text.Length);
                    val = Math.Max(val, 0);
                    int num2 = 0;
                    if (invertiertStart > num)
                    {
                        TextTeil textTeil = new TextTeil();
                        textTeil.Invertiert = false;
                        num2                  = invertiertStart - num;
                        textTeil.Text         = item.Text.Substring(0, num2);
                        textTeil.IstNeueZeile = istNeueZeile;
                        istNeueZeile          = false;
                        list.Add(textTeil);
                        val -= num2;
                    }
                    int      num3      = val;
                    TextTeil textTeil2 = new TextTeil();
                    textTeil2.Invertiert   = true;
                    textTeil2.Text         = item.Text.Substring(num2, num3);
                    textTeil2.IstNeueZeile = istNeueZeile;
                    istNeueZeile           = false;
                    list.Add(textTeil2);
                    int num4 = item.Text.Length - (num2 + num3);
                    if (num4 > 0)
                    {
                        TextTeil textTeil3 = new TextTeil();
                        textTeil3.Invertiert   = false;
                        textTeil3.Text         = item.Text.Substring(item.Text.Length - num4, num4);
                        textTeil3.IstNeueZeile = istNeueZeile;
                        list.Add(textTeil3);
                    }
                }
                num += item.Text.Length;
            }
            return(list);
        }
コード例 #2
0
        private List <TextTeil> TextUmbrechenUndAufTeileVerteilen(
            string text,
            int laengeAktZeile,
            int maxLaengeProZeile)
        {
            if (this._zeichenZumUmbrechen == null)
            {
                return(this.TextAufTextTeileVerteilen(text, laengeAktZeile, maxLaengeProZeile));
            }
            char ch1 = '·';

            foreach (char ch2 in this._zeichenZumUmbrechen)
            {
                text = text.Replace(ch2.ToString(), string.Format("{0}{1}", (object)ch2, (object)ch1));
            }
            bool            flag          = true;
            List <TextTeil> textTeilList1 = new List <TextTeil>();
            string          str           = text;

            char[] separator = new char[1] {
                ch1
            };
            foreach (string text1 in str.Split(separator, StringSplitOptions.RemoveEmptyEntries))
            {
                List <TextTeil> textTeilList2 = this.TextAufTextTeileVerteilen(text1, laengeAktZeile, maxLaengeProZeile);
                TextTeil        textTeil1     = (TextTeil)null;
                foreach (TextTeil textTeil2 in textTeilList2)
                {
                    textTeil1 = textTeil2;
                    textTeilList1.Add(textTeil2);
                }
                if (textTeil1 != null)
                {
                    if (flag)
                    {
                        flag = false;
                    }
                    else
                    {
                        textTeil1.IstNeueZeile = true;
                    }
                }
            }
            return(textTeilList1);
        }
コード例 #3
0
 private List <TextTeil> TextUmbrechenUndAufTeileVerteilen(string text, int laengeAktZeile, int maxLaengeProZeile)
 {
     if (this._zeichenZumUmbrechen != null)
     {
         char   c = '·';
         char[] zeichenZumUmbrechen = this._zeichenZumUmbrechen;
         for (int i = 0; i < zeichenZumUmbrechen.Length; i++)
         {
             char c2 = zeichenZumUmbrechen[i];
             text = text.Replace(c2.ToString(), string.Format("{0}{1}", c2, c));
         }
         bool            flag  = true;
         List <TextTeil> list  = new List <TextTeil>();
         string[]        array = text.Split(new char[1]
         {
             c
         }, StringSplitOptions.RemoveEmptyEntries);
         string[] array2 = array;
         foreach (string text2 in array2)
         {
             List <TextTeil> list2    = this.TextAufTextTeileVerteilen(text2, laengeAktZeile, maxLaengeProZeile);
             TextTeil        textTeil = null;
             foreach (TextTeil item in list2)
             {
                 textTeil = item;
                 list.Add(item);
             }
             if (textTeil != null)
             {
                 if (flag)
                 {
                     flag = false;
                 }
                 else
                 {
                     textTeil.IstNeueZeile = true;
                 }
             }
         }
         return(list);
     }
     return(this.TextAufTextTeileVerteilen(text, laengeAktZeile, maxLaengeProZeile));
 }
コード例 #4
0
        private List <TextTeil> TextTeileGgfInvertieren(
            List <TextTeil> rohTeile,
            int invertiertStart,
            int invertiertLaenge)
        {
            if (invertiertLaenge == 0)
            {
                return(rohTeile);
            }
            List <TextTeil> textTeilList = new List <TextTeil>();
            int             num1         = 0;

            foreach (TextTeil textTeil1 in rohTeile)
            {
                bool flag1 = textTeil1.IstNeueZeile;
                if (invertiertStart > num1 + textTeil1.Text.Length)
                {
                    textTeil1.Invertiert = false;
                    textTeilList.Add(textTeil1);
                }
                else if (invertiertStart + invertiertLaenge < num1)
                {
                    textTeilList.Add(textTeil1);
                }
                else
                {
                    int num2 = Math.Max(Math.Min(invertiertLaenge + invertiertStart - num1, textTeil1.Text.Length), 0);
                    int num3 = 0;
                    if (invertiertStart > num1)
                    {
                        TextTeil textTeil2 = new TextTeil();
                        textTeil2.Invertiert = false;
                        num3                   = invertiertStart - num1;
                        textTeil2.Text         = textTeil1.Text.Substring(0, num3);
                        textTeil2.IstNeueZeile = flag1;
                        flag1                  = false;
                        textTeilList.Add(textTeil2);
                        num2 -= num3;
                    }
                    int      length1   = num2;
                    TextTeil textTeil3 = new TextTeil();
                    textTeil3.Invertiert   = true;
                    textTeil3.Text         = textTeil1.Text.Substring(num3, length1);
                    textTeil3.IstNeueZeile = flag1;
                    bool flag2 = false;
                    textTeilList.Add(textTeil3);
                    int length2 = textTeil1.Text.Length - (num3 + length1);
                    if (length2 > 0)
                    {
                        textTeilList.Add(new TextTeil()
                        {
                            Invertiert   = false,
                            Text         = textTeil1.Text.Substring(textTeil1.Text.Length - length2, length2),
                            IstNeueZeile = flag2
                        });
                    }
                }
                num1 += textTeil1.Text.Length;
            }
            return(textTeilList);
        }
コード例 #5
0
        private List <TextTeil> TextAufTextTeileVerteilen(string text, int laengeAktZeile, int maxLaengeProZeile)
        {
            List <TextTeil> list          = new List <TextTeil>();
            StringBuilder   stringBuilder = new StringBuilder();
            bool            istNeueZeile  = false;
            int             num           = 0;
            int             num2          = text.IndexOf(' ', 0);

            while (num < text.Length)
            {
                if (num2 == -1)
                {
                    string text2 = text.Substring(num, text.Length - num);
                    stringBuilder.Append(text2);
                    laengeAktZeile += text2.Length;
                    num             = text.Length;
                }
                else
                {
                    num2++;
                    string text3 = text.Substring(num, num2 - num);
                    int    num3  = maxLaengeProZeile - laengeAktZeile;
                    if (num3 <= text3.Length)
                    {
                        if (num == 0)
                        {
                            stringBuilder.Append(text3);
                            TextTeil textTeil = new TextTeil();
                            textTeil.Text         = stringBuilder.ToString();
                            textTeil.IstNeueZeile = istNeueZeile;
                            textTeil.Invertiert   = false;
                            list.Add(textTeil);
                            stringBuilder  = new StringBuilder();
                            istNeueZeile   = true;
                            laengeAktZeile = 0;
                        }
                        else
                        {
                            TextTeil textTeil2 = new TextTeil();
                            textTeil2.Text         = stringBuilder.ToString();
                            textTeil2.IstNeueZeile = istNeueZeile;
                            textTeil2.Invertiert   = false;
                            list.Add(textTeil2);
                            stringBuilder = new StringBuilder();
                            stringBuilder.Append(text3);
                            istNeueZeile   = true;
                            laengeAktZeile = text3.Length;
                        }
                    }
                    else
                    {
                        stringBuilder.Append(text3);
                        laengeAktZeile += text3.Length;
                    }
                    num  = num2;
                    num2 = text.IndexOf(' ', num);
                }
            }
            if (stringBuilder.Length != 0)
            {
                TextTeil textTeil3 = new TextTeil();
                textTeil3.Text         = stringBuilder.ToString();
                textTeil3.IstNeueZeile = istNeueZeile;
                textTeil3.Invertiert   = false;
                list.Add(textTeil3);
            }
            return(list);
        }