Ejemplo n.º 1
0
 private string _FormatColumns(int width, LoTVDiv Columns)
 {
     string Out = "";
       string[] Arr = (string[])Columns.LoTVDivReturnData();
       int Cols = Arr.Length; //Количество колонок
       int MaxLength = 0;  //Макс длина колонки
       int MaxCol = 0;
       if (Cols != 1)
     for (int i = 0; i < Cols; i++)
     {
       int Length = Arr[i].Length;
       if (Length >= MaxLength)
       {
     MaxLength = Length;
     MaxCol = i;
       }
     }
       switch (Cols)
       {
     case 1:
       return __FormatText(Arr[0], width);
     case 2:
     case 3:
       int Text1 = 0, SpaceCount = 0, Text2 = 0;
       __GetTextSpaceRatio(out Text1, out Text2, out SpaceCount, width, Cols);  //Получение соотношения текста и пробелов
       int Mult; //Кол-во строк
       string Arr0, Arr1;
       string Spaces = "";
       for (int i = 0; i < SpaceCount; i++)
     Spaces += ' ';
       Arr0 = Arr[0];
       Arr1 = Arr[1];
       if (Cols == 2)
       {
     int Text2Length = 0;
     int MinCol = 1 - MaxCol;
     bool Flag = MaxCol == 0;
     if (Flag)
       while (Arr0.Length % Text1 != 0)    //Добиваем с самой большой длиной до кратного TextN
         Arr0 += ' ';
     else
       while (Arr1.Length % Text2 != 0)
         Arr1 += ' ';
     MaxLength = (Flag ? Arr0 : Arr1).Length;
     Mult = MaxLength / (MaxCol == 0 ? Text1 : Text2);  //Получает мультипликатор кратности
     Text2Length = Mult * (MaxCol == 0 ? Text2 : Text1);     //Получаем кратную длину для второго текста, зависящую от ширины формата
     if (Flag)
       while (Arr1.Length != Text2Length)    //Добиваем в другую сторону
         Arr1 += ' ';
     else
       while (Arr0.Length != Text2Length)
         Arr0 += ' ';
     for (int i = 0; i < Mult; i++)
       Out += Arr0.Substring(i * Text1, Text1) + Spaces + Arr1.Substring(i * Text2, Text2) + '\n';
       }
       else
       {
     string[] NewArr = new string[] { Arr0, Arr1, Arr[2] };
     while (NewArr[MaxCol].Length % ((MaxCol == 0 || MaxCol == 2) ? Text1 : Text2) != 0)
     {
       NewArr[MaxCol] += ' ';
       MaxLength++;
     }
     Mult = MaxLength / ((MaxCol == 0 || MaxCol == 2) ? Text1 : Text2);  //Получает мультипликатор кратности
     int Text2Length = Mult * ((MaxCol == 0 || MaxCol == 2) ? Text2 : Text1);
     if (MaxCol == 1)
     {
       while (NewArr[0].Length != Text2Length)
         NewArr[0] += ' ';
       while (NewArr[2].Length != Text2Length)
         NewArr[2] += ' ';
     }
     else
     {
       while (NewArr[1].Length != Text2Length)
         NewArr[1] += ' ';
       if (MaxCol == 0)
         while (NewArr[2].Length != MaxLength)
           NewArr[2] += ' ';
       else
         while (NewArr[0].Length != MaxLength)
           NewArr[0] += ' ';
     }
     for (int i = 0; i < Mult; i++)
       Out += NewArr[0].Substring(i * Text1, Text1) +
         Spaces + NewArr[1].Substring(i * Text2, Text2) +
         Spaces + NewArr[2].Substring(i * Text1, Text1) + '\n';
       }
       return Out;
       }
       return Out;
 }
Ejemplo n.º 2
0
 //======Закрытые методы
 private string _FormatArticle(int width, LoTVDiv Article)
 {
     string Out = "   ";
       Out = __FormatText(Out + Article.LoTVDivReturnData(), width);
       return Out;
 }
Ejemplo n.º 3
0
 private string _FormatColumns(int width, LoTVDiv Columns)
 {
     string Out = "";
       string[] Arr = (string[])Columns.LoTVDivReturnData();
       int Cols = Arr.Length; //Количество колонок
       int MaxLength = 0;  //Макс длина колонки
       int MaxCol = 0;
       if (Cols != 1)
     for (int i = 0; i < Cols; i++)
     {
       int Length = Arr[i].Length;
       if (Length >= MaxLength)     //Так сложно чтобы обращаться к методу N раз, а не 2N
       {
     MaxLength = Length;
     MaxCol = i;
       }
     }
       switch (Cols)
       {
     case 1:
       return __FormatText(Arr[0], width);
     case 2:
     case 3:
       int Text1 = 0, SpaceCount = 0, Text2 = 0;
       __GetTextSpaceRatio(out Text1, out Text2, out SpaceCount, width, Cols);  //========================Здесь творится самая главная магия
       int Mult; //Кол-во строк
       string Arr0, Arr1;
       string Spaces = "";
       for (int i = 0; i < SpaceCount; i++)
     Spaces += ' ';
       Arr0 = Arr[0];
       Arr1 = Arr[1];   //Тут чорная магия для неизменения блоков данных
       //MaxCol = Arr0.Length >= Arr1.Length ? 0 : 1;
       if (Cols == 2)
       {
     int Text2Length = 0;
     int MinCol = 1 - MaxCol;
     bool Flag = MaxCol == 0;
     if (Flag)
       while (Arr0.Length % Text1 != 0)    //Добиваем с самой большой длиной до кратного TextN
         Arr0 += ' ';
     else
       while (Arr1.Length % Text2 != 0)
         Arr1 += ' ';
     MaxLength = (Flag ? Arr0 : Arr1).Length; //Чорная магия
     Mult = MaxLength / (MaxCol == 0 ? Text1 : Text2);  //Получает мультипликатор кратности
     Text2Length = Mult * (MaxCol == 0 ? Text2 : Text1);     //Путем хитрых вычислений получаем кратную длину для второго текста, зависящую от ширины формата
     if (Flag)
       while (Arr1.Length != Text2Length)    //Добиваем в другую сторону
         Arr1 += ' ';
     else
       while (Arr0.Length != Text2Length)
         Arr0 += ' ';
     for (int i = 0; i < Mult; i++)
       Out += Arr0.Substring(i * Text1, Text1) + Spaces + Arr1.Substring(i * Text2, Text2) + '\n';  //Ну тутай опять же магия
       }
       else
       {
     string[] NewArr = new string[] {Arr0, Arr1, Arr[2] };
     while (NewArr[MaxCol].Length % ((MaxCol == 0 || MaxCol == 2) ? Text1 : Text2) != 0) //Брррррррррр
     {
       NewArr[MaxCol] += ' ';
       MaxLength++;
     }
     Mult = MaxLength / ((MaxCol == 0 || MaxCol == 2) ? Text1 : Text2);  //Получает мультипликатор кратности
     int Text2Length = Mult * ((MaxCol == 0 || MaxCol == 2) ? Text2 : Text1);
     if (MaxCol == 1)
     {
       while (NewArr[0].Length != Text2Length)
         NewArr[0] += ' ';
       while (NewArr[2].Length != Text2Length)
         NewArr[2] += ' ';
     }
     else
     {
       while (NewArr[1].Length != Text2Length)
         NewArr[1] += ' ';
       if (MaxCol == 0)
         while (NewArr[2].Length != MaxLength)
           NewArr[2] += ' ';
       else
         while (NewArr[0].Length != MaxLength)
           NewArr[0] += ' ';
     }
     for (int i = 0; i < Mult; i++)
       Out += NewArr[0].Substring(i * Text1, Text1) +
         Spaces + NewArr[1].Substring(i * Text2, Text2) +
         Spaces + NewArr[2].Substring(i * Text1, Text1) + '\n';  //Ну тутай опять же магия
       }
       return Out;
       }
       return Out;
 }
Ejemplo n.º 4
0
 private string _FormatList(int width, LoTVDiv List)
 {
     string Out = "";
       string[] Arr = (string[])List.LoTVDivReturnData();
       int Cols = Arr.Length;
       for (int i = 0; i < Cols; i++)
       {
     if (Arr[i].Length + 3 < width)
       Out += i + 1 + ". " + Arr[i] + '\n';
     else
     {
       string Row = i + 1 + ". " + Arr[i];
       int Mult = Row.Length / width + 1;
       for (int k = 1; k < Mult; k++)
       {
     Row = Row.Insert(width * k + k - 1, "\n"); //k добавляется как дополнительные \n, поэтому -1
     Mult = Row.Length / width + 1;
       }
       Out += Row + '\n';
     }
       }
       return Out + '\n';
 }
Ejemplo n.º 5
0
 private string _FormatList(LoTVDiv List)
 {
     string Out = "   ";
       string[] Arr = (string[])List.LoTVDivReturnData();
       int Cols = Arr.Length;
       for (int i = 0; i < Cols; i++)
     Out += i + 1 + ". " + Arr[i] + "   ";  //!!!!!
       return Out;
 }