mirror of
https://github.com/jmcnamara/libxlsxwriter.git
synced 2026-05-21 06:45:21 -06:00
Added chart patterns handling.
This commit is contained in:
parent
c2ced78e48
commit
8ef418b034
21 changed files with 1109 additions and 17 deletions
2
.indent.pro
vendored
2
.indent.pro
vendored
|
|
@ -57,6 +57,8 @@
|
|||
-T lxw_chart_line_dash_type
|
||||
-T lxw_chart_marker
|
||||
-T lxw_chart_marker_type
|
||||
-T lxw_chart_pattern
|
||||
-T lxw_chart_pattern_type
|
||||
-T lxw_chart_series
|
||||
-T lxw_chart_title
|
||||
-T lxw_chart_type
|
||||
|
|
|
|||
|
|
@ -391,6 +391,11 @@ set via the `line` format:
|
|||
@image html chart_fill4.png
|
||||
|
||||
|
||||
@subsection chart_patterns Chart formatting: Pattern
|
||||
|
||||
TODO
|
||||
|
||||
|
||||
@section ww_charts_limitations Chart Limitations
|
||||
|
||||
The following chart features aren't currently supported in libxlsxwriter but
|
||||
|
|
|
|||
|
|
@ -82,7 +82,9 @@ STAILQ_HEAD(lxw_series_data_points, lxw_series_data_point);
|
|||
|
||||
#define LXW_CHART_NUM_FORMAT_LEN 128
|
||||
|
||||
/** Available chart types . */
|
||||
/**
|
||||
* @brief Available chart types.
|
||||
*/
|
||||
typedef enum lxw_chart_type {
|
||||
|
||||
/** None. */
|
||||
|
|
@ -149,7 +151,9 @@ typedef enum lxw_chart_type {
|
|||
LXW_CHART_RADAR_FILLED
|
||||
} lxw_chart_type;
|
||||
|
||||
/** Chart legend positions. */
|
||||
/**
|
||||
* @brief Chart legend positions.
|
||||
*/
|
||||
typedef enum lxw_chart_legend_position {
|
||||
|
||||
/** No chart legend. */
|
||||
|
|
@ -174,7 +178,8 @@ typedef enum lxw_chart_legend_position {
|
|||
LXW_CHART_LEGEND_OVERLAY_LEFT
|
||||
} lxw_chart_legend_position;
|
||||
|
||||
/** @brief Chart line dash types.
|
||||
/**
|
||||
* @brief Chart line dash types.
|
||||
*
|
||||
* The dash types are shown in the order that they appear in the Excel dialog.
|
||||
* See @ref chart_lines.
|
||||
|
|
@ -213,7 +218,6 @@ typedef enum lxw_chart_line_dash_type {
|
|||
|
||||
/**
|
||||
* @brief Chart marker types.
|
||||
*
|
||||
*/
|
||||
typedef enum lxw_chart_marker_type {
|
||||
|
||||
|
|
@ -251,6 +255,159 @@ typedef enum lxw_chart_marker_type {
|
|||
LXW_CHART_MARKER_PLUS
|
||||
} lxw_chart_marker_type;
|
||||
|
||||
/**
|
||||
* @brief Chart pattern types.
|
||||
*/
|
||||
typedef enum lxw_chart_pattern_type {
|
||||
|
||||
/** None pattern. */
|
||||
LXW_CHART_PATTERN_NONE,
|
||||
|
||||
/** 5 Percent pattern. */
|
||||
LXW_CHART_PATTERN_PERCENT_5,
|
||||
|
||||
/** 10 Percent pattern. */
|
||||
LXW_CHART_PATTERN_PERCENT_10,
|
||||
|
||||
/** 20 Percent pattern. */
|
||||
LXW_CHART_PATTERN_PERCENT_20,
|
||||
|
||||
/** 25 Percent pattern. */
|
||||
LXW_CHART_PATTERN_PERCENT_25,
|
||||
|
||||
/** 30 Percent pattern. */
|
||||
LXW_CHART_PATTERN_PERCENT_30,
|
||||
|
||||
/** 40 Percent pattern. */
|
||||
LXW_CHART_PATTERN_PERCENT_40,
|
||||
|
||||
/** 50 Percent pattern. */
|
||||
LXW_CHART_PATTERN_PERCENT_50,
|
||||
|
||||
/** 60 Percent pattern. */
|
||||
LXW_CHART_PATTERN_PERCENT_60,
|
||||
|
||||
/** 70 Percent pattern. */
|
||||
LXW_CHART_PATTERN_PERCENT_70,
|
||||
|
||||
/** 75 Percent pattern. */
|
||||
LXW_CHART_PATTERN_PERCENT_75,
|
||||
|
||||
/** 80 Percent pattern. */
|
||||
LXW_CHART_PATTERN_PERCENT_80,
|
||||
|
||||
/** 90 Percent pattern. */
|
||||
LXW_CHART_PATTERN_PERCENT_90,
|
||||
|
||||
/** Light downward diagonal pattern. */
|
||||
LXW_CHART_PATTERN_LIGHT_DOWNWARD_DIAGONAL,
|
||||
|
||||
/** Light upward diagonal pattern. */
|
||||
LXW_CHART_PATTERN_LIGHT_UPWARD_DIAGONAL,
|
||||
|
||||
/** Dark downward diagonal pattern. */
|
||||
LXW_CHART_PATTERN_DARK_DOWNWARD_DIAGONAL,
|
||||
|
||||
/** Dark upward diagonal pattern. */
|
||||
LXW_CHART_PATTERN_DARK_UPWARD_DIAGONAL,
|
||||
|
||||
/** Wide downward diagonal pattern. */
|
||||
LXW_CHART_PATTERN_WIDE_DOWNWARD_DIAGONAL,
|
||||
|
||||
/** Wide upward diagonal pattern. */
|
||||
LXW_CHART_PATTERN_WIDE_UPWARD_DIAGONAL,
|
||||
|
||||
/** Light vertical pattern. */
|
||||
LXW_CHART_PATTERN_LIGHT_VERTICAL,
|
||||
|
||||
/** Light horizontal pattern. */
|
||||
LXW_CHART_PATTERN_LIGHT_HORIZONTAL,
|
||||
|
||||
/** Narrow vertical pattern. */
|
||||
LXW_CHART_PATTERN_NARROW_VERTICAL,
|
||||
|
||||
/** Narrow horizontal pattern. */
|
||||
LXW_CHART_PATTERN_NARROW_HORIZONTAL,
|
||||
|
||||
/** Dark vertical pattern. */
|
||||
LXW_CHART_PATTERN_DARK_VERTICAL,
|
||||
|
||||
/** Dark horizontal pattern. */
|
||||
LXW_CHART_PATTERN_DARK_HORIZONTAL,
|
||||
|
||||
/** Dashed downward diagonal pattern. */
|
||||
LXW_CHART_PATTERN_DASHED_DOWNWARD_DIAGONAL,
|
||||
|
||||
/** Dashed upward diagonal pattern. */
|
||||
LXW_CHART_PATTERN_DASHED_UPWARD_DIAGONAL,
|
||||
|
||||
/** Dashed horizontal pattern. */
|
||||
LXW_CHART_PATTERN_DASHED_HORIZONTAL,
|
||||
|
||||
/** Dashed vertical pattern. */
|
||||
LXW_CHART_PATTERN_DASHED_VERTICAL,
|
||||
|
||||
/** Small confetti pattern. */
|
||||
LXW_CHART_PATTERN_SMALL_CONFETTI,
|
||||
|
||||
/** Large confetti pattern. */
|
||||
LXW_CHART_PATTERN_LARGE_CONFETTI,
|
||||
|
||||
/** Zigzag pattern. */
|
||||
LXW_CHART_PATTERN_ZIGZAG,
|
||||
|
||||
/** Wave pattern. */
|
||||
LXW_CHART_PATTERN_WAVE,
|
||||
|
||||
/** Diagonal brick pattern. */
|
||||
LXW_CHART_PATTERN_DIAGONAL_BRICK,
|
||||
|
||||
/** Horizontal brick pattern. */
|
||||
LXW_CHART_PATTERN_HORIZONTAL_BRICK,
|
||||
|
||||
/** Weave pattern. */
|
||||
LXW_CHART_PATTERN_WEAVE,
|
||||
|
||||
/** Plaid pattern. */
|
||||
LXW_CHART_PATTERN_PLAID,
|
||||
|
||||
/** Divot pattern. */
|
||||
LXW_CHART_PATTERN_DIVOT,
|
||||
|
||||
/** Dotted grid pattern. */
|
||||
LXW_CHART_PATTERN_DOTTED_GRID,
|
||||
|
||||
/** Dotted diamond pattern. */
|
||||
LXW_CHART_PATTERN_DOTTED_DIAMOND,
|
||||
|
||||
/** Shingle pattern. */
|
||||
LXW_CHART_PATTERN_SHINGLE,
|
||||
|
||||
/** Trellis pattern. */
|
||||
LXW_CHART_PATTERN_TRELLIS,
|
||||
|
||||
/** Sphere pattern. */
|
||||
LXW_CHART_PATTERN_SPHERE,
|
||||
|
||||
/** Small grid pattern. */
|
||||
LXW_CHART_PATTERN_SMALL_GRID,
|
||||
|
||||
/** Large grid pattern. */
|
||||
LXW_CHART_PATTERN_LARGE_GRID,
|
||||
|
||||
/** Small check pattern. */
|
||||
LXW_CHART_PATTERN_SMALL_CHECK,
|
||||
|
||||
/** Large check pattern. */
|
||||
LXW_CHART_PATTERN_LARGE_CHECK,
|
||||
|
||||
/** Outlined diamond pattern. */
|
||||
LXW_CHART_PATTERN_OUTLINED_DIAMOND,
|
||||
|
||||
/** Solid diamond pattern. */
|
||||
LXW_CHART_PATTERN_SOLID_DIAMOND
|
||||
} lxw_chart_pattern_type;
|
||||
|
||||
enum lxw_chart_subtype {
|
||||
|
||||
LXW_CHART_SUBTYPE_NONE = 0,
|
||||
|
|
@ -330,7 +487,7 @@ typedef struct lxw_chart_line {
|
|||
} lxw_chart_line;
|
||||
|
||||
/**
|
||||
* @brief Struct to represent a chart line.
|
||||
* @brief Struct to represent a chart fill.
|
||||
*
|
||||
* See @ref chart_fills.
|
||||
*/
|
||||
|
|
@ -350,6 +507,28 @@ typedef struct lxw_chart_fill {
|
|||
|
||||
} lxw_chart_fill;
|
||||
|
||||
/**
|
||||
* @brief Struct to represent a chart pattern.
|
||||
*
|
||||
* See @ref chart_patterns.
|
||||
*/
|
||||
typedef struct lxw_chart_pattern {
|
||||
|
||||
/** The pattern foreground color. See @ref working_with_colors. */
|
||||
lxw_color_t fg_color;
|
||||
|
||||
/** The pattern background color. See @ref working_with_colors. */
|
||||
lxw_color_t bg_color;
|
||||
|
||||
/** The pattern type. See #lxw_chart_pattern_type. */
|
||||
uint8_t type;
|
||||
|
||||
/* Members for internal use only. */
|
||||
uint8_t has_fg_color;
|
||||
uint8_t has_bg_color;
|
||||
|
||||
} lxw_chart_pattern;
|
||||
|
||||
/**
|
||||
* @brief Struct to represent a chart font.
|
||||
*
|
||||
|
|
@ -392,6 +571,7 @@ typedef struct lxw_chart_marker {
|
|||
uint8_t size;
|
||||
lxw_chart_line *line;
|
||||
lxw_chart_fill *fill;
|
||||
lxw_chart_pattern *pattern;
|
||||
|
||||
} lxw_chart_marker;
|
||||
|
||||
|
|
@ -434,6 +614,7 @@ typedef struct lxw_chart_series {
|
|||
lxw_chart_title title;
|
||||
lxw_chart_line *line;
|
||||
lxw_chart_fill *fill;
|
||||
lxw_chart_pattern *pattern;
|
||||
lxw_chart_marker *marker;
|
||||
|
||||
STAILQ_ENTRY (lxw_chart_series) list_pointers;
|
||||
|
|
@ -460,6 +641,7 @@ typedef struct lxw_chart_axis {
|
|||
lxw_chart_font *num_font;
|
||||
lxw_chart_line *line;
|
||||
lxw_chart_fill *fill;
|
||||
lxw_chart_pattern *pattern;
|
||||
|
||||
uint8_t reverse;
|
||||
uint8_t has_min;
|
||||
|
|
@ -789,6 +971,9 @@ void chart_series_set_line(lxw_chart_series *series, lxw_chart_line *line);
|
|||
*/
|
||||
void chart_series_set_fill(lxw_chart_series *series, lxw_chart_fill *fill);
|
||||
|
||||
void chart_series_set_pattern(lxw_chart_series *series,
|
||||
lxw_chart_pattern *pattern);
|
||||
|
||||
/**
|
||||
* @brief Set the data marker type for a series.
|
||||
*
|
||||
|
|
@ -913,6 +1098,9 @@ void chart_series_set_marker_line(lxw_chart_series *series,
|
|||
void chart_series_set_marker_fill(lxw_chart_series *series,
|
||||
lxw_chart_fill *fill);
|
||||
|
||||
void chart_series_set_marker_pattern(lxw_chart_series *series,
|
||||
lxw_chart_pattern *pattern);
|
||||
|
||||
/**
|
||||
* @brief Set the name caption of the an axis.
|
||||
*
|
||||
|
|
@ -1048,6 +1236,8 @@ void chart_axis_set_line(lxw_chart_axis *axis, lxw_chart_line *line);
|
|||
*/
|
||||
void chart_axis_set_fill(lxw_chart_axis *axis, lxw_chart_fill *fill);
|
||||
|
||||
void chart_axis_set_pattern(lxw_chart_axis *axis, lxw_chart_pattern *pattern);
|
||||
|
||||
/**
|
||||
* @brief Reverse the order of the axis categories or values.
|
||||
*
|
||||
|
|
|
|||
283
src/chart.c
283
src/chart.c
|
|
@ -58,10 +58,12 @@ _chart_series_free(lxw_chart_series *series)
|
|||
free(series->title.name);
|
||||
free(series->line);
|
||||
free(series->fill);
|
||||
free(series->pattern);
|
||||
|
||||
if (series->marker) {
|
||||
free(series->marker->line);
|
||||
free(series->marker->fill);
|
||||
free(series->marker->pattern);
|
||||
free(series->marker);
|
||||
}
|
||||
|
||||
|
|
@ -130,6 +132,7 @@ lxw_chart_free(lxw_chart *chart)
|
|||
free(chart->x_axis->title.name);
|
||||
free(chart->x_axis->line);
|
||||
free(chart->x_axis->fill);
|
||||
free(chart->x_axis->pattern);
|
||||
free(chart->x_axis);
|
||||
}
|
||||
|
||||
|
|
@ -141,6 +144,7 @@ lxw_chart_free(lxw_chart *chart)
|
|||
free(chart->y_axis->title.name);
|
||||
free(chart->y_axis->line);
|
||||
free(chart->y_axis->fill);
|
||||
free(chart->y_axis->pattern);
|
||||
free(chart->y_axis);
|
||||
}
|
||||
|
||||
|
|
@ -312,6 +316,50 @@ _chart_convert_fill_args(lxw_chart_fill *user_fill)
|
|||
return fill;
|
||||
}
|
||||
|
||||
/*
|
||||
* Create a copy of a user supplied pattern.
|
||||
*/
|
||||
STATIC lxw_chart_pattern *
|
||||
_chart_convert_pattern_args(lxw_chart_pattern *user_pattern)
|
||||
{
|
||||
lxw_chart_pattern *pattern;
|
||||
|
||||
if (!user_pattern)
|
||||
return NULL;
|
||||
|
||||
if (!user_pattern->type) {
|
||||
LXW_WARN("chart_xxx_set_pattern: 'type' must be specified");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!user_pattern->fg_color) {
|
||||
LXW_WARN("chart_xxx_set_pattern: 'fg_color' must be specified");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
pattern = calloc(1, sizeof(struct lxw_chart_pattern));
|
||||
RETURN_ON_MEM_ERROR(pattern, NULL);
|
||||
|
||||
memcpy(pattern, user_pattern, sizeof(lxw_chart_pattern));
|
||||
|
||||
pattern->fg_color = lxw_format_check_color(pattern->fg_color);
|
||||
pattern->has_fg_color = LXW_TRUE;
|
||||
|
||||
if (pattern->bg_color) {
|
||||
pattern->bg_color = lxw_format_check_color(pattern->bg_color);
|
||||
pattern->has_bg_color = LXW_TRUE;
|
||||
}
|
||||
else {
|
||||
/* Default background color in Excel is white, when unspecified. */
|
||||
pattern->bg_color = LXW_COLOR_WHITE;
|
||||
pattern->has_bg_color = LXW_TRUE;
|
||||
}
|
||||
|
||||
pattern->type = user_pattern->type;
|
||||
|
||||
return pattern;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set a marker type for a series.
|
||||
*/
|
||||
|
|
@ -1484,20 +1532,171 @@ _chart_write_a_ln(lxw_chart *self, lxw_chart_line *line)
|
|||
LXW_FREE_ATTRIBUTES();
|
||||
}
|
||||
|
||||
/*
|
||||
* Write the <a:fgClr> element.
|
||||
*/
|
||||
STATIC void
|
||||
_chart_write_a_fg_clr(lxw_chart *self, lxw_color_t color)
|
||||
{
|
||||
lxw_xml_start_tag(self->file, "a:fgClr", NULL);
|
||||
|
||||
_chart_write_a_srgb_clr(self, color, LXW_FALSE);
|
||||
|
||||
lxw_xml_end_tag(self->file, "a:fgClr");
|
||||
}
|
||||
|
||||
/*
|
||||
* Write the <a:bgClr> element.
|
||||
*/
|
||||
STATIC void
|
||||
_chart_write_a_bg_clr(lxw_chart *self, lxw_color_t color)
|
||||
{
|
||||
lxw_xml_start_tag(self->file, "a:bgClr", NULL);
|
||||
|
||||
_chart_write_a_srgb_clr(self, color, LXW_FALSE);
|
||||
|
||||
lxw_xml_end_tag(self->file, "a:bgClr");
|
||||
}
|
||||
|
||||
/*
|
||||
* Write the <a:pattFill> element.
|
||||
*/
|
||||
STATIC void
|
||||
_chart_write_a_patt_fill(lxw_chart *self, lxw_chart_pattern *pattern)
|
||||
{
|
||||
struct xml_attribute_list attributes;
|
||||
struct xml_attribute *attribute;
|
||||
|
||||
LXW_INIT_ATTRIBUTES();
|
||||
|
||||
if (pattern->type == LXW_CHART_PATTERN_NONE)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "none");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_PERCENT_5)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "pct5");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_PERCENT_10)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "pct10");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_PERCENT_20)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "pct20");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_PERCENT_25)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "pct25");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_PERCENT_30)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "pct30");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_PERCENT_40)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "pct40");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_PERCENT_50)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "pct50");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_PERCENT_60)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "pct60");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_PERCENT_70)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "pct70");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_PERCENT_75)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "pct75");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_PERCENT_80)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "pct80");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_PERCENT_90)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "pct90");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_LIGHT_DOWNWARD_DIAGONAL)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "ltDnDiag");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_LIGHT_UPWARD_DIAGONAL)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "ltUpDiag");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_DARK_DOWNWARD_DIAGONAL)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "dkDnDiag");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_DARK_UPWARD_DIAGONAL)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "dkUpDiag");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_WIDE_DOWNWARD_DIAGONAL)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "wdDnDiag");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_WIDE_UPWARD_DIAGONAL)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "wdUpDiag");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_LIGHT_VERTICAL)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "ltVert");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_LIGHT_HORIZONTAL)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "ltHorz");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_NARROW_VERTICAL)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "narVert");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_NARROW_HORIZONTAL)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "narHorz");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_DARK_VERTICAL)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "dkVert");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_DARK_HORIZONTAL)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "dkHorz");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_DASHED_DOWNWARD_DIAGONAL)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "dashDnDiag");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_DASHED_UPWARD_DIAGONAL)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "dashUpDiag");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_DASHED_HORIZONTAL)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "dashHorz");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_DASHED_VERTICAL)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "dashVert");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_SMALL_CONFETTI)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "smConfetti");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_LARGE_CONFETTI)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "lgConfetti");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_ZIGZAG)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "zigZag");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_WAVE)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "wave");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_DIAGONAL_BRICK)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "diagBrick");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_HORIZONTAL_BRICK)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "horzBrick");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_WEAVE)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "weave");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_PLAID)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "plaid");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_DIVOT)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "divot");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_DOTTED_GRID)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "dotGrid");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_DOTTED_DIAMOND)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "dotDmnd");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_SHINGLE)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "shingle");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_TRELLIS)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "trellis");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_SPHERE)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "sphere");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_SMALL_GRID)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "smGrid");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_LARGE_GRID)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "lgGrid");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_SMALL_CHECK)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "smCheck");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_LARGE_CHECK)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "lgCheck");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_OUTLINED_DIAMOND)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "openDmnd");
|
||||
else if (pattern->type == LXW_CHART_PATTERN_SOLID_DIAMOND)
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "solidDmnd");
|
||||
else
|
||||
LXW_PUSH_ATTRIBUTES_STR("prst", "percent_50");
|
||||
|
||||
lxw_xml_start_tag(self->file, "a:pattFill", &attributes);
|
||||
|
||||
if (pattern->has_fg_color)
|
||||
_chart_write_a_fg_clr(self, pattern->fg_color);
|
||||
|
||||
if (pattern->has_bg_color)
|
||||
_chart_write_a_bg_clr(self, pattern->bg_color);
|
||||
|
||||
lxw_xml_end_tag(self->file, "a:pattFill");
|
||||
|
||||
LXW_FREE_ATTRIBUTES();
|
||||
}
|
||||
|
||||
/*
|
||||
* Write the <c:spPr> element.
|
||||
*/
|
||||
STATIC void
|
||||
_chart_write_sp_pr(lxw_chart *self, lxw_chart_line *line,
|
||||
lxw_chart_fill *fill)
|
||||
lxw_chart_fill *fill, lxw_chart_pattern *pattern)
|
||||
{
|
||||
if (!line && !fill)
|
||||
if (!line && !fill && !pattern)
|
||||
return;
|
||||
|
||||
lxw_xml_start_tag(self->file, "c:spPr", NULL);
|
||||
|
||||
/* Write the series fill. */
|
||||
if (fill) {
|
||||
/* Write the series fill. Note: a pattern fill overrides a solid fill. */
|
||||
if (fill && !pattern) {
|
||||
if (fill->none) {
|
||||
/* Write the a:noFill element. */
|
||||
_chart_write_a_no_fill(self);
|
||||
|
|
@ -1508,6 +1707,11 @@ _chart_write_sp_pr(lxw_chart *self, lxw_chart_line *line,
|
|||
}
|
||||
}
|
||||
|
||||
if (pattern) {
|
||||
/* Write the a:pattFill element. */
|
||||
_chart_write_a_patt_fill(self, pattern);
|
||||
}
|
||||
|
||||
if (line) {
|
||||
/* Write the a:ln element. */
|
||||
_chart_write_a_ln(self, line);
|
||||
|
|
@ -1681,7 +1885,7 @@ _chart_write_marker(lxw_chart *self, lxw_chart_marker *marker)
|
|||
_chart_write_marker_size(self, marker->size);
|
||||
|
||||
/* Write the c:spPr element. */
|
||||
_chart_write_sp_pr(self, marker->line, marker->fill);
|
||||
_chart_write_sp_pr(self, marker->line, marker->fill, marker->pattern);
|
||||
|
||||
lxw_xml_end_tag(self->file, "c:marker");
|
||||
}
|
||||
|
|
@ -1832,7 +2036,7 @@ _chart_write_ser(lxw_chart *self, lxw_chart_series *series)
|
|||
_chart_write_series_name(self, series);
|
||||
|
||||
/* Write the c:spPr element. */
|
||||
_chart_write_sp_pr(self, series->line, series->fill);
|
||||
_chart_write_sp_pr(self, series->line, series->fill, series->pattern);
|
||||
|
||||
/* Write the c:marker element. */
|
||||
_chart_write_marker(self, series->marker);
|
||||
|
|
@ -1867,7 +2071,7 @@ _chart_write_xval_ser(lxw_chart *self, lxw_chart_series *series)
|
|||
_chart_write_series_name(self, series);
|
||||
|
||||
/* Write the c:spPr element. */
|
||||
_chart_write_sp_pr(self, series->line, series->fill);
|
||||
_chart_write_sp_pr(self, series->line, series->fill, series->pattern);
|
||||
|
||||
/* Write the c:marker element. */
|
||||
_chart_write_marker(self, series->marker);
|
||||
|
|
@ -2464,7 +2668,8 @@ _chart_write_cat_axis(lxw_chart *self)
|
|||
_chart_write_tick_lbl_pos(self);
|
||||
|
||||
/* Write the c:spPr element for the axis line. */
|
||||
_chart_write_sp_pr(self, self->x_axis->line, self->x_axis->fill);
|
||||
_chart_write_sp_pr(self, self->x_axis->line, self->x_axis->fill,
|
||||
self->x_axis->pattern);
|
||||
|
||||
/* Write the axis font elements. */
|
||||
_chart_write_axis_font(self, self->x_axis->num_font);
|
||||
|
|
@ -2526,7 +2731,8 @@ _chart_write_val_axis(lxw_chart *self)
|
|||
_chart_write_tick_lbl_pos(self);
|
||||
|
||||
/* Write the c:spPr element for the axis line. */
|
||||
_chart_write_sp_pr(self, self->y_axis->line, self->y_axis->fill);
|
||||
_chart_write_sp_pr(self, self->y_axis->line, self->y_axis->fill,
|
||||
self->y_axis->pattern);
|
||||
|
||||
/* Write the axis font elements. */
|
||||
_chart_write_axis_font(self, self->y_axis->num_font);
|
||||
|
|
@ -2579,7 +2785,8 @@ _chart_write_cat_val_axis(lxw_chart *self)
|
|||
_chart_write_tick_lbl_pos(self);
|
||||
|
||||
/* Write the c:spPr element for the axis line. */
|
||||
_chart_write_sp_pr(self, self->x_axis->line, self->x_axis->fill);
|
||||
_chart_write_sp_pr(self, self->x_axis->line, self->x_axis->fill,
|
||||
self->x_axis->pattern);
|
||||
|
||||
/* Write the axis font elements. */
|
||||
_chart_write_axis_font(self, self->x_axis->num_font);
|
||||
|
|
@ -3388,6 +3595,21 @@ chart_series_set_fill(lxw_chart_series *series, lxw_chart_fill *fill)
|
|||
series->fill = _chart_convert_fill_args(fill);
|
||||
}
|
||||
|
||||
/*
|
||||
* Set a pattern type for a series.
|
||||
*/
|
||||
void
|
||||
chart_series_set_pattern(lxw_chart_series *series, lxw_chart_pattern *pattern)
|
||||
{
|
||||
if (!pattern)
|
||||
return;
|
||||
|
||||
/* Free any previously allocated resource. */
|
||||
free(series->pattern);
|
||||
|
||||
series->pattern = _chart_convert_pattern_args(pattern);
|
||||
}
|
||||
|
||||
/*
|
||||
* Set a marker type for a series.
|
||||
*/
|
||||
|
|
@ -3419,7 +3641,7 @@ chart_series_set_marker_size(lxw_chart_series *series, uint8_t size)
|
|||
}
|
||||
|
||||
/*
|
||||
* Set a line type for a series.
|
||||
* Set a line type for a series marker.
|
||||
*/
|
||||
void
|
||||
chart_series_set_marker_line(lxw_chart_series *series, lxw_chart_line *line)
|
||||
|
|
@ -3440,7 +3662,7 @@ chart_series_set_marker_line(lxw_chart_series *series, lxw_chart_line *line)
|
|||
}
|
||||
|
||||
/*
|
||||
* Set a fill type for a series.
|
||||
* Set a fill type for a series marker.
|
||||
*/
|
||||
void
|
||||
chart_series_set_marker_fill(lxw_chart_series *series, lxw_chart_fill *fill)
|
||||
|
|
@ -3460,6 +3682,28 @@ chart_series_set_marker_fill(lxw_chart_series *series, lxw_chart_fill *fill)
|
|||
series->marker->fill = _chart_convert_fill_args(fill);
|
||||
}
|
||||
|
||||
/*
|
||||
* Set a pattern type for a series.
|
||||
*/
|
||||
void
|
||||
chart_series_set_marker_pattern(lxw_chart_series *series,
|
||||
lxw_chart_pattern *pattern)
|
||||
{
|
||||
if (!pattern)
|
||||
return;
|
||||
|
||||
if (!series->marker) {
|
||||
lxw_chart_marker *marker = calloc(1, sizeof(struct lxw_chart_marker));
|
||||
RETURN_VOID_ON_MEM_ERROR(marker);
|
||||
series->marker = marker;
|
||||
}
|
||||
|
||||
/* Free any previously allocated resource. */
|
||||
free(series->marker->pattern);
|
||||
|
||||
series->marker->pattern = _chart_convert_pattern_args(pattern);
|
||||
}
|
||||
|
||||
/*
|
||||
* Set an axis caption.
|
||||
*/
|
||||
|
|
@ -3545,6 +3789,21 @@ chart_axis_set_fill(lxw_chart_axis *axis, lxw_chart_fill *fill)
|
|||
axis->fill = _chart_convert_fill_args(fill);
|
||||
}
|
||||
|
||||
/*
|
||||
* Set a pattern type for an axis.
|
||||
*/
|
||||
void
|
||||
chart_axis_set_pattern(lxw_chart_axis *axis, lxw_chart_pattern *pattern)
|
||||
{
|
||||
if (!pattern)
|
||||
return;
|
||||
|
||||
/* Free any previously allocated resource. */
|
||||
free(axis->pattern);
|
||||
|
||||
axis->pattern = _chart_convert_pattern_args(pattern);
|
||||
}
|
||||
|
||||
/*
|
||||
* Reverse the direction of an axis.
|
||||
*/
|
||||
|
|
|
|||
45
test/functional/src/test_chart_pattern01.c
Normal file
45
test/functional/src/test_chart_pattern01.c
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
/*****************************************************************************
|
||||
* Test cases for libxlsxwriter.
|
||||
*
|
||||
* Test to compare output against Excel files.
|
||||
*
|
||||
* Copyright 2014-2017, John McNamara, jmcnamara@cpan.org
|
||||
*
|
||||
*/
|
||||
|
||||
#include "xlsxwriter.h"
|
||||
|
||||
int main() {
|
||||
|
||||
lxw_workbook *workbook = new_workbook("test_chart_pattern01.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_COLUMN);
|
||||
|
||||
/* For testing, copy the randomly generated axis ids in the target file. */
|
||||
chart->axis_id_1 = 86421504;
|
||||
chart->axis_id_2 = 86423040;
|
||||
|
||||
uint8_t data[3][8] = {
|
||||
{2, 2, 2, 2, 2, 2, 2, 2},
|
||||
{2, 2, 2, 2, 2, 2, 2, 2},
|
||||
{2, 2, 2, 2, 2, 2, 2, 2}
|
||||
};
|
||||
|
||||
int row, col;
|
||||
for (row = 0; row < 3; row++)
|
||||
for (col = 0; col < 8; col++)
|
||||
worksheet_write_number(worksheet, row, col, data[row][col], NULL);
|
||||
|
||||
chart_add_series(chart, NULL, "=Sheet1!$A$1:$A$3");
|
||||
chart_add_series(chart, NULL, "=Sheet1!$B$1:$B$3");
|
||||
chart_add_series(chart, NULL, "=Sheet1!$C$1:$C$3");
|
||||
chart_add_series(chart, NULL, "=Sheet1!$D$1:$D$3");
|
||||
chart_add_series(chart, NULL, "=Sheet1!$E$1:$E$3");
|
||||
chart_add_series(chart, NULL, "=Sheet1!$F$1:$F$3");
|
||||
chart_add_series(chart, NULL, "=Sheet1!$G$1:$G$3");
|
||||
chart_add_series(chart, NULL, "=Sheet1!$H$1:$H$3");
|
||||
|
||||
worksheet_insert_chart(worksheet, CELL("E9"), chart);
|
||||
|
||||
return workbook_close(workbook);
|
||||
}
|
||||
79
test/functional/src/test_chart_pattern02.c
Normal file
79
test/functional/src/test_chart_pattern02.c
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
/*****************************************************************************
|
||||
* Test cases for libxlsxwriter.
|
||||
*
|
||||
* Test to compare output against Excel files.
|
||||
*
|
||||
* Copyright 2014-2017, John McNamara, jmcnamara@cpan.org
|
||||
*
|
||||
*/
|
||||
|
||||
#include "xlsxwriter.h"
|
||||
|
||||
int main() {
|
||||
|
||||
lxw_workbook *workbook = new_workbook("test_chart_pattern02.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_COLUMN);
|
||||
|
||||
/* For testing, copy the randomly generated axis ids in the target file. */
|
||||
chart->axis_id_1 = 86421504;
|
||||
chart->axis_id_2 = 86423040;
|
||||
|
||||
uint8_t data[3][8] = {
|
||||
{2, 2, 2, 2, 2, 2, 2, 2},
|
||||
{2, 2, 2, 2, 2, 2, 2, 2},
|
||||
{2, 2, 2, 2, 2, 2, 2, 2}
|
||||
};
|
||||
|
||||
int row, col;
|
||||
for (row = 0; row < 3; row++)
|
||||
for (col = 0; col < 8; col++)
|
||||
worksheet_write_number(worksheet, row, col, data[row][col], NULL);
|
||||
|
||||
lxw_chart_series *series1 = chart_add_series(chart, NULL, "=Sheet1!$A$1:$A$3");
|
||||
lxw_chart_series *series2 = chart_add_series(chart, NULL, "=Sheet1!$B$1:$B$3");
|
||||
lxw_chart_series *series3 = chart_add_series(chart, NULL, "=Sheet1!$C$1:$C$3");
|
||||
lxw_chart_series *series4 = chart_add_series(chart, NULL, "=Sheet1!$D$1:$D$3");
|
||||
lxw_chart_series *series5 = chart_add_series(chart, NULL, "=Sheet1!$E$1:$E$3");
|
||||
lxw_chart_series *series6 = chart_add_series(chart, NULL, "=Sheet1!$F$1:$F$3");
|
||||
lxw_chart_series *series7 = chart_add_series(chart, NULL, "=Sheet1!$G$1:$G$3");
|
||||
lxw_chart_series *series8 = chart_add_series(chart, NULL, "=Sheet1!$H$1:$H$3");
|
||||
|
||||
lxw_chart_pattern pattern1 = {.type = LXW_CHART_PATTERN_PERCENT_5,
|
||||
.fg_color = 0xC00000,
|
||||
.bg_color = 0xFFFFFF};
|
||||
|
||||
lxw_chart_pattern pattern2 = {.type = LXW_CHART_PATTERN_PERCENT_50,
|
||||
.fg_color = 0xFF0000};
|
||||
|
||||
lxw_chart_pattern pattern3 = {.type = LXW_CHART_PATTERN_LIGHT_DOWNWARD_DIAGONAL,
|
||||
.fg_color = 0xFFC000};
|
||||
|
||||
lxw_chart_pattern pattern4 = {.type = LXW_CHART_PATTERN_LIGHT_VERTICAL,
|
||||
.fg_color = 0xFFFF00};
|
||||
|
||||
lxw_chart_pattern pattern5 = {.type = LXW_CHART_PATTERN_DASHED_DOWNWARD_DIAGONAL,
|
||||
.fg_color = 0x92D050};
|
||||
|
||||
lxw_chart_pattern pattern6 = {.type = LXW_CHART_PATTERN_ZIGZAG,
|
||||
.fg_color = 0x00B050};
|
||||
|
||||
lxw_chart_pattern pattern7 = {.type = LXW_CHART_PATTERN_DIVOT,
|
||||
.fg_color = 0x00B0F0};
|
||||
|
||||
lxw_chart_pattern pattern8 = {.type = LXW_CHART_PATTERN_SMALL_GRID,
|
||||
.fg_color = 0x0070C0};
|
||||
|
||||
chart_series_set_pattern(series1, &pattern1);
|
||||
chart_series_set_pattern(series2, &pattern2);
|
||||
chart_series_set_pattern(series3, &pattern3);
|
||||
chart_series_set_pattern(series4, &pattern4);
|
||||
chart_series_set_pattern(series5, &pattern5);
|
||||
chart_series_set_pattern(series6, &pattern6);
|
||||
chart_series_set_pattern(series7, &pattern7);
|
||||
chart_series_set_pattern(series8, &pattern8);
|
||||
|
||||
worksheet_insert_chart(worksheet, CELL("E9"), chart);
|
||||
|
||||
return workbook_close(workbook);
|
||||
}
|
||||
79
test/functional/src/test_chart_pattern03.c
Normal file
79
test/functional/src/test_chart_pattern03.c
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
/*****************************************************************************
|
||||
* Test cases for libxlsxwriter.
|
||||
*
|
||||
* Test to compare output against Excel files.
|
||||
*
|
||||
* Copyright 2014-2017, John McNamara, jmcnamara@cpan.org
|
||||
*
|
||||
*/
|
||||
|
||||
#include "xlsxwriter.h"
|
||||
|
||||
int main() {
|
||||
|
||||
lxw_workbook *workbook = new_workbook("test_chart_pattern03.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_COLUMN);
|
||||
|
||||
/* For testing, copy the randomly generated axis ids in the target file. */
|
||||
chart->axis_id_1 = 110902272;
|
||||
chart->axis_id_2 = 110756608;
|
||||
|
||||
uint8_t data[3][8] = {
|
||||
{2, 2, 2, 2, 2, 2, 2, 2},
|
||||
{2, 2, 2, 2, 2, 2, 2, 2},
|
||||
{2, 2, 2, 2, 2, 2, 2, 2}
|
||||
};
|
||||
|
||||
int row, col;
|
||||
for (row = 0; row < 3; row++)
|
||||
for (col = 0; col < 8; col++)
|
||||
worksheet_write_number(worksheet, row, col, data[row][col], NULL);
|
||||
|
||||
lxw_chart_series *series1 = chart_add_series(chart, NULL, "=Sheet1!$A$1:$A$3");
|
||||
lxw_chart_series *series2 = chart_add_series(chart, NULL, "=Sheet1!$B$1:$B$3");
|
||||
lxw_chart_series *series3 = chart_add_series(chart, NULL, "=Sheet1!$C$1:$C$3");
|
||||
lxw_chart_series *series4 = chart_add_series(chart, NULL, "=Sheet1!$D$1:$D$3");
|
||||
lxw_chart_series *series5 = chart_add_series(chart, NULL, "=Sheet1!$E$1:$E$3");
|
||||
lxw_chart_series *series6 = chart_add_series(chart, NULL, "=Sheet1!$F$1:$F$3");
|
||||
lxw_chart_series *series7 = chart_add_series(chart, NULL, "=Sheet1!$G$1:$G$3");
|
||||
lxw_chart_series *series8 = chart_add_series(chart, NULL, "=Sheet1!$H$1:$H$3");
|
||||
|
||||
lxw_chart_pattern pattern1 = {.type = LXW_CHART_PATTERN_PERCENT_10,
|
||||
.fg_color = 0xC00000,
|
||||
.bg_color = 0xFFFFFF};
|
||||
|
||||
lxw_chart_pattern pattern2 = {.type = LXW_CHART_PATTERN_PERCENT_60,
|
||||
.fg_color = 0xFF0000};
|
||||
|
||||
lxw_chart_pattern pattern3 = {.type = LXW_CHART_PATTERN_LIGHT_UPWARD_DIAGONAL,
|
||||
.fg_color = 0xFFC000};
|
||||
|
||||
lxw_chart_pattern pattern4 = {.type = LXW_CHART_PATTERN_LIGHT_HORIZONTAL,
|
||||
.fg_color = 0xFFFF00};
|
||||
|
||||
lxw_chart_pattern pattern5 = {.type = LXW_CHART_PATTERN_DASHED_UPWARD_DIAGONAL,
|
||||
.fg_color = 0x92D050};
|
||||
|
||||
lxw_chart_pattern pattern6 = {.type = LXW_CHART_PATTERN_WAVE,
|
||||
.fg_color = 0x00B050};
|
||||
|
||||
lxw_chart_pattern pattern7 = {.type = LXW_CHART_PATTERN_DOTTED_GRID,
|
||||
.fg_color = 0x00B0F0};
|
||||
|
||||
lxw_chart_pattern pattern8 = {.type = LXW_CHART_PATTERN_LARGE_GRID,
|
||||
.fg_color = 0x0070C0};
|
||||
|
||||
chart_series_set_pattern(series1, &pattern1);
|
||||
chart_series_set_pattern(series2, &pattern2);
|
||||
chart_series_set_pattern(series3, &pattern3);
|
||||
chart_series_set_pattern(series4, &pattern4);
|
||||
chart_series_set_pattern(series5, &pattern5);
|
||||
chart_series_set_pattern(series6, &pattern6);
|
||||
chart_series_set_pattern(series7, &pattern7);
|
||||
chart_series_set_pattern(series8, &pattern8);
|
||||
|
||||
worksheet_insert_chart(worksheet, CELL("E9"), chart);
|
||||
|
||||
return workbook_close(workbook);
|
||||
}
|
||||
79
test/functional/src/test_chart_pattern04.c
Normal file
79
test/functional/src/test_chart_pattern04.c
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
/*****************************************************************************
|
||||
* Test cases for libxlsxwriter.
|
||||
*
|
||||
* Test to compare output against Excel files.
|
||||
*
|
||||
* Copyright 2014-2017, John McNamara, jmcnamara@cpan.org
|
||||
*
|
||||
*/
|
||||
|
||||
#include "xlsxwriter.h"
|
||||
|
||||
int main() {
|
||||
|
||||
lxw_workbook *workbook = new_workbook("test_chart_pattern04.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_COLUMN);
|
||||
|
||||
/* For testing, copy the randomly generated axis ids in the target file. */
|
||||
chart->axis_id_1 = 110902272;
|
||||
chart->axis_id_2 = 110756608;
|
||||
|
||||
uint8_t data[3][8] = {
|
||||
{2, 2, 2, 2, 2, 2, 2, 2},
|
||||
{2, 2, 2, 2, 2, 2, 2, 2},
|
||||
{2, 2, 2, 2, 2, 2, 2, 2}
|
||||
};
|
||||
|
||||
int row, col;
|
||||
for (row = 0; row < 3; row++)
|
||||
for (col = 0; col < 8; col++)
|
||||
worksheet_write_number(worksheet, row, col, data[row][col], NULL);
|
||||
|
||||
lxw_chart_series *series1 = chart_add_series(chart, NULL, "=Sheet1!$A$1:$A$3");
|
||||
lxw_chart_series *series2 = chart_add_series(chart, NULL, "=Sheet1!$B$1:$B$3");
|
||||
lxw_chart_series *series3 = chart_add_series(chart, NULL, "=Sheet1!$C$1:$C$3");
|
||||
lxw_chart_series *series4 = chart_add_series(chart, NULL, "=Sheet1!$D$1:$D$3");
|
||||
lxw_chart_series *series5 = chart_add_series(chart, NULL, "=Sheet1!$E$1:$E$3");
|
||||
lxw_chart_series *series6 = chart_add_series(chart, NULL, "=Sheet1!$F$1:$F$3");
|
||||
lxw_chart_series *series7 = chart_add_series(chart, NULL, "=Sheet1!$G$1:$G$3");
|
||||
lxw_chart_series *series8 = chart_add_series(chart, NULL, "=Sheet1!$H$1:$H$3");
|
||||
|
||||
lxw_chart_pattern pattern1 = {.type = LXW_CHART_PATTERN_PERCENT_20,
|
||||
.fg_color = 0xC00000,
|
||||
.bg_color = 0xFFFFFF};
|
||||
|
||||
lxw_chart_pattern pattern2 = {.type = LXW_CHART_PATTERN_PERCENT_70,
|
||||
.fg_color = 0xFF0000};
|
||||
|
||||
lxw_chart_pattern pattern3 = {.type = LXW_CHART_PATTERN_DARK_DOWNWARD_DIAGONAL,
|
||||
.fg_color = 0xFFC000};
|
||||
|
||||
lxw_chart_pattern pattern4 = {.type = LXW_CHART_PATTERN_NARROW_VERTICAL,
|
||||
.fg_color = 0xFFFF00};
|
||||
|
||||
lxw_chart_pattern pattern5 = {.type = LXW_CHART_PATTERN_DASHED_HORIZONTAL,
|
||||
.fg_color = 0x92D050};
|
||||
|
||||
lxw_chart_pattern pattern6 = {.type = LXW_CHART_PATTERN_DIAGONAL_BRICK,
|
||||
.fg_color = 0x00B050};
|
||||
|
||||
lxw_chart_pattern pattern7 = {.type = LXW_CHART_PATTERN_DOTTED_DIAMOND,
|
||||
.fg_color = 0x00B0F0};
|
||||
|
||||
lxw_chart_pattern pattern8 = {.type = LXW_CHART_PATTERN_SMALL_CHECK,
|
||||
.fg_color = 0x0070C0};
|
||||
|
||||
chart_series_set_pattern(series1, &pattern1);
|
||||
chart_series_set_pattern(series2, &pattern2);
|
||||
chart_series_set_pattern(series3, &pattern3);
|
||||
chart_series_set_pattern(series4, &pattern4);
|
||||
chart_series_set_pattern(series5, &pattern5);
|
||||
chart_series_set_pattern(series6, &pattern6);
|
||||
chart_series_set_pattern(series7, &pattern7);
|
||||
chart_series_set_pattern(series8, &pattern8);
|
||||
|
||||
worksheet_insert_chart(worksheet, CELL("E9"), chart);
|
||||
|
||||
return workbook_close(workbook);
|
||||
}
|
||||
79
test/functional/src/test_chart_pattern05.c
Normal file
79
test/functional/src/test_chart_pattern05.c
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
/*****************************************************************************
|
||||
* Test cases for libxlsxwriter.
|
||||
*
|
||||
* Test to compare output against Excel files.
|
||||
*
|
||||
* Copyright 2014-2017, John McNamara, jmcnamara@cpan.org
|
||||
*
|
||||
*/
|
||||
|
||||
#include "xlsxwriter.h"
|
||||
|
||||
int main() {
|
||||
|
||||
lxw_workbook *workbook = new_workbook("test_chart_pattern05.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_COLUMN);
|
||||
|
||||
/* For testing, copy the randomly generated axis ids in the target file. */
|
||||
chart->axis_id_1 = 110902272;
|
||||
chart->axis_id_2 = 110756608;
|
||||
|
||||
uint8_t data[3][8] = {
|
||||
{2, 2, 2, 2, 2, 2, 2, 2},
|
||||
{2, 2, 2, 2, 2, 2, 2, 2},
|
||||
{2, 2, 2, 2, 2, 2, 2, 2}
|
||||
};
|
||||
|
||||
int row, col;
|
||||
for (row = 0; row < 3; row++)
|
||||
for (col = 0; col < 8; col++)
|
||||
worksheet_write_number(worksheet, row, col, data[row][col], NULL);
|
||||
|
||||
lxw_chart_series *series1 = chart_add_series(chart, NULL, "=Sheet1!$A$1:$A$3");
|
||||
lxw_chart_series *series2 = chart_add_series(chart, NULL, "=Sheet1!$B$1:$B$3");
|
||||
lxw_chart_series *series3 = chart_add_series(chart, NULL, "=Sheet1!$C$1:$C$3");
|
||||
lxw_chart_series *series4 = chart_add_series(chart, NULL, "=Sheet1!$D$1:$D$3");
|
||||
lxw_chart_series *series5 = chart_add_series(chart, NULL, "=Sheet1!$E$1:$E$3");
|
||||
lxw_chart_series *series6 = chart_add_series(chart, NULL, "=Sheet1!$F$1:$F$3");
|
||||
lxw_chart_series *series7 = chart_add_series(chart, NULL, "=Sheet1!$G$1:$G$3");
|
||||
lxw_chart_series *series8 = chart_add_series(chart, NULL, "=Sheet1!$H$1:$H$3");
|
||||
|
||||
lxw_chart_pattern pattern1 = {.type = LXW_CHART_PATTERN_PERCENT_25,
|
||||
.fg_color = 0xC00000,
|
||||
.bg_color = 0xFFFFFF};
|
||||
|
||||
lxw_chart_pattern pattern2 = {.type = LXW_CHART_PATTERN_PERCENT_75,
|
||||
.fg_color = 0xFF0000};
|
||||
|
||||
lxw_chart_pattern pattern3 = {.type = LXW_CHART_PATTERN_DARK_UPWARD_DIAGONAL,
|
||||
.fg_color = 0xFFC000};
|
||||
|
||||
lxw_chart_pattern pattern4 = {.type = LXW_CHART_PATTERN_NARROW_HORIZONTAL,
|
||||
.fg_color = 0xFFFF00};
|
||||
|
||||
lxw_chart_pattern pattern5 = {.type = LXW_CHART_PATTERN_DASHED_VERTICAL,
|
||||
.fg_color = 0x92D050};
|
||||
|
||||
lxw_chart_pattern pattern6 = {.type = LXW_CHART_PATTERN_HORIZONTAL_BRICK,
|
||||
.fg_color = 0x00B050};
|
||||
|
||||
lxw_chart_pattern pattern7 = {.type = LXW_CHART_PATTERN_SHINGLE,
|
||||
.fg_color = 0x00B0F0};
|
||||
|
||||
lxw_chart_pattern pattern8 = {.type = LXW_CHART_PATTERN_LARGE_CHECK,
|
||||
.fg_color = 0x0070C0};
|
||||
|
||||
chart_series_set_pattern(series1, &pattern1);
|
||||
chart_series_set_pattern(series2, &pattern2);
|
||||
chart_series_set_pattern(series3, &pattern3);
|
||||
chart_series_set_pattern(series4, &pattern4);
|
||||
chart_series_set_pattern(series5, &pattern5);
|
||||
chart_series_set_pattern(series6, &pattern6);
|
||||
chart_series_set_pattern(series7, &pattern7);
|
||||
chart_series_set_pattern(series8, &pattern8);
|
||||
|
||||
worksheet_insert_chart(worksheet, CELL("E9"), chart);
|
||||
|
||||
return workbook_close(workbook);
|
||||
}
|
||||
79
test/functional/src/test_chart_pattern06.c
Normal file
79
test/functional/src/test_chart_pattern06.c
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
/*****************************************************************************
|
||||
* Test cases for libxlsxwriter.
|
||||
*
|
||||
* Test to compare output against Excel files.
|
||||
*
|
||||
* Copyright 2014-2017, John McNamara, jmcnamara@cpan.org
|
||||
*
|
||||
*/
|
||||
|
||||
#include "xlsxwriter.h"
|
||||
|
||||
int main() {
|
||||
|
||||
lxw_workbook *workbook = new_workbook("test_chart_pattern06.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_COLUMN);
|
||||
|
||||
/* For testing, copy the randomly generated axis ids in the target file. */
|
||||
chart->axis_id_1 = 110902272;
|
||||
chart->axis_id_2 = 110756608;
|
||||
|
||||
uint8_t data[3][8] = {
|
||||
{2, 2, 2, 2, 2, 2, 2, 2},
|
||||
{2, 2, 2, 2, 2, 2, 2, 2},
|
||||
{2, 2, 2, 2, 2, 2, 2, 2}
|
||||
};
|
||||
|
||||
int row, col;
|
||||
for (row = 0; row < 3; row++)
|
||||
for (col = 0; col < 8; col++)
|
||||
worksheet_write_number(worksheet, row, col, data[row][col], NULL);
|
||||
|
||||
lxw_chart_series *series1 = chart_add_series(chart, NULL, "=Sheet1!$A$1:$A$3");
|
||||
lxw_chart_series *series2 = chart_add_series(chart, NULL, "=Sheet1!$B$1:$B$3");
|
||||
lxw_chart_series *series3 = chart_add_series(chart, NULL, "=Sheet1!$C$1:$C$3");
|
||||
lxw_chart_series *series4 = chart_add_series(chart, NULL, "=Sheet1!$D$1:$D$3");
|
||||
lxw_chart_series *series5 = chart_add_series(chart, NULL, "=Sheet1!$E$1:$E$3");
|
||||
lxw_chart_series *series6 = chart_add_series(chart, NULL, "=Sheet1!$F$1:$F$3");
|
||||
lxw_chart_series *series7 = chart_add_series(chart, NULL, "=Sheet1!$G$1:$G$3");
|
||||
lxw_chart_series *series8 = chart_add_series(chart, NULL, "=Sheet1!$H$1:$H$3");
|
||||
|
||||
lxw_chart_pattern pattern1 = {.type = LXW_CHART_PATTERN_PERCENT_30,
|
||||
.fg_color = 0xC00000,
|
||||
.bg_color = 0xFFFFFF};
|
||||
|
||||
lxw_chart_pattern pattern2 = {.type = LXW_CHART_PATTERN_PERCENT_80,
|
||||
.fg_color = 0xFF0000};
|
||||
|
||||
lxw_chart_pattern pattern3 = {.type = LXW_CHART_PATTERN_WIDE_DOWNWARD_DIAGONAL,
|
||||
.fg_color = 0xFFC000};
|
||||
|
||||
lxw_chart_pattern pattern4 = {.type = LXW_CHART_PATTERN_DARK_VERTICAL,
|
||||
.fg_color = 0xFFFF00};
|
||||
|
||||
lxw_chart_pattern pattern5 = {.type = LXW_CHART_PATTERN_SMALL_CONFETTI,
|
||||
.fg_color = 0x92D050};
|
||||
|
||||
lxw_chart_pattern pattern6 = {.type = LXW_CHART_PATTERN_WEAVE,
|
||||
.fg_color = 0x00B050};
|
||||
|
||||
lxw_chart_pattern pattern7 = {.type = LXW_CHART_PATTERN_TRELLIS,
|
||||
.fg_color = 0x00B0F0};
|
||||
|
||||
lxw_chart_pattern pattern8 = {.type = LXW_CHART_PATTERN_OUTLINED_DIAMOND,
|
||||
.fg_color = 0x0070C0};
|
||||
|
||||
chart_series_set_pattern(series1, &pattern1);
|
||||
chart_series_set_pattern(series2, &pattern2);
|
||||
chart_series_set_pattern(series3, &pattern3);
|
||||
chart_series_set_pattern(series4, &pattern4);
|
||||
chart_series_set_pattern(series5, &pattern5);
|
||||
chart_series_set_pattern(series6, &pattern6);
|
||||
chart_series_set_pattern(series7, &pattern7);
|
||||
chart_series_set_pattern(series8, &pattern8);
|
||||
|
||||
worksheet_insert_chart(worksheet, CELL("E9"), chart);
|
||||
|
||||
return workbook_close(workbook);
|
||||
}
|
||||
79
test/functional/src/test_chart_pattern07.c
Normal file
79
test/functional/src/test_chart_pattern07.c
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
/*****************************************************************************
|
||||
* Test cases for libxlsxwriter.
|
||||
*
|
||||
* Test to compare output against Excel files.
|
||||
*
|
||||
* Copyright 2014-2017, John McNamara, jmcnamara@cpan.org
|
||||
*
|
||||
*/
|
||||
|
||||
#include "xlsxwriter.h"
|
||||
|
||||
int main() {
|
||||
|
||||
lxw_workbook *workbook = new_workbook("test_chart_pattern07.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_COLUMN);
|
||||
|
||||
/* For testing, copy the randomly generated axis ids in the target file. */
|
||||
chart->axis_id_1 = 110902272;
|
||||
chart->axis_id_2 = 110756608;
|
||||
|
||||
uint8_t data[3][8] = {
|
||||
{2, 2, 2, 2, 2, 2, 2, 2},
|
||||
{2, 2, 2, 2, 2, 2, 2, 2},
|
||||
{2, 2, 2, 2, 2, 2, 2, 2}
|
||||
};
|
||||
|
||||
int row, col;
|
||||
for (row = 0; row < 3; row++)
|
||||
for (col = 0; col < 8; col++)
|
||||
worksheet_write_number(worksheet, row, col, data[row][col], NULL);
|
||||
|
||||
lxw_chart_series *series1 = chart_add_series(chart, NULL, "=Sheet1!$A$1:$A$3");
|
||||
lxw_chart_series *series2 = chart_add_series(chart, NULL, "=Sheet1!$B$1:$B$3");
|
||||
lxw_chart_series *series3 = chart_add_series(chart, NULL, "=Sheet1!$C$1:$C$3");
|
||||
lxw_chart_series *series4 = chart_add_series(chart, NULL, "=Sheet1!$D$1:$D$3");
|
||||
lxw_chart_series *series5 = chart_add_series(chart, NULL, "=Sheet1!$E$1:$E$3");
|
||||
lxw_chart_series *series6 = chart_add_series(chart, NULL, "=Sheet1!$F$1:$F$3");
|
||||
lxw_chart_series *series7 = chart_add_series(chart, NULL, "=Sheet1!$G$1:$G$3");
|
||||
lxw_chart_series *series8 = chart_add_series(chart, NULL, "=Sheet1!$H$1:$H$3");
|
||||
|
||||
lxw_chart_pattern pattern1 = {.type = LXW_CHART_PATTERN_PERCENT_40,
|
||||
.fg_color = 0xC00000,
|
||||
.bg_color = 0xFFFFFF};
|
||||
|
||||
lxw_chart_pattern pattern2 = {.type = LXW_CHART_PATTERN_PERCENT_90,
|
||||
.fg_color = 0xFF0000};
|
||||
|
||||
lxw_chart_pattern pattern3 = {.type = LXW_CHART_PATTERN_WIDE_UPWARD_DIAGONAL,
|
||||
.fg_color = 0xFFC000};
|
||||
|
||||
lxw_chart_pattern pattern4 = {.type = LXW_CHART_PATTERN_DARK_HORIZONTAL,
|
||||
.fg_color = 0xFFFF00};
|
||||
|
||||
lxw_chart_pattern pattern5 = {.type = LXW_CHART_PATTERN_LARGE_CONFETTI,
|
||||
.fg_color = 0x92D050};
|
||||
|
||||
lxw_chart_pattern pattern6 = {.type = LXW_CHART_PATTERN_PLAID,
|
||||
.fg_color = 0x00B050};
|
||||
|
||||
lxw_chart_pattern pattern7 = {.type = LXW_CHART_PATTERN_SPHERE,
|
||||
.fg_color = 0x00B0F0};
|
||||
|
||||
lxw_chart_pattern pattern8 = {.type = LXW_CHART_PATTERN_SOLID_DIAMOND,
|
||||
.fg_color = 0x0070C0};
|
||||
|
||||
chart_series_set_pattern(series1, &pattern1);
|
||||
chart_series_set_pattern(series2, &pattern2);
|
||||
chart_series_set_pattern(series3, &pattern3);
|
||||
chart_series_set_pattern(series4, &pattern4);
|
||||
chart_series_set_pattern(series5, &pattern5);
|
||||
chart_series_set_pattern(series6, &pattern6);
|
||||
chart_series_set_pattern(series7, &pattern7);
|
||||
chart_series_set_pattern(series8, &pattern8);
|
||||
|
||||
worksheet_insert_chart(worksheet, CELL("E9"), chart);
|
||||
|
||||
return workbook_close(workbook);
|
||||
}
|
||||
79
test/functional/src/test_chart_pattern08.c
Normal file
79
test/functional/src/test_chart_pattern08.c
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
/*****************************************************************************
|
||||
* Test cases for libxlsxwriter.
|
||||
*
|
||||
* Test to compare output against Excel files.
|
||||
*
|
||||
* Copyright 2014-2017, John McNamara, jmcnamara@cpan.org
|
||||
*
|
||||
*/
|
||||
|
||||
#include "xlsxwriter.h"
|
||||
|
||||
int main() {
|
||||
|
||||
lxw_workbook *workbook = new_workbook("test_chart_pattern08.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_COLUMN);
|
||||
|
||||
/* For testing, copy the randomly generated axis ids in the target file. */
|
||||
chart->axis_id_1 = 91631616;
|
||||
chart->axis_id_2 = 91633152;
|
||||
|
||||
uint8_t data[3][8] = {
|
||||
{2, 2, 2, 2, 2, 2, 2, 2},
|
||||
{2, 2, 2, 2, 2, 2, 2, 2},
|
||||
{2, 2, 2, 2, 2, 2, 2, 2}
|
||||
};
|
||||
|
||||
int row, col;
|
||||
for (row = 0; row < 3; row++)
|
||||
for (col = 0; col < 8; col++)
|
||||
worksheet_write_number(worksheet, row, col, data[row][col], NULL);
|
||||
|
||||
lxw_chart_series *series1 = chart_add_series(chart, NULL, "=Sheet1!$A$1:$A$3");
|
||||
lxw_chart_series *series2 = chart_add_series(chart, NULL, "=Sheet1!$B$1:$B$3");
|
||||
lxw_chart_series *series3 = chart_add_series(chart, NULL, "=Sheet1!$C$1:$C$3");
|
||||
lxw_chart_series *series4 = chart_add_series(chart, NULL, "=Sheet1!$D$1:$D$3");
|
||||
lxw_chart_series *series5 = chart_add_series(chart, NULL, "=Sheet1!$E$1:$E$3");
|
||||
lxw_chart_series *series6 = chart_add_series(chart, NULL, "=Sheet1!$F$1:$F$3");
|
||||
lxw_chart_series *series7 = chart_add_series(chart, NULL, "=Sheet1!$G$1:$G$3");
|
||||
lxw_chart_series *series8 = chart_add_series(chart, NULL, "=Sheet1!$H$1:$H$3");
|
||||
|
||||
lxw_chart_pattern pattern1 = {.type = LXW_CHART_PATTERN_PERCENT_5,
|
||||
.fg_color = LXW_COLOR_YELLOW,
|
||||
.bg_color = LXW_COLOR_RED};
|
||||
|
||||
lxw_chart_pattern pattern2 = {.type = LXW_CHART_PATTERN_PERCENT_50,
|
||||
.fg_color = 0xFF0000};
|
||||
|
||||
lxw_chart_pattern pattern3 = {.type = LXW_CHART_PATTERN_LIGHT_DOWNWARD_DIAGONAL,
|
||||
.fg_color = 0xFFC000};
|
||||
|
||||
lxw_chart_pattern pattern4 = {.type = LXW_CHART_PATTERN_LIGHT_VERTICAL,
|
||||
.fg_color = 0xFFFF00};
|
||||
|
||||
lxw_chart_pattern pattern5 = {.type = LXW_CHART_PATTERN_DASHED_DOWNWARD_DIAGONAL,
|
||||
.fg_color = 0x92D050};
|
||||
|
||||
lxw_chart_pattern pattern6 = {.type = LXW_CHART_PATTERN_ZIGZAG,
|
||||
.fg_color = 0x00B050};
|
||||
|
||||
lxw_chart_pattern pattern7 = {.type = LXW_CHART_PATTERN_DIVOT,
|
||||
.fg_color = 0x00B0F0};
|
||||
|
||||
lxw_chart_pattern pattern8 = {.type = LXW_CHART_PATTERN_SMALL_GRID,
|
||||
.fg_color = 0x0070C0};
|
||||
|
||||
chart_series_set_pattern(series1, &pattern1);
|
||||
chart_series_set_pattern(series2, &pattern2);
|
||||
chart_series_set_pattern(series3, &pattern3);
|
||||
chart_series_set_pattern(series4, &pattern4);
|
||||
chart_series_set_pattern(series5, &pattern5);
|
||||
chart_series_set_pattern(series6, &pattern6);
|
||||
chart_series_set_pattern(series7, &pattern7);
|
||||
chart_series_set_pattern(series8, &pattern8);
|
||||
|
||||
worksheet_insert_chart(worksheet, CELL("E9"), chart);
|
||||
|
||||
return workbook_close(workbook);
|
||||
}
|
||||
38
test/functional/test_chart_pattern.py
Normal file
38
test/functional/test_chart_pattern.py
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
###############################################################################
|
||||
#
|
||||
# Tests for libxlsxwriter.
|
||||
#
|
||||
# Copyright 2014-2017, John McNamara, jmcnamara@cpan.org
|
||||
#
|
||||
|
||||
import base_test_class
|
||||
|
||||
class TestCompareXLSXFiles(base_test_class.XLSXBaseTest):
|
||||
"""
|
||||
Test file created with libxlsxwriter against a file created by Excel.
|
||||
|
||||
"""
|
||||
|
||||
def test_chart_pattern01(self):
|
||||
self.run_exe_test('test_chart_pattern01')
|
||||
|
||||
def test_chart_pattern02(self):
|
||||
self.run_exe_test('test_chart_pattern02')
|
||||
|
||||
def test_chart_pattern03(self):
|
||||
self.run_exe_test('test_chart_pattern03')
|
||||
|
||||
def test_chart_pattern04(self):
|
||||
self.run_exe_test('test_chart_pattern04')
|
||||
|
||||
def test_chart_pattern05(self):
|
||||
self.run_exe_test('test_chart_pattern05')
|
||||
|
||||
def test_chart_pattern06(self):
|
||||
self.run_exe_test('test_chart_pattern06')
|
||||
|
||||
def test_chart_pattern07(self):
|
||||
self.run_exe_test('test_chart_pattern07')
|
||||
|
||||
def test_chart_pattern08(self):
|
||||
self.run_exe_test('test_chart_pattern08')
|
||||
BIN
test/functional/xlsx_files/chart_pattern01.xlsx
Normal file
BIN
test/functional/xlsx_files/chart_pattern01.xlsx
Normal file
Binary file not shown.
BIN
test/functional/xlsx_files/chart_pattern02.xlsx
Normal file
BIN
test/functional/xlsx_files/chart_pattern02.xlsx
Normal file
Binary file not shown.
BIN
test/functional/xlsx_files/chart_pattern03.xlsx
Normal file
BIN
test/functional/xlsx_files/chart_pattern03.xlsx
Normal file
Binary file not shown.
BIN
test/functional/xlsx_files/chart_pattern04.xlsx
Normal file
BIN
test/functional/xlsx_files/chart_pattern04.xlsx
Normal file
Binary file not shown.
BIN
test/functional/xlsx_files/chart_pattern05.xlsx
Normal file
BIN
test/functional/xlsx_files/chart_pattern05.xlsx
Normal file
Binary file not shown.
BIN
test/functional/xlsx_files/chart_pattern06.xlsx
Normal file
BIN
test/functional/xlsx_files/chart_pattern06.xlsx
Normal file
Binary file not shown.
BIN
test/functional/xlsx_files/chart_pattern07.xlsx
Normal file
BIN
test/functional/xlsx_files/chart_pattern07.xlsx
Normal file
Binary file not shown.
BIN
test/functional/xlsx_files/chart_pattern08.xlsx
Normal file
BIN
test/functional/xlsx_files/chart_pattern08.xlsx
Normal file
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue