diff --git a/include/fort.h b/include/fort.h index 7299416..e620760 100644 --- a/include/fort.h +++ b/include/fort.h @@ -267,8 +267,8 @@ struct border_chars FORT_EXTERN int ft_set_default_borders(struct border_chars *border_chs, struct border_chars *header_border_chs); FORT_EXTERN int ft_set_table_borders(FTABLE * FORT_RESTRICT table, struct border_chars *border_chs, struct border_chars *header_border_chs); -FORT_EXTERN int ft_set_default_option(uint32_t option, int value); -FORT_EXTERN int ft_set_table_option(FTABLE * FORT_RESTRICT table, uint32_t option, int value); +//FORT_EXTERN int ft_set_default_option(uint32_t option, int value); +//FORT_EXTERN int ft_set_table_option(FTABLE * FORT_RESTRICT table, uint32_t option, int value); FORT_EXTERN int ft_set_cell_option(FTABLE * FORT_RESTRICT table, unsigned row, unsigned col, uint32_t option, int value); FORT_EXTERN int ft_set_default_cell_option(uint32_t option, int value); diff --git a/src/cell.c b/src/cell.c index b1fadbf..e5de962 100644 --- a/src/cell.c +++ b/src/cell.c @@ -46,7 +46,9 @@ int hint_width_cell(const fort_cell_t *cell, const context_t *context) assert(cell); assert(context); - int result = context->table_options->cell_padding_left + context->table_options->cell_padding_right; + int cell_padding_left = get_cell_opt_value_hierarcial(context->table_options, context->row, context->column, FT_OPT_LEFT_PADDING); + int cell_padding_right = get_cell_opt_value_hierarcial(context->table_options, context->row, context->column, FT_OPT_RIGHT_PADDING); + int result = cell_padding_left + cell_padding_right; if (cell->str_buffer && cell->str_buffer->str) { result += buffer_text_width(cell->str_buffer); } @@ -58,10 +60,13 @@ int hint_height_cell(const fort_cell_t *cell, const context_t *context) { assert(cell); assert(context); - int result = context->table_options->cell_padding_top + context->table_options->cell_padding_bottom; + int cell_padding_top = get_cell_opt_value_hierarcial(context->table_options, context->row, context->column, FT_OPT_TOP_PADDING); + int cell_padding_bottom = get_cell_opt_value_hierarcial(context->table_options, context->row, context->column, FT_OPT_BOTTOM_PADDING); + int cell_empty_string_height = get_cell_opt_value_hierarcial(context->table_options, context->row, context->column, FT_OPT_EMPTY_STR_HEIGHT); + int result = cell_padding_top + cell_padding_bottom; if (cell->str_buffer && cell->str_buffer->str) { size_t text_height = buffer_text_height(cell->str_buffer); - result += text_height == 0 ? context->table_options->cell_empty_string_height : text_height; + result += text_height == 0 ? cell_empty_string_height : text_height; } return result; } @@ -94,20 +99,24 @@ int cell_printf(fort_cell_t *cell, size_t row, size_t column, char *buf, size_t return -1; } + int cell_padding_top = get_cell_opt_value_hierarcial(context->table_options, context->row, context->column, FT_OPT_TOP_PADDING); + int cell_padding_left = get_cell_opt_value_hierarcial(context->table_options, context->row, context->column, FT_OPT_LEFT_PADDING); + int cell_padding_right = get_cell_opt_value_hierarcial(context->table_options, context->row, context->column, FT_OPT_RIGHT_PADDING); + if (row >= hint_height_cell(cell, context) - || row < context->table_options->cell_padding_top - || row >= (context->table_options->cell_padding_top + buffer_text_height(cell->str_buffer))) { + || row < cell_padding_top + || row >= (cell_padding_top + buffer_text_height(cell->str_buffer))) { int k = snprint_n_chars(buf, buf_len, buf_len - 1, ' '); return k; } else { int written = 0; - int left = context->table_options->cell_padding_left; - int right = context->table_options->cell_padding_right; + int left = cell_padding_left; + int right = cell_padding_right; written += snprint_n_chars(buf + written, buf_len - written, left, ' '); if (cell->str_buffer) - written += buffer_printf(cell->str_buffer, row - context->table_options->cell_padding_top, column, buf + written, buf_len - written - right, context); + written += buffer_printf(cell->str_buffer, row - cell_padding_top, column, buf + written, buf_len - written - right, context); else written += snprint_n_chars(buf + written, buf_len - written, buf_len - written - right, ' '); written += snprint_n_chars(buf + written, buf_len - written, right, ' '); diff --git a/src/fort.c b/src/fort.c index bbf6b4b..0e61dd6 100644 --- a/src/fort.c +++ b/src/fort.c @@ -575,30 +575,30 @@ int ft_add_separator(FTABLE *table) return F_SUCCESS; } -int ft_set_default_option(uint32_t option, int value) -{ - switch (option) { - case FT_OPT_TOP_PADDING: - g_table_options.cell_padding_top = value; - break; - case FT_OPT_BOTTOM_PADDING: - g_table_options.cell_padding_bottom = value; - break; - case FT_OPT_LEFT_PADDING: - g_table_options.cell_padding_left = value; - break; - case FT_OPT_RIGHT_PADDING: - g_table_options.cell_padding_right = value; - break; - case FT_OPT_EMPTY_STR_HEIGHT: - g_table_options.cell_empty_string_height = value; - break; - default: - // todo - exit(22); - } - return F_SUCCESS; -} +//int ft_set_default_option(uint32_t option, int value) +//{ +// switch (option) { +// case FT_OPT_TOP_PADDING: +// g_table_options.cell_padding_top = value; +// break; +// case FT_OPT_BOTTOM_PADDING: +// g_table_options.cell_padding_bottom = value; +// break; +// case FT_OPT_LEFT_PADDING: +// g_table_options.cell_padding_left = value; +// break; +// case FT_OPT_RIGHT_PADDING: +// g_table_options.cell_padding_right = value; +// break; +// case FT_OPT_EMPTY_STR_HEIGHT: +// g_table_options.cell_empty_string_height = value; +// break; +// default: +// // todo +// exit(22); +// } +// return F_SUCCESS; +//} static void set_border_options_for_options(fort_table_options_t *options, struct border_chars *border_chs, struct border_chars *header_border_chs) @@ -667,37 +667,37 @@ int ft_set_table_borders(FTABLE *table, struct border_chars *border_chs, struct return F_SUCCESS; } -int ft_set_table_option(FTABLE *table, uint32_t option, int value) -{ - assert(table); - if (table->options == NULL) { - table->options = create_table_options(); - if (table->options == NULL) - return F_MEMORY_ERROR; - } - switch (option) { - case FT_OPT_TOP_PADDING: - table->options->cell_padding_top = value; - break; - case FT_OPT_BOTTOM_PADDING: - table->options->cell_padding_bottom = value; - break; - case FT_OPT_LEFT_PADDING: - table->options->cell_padding_left = value; - break; - case FT_OPT_RIGHT_PADDING: - table->options->cell_padding_right = value; - break; - case FT_OPT_EMPTY_STR_HEIGHT: - table->options->cell_empty_string_height = value; - break; - default: - // todo - exit(22); - } - return F_SUCCESS; +//int ft_set_table_option(FTABLE *table, uint32_t option, int value) +//{ +// assert(table); +// if (table->options == NULL) { +// table->options = create_table_options(); +// if (table->options == NULL) +// return F_MEMORY_ERROR; +// } +// switch (option) { +// case FT_OPT_TOP_PADDING: +// table->options->cell_padding_top = value; +// break; +// case FT_OPT_BOTTOM_PADDING: +// table->options->cell_padding_bottom = value; +// break; +// case FT_OPT_LEFT_PADDING: +// table->options->cell_padding_left = value; +// break; +// case FT_OPT_RIGHT_PADDING: +// table->options->cell_padding_right = value; +// break; +// case FT_OPT_EMPTY_STR_HEIGHT: +// table->options->cell_empty_string_height = value; +// break; +// default: +// // todo +// exit(22); +// } +// return F_SUCCESS; -} +//} diff --git a/src/options.c b/src/options.c index c7fbcaf..fd17fdd 100644 --- a/src/options.c +++ b/src/options.c @@ -226,11 +226,11 @@ fort_status_t set_default_cell_option(uint32_t option, int value) fort_table_options_t g_table_options = { - 0, /* cell_padding_top */ - 0, /* cell_padding_bottom */ - 1, /* cell_padding_left */ - 1, /* cell_padding_right */ - 1, /* cell_empty_string_height */ +// 0, /* cell_padding_top */ +// 0, /* cell_padding_bottom */ +// 1, /* cell_padding_left */ +// 1, /* cell_padding_right */ +// 1, /* cell_empty_string_height */ /* border_chars */ { diff --git a/src/options.h b/src/options.h index 245d66a..2a87c5a 100644 --- a/src/options.h +++ b/src/options.h @@ -133,11 +133,11 @@ enum SeparatorItemPos struct fort_table_options { - int cell_padding_top; - int cell_padding_bottom; - int cell_padding_left; - int cell_padding_right; - int cell_empty_string_height; +// int cell_padding_top; +// int cell_padding_bottom; +// int cell_padding_left; +// int cell_padding_right; +// int cell_empty_string_height; char border_chars[BorderItemPosSize]; char header_border_chars[BorderItemPosSize]; diff --git a/tests/test_table.c b/tests/test_table.c index d3004ff..12ede38 100644 --- a/tests/test_table.c +++ b/tests/test_table.c @@ -45,11 +45,12 @@ int set_test_options_for_table(FTABLE *table) { assert(table); int status = F_SUCCESS; - status |= ft_set_table_option(table, FT_OPT_BOTTOM_PADDING, 1); - status |= ft_set_table_option(table, FT_OPT_TOP_PADDING, 1); - status |= ft_set_table_option(table, FT_OPT_LEFT_PADDING, 1); - status |= ft_set_table_option(table, FT_OPT_RIGHT_PADDING, 1); - status |= ft_set_table_option(table, FT_OPT_EMPTY_STR_HEIGHT, 1); + status |= ft_set_cell_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_BOTTOM_PADDING, 1); + status |= ft_set_cell_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_TOP_PADDING, 1); + status |= ft_set_cell_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_LEFT_PADDING, 1); + status |= ft_set_cell_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_RIGHT_PADDING, 1); + status |= ft_set_cell_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_EMPTY_STR_HEIGHT, 1); + assert_true( status == F_SUCCESS ); @@ -78,11 +79,12 @@ int set_test_options_as_default() status |= ft_set_default_cell_option(FT_OPT_MIN_WIDTH, 0); status |= ft_set_default_cell_option(FT_OPT_TEXT_ALIGN, RightAligned); - status |= ft_set_default_option(FT_OPT_BOTTOM_PADDING, 1); - status |= ft_set_default_option(FT_OPT_TOP_PADDING, 1); - status |= ft_set_default_option(FT_OPT_LEFT_PADDING, 1); - status |= ft_set_default_option(FT_OPT_RIGHT_PADDING, 1); - status |= ft_set_default_option(FT_OPT_EMPTY_STR_HEIGHT, 1); + status |= ft_set_default_cell_option(FT_OPT_BOTTOM_PADDING, 1); + status |= ft_set_default_cell_option(FT_OPT_TOP_PADDING, 1); + status |= ft_set_default_cell_option(FT_OPT_LEFT_PADDING, 1); + status |= ft_set_default_cell_option(FT_OPT_RIGHT_PADDING, 1); + status |= ft_set_default_cell_option(FT_OPT_EMPTY_STR_HEIGHT, 1); + assert_true( status == F_SUCCESS ); @@ -391,19 +393,12 @@ void test_table_options(void **state) WHEN("All paddings = 1") { -// fort_table_options_t table_options; -// memcpy(&table_options, &test_table_opts, sizeof(fort_table_options_t)); -// table_options.cell_padding_bottom = 1; -// table_options.cell_padding_top = 1; -// table_options.cell_padding_left = 1; -// table_options.cell_padding_right = 1; -// ft_set_default_options(&table_options); set_test_options_as_default(); - ft_set_default_option(FT_OPT_BOTTOM_PADDING, 1); - ft_set_default_option(FT_OPT_TOP_PADDING, 1); - ft_set_default_option(FT_OPT_LEFT_PADDING, 1); - ft_set_default_option(FT_OPT_RIGHT_PADDING, 1); + ft_set_default_cell_option(FT_OPT_BOTTOM_PADDING, 1); + ft_set_default_cell_option(FT_OPT_TOP_PADDING, 1); + ft_set_default_cell_option(FT_OPT_LEFT_PADDING, 1); + ft_set_default_cell_option(FT_OPT_RIGHT_PADDING, 1); table = create_test_int_table(0); @@ -465,17 +460,11 @@ void test_table_options(void **state) } WHEN("Top and bottom padding = 0") { -// fort_table_options_t table_options; -// memcpy(&table_options, &test_table_opts, sizeof(fort_table_options_t)); -// table_options.cell_padding_bottom = 0; -// table_options.cell_padding_top = 0; -// table_options.cell_padding_left = 1; -// table_options.cell_padding_right = 1; -// ft_set_default_options(&table_options); - ft_set_default_option(FT_OPT_BOTTOM_PADDING, 0); - ft_set_default_option(FT_OPT_TOP_PADDING, 0); - ft_set_default_option(FT_OPT_LEFT_PADDING, 1); - ft_set_default_option(FT_OPT_RIGHT_PADDING, 1); + + ft_set_default_cell_option(FT_OPT_BOTTOM_PADDING, 0); + ft_set_default_cell_option(FT_OPT_TOP_PADDING, 0); + ft_set_default_cell_option(FT_OPT_LEFT_PADDING, 1); + ft_set_default_cell_option(FT_OPT_RIGHT_PADDING, 1); table = create_test_int_table(0); @@ -497,17 +486,11 @@ void test_table_options(void **state) } WHEN("Left and right padding = 0") { -// fort_table_options_t table_options; -// memcpy(&table_options, &test_table_opts, sizeof(fort_table_options_t)); -// table_options.cell_padding_bottom = 1; -// table_options.cell_padding_top = 1; -// table_options.cell_padding_left = 0; -// table_options.cell_padding_right = 0; -// ft_set_default_options(&table_options); - ft_set_default_option(FT_OPT_BOTTOM_PADDING, 1); - ft_set_default_option(FT_OPT_TOP_PADDING, 1); - ft_set_default_option(FT_OPT_LEFT_PADDING, 0); - ft_set_default_option(FT_OPT_RIGHT_PADDING, 0); + + ft_set_default_cell_option(FT_OPT_BOTTOM_PADDING, 1); + ft_set_default_cell_option(FT_OPT_TOP_PADDING, 1); + ft_set_default_cell_option(FT_OPT_LEFT_PADDING, 0); + ft_set_default_cell_option(FT_OPT_RIGHT_PADDING, 0); table = create_test_int_table(0); @@ -535,17 +518,11 @@ void test_table_options(void **state) } WHEN("All paddings = 0") { -// fort_table_options_t table_options; -// memcpy(&table_options, &test_table_opts, sizeof(fort_table_options_t)); -// table_options.cell_padding_bottom = 0; -// table_options.cell_padding_top = 0; -// table_options.cell_padding_left = 0; -// table_options.cell_padding_right = 0; -// ft_set_default_options(&table_options); - ft_set_default_option(FT_OPT_BOTTOM_PADDING, 0); - ft_set_default_option(FT_OPT_TOP_PADDING, 0); - ft_set_default_option(FT_OPT_LEFT_PADDING, 0); - ft_set_default_option(FT_OPT_RIGHT_PADDING, 0); + + ft_set_default_cell_option(FT_OPT_BOTTOM_PADDING, 0); + ft_set_default_cell_option(FT_OPT_TOP_PADDING, 0); + ft_set_default_cell_option(FT_OPT_LEFT_PADDING, 0); + ft_set_default_cell_option(FT_OPT_RIGHT_PADDING, 0); table = create_test_int_table(0); @@ -567,19 +544,12 @@ void test_table_options(void **state) } WHEN("Empty string has 0 heigt") { -// fort_table_options_t table_options; -// memcpy(&table_options, &test_table_opts, sizeof(fort_table_options_t)); -// table_options.cell_padding_bottom = 1; -// table_options.cell_padding_top = 1; -// table_options.cell_padding_left = 1; -// table_options.cell_padding_right = 1; -// table_options.cell_empty_string_height = 0; -// ft_set_default_options(&table_options); - ft_set_default_option(FT_OPT_BOTTOM_PADDING, 1); - ft_set_default_option(FT_OPT_TOP_PADDING, 1); - ft_set_default_option(FT_OPT_LEFT_PADDING, 1); - ft_set_default_option(FT_OPT_RIGHT_PADDING, 1); - ft_set_default_option(FT_OPT_EMPTY_STR_HEIGHT, 0); + + ft_set_default_cell_option(FT_OPT_BOTTOM_PADDING, 1); + ft_set_default_cell_option(FT_OPT_TOP_PADDING, 1); + ft_set_default_cell_option(FT_OPT_LEFT_PADDING, 1); + ft_set_default_cell_option(FT_OPT_RIGHT_PADDING, 1); + ft_set_default_cell_option(FT_OPT_EMPTY_STR_HEIGHT, 0); table = create_test_int_table(0); int n = ft_printf_ln(table, "|||"); @@ -612,27 +582,7 @@ void test_table_options(void **state) } WHEN("Changing cell separators") { -// fort_table_options_t table_options; -// memcpy(&table_options, &test_table_opts, sizeof(fort_table_options_t)); -//#define BOR_CHARS table_options.border_chars -//#define H_BOR_CHARS table_options.header_border_chars - -// BOR_CHARS[TL_bip] = BOR_CHARS[TT_bip] = BOR_CHARS[TV_bip] = BOR_CHARS[TR_bip] = '|'; -// BOR_CHARS[LH_bip] = BOR_CHARS[IH_bip] = BOR_CHARS[II_bip] = BOR_CHARS[RH_bip] = '|'; -// BOR_CHARS[BL_bip] = BOR_CHARS[BB_bip] = BOR_CHARS[BV_bip] = BOR_CHARS[BR_bip] = '|'; -// BOR_CHARS[LL_bip] = BOR_CHARS[IV_bip] = BOR_CHARS[RR_bip] = '='; - - -// H_BOR_CHARS[TL_bip] = H_BOR_CHARS[TT_bip] = H_BOR_CHARS[TV_bip] = H_BOR_CHARS[TR_bip] = '*'; -// H_BOR_CHARS[LH_bip] = H_BOR_CHARS[IH_bip] = H_BOR_CHARS[II_bip] = H_BOR_CHARS[RH_bip] = '*'; -// H_BOR_CHARS[BL_bip] = H_BOR_CHARS[BB_bip] = H_BOR_CHARS[BV_bip] = H_BOR_CHARS[BR_bip] = '*'; -// H_BOR_CHARS[LL_bip] = H_BOR_CHARS[IV_bip] = H_BOR_CHARS[RR_bip] = 'v'; - -//#undef BOR_CHARS -//#undef H_BOR_CHARS - -// ft_set_default_options(&table_options); struct border_chars border_chs; border_chs.top_border_ch = '|'; border_chs.separator_ch = '|'; @@ -677,29 +627,7 @@ void test_table_options(void **state) -//#define BOR_CHARS table_options.border_chars -//#define H_BOR_CHARS table_options.header_border_chars -// BOR_CHARS[TL_bip] = BOR_CHARS[TT_bip] = BOR_CHARS[TV_bip] = BOR_CHARS[TR_bip] = '|'; -// BOR_CHARS[LH_bip] = BOR_CHARS[IH_bip] = BOR_CHARS[II_bip] = BOR_CHARS[RH_bip] = '\0'; -// BOR_CHARS[BL_bip] = BOR_CHARS[BB_bip] = BOR_CHARS[BV_bip] = BOR_CHARS[BR_bip] = '|'; -// BOR_CHARS[LL_bip] = BOR_CHARS[IV_bip] = BOR_CHARS[RR_bip] = '='; - - -// H_BOR_CHARS[TL_bip] = H_BOR_CHARS[TT_bip] = H_BOR_CHARS[TV_bip] = H_BOR_CHARS[TR_bip] = '*'; -// H_BOR_CHARS[LH_bip] = H_BOR_CHARS[IH_bip] = H_BOR_CHARS[II_bip] = H_BOR_CHARS[RH_bip] = '*'; -// H_BOR_CHARS[BL_bip] = H_BOR_CHARS[BB_bip] = H_BOR_CHARS[BV_bip] = H_BOR_CHARS[BR_bip] = '*'; -// H_BOR_CHARS[LL_bip] = H_BOR_CHARS[IV_bip] = H_BOR_CHARS[RR_bip] = 'v'; - -//#undef BOR_CHARS -//#undef H_BOR_CHARS - -// table_options.cell_padding_bottom = 0; -// table_options.cell_padding_top = 0; -// table_options.cell_padding_left = 1; -// table_options.cell_padding_right = 1; -// table_options.cell_empty_string_height = 0; -// ft_set_default_options(&table_options); border_chs.top_border_ch = '|'; border_chs.separator_ch = '\0'; @@ -717,11 +645,11 @@ void test_table_options(void **state) ft_set_default_borders(&border_chs, &header_border_chs); - ft_set_default_option(FT_OPT_BOTTOM_PADDING, 0); - ft_set_default_option(FT_OPT_TOP_PADDING, 0); - ft_set_default_option(FT_OPT_LEFT_PADDING, 1); - ft_set_default_option(FT_OPT_RIGHT_PADDING, 1); - ft_set_default_option(FT_OPT_EMPTY_STR_HEIGHT, 0); + ft_set_default_cell_option(FT_OPT_BOTTOM_PADDING, 0); + ft_set_default_cell_option(FT_OPT_TOP_PADDING, 0); + ft_set_default_cell_option(FT_OPT_LEFT_PADDING, 1); + ft_set_default_cell_option(FT_OPT_RIGHT_PADDING, 1); + ft_set_default_cell_option(FT_OPT_EMPTY_STR_HEIGHT, 0); table = create_test_int_table(0); @@ -742,21 +670,14 @@ void test_table_options(void **state) } WHEN("Setting options for a particular table") { -// fort_table_options_t table_options; -// memcpy(&table_options, &test_table_opts, sizeof(fort_table_options_t)); -// table_options.cell_padding_bottom = 0; -// table_options.cell_padding_top = 0; -// table_options.cell_padding_left = 0; -// table_options.cell_padding_right = 0; -// ft_set_default_options(&table_options); table = create_test_int_table(0); set_test_options_for_table(table); - ft_set_table_option(table, FT_OPT_BOTTOM_PADDING, 0); - ft_set_table_option(table, FT_OPT_TOP_PADDING, 0); - ft_set_table_option(table, FT_OPT_LEFT_PADDING, 0); - ft_set_table_option(table, FT_OPT_RIGHT_PADDING, 0); + ft_set_cell_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_BOTTOM_PADDING, 0); + ft_set_cell_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_TOP_PADDING, 0); + ft_set_cell_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_LEFT_PADDING, 0); + ft_set_cell_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_RIGHT_PADDING, 0); const char *table_str = ft_to_string(table); assert_true( table_str != NULL ); @@ -772,17 +693,12 @@ void test_table_options(void **state) assert_true( strcmp(table_str, table_str_etalon) == 0); -// table_options.cell_padding_bottom = 1; -// table_options.cell_padding_top = 1; -// table_options.cell_padding_left = 0; -// table_options.cell_padding_right = 0; -// ft_set_table_options(table, &table_options); - ft_set_table_option(table, FT_OPT_BOTTOM_PADDING, 1); - ft_set_table_option(table, FT_OPT_TOP_PADDING, 1); - ft_set_table_option(table, FT_OPT_LEFT_PADDING, 0); - ft_set_table_option(table, FT_OPT_RIGHT_PADDING, 0); - ft_set_table_option(table, FT_OPT_EMPTY_STR_HEIGHT, 0); + ft_set_cell_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_BOTTOM_PADDING, 1); + ft_set_cell_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_TOP_PADDING, 1); + ft_set_cell_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_LEFT_PADDING, 0); + ft_set_cell_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_RIGHT_PADDING, 0); + ft_set_cell_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_EMPTY_STR_HEIGHT, 0); table_str = ft_to_string(table); assert_true( table_str != NULL );