diff --git a/lib/fort.c b/lib/fort.c index 053f474..b684447 100644 --- a/lib/fort.c +++ b/lib/fort.c @@ -405,7 +405,25 @@ fort_status_t set_default_cell_option(uint32_t option, int value); *****************************************************************************/ /* - * TL TT TT TT TV TT TT TT TV TB TB TB TR <----- TopSeparator + * TL TT TT TT TV TT TT TT TT TT TT TT TR + * LL IV RR + * LL IV RR + * LH IH IH IH II IH IH IH TI IH IH IH RH + * LL IV IV RR + * LL IV IV RR + * LL LI IH IH IH RI RH + * LL IV IV RR + * LL IV IV RR + * LH IH IH IH BI IH IH IH II IH IH IH RH + * LL IV RR + * LL IV RR + * BL BB BB BB BV BB BB BB BV BB BB BB BR + */ + + + +/* + * TL TT TT TT TV TT TT TT TV TT TT TT TR <----- TopSeparator * LL IV IV RR * LH IH IH IH II IH IH IH II IH IH IH RH <----- InsideSeparator * LL IV IV RR @@ -438,6 +456,11 @@ enum BorderItemPos { BV_bip = 13, BR_bip = 14, + LI_bip = 15, + TI_bip = 16, + RI_bip = 17, + BI_bip = 18, + BorderItemPosSize }; @@ -929,14 +952,16 @@ fort_status_t set_default_cell_option(uint32_t option, int value) "+", "-", "+", "+", \ "|", "|", "|", \ "\0", "\0", "\0", "\0", \ - "+", "-", "+", "+" \ + "+", "-", "+", "+", \ + "+", "+", "+", "+", \ }, \ /* header_border_chars */ \ { \ "+", "-", "+", "+", \ "|", "|", "|", \ "+", "-", "+", "+", \ - "+", "-", "+", "+" \ + "+", "-", "+", "+", \ + "+", "+", "+", "+", \ }, \ /* separator_chars */ \ { \ @@ -944,20 +969,22 @@ fort_status_t set_default_cell_option(uint32_t option, int value) }, \ } -#define BASIC2_STYLE { \ +#define BASIC2_STYLE { \ /* border_chars */ \ { \ "+", "-", "+", "+", \ "|", "|", "|", \ - "+", "-", "+", "+", \ - "+", "-", "+", "+" \ + "+", "-", "+", "+", \ + "+", "-", "+", "+", \ + "+", "+", "+", "+", \ }, \ /* header_border_chars */ \ { \ "+", "-", "+", "+", \ "|", "|", "|", \ "+", "-", "+", "+", \ - "+", "-", "+", "+" \ + "+", "-", "+", "+", \ + "+", "+", "+", "+", \ }, \ /* separator_chars */ \ { \ @@ -971,14 +998,16 @@ fort_status_t set_default_cell_option(uint32_t option, int value) " ", " ", " ", " ", \ " ", " ", " ", \ "\0", "\0", "\0", "\0", \ - " ", " ", " ", " " \ + " ", " ", " ", " ", \ + " ", " ", " ", " ", \ }, \ /* header_border_chars */ \ { \ " ", " ", " ", " ", \ " ", " ", " ", \ " ", "-", " ", " ", \ - " ", " ", " ", " " \ + " ", " ", " ", " ", \ + " ", " ", " ", " ", \ }, \ /* separator_chars */ \ { \ @@ -992,14 +1021,16 @@ fort_status_t set_default_cell_option(uint32_t option, int value) " ", " ", " ", " ", \ " ", " ", " ", \ "\0", "\0", "\0", "\0", \ - " ", " ", " ", " " \ + " ", " ", " ", " ", \ + " ", " ", " ", " ", \ }, \ /* header_border_chars */ \ { \ " ", "-", "-", " ", \ " ", " ", " ", \ " ", "-", "-", " ", \ - " ", "-", "-", " " \ + " ", "-", "-", " ", \ + " ", " ", " ", " ", \ }, \ /* separator_chars */ \ { \ @@ -1013,14 +1044,16 @@ fort_status_t set_default_cell_option(uint32_t option, int value) ".", ".", ".", ".", \ ":", ":", ":", \ "\0", "\0", "\0", "\0", \ - ":", ".", ":", ":" \ + ":", ".", ":", ":", \ + "+", "+", "+", "+", \ }, \ /* header_border_chars */ \ { \ ".", ".", ".", ".", \ ":", ":", ":", \ ":", ".", ":", ":", \ - ":", ".", ":", ":" \ + ":", ".", ":", ":", \ + "+", "+", "+", "+", \ }, \ /* separator_chars */ \ { \ @@ -1034,14 +1067,16 @@ fort_status_t set_default_cell_option(uint32_t option, int value) " ", " ", " ", " ", \ " ", " ", " ", \ "\0", "\0", "\0", "\0", \ - " ", " ", " ", " " \ + " ", " ", " ", " ", \ + " ", " ", " ", " ", \ }, \ /* header_border_chars */ \ { \ " ", " ", " ", " ", \ " ", " ", " ", \ "\0", "\0", "\0", "\0", \ - " ", " ", " ", " " \ + " ", " ", " ", " ", \ + " ", " ", " ", " ", \ }, \ /* separator_chars */ \ { \ @@ -1050,20 +1085,22 @@ fort_status_t set_default_cell_option(uint32_t option, int value) } -#define SOLID_STYLE { \ +#define SOLID_STYLE { \ /* border_chars */ \ { \ "┌", "─", "┬", "┐", \ "│", "│", "│", \ "", "", "", "", \ - "└", "─", "┴", "╯" \ + "└", "─", "┴", "╯", \ + "┼", "┼", "┼", "┼", \ }, \ /* header_border_chars */ \ { \ "┌", "─", "┬", "┐", \ "│", "│", "│", \ "├", "─", "┼", "┤", \ - "└", "─", "┴", "┘" \ + "└", "─", "┴", "┘", \ + "┼", "┼", "┼", "┼", \ }, \ /* separator_chars */ \ { \ @@ -1077,14 +1114,16 @@ fort_status_t set_default_cell_option(uint32_t option, int value) "╭", "─", "┬", "╮", \ "│", "│", "│", \ "", "", "", "", \ - "╰", "─", "┴", "╯" \ + "╰", "─", "┴", "╯", \ + "┼", "┼", "┼", "┼", \ }, \ /* header_border_chars */ \ { \ "╭", "─", "┬", "╮", \ "│", "│", "│", \ "├", "─", "┼", "┤", \ - "╰", "─", "┴", "╯" \ + "╰", "─", "┴", "╯", \ + "┼", "┼", "┼", "┼", \ }, \ /* separator_chars */ \ { \ @@ -1099,14 +1138,16 @@ fort_status_t set_default_cell_option(uint32_t option, int value) "╔", "═", "╦", "╗", \ "║", "║", "║", \ "", "", "", "", \ - "╚", "═", "╩", "╝" \ + "╚", "═", "╩", "╝", \ + "┣", "┻", "┣", "┳", \ }, \ /* header_border_chars */ \ { \ "╔", "═", "╦", "╗", \ "║", "║", "║", \ "╠", "═", "╬", "╣", \ - "╚", "═", "╩", "╝" \ + "╚", "═", "╩", "╝", \ + "┣", "┻", "┣", "┳", \ }, \ /* separator_chars */ \ { \ @@ -1115,20 +1156,22 @@ fort_status_t set_default_cell_option(uint32_t option, int value) } -#define DOUBLE2_STYLE { \ +#define DOUBLE2_STYLE { \ /* border_chars */ \ { \ "╔", "═", "╤", "╗", \ "║", "│", "║", \ "╟", "─", "┼", "╢", \ - "╚", "═", "╧", "╝" \ + "╚", "═", "╧", "╝", \ + "├", "┬", "┤", "┴", \ }, \ /* header_border_chars */ \ { \ "╔", "═", "╤", "╗", \ "║", "│", "║", \ "╠", "═", "╪", "╣", \ - "╚", "═", "╧", "╝" \ + "╚", "═", "╧", "╝", \ + "├", "╤", "┤", "╧", \ }, \ /* separator_chars */ \ { \ @@ -1143,14 +1186,16 @@ fort_status_t set_default_cell_option(uint32_t option, int value) "┏", "━", "┳", "┓", \ "┃", "┃", "┃", \ "", "", "", "", \ - "┗", "━", "┻", "┛" \ + "┗", "━", "┻", "┛", \ + "┣", "┻", "┣", "┳", \ }, \ /* header_border_chars */ \ { \ "┏", "━", "┳", "┓", \ "┃", "┃", "┃", \ "┣", "━", "╋", "┫", \ - "┗", "━", "┻", "┛" \ + "┗", "━", "┻", "┛", \ + "┣", "┻", "┣", "┳", \ }, \ /* separator_chars */ \ { \ @@ -1164,14 +1209,16 @@ fort_status_t set_default_cell_option(uint32_t option, int value) "┏", "━", "┯", "┓", \ "┃", "│", "┃", \ "┠", "─", "┼", "┨", \ - "┗", "━", "┷", "┛" \ + "┗", "━", "┷", "┛", \ + "┣", "┻", "┣", "┳", \ }, \ /* header_border_chars */ \ { \ "┏", "━", "┯", "┓", \ "┃", "│", "┃", \ "┣", "━", "┿", "┫", \ - "┗", "━", "┷", "┛" \ + "┗", "━", "┷", "┛", \ + "┣", "┻", "┣", "┳", \ }, \ /* separator_chars */ \ { \ @@ -1185,14 +1232,16 @@ fort_status_t set_default_cell_option(uint32_t option, int value) "▛", "▀", "▀", "▜", \ "▌", "┃", "▐", \ "", "", "", "", \ - "▙", "▄", "▄", "▟" \ + "▙", "▄", "▄", "▟", \ + "┣", "┻", "┣", "┳" \ }, \ /* header_border_chars */ \ { \ "▛", "▀", "▀", "▜", \ "▌", "┃", "▐", \ "▌", "━", "╋", "▐", \ - "▙", "▄", "▄", "▟" \ + "▙", "▄", "▄", "▟", \ + "┣", "┻", "┣", "┳", \ }, \ /* separator_chars */ \ { \ @@ -2493,6 +2542,8 @@ static void set_border_options_for_options(fort_table_options_t *options, const BOR_CHARS[BL_bip] = BOR_CHARS[BV_bip] = BOR_CHARS[BR_bip] = border_chs->out_intersect_ch; BOR_CHARS[II_bip] = border_chs->in_intersect_ch; + BOR_CHARS[LI_bip] = BOR_CHARS[TI_bip] = BOR_CHARS[RI_bip] = BOR_CHARS[BI_bip] = border_chs->in_intersect_ch; + // if (border_chs->separator_ch == '\0' && border_chs->in_intersect_ch == '\0') { // BOR_CHARS[LH_bip] = BOR_CHARS[RH_bip] = '\0'; // } @@ -2511,6 +2562,8 @@ static void set_border_options_for_options(fort_table_options_t *options, const H_BOR_CHARS[BL_bip] = H_BOR_CHARS[BV_bip] = H_BOR_CHARS[BR_bip] = header_border_chs->out_intersect_ch; H_BOR_CHARS[II_bip] = header_border_chs->in_intersect_ch; + H_BOR_CHARS[LI_bip] = H_BOR_CHARS[TI_bip] = H_BOR_CHARS[RI_bip] = H_BOR_CHARS[BI_bip] = header_border_chs->in_intersect_ch; + // if (header_border_chs->separator_ch == '\0' && header_border_chs->in_intersect_ch == '\0') { // H_BOR_CHARS[LH_bip] = H_BOR_CHARS[RH_bip] = '\0'; // } @@ -3972,8 +4025,10 @@ int print_row_separator(char *buffer, size_t buffer_sz, IV = &(*border_chars)[II_bip]; R = &(*border_chars)[RH_bip]; - IT = &(*border_chars)[TV_bip]; - IB = &(*border_chars)[BV_bip]; +// IT = &(*border_chars)[TV_bip]; +// IB = &(*border_chars)[BV_bip]; + IT = &(*border_chars)[TI_bip]; + IB = &(*border_chars)[BI_bip]; II = &(*border_chars)[IH_bip]; break; case BottomSeparator: @@ -4145,8 +4200,10 @@ int wprint_row_separator(wchar_t *buffer, size_t buffer_sz, IV = &(*border_chars)[II_bip]; R = &(*border_chars)[RH_bip]; - IT = &(*border_chars)[TV_bip]; - IB = &(*border_chars)[BV_bip]; +// IT = &(*border_chars)[TV_bip]; +// IB = &(*border_chars)[BV_bip]; + IT = &(*border_chars)[TI_bip]; + IB = &(*border_chars)[BI_bip]; II = &(*border_chars)[IH_bip]; break; case BottomSeparator: diff --git a/src/fort_impl.c b/src/fort_impl.c index 059bc52..983c45a 100644 --- a/src/fort_impl.c +++ b/src/fort_impl.c @@ -846,6 +846,8 @@ static void set_border_options_for_options(fort_table_options_t *options, const BOR_CHARS[BL_bip] = BOR_CHARS[BV_bip] = BOR_CHARS[BR_bip] = border_chs->out_intersect_ch; BOR_CHARS[II_bip] = border_chs->in_intersect_ch; + BOR_CHARS[LI_bip] = BOR_CHARS[TI_bip] = BOR_CHARS[RI_bip] = BOR_CHARS[BI_bip] = border_chs->in_intersect_ch; + // if (border_chs->separator_ch == '\0' && border_chs->in_intersect_ch == '\0') { // BOR_CHARS[LH_bip] = BOR_CHARS[RH_bip] = '\0'; // } @@ -864,6 +866,8 @@ static void set_border_options_for_options(fort_table_options_t *options, const H_BOR_CHARS[BL_bip] = H_BOR_CHARS[BV_bip] = H_BOR_CHARS[BR_bip] = header_border_chs->out_intersect_ch; H_BOR_CHARS[II_bip] = header_border_chs->in_intersect_ch; + H_BOR_CHARS[LI_bip] = H_BOR_CHARS[TI_bip] = H_BOR_CHARS[RI_bip] = H_BOR_CHARS[BI_bip] = header_border_chs->in_intersect_ch; + // if (header_border_chs->separator_ch == '\0' && header_border_chs->in_intersect_ch == '\0') { // H_BOR_CHARS[LH_bip] = H_BOR_CHARS[RH_bip] = '\0'; // } diff --git a/src/options.c b/src/options.c index 63e76d4..70660b4 100644 --- a/src/options.c +++ b/src/options.c @@ -214,14 +214,16 @@ fort_status_t set_default_cell_option(uint32_t option, int value) "+", "-", "+", "+", \ "|", "|", "|", \ "\0", "\0", "\0", "\0", \ - "+", "-", "+", "+" \ + "+", "-", "+", "+", \ + "+", "+", "+", "+", \ }, \ /* header_border_chars */ \ { \ "+", "-", "+", "+", \ "|", "|", "|", \ "+", "-", "+", "+", \ - "+", "-", "+", "+" \ + "+", "-", "+", "+", \ + "+", "+", "+", "+", \ }, \ /* separator_chars */ \ { \ @@ -229,20 +231,22 @@ fort_status_t set_default_cell_option(uint32_t option, int value) }, \ } -#define BASIC2_STYLE { \ +#define BASIC2_STYLE { \ /* border_chars */ \ { \ "+", "-", "+", "+", \ "|", "|", "|", \ - "+", "-", "+", "+", \ - "+", "-", "+", "+" \ + "+", "-", "+", "+", \ + "+", "-", "+", "+", \ + "+", "+", "+", "+", \ }, \ /* header_border_chars */ \ { \ "+", "-", "+", "+", \ "|", "|", "|", \ "+", "-", "+", "+", \ - "+", "-", "+", "+" \ + "+", "-", "+", "+", \ + "+", "+", "+", "+", \ }, \ /* separator_chars */ \ { \ @@ -256,14 +260,16 @@ fort_status_t set_default_cell_option(uint32_t option, int value) " ", " ", " ", " ", \ " ", " ", " ", \ "\0", "\0", "\0", "\0", \ - " ", " ", " ", " " \ + " ", " ", " ", " ", \ + " ", " ", " ", " ", \ }, \ /* header_border_chars */ \ { \ " ", " ", " ", " ", \ " ", " ", " ", \ " ", "-", " ", " ", \ - " ", " ", " ", " " \ + " ", " ", " ", " ", \ + " ", " ", " ", " ", \ }, \ /* separator_chars */ \ { \ @@ -277,14 +283,16 @@ fort_status_t set_default_cell_option(uint32_t option, int value) " ", " ", " ", " ", \ " ", " ", " ", \ "\0", "\0", "\0", "\0", \ - " ", " ", " ", " " \ + " ", " ", " ", " ", \ + " ", " ", " ", " ", \ }, \ /* header_border_chars */ \ { \ " ", "-", "-", " ", \ " ", " ", " ", \ " ", "-", "-", " ", \ - " ", "-", "-", " " \ + " ", "-", "-", " ", \ + " ", " ", " ", " ", \ }, \ /* separator_chars */ \ { \ @@ -298,14 +306,16 @@ fort_status_t set_default_cell_option(uint32_t option, int value) ".", ".", ".", ".", \ ":", ":", ":", \ "\0", "\0", "\0", "\0", \ - ":", ".", ":", ":" \ + ":", ".", ":", ":", \ + "+", "+", "+", "+", \ }, \ /* header_border_chars */ \ { \ ".", ".", ".", ".", \ ":", ":", ":", \ ":", ".", ":", ":", \ - ":", ".", ":", ":" \ + ":", ".", ":", ":", \ + "+", "+", "+", "+", \ }, \ /* separator_chars */ \ { \ @@ -319,14 +329,16 @@ fort_status_t set_default_cell_option(uint32_t option, int value) " ", " ", " ", " ", \ " ", " ", " ", \ "\0", "\0", "\0", "\0", \ - " ", " ", " ", " " \ + " ", " ", " ", " ", \ + " ", " ", " ", " ", \ }, \ /* header_border_chars */ \ { \ " ", " ", " ", " ", \ " ", " ", " ", \ "\0", "\0", "\0", "\0", \ - " ", " ", " ", " " \ + " ", " ", " ", " ", \ + " ", " ", " ", " ", \ }, \ /* separator_chars */ \ { \ @@ -335,20 +347,22 @@ fort_status_t set_default_cell_option(uint32_t option, int value) } -#define SOLID_STYLE { \ +#define SOLID_STYLE { \ /* border_chars */ \ { \ "┌", "─", "┬", "┐", \ "│", "│", "│", \ "", "", "", "", \ - "└", "─", "┴", "╯" \ + "└", "─", "┴", "╯", \ + "┼", "┼", "┼", "┼", \ }, \ /* header_border_chars */ \ { \ "┌", "─", "┬", "┐", \ "│", "│", "│", \ "├", "─", "┼", "┤", \ - "└", "─", "┴", "┘" \ + "└", "─", "┴", "┘", \ + "┼", "┼", "┼", "┼", \ }, \ /* separator_chars */ \ { \ @@ -362,14 +376,16 @@ fort_status_t set_default_cell_option(uint32_t option, int value) "╭", "─", "┬", "╮", \ "│", "│", "│", \ "", "", "", "", \ - "╰", "─", "┴", "╯" \ + "╰", "─", "┴", "╯", \ + "┼", "┼", "┼", "┼", \ }, \ /* header_border_chars */ \ { \ "╭", "─", "┬", "╮", \ "│", "│", "│", \ "├", "─", "┼", "┤", \ - "╰", "─", "┴", "╯" \ + "╰", "─", "┴", "╯", \ + "┼", "┼", "┼", "┼", \ }, \ /* separator_chars */ \ { \ @@ -384,14 +400,16 @@ fort_status_t set_default_cell_option(uint32_t option, int value) "╔", "═", "╦", "╗", \ "║", "║", "║", \ "", "", "", "", \ - "╚", "═", "╩", "╝" \ + "╚", "═", "╩", "╝", \ + "┣", "┻", "┣", "┳", \ }, \ /* header_border_chars */ \ { \ "╔", "═", "╦", "╗", \ "║", "║", "║", \ "╠", "═", "╬", "╣", \ - "╚", "═", "╩", "╝" \ + "╚", "═", "╩", "╝", \ + "┣", "┻", "┣", "┳", \ }, \ /* separator_chars */ \ { \ @@ -400,20 +418,22 @@ fort_status_t set_default_cell_option(uint32_t option, int value) } -#define DOUBLE2_STYLE { \ +#define DOUBLE2_STYLE { \ /* border_chars */ \ { \ "╔", "═", "╤", "╗", \ "║", "│", "║", \ "╟", "─", "┼", "╢", \ - "╚", "═", "╧", "╝" \ + "╚", "═", "╧", "╝", \ + "├", "┬", "┤", "┴", \ }, \ /* header_border_chars */ \ { \ "╔", "═", "╤", "╗", \ "║", "│", "║", \ "╠", "═", "╪", "╣", \ - "╚", "═", "╧", "╝" \ + "╚", "═", "╧", "╝", \ + "├", "╤", "┤", "╧", \ }, \ /* separator_chars */ \ { \ @@ -428,14 +448,16 @@ fort_status_t set_default_cell_option(uint32_t option, int value) "┏", "━", "┳", "┓", \ "┃", "┃", "┃", \ "", "", "", "", \ - "┗", "━", "┻", "┛" \ + "┗", "━", "┻", "┛", \ + "┣", "┻", "┣", "┳", \ }, \ /* header_border_chars */ \ { \ "┏", "━", "┳", "┓", \ "┃", "┃", "┃", \ "┣", "━", "╋", "┫", \ - "┗", "━", "┻", "┛" \ + "┗", "━", "┻", "┛", \ + "┣", "┻", "┣", "┳", \ }, \ /* separator_chars */ \ { \ @@ -449,14 +471,16 @@ fort_status_t set_default_cell_option(uint32_t option, int value) "┏", "━", "┯", "┓", \ "┃", "│", "┃", \ "┠", "─", "┼", "┨", \ - "┗", "━", "┷", "┛" \ + "┗", "━", "┷", "┛", \ + "┣", "┻", "┣", "┳", \ }, \ /* header_border_chars */ \ { \ "┏", "━", "┯", "┓", \ "┃", "│", "┃", \ "┣", "━", "┿", "┫", \ - "┗", "━", "┷", "┛" \ + "┗", "━", "┷", "┛", \ + "┣", "┻", "┣", "┳", \ }, \ /* separator_chars */ \ { \ @@ -470,14 +494,16 @@ fort_status_t set_default_cell_option(uint32_t option, int value) "▛", "▀", "▀", "▜", \ "▌", "┃", "▐", \ "", "", "", "", \ - "▙", "▄", "▄", "▟" \ + "▙", "▄", "▄", "▟", \ + "┣", "┻", "┣", "┳" \ }, \ /* header_border_chars */ \ { \ "▛", "▀", "▀", "▜", \ "▌", "┃", "▐", \ "▌", "━", "╋", "▐", \ - "▙", "▄", "▄", "▟" \ + "▙", "▄", "▄", "▟", \ + "┣", "┻", "┣", "┳", \ }, \ /* separator_chars */ \ { \ diff --git a/src/options.h b/src/options.h index 28b21f9..99e1279 100644 --- a/src/options.h +++ b/src/options.h @@ -52,7 +52,25 @@ fort_status_t set_default_cell_option(uint32_t option, int value); *****************************************************************************/ /* - * TL TT TT TT TV TT TT TT TV TB TB TB TR <----- TopSeparator + * TL TT TT TT TV TT TT TT TT TT TT TT TR + * LL IV RR + * LL IV RR + * LH IH IH IH II IH IH IH TI IH IH IH RH + * LL IV IV RR + * LL IV IV RR + * LL LI IH IH IH RI RH + * LL IV IV RR + * LL IV IV RR + * LH IH IH IH BI IH IH IH II IH IH IH RH + * LL IV RR + * LL IV RR + * BL BB BB BB BV BB BB BB BV BB BB BB BR + */ + + + +/* + * TL TT TT TT TV TT TT TT TV TT TT TT TR <----- TopSeparator * LL IV IV RR * LH IH IH IH II IH IH IH II IH IH IH RH <----- InsideSeparator * LL IV IV RR @@ -85,6 +103,11 @@ enum BorderItemPos { BV_bip = 13, BR_bip = 14, + LI_bip = 15, + TI_bip = 16, + RI_bip = 17, + BI_bip = 18, + BorderItemPosSize }; diff --git a/src/row.c b/src/row.c index a8b255b..80dae7e 100644 --- a/src/row.c +++ b/src/row.c @@ -306,8 +306,10 @@ int print_row_separator(char *buffer, size_t buffer_sz, IV = &(*border_chars)[II_bip]; R = &(*border_chars)[RH_bip]; - IT = &(*border_chars)[TV_bip]; - IB = &(*border_chars)[BV_bip]; +// IT = &(*border_chars)[TV_bip]; +// IB = &(*border_chars)[BV_bip]; + IT = &(*border_chars)[TI_bip]; + IB = &(*border_chars)[BI_bip]; II = &(*border_chars)[IH_bip]; break; case BottomSeparator: @@ -479,8 +481,10 @@ int wprint_row_separator(wchar_t *buffer, size_t buffer_sz, IV = &(*border_chars)[II_bip]; R = &(*border_chars)[RH_bip]; - IT = &(*border_chars)[TV_bip]; - IB = &(*border_chars)[BV_bip]; +// IT = &(*border_chars)[TV_bip]; +// IB = &(*border_chars)[BV_bip]; + IT = &(*border_chars)[TI_bip]; + IB = &(*border_chars)[BI_bip]; II = &(*border_chars)[IH_bip]; break; case BottomSeparator: diff --git a/tests/bb_tests/test_table_options.c b/tests/bb_tests/test_table_options.c index 36921a3..38759db 100644 --- a/tests/bb_tests/test_table_options.c +++ b/tests/bb_tests/test_table_options.c @@ -492,4 +492,64 @@ void test_table_cell_options(void) assert_str_equal(table_str, table_str_etalon); ft_destroy_table(table); } + + WHEN("Cells with spans in common and header cells") { + set_test_options_as_default(); + + table = ft_create_table(); + ft_set_border_style(table, FT_DOUBLE2_STYLE); + + int n = ft_set_cell_span(table, 0, 0, 2); + assert_true(n == FT_SUCCESS); + n = ft_set_cell_span(table, 0, 2, 3); + assert_true(n == FT_SUCCESS); + n = ft_set_cell_span(table, 1, 1, 3); + assert_true(n == FT_SUCCESS); + + n = ft_set_cell_option(table, 0, FT_ANY_COLUMN, FT_COPT_ROW_TYPE, FT_ROW_HEADER); + assert_true(n == FT_SUCCESS); + + n = ft_write_ln(table, "111", "2222", "33333", "444444", "55555555"); + assert_true(n == FT_SUCCESS); + n = ft_write_ln(table, "2222", "33333", "444444", "55555555", "111"); + assert_true(n == FT_SUCCESS); + + n = ft_write_ln(table, "33333", "444444", "55555555", "111", "2222"); + assert_true(n == FT_SUCCESS); + n = ft_write_ln(table, "2222", "33333", "444444", "55555555", "111"); + assert_true(n == FT_SUCCESS); + n = ft_write_ln(table, "2222", "33333", "444444", "55555555", "111"); + assert_true(n == FT_SUCCESS); + + n = ft_set_cell_span(table, 4, 3, 2); + assert_true(n == FT_SUCCESS); + + + const char *table_str = ft_to_string(table); + assert_true(table_str != NULL); + const char *table_str_etalon = + "╔════════════════╤════════════════════════════╗\n" + "║ │ ║\n" + "║ 111 │ 33333 ║\n" + "║ │ ║\n" + "╠═══════╤════════╧═════════════════════╤══════╣\n" + "║ │ │ ║\n" + "║ 2222 │ 33333 │ 111 ║\n" + "║ │ │ ║\n" + "╟───────┼────────┬──────────┬──────────┼──────╢\n" + "║ │ │ │ │ ║\n" + "║ 33333 │ 444444 │ 55555555 │ 111 │ 2222 ║\n" + "║ │ │ │ │ ║\n" + "╟───────┼────────┼──────────┼──────────┼──────╢\n" + "║ │ │ │ │ ║\n" + "║ 2222 │ 33333 │ 444444 │ 55555555 │ 111 ║\n" + "║ │ │ │ │ ║\n" + "╟───────┼────────┼──────────┼──────────┴──────╢\n" + "║ │ │ │ ║\n" + "║ 2222 │ 33333 │ 444444 │ 55555555 ║\n" + "║ │ │ │ ║\n" + "╚═══════╧════════╧══════════╧═════════════════╝\n"; + assert_str_equal(table_str, table_str_etalon); + ft_destroy_table(table); + } } diff --git a/tests/tests.h b/tests/tests.h index f976bf3..d0cdca9 100644 --- a/tests/tests.h +++ b/tests/tests.h @@ -50,8 +50,8 @@ struct test_case { if (strcmp(str1, str2) != 0) \ { \ fprintf(stderr, "%s:%d(%s):Abort! Not equals strings:\n",__FILE__,__LINE__, __func__); \ - fprintf(stderr, "Left string:\n%s\n", str1); \ - fprintf(stderr, "Right string:\n%s\n", str2); \ + fprintf(stderr, "Left string(len = %d):\n%s\n", (int)strlen(str1), str1); \ + fprintf(stderr, "Right string(len = %d):\n%s\n", (int)strlen(str2), str2); \ exit(EXIT_FAILURE); \ } @@ -60,8 +60,8 @@ struct test_case { { \ fprintf(stderr, "%s:%d(%s):Abort! Not equals strings:\n",__FILE__,__LINE__, __func__); \ setlocale(LC_CTYPE, ""); \ - fwprintf(stdout, L"Left string:\n%ls\n", str1); \ - fwprintf(stdout, L"Right string:\n%ls\n", str2); \ + fwprintf(stdout, L"Left string(len = %d):\n%ls\n", (int)wcslen(str1), str1); \ + fwprintf(stdout, L"Right string(len = %d):\n%ls\n", (int)wcslen(str2), str2); \ fflush(stdout); \ exit(EXIT_FAILURE); \ }