346 lines
18 KiB
Markdown
346 lines
18 KiB
Markdown
|
- [Change border style](#change-border-style)
|
||
|
- [Custom border styles](#custom-border-styles)
|
||
|
- [Built-in border styles](#built-in-border-styles)
|
||
|
|
||
|
## Change border style
|
||
|
**libfort** has a number of built-in border styles.
|
||
|
To change border style of **libfort** tables one can use `ft_set_default_border_style`, `ft_set_border_style` functions:
|
||
|
```C
|
||
|
/* Change border style of all libfort tables that will be created */
|
||
|
int ft_set_default_border_style(const struct ft_border_style *style);
|
||
|
/* Change border style of a particular table */
|
||
|
int ft_set_border_style(ft_table_t *table, const struct ft_border_style *style);
|
||
|
|
||
|
/**
|
||
|
* Structure describing border appearance.
|
||
|
*/
|
||
|
struct ft_border_chars {
|
||
|
const char *top_border_ch;
|
||
|
const char *separator_ch;
|
||
|
const char *bottom_border_ch;
|
||
|
const char *side_border_ch;
|
||
|
const char *out_intersect_ch;
|
||
|
const char *in_intersect_ch;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Structure describing border style.
|
||
|
*/
|
||
|
struct ft_border_style {
|
||
|
struct ft_border_chars border_chs;
|
||
|
struct ft_border_chars header_border_chs;
|
||
|
const char *hor_separator_char;
|
||
|
};
|
||
|
```
|
||
|
|
||
|
Here is a simple example of creating table and setting built-in border style:
|
||
|
|
||
|
```C
|
||
|
ft_table_t *table = ft_create_table();
|
||
|
/* Set border style */
|
||
|
ft_set_border_style(table, FT_BASIC_STYLE);
|
||
|
|
||
|
ft_set_cell_prop(table, FT_ANY_ROW, 0, FT_CPROP_TEXT_ALIGN, FT_ALIGNED_CENTER);
|
||
|
ft_set_cell_prop(table, FT_ANY_ROW, 1, FT_CPROP_TEXT_ALIGN, FT_ALIGNED_LEFT);
|
||
|
|
||
|
ft_set_cell_prop(table, 0, FT_ANY_COLUMN, FT_CPROP_ROW_TYPE, FT_ROW_HEADER);
|
||
|
ft_write_ln(table, "Rank", "Title", "Year", "Rating");
|
||
|
|
||
|
ft_write_ln(table, "1", "The Shawshank Redemption", "1994", "9.5");
|
||
|
ft_write_ln(table, "2", "12 Angry Men", "1957", "8.8");
|
||
|
ft_write_ln(table, "3", "It's a Wonderful Life", "1946", "8.6");
|
||
|
ft_add_separator(table);
|
||
|
ft_write_ln(table, "4", "2001: A Space Odyssey", "1968", "8.5");
|
||
|
ft_write_ln(table, "5", "Blade Runner", "1982", "8.1");
|
||
|
|
||
|
printf("%s\n", ft_to_string(table));
|
||
|
ft_destroy_table(table);
|
||
|
```
|
||
|
Output:
|
||
|
```text
|
||
|
+------+--------------------------+------+--------+
|
||
|
| Rank | Title | Year | Rating |
|
||
|
+------+--------------------------+------+--------+
|
||
|
| 1 | The Shawshank Redemption | 1994 | 9.5 |
|
||
|
| 2 | 12 Angry Men | 1957 | 8.8 |
|
||
|
| 3 | It's a Wonderful Life | 1946 | 8.6 |
|
||
|
+------+--------------------------+------+--------+
|
||
|
| 4 | 2001: A Space Odyssey | 1968 | 8.5 |
|
||
|
| 5 | Blade Runner | 1982 | 8.1 |
|
||
|
+------+--------------------------+------+--------+
|
||
|
```
|
||
|
|
||
|
|
||
|
|
||
|
## Custom border styles
|
||
|
`ft_set_default_border_style`, `ft_set_border_style` can be used to set custom border styles:
|
||
|
```C
|
||
|
ft_table_t *table = ft_create_table();
|
||
|
ft_set_cell_prop(table, 0, FT_ANY_COLUMN, FT_CPROP_ROW_TYPE, FT_ROW_HEADER);
|
||
|
ft_write_ln(table, "N", "Driver", "Time", "Avg Speed");
|
||
|
|
||
|
ft_write_ln(table, "1", "Ricciardo", "1:25.945", "222.128");
|
||
|
ft_write_ln(table, "2", "Hamilton", "1:26.373", "221.027");
|
||
|
ft_add_separator(table);
|
||
|
ft_write_ln(table, "3", "Verstappen", "1:26.469", "220.782");
|
||
|
|
||
|
/* Set custom border style */
|
||
|
struct ft_border_chars border;
|
||
|
border.top_border_ch = "^";
|
||
|
border.separator_ch = "=";
|
||
|
border.bottom_border_ch = "v";
|
||
|
border.side_border_ch = "|";
|
||
|
border.out_intersect_ch = "x";
|
||
|
border.in_intersect_ch = "x";
|
||
|
|
||
|
struct ft_border_style border_style;
|
||
|
memcpy(&border_style.border_chs, &border, sizeof(struct ft_border_chars));
|
||
|
memcpy(&border_style.header_border_chs, &border, sizeof(struct ft_border_chars));
|
||
|
border_style.hor_separator_char = "~";
|
||
|
ft_set_border_style(table, &border_style);
|
||
|
|
||
|
printf("%s\n", ft_to_string(table));
|
||
|
ft_destroy_table(table);
|
||
|
```
|
||
|
|
||
|
Output:
|
||
|
```
|
||
|
x^^^x^^^^^^^^^^^^x^^^^^^^^^^x^^^^^^^^^^^x
|
||
|
| N | Driver | Time | Avg Speed |
|
||
|
x===x============x==========x===========x
|
||
|
| 1 | Ricciardo | 1:25.945 | 222.128 |
|
||
|
x===x============x==========x===========x
|
||
|
| 2 | Hamilton | 1:26.373 | 221.027 |
|
||
|
x~~~x~~~~~~~~~~~~x~~~~~~~~~~x~~~~~~~~~~~x
|
||
|
| 3 | Verstappen | 1:26.469 | 220.782 |
|
||
|
xvvvxvvvvvvvvvvvvxvvvvvvvvvvxvvvvvvvvvvvx
|
||
|
```
|
||
|
|
||
|
|
||
|
|
||
|
## Built-in border styles
|
||
|
|
||
|
## FT_BASIC_STYLE
|
||
|
```text
|
||
|
+------+--------------------------+------+--------+
|
||
|
| Rank | Title | Year | Rating |
|
||
|
+------+--------------------------+------+--------+
|
||
|
| 1 | The Shawshank Redemption | 1994 | 9.5 |
|
||
|
| 2 | 12 Angry Men | 1957 | 8.8 |
|
||
|
| 3 | It's a Wonderful Life | 1946 | 8.6 |
|
||
|
+------+--------------------------+------+--------+
|
||
|
| 4 | 2001: A Space Odyssey | 1968 | 8.5 |
|
||
|
| 5 | Blade Runner | 1982 | 8.1 |
|
||
|
+------+--------------------------+------+--------+
|
||
|
```
|
||
|
|
||
|
## FT_BASIC2_STYLE
|
||
|
```text
|
||
|
+------+--------------------------+------+--------+
|
||
|
| Rank | Title | Year | Rating |
|
||
|
+------+--------------------------+------+--------+
|
||
|
| 1 | The Shawshank Redemption | 1994 | 9.5 |
|
||
|
+------+--------------------------+------+--------+
|
||
|
| 2 | 12 Angry Men | 1957 | 8.8 |
|
||
|
+------+--------------------------+------+--------+
|
||
|
| 3 | It's a Wonderful Life | 1946 | 8.6 |
|
||
|
+------+--------------------------+------+--------+
|
||
|
| 4 | 2001: A Space Odyssey | 1968 | 8.5 |
|
||
|
+------+--------------------------+------+--------+
|
||
|
| 5 | Blade Runner | 1982 | 8.1 |
|
||
|
+------+--------------------------+------+--------+
|
||
|
```
|
||
|
|
||
|
## FT_SIMPLE_STYLE
|
||
|
```text
|
||
|
|
||
|
Rank Title Year Rating
|
||
|
------ -------------------------- ------ --------
|
||
|
1 The Shawshank Redemption 1994 9.5
|
||
|
2 12 Angry Men 1957 8.8
|
||
|
3 It's a Wonderful Life 1946 8.6
|
||
|
------ -------------------------- ------ --------
|
||
|
4 2001: A Space Odyssey 1968 8.5
|
||
|
5 Blade Runner 1982 8.1
|
||
|
|
||
|
```
|
||
|
|
||
|
|
||
|
|
||
|
## FT_PLAIN_STYLE
|
||
|
```text
|
||
|
-------------------------------------------------
|
||
|
Rank Title Year Rating
|
||
|
-------------------------------------------------
|
||
|
1 The Shawshank Redemption 1994 9.5
|
||
|
2 12 Angry Men 1957 8.8
|
||
|
3 It's a Wonderful Life 1946 8.6
|
||
|
-------------------------------------------------
|
||
|
4 2001: A Space Odyssey 1968 8.5
|
||
|
5 Blade Runner 1982 8.1
|
||
|
```
|
||
|
|
||
|
## FT_DOT_STYLE
|
||
|
```text
|
||
|
...................................................
|
||
|
: Rank : Title : Year : Rating :
|
||
|
:......:..........................:......:........:
|
||
|
: 1 : The Shawshank Redemption : 1994 : 9.5 :
|
||
|
: 2 : 12 Angry Men : 1957 : 8.8 :
|
||
|
: 3 : It's a Wonderful Life : 1946 : 8.6 :
|
||
|
:......:..........................:......:........:
|
||
|
: 4 : 2001: A Space Odyssey : 1968 : 8.5 :
|
||
|
: 5 : Blade Runner : 1982 : 8.1 :
|
||
|
:......:..........................:......:........:
|
||
|
```
|
||
|
|
||
|
|
||
|
|
||
|
## FT_EMPTY_STYLE
|
||
|
```text
|
||
|
Rank Title Year Rating
|
||
|
1 The Shawshank Redemption 1994 9.5
|
||
|
2 12 Angry Men 1957 8.8
|
||
|
3 It's a Wonderful Life 1946 8.6
|
||
|
|
||
|
4 2001: A Space Odyssey 1968 8.5
|
||
|
5 Blade Runner 1982 8.1
|
||
|
```
|
||
|
|
||
|
## FT_EMPTY2_STYLE
|
||
|
```text
|
||
|
|
||
|
Rank Title Year Rating
|
||
|
1 The Shawshank Redemption 1994 9.5
|
||
|
2 12 Angry Men 1957 8.8
|
||
|
3 It's a Wonderful Life 1946 8.6
|
||
|
|
||
|
4 2001: A Space Odyssey 1968 8.5
|
||
|
5 Blade Runner 1982 8.1
|
||
|
|
||
|
```
|
||
|
|
||
|
|
||
|
## FT_SOLID_STYLE
|
||
|
```text
|
||
|
┌──────┬──────────────────────────┬──────┬────────┐
|
||
|
│ Rank │ Title │ Year │ Rating │
|
||
|
├──────┼──────────────────────────┼──────┼────────┤
|
||
|
│ 1 │ The Shawshank Redemption │ 1994 │ 9.5 │
|
||
|
│ 2 │ 12 Angry Men │ 1957 │ 8.8 │
|
||
|
│ 3 │ It's a Wonderful Life │ 1946 │ 8.6 │
|
||
|
├──────┼──────────────────────────┼──────┼────────┤
|
||
|
│ 4 │ 2001: A Space Odyssey │ 1968 │ 8.5 │
|
||
|
│ 5 │ Blade Runner │ 1982 │ 8.1 │
|
||
|
└──────┴──────────────────────────┴──────┴────────╯
|
||
|
```
|
||
|
|
||
|
## FT_SOLID_ROUND_STYLE
|
||
|
```text
|
||
|
╭──────┬──────────────────────────┬──────┬────────╮
|
||
|
│ Rank │ Title │ Year │ Rating │
|
||
|
├──────┼──────────────────────────┼──────┼────────┤
|
||
|
│ 1 │ The Shawshank Redemption │ 1994 │ 9.5 │
|
||
|
│ 2 │ 12 Angry Men │ 1957 │ 8.8 │
|
||
|
│ 3 │ It's a Wonderful Life │ 1946 │ 8.6 │
|
||
|
├──────┼──────────────────────────┼──────┼────────┤
|
||
|
│ 4 │ 2001: A Space Odyssey │ 1968 │ 8.5 │
|
||
|
│ 5 │ Blade Runner │ 1982 │ 8.1 │
|
||
|
╰──────┴──────────────────────────┴──────┴────────╯
|
||
|
```
|
||
|
|
||
|
## FT_NICE_STYLE
|
||
|
```text
|
||
|
╔══════╦══════════════════════════╦══════╦════════╗
|
||
|
║ Rank ║ Title ║ Year ║ Rating ║
|
||
|
╠══════╬══════════════════════════╬══════╬════════╣
|
||
|
║ 1 ║ The Shawshank Redemption ║ 1994 ║ 9.5 ║
|
||
|
║ 2 ║ 12 Angry Men ║ 1957 ║ 8.8 ║
|
||
|
║ 3 ║ It's a Wonderful Life ║ 1946 ║ 8.6 ║
|
||
|
╟──────╫──────────────────────────╫──────╫────────╢
|
||
|
║ 4 ║ 2001: A Space Odyssey ║ 1968 ║ 8.5 ║
|
||
|
║ 5 ║ Blade Runner ║ 1982 ║ 8.1 ║
|
||
|
╚══════╩══════════════════════════╩══════╩════════╝
|
||
|
```
|
||
|
|
||
|
## FT_DOUBLE_STYLE
|
||
|
```text
|
||
|
╔══════╦══════════════════════════╦══════╦════════╗
|
||
|
║ Rank ║ Title ║ Year ║ Rating ║
|
||
|
╠══════╬══════════════════════════╬══════╬════════╣
|
||
|
║ 1 ║ The Shawshank Redemption ║ 1994 ║ 9.5 ║
|
||
|
║ 2 ║ 12 Angry Men ║ 1957 ║ 8.8 ║
|
||
|
║ 3 ║ It's a Wonderful Life ║ 1946 ║ 8.6 ║
|
||
|
╠══════╬══════════════════════════╬══════╬════════╣
|
||
|
║ 4 ║ 2001: A Space Odyssey ║ 1968 ║ 8.5 ║
|
||
|
║ 5 ║ Blade Runner ║ 1982 ║ 8.1 ║
|
||
|
╚══════╩══════════════════════════╩══════╩════════╝
|
||
|
```
|
||
|
|
||
|
|
||
|
## FT_DOUBLE2_STYLE
|
||
|
```text
|
||
|
╔══════╤══════════════════════════╤══════╤════════╗
|
||
|
║ Rank │ Title │ Year │ Rating ║
|
||
|
╠══════╪══════════════════════════╪══════╪════════╣
|
||
|
║ 1 │ The Shawshank Redemption │ 1994 │ 9.5 ║
|
||
|
╟──────┼──────────────────────────┼──────┼────────╢
|
||
|
║ 2 │ 12 Angry Men │ 1957 │ 8.8 ║
|
||
|
╟──────┼──────────────────────────┼──────┼────────╢
|
||
|
║ 3 │ It's a Wonderful Life │ 1946 │ 8.6 ║
|
||
|
╠══════╪══════════════════════════╪══════╪════════╣
|
||
|
║ 4 │ 2001: A Space Odyssey │ 1968 │ 8.5 ║
|
||
|
╟──────┼──────────────────────────┼──────┼────────╢
|
||
|
║ 5 │ Blade Runner │ 1982 │ 8.1 ║
|
||
|
╚══════╧══════════════════════════╧══════╧════════╝
|
||
|
```
|
||
|
|
||
|
## FT_BOLD_STYLE
|
||
|
```text
|
||
|
┏━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━┓
|
||
|
┃ Rank ┃ Title ┃ Year ┃ Rating ┃
|
||
|
┣━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━╋━━━━━━━━┫
|
||
|
┃ 1 ┃ The Shawshank Redemption ┃ 1994 ┃ 9.5 ┃
|
||
|
┃ 2 ┃ 12 Angry Men ┃ 1957 ┃ 8.8 ┃
|
||
|
┃ 3 ┃ It's a Wonderful Life ┃ 1946 ┃ 8.6 ┃
|
||
|
┣━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━╋━━━━━━━━┫
|
||
|
┃ 4 ┃ 2001: A Space Odyssey ┃ 1968 ┃ 8.5 ┃
|
||
|
┃ 5 ┃ Blade Runner ┃ 1982 ┃ 8.1 ┃
|
||
|
┗━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━┻━━━━━━━━┛
|
||
|
```
|
||
|
|
||
|
|
||
|
|
||
|
## FT_BOLD2_STYLE
|
||
|
```text
|
||
|
┏━━━━━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━┯━━━━━━┯━━━━━━━━┓
|
||
|
┃ Rank │ Title │ Year │ Rating ┃
|
||
|
┣━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━┿━━━━━━━━┫
|
||
|
┃ 1 │ The Shawshank Redemption │ 1994 │ 9.5 ┃
|
||
|
┠──────┼──────────────────────────┼──────┼────────┨
|
||
|
┃ 2 │ 12 Angry Men │ 1957 │ 8.8 ┃
|
||
|
┠──────┼──────────────────────────┼──────┼────────┨
|
||
|
┃ 3 │ It's a Wonderful Life │ 1946 │ 8.6 ┃
|
||
|
┣━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━┿━━━━━━━━┫
|
||
|
┃ 4 │ 2001: A Space Odyssey │ 1968 │ 8.5 ┃
|
||
|
┠──────┼──────────────────────────┼──────┼────────┨
|
||
|
┃ 5 │ Blade Runner │ 1982 │ 8.1 ┃
|
||
|
┗━━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━┷━━━━━━┷━━━━━━━━┛
|
||
|
```
|
||
|
|
||
|
|
||
|
## FT_FRAME_STYLE
|
||
|
```text
|
||
|
▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜
|
||
|
▌ Rank ┃ Title ┃ Year ┃ Rating ▐
|
||
|
▌━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━╋━━━━━━━━▐
|
||
|
▌ 1 ┃ The Shawshank Redemption ┃ 1994 ┃ 9.5 ▐
|
||
|
▌ 2 ┃ 12 Angry Men ┃ 1957 ┃ 8.8 ▐
|
||
|
▌ 3 ┃ It's a Wonderful Life ┃ 1946 ┃ 8.6 ▐
|
||
|
▌━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━╋━━━━━━━━▐
|
||
|
▌ 4 ┃ 2001: A Space Odyssey ┃ 1968 ┃ 8.5 ▐
|
||
|
▌ 5 ┃ Blade Runner ┃ 1982 ┃ 8.1 ▐
|
||
|
▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟
|
||
|
```
|
||
|
|