xlsxwriter 0.2.1.pre → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +4 -3
  3. data/ext/xlsxwriter/chart.c +88 -80
  4. data/ext/xlsxwriter/chart.h +2 -2
  5. data/ext/xlsxwriter/chartsheet.c +307 -0
  6. data/ext/xlsxwriter/chartsheet.h +15 -0
  7. data/ext/xlsxwriter/common.h +104 -0
  8. data/ext/xlsxwriter/extconf.rb +8 -8
  9. data/ext/xlsxwriter/libxlsxwriter/License.txt +24 -2
  10. data/ext/xlsxwriter/libxlsxwriter/Makefile +46 -12
  11. data/ext/xlsxwriter/libxlsxwriter/include/xlsxwriter/app.h +1 -1
  12. data/ext/xlsxwriter/libxlsxwriter/include/xlsxwriter/chart.h +196 -30
  13. data/ext/xlsxwriter/libxlsxwriter/include/xlsxwriter/chartsheet.h +3 -3
  14. data/ext/xlsxwriter/libxlsxwriter/include/xlsxwriter/comment.h +76 -0
  15. data/ext/xlsxwriter/libxlsxwriter/include/xlsxwriter/common.h +24 -5
  16. data/ext/xlsxwriter/libxlsxwriter/include/xlsxwriter/content_types.h +5 -1
  17. data/ext/xlsxwriter/libxlsxwriter/include/xlsxwriter/core.h +1 -1
  18. data/ext/xlsxwriter/libxlsxwriter/include/xlsxwriter/custom.h +1 -1
  19. data/ext/xlsxwriter/libxlsxwriter/include/xlsxwriter/drawing.h +6 -17
  20. data/ext/xlsxwriter/libxlsxwriter/include/xlsxwriter/format.h +20 -6
  21. data/ext/xlsxwriter/libxlsxwriter/include/xlsxwriter/hash_table.h +1 -1
  22. data/ext/xlsxwriter/libxlsxwriter/include/xlsxwriter/packager.h +3 -1
  23. data/ext/xlsxwriter/libxlsxwriter/include/xlsxwriter/relationships.h +1 -1
  24. data/ext/xlsxwriter/libxlsxwriter/include/xlsxwriter/shared_strings.h +1 -1
  25. data/ext/xlsxwriter/libxlsxwriter/include/xlsxwriter/styles.h +11 -5
  26. data/ext/xlsxwriter/libxlsxwriter/include/xlsxwriter/theme.h +1 -1
  27. data/ext/xlsxwriter/libxlsxwriter/include/xlsxwriter/third_party/md5.h +43 -0
  28. data/ext/xlsxwriter/libxlsxwriter/include/xlsxwriter/utility.h +42 -3
  29. data/ext/xlsxwriter/libxlsxwriter/include/xlsxwriter/vml.h +55 -0
  30. data/ext/xlsxwriter/libxlsxwriter/include/xlsxwriter/workbook.h +83 -18
  31. data/ext/xlsxwriter/libxlsxwriter/include/xlsxwriter/worksheet.h +1519 -109
  32. data/ext/xlsxwriter/libxlsxwriter/include/xlsxwriter/xmlwriter.h +4 -2
  33. data/ext/xlsxwriter/libxlsxwriter/include/xlsxwriter.h +3 -2
  34. data/ext/xlsxwriter/libxlsxwriter/src/Makefile +25 -7
  35. data/ext/xlsxwriter/libxlsxwriter/src/app.c +1 -1
  36. data/ext/xlsxwriter/libxlsxwriter/src/chart.c +332 -48
  37. data/ext/xlsxwriter/libxlsxwriter/src/chartsheet.c +20 -19
  38. data/ext/xlsxwriter/libxlsxwriter/src/comment.c +443 -0
  39. data/ext/xlsxwriter/libxlsxwriter/src/content_types.c +20 -1
  40. data/ext/xlsxwriter/libxlsxwriter/src/core.c +2 -2
  41. data/ext/xlsxwriter/libxlsxwriter/src/custom.c +1 -1
  42. data/ext/xlsxwriter/libxlsxwriter/src/drawing.c +58 -20
  43. data/ext/xlsxwriter/libxlsxwriter/src/format.c +98 -25
  44. data/ext/xlsxwriter/libxlsxwriter/src/hash_table.c +1 -1
  45. data/ext/xlsxwriter/libxlsxwriter/src/packager.c +269 -12
  46. data/ext/xlsxwriter/libxlsxwriter/src/relationships.c +1 -1
  47. data/ext/xlsxwriter/libxlsxwriter/src/shared_strings.c +2 -4
  48. data/ext/xlsxwriter/libxlsxwriter/src/styles.c +334 -48
  49. data/ext/xlsxwriter/libxlsxwriter/src/theme.c +1 -1
  50. data/ext/xlsxwriter/libxlsxwriter/src/utility.c +71 -8
  51. data/ext/xlsxwriter/libxlsxwriter/src/vml.c +1032 -0
  52. data/ext/xlsxwriter/libxlsxwriter/src/workbook.c +343 -27
  53. data/ext/xlsxwriter/libxlsxwriter/src/worksheet.c +3759 -478
  54. data/ext/xlsxwriter/libxlsxwriter/src/xmlwriter.c +81 -2
  55. data/ext/xlsxwriter/libxlsxwriter/third_party/md5/Makefile +42 -0
  56. data/ext/xlsxwriter/libxlsxwriter/third_party/md5/md5.c +291 -0
  57. data/ext/xlsxwriter/libxlsxwriter/third_party/md5/md5.h +43 -0
  58. data/ext/xlsxwriter/shared_strings.c +65 -0
  59. data/ext/xlsxwriter/shared_strings.h +15 -0
  60. data/ext/xlsxwriter/workbook.c +96 -20
  61. data/ext/xlsxwriter/worksheet.c +125 -235
  62. data/ext/xlsxwriter/worksheet.h +2 -1
  63. data/ext/xlsxwriter/xlsxwriter.c +4 -0
  64. data/lib/xlsxwriter/rich_string.rb +0 -2
  65. data/lib/xlsxwriter/version.rb +1 -1
  66. data/lib/xlsxwriter/worksheet.rb +2 -2
  67. data/test/{run-test.rb → run_test.rb} +3 -3
  68. data/test/support/chart_test.rb +3 -3
  69. data/test/support/with_xlsx_file.rb +4 -2
  70. data/test/support/xlsx_comparable.rb +40 -26
  71. data/test/test_array_formula.rb +42 -0
  72. data/test/test_autofilter.rb +72 -0
  73. data/test/{test-chart-area.rb → test_chart_area.rb} +2 -2
  74. data/test/{test-chart-axis.rb → test_chart_axis.rb} +16 -16
  75. data/test/test_chart_bar.rb +382 -0
  76. data/test/test_chart_blank.rb +27 -0
  77. data/test/{test-chart-column.rb → test_chart_column.rb} +2 -2
  78. data/test/{test-chart-doughnut.rb → test_chart_doughnut.rb} +2 -2
  79. data/test/{test-chart-legend.rb → test_chart_legend.rb} +2 -2
  80. data/test/{test-chart-pie.rb → test_chart_pie.rb} +2 -2
  81. data/test/{test-chart-scatter.rb → test_chart_scatter.rb} +3 -4
  82. data/test/{test-chart-size.rb → test_chart_size.rb} +2 -2
  83. data/test/{test-chart-title.rb → test_chart_title.rb} +3 -3
  84. data/test/test_chartsheet.rb +201 -0
  85. data/test/{test-data.rb → test_data.rb} +1 -1
  86. data/test/{test-data-validation.rb → test_data_validation.rb} +23 -24
  87. data/test/{test-default-row.rb → test_default_row.rb} +1 -1
  88. data/test/{test-defined-name.rb → test_defined_name.rb} +12 -12
  89. data/test/{test-escapes.rb → test_escapes.rb} +5 -2
  90. data/test/{test-fit-to-pages.rb → test_fit_to_pages.rb} +6 -6
  91. data/test/{test-formatting.rb → test_formatting.rb} +10 -10
  92. data/test/{test-gridlines.rb → test_gridlines.rb} +3 -3
  93. data/test/{test-hyperlink.rb → test_hyperlink.rb} +22 -11
  94. data/test/{test-image.rb → test_image.rb} +6 -4
  95. data/test/{test-macro.rb → test_macro.rb} +1 -1
  96. data/test/{test-merge-range.rb → test_merge_range.rb} +1 -1
  97. data/test/{test-misc.rb → test_misc.rb} +2 -2
  98. data/test/{test-optimize.rb → test_optimize.rb} +2 -4
  99. data/test/{test-outline.rb → test_outline.rb} +14 -14
  100. data/test/{test-page-breaks.rb → test_page_breaks.rb} +2 -2
  101. data/test/{test-page-setup.rb → test_page_setup.rb} +2 -2
  102. data/test/{test-panes.rb → test_panes.rb} +1 -1
  103. data/test/{test-print-area.rb → test_print_area.rb} +3 -3
  104. data/test/{test-print-options.rb → test_print_options.rb} +7 -7
  105. data/test/{test-print-scale.rb → test_print_scale.rb} +2 -2
  106. data/test/{test-properties.rb → test_properties.rb} +2 -2
  107. data/test/{test-protect.rb → test_protect.rb} +3 -3
  108. data/test/{test-repeat.rb → test_repeat.rb} +3 -3
  109. data/test/{test-rich-string.rb → test_rich_string.rb} +5 -9
  110. data/test/{test-row-col-format.rb → test_row_col_format.rb} +1 -1
  111. data/test/{test-ruby-worksheet.rb → test_ruby_worksheet.rb} +2 -2
  112. data/test/{test-set-selection.rb → test_set_selection.rb} +2 -2
  113. data/test/{test-set-start-page.rb → test_set_start_page.rb} +2 -2
  114. data/test/{test-simple.rb → test_simple.rb} +10 -10
  115. data/test/{test-types.rb → test_types.rb} +1 -1
  116. data/test/{xlsx-func-testcase.rb → xlsx_func_testcase.rb} +1 -0
  117. metadata +135 -104
  118. data/test/test-array-formula.rb +0 -35
  119. data/test/test-autofilter.rb +0 -72
  120. data/test/test-chart-bar.rb +0 -74
  121. /data/test/{test-errors.rb → test_errors.rb} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 258446b7479b3f3677923a46fe56f3206d313a81776e797bf4232e08bbaa1926
4
- data.tar.gz: '029fd9139e2047cbbd7e248f324c517c09383fa332f02edd83dabaf75c328886'
3
+ metadata.gz: 8f03eb87d448a902c6067b95d4a3d7598cecd3456a3f8097e40da1bd0351c8d4
4
+ data.tar.gz: 2af72c3d678d22a1990f960ee0b7f2315e39d37a780b5e589ebce7794b1b23f6
5
5
  SHA512:
6
- metadata.gz: 356595ae4d443af888c87a9402727dae8438db5ee666fe75887762a3140d905e9473d7e9c63967c6cd94c92c7cc643696d9a044658691d8164c0464ed9b50a32
7
- data.tar.gz: 96d899fd65b2b01a7ffb64f38749b71baa849786fc7a5cd61fecbafbae245aa2b7aff3d5e9b852694ad70a1bb399517a1ba8611b12ab52b8f5c8a33998f850f1
6
+ metadata.gz: 2ebcf14300b3cbaf46fc3a784c2ad9b5c114fa2ea3dccca08976ae8af7f50265beb05ed4233da92db1398bed7e17144779ca2c973cab59dad55e95fb3ee926ae
7
+ data.tar.gz: 0cd298302d3c354ced238ed5fba71b7b05498db56c76df2b307d90603c122308c79780db9af55d1f46c7aece7f30da517a39d30f5d0b56acfd3107f79fbc9fb5
data/Rakefile CHANGED
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'rake/extensiontask'
3
4
 
4
5
  task default: :test
@@ -12,9 +13,9 @@ Rake::Task['compile'].prerequisites.unshift :patch_dep
12
13
  Gem::PackageTask.new(spec) do |pkg|
13
14
  end
14
15
 
15
- DEP_DIR='ext/xlsxwriter/libxlsxwriter'
16
+ DEP_DIR = 'ext/xlsxwriter/libxlsxwriter'
16
17
 
17
- desc "Checkout xlsxwriter C library"
18
+ desc 'Checkout xlsxwriter C library'
18
19
  task :patch_dep do
19
20
  patches = Dir["#{pwd}/dep_patches/*.patch"]
20
21
  chdir(DEP_DIR) do
@@ -30,5 +31,5 @@ end
30
31
 
31
32
  desc 'Run specs'
32
33
  task test: :compile do
33
- ruby('test/run-test.rb')
34
+ ruby 'test/run_test.rb'
34
35
  end
@@ -1,5 +1,8 @@
1
- #include "chart.h"
1
+ #include <ruby.h>
2
2
  #include <ruby/encoding.h>
3
+
4
+ #include "chart.h"
5
+ #include "common.h"
3
6
  #include "workbook.h"
4
7
  #include "worksheet.h"
5
8
 
@@ -7,10 +10,10 @@ VALUE cChart;
7
10
  VALUE cChartSeries;
8
11
  VALUE cChartAxis;
9
12
 
10
- #define DEF_PROP_SETTER(type, field, value, ptr_field) VALUE type ## _set_ ## field ## _ (VALUE self, VALUE val) { \
13
+ #define DEF_PROP_SETTER(type, field, value) VALUE type ## _set_ ## field ## _ (VALUE self, VALUE val) { \
11
14
  struct type *ptr; \
12
15
  Data_Get_Struct(self, struct type, ptr); \
13
- type ## _set_ ## field (ptr->ptr_field, value); \
16
+ type ## _set_ ## field (ptr->type, value); \
14
17
  return val; \
15
18
  }
16
19
 
@@ -66,13 +69,13 @@ chart_axis_init(VALUE self, VALUE chart, VALUE type) {
66
69
  if (c_ptr && c_ptr->chart) {
67
70
  ID axis = rb_check_id_cstr("x", 1, NULL);
68
71
  if (axis && axis == rb_check_id(&type)) {
69
- ptr->axis = c_ptr->chart->x_axis;
72
+ ptr->chart_axis = c_ptr->chart->x_axis;
70
73
  return self;
71
74
  }
72
75
 
73
76
  axis = rb_check_id_cstr("y", 1, NULL);
74
77
  if (axis && axis == rb_check_id(&type)) {
75
- ptr->axis = c_ptr->chart->y_axis;
78
+ ptr->chart_axis = c_ptr->chart->y_axis;
76
79
  return self;
77
80
  }
78
81
 
@@ -91,7 +94,7 @@ chart_series_alloc(VALUE klass) {
91
94
 
92
95
  obj = Data_Make_Struct(klass, struct chart_series, NULL, NULL, ptr);
93
96
 
94
- ptr->series = NULL;
97
+ ptr->chart_series = NULL;
95
98
 
96
99
  return obj;
97
100
  }
@@ -114,7 +117,7 @@ chart_series_init(int argc, VALUE *argv, VALUE self) {
114
117
  vals = StringValueCStr(argv[1]);
115
118
  }
116
119
  if (c_ptr && c_ptr->chart) {
117
- ptr->series = chart_add_series(c_ptr->chart, cats, vals);
120
+ ptr->chart_series = chart_add_series(c_ptr->chart, cats, vals);
118
121
  }
119
122
 
120
123
  return self;
@@ -181,9 +184,8 @@ chart_title_set_name_range_(int argc, VALUE *argv, VALUE self) {
181
184
  lxw_row_t row;
182
185
  lxw_col_t col;
183
186
  extract_cell(argc - 1, argv + 1, &row, &col);
184
- struct chart *ptr;
185
- Data_Get_Struct(self, struct chart, ptr);
186
- chart_title_set_name_range(ptr->chart, str, row, col);
187
+
188
+ LXW_NO_RESULT_CALL(chart, title_set_name_range, str, row, col);
187
189
  return self;
188
190
  }
189
191
 
@@ -195,10 +197,7 @@ chart_title_set_name_range_(int argc, VALUE *argv, VALUE self) {
195
197
  */
196
198
  VALUE
197
199
  chart_legend_set_position_(VALUE self, VALUE pos) {
198
- struct chart *ptr;
199
- Data_Get_Struct(self, struct chart, ptr);
200
-
201
- chart_legend_set_position(ptr->chart, NUM2UINT(rb_check_to_int(pos)));
200
+ LXW_NO_RESULT_CALL(chart, legend_set_position, NUM2UINT(rb_check_to_int(pos)));
202
201
  return pos;
203
202
  }
204
203
 
@@ -209,11 +208,8 @@ chart_legend_set_position_(VALUE self, VALUE pos) {
209
208
  */
210
209
  VALUE
211
210
  chart_legend_set_font_(VALUE self, VALUE opts) {
212
- struct chart *ptr;
213
211
  lxw_chart_font font = val_to_lxw_chart_font(opts);
214
- Data_Get_Struct(self, struct chart, ptr);
215
-
216
- chart_legend_set_font(ptr->chart, &font);
212
+ LXW_NO_RESULT_CALL(chart, legend_set_font, &font);
217
213
  return self;
218
214
  }
219
215
 
@@ -234,9 +230,7 @@ chart_legend_delete_series_(VALUE self, VALUE series) {
234
230
  }
235
231
  series_arr[len] = -1;
236
232
 
237
- struct chart *ptr;
238
- Data_Get_Struct(self, struct chart, ptr);
239
- chart_legend_delete_series(ptr->chart, series_arr);
233
+ LXW_ERR_RESULT_CALL(chart, legend_delete_series, series_arr);
240
234
  return self;
241
235
  }
242
236
 
@@ -246,18 +240,29 @@ chart_legend_delete_series_(VALUE self, VALUE series) {
246
240
  *
247
241
  * Sets the chart +style+ (integer from 1 to 48, default is 2).
248
242
  */
249
- DEF_PROP_SETTER(chart, style, NUM2INT(rb_check_to_int(val)), chart)
243
+ DEF_PROP_SETTER(chart, style, NUM2INT(rb_check_to_int(val)))
250
244
 
251
245
 
252
246
  /* Document-method: XlsxWriter::Workbook::Chart#rotation=
253
247
  *
254
248
  */
255
- DEF_PROP_SETTER(chart, rotation, NUM2UINT(rb_check_to_int(val)), chart)
249
+ DEF_PROP_SETTER(chart, rotation, NUM2UINT(rb_check_to_int(val)))
256
250
 
257
251
  /* Document-method: XlsxWriter::Workbook::Chart#hole_size=
258
252
  *
259
253
  */
260
- DEF_PROP_SETTER(chart, hole_size, NUM2UINT(rb_check_to_int(val)), chart)
254
+ DEF_PROP_SETTER(chart, hole_size, NUM2UINT(rb_check_to_int(val)))
255
+
256
+ /* Document-method: XlsxWriter::Workbook::Chart#show_blanks_as=
257
+ *
258
+ */
259
+ VALUE
260
+ chart_set_show_blank_as_(VALUE self, VALUE val) {
261
+ struct chart *ptr;
262
+ Data_Get_Struct(self, struct chart, ptr);
263
+ ptr->chart->show_blanks_as = NUM2INT(rb_check_to_int(val));
264
+ return val;
265
+ }
261
266
 
262
267
 
263
268
  /* :nodoc: */
@@ -273,7 +278,7 @@ VALUE
273
278
  chart_set_axis_id_1_(VALUE self, VALUE val) {
274
279
  struct chart *ptr;
275
280
  Data_Get_Struct(self, struct chart, ptr);
276
- ptr->chart->axis_id_1 = NUM2UINT(val);
281
+ ptr->chart->axis_id_1 = NUM2UINT(rb_check_to_int(val));
277
282
  return val;
278
283
  }
279
284
 
@@ -290,7 +295,7 @@ VALUE
290
295
  chart_set_axis_id_2_(VALUE self, VALUE val) {
291
296
  struct chart *ptr;
292
297
  Data_Get_Struct(self, struct chart, ptr);
293
- ptr->chart->axis_id_2 = NUM2UINT(val);
298
+ ptr->chart->axis_id_2 = NUM2UINT(rb_check_to_int(val));
294
299
  return val;
295
300
  }
296
301
 
@@ -301,17 +306,17 @@ chart_set_axis_id_2_(VALUE self, VALUE val) {
301
306
  *
302
307
  * Sets the chart axis +name+.
303
308
  */
304
- DEF_PROP_SETTER(chart_axis, name, StringValueCStr(val), axis)
309
+ DEF_PROP_SETTER(chart_axis, name, StringValueCStr(val))
305
310
 
306
311
  /* Document-method XlsxWriter::Workbook::Chart::Axis#interval_unit=
307
312
  *
308
313
  */
309
- DEF_PROP_SETTER(chart_axis, interval_unit, NUM2UINT(rb_check_to_int(val)), axis)
314
+ DEF_PROP_SETTER(chart_axis, interval_unit, NUM2UINT(rb_check_to_int(val)))
310
315
 
311
316
  /* Document-method XlsxWriter::Workbook::Chart::Axis#interval_tick=
312
317
  *
313
318
  */
314
- DEF_PROP_SETTER(chart_axis, interval_tick, NUM2UINT(rb_check_to_int(val)), axis)
319
+ DEF_PROP_SETTER(chart_axis, interval_tick, NUM2UINT(rb_check_to_int(val)))
315
320
 
316
321
  /* Document-method: XlsxWriter::Workbook::Chart::Axis#max=
317
322
  *
@@ -319,7 +324,7 @@ DEF_PROP_SETTER(chart_axis, interval_tick, NUM2UINT(rb_check_to_int(val)), axis)
319
324
  *
320
325
  * Sets the chart axis +max+ value.
321
326
  */
322
- DEF_PROP_SETTER(chart_axis, max, NUM2DBL(rb_check_to_float(val)), axis)
327
+ DEF_PROP_SETTER(chart_axis, max, NUM2DBL(rb_check_to_float(val)))
323
328
 
324
329
  /* Document-method: XlsxWriter::Workbook::Chart::Axis#min=
325
330
  *
@@ -327,47 +332,47 @@ DEF_PROP_SETTER(chart_axis, max, NUM2DBL(rb_check_to_float(val)), axis)
327
332
  *
328
333
  * Sets the chart axis +min+ value.
329
334
  */
330
- DEF_PROP_SETTER(chart_axis, min, NUM2DBL(rb_check_to_float(val)), axis)
335
+ DEF_PROP_SETTER(chart_axis, min, NUM2DBL(rb_check_to_float(val)))
331
336
 
332
337
  /* Document-method: XlsxWriter::Workbook::Chart::Axis#major_tick_mark=
333
338
  *
334
339
  */
335
- DEF_PROP_SETTER(chart_axis, major_tick_mark, NUM2UINT(rb_check_to_int(val)), axis)
340
+ DEF_PROP_SETTER(chart_axis, major_tick_mark, NUM2UINT(rb_check_to_int(val)))
336
341
 
337
342
  /* Document-method: XlsxWriter::Workbook::Chart::Axis#minor_tick_mark=
338
343
  *
339
344
  */
340
- DEF_PROP_SETTER(chart_axis, minor_tick_mark, NUM2UINT(rb_check_to_int(val)), axis)
345
+ DEF_PROP_SETTER(chart_axis, minor_tick_mark, NUM2UINT(rb_check_to_int(val)))
341
346
 
342
347
  /* Document-method: XlsxWriter::Workbook::Chart::Axis#major_unit=
343
348
  *
344
349
  */
345
- DEF_PROP_SETTER(chart_axis, major_unit, NUM2DBL(rb_check_to_float(val)), axis)
350
+ DEF_PROP_SETTER(chart_axis, major_unit, NUM2DBL(rb_check_to_float(val)))
346
351
 
347
352
  /* Document-method: XlsxWriter::Workbook::Chart::Axis#minor_unit=
348
353
  *
349
354
  */
350
- DEF_PROP_SETTER(chart_axis, minor_unit, NUM2DBL(rb_check_to_float(val)), axis)
355
+ DEF_PROP_SETTER(chart_axis, minor_unit, NUM2DBL(rb_check_to_float(val)))
351
356
 
352
357
  /* Document-method: XlsxWriter::Workbook::Chart::Axis#label_align=
353
358
  *
354
359
  */
355
- DEF_PROP_SETTER(chart_axis, label_align, NUM2UINT(rb_check_to_int(val)), axis)
360
+ DEF_PROP_SETTER(chart_axis, label_align, NUM2UINT(rb_check_to_int(val)))
356
361
 
357
362
  /* Document-method: XlsxWriter::Workbook::Chart::Axis#label_position=
358
363
  *
359
364
  */
360
- DEF_PROP_SETTER(chart_axis, label_position, NUM2DBL(rb_check_to_float(val)), axis)
365
+ DEF_PROP_SETTER(chart_axis, label_position, NUM2DBL(rb_check_to_float(val)))
361
366
 
362
367
  /* Document-method: XlsxWriter::Workbook::Chart::Axis#log_base=
363
368
  *
364
369
  */
365
- DEF_PROP_SETTER(chart_axis, log_base, NUM2DBL(rb_check_to_float(val)), axis)
370
+ DEF_PROP_SETTER(chart_axis, log_base, NUM2DBL(rb_check_to_float(val)))
366
371
 
367
372
  /* Document-method: XlsxWriter::Workbook::Chart::Axis#num_format=
368
373
  *
369
374
  */
370
- DEF_PROP_SETTER(chart_axis, num_format, StringValueCStr(val), axis)
375
+ DEF_PROP_SETTER(chart_axis, num_format, StringValueCStr(val))
371
376
 
372
377
  /* call-seq:
373
378
  * axis.set_name_range(name, cell) -> self
@@ -382,9 +387,7 @@ chart_axis_set_name_range_(int argc, VALUE *argv, VALUE self) {
382
387
  lxw_row_t row;
383
388
  lxw_col_t col;
384
389
  extract_cell(argc - 1, argv + 1, &row, &col);
385
- struct chart_axis *ptr;
386
- Data_Get_Struct(self, struct chart_axis, ptr);
387
- chart_axis_set_name_range(ptr->axis, str, row, col);
390
+ LXW_NO_RESULT_CALL(chart_axis, set_name_range, str, row, col);
388
391
  return self;
389
392
  }
390
393
 
@@ -394,11 +397,8 @@ chart_axis_set_name_range_(int argc, VALUE *argv, VALUE self) {
394
397
  */
395
398
  VALUE
396
399
  chart_axis_set_name_font_(VALUE self, VALUE value) {
397
- struct chart_axis *ptr;
398
400
  lxw_chart_font font = val_to_lxw_chart_font(value);
399
- Data_Get_Struct(self, struct chart_axis, ptr);
400
-
401
- chart_axis_set_name_font(ptr->axis, &font);
401
+ LXW_NO_RESULT_CALL(chart_axis, set_name_font, &font);
402
402
  return self;
403
403
  }
404
404
 
@@ -408,11 +408,8 @@ chart_axis_set_name_font_(VALUE self, VALUE value) {
408
408
  */
409
409
  VALUE
410
410
  chart_axis_set_num_font_(VALUE self, VALUE value) {
411
- struct chart_axis *ptr;
412
411
  lxw_chart_font font = val_to_lxw_chart_font(value);
413
- Data_Get_Struct(self, struct chart_axis, ptr);
414
-
415
- chart_axis_set_num_font(ptr->axis, &font);
412
+ LXW_NO_RESULT_CALL(chart_axis, set_num_font, &font);
416
413
  return self;
417
414
  }
418
415
 
@@ -422,12 +419,8 @@ chart_axis_set_num_font_(VALUE self, VALUE value) {
422
419
  */
423
420
  VALUE
424
421
  chart_axis_set_line_(VALUE self, VALUE opts) {
425
- struct chart_axis *ptr;
426
422
  lxw_chart_line line = val_to_lxw_chart_line(opts);
427
-
428
- Data_Get_Struct(self, struct chart_axis, ptr);
429
-
430
- chart_axis_set_line(ptr->axis, &line);
423
+ LXW_NO_RESULT_CALL(chart_axis, set_line, &line);
431
424
  return self;
432
425
  }
433
426
 
@@ -437,19 +430,15 @@ chart_axis_set_line_(VALUE self, VALUE opts) {
437
430
  */
438
431
  VALUE
439
432
  chart_axis_set_fill_(VALUE self, VALUE opts) {
440
- struct chart_axis *ptr;
441
433
  lxw_chart_fill fill = val_to_lxw_chart_fill(opts);
442
-
443
- Data_Get_Struct(self, struct chart_axis, ptr);
444
-
445
- chart_axis_set_fill(ptr->axis, &fill);
434
+ LXW_NO_RESULT_CALL(chart_axis, set_fill, &fill);
446
435
  return self;
447
436
  }
448
437
 
449
438
  /* Document-method XlsxWriter::Workbook::Chart::Axis#position=
450
439
  *
451
440
  */
452
- DEF_PROP_SETTER(chart_axis, position, NUM2UINT(rb_check_to_int(val)), axis)
441
+ DEF_PROP_SETTER(chart_axis, position, NUM2UINT(rb_check_to_int(val)))
453
442
 
454
443
  /* call-seq: axis.reverse = true
455
444
  *
@@ -457,11 +446,8 @@ DEF_PROP_SETTER(chart_axis, position, NUM2UINT(rb_check_to_int(val)), axis)
457
446
  */
458
447
  VALUE
459
448
  chart_axis_set_reverse_(VALUE self, VALUE p) {
460
- struct chart_axis *ptr;
461
449
  if (RTEST(p)) {
462
- Data_Get_Struct(self, struct chart_axis, ptr);
463
-
464
- chart_axis_set_reverse(ptr->axis);
450
+ LXW_NO_RESULT_CALL(chart_axis, set_reverse);
465
451
  }
466
452
  return p;
467
453
  }
@@ -472,7 +458,7 @@ chart_axis_set_source_linked_(VALUE self, VALUE val) {
472
458
 
473
459
  Data_Get_Struct(self, struct chart_axis, ptr);
474
460
 
475
- ptr->axis->source_linked = NUM2UINT(rb_check_to_int(val));
461
+ ptr->chart_axis->source_linked = NUM2UINT(rb_check_to_int(val));
476
462
 
477
463
  return val;
478
464
  }
@@ -493,9 +479,29 @@ chart_series_set_categories_(int argc, VALUE *argv, VALUE self) {
493
479
  lxw_row_t row_from, row_to;
494
480
  lxw_col_t col_from, col_to;
495
481
  extract_range(argc - 1, argv + 1, &row_from, &col_from, &row_to, &col_to);
496
- struct chart_series *ptr;
497
- Data_Get_Struct(self, struct chart_series, ptr);
498
- chart_series_set_categories(ptr->series, str, row_from, col_from, row_to, col_to);
482
+ LXW_NO_RESULT_CALL(chart_series, set_categories, str, row_from, col_from, row_to, col_to);
483
+ return self;
484
+ }
485
+
486
+ /* call-seq: series.set_fill(options)
487
+ *
488
+ * Sets chart series fill options. See {libxlsxwriter doc}[https://libxlsxwriter.github.io/structlxw__chart__fill.html] for details.
489
+ */
490
+ VALUE
491
+ chart_series_set_fill_(VALUE self, VALUE opts) {
492
+ lxw_chart_fill fill = val_to_lxw_chart_fill(opts);
493
+ LXW_NO_RESULT_CALL(chart_series, set_fill, &fill);
494
+ return self;
495
+ }
496
+
497
+ /* call-seq: series.set_line(options)
498
+ *
499
+ * Sets chart series line options. See {libxlsxwriter doc}[https://libxlsxwriter.github.io/structlxw__chart__line.html] for details.
500
+ */
501
+ VALUE
502
+ chart_series_set_line_(VALUE self, VALUE opts) {
503
+ lxw_chart_line line = val_to_lxw_chart_line(opts);
504
+ LXW_NO_RESULT_CALL(chart_series, set_line, &line);
499
505
  return self;
500
506
  }
501
507
 
@@ -513,9 +519,7 @@ chart_series_set_values_(int argc, VALUE *argv, VALUE self) {
513
519
  lxw_row_t row_from, row_to;
514
520
  lxw_col_t col_from, col_to;
515
521
  extract_range(argc - 1, argv + 1, &row_from, &col_from, &row_to, &col_to);
516
- struct chart_series *ptr;
517
- Data_Get_Struct(self, struct chart_series, ptr);
518
- chart_series_set_values(ptr->series, str, row_from, col_from, row_to, col_to);
522
+ LXW_NO_RESULT_CALL(chart_series, set_values, str, row_from, col_from, row_to, col_to);
519
523
  return self;
520
524
  }
521
525
 
@@ -525,7 +529,7 @@ chart_series_set_values_(int argc, VALUE *argv, VALUE self) {
525
529
  *
526
530
  * Set chart series name.
527
531
  */
528
- DEF_PROP_SETTER(chart_series, name, StringValueCStr(val), series)
532
+ DEF_PROP_SETTER(chart_series, name, StringValueCStr(val))
529
533
 
530
534
  /* call-seq:
531
535
  * series.set_name_range(name, cell) -> self
@@ -540,19 +544,14 @@ chart_series_set_name_range_(int argc, VALUE *argv, VALUE self) {
540
544
  lxw_row_t row;
541
545
  lxw_col_t col;
542
546
  extract_cell(argc - 1, argv + 1, &row, &col);
543
- struct chart_series *ptr;
544
- Data_Get_Struct(self, struct chart_series, ptr);
545
- chart_series_set_name_range(ptr->series, str, row, col);
547
+ LXW_NO_RESULT_CALL(chart_series, set_name_range, str, row, col);
546
548
  return self;
547
549
  }
548
550
 
549
551
  VALUE
550
552
  chart_series_set_invert_if_negative_(VALUE self, VALUE p) {
551
- struct chart_series *ptr;
552
553
  if (RTEST(p)) {
553
- Data_Get_Struct(self, struct chart_series, ptr);
554
-
555
- chart_series_set_invert_if_negative(ptr->series);
554
+ LXW_NO_RESULT_CALL(chart_series, set_invert_if_negative);
556
555
  }
557
556
  return p;
558
557
  }
@@ -623,17 +622,20 @@ void init_xlsxwriter_chart() {
623
622
 
624
623
 
625
624
  rb_define_alloc_func(cChart, chart_alloc);
625
+ rb_define_attr(cChart, "workbook", 1, 0);
626
626
  rb_define_method(cChart, "initialize", chart_init, 2);
627
627
  rb_define_method(cChart, "add_series", chart_add_series_, -1);
628
628
  rb_define_method(cChart, "x_axis", chart_x_axis_, 0);
629
629
  rb_define_method(cChart, "y_axis", chart_y_axis_, 0);
630
630
  rb_define_method(cChart, "title=", chart_title_set_name_, 1);
631
+ rb_define_method(cChart, "set_name_range", chart_title_set_name_range_, -1);
631
632
  rb_define_method(cChart, "legend_position=", chart_legend_set_position_, 1);
632
633
  rb_define_method(cChart, "legend_set_font", chart_legend_set_font_, 1);
633
634
  rb_define_method(cChart, "legend_delete_series", chart_legend_delete_series_, 1);
634
635
  rb_define_method(cChart, "style=", chart_set_style_, 1);
635
636
  rb_define_method(cChart, "rotation=", chart_set_rotation_, 1);
636
637
  rb_define_method(cChart, "hole_size=", chart_set_hole_size_, 1);
638
+ rb_define_method(cChart, "show_blank_as=", chart_set_show_blank_as_, 1);
637
639
 
638
640
  rb_define_method(cChart, "axis_id_1", chart_get_axis_id_1_, 0);
639
641
  rb_define_method(cChart, "axis_id_1=", chart_set_axis_id_1_, 1);
@@ -669,6 +671,8 @@ void init_xlsxwriter_chart() {
669
671
  rb_define_method(cChartSeries, "initialize", chart_series_init, -1);
670
672
 
671
673
  rb_define_method(cChartSeries, "set_categories", chart_series_set_categories_, -1);
674
+ rb_define_method(cChartSeries, "set_fill", chart_series_set_fill_, 1);
675
+ rb_define_method(cChartSeries, "set_line", chart_series_set_line_, 1);
672
676
  rb_define_method(cChartSeries, "set_values", chart_series_set_values_, -1);
673
677
  rb_define_method(cChartSeries, "name=", chart_series_set_name_, 1);
674
678
  rb_define_method(cChartSeries, "set_name_range", chart_series_set_name_range_, -1);
@@ -710,6 +714,10 @@ void init_xlsxwriter_chart() {
710
714
  MAP_CHART_CONST(AXIS_LABEL_ALIGN_CENTER);
711
715
  MAP_CHART_CONST(AXIS_LABEL_ALIGN_LEFT);
712
716
  MAP_CHART_CONST(AXIS_LABEL_ALIGN_RIGHT);
717
+
718
+ MAP_CHART_CONST(BLANKS_AS_GAP);
719
+ MAP_CHART_CONST(BLANKS_AS_ZERO);
720
+ MAP_CHART_CONST(BLANKS_AS_CONNECTED);
713
721
  #undef MAP_CHART_CONST
714
722
 
715
723
  #define MAP_CHART_AXIS_CONST(name) rb_define_const(cChartAxis, #name, INT2NUM(LXW_CHART_AXIS_##name))
@@ -9,11 +9,11 @@ struct chart {
9
9
  };
10
10
 
11
11
  struct chart_axis {
12
- lxw_chart_axis *axis;
12
+ lxw_chart_axis *chart_axis;
13
13
  };
14
14
 
15
15
  struct chart_series {
16
- lxw_chart_series *series;
16
+ lxw_chart_series *chart_series;
17
17
  };
18
18
 
19
19
  lxw_chart_fill val_to_lxw_chart_fill(VALUE opts);