xlsxwriter 0.2.1.pre → 0.2.1.pre.2

Sign up to get free protection for your applications and to get access to all the features.
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
+ }