xlsxwriter 0.2.1.pre → 0.2.1.pre.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 258446b7479b3f3677923a46fe56f3206d313a81776e797bf4232e08bbaa1926
4
- data.tar.gz: '029fd9139e2047cbbd7e248f324c517c09383fa332f02edd83dabaf75c328886'
3
+ metadata.gz: 785d6f62717613d9737bd4879dedc8077ac690de96bf3f4fafd7b2c7917956c9
4
+ data.tar.gz: 73d5337504d25eb891c34eeaa37fcebfa5961dd9e5d49276d27243198287af8a
5
5
  SHA512:
6
- metadata.gz: 356595ae4d443af888c87a9402727dae8438db5ee666fe75887762a3140d905e9473d7e9c63967c6cd94c92c7cc643696d9a044658691d8164c0464ed9b50a32
7
- data.tar.gz: 96d899fd65b2b01a7ffb64f38749b71baa849786fc7a5cd61fecbafbae245aa2b7aff3d5e9b852694ad70a1bb399517a1ba8611b12ab52b8f5c8a33998f850f1
6
+ metadata.gz: c0b99c9b0b3bf2ce4499f33acceda7596910beede83721018a38c04ae4b754b56b793b861bb5af59dc0bcdbeb55f473eaa7b9b16c34cef021575c14ec001c382
7
+ data.tar.gz: 00e8d80d92f11aec6366f3ead33d64251787d54cffb77bfd0769299079d904595ed22d5eaaa8dcc40d4a098eedfeecdf4d553a0a0a30f1a8710c4be8f33577e0
@@ -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,18 @@ 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)))
261
255
 
262
256
 
263
257
  /* :nodoc: */
@@ -301,17 +295,17 @@ chart_set_axis_id_2_(VALUE self, VALUE val) {
301
295
  *
302
296
  * Sets the chart axis +name+.
303
297
  */
304
- DEF_PROP_SETTER(chart_axis, name, StringValueCStr(val), axis)
298
+ DEF_PROP_SETTER(chart_axis, name, StringValueCStr(val))
305
299
 
306
300
  /* Document-method XlsxWriter::Workbook::Chart::Axis#interval_unit=
307
301
  *
308
302
  */
309
- DEF_PROP_SETTER(chart_axis, interval_unit, NUM2UINT(rb_check_to_int(val)), axis)
303
+ DEF_PROP_SETTER(chart_axis, interval_unit, NUM2UINT(rb_check_to_int(val)))
310
304
 
311
305
  /* Document-method XlsxWriter::Workbook::Chart::Axis#interval_tick=
312
306
  *
313
307
  */
314
- DEF_PROP_SETTER(chart_axis, interval_tick, NUM2UINT(rb_check_to_int(val)), axis)
308
+ DEF_PROP_SETTER(chart_axis, interval_tick, NUM2UINT(rb_check_to_int(val)))
315
309
 
316
310
  /* Document-method: XlsxWriter::Workbook::Chart::Axis#max=
317
311
  *
@@ -319,7 +313,7 @@ DEF_PROP_SETTER(chart_axis, interval_tick, NUM2UINT(rb_check_to_int(val)), axis)
319
313
  *
320
314
  * Sets the chart axis +max+ value.
321
315
  */
322
- DEF_PROP_SETTER(chart_axis, max, NUM2DBL(rb_check_to_float(val)), axis)
316
+ DEF_PROP_SETTER(chart_axis, max, NUM2DBL(rb_check_to_float(val)))
323
317
 
324
318
  /* Document-method: XlsxWriter::Workbook::Chart::Axis#min=
325
319
  *
@@ -327,47 +321,47 @@ DEF_PROP_SETTER(chart_axis, max, NUM2DBL(rb_check_to_float(val)), axis)
327
321
  *
328
322
  * Sets the chart axis +min+ value.
329
323
  */
330
- DEF_PROP_SETTER(chart_axis, min, NUM2DBL(rb_check_to_float(val)), axis)
324
+ DEF_PROP_SETTER(chart_axis, min, NUM2DBL(rb_check_to_float(val)))
331
325
 
332
326
  /* Document-method: XlsxWriter::Workbook::Chart::Axis#major_tick_mark=
333
327
  *
334
328
  */
335
- DEF_PROP_SETTER(chart_axis, major_tick_mark, NUM2UINT(rb_check_to_int(val)), axis)
329
+ DEF_PROP_SETTER(chart_axis, major_tick_mark, NUM2UINT(rb_check_to_int(val)))
336
330
 
337
331
  /* Document-method: XlsxWriter::Workbook::Chart::Axis#minor_tick_mark=
338
332
  *
339
333
  */
340
- DEF_PROP_SETTER(chart_axis, minor_tick_mark, NUM2UINT(rb_check_to_int(val)), axis)
334
+ DEF_PROP_SETTER(chart_axis, minor_tick_mark, NUM2UINT(rb_check_to_int(val)))
341
335
 
342
336
  /* Document-method: XlsxWriter::Workbook::Chart::Axis#major_unit=
343
337
  *
344
338
  */
345
- DEF_PROP_SETTER(chart_axis, major_unit, NUM2DBL(rb_check_to_float(val)), axis)
339
+ DEF_PROP_SETTER(chart_axis, major_unit, NUM2DBL(rb_check_to_float(val)))
346
340
 
347
341
  /* Document-method: XlsxWriter::Workbook::Chart::Axis#minor_unit=
348
342
  *
349
343
  */
350
- DEF_PROP_SETTER(chart_axis, minor_unit, NUM2DBL(rb_check_to_float(val)), axis)
344
+ DEF_PROP_SETTER(chart_axis, minor_unit, NUM2DBL(rb_check_to_float(val)))
351
345
 
352
346
  /* Document-method: XlsxWriter::Workbook::Chart::Axis#label_align=
353
347
  *
354
348
  */
355
- DEF_PROP_SETTER(chart_axis, label_align, NUM2UINT(rb_check_to_int(val)), axis)
349
+ DEF_PROP_SETTER(chart_axis, label_align, NUM2UINT(rb_check_to_int(val)))
356
350
 
357
351
  /* Document-method: XlsxWriter::Workbook::Chart::Axis#label_position=
358
352
  *
359
353
  */
360
- DEF_PROP_SETTER(chart_axis, label_position, NUM2DBL(rb_check_to_float(val)), axis)
354
+ DEF_PROP_SETTER(chart_axis, label_position, NUM2DBL(rb_check_to_float(val)))
361
355
 
362
356
  /* Document-method: XlsxWriter::Workbook::Chart::Axis#log_base=
363
357
  *
364
358
  */
365
- DEF_PROP_SETTER(chart_axis, log_base, NUM2DBL(rb_check_to_float(val)), axis)
359
+ DEF_PROP_SETTER(chart_axis, log_base, NUM2DBL(rb_check_to_float(val)))
366
360
 
367
361
  /* Document-method: XlsxWriter::Workbook::Chart::Axis#num_format=
368
362
  *
369
363
  */
370
- DEF_PROP_SETTER(chart_axis, num_format, StringValueCStr(val), axis)
364
+ DEF_PROP_SETTER(chart_axis, num_format, StringValueCStr(val))
371
365
 
372
366
  /* call-seq:
373
367
  * axis.set_name_range(name, cell) -> self
@@ -382,9 +376,7 @@ chart_axis_set_name_range_(int argc, VALUE *argv, VALUE self) {
382
376
  lxw_row_t row;
383
377
  lxw_col_t col;
384
378
  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);
379
+ LXW_NO_RESULT_CALL(chart_axis, set_name_range, str, row, col);
388
380
  return self;
389
381
  }
390
382
 
@@ -394,11 +386,8 @@ chart_axis_set_name_range_(int argc, VALUE *argv, VALUE self) {
394
386
  */
395
387
  VALUE
396
388
  chart_axis_set_name_font_(VALUE self, VALUE value) {
397
- struct chart_axis *ptr;
398
389
  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);
390
+ LXW_NO_RESULT_CALL(chart_axis, set_name_font, &font);
402
391
  return self;
403
392
  }
404
393
 
@@ -408,11 +397,8 @@ chart_axis_set_name_font_(VALUE self, VALUE value) {
408
397
  */
409
398
  VALUE
410
399
  chart_axis_set_num_font_(VALUE self, VALUE value) {
411
- struct chart_axis *ptr;
412
400
  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);
401
+ LXW_NO_RESULT_CALL(chart_axis, set_num_font, &font);
416
402
  return self;
417
403
  }
418
404
 
@@ -422,12 +408,8 @@ chart_axis_set_num_font_(VALUE self, VALUE value) {
422
408
  */
423
409
  VALUE
424
410
  chart_axis_set_line_(VALUE self, VALUE opts) {
425
- struct chart_axis *ptr;
426
411
  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);
412
+ LXW_NO_RESULT_CALL(chart_axis, set_line, &line);
431
413
  return self;
432
414
  }
433
415
 
@@ -437,19 +419,15 @@ chart_axis_set_line_(VALUE self, VALUE opts) {
437
419
  */
438
420
  VALUE
439
421
  chart_axis_set_fill_(VALUE self, VALUE opts) {
440
- struct chart_axis *ptr;
441
422
  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);
423
+ LXW_NO_RESULT_CALL(chart_axis, set_fill, &fill);
446
424
  return self;
447
425
  }
448
426
 
449
427
  /* Document-method XlsxWriter::Workbook::Chart::Axis#position=
450
428
  *
451
429
  */
452
- DEF_PROP_SETTER(chart_axis, position, NUM2UINT(rb_check_to_int(val)), axis)
430
+ DEF_PROP_SETTER(chart_axis, position, NUM2UINT(rb_check_to_int(val)))
453
431
 
454
432
  /* call-seq: axis.reverse = true
455
433
  *
@@ -457,11 +435,8 @@ DEF_PROP_SETTER(chart_axis, position, NUM2UINT(rb_check_to_int(val)), axis)
457
435
  */
458
436
  VALUE
459
437
  chart_axis_set_reverse_(VALUE self, VALUE p) {
460
- struct chart_axis *ptr;
461
438
  if (RTEST(p)) {
462
- Data_Get_Struct(self, struct chart_axis, ptr);
463
-
464
- chart_axis_set_reverse(ptr->axis);
439
+ LXW_NO_RESULT_CALL(chart_axis, set_reverse);
465
440
  }
466
441
  return p;
467
442
  }
@@ -472,7 +447,7 @@ chart_axis_set_source_linked_(VALUE self, VALUE val) {
472
447
 
473
448
  Data_Get_Struct(self, struct chart_axis, ptr);
474
449
 
475
- ptr->axis->source_linked = NUM2UINT(rb_check_to_int(val));
450
+ ptr->chart_axis->source_linked = NUM2UINT(rb_check_to_int(val));
476
451
 
477
452
  return val;
478
453
  }
@@ -493,9 +468,29 @@ chart_series_set_categories_(int argc, VALUE *argv, VALUE self) {
493
468
  lxw_row_t row_from, row_to;
494
469
  lxw_col_t col_from, col_to;
495
470
  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);
471
+ LXW_NO_RESULT_CALL(chart_series, set_categories, str, row_from, col_from, row_to, col_to);
472
+ return self;
473
+ }
474
+
475
+ /* call-seq: series.set_fill(options)
476
+ *
477
+ * Sets chart series fill options. See {libxlsxwriter doc}[https://libxlsxwriter.github.io/structlxw__chart__fill.html] for details.
478
+ */
479
+ VALUE
480
+ chart_series_set_fill_(VALUE self, VALUE opts) {
481
+ lxw_chart_fill fill = val_to_lxw_chart_fill(opts);
482
+ LXW_NO_RESULT_CALL(chart_series, set_fill, &fill);
483
+ return self;
484
+ }
485
+
486
+ /* call-seq: series.set_line(options)
487
+ *
488
+ * Sets chart series line options. See {libxlsxwriter doc}[https://libxlsxwriter.github.io/structlxw__chart__line.html] for details.
489
+ */
490
+ VALUE
491
+ chart_series_set_line_(VALUE self, VALUE opts) {
492
+ lxw_chart_line line = val_to_lxw_chart_line(opts);
493
+ LXW_NO_RESULT_CALL(chart_series, set_line, &line);
499
494
  return self;
500
495
  }
501
496
 
@@ -513,9 +508,7 @@ chart_series_set_values_(int argc, VALUE *argv, VALUE self) {
513
508
  lxw_row_t row_from, row_to;
514
509
  lxw_col_t col_from, col_to;
515
510
  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);
511
+ LXW_NO_RESULT_CALL(chart_series, set_values, str, row_from, col_from, row_to, col_to);
519
512
  return self;
520
513
  }
521
514
 
@@ -525,7 +518,7 @@ chart_series_set_values_(int argc, VALUE *argv, VALUE self) {
525
518
  *
526
519
  * Set chart series name.
527
520
  */
528
- DEF_PROP_SETTER(chart_series, name, StringValueCStr(val), series)
521
+ DEF_PROP_SETTER(chart_series, name, StringValueCStr(val))
529
522
 
530
523
  /* call-seq:
531
524
  * series.set_name_range(name, cell) -> self
@@ -540,19 +533,14 @@ chart_series_set_name_range_(int argc, VALUE *argv, VALUE self) {
540
533
  lxw_row_t row;
541
534
  lxw_col_t col;
542
535
  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);
536
+ LXW_NO_RESULT_CALL(chart_series, set_name_range, str, row, col);
546
537
  return self;
547
538
  }
548
539
 
549
540
  VALUE
550
541
  chart_series_set_invert_if_negative_(VALUE self, VALUE p) {
551
- struct chart_series *ptr;
552
542
  if (RTEST(p)) {
553
- Data_Get_Struct(self, struct chart_series, ptr);
554
-
555
- chart_series_set_invert_if_negative(ptr->series);
543
+ LXW_NO_RESULT_CALL(chart_series, set_invert_if_negative);
556
544
  }
557
545
  return p;
558
546
  }
@@ -669,6 +657,8 @@ void init_xlsxwriter_chart() {
669
657
  rb_define_method(cChartSeries, "initialize", chart_series_init, -1);
670
658
 
671
659
  rb_define_method(cChartSeries, "set_categories", chart_series_set_categories_, -1);
660
+ rb_define_method(cChartSeries, "set_fill", chart_series_set_fill_, 1);
661
+ rb_define_method(cChartSeries, "set_line", chart_series_set_line_, 1);
672
662
  rb_define_method(cChartSeries, "set_values", chart_series_set_values_, -1);
673
663
  rb_define_method(cChartSeries, "name=", chart_series_set_name_, 1);
674
664
  rb_define_method(cChartSeries, "set_name_range", chart_series_set_name_range_, -1);
@@ -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);
@@ -0,0 +1,307 @@
1
+ #include "chart.h"
2
+ #include "chartsheet.h"
3
+ #include "common.h"
4
+ #include "workbook.h"
5
+ #include "xlsxwriter_ext.h"
6
+
7
+ VALUE cChartsheet;
8
+
9
+ void chartsheet_free(void *p);
10
+
11
+
12
+ VALUE
13
+ chartsheet_alloc(VALUE klass) {
14
+ VALUE obj;
15
+ struct chartsheet *ptr;
16
+
17
+ obj = Data_Make_Struct(klass, struct chartsheet, NULL, chartsheet_free, ptr);
18
+
19
+ ptr->chartsheet = NULL;
20
+
21
+ return obj;
22
+ }
23
+
24
+ /* :nodoc: */
25
+ VALUE
26
+ chartsheet_init(int argc, VALUE *argv, VALUE self) {
27
+ char *name = NULL;
28
+ struct workbook *wb_ptr;
29
+ struct chartsheet *ptr;
30
+
31
+ Data_Get_Struct(self, struct chartsheet, ptr);
32
+
33
+ if (argc == 2) {
34
+ name = StringValueCStr(argv[1]);
35
+ }
36
+
37
+ rb_iv_set(self, "@workbook", argv[0]);
38
+
39
+ Data_Get_Struct(argv[0], struct workbook, wb_ptr);
40
+ ptr->chartsheet = workbook_add_chartsheet(wb_ptr->workbook, name);
41
+ if (!ptr->chartsheet)
42
+ rb_raise(eXlsxWriterError, "chartsheet was not created");
43
+ return self;
44
+ }
45
+
46
+ /* :nodoc: */
47
+ VALUE
48
+ chartsheet_release(VALUE self) {
49
+ struct chartsheet *ptr;
50
+ Data_Get_Struct(self, struct chartsheet, ptr);
51
+
52
+ chartsheet_free(ptr);
53
+ return self;
54
+ }
55
+
56
+ void
57
+ chartsheet_free(void *p) {
58
+ struct chartsheet *ptr = p;
59
+
60
+ if (ptr->chartsheet)
61
+ ptr->chartsheet = NULL;
62
+ }
63
+
64
+
65
+ /* call-seq: cs.activate -> self
66
+ *
67
+ * Set the chartsheet to be active on opening the workbook.
68
+ */
69
+ VALUE
70
+ chartsheet_activate_(VALUE self) {
71
+ LXW_NO_RESULT_CALL(chartsheet, activate);
72
+ return self;
73
+ }
74
+
75
+ /* call-seq: cs.chart = chart
76
+ *
77
+ * Set the chart chartsheet contains.
78
+ */
79
+ VALUE
80
+ chartsheet_set_chart_(VALUE self, VALUE chart) {
81
+ struct chart *chart_ptr;
82
+ Data_Get_Struct(chart, struct chart, chart_ptr);
83
+
84
+ LXW_ERR_RESULT_CALL(chartsheet, set_chart, chart_ptr->chart);
85
+ return self;
86
+ }
87
+
88
+ /* call-seq: cs.hide -> self
89
+ *
90
+ * Hide the chartsheet.
91
+ */
92
+ VALUE
93
+ chartsheet_hide_(VALUE self) {
94
+ LXW_NO_RESULT_CALL(chartsheet, hide);
95
+ return self;
96
+ }
97
+
98
+ /* call-seq: cs.paper=(type) -> type
99
+ *
100
+ * Sets the paper +type+ for printing. See {libxlsxwriter doc}[https://libxlsxwriter.github.io/worksheet_8h.html#a9f8af12017797b10c5ee68e04149032f] for options.
101
+ */
102
+ VALUE
103
+ chartsheet_set_paper_(VALUE self, VALUE paper_type) {
104
+ LXW_NO_RESULT_CALL(chartsheet, set_paper, NUM2INT(paper_type));
105
+ return self;
106
+ }
107
+
108
+ /* call-seq: cs.protect(password[, opts]) -> self
109
+ *
110
+ * Protects the worksheet elements from modification.
111
+ * See {libxlsxwriter doc}[https://libxlsxwriter.github.io/worksheet_8h.html#a1b49e135d4debcdb25941f2f40f04cb0]
112
+ * for options.
113
+ */
114
+ VALUE
115
+ chartsheet_protect_(int argc, VALUE *argv, VALUE self) {
116
+ rb_check_arity(argc, 0, 2);
117
+ struct _protect_options po = _extract_protect_options(argc, argv);
118
+ LXW_NO_RESULT_CALL(chartsheet, protect, po.password, (po.with_options ? &po.options : NULL));
119
+ return self;
120
+ }
121
+
122
+ /* call-seq: cs.set_fitst_sheet -> self
123
+ *
124
+ * Set the sheet to be the first visible in the sheets list (which is placed
125
+ * under the work area in Excel).
126
+ */
127
+ VALUE
128
+ chartsheet_set_first_sheet_(VALUE self) {
129
+ LXW_NO_RESULT_CALL(chartsheet, set_first_sheet);
130
+ return self;
131
+ }
132
+
133
+ /* call-seq: cs.set_footer(text[, opts])
134
+ *
135
+ * See Worksheet#set_header for params description.
136
+ */
137
+ VALUE
138
+ chartsheet_set_footer_(int argc, VALUE *argv, VALUE self) {
139
+ rb_check_arity(argc, 1, 2);
140
+ struct _header_options ho = _extract_header_options(argc, argv);
141
+ struct chartsheet *ptr;
142
+ Data_Get_Struct(self, struct chartsheet, ptr);
143
+ lxw_error err;
144
+ if (!ho.with_options) {
145
+ err = chartsheet_set_footer(ptr->chartsheet, ho.str);
146
+ } else {
147
+ err = chartsheet_set_footer_opt(ptr->chartsheet, ho.str, &ho.options);
148
+ }
149
+ handle_lxw_error(err);
150
+ return self;
151
+ }
152
+
153
+ /* call-seq: cs.select -> self
154
+ *
155
+ * Set the chartsheet to be selected on opening the workbook.
156
+ */
157
+ VALUE
158
+ chartsheet_select_(VALUE self) {
159
+ LXW_NO_RESULT_CALL(chartsheet, select);
160
+ return self;
161
+ }
162
+
163
+ /* call-seq: cs.set_header(text[, opts])
164
+ *
165
+ * See Worksheet#set_header for params description.
166
+ */
167
+ VALUE
168
+ chartsheet_set_header_(int argc, VALUE *argv, VALUE self) {
169
+ rb_check_arity(argc, 1, 2);
170
+ struct _header_options ho = _extract_header_options(argc, argv);
171
+ struct chartsheet *ptr;
172
+ Data_Get_Struct(self, struct chartsheet, ptr);
173
+ lxw_error err;
174
+ if (!ho.with_options) {
175
+ err = chartsheet_set_header(ptr->chartsheet, ho.str);
176
+ } else {
177
+ err = chartsheet_set_header_opt(ptr->chartsheet, ho.str, &ho.options);
178
+ }
179
+ handle_lxw_error(err);
180
+ return self;
181
+ }
182
+
183
+ /* call-seq: cs.set_landscape -> self
184
+ *
185
+ * Sets print orientation of the chartsheet to landscape.
186
+ */
187
+ VALUE
188
+ chartsheet_set_landscape_(VALUE self) {
189
+ LXW_NO_RESULT_CALL(chartsheet, set_landscape);
190
+ return self;
191
+ }
192
+
193
+ /* Sets the chartsheet margins (Numeric) for the printed page. */
194
+ VALUE
195
+ chartsheet_set_margins_(VALUE self, VALUE left, VALUE right, VALUE top, VALUE bottom) {
196
+ LXW_NO_RESULT_CALL(chartsheet, set_margins, NUM2DBL(left), NUM2DBL(right), NUM2DBL(top), NUM2DBL(bottom));
197
+ return self;
198
+ }
199
+
200
+ /* call-seq: cs.set_portrait -> self
201
+ *
202
+ * Sets print orientation of the chartsheet to portrait.
203
+ */
204
+ VALUE
205
+ chartsheet_set_portrait_(VALUE self) {
206
+ LXW_NO_RESULT_CALL(chartsheet, set_portrait);
207
+ return self;
208
+ }
209
+
210
+ /* call-seq: cs.tab_color=(color) -> color
211
+ *
212
+ * Set the tab color (from RGB integer).
213
+ *
214
+ * ws.tab_color = 0xF0F0F0
215
+ */
216
+ VALUE
217
+ chartsheet_set_tab_color_(VALUE self, VALUE color) {
218
+ LXW_NO_RESULT_CALL(chartsheet, set_tab_color, NUM2INT(color));
219
+ return color;
220
+ }
221
+
222
+ /* call-seq: cs.zoom=(zoom) -> zoom
223
+ *
224
+ * Sets the worksheet zoom factor in the range 10 <= +zoom+ <= 400.
225
+ */
226
+ VALUE
227
+ chartsheet_set_zoom_(VALUE self, VALUE val) {
228
+ LXW_NO_RESULT_CALL(chartsheet, set_zoom, NUM2INT(val));
229
+ return self;
230
+ }
231
+
232
+ /* call-seq: cs.horizontal_dpi -> int
233
+ *
234
+ * Returns the horizontal dpi.
235
+ */
236
+ VALUE
237
+ chartsheet_get_horizontal_dpi_(VALUE self) {
238
+ struct chartsheet *ptr;
239
+ Data_Get_Struct(self, struct chartsheet, ptr);
240
+ return INT2NUM(ptr->chartsheet->worksheet->horizontal_dpi);
241
+ }
242
+
243
+ /* call-seq: cs.horizontal_dpi=(dpi) -> dpi
244
+ *
245
+ * Sets the horizontal dpi.
246
+ */
247
+ VALUE
248
+ chartsheet_set_horizontal_dpi_(VALUE self, VALUE val) {
249
+ struct chartsheet *ptr;
250
+ Data_Get_Struct(self, struct chartsheet, ptr);
251
+ ptr->chartsheet->worksheet->horizontal_dpi = NUM2INT(val);
252
+ return val;
253
+ }
254
+
255
+ /* call-seq: cs.vertical_dpi -> int
256
+ *
257
+ * Returns the vertical dpi.
258
+ */
259
+ VALUE
260
+ chartsheet_get_vertical_dpi_(VALUE self) {
261
+ struct chartsheet *ptr;
262
+ Data_Get_Struct(self, struct chartsheet, ptr);
263
+ return INT2NUM(ptr->chartsheet->worksheet->vertical_dpi);
264
+ }
265
+
266
+ /* call-seq: cs.vertical_dpi=(dpi) -> dpi
267
+ *
268
+ * Sets the vertical dpi.
269
+ */
270
+ VALUE
271
+ chartsheet_set_vertical_dpi_(VALUE self, VALUE val) {
272
+ struct chartsheet *ptr;
273
+ Data_Get_Struct(self, struct chartsheet, ptr);
274
+ ptr->chartsheet->worksheet->vertical_dpi = NUM2INT(val);
275
+ return val;
276
+ }
277
+
278
+
279
+
280
+ void
281
+ init_xlsxwriter_chartsheet() {
282
+ /* Xlsx chartsheet */
283
+ cChartsheet = rb_define_class_under(mXlsxWriter, "Chartsheet", rb_cObject);
284
+
285
+ rb_define_alloc_func(cChartsheet, chartsheet_alloc);
286
+ rb_define_method(cChartsheet, "initialize", chartsheet_init, -1);
287
+ rb_define_method(cChartsheet, "free", chartsheet_release, 0);
288
+ rb_define_method(cChartsheet, "activate", chartsheet_activate_, 0);
289
+ rb_define_method(cChartsheet, "chart=", chartsheet_set_chart_, 1);
290
+ rb_define_method(cChartsheet, "hide", chartsheet_hide_, 0);
291
+ rb_define_method(cChartsheet, "paper=", chartsheet_set_paper_, 1);
292
+ rb_define_method(cChartsheet, "protect", chartsheet_protect_, -1);
293
+ rb_define_method(cChartsheet, "select", chartsheet_select_, 0);
294
+ rb_define_method(cChartsheet, "set_first_sheet", chartsheet_set_first_sheet_, 0);
295
+ rb_define_method(cChartsheet, "set_footer", chartsheet_set_footer_, -1);
296
+ rb_define_method(cChartsheet, "set_header", chartsheet_set_header_, -1);
297
+ rb_define_method(cChartsheet, "set_landscape", chartsheet_set_landscape_, 0);
298
+ rb_define_method(cChartsheet, "set_margins", chartsheet_set_margins_, 4);
299
+ rb_define_method(cChartsheet, "set_portrait", chartsheet_set_portrait_, 0);
300
+ rb_define_method(cChartsheet, "tab_color=", chartsheet_set_tab_color_, 1);
301
+ rb_define_method(cChartsheet, "zoom=", chartsheet_set_zoom_, 1);
302
+
303
+ rb_define_method(cChartsheet, "horizontal_dpi", chartsheet_get_horizontal_dpi_, 0);
304
+ rb_define_method(cChartsheet, "horizontal_dpi=", chartsheet_set_horizontal_dpi_, 1);
305
+ rb_define_method(cChartsheet, "vertical_dpi", chartsheet_get_vertical_dpi_, 0);
306
+ rb_define_method(cChartsheet, "vertical_dpi=", chartsheet_set_vertical_dpi_, 1);
307
+ }