[R] Refactoring of setting style
This commit is contained in:
parent
cea035285a
commit
87275e93fa
@ -110,6 +110,8 @@ int main()
|
|||||||
|
|
||||||
/*-------------------------------------------------------------*/
|
/*-------------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
table = ft_create_table();
|
table = ft_create_table();
|
||||||
ft_set_cell_option(table, FT_ANY_ROW, 0, FT_OPT_TEXT_ALIGN, CenterAligned);
|
ft_set_cell_option(table, FT_ANY_ROW, 0, FT_OPT_TEXT_ALIGN, CenterAligned);
|
||||||
ft_set_cell_option(table, FT_ANY_ROW, 1, FT_OPT_TEXT_ALIGN, LeftAligned);
|
ft_set_cell_option(table, FT_ANY_ROW, 1, FT_OPT_TEXT_ALIGN, LeftAligned);
|
||||||
@ -126,9 +128,74 @@ int main()
|
|||||||
printf("%s\n", ft_to_string(table));
|
printf("%s\n", ft_to_string(table));
|
||||||
ft_destroy_table(table);
|
ft_destroy_table(table);
|
||||||
|
|
||||||
/*-------------------------------------------------------------*/
|
|
||||||
|
|
||||||
table = NULL;
|
/*---------------- Different styles --------------------*/
|
||||||
|
|
||||||
|
ft_set_default_borders(FT_BASIC_STYLE);
|
||||||
|
|
||||||
|
table = ft_create_table();
|
||||||
|
ft_set_cell_option(table, FT_ANY_ROW, 0, FT_OPT_TEXT_ALIGN, CenterAligned);
|
||||||
|
ft_set_cell_option(table, FT_ANY_ROW, 1, FT_OPT_TEXT_ALIGN, LeftAligned);
|
||||||
|
|
||||||
|
ft_set_cell_option(table, 0, FT_ANY_COLUMN, FT_OPT_ROW_TYPE, Header);
|
||||||
|
FT_NWRITE_LN(table, "Rank", "Title", "Year", "Rating");
|
||||||
|
|
||||||
|
FT_NWRITE_LN(table, "1", "The Shawshank Redemption", "1994", "9.5");
|
||||||
|
FT_NWRITE_LN(table, "2", "12 Angry Men", "1957", "8.8");
|
||||||
|
FT_NWRITE_LN(table, "3", "2001: A Space Odyssey", "1968", "8.5");
|
||||||
|
FT_NWRITE_LN(table, "4", "Blade Runner", "1982", "8.1");
|
||||||
|
|
||||||
|
|
||||||
|
printf("Table:\n");
|
||||||
|
printf("%s\n", ft_to_string(table));
|
||||||
|
ft_destroy_table(table);
|
||||||
|
|
||||||
|
|
||||||
|
/* ------------- */
|
||||||
|
|
||||||
|
// ft_set_default_borders(FT_SIMPLE_STYLE);
|
||||||
|
|
||||||
|
// table = ft_create_table();
|
||||||
|
// ft_set_cell_option(table, FT_ANY_ROW, 0, FT_OPT_TEXT_ALIGN, CenterAligned);
|
||||||
|
// ft_set_cell_option(table, FT_ANY_ROW, 1, FT_OPT_TEXT_ALIGN, LeftAligned);
|
||||||
|
|
||||||
|
// ft_set_cell_option(table, 0, FT_ANY_COLUMN, FT_OPT_ROW_TYPE, Header);
|
||||||
|
// FT_NWRITE_LN(table, "Rank", "Title", "Year", "Rating");
|
||||||
|
|
||||||
|
// FT_NWRITE_LN(table, "1", "The Shawshank Redemption", "1994", "9.5");
|
||||||
|
// FT_NWRITE_LN(table, "2", "12 Angry Men", "1957", "8.8");
|
||||||
|
// FT_NWRITE_LN(table, "3", "2001: A Space Odyssey", "1968", "8.5");
|
||||||
|
// FT_NWRITE_LN(table, "4", "Blade Runner", "1982", "8.1");
|
||||||
|
|
||||||
|
|
||||||
|
// printf("Table:\n");
|
||||||
|
// printf("%s\n", ft_to_string(table));
|
||||||
|
// ft_destroy_table(table);
|
||||||
|
|
||||||
|
// table = NULL;
|
||||||
|
|
||||||
|
// /* ------------- */
|
||||||
|
|
||||||
|
// ft_set_default_borders(FT_DOT_STYLE);
|
||||||
|
|
||||||
|
// table = ft_create_table();
|
||||||
|
// ft_set_cell_option(table, FT_ANY_ROW, 0, FT_OPT_TEXT_ALIGN, CenterAligned);
|
||||||
|
// ft_set_cell_option(table, FT_ANY_ROW, 1, FT_OPT_TEXT_ALIGN, LeftAligned);
|
||||||
|
|
||||||
|
// ft_set_cell_option(table, 0, FT_ANY_COLUMN, FT_OPT_ROW_TYPE, Header);
|
||||||
|
// FT_NWRITE_LN(table, "Rank", "Title", "Year", "Rating");
|
||||||
|
|
||||||
|
// FT_NWRITE_LN(table, "1", "The Shawshank Redemption", "1994", "9.5");
|
||||||
|
// FT_NWRITE_LN(table, "2", "12 Angry Men", "1957", "8.8");
|
||||||
|
// FT_NWRITE_LN(table, "3", "2001: A Space Odyssey", "1968", "8.5");
|
||||||
|
// FT_NWRITE_LN(table, "4", "Blade Runner", "1982", "8.1");
|
||||||
|
|
||||||
|
|
||||||
|
// printf("Table:\n");
|
||||||
|
// printf("%s\n", ft_to_string(table));
|
||||||
|
// ft_destroy_table(table);
|
||||||
|
|
||||||
|
table = NULL;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -282,12 +282,7 @@ FORT_EXTERN const wchar_t* ft_to_wstring(const FTABLE *FORT_RESTRICT table);
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
struct ft_border_chars
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct border_chars
|
|
||||||
{
|
{
|
||||||
char top_border_ch;
|
char top_border_ch;
|
||||||
char separator_ch;
|
char separator_ch;
|
||||||
@ -297,8 +292,20 @@ struct border_chars
|
|||||||
char in_intersect_ch;
|
char in_intersect_ch;
|
||||||
};
|
};
|
||||||
|
|
||||||
FORT_EXTERN int ft_set_default_borders(struct border_chars *border_chs, struct border_chars *header_border_chs);
|
struct ft_border_style
|
||||||
FORT_EXTERN int ft_set_table_borders(FTABLE * FORT_RESTRICT table, struct border_chars *border_chs, struct border_chars *header_border_chs);
|
{
|
||||||
|
struct ft_border_chars border_chs;
|
||||||
|
struct ft_border_chars header_border_chs;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* List of built-in table border styles */
|
||||||
|
extern struct ft_border_style * FT_BASIC_STYLE;
|
||||||
|
extern struct ft_border_style * FT_SIMPLE_STYLE;
|
||||||
|
extern struct ft_border_style * FT_DOT_STYLE;
|
||||||
|
|
||||||
|
|
||||||
|
FORT_EXTERN int ft_set_default_borders(struct ft_border_style *style);
|
||||||
|
FORT_EXTERN int ft_set_table_borders(FTABLE * FORT_RESTRICT table, struct ft_border_style *style);
|
||||||
|
|
||||||
FORT_EXTERN int ft_set_default_cell_option(uint32_t option, int value);
|
FORT_EXTERN int ft_set_default_cell_option(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_cell_option(FTABLE * FORT_RESTRICT table, unsigned row, unsigned col, uint32_t option, int value);
|
||||||
|
85
src/fort.c
85
src/fort.c
@ -662,8 +662,80 @@ int ft_add_separator(FTABLE *table)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void set_border_options_for_options(fort_table_options_t *options, struct border_chars *border_chs, struct border_chars *header_border_chs)
|
|
||||||
|
/* ******************************************************************************* */
|
||||||
|
|
||||||
|
struct ft_border_style ft_basic_style =
|
||||||
{
|
{
|
||||||
|
{
|
||||||
|
'-', /* top_border_ch */
|
||||||
|
'\0', /* separator_ch */
|
||||||
|
'-', /* bottom_border_ch */
|
||||||
|
'|', /* side_border_ch */
|
||||||
|
'+', /* out_intersect_ch */
|
||||||
|
'\0', /* in_intersect_ch */
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'-', /* top_border_ch */
|
||||||
|
'-', /* separator_ch */
|
||||||
|
'-', /* bottom_border_ch */
|
||||||
|
'|', /* side_border_ch */
|
||||||
|
'+', /* out_intersect_ch */
|
||||||
|
'+', /* in_intersect_ch */
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//struct ft_border_style ft_simple_style =
|
||||||
|
//{
|
||||||
|
// {
|
||||||
|
// ' ', /* top_border_ch */
|
||||||
|
// '\0', /* separator_ch */
|
||||||
|
// ' ', /* bottom_border_ch */
|
||||||
|
// ' ', /* side_border_ch */
|
||||||
|
// ' ', /* out_intersect_ch */
|
||||||
|
// '\0', /* in_intersect_ch */
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// ' ', /* top_border_ch */
|
||||||
|
// '-', /* separator_ch */
|
||||||
|
// ' ', /* bottom_border_ch */
|
||||||
|
// ' ', /* side_border_ch */
|
||||||
|
// ' ', /* out_intersect_ch */
|
||||||
|
// ' ', /* in_intersect_ch */
|
||||||
|
// }
|
||||||
|
//};
|
||||||
|
|
||||||
|
//struct ft_border_style ft_dot_style =
|
||||||
|
//{
|
||||||
|
// {
|
||||||
|
// '.', /* top_border_ch */
|
||||||
|
// '\0', /* separator_ch */
|
||||||
|
// '.', /* bottom_border_ch */
|
||||||
|
// ':', /* side_border_ch */
|
||||||
|
// '.', /* out_intersect_ch */
|
||||||
|
// '\0', /* in_intersect_ch */
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// '.', /* top_border_ch */
|
||||||
|
// '.', /* separator_ch */
|
||||||
|
// '.', /* bottom_border_ch */
|
||||||
|
// ':', /* side_border_ch */
|
||||||
|
// '.', /* out_intersect_ch */
|
||||||
|
// '.', /* in_intersect_ch */
|
||||||
|
// }
|
||||||
|
//};
|
||||||
|
|
||||||
|
struct ft_border_style * FT_BASIC_STYLE = &ft_basic_style;
|
||||||
|
//struct ft_border_style * FT_SIMPLE_STYLE = &ft_simple_style;
|
||||||
|
//struct ft_border_style * FT_DOT_STYLE = &ft_dot_style;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static void set_border_options_for_options(fort_table_options_t *options, struct ft_border_style *style)
|
||||||
|
{
|
||||||
|
struct ft_border_chars *border_chs = &(style->border_chs);
|
||||||
|
struct ft_border_chars *header_border_chs = &(style->header_border_chs);
|
||||||
|
|
||||||
#define BOR_CHARS options->border_chars
|
#define BOR_CHARS options->border_chars
|
||||||
#define H_BOR_CHARS options->header_border_chars
|
#define H_BOR_CHARS options->header_border_chars
|
||||||
|
|
||||||
@ -712,13 +784,14 @@ static void set_border_options_for_options(fort_table_options_t *options, struct
|
|||||||
#undef H_BOR_CHARS
|
#undef H_BOR_CHARS
|
||||||
}
|
}
|
||||||
|
|
||||||
int ft_set_default_borders(struct border_chars *border_chs, struct border_chars *header_border_chs)
|
|
||||||
|
int ft_set_default_borders(struct ft_border_style *style)
|
||||||
{
|
{
|
||||||
set_border_options_for_options(&g_table_options, border_chs, header_border_chs);
|
set_border_options_for_options(&g_table_options, style);
|
||||||
return F_SUCCESS;
|
return F_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ft_set_table_borders(FTABLE *table, struct border_chars *border_chs, struct border_chars *header_border_chs)
|
int ft_set_table_borders(FTABLE *table, struct ft_border_style *style)
|
||||||
{
|
{
|
||||||
assert(table);
|
assert(table);
|
||||||
if (table->options == NULL) {
|
if (table->options == NULL) {
|
||||||
@ -726,7 +799,7 @@ int ft_set_table_borders(FTABLE *table, struct border_chars *border_chs, struct
|
|||||||
if (table->options == NULL)
|
if (table->options == NULL)
|
||||||
return F_MEMORY_ERROR;
|
return F_MEMORY_ERROR;
|
||||||
}
|
}
|
||||||
set_border_options_for_options(table->options, border_chs, header_border_chs);
|
set_border_options_for_options(table->options, style);
|
||||||
return F_SUCCESS;
|
return F_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -754,3 +827,5 @@ int ft_set_default_cell_option(uint32_t option, int value)
|
|||||||
{
|
{
|
||||||
return set_default_cell_option(option, value);
|
return set_default_cell_option(option, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -139,6 +139,13 @@ enum SeparatorItemPos
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct fort_border_style
|
||||||
|
{
|
||||||
|
char border_chars[BorderItemPosSize];
|
||||||
|
char header_border_chars[BorderItemPosSize];
|
||||||
|
char separator_chars[SepratorItemPosSize];
|
||||||
|
};
|
||||||
|
|
||||||
struct fort_table_options
|
struct fort_table_options
|
||||||
{
|
{
|
||||||
char border_chars[BorderItemPosSize];
|
char border_chars[BorderItemPosSize];
|
||||||
|
@ -23,22 +23,21 @@ int set_test_options_for_table(FTABLE *table)
|
|||||||
assert_true( status == F_SUCCESS );
|
assert_true( status == F_SUCCESS );
|
||||||
|
|
||||||
|
|
||||||
struct border_chars border_chs;
|
struct ft_border_style brdr_style;
|
||||||
border_chs.top_border_ch = '-';
|
brdr_style.border_chs.top_border_ch = '-';
|
||||||
border_chs.separator_ch = '-';
|
brdr_style.border_chs.separator_ch = '-';
|
||||||
border_chs.bottom_border_ch = '-';
|
brdr_style.border_chs.bottom_border_ch = '-';
|
||||||
border_chs.side_border_ch = '|';
|
brdr_style.border_chs.side_border_ch = '|';
|
||||||
border_chs.out_intersect_ch = '+';
|
brdr_style.border_chs.out_intersect_ch = '+';
|
||||||
border_chs.in_intersect_ch = '+';
|
brdr_style.border_chs.in_intersect_ch = '+';
|
||||||
|
|
||||||
struct border_chars header_border_chs;
|
brdr_style.header_border_chs.top_border_ch = '-';
|
||||||
header_border_chs.top_border_ch = '-';
|
brdr_style.header_border_chs.separator_ch = '-';
|
||||||
header_border_chs.separator_ch = '-';
|
brdr_style.header_border_chs.bottom_border_ch = '-';
|
||||||
header_border_chs.bottom_border_ch = '-';
|
brdr_style.header_border_chs.side_border_ch = '|';
|
||||||
header_border_chs.side_border_ch = '|';
|
brdr_style.header_border_chs.out_intersect_ch = '+';
|
||||||
header_border_chs.out_intersect_ch = '+';
|
brdr_style.header_border_chs.in_intersect_ch = '+';
|
||||||
header_border_chs.in_intersect_ch = '+';
|
return ft_set_table_borders(table, &brdr_style);
|
||||||
return ft_set_table_borders(table, &border_chs, &header_border_chs);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int set_test_options_as_default()
|
int set_test_options_as_default()
|
||||||
@ -57,22 +56,21 @@ int set_test_options_as_default()
|
|||||||
assert_true( status == F_SUCCESS );
|
assert_true( status == F_SUCCESS );
|
||||||
|
|
||||||
|
|
||||||
struct border_chars border_chs;
|
struct ft_border_style brdr_style;
|
||||||
border_chs.top_border_ch = '-';
|
brdr_style.border_chs.top_border_ch = '-';
|
||||||
border_chs.separator_ch = '-';
|
brdr_style.border_chs.separator_ch = '-';
|
||||||
border_chs.bottom_border_ch = '-';
|
brdr_style.border_chs.bottom_border_ch = '-';
|
||||||
border_chs.side_border_ch = '|';
|
brdr_style.border_chs.side_border_ch = '|';
|
||||||
border_chs.out_intersect_ch = '+';
|
brdr_style.border_chs.out_intersect_ch = '+';
|
||||||
border_chs.in_intersect_ch = '+';
|
brdr_style.border_chs.in_intersect_ch = '+';
|
||||||
|
|
||||||
struct border_chars header_border_chs;
|
brdr_style.header_border_chs.top_border_ch = '-';
|
||||||
header_border_chs.top_border_ch = '-';
|
brdr_style.header_border_chs.separator_ch = '-';
|
||||||
header_border_chs.separator_ch = '-';
|
brdr_style.header_border_chs.bottom_border_ch = '-';
|
||||||
header_border_chs.bottom_border_ch = '-';
|
brdr_style.header_border_chs.side_border_ch = '|';
|
||||||
header_border_chs.side_border_ch = '|';
|
brdr_style.header_border_chs.out_intersect_ch = '+';
|
||||||
header_border_chs.out_intersect_ch = '+';
|
brdr_style.header_border_chs.in_intersect_ch = '+';
|
||||||
header_border_chs.in_intersect_ch = '+';
|
return ft_set_default_borders(&brdr_style);
|
||||||
return ft_set_default_borders(&border_chs, &header_border_chs);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_table_sizes(void **state)
|
void test_table_sizes(void **state)
|
||||||
@ -564,22 +562,21 @@ void test_table_options(void **state)
|
|||||||
|
|
||||||
WHEN("Changing cell separators") {
|
WHEN("Changing cell separators") {
|
||||||
|
|
||||||
struct border_chars border_chs;
|
struct ft_border_style brdr_style;
|
||||||
border_chs.top_border_ch = '|';
|
brdr_style.border_chs.top_border_ch = '|';
|
||||||
border_chs.separator_ch = '|';
|
brdr_style.border_chs.separator_ch = '|';
|
||||||
border_chs.bottom_border_ch = '|';
|
brdr_style.border_chs.bottom_border_ch = '|';
|
||||||
border_chs.side_border_ch = '=';
|
brdr_style.border_chs.side_border_ch = '=';
|
||||||
border_chs.out_intersect_ch = '+';
|
brdr_style.border_chs.out_intersect_ch = '+';
|
||||||
border_chs.in_intersect_ch = '#';
|
brdr_style.border_chs.in_intersect_ch = '#';
|
||||||
|
|
||||||
struct border_chars header_border_chs;
|
brdr_style.header_border_chs.top_border_ch = '*';
|
||||||
header_border_chs.top_border_ch = '*';
|
brdr_style.header_border_chs.separator_ch = '*';
|
||||||
header_border_chs.separator_ch = '*';
|
brdr_style.header_border_chs.bottom_border_ch = '*';
|
||||||
header_border_chs.bottom_border_ch = '*';
|
brdr_style.header_border_chs.side_border_ch = 'v';
|
||||||
header_border_chs.side_border_ch = 'v';
|
brdr_style.header_border_chs.out_intersect_ch = '+';
|
||||||
header_border_chs.out_intersect_ch = '+';
|
brdr_style.header_border_chs.in_intersect_ch = '#';
|
||||||
header_border_chs.in_intersect_ch = '#';
|
ft_set_default_borders(&brdr_style);
|
||||||
ft_set_default_borders(&border_chs, &header_border_chs);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -608,23 +605,21 @@ void test_table_options(void **state)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
brdr_style.border_chs.top_border_ch = '|';
|
||||||
|
brdr_style.border_chs.separator_ch = '\0';
|
||||||
|
brdr_style.border_chs.bottom_border_ch = '|';
|
||||||
|
brdr_style.border_chs.side_border_ch = '=';
|
||||||
|
brdr_style.border_chs.out_intersect_ch = '+';
|
||||||
|
brdr_style.border_chs.in_intersect_ch = '\0';
|
||||||
|
|
||||||
|
brdr_style.header_border_chs.top_border_ch = '*';
|
||||||
|
brdr_style.header_border_chs.separator_ch = '*';
|
||||||
|
brdr_style.header_border_chs.bottom_border_ch = '*';
|
||||||
|
brdr_style.header_border_chs.side_border_ch = 'v';
|
||||||
|
brdr_style.header_border_chs.out_intersect_ch = '+';
|
||||||
|
brdr_style.header_border_chs.in_intersect_ch = '#';
|
||||||
|
|
||||||
border_chs.top_border_ch = '|';
|
ft_set_default_borders(&brdr_style);
|
||||||
border_chs.separator_ch = '\0';
|
|
||||||
border_chs.bottom_border_ch = '|';
|
|
||||||
border_chs.side_border_ch = '=';
|
|
||||||
border_chs.out_intersect_ch = '+';
|
|
||||||
border_chs.in_intersect_ch = '\0';
|
|
||||||
|
|
||||||
header_border_chs.top_border_ch = '*';
|
|
||||||
header_border_chs.separator_ch = '*';
|
|
||||||
header_border_chs.bottom_border_ch = '*';
|
|
||||||
header_border_chs.side_border_ch = 'v';
|
|
||||||
header_border_chs.out_intersect_ch = '+';
|
|
||||||
header_border_chs.in_intersect_ch = '#';
|
|
||||||
|
|
||||||
ft_set_default_borders(&border_chs, &header_border_chs);
|
|
||||||
|
|
||||||
ft_set_default_cell_option(FT_OPT_BOTTOM_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_TOP_PADDING, 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user