[C] Refactoring of min column width implementation
This commit is contained in:
parent
284cb61321
commit
85ffccfdb2
@ -39,12 +39,18 @@ void destroy_cell(fort_cell_t *cell)
|
|||||||
|
|
||||||
int hint_width_cell(const fort_cell_t *cell, const context_t *context)
|
int hint_width_cell(const fort_cell_t *cell, const context_t *context)
|
||||||
{
|
{
|
||||||
|
/* todo:
|
||||||
|
* At the moment min width includes paddings. Maybe it is better that min width weren't include
|
||||||
|
* paddings but be min width of the cell content without padding
|
||||||
|
*/
|
||||||
|
|
||||||
assert(cell);
|
assert(cell);
|
||||||
assert(context);
|
assert(context);
|
||||||
int result = context->table_options->cell_padding_left + context->table_options->cell_padding_right;
|
int result = context->table_options->cell_padding_left + context->table_options->cell_padding_right;
|
||||||
if (cell->str_buffer && cell->str_buffer->str) {
|
if (cell->str_buffer && cell->str_buffer->str) {
|
||||||
result += buffer_text_width(cell->str_buffer);
|
result += buffer_text_width(cell->str_buffer);
|
||||||
}
|
}
|
||||||
|
result = MAX(result, get_cell_opt_value_hierarcial(context->table_options, context->row, context->column, FT_OPT_MIN_WIDTH));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -304,19 +304,28 @@ void destroy_table_options(fort_table_options_t* options)
|
|||||||
// return ((fort_column_options_t*)vector_at(options->col_options, column))->col_min_width;
|
// return ((fort_column_options_t*)vector_at(options->col_options, column))->col_min_width;
|
||||||
//}
|
//}
|
||||||
|
|
||||||
int fort_options_column_width(const fort_table_options_t *options, size_t column)
|
|
||||||
{
|
|
||||||
assert(options);
|
|
||||||
if (options->cell_options == NULL)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
const fort_cell_options_t* col_opt = cget_cell_opt(options->cell_options, FT_ANY_ROW, column);
|
|
||||||
if (col_opt == NULL || ((col_opt->options & FT_OPT_MIN_WIDTH) == 0))
|
|
||||||
return -1;
|
//int fort_options_column_width(const fort_table_options_t *options, size_t column)
|
||||||
else {
|
//{
|
||||||
return col_opt->col_min_width;
|
// assert(options);
|
||||||
}
|
// if (options->cell_options == NULL)
|
||||||
}
|
// return -1;
|
||||||
|
|
||||||
|
// const fort_cell_options_t* col_opt = cget_cell_opt(options->cell_options, FT_ANY_ROW, column);
|
||||||
|
// if (col_opt == NULL || ((col_opt->options & FT_OPT_MIN_WIDTH) == 0))
|
||||||
|
// return -1;
|
||||||
|
// else {
|
||||||
|
// return col_opt->col_min_width;
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//int fort_options_column_alignment(const fort_table_options_t *options, size_t column)
|
//int fort_options_column_alignment(const fort_table_options_t *options, size_t column)
|
||||||
//{
|
//{
|
||||||
|
@ -151,7 +151,7 @@ fort_table_options_t* copy_table_options(const fort_table_options_t *option);
|
|||||||
void destroy_table_options(fort_table_options_t* options);
|
void destroy_table_options(fort_table_options_t* options);
|
||||||
//fort_status_t fort_options_set_column_min_width(fort_table_options_t *options, size_t column, size_t width);
|
//fort_status_t fort_options_set_column_min_width(fort_table_options_t *options, size_t column, size_t width);
|
||||||
//fort_status_t fort_options_set_column_alignment(fort_table_options_t *options, size_t column, enum TextAlignment al);
|
//fort_status_t fort_options_set_column_alignment(fort_table_options_t *options, size_t column, enum TextAlignment al);
|
||||||
int fort_options_column_width(const fort_table_options_t *options, size_t column);
|
//int fort_options_column_width(const fort_table_options_t *options, size_t column);
|
||||||
//int fort_options_column_alignment(const fort_table_options_t *options, size_t column);
|
//int fort_options_column_alignment(const fort_table_options_t *options, size_t column);
|
||||||
|
|
||||||
|
|
||||||
|
10
src/table.c
10
src/table.c
@ -132,11 +132,11 @@ fort_status_t table_rows_and_cols_geometry(const FTABLE *table,
|
|||||||
* At the moment min width includes paddings. Maybe it is better that min width weren't include
|
* At the moment min width includes paddings. Maybe it is better that min width weren't include
|
||||||
* paddings but be min width of the cell content without padding
|
* paddings but be min width of the cell content without padding
|
||||||
*/
|
*/
|
||||||
if (table->options) {
|
// if (table->options) {
|
||||||
for (size_t i = 0; i < cols; ++i) {
|
// for (size_t i = 0; i < cols; ++i) {
|
||||||
col_width_arr[i] = MAX((int)col_width_arr[i], fort_options_column_width(table->options, i));
|
// col_width_arr[i] = MAX((int)col_width_arr[i], fort_options_column_width(table->options, i));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
*col_width_arr_p = col_width_arr;
|
*col_width_arr_p = col_width_arr;
|
||||||
*col_width_arr_sz = cols;
|
*col_width_arr_sz = cols;
|
||||||
|
Loading…
Reference in New Issue
Block a user