mirror of
https://github.com/jmcnamara/libxlsxwriter.git
synced 2026-05-15 14:15:54 -06:00
Fix code style and add .gitignore entry
- Run make indent to fix formatting for CI compliance - Add .claude/ to .gitignore
This commit is contained in:
parent
d6e295f220
commit
1260311271
14 changed files with 291 additions and 222 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -59,4 +59,5 @@ third_party/zlib-1.2.8/zlib.pc
|
|||
*zig-cache/
|
||||
zig-out/
|
||||
|
||||
.swiftpm/
|
||||
.swiftpm/
|
||||
.claude/
|
||||
|
|
|
|||
|
|
@ -1294,7 +1294,10 @@ The chart functions that support #lxw_chart_layout are:
|
|||
|
||||
@section ww_charts_limitations Chart Limitations
|
||||
|
||||
All chart features in the original Excel specification are supported.
|
||||
The following chart features aren't currently supported in libxlsxwriter but
|
||||
will be in time. See the [GitHub Chart Feature Requests][1].
|
||||
|
||||
[1]: https://github.com/jmcnamara/libxlsxwriter/issues
|
||||
|
||||
|
||||
Next: @ref working_with_object_positioning
|
||||
|
|
|
|||
|
|
@ -735,7 +735,6 @@ typedef enum lxw_chart_gradient_fill_type {
|
|||
|
||||
/** Path gradient fill. */
|
||||
LXW_CHART_GRADIENT_FILL_PATH
|
||||
|
||||
} lxw_chart_gradient_fill_type;
|
||||
|
||||
/** Maximum number of gradient stops. */
|
||||
|
|
@ -1462,8 +1461,7 @@ void lxw_chart_assemble_xml_file(lxw_chart *chart);
|
|||
*/
|
||||
lxw_chart_series *chart_add_series_impl(lxw_chart *chart,
|
||||
const char *categories,
|
||||
const char *values,
|
||||
uint8_t y2_axis);
|
||||
const char *values, uint8_t y2_axis);
|
||||
|
||||
/**
|
||||
* @brief Macro wrapper for chart_add_series_impl with optional y2_axis parameter.
|
||||
|
|
@ -1709,7 +1707,7 @@ void chart_series_set_pattern(lxw_chart_series *series,
|
|||
* For more information see #lxw_chart_gradient_fill_type and @ref chart_gradient_fills.
|
||||
*/
|
||||
void chart_series_set_gradient(lxw_chart_series *series,
|
||||
lxw_chart_gradient_fill *gradient);
|
||||
lxw_chart_gradient_fill * gradient);
|
||||
|
||||
/**
|
||||
* @brief Set the data marker type for a series.
|
||||
|
|
@ -3814,7 +3812,7 @@ void chart_chartarea_set_pattern(lxw_chart *chart,
|
|||
* For more information see #lxw_chart_gradient_fill_type.
|
||||
*/
|
||||
void chart_chartarea_set_gradient(lxw_chart *chart,
|
||||
lxw_chart_gradient_fill *gradient);
|
||||
lxw_chart_gradient_fill * gradient);
|
||||
|
||||
/**
|
||||
* @brief Set the line properties for a plotarea.
|
||||
|
|
@ -3887,7 +3885,7 @@ void chart_plotarea_set_pattern(lxw_chart *chart, lxw_chart_pattern *pattern);
|
|||
* For more information see #lxw_chart_gradient_fill_type.
|
||||
*/
|
||||
void chart_plotarea_set_gradient(lxw_chart *chart,
|
||||
lxw_chart_gradient_fill *gradient);
|
||||
lxw_chart_gradient_fill * gradient);
|
||||
|
||||
/**
|
||||
* @brief Set the manual layout of the chart plotarea.
|
||||
|
|
|
|||
|
|
@ -39,8 +39,10 @@ extern "C" {
|
|||
/* *INDENT-ON* */
|
||||
|
||||
lxw_feature_property_bag *lxw_feature_property_bag_new(void);
|
||||
void lxw_feature_property_bag_free(lxw_feature_property_bag *feature_property_bag);
|
||||
void lxw_feature_property_bag_assemble_xml_file(lxw_feature_property_bag *self);
|
||||
void lxw_feature_property_bag_free(lxw_feature_property_bag
|
||||
*feature_property_bag);
|
||||
void lxw_feature_property_bag_assemble_xml_file(lxw_feature_property_bag
|
||||
*self);
|
||||
|
||||
/* Declarations required for unit testing. */
|
||||
#ifdef TESTING
|
||||
|
|
|
|||
|
|
@ -160,7 +160,7 @@ typedef struct lxw_sparkline_options {
|
|||
/* Internal sparkline structure with resolved values */
|
||||
typedef struct lxw_sparkline {
|
||||
|
||||
STAILQ_ENTRY(lxw_sparkline) list_pointers;
|
||||
STAILQ_ENTRY (lxw_sparkline) list_pointers;
|
||||
|
||||
char *range;
|
||||
lxw_row_t row;
|
||||
|
|
|
|||
|
|
@ -2983,8 +2983,7 @@ lxw_error worksheet_write_boolean(lxw_worksheet *worksheet,
|
|||
*
|
||||
*/
|
||||
lxw_error worksheet_insert_checkbox(lxw_worksheet *worksheet,
|
||||
lxw_row_t row, lxw_col_t col,
|
||||
int value);
|
||||
lxw_row_t row, lxw_col_t col, int value);
|
||||
|
||||
/**
|
||||
* @brief Write a formatted blank worksheet cell.
|
||||
|
|
@ -4155,7 +4154,7 @@ lxw_error worksheet_insert_textbox(lxw_worksheet *worksheet,
|
|||
lxw_error worksheet_insert_textbox_opt(lxw_worksheet *worksheet,
|
||||
lxw_row_t row, lxw_col_t col,
|
||||
const char *text,
|
||||
lxw_textbox_options *user_options);
|
||||
lxw_textbox_options * user_options);
|
||||
|
||||
/**
|
||||
* @brief Merge a range of cells.
|
||||
|
|
@ -4652,7 +4651,7 @@ lxw_error worksheet_add_table(lxw_worksheet *worksheet, lxw_row_t first_row,
|
|||
*/
|
||||
lxw_error worksheet_add_sparkline(lxw_worksheet *worksheet,
|
||||
lxw_row_t row, lxw_col_t col,
|
||||
lxw_sparkline_options *options);
|
||||
lxw_sparkline_options * options);
|
||||
|
||||
/**
|
||||
* @brief Make a worksheet the active, i.e., visible worksheet.
|
||||
|
|
|
|||
66
src/chart.c
66
src/chart.c
|
|
@ -324,10 +324,10 @@ lxw_chart_new(uint8_t type)
|
|||
chart->y_axis->axis_position = LXW_CHART_AXIS_LEFT;
|
||||
|
||||
/* Set the default secondary axis positions and properties. */
|
||||
chart->x2_axis->axis_position = LXW_CHART_AXIS_BOTTOM; /* Same as primary X axis */
|
||||
chart->x2_axis->axis_position = LXW_CHART_AXIS_BOTTOM; /* Same as primary X axis */
|
||||
chart->y2_axis->axis_position = LXW_CHART_AXIS_RIGHT;
|
||||
chart->x2_axis->hidden = LXW_TRUE; /* Secondary X axis hidden by default */
|
||||
chart->y2_axis->crossing_max = LXW_TRUE; /* Secondary Y axis crosses at max */
|
||||
chart->y2_axis->crossing_max = LXW_TRUE; /* Secondary Y axis crosses at max */
|
||||
|
||||
/* Set the default axis number formats. */
|
||||
_chart_axis_set_default_num_format(chart->x_axis, "General");
|
||||
|
|
@ -511,7 +511,8 @@ _chart_convert_gradient_args(lxw_chart_gradient_fill *user_gradient)
|
|||
gradient->angle = user_gradient->angle;
|
||||
|
||||
/* Set default angle for linear gradients. */
|
||||
if (gradient->type == LXW_CHART_GRADIENT_FILL_LINEAR && gradient->angle == 0)
|
||||
if (gradient->type == LXW_CHART_GRADIENT_FILL_LINEAR
|
||||
&& gradient->angle == 0)
|
||||
gradient->angle = 90;
|
||||
|
||||
for (i = 0; i < gradient->num_stops; i++) {
|
||||
|
|
@ -2301,7 +2302,8 @@ _chart_write_a_grad_fill(lxw_chart *self, lxw_chart_gradient_fill *gradient)
|
|||
*/
|
||||
STATIC void
|
||||
_chart_write_sp_pr_with_gradient(lxw_chart *self, lxw_chart_line *line,
|
||||
lxw_chart_fill *fill, lxw_chart_pattern *pattern,
|
||||
lxw_chart_fill *fill,
|
||||
lxw_chart_pattern *pattern,
|
||||
lxw_chart_gradient_fill *gradient)
|
||||
{
|
||||
if (!line && !fill && !pattern && !gradient)
|
||||
|
|
@ -5573,12 +5575,13 @@ _chart_write_stock_chart(lxw_chart *self, uint8_t primary_axes)
|
|||
uint16_t index = 0;
|
||||
|
||||
/* Default line for stock chart series (width 2.25, noFill). */
|
||||
lxw_chart_line default_line = {.width = 2.25, .none = LXW_TRUE};
|
||||
lxw_chart_line default_line = {.width = 2.25,.none = LXW_TRUE };
|
||||
|
||||
/* Default markers for stock chart series. */
|
||||
lxw_chart_marker default_marker_none = {.type = LXW_CHART_MARKER_NONE};
|
||||
lxw_chart_marker default_marker_none = {.type = LXW_CHART_MARKER_NONE };
|
||||
lxw_chart_marker default_marker_dot = {.type = LXW_CHART_MARKER_DOT,
|
||||
.size = 3};
|
||||
.size = 3
|
||||
};
|
||||
|
||||
/* Check if there are any series for this axis type. */
|
||||
STAILQ_FOREACH(series, self->series_list, list_pointers) {
|
||||
|
|
@ -5878,8 +5881,10 @@ _chart_write_scatter_plot_area(lxw_chart *self)
|
|||
}
|
||||
|
||||
/* Write the c:spPr element for the plotarea formatting. */
|
||||
_chart_write_sp_pr_with_gradient(self, self->plotarea_line, self->plotarea_fill,
|
||||
self->plotarea_pattern, self->plotarea_gradient);
|
||||
_chart_write_sp_pr_with_gradient(self, self->plotarea_line,
|
||||
self->plotarea_fill,
|
||||
self->plotarea_pattern,
|
||||
self->plotarea_gradient);
|
||||
|
||||
lxw_xml_end_tag(self->file, "c:plotArea");
|
||||
}
|
||||
|
|
@ -5908,8 +5913,10 @@ _chart_write_pie_plot_area(lxw_chart *self)
|
|||
}
|
||||
|
||||
/* Write the c:spPr element for the plotarea formatting. */
|
||||
_chart_write_sp_pr_with_gradient(self, self->plotarea_line, self->plotarea_fill,
|
||||
self->plotarea_pattern, self->plotarea_gradient);
|
||||
_chart_write_sp_pr_with_gradient(self, self->plotarea_line,
|
||||
self->plotarea_fill,
|
||||
self->plotarea_pattern,
|
||||
self->plotarea_gradient);
|
||||
|
||||
lxw_xml_end_tag(self->file, "c:plotArea");
|
||||
}
|
||||
|
|
@ -5979,8 +5986,10 @@ _chart_write_stock_plot_area(lxw_chart *self)
|
|||
_chart_write_d_table(self);
|
||||
|
||||
/* Write the c:spPr element for the plotarea formatting. */
|
||||
_chart_write_sp_pr_with_gradient(self, self->plotarea_line, self->plotarea_fill,
|
||||
self->plotarea_pattern, self->plotarea_gradient);
|
||||
_chart_write_sp_pr_with_gradient(self, self->plotarea_line,
|
||||
self->plotarea_fill,
|
||||
self->plotarea_pattern,
|
||||
self->plotarea_gradient);
|
||||
|
||||
lxw_xml_end_tag(self->file, "c:plotArea");
|
||||
}
|
||||
|
|
@ -6063,8 +6072,10 @@ _chart_write_plot_area(lxw_chart *self)
|
|||
_chart_write_d_table(self);
|
||||
|
||||
/* Write the c:spPr element for the plotarea formatting. */
|
||||
_chart_write_sp_pr_with_gradient(self, self->plotarea_line, self->plotarea_fill,
|
||||
self->plotarea_pattern, self->plotarea_gradient);
|
||||
_chart_write_sp_pr_with_gradient(self, self->plotarea_line,
|
||||
self->plotarea_fill,
|
||||
self->plotarea_pattern,
|
||||
self->plotarea_gradient);
|
||||
|
||||
lxw_xml_end_tag(self->file, "c:plotArea");
|
||||
}
|
||||
|
|
@ -6424,8 +6435,10 @@ lxw_chart_assemble_xml_file(lxw_chart *self)
|
|||
_chart_write_chart(self);
|
||||
|
||||
/* Write the c:spPr element for the chartarea formatting. */
|
||||
_chart_write_sp_pr_with_gradient(self, self->chartarea_line, self->chartarea_fill,
|
||||
self->chartarea_pattern, self->chartarea_gradient);
|
||||
_chart_write_sp_pr_with_gradient(self, self->chartarea_line,
|
||||
self->chartarea_fill,
|
||||
self->chartarea_pattern,
|
||||
self->chartarea_gradient);
|
||||
|
||||
/* Write the c:printSettings element. */
|
||||
if (!self->is_chartsheet)
|
||||
|
|
@ -6468,15 +6481,14 @@ lxw_chart_add_data_cache(lxw_series_range *range, uint8_t *data,
|
|||
* Add a series to the chart.
|
||||
*/
|
||||
lxw_chart_series *
|
||||
chart_add_series_impl(lxw_chart *self, const char *categories, const char *values,
|
||||
uint8_t y2_axis)
|
||||
chart_add_series_impl(lxw_chart *self, const char *categories,
|
||||
const char *values, uint8_t y2_axis)
|
||||
{
|
||||
lxw_chart_series *series;
|
||||
|
||||
/* Scatter charts require categories and values. */
|
||||
if (self->chart_group == LXW_CHART_SCATTER && values && !categories) {
|
||||
LXW_WARN("chart_add_series(): scatter charts must have "
|
||||
"'categories' and 'values'"); /* Keep user-facing name */
|
||||
LXW_WARN("chart_add_series(): scatter charts must have " "'categories' and 'values'"); /* Keep user-facing name */
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -7952,7 +7964,8 @@ chart_chartarea_set_pattern(lxw_chart *self, lxw_chart_pattern *pattern)
|
|||
* Set a gradient fill type for the chartarea.
|
||||
*/
|
||||
void
|
||||
chart_chartarea_set_gradient(lxw_chart *self, lxw_chart_gradient_fill *gradient)
|
||||
chart_chartarea_set_gradient(lxw_chart *self,
|
||||
lxw_chart_gradient_fill *gradient)
|
||||
{
|
||||
if (!gradient)
|
||||
return;
|
||||
|
|
@ -8012,7 +8025,8 @@ chart_plotarea_set_pattern(lxw_chart *self, lxw_chart_pattern *pattern)
|
|||
* Set a gradient fill type for the plotarea.
|
||||
*/
|
||||
void
|
||||
chart_plotarea_set_gradient(lxw_chart *self, lxw_chart_gradient_fill *gradient)
|
||||
chart_plotarea_set_gradient(lxw_chart *self,
|
||||
lxw_chart_gradient_fill *gradient)
|
||||
{
|
||||
if (!gradient)
|
||||
return;
|
||||
|
|
@ -8193,9 +8207,9 @@ chart_set_series_overlap_y2(lxw_chart *self, int8_t overlap)
|
|||
if (overlap >= -100 && overlap <= 100)
|
||||
self->overlap_y2 = overlap;
|
||||
else
|
||||
LXW_WARN_FORMAT1("chart_set_series_overlap_y2(): Chart series overlap "
|
||||
"'%d' outside Excel range: -100 <= overlap <= 100",
|
||||
overlap);
|
||||
LXW_WARN_FORMAT1
|
||||
("chart_set_series_overlap_y2(): Chart series overlap "
|
||||
"'%d' outside Excel range: -100 <= overlap <= 100", overlap);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -664,7 +664,8 @@ _drawing_write_a_prst_geom_rect(lxw_drawing *self)
|
|||
* Write the <xdr:spPr> element for shapes.
|
||||
*/
|
||||
STATIC void
|
||||
_drawing_write_sp_pr_shape(lxw_drawing *self, lxw_drawing_object *drawing_object)
|
||||
_drawing_write_sp_pr_shape(lxw_drawing *self,
|
||||
lxw_drawing_object *drawing_object)
|
||||
{
|
||||
struct xml_attribute_list attributes;
|
||||
struct xml_attribute *attribute;
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ _write_feature_property_bags(lxw_feature_property_bag *self)
|
|||
|
||||
LXW_INIT_ATTRIBUTES();
|
||||
LXW_PUSH_ATTRIBUTES_STR("xmlns",
|
||||
"http://schemas.microsoft.com/office/spreadsheetml/2022/featurepropertybag");
|
||||
"http://schemas.microsoft.com/office/spreadsheetml/2022/featurepropertybag");
|
||||
|
||||
lxw_xml_start_tag(self->file, "FeaturePropertyBags", &attributes);
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ ansi_to_utf8(const char *ansi_str)
|
|||
if (wide_len == 0)
|
||||
return NULL;
|
||||
|
||||
wchar_t *wide_str = (wchar_t *)malloc(wide_len * sizeof(wchar_t));
|
||||
wchar_t *wide_str = (wchar_t *) malloc(wide_len * sizeof(wchar_t));
|
||||
if (!wide_str)
|
||||
return NULL;
|
||||
|
||||
|
|
@ -46,19 +46,21 @@ ansi_to_utf8(const char *ansi_str)
|
|||
}
|
||||
|
||||
/* Then convert UTF-16 to UTF-8 */
|
||||
int utf8_len = WideCharToMultiByte(CP_UTF8, 0, wide_str, -1, NULL, 0, NULL, NULL);
|
||||
int utf8_len =
|
||||
WideCharToMultiByte(CP_UTF8, 0, wide_str, -1, NULL, 0, NULL, NULL);
|
||||
if (utf8_len == 0) {
|
||||
free(wide_str);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
char *utf8_str = (char *)malloc(utf8_len);
|
||||
char *utf8_str = (char *) malloc(utf8_len);
|
||||
if (!utf8_str) {
|
||||
free(wide_str);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (WideCharToMultiByte(CP_UTF8, 0, wide_str, -1, utf8_str, utf8_len, NULL, NULL) == 0) {
|
||||
if (WideCharToMultiByte
|
||||
(CP_UTF8, 0, wide_str, -1, utf8_str, utf8_len, NULL, NULL) == 0) {
|
||||
free(wide_str);
|
||||
free(utf8_str);
|
||||
return NULL;
|
||||
|
|
@ -87,21 +89,27 @@ ansi_to_utf8(const char *str)
|
|||
* ============================================================================ */
|
||||
|
||||
lxw_error
|
||||
worksheet_write_string_lv(lxw_worksheet *worksheet, lxw_row_t row, lxw_col_t col,
|
||||
const char *string, lxw_format *format)
|
||||
worksheet_write_string_lv(lxw_worksheet *worksheet, lxw_row_t row,
|
||||
lxw_col_t col, const char *string,
|
||||
lxw_format *format)
|
||||
{
|
||||
char *utf8 = ansi_to_utf8(string);
|
||||
lxw_error err = worksheet_write_string(worksheet, row, col, utf8 ? utf8 : string, format);
|
||||
lxw_error err =
|
||||
worksheet_write_string(worksheet, row, col, utf8 ? utf8 : string,
|
||||
format);
|
||||
free(utf8);
|
||||
return err;
|
||||
}
|
||||
|
||||
lxw_error
|
||||
worksheet_write_formula_lv(lxw_worksheet *worksheet, lxw_row_t row, lxw_col_t col,
|
||||
const char *formula, lxw_format *format)
|
||||
worksheet_write_formula_lv(lxw_worksheet *worksheet, lxw_row_t row,
|
||||
lxw_col_t col, const char *formula,
|
||||
lxw_format *format)
|
||||
{
|
||||
char *utf8 = ansi_to_utf8(formula);
|
||||
lxw_error err = worksheet_write_formula(worksheet, row, col, utf8 ? utf8 : formula, format);
|
||||
lxw_error err =
|
||||
worksheet_write_formula(worksheet, row, col, utf8 ? utf8 : formula,
|
||||
format);
|
||||
free(utf8);
|
||||
return err;
|
||||
}
|
||||
|
|
@ -111,17 +119,19 @@ worksheet_write_url_lv(lxw_worksheet *worksheet, lxw_row_t row, lxw_col_t col,
|
|||
const char *url, lxw_format *format)
|
||||
{
|
||||
char *utf8 = ansi_to_utf8(url);
|
||||
lxw_error err = worksheet_write_url(worksheet, row, col, utf8 ? utf8 : url, format);
|
||||
lxw_error err =
|
||||
worksheet_write_url(worksheet, row, col, utf8 ? utf8 : url, format);
|
||||
free(utf8);
|
||||
return err;
|
||||
}
|
||||
|
||||
lxw_error
|
||||
worksheet_write_comment_lv(lxw_worksheet *worksheet, lxw_row_t row, lxw_col_t col,
|
||||
const char *string)
|
||||
worksheet_write_comment_lv(lxw_worksheet *worksheet, lxw_row_t row,
|
||||
lxw_col_t col, const char *string)
|
||||
{
|
||||
char *utf8 = ansi_to_utf8(string);
|
||||
lxw_error err = worksheet_write_comment(worksheet, row, col, utf8 ? utf8 : string);
|
||||
lxw_error err =
|
||||
worksheet_write_comment(worksheet, row, col, utf8 ? utf8 : string);
|
||||
free(utf8);
|
||||
return err;
|
||||
}
|
||||
|
|
@ -145,13 +155,16 @@ worksheet_set_footer_lv(lxw_worksheet *worksheet, const char *footer)
|
|||
}
|
||||
|
||||
lxw_error
|
||||
worksheet_merge_range_lv(lxw_worksheet *worksheet, lxw_row_t first_row, lxw_col_t first_col,
|
||||
lxw_row_t last_row, lxw_col_t last_col, const char *string,
|
||||
worksheet_merge_range_lv(lxw_worksheet *worksheet, lxw_row_t first_row,
|
||||
lxw_col_t first_col, lxw_row_t last_row,
|
||||
lxw_col_t last_col, const char *string,
|
||||
lxw_format *format)
|
||||
{
|
||||
char *utf8 = ansi_to_utf8(string);
|
||||
lxw_error err = worksheet_merge_range(worksheet, first_row, first_col, last_row, last_col,
|
||||
utf8 ? utf8 : string, format);
|
||||
lxw_error err =
|
||||
worksheet_merge_range(worksheet, first_row, first_col, last_row,
|
||||
last_col,
|
||||
utf8 ? utf8 : string, format);
|
||||
free(utf8);
|
||||
return err;
|
||||
}
|
||||
|
|
@ -165,21 +178,25 @@ worksheet_set_comments_author_lv(lxw_worksheet *worksheet, const char *author)
|
|||
}
|
||||
|
||||
lxw_error
|
||||
worksheet_insert_textbox_lv(lxw_worksheet *worksheet, lxw_row_t row, lxw_col_t col,
|
||||
const char *text)
|
||||
worksheet_insert_textbox_lv(lxw_worksheet *worksheet, lxw_row_t row,
|
||||
lxw_col_t col, const char *text)
|
||||
{
|
||||
char *utf8 = ansi_to_utf8(text);
|
||||
lxw_error err = worksheet_insert_textbox(worksheet, row, col, utf8 ? utf8 : text);
|
||||
lxw_error err =
|
||||
worksheet_insert_textbox(worksheet, row, col, utf8 ? utf8 : text);
|
||||
free(utf8);
|
||||
return err;
|
||||
}
|
||||
|
||||
lxw_error
|
||||
worksheet_insert_textbox_opt_lv(lxw_worksheet *worksheet, lxw_row_t row, lxw_col_t col,
|
||||
const char *text, lxw_textbox_options *options)
|
||||
worksheet_insert_textbox_opt_lv(lxw_worksheet *worksheet, lxw_row_t row,
|
||||
lxw_col_t col, const char *text,
|
||||
lxw_textbox_options *options)
|
||||
{
|
||||
char *utf8 = ansi_to_utf8(text);
|
||||
lxw_error err = worksheet_insert_textbox_opt(worksheet, row, col, utf8 ? utf8 : text, options);
|
||||
lxw_error err =
|
||||
worksheet_insert_textbox_opt(worksheet, row, col, utf8 ? utf8 : text,
|
||||
options);
|
||||
free(utf8);
|
||||
return err;
|
||||
}
|
||||
|
|
@ -189,15 +206,17 @@ worksheet_insert_textbox_opt_lv(lxw_worksheet *worksheet, lxw_row_t row, lxw_col
|
|||
* ============================================================================ */
|
||||
|
||||
lxw_chart_series *
|
||||
chart_add_series_lv(lxw_chart *chart, const char *categories, const char *values,
|
||||
uint8_t y2_axis)
|
||||
chart_add_series_lv(lxw_chart *chart, const char *categories,
|
||||
const char *values, uint8_t y2_axis)
|
||||
{
|
||||
char *utf8_cat = ansi_to_utf8(categories);
|
||||
char *utf8_val = ansi_to_utf8(values);
|
||||
lxw_chart_series *series = chart_add_series_impl(chart,
|
||||
utf8_cat ? utf8_cat : categories,
|
||||
utf8_val ? utf8_val : values,
|
||||
y2_axis);
|
||||
utf8_cat ? utf8_cat :
|
||||
categories,
|
||||
utf8_val ? utf8_val :
|
||||
values,
|
||||
y2_axis);
|
||||
free(utf8_cat);
|
||||
free(utf8_val);
|
||||
return series;
|
||||
|
|
@ -244,7 +263,8 @@ chart_axis_set_num_format_lv(lxw_chart_axis *axis, const char *num_format)
|
|||
}
|
||||
|
||||
void
|
||||
chart_series_set_labels_num_format_lv(lxw_chart_series *series, const char *num_format)
|
||||
chart_series_set_labels_num_format_lv(lxw_chart_series *series,
|
||||
const char *num_format)
|
||||
{
|
||||
char *utf8 = ansi_to_utf8(num_format);
|
||||
chart_series_set_labels_num_format(series, utf8 ? utf8 : num_format);
|
||||
|
|
@ -252,9 +272,10 @@ chart_series_set_labels_num_format_lv(lxw_chart_series *series, const char *num_
|
|||
}
|
||||
|
||||
void
|
||||
chart_series_set_categories_lv(lxw_chart_series *series, const char *sheetname,
|
||||
lxw_row_t first_row, lxw_col_t first_col,
|
||||
lxw_row_t last_row, lxw_col_t last_col)
|
||||
chart_series_set_categories_lv(lxw_chart_series *series,
|
||||
const char *sheetname, lxw_row_t first_row,
|
||||
lxw_col_t first_col, lxw_row_t last_row,
|
||||
lxw_col_t last_col)
|
||||
{
|
||||
char *utf8 = ansi_to_utf8(sheetname);
|
||||
chart_series_set_categories(series, utf8 ? utf8 : sheetname,
|
||||
|
|
@ -274,8 +295,9 @@ chart_series_set_values_lv(lxw_chart_series *series, const char *sheetname,
|
|||
}
|
||||
|
||||
void
|
||||
chart_series_set_name_range_lv(lxw_chart_series *series, const char *sheetname,
|
||||
lxw_row_t row, lxw_col_t col)
|
||||
chart_series_set_name_range_lv(lxw_chart_series *series,
|
||||
const char *sheetname, lxw_row_t row,
|
||||
lxw_col_t col)
|
||||
{
|
||||
char *utf8 = ansi_to_utf8(sheetname);
|
||||
chart_series_set_name_range(series, utf8 ? utf8 : sheetname, row, col);
|
||||
|
|
@ -332,7 +354,8 @@ workbook_add_worksheet_lv(lxw_workbook *workbook, const char *sheetname)
|
|||
return workbook_add_worksheet(workbook, NULL);
|
||||
}
|
||||
char *utf8 = ansi_to_utf8(sheetname);
|
||||
lxw_worksheet *ws = workbook_add_worksheet(workbook, utf8 ? utf8 : sheetname);
|
||||
lxw_worksheet *ws =
|
||||
workbook_add_worksheet(workbook, utf8 ? utf8 : sheetname);
|
||||
free(utf8);
|
||||
return ws;
|
||||
}
|
||||
|
|
@ -345,19 +368,22 @@ workbook_add_chartsheet_lv(lxw_workbook *workbook, const char *sheetname)
|
|||
return workbook_add_chartsheet(workbook, NULL);
|
||||
}
|
||||
char *utf8 = ansi_to_utf8(sheetname);
|
||||
lxw_chartsheet *cs = workbook_add_chartsheet(workbook, utf8 ? utf8 : sheetname);
|
||||
lxw_chartsheet *cs =
|
||||
workbook_add_chartsheet(workbook, utf8 ? utf8 : sheetname);
|
||||
free(utf8);
|
||||
return cs;
|
||||
}
|
||||
|
||||
lxw_error
|
||||
workbook_define_name_lv(lxw_workbook *workbook, const char *name, const char *formula)
|
||||
workbook_define_name_lv(lxw_workbook *workbook, const char *name,
|
||||
const char *formula)
|
||||
{
|
||||
char *utf8_name = ansi_to_utf8(name);
|
||||
char *utf8_formula = ansi_to_utf8(formula);
|
||||
lxw_error err = workbook_define_name(workbook,
|
||||
utf8_name ? utf8_name : name,
|
||||
utf8_formula ? utf8_formula : formula);
|
||||
utf8_formula ? utf8_formula :
|
||||
formula);
|
||||
free(utf8_name);
|
||||
free(utf8_formula);
|
||||
return err;
|
||||
|
|
@ -367,7 +393,8 @@ lxw_worksheet *
|
|||
workbook_get_worksheet_by_name_lv(lxw_workbook *workbook, const char *name)
|
||||
{
|
||||
char *utf8 = ansi_to_utf8(name);
|
||||
lxw_worksheet *ws = workbook_get_worksheet_by_name(workbook, utf8 ? utf8 : name);
|
||||
lxw_worksheet *ws =
|
||||
workbook_get_worksheet_by_name(workbook, utf8 ? utf8 : name);
|
||||
free(utf8);
|
||||
return ws;
|
||||
}
|
||||
|
|
@ -376,7 +403,8 @@ lxw_chartsheet *
|
|||
workbook_get_chartsheet_by_name_lv(lxw_workbook *workbook, const char *name)
|
||||
{
|
||||
char *utf8 = ansi_to_utf8(name);
|
||||
lxw_chartsheet *cs = workbook_get_chartsheet_by_name(workbook, utf8 ? utf8 : name);
|
||||
lxw_chartsheet *cs =
|
||||
workbook_get_chartsheet_by_name(workbook, utf8 ? utf8 : name);
|
||||
free(utf8);
|
||||
return cs;
|
||||
}
|
||||
|
|
@ -385,20 +413,23 @@ lxw_error
|
|||
workbook_validate_sheet_name_lv(lxw_workbook *workbook, const char *sheetname)
|
||||
{
|
||||
char *utf8 = ansi_to_utf8(sheetname);
|
||||
lxw_error err = workbook_validate_sheet_name(workbook, utf8 ? utf8 : sheetname);
|
||||
lxw_error err =
|
||||
workbook_validate_sheet_name(workbook, utf8 ? utf8 : sheetname);
|
||||
free(utf8);
|
||||
return err;
|
||||
}
|
||||
|
||||
lxw_error
|
||||
workbook_set_custom_property_string_lv(lxw_workbook *workbook, const char *name,
|
||||
const char *value)
|
||||
workbook_set_custom_property_string_lv(lxw_workbook *workbook,
|
||||
const char *name, const char *value)
|
||||
{
|
||||
char *utf8_name = ansi_to_utf8(name);
|
||||
char *utf8_value = ansi_to_utf8(value);
|
||||
lxw_error err = workbook_set_custom_property_string(workbook,
|
||||
utf8_name ? utf8_name : name,
|
||||
utf8_value ? utf8_value : value);
|
||||
utf8_name ? utf8_name
|
||||
: name,
|
||||
utf8_value ?
|
||||
utf8_value : value);
|
||||
free(utf8_name);
|
||||
free(utf8_value);
|
||||
return err;
|
||||
|
|
@ -449,41 +480,49 @@ workbook_new_opt_lv(const char *filename, lxw_workbook_options *options)
|
|||
}
|
||||
|
||||
lxw_error
|
||||
worksheet_insert_image_lv(lxw_worksheet *worksheet, lxw_row_t row, lxw_col_t col,
|
||||
const char *filename)
|
||||
worksheet_insert_image_lv(lxw_worksheet *worksheet, lxw_row_t row,
|
||||
lxw_col_t col, const char *filename)
|
||||
{
|
||||
char *utf8 = ansi_to_utf8(filename);
|
||||
lxw_error err = worksheet_insert_image(worksheet, row, col, utf8 ? utf8 : filename);
|
||||
lxw_error err =
|
||||
worksheet_insert_image(worksheet, row, col, utf8 ? utf8 : filename);
|
||||
free(utf8);
|
||||
return err;
|
||||
}
|
||||
|
||||
lxw_error
|
||||
worksheet_insert_image_opt_lv(lxw_worksheet *worksheet, lxw_row_t row, lxw_col_t col,
|
||||
const char *filename, lxw_image_options *options)
|
||||
worksheet_insert_image_opt_lv(lxw_worksheet *worksheet, lxw_row_t row,
|
||||
lxw_col_t col, const char *filename,
|
||||
lxw_image_options *options)
|
||||
{
|
||||
char *utf8 = ansi_to_utf8(filename);
|
||||
lxw_error err = worksheet_insert_image_opt(worksheet, row, col, utf8 ? utf8 : filename, options);
|
||||
lxw_error err = worksheet_insert_image_opt(worksheet, row, col,
|
||||
utf8 ? utf8 : filename,
|
||||
options);
|
||||
free(utf8);
|
||||
return err;
|
||||
}
|
||||
|
||||
lxw_error
|
||||
worksheet_embed_image_lv(lxw_worksheet *worksheet, lxw_row_t row, lxw_col_t col,
|
||||
const char *filename)
|
||||
worksheet_embed_image_lv(lxw_worksheet *worksheet, lxw_row_t row,
|
||||
lxw_col_t col, const char *filename)
|
||||
{
|
||||
char *utf8 = ansi_to_utf8(filename);
|
||||
lxw_error err = worksheet_embed_image(worksheet, row, col, utf8 ? utf8 : filename);
|
||||
lxw_error err =
|
||||
worksheet_embed_image(worksheet, row, col, utf8 ? utf8 : filename);
|
||||
free(utf8);
|
||||
return err;
|
||||
}
|
||||
|
||||
lxw_error
|
||||
worksheet_embed_image_opt_lv(lxw_worksheet *worksheet, lxw_row_t row, lxw_col_t col,
|
||||
const char *filename, lxw_image_options *options)
|
||||
worksheet_embed_image_opt_lv(lxw_worksheet *worksheet, lxw_row_t row,
|
||||
lxw_col_t col, const char *filename,
|
||||
lxw_image_options *options)
|
||||
{
|
||||
char *utf8 = ansi_to_utf8(filename);
|
||||
lxw_error err = worksheet_embed_image_opt(worksheet, row, col, utf8 ? utf8 : filename, options);
|
||||
lxw_error err =
|
||||
worksheet_embed_image_opt(worksheet, row, col, utf8 ? utf8 : filename,
|
||||
options);
|
||||
free(utf8);
|
||||
return err;
|
||||
}
|
||||
|
|
@ -492,7 +531,8 @@ lxw_error
|
|||
worksheet_set_background_lv(lxw_worksheet *worksheet, const char *filename)
|
||||
{
|
||||
char *utf8 = ansi_to_utf8(filename);
|
||||
lxw_error err = worksheet_set_background(worksheet, utf8 ? utf8 : filename);
|
||||
lxw_error err =
|
||||
worksheet_set_background(worksheet, utf8 ? utf8 : filename);
|
||||
free(utf8);
|
||||
return err;
|
||||
}
|
||||
|
|
@ -501,20 +541,24 @@ lxw_error
|
|||
workbook_add_vba_project_lv(lxw_workbook *workbook, const char *filename)
|
||||
{
|
||||
char *utf8 = ansi_to_utf8(filename);
|
||||
lxw_error err = workbook_add_vba_project(workbook, utf8 ? utf8 : filename);
|
||||
lxw_error err =
|
||||
workbook_add_vba_project(workbook, utf8 ? utf8 : filename);
|
||||
free(utf8);
|
||||
return err;
|
||||
}
|
||||
|
||||
lxw_error
|
||||
workbook_add_signed_vba_project_lv(lxw_workbook *workbook, const char *vba_project,
|
||||
workbook_add_signed_vba_project_lv(lxw_workbook *workbook,
|
||||
const char *vba_project,
|
||||
const char *signature)
|
||||
{
|
||||
char *utf8_vba = ansi_to_utf8(vba_project);
|
||||
char *utf8_sig = ansi_to_utf8(signature);
|
||||
lxw_error err = workbook_add_signed_vba_project(workbook,
|
||||
utf8_vba ? utf8_vba : vba_project,
|
||||
utf8_sig ? utf8_sig : signature);
|
||||
utf8_vba ? utf8_vba :
|
||||
vba_project,
|
||||
utf8_sig ? utf8_sig :
|
||||
signature);
|
||||
free(utf8_vba);
|
||||
free(utf8_sig);
|
||||
return err;
|
||||
|
|
@ -526,9 +570,10 @@ workbook_add_signed_vba_project_lv(lxw_workbook *workbook, const char *vba_proje
|
|||
|
||||
lxw_error
|
||||
worksheet_filter_column_lv(lxw_worksheet *worksheet, lxw_col_t col,
|
||||
uint8_t criteria, const char *value_string, double value)
|
||||
uint8_t criteria, const char *value_string,
|
||||
double value)
|
||||
{
|
||||
lxw_filter_rule rule = {0};
|
||||
lxw_filter_rule rule = { 0 };
|
||||
rule.criteria = criteria;
|
||||
rule.value = value;
|
||||
|
||||
|
|
@ -547,12 +592,13 @@ worksheet_filter_column_lv(lxw_worksheet *worksheet, lxw_col_t col,
|
|||
|
||||
lxw_error
|
||||
worksheet_filter_column2_lv(lxw_worksheet *worksheet, lxw_col_t col,
|
||||
uint8_t criteria1, const char *value_string1, double value1,
|
||||
uint8_t criteria2, const char *value_string2, double value2,
|
||||
uint8_t criteria1, const char *value_string1,
|
||||
double value1, uint8_t criteria2,
|
||||
const char *value_string2, double value2,
|
||||
uint8_t and_or)
|
||||
{
|
||||
lxw_filter_rule rule1 = {0};
|
||||
lxw_filter_rule rule2 = {0};
|
||||
lxw_filter_rule rule1 = { 0 };
|
||||
lxw_filter_rule rule2 = { 0 };
|
||||
char *utf8_1 = NULL;
|
||||
char *utf8_2 = NULL;
|
||||
|
||||
|
|
@ -571,7 +617,8 @@ worksheet_filter_column2_lv(lxw_worksheet *worksheet, lxw_col_t col,
|
|||
rule2.value_string = utf8_2 ? utf8_2 : value_string2;
|
||||
}
|
||||
|
||||
lxw_error err = worksheet_filter_column2(worksheet, col, &rule1, &rule2, and_or);
|
||||
lxw_error err =
|
||||
worksheet_filter_column2(worksheet, col, &rule1, &rule2, and_or);
|
||||
|
||||
free(utf8_1);
|
||||
free(utf8_2);
|
||||
|
|
@ -585,8 +632,7 @@ worksheet_filter_column2_lv(lxw_worksheet *worksheet, lxw_col_t col,
|
|||
lxw_error
|
||||
chart_series_set_labels_custom_lv(lxw_chart_series *series,
|
||||
uintptr_t *values,
|
||||
uint8_t *hide_flags,
|
||||
uint16_t count)
|
||||
uint8_t *hide_flags, uint16_t count)
|
||||
{
|
||||
lxw_error err = LXW_NO_ERROR;
|
||||
uint16_t i;
|
||||
|
|
@ -598,9 +644,12 @@ chart_series_set_labels_custom_lv(lxw_chart_series *series,
|
|||
return LXW_ERROR_NULL_PARAMETER_IGNORED;
|
||||
|
||||
/* Allocate arrays */
|
||||
labels = (lxw_chart_data_label *)calloc(count, sizeof(lxw_chart_data_label));
|
||||
label_ptrs = (lxw_chart_data_label **)calloc(count + 1, sizeof(lxw_chart_data_label *));
|
||||
utf8_values = (char **)calloc(count, sizeof(char *));
|
||||
labels =
|
||||
(lxw_chart_data_label *) calloc(count, sizeof(lxw_chart_data_label));
|
||||
label_ptrs =
|
||||
(lxw_chart_data_label **) calloc(count + 1,
|
||||
sizeof(lxw_chart_data_label *));
|
||||
utf8_values = (char **) calloc(count, sizeof(char *));
|
||||
|
||||
if (!labels || !label_ptrs || !utf8_values) {
|
||||
free(labels);
|
||||
|
|
@ -617,7 +666,7 @@ chart_series_set_labels_custom_lv(lxw_chart_series *series,
|
|||
label_ptrs[i] = &labels[i];
|
||||
|
||||
/* Get string pointer from uintptr_t array */
|
||||
str = (values && values[i]) ? (const char *)values[i] : NULL;
|
||||
str = (values && values[i]) ? (const char *) values[i] : NULL;
|
||||
|
||||
/* Convert value string if provided */
|
||||
if (str && str[0]) {
|
||||
|
|
|
|||
|
|
@ -1201,7 +1201,7 @@ _write_xf_format_extensions(lxw_styles *self)
|
|||
LXW_INIT_ATTRIBUTES();
|
||||
LXW_PUSH_ATTRIBUTES_STR("uri", "{C7286773-470A-42A8-94C5-96B5CB345126}");
|
||||
LXW_PUSH_ATTRIBUTES_STR("xmlns:xfpb",
|
||||
"http://schemas.microsoft.com/office/spreadsheetml/2022/featurepropertybag");
|
||||
"http://schemas.microsoft.com/office/spreadsheetml/2022/featurepropertybag");
|
||||
|
||||
lxw_xml_start_tag(self->file, "ext", &attributes);
|
||||
LXW_FREE_ATTRIBUTES();
|
||||
|
|
|
|||
192
src/utility.c
192
src/utility.c
|
|
@ -758,101 +758,101 @@ lxw_hash_password(const char *password)
|
|||
* Unhandled characters (including UTF-8) default to width 8.
|
||||
*/
|
||||
static const uint8_t char_widths[95] = {
|
||||
3, /* space */
|
||||
5, /* ! */
|
||||
6, /* " */
|
||||
7, /* # */
|
||||
7, /* $ */
|
||||
11, /* % */
|
||||
10, /* & */
|
||||
3, /* ' */
|
||||
5, /* ( */
|
||||
5, /* ) */
|
||||
7, /* * */
|
||||
7, /* + */
|
||||
4, /* , */
|
||||
5, /* - */
|
||||
4, /* . */
|
||||
6, /* / */
|
||||
7, /* 0 */
|
||||
7, /* 1 */
|
||||
7, /* 2 */
|
||||
7, /* 3 */
|
||||
7, /* 4 */
|
||||
7, /* 5 */
|
||||
7, /* 6 */
|
||||
7, /* 7 */
|
||||
7, /* 8 */
|
||||
7, /* 9 */
|
||||
4, /* : */
|
||||
4, /* ; */
|
||||
7, /* < */
|
||||
7, /* = */
|
||||
7, /* > */
|
||||
7, /* ? */
|
||||
13, /* @ */
|
||||
9, /* A */
|
||||
8, /* B */
|
||||
8, /* C */
|
||||
9, /* D */
|
||||
7, /* E */
|
||||
7, /* F */
|
||||
9, /* G */
|
||||
9, /* H */
|
||||
4, /* I */
|
||||
5, /* J */
|
||||
8, /* K */
|
||||
6, /* L */
|
||||
12, /* M */
|
||||
10, /* N */
|
||||
10, /* O */
|
||||
8, /* P */
|
||||
10, /* Q */
|
||||
8, /* R */
|
||||
7, /* S */
|
||||
7, /* T */
|
||||
9, /* U */
|
||||
9, /* V */
|
||||
13, /* W */
|
||||
8, /* X */
|
||||
7, /* Y */
|
||||
7, /* Z */
|
||||
5, /* [ */
|
||||
6, /* backslash */
|
||||
5, /* ] */
|
||||
7, /* ^ */
|
||||
7, /* _ */
|
||||
4, /* ` */
|
||||
7, /* a */
|
||||
8, /* b */
|
||||
6, /* c */
|
||||
8, /* d */
|
||||
8, /* e */
|
||||
5, /* f */
|
||||
7, /* g */
|
||||
8, /* h */
|
||||
4, /* i */
|
||||
4, /* j */
|
||||
7, /* k */
|
||||
4, /* l */
|
||||
12, /* m */
|
||||
8, /* n */
|
||||
8, /* o */
|
||||
8, /* p */
|
||||
8, /* q */
|
||||
5, /* r */
|
||||
6, /* s */
|
||||
5, /* t */
|
||||
8, /* u */
|
||||
7, /* v */
|
||||
11, /* w */
|
||||
7, /* x */
|
||||
7, /* y */
|
||||
6, /* z */
|
||||
5, /* { */
|
||||
7, /* | */
|
||||
5, /* } */
|
||||
7 /* ~ */
|
||||
3, /* space */
|
||||
5, /* ! */
|
||||
6, /* " */
|
||||
7, /* # */
|
||||
7, /* $ */
|
||||
11, /* % */
|
||||
10, /* & */
|
||||
3, /* ' */
|
||||
5, /* ( */
|
||||
5, /* ) */
|
||||
7, /* * */
|
||||
7, /* + */
|
||||
4, /* , */
|
||||
5, /* - */
|
||||
4, /* . */
|
||||
6, /* / */
|
||||
7, /* 0 */
|
||||
7, /* 1 */
|
||||
7, /* 2 */
|
||||
7, /* 3 */
|
||||
7, /* 4 */
|
||||
7, /* 5 */
|
||||
7, /* 6 */
|
||||
7, /* 7 */
|
||||
7, /* 8 */
|
||||
7, /* 9 */
|
||||
4, /* : */
|
||||
4, /* ; */
|
||||
7, /* < */
|
||||
7, /* = */
|
||||
7, /* > */
|
||||
7, /* ? */
|
||||
13, /* @ */
|
||||
9, /* A */
|
||||
8, /* B */
|
||||
8, /* C */
|
||||
9, /* D */
|
||||
7, /* E */
|
||||
7, /* F */
|
||||
9, /* G */
|
||||
9, /* H */
|
||||
4, /* I */
|
||||
5, /* J */
|
||||
8, /* K */
|
||||
6, /* L */
|
||||
12, /* M */
|
||||
10, /* N */
|
||||
10, /* O */
|
||||
8, /* P */
|
||||
10, /* Q */
|
||||
8, /* R */
|
||||
7, /* S */
|
||||
7, /* T */
|
||||
9, /* U */
|
||||
9, /* V */
|
||||
13, /* W */
|
||||
8, /* X */
|
||||
7, /* Y */
|
||||
7, /* Z */
|
||||
5, /* [ */
|
||||
6, /* backslash */
|
||||
5, /* ] */
|
||||
7, /* ^ */
|
||||
7, /* _ */
|
||||
4, /* ` */
|
||||
7, /* a */
|
||||
8, /* b */
|
||||
6, /* c */
|
||||
8, /* d */
|
||||
8, /* e */
|
||||
5, /* f */
|
||||
7, /* g */
|
||||
8, /* h */
|
||||
4, /* i */
|
||||
4, /* j */
|
||||
7, /* k */
|
||||
4, /* l */
|
||||
12, /* m */
|
||||
8, /* n */
|
||||
8, /* o */
|
||||
8, /* p */
|
||||
8, /* q */
|
||||
5, /* r */
|
||||
6, /* s */
|
||||
5, /* t */
|
||||
8, /* u */
|
||||
7, /* v */
|
||||
11, /* w */
|
||||
7, /* x */
|
||||
7, /* y */
|
||||
6, /* z */
|
||||
5, /* { */
|
||||
7, /* | */
|
||||
5, /* } */
|
||||
7 /* ~ */
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
@ -889,7 +889,7 @@ lxw_autofit_width(const char *string)
|
|||
{
|
||||
uint16_t pixels;
|
||||
double width;
|
||||
const double max_digit_width = 7.0; /* For Calibri 11 */
|
||||
const double max_digit_width = 7.0; /* For Calibri 11 */
|
||||
const double padding = 5.0;
|
||||
|
||||
if (string == NULL || *string == '\0')
|
||||
|
|
|
|||
|
|
@ -1272,7 +1272,8 @@ _prepare_drawings(lxw_workbook *self)
|
|||
|
||||
/* Prepare worksheet textboxes. */
|
||||
STAILQ_FOREACH(object_props, worksheet->textbox_data, list_pointers) {
|
||||
lxw_worksheet_prepare_textbox(worksheet, drawing_id, object_props);
|
||||
lxw_worksheet_prepare_textbox(worksheet, drawing_id,
|
||||
object_props);
|
||||
}
|
||||
|
||||
/* Prepare worksheet header/footer images. */
|
||||
|
|
|
|||
|
|
@ -7293,7 +7293,8 @@ _worksheet_write_sparkline_color(lxw_worksheet *self, const char *tag,
|
|||
* Write the <x14:sparklineGroup> element.
|
||||
*/
|
||||
STATIC void
|
||||
_worksheet_write_sparkline_group(lxw_worksheet *self, lxw_sparkline *sparkline)
|
||||
_worksheet_write_sparkline_group(lxw_worksheet *self,
|
||||
lxw_sparkline *sparkline)
|
||||
{
|
||||
struct xml_attribute_list attributes;
|
||||
struct xml_attribute *attribute;
|
||||
|
|
@ -8646,8 +8647,7 @@ worksheet_write_boolean(lxw_worksheet *self,
|
|||
*/
|
||||
lxw_error
|
||||
worksheet_insert_checkbox(lxw_worksheet *self,
|
||||
lxw_row_t row_num, lxw_col_t col_num,
|
||||
int value)
|
||||
lxw_row_t row_num, lxw_col_t col_num, int value)
|
||||
{
|
||||
lxw_cell *cell;
|
||||
lxw_error err;
|
||||
|
|
@ -9917,7 +9917,8 @@ worksheet_add_sparkline(lxw_worksheet *self, lxw_row_t row, lxw_col_t col,
|
|||
char location[LXW_MAX_CELL_NAME_LENGTH];
|
||||
|
||||
if (!user_options) {
|
||||
LXW_WARN("worksheet_add_sparkline(): options parameter cannot be NULL");
|
||||
LXW_WARN
|
||||
("worksheet_add_sparkline(): options parameter cannot be NULL");
|
||||
return LXW_ERROR_NULL_PARAMETER_IGNORED;
|
||||
}
|
||||
|
||||
|
|
@ -9984,7 +9985,7 @@ worksheet_add_sparkline(lxw_worksheet *self, lxw_row_t row, lxw_col_t col,
|
|||
|
||||
sparkline->weight = user_options->weight;
|
||||
if (sparkline->weight == 0.0)
|
||||
sparkline->weight = 0.75; /* Default line weight */
|
||||
sparkline->weight = 0.75; /* Default line weight */
|
||||
|
||||
if (user_options->date_axis) {
|
||||
sparkline->date_axis = lxw_strdup(user_options->date_axis);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue