kmadej_fast_excel_fork 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (119) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/.travis.yml +28 -0
  4. data/CHANGELOG.md +13 -0
  5. data/Gemfile +17 -0
  6. data/Gemfile.lock +70 -0
  7. data/Makefile +14 -0
  8. data/README.md +95 -0
  9. data/Rakefile +24 -0
  10. data/appveyor.yml +25 -0
  11. data/benchmarks/1k_rows.rb +59 -0
  12. data/benchmarks/20k_rows.rb +26 -0
  13. data/benchmarks/init.rb +59 -0
  14. data/benchmarks/memory.rb +49 -0
  15. data/examples/example.rb +42 -0
  16. data/examples/example_align.rb +23 -0
  17. data/examples/example_chart.rb +21 -0
  18. data/examples/example_colors.rb +37 -0
  19. data/examples/example_formula.rb +18 -0
  20. data/examples/example_image.rb +13 -0
  21. data/examples/example_styles.rb +27 -0
  22. data/examples/logo.png +0 -0
  23. data/extconf.rb +0 -0
  24. data/fast_excel.gemspec +20 -0
  25. data/lib/fast_excel.rb +600 -0
  26. data/lib/fast_excel/binding.rb +2819 -0
  27. data/lib/fast_excel/binding/chart.rb +2666 -0
  28. data/lib/fast_excel/binding/format.rb +1177 -0
  29. data/lib/fast_excel/binding/workbook.rb +338 -0
  30. data/lib/fast_excel/binding/worksheet.rb +1555 -0
  31. data/libxlsxwriter/.gitignore +49 -0
  32. data/libxlsxwriter/.indent.pro +125 -0
  33. data/libxlsxwriter/.travis.yml +25 -0
  34. data/libxlsxwriter/CONTRIBUTING.md +226 -0
  35. data/libxlsxwriter/Changes.txt +557 -0
  36. data/libxlsxwriter/LICENSE.txt +89 -0
  37. data/libxlsxwriter/Makefile +156 -0
  38. data/libxlsxwriter/Readme.md +78 -0
  39. data/libxlsxwriter/cocoapods/libxlsxwriter-umbrella.h +30 -0
  40. data/libxlsxwriter/cocoapods/libxlsxwriter.modulemap +7 -0
  41. data/libxlsxwriter/include/xlsxwriter.h +23 -0
  42. data/libxlsxwriter/include/xlsxwriter/app.h +79 -0
  43. data/libxlsxwriter/include/xlsxwriter/chart.h +3476 -0
  44. data/libxlsxwriter/include/xlsxwriter/common.h +372 -0
  45. data/libxlsxwriter/include/xlsxwriter/content_types.h +74 -0
  46. data/libxlsxwriter/include/xlsxwriter/core.h +51 -0
  47. data/libxlsxwriter/include/xlsxwriter/custom.h +52 -0
  48. data/libxlsxwriter/include/xlsxwriter/drawing.h +111 -0
  49. data/libxlsxwriter/include/xlsxwriter/format.h +1214 -0
  50. data/libxlsxwriter/include/xlsxwriter/hash_table.h +76 -0
  51. data/libxlsxwriter/include/xlsxwriter/packager.h +80 -0
  52. data/libxlsxwriter/include/xlsxwriter/relationships.h +77 -0
  53. data/libxlsxwriter/include/xlsxwriter/shared_strings.h +83 -0
  54. data/libxlsxwriter/include/xlsxwriter/styles.h +77 -0
  55. data/libxlsxwriter/include/xlsxwriter/theme.h +47 -0
  56. data/libxlsxwriter/include/xlsxwriter/third_party/ioapi.h +214 -0
  57. data/libxlsxwriter/include/xlsxwriter/third_party/queue.h +694 -0
  58. data/libxlsxwriter/include/xlsxwriter/third_party/tmpfileplus.h +53 -0
  59. data/libxlsxwriter/include/xlsxwriter/third_party/tree.h +801 -0
  60. data/libxlsxwriter/include/xlsxwriter/third_party/zip.h +375 -0
  61. data/libxlsxwriter/include/xlsxwriter/utility.h +166 -0
  62. data/libxlsxwriter/include/xlsxwriter/workbook.h +757 -0
  63. data/libxlsxwriter/include/xlsxwriter/worksheet.h +2641 -0
  64. data/libxlsxwriter/include/xlsxwriter/xmlwriter.h +178 -0
  65. data/libxlsxwriter/lib/.gitignore +0 -0
  66. data/libxlsxwriter/libxlsxwriter.podspec +47 -0
  67. data/libxlsxwriter/src/Makefile +130 -0
  68. data/libxlsxwriter/src/app.c +443 -0
  69. data/libxlsxwriter/src/chart.c +6346 -0
  70. data/libxlsxwriter/src/content_types.c +345 -0
  71. data/libxlsxwriter/src/core.c +293 -0
  72. data/libxlsxwriter/src/custom.c +224 -0
  73. data/libxlsxwriter/src/drawing.c +746 -0
  74. data/libxlsxwriter/src/format.c +729 -0
  75. data/libxlsxwriter/src/hash_table.c +223 -0
  76. data/libxlsxwriter/src/packager.c +948 -0
  77. data/libxlsxwriter/src/relationships.c +245 -0
  78. data/libxlsxwriter/src/shared_strings.c +266 -0
  79. data/libxlsxwriter/src/styles.c +1088 -0
  80. data/libxlsxwriter/src/theme.c +348 -0
  81. data/libxlsxwriter/src/utility.c +515 -0
  82. data/libxlsxwriter/src/workbook.c +1930 -0
  83. data/libxlsxwriter/src/worksheet.c +5022 -0
  84. data/libxlsxwriter/src/xmlwriter.c +355 -0
  85. data/libxlsxwriter/third_party/minizip/Makefile +44 -0
  86. data/libxlsxwriter/third_party/minizip/Makefile.am +45 -0
  87. data/libxlsxwriter/third_party/minizip/Makefile.orig +25 -0
  88. data/libxlsxwriter/third_party/minizip/MiniZip64_Changes.txt +6 -0
  89. data/libxlsxwriter/third_party/minizip/MiniZip64_info.txt +74 -0
  90. data/libxlsxwriter/third_party/minizip/README.txt +5 -0
  91. data/libxlsxwriter/third_party/minizip/configure.ac +32 -0
  92. data/libxlsxwriter/third_party/minizip/crypt.h +131 -0
  93. data/libxlsxwriter/third_party/minizip/ioapi.c +247 -0
  94. data/libxlsxwriter/third_party/minizip/ioapi.h +208 -0
  95. data/libxlsxwriter/third_party/minizip/iowin32.c +456 -0
  96. data/libxlsxwriter/third_party/minizip/iowin32.h +28 -0
  97. data/libxlsxwriter/third_party/minizip/make_vms.com +25 -0
  98. data/libxlsxwriter/third_party/minizip/miniunz.c +660 -0
  99. data/libxlsxwriter/third_party/minizip/miniunzip.1 +63 -0
  100. data/libxlsxwriter/third_party/minizip/minizip.1 +46 -0
  101. data/libxlsxwriter/third_party/minizip/minizip.c +520 -0
  102. data/libxlsxwriter/third_party/minizip/minizip.pc.in +12 -0
  103. data/libxlsxwriter/third_party/minizip/mztools.c +291 -0
  104. data/libxlsxwriter/third_party/minizip/mztools.h +37 -0
  105. data/libxlsxwriter/third_party/minizip/unzip.c +2125 -0
  106. data/libxlsxwriter/third_party/minizip/unzip.h +437 -0
  107. data/libxlsxwriter/third_party/minizip/zip.c +2007 -0
  108. data/libxlsxwriter/third_party/minizip/zip.h +367 -0
  109. data/libxlsxwriter/third_party/tmpfileplus/Makefile +42 -0
  110. data/libxlsxwriter/third_party/tmpfileplus/tmpfileplus.c +342 -0
  111. data/libxlsxwriter/third_party/tmpfileplus/tmpfileplus.h +53 -0
  112. data/libxlsxwriter/version.txt +1 -0
  113. data/test/date_test.rb +22 -0
  114. data/test/default_format_test.rb +19 -0
  115. data/test/format_test.rb +171 -0
  116. data/test/test_helper.rb +52 -0
  117. data/test/tmpfile_test.rb +23 -0
  118. data/test/worksheet_test.rb +86 -0
  119. metadata +182 -0
@@ -0,0 +1,729 @@
1
+ /*****************************************************************************
2
+ * format - A library for creating Excel XLSX format files.
3
+ *
4
+ * Used in conjunction with the libxlsxwriter library.
5
+ *
6
+ * Copyright 2014-2017, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
7
+ *
8
+ */
9
+
10
+ #include "xlsxwriter/xmlwriter.h"
11
+ #include "xlsxwriter/format.h"
12
+ #include "xlsxwriter/utility.h"
13
+
14
+ /*****************************************************************************
15
+ *
16
+ * Private functions.
17
+ *
18
+ ****************************************************************************/
19
+
20
+ /*
21
+ * Create a new format object.
22
+ */
23
+ lxw_format *
24
+ lxw_format_new()
25
+ {
26
+ lxw_format *format = calloc(1, sizeof(lxw_format));
27
+ GOTO_LABEL_ON_MEM_ERROR(format, mem_error);
28
+
29
+ format->xf_format_indices = NULL;
30
+
31
+ format->xf_index = LXW_PROPERTY_UNSET;
32
+ format->dxf_index = LXW_PROPERTY_UNSET;
33
+
34
+ format->font_name[0] = '\0';
35
+ format->font_scheme[0] = '\0';
36
+ format->num_format[0] = '\0';
37
+ format->num_format_index = 0;
38
+ format->font_index = 0;
39
+ format->has_font = LXW_FALSE;
40
+ format->has_dxf_font = LXW_FALSE;
41
+ format->font_size = 11;
42
+ format->bold = LXW_FALSE;
43
+ format->italic = LXW_FALSE;
44
+ format->font_color = LXW_COLOR_UNSET;
45
+ format->underline = LXW_FALSE;
46
+ format->font_strikeout = LXW_FALSE;
47
+ format->font_outline = LXW_FALSE;
48
+ format->font_shadow = LXW_FALSE;
49
+ format->font_script = LXW_FALSE;
50
+ format->font_family = LXW_DEFAULT_FONT_FAMILY;
51
+ format->font_charset = LXW_FALSE;
52
+ format->font_condense = LXW_FALSE;
53
+ format->font_extend = LXW_FALSE;
54
+ format->theme = LXW_FALSE;
55
+ format->hyperlink = LXW_FALSE;
56
+
57
+ format->hidden = LXW_FALSE;
58
+ format->locked = LXW_TRUE;
59
+
60
+ format->text_h_align = LXW_ALIGN_NONE;
61
+ format->text_wrap = LXW_FALSE;
62
+ format->text_v_align = LXW_ALIGN_NONE;
63
+ format->text_justlast = LXW_FALSE;
64
+ format->rotation = 0;
65
+
66
+ format->fg_color = LXW_COLOR_UNSET;
67
+ format->bg_color = LXW_COLOR_UNSET;
68
+ format->pattern = LXW_PATTERN_NONE;
69
+ format->has_fill = LXW_FALSE;
70
+ format->has_dxf_fill = LXW_FALSE;
71
+ format->fill_index = 0;
72
+ format->fill_count = 0;
73
+
74
+ format->border_index = 0;
75
+ format->has_border = LXW_FALSE;
76
+ format->has_dxf_border = LXW_FALSE;
77
+ format->border_count = 0;
78
+
79
+ format->bottom = LXW_BORDER_NONE;
80
+ format->left = LXW_BORDER_NONE;
81
+ format->right = LXW_BORDER_NONE;
82
+ format->top = LXW_BORDER_NONE;
83
+ format->diag_border = LXW_BORDER_NONE;
84
+ format->diag_type = LXW_BORDER_NONE;
85
+ format->bottom_color = LXW_COLOR_UNSET;
86
+ format->left_color = LXW_COLOR_UNSET;
87
+ format->right_color = LXW_COLOR_UNSET;
88
+ format->top_color = LXW_COLOR_UNSET;
89
+ format->diag_color = LXW_COLOR_UNSET;
90
+
91
+ format->indent = 0;
92
+ format->shrink = LXW_FALSE;
93
+ format->merge_range = LXW_FALSE;
94
+ format->reading_order = 0;
95
+ format->just_distrib = LXW_FALSE;
96
+ format->color_indexed = LXW_FALSE;
97
+ format->font_only = LXW_FALSE;
98
+
99
+ return format;
100
+
101
+ mem_error:
102
+ lxw_format_free(format);
103
+ return NULL;
104
+ }
105
+
106
+ /*
107
+ * Free a format object.
108
+ */
109
+ void
110
+ lxw_format_free(lxw_format *format)
111
+ {
112
+ if (!format)
113
+ return;
114
+
115
+ free(format);
116
+ format = NULL;
117
+ }
118
+
119
+ /*
120
+ * Check a user input color.
121
+ */
122
+ lxw_color_t
123
+ lxw_format_check_color(lxw_color_t color)
124
+ {
125
+ if (color == LXW_COLOR_UNSET)
126
+ return color;
127
+ else
128
+ return color & LXW_COLOR_MASK;
129
+ }
130
+
131
+ /*
132
+ * Check a user input border.
133
+ */
134
+ STATIC uint8_t
135
+ _check_border(uint8_t border)
136
+ {
137
+ if (border >= LXW_BORDER_THIN && border <= LXW_BORDER_SLANT_DASH_DOT)
138
+ return border;
139
+ else
140
+ return LXW_BORDER_NONE;
141
+ }
142
+
143
+ /*****************************************************************************
144
+ *
145
+ * Public functions.
146
+ *
147
+ ****************************************************************************/
148
+
149
+ /*
150
+ * Returns a format struct suitable for hashing as a lookup key. This is
151
+ * mainly a memcpy with any pointer members set to NULL.
152
+ */
153
+ STATIC lxw_format *
154
+ _get_format_key(lxw_format *self)
155
+ {
156
+ lxw_format *key = calloc(1, sizeof(lxw_format));
157
+ GOTO_LABEL_ON_MEM_ERROR(key, mem_error);
158
+
159
+ memcpy(key, self, sizeof(lxw_format));
160
+
161
+ /* Set pointer members to NULL since they aren't part of the comparison. */
162
+ key->xf_format_indices = NULL;
163
+ key->num_xf_formats = NULL;
164
+ key->list_pointers.stqe_next = NULL;
165
+
166
+ return key;
167
+
168
+ mem_error:
169
+ return NULL;
170
+ }
171
+
172
+ /*
173
+ * Returns a font struct suitable for hashing as a lookup key.
174
+ */
175
+ lxw_font *
176
+ lxw_format_get_font_key(lxw_format *self)
177
+ {
178
+ lxw_font *key = calloc(1, sizeof(lxw_font));
179
+ GOTO_LABEL_ON_MEM_ERROR(key, mem_error);
180
+
181
+ LXW_FORMAT_FIELD_COPY(key->font_name, self->font_name);
182
+ key->font_size = self->font_size;
183
+ key->bold = self->bold;
184
+ key->italic = self->italic;
185
+ key->font_color = self->font_color;
186
+ key->underline = self->underline;
187
+ key->font_strikeout = self->font_strikeout;
188
+ key->font_outline = self->font_outline;
189
+ key->font_shadow = self->font_shadow;
190
+ key->font_script = self->font_script;
191
+ key->font_family = self->font_family;
192
+ key->font_charset = self->font_charset;
193
+ key->font_condense = self->font_condense;
194
+ key->font_extend = self->font_extend;
195
+
196
+ return key;
197
+
198
+ mem_error:
199
+ return NULL;
200
+ }
201
+
202
+ /*
203
+ * Returns a border struct suitable for hashing as a lookup key.
204
+ */
205
+ lxw_border *
206
+ lxw_format_get_border_key(lxw_format *self)
207
+ {
208
+ lxw_border *key = calloc(1, sizeof(lxw_border));
209
+ GOTO_LABEL_ON_MEM_ERROR(key, mem_error);
210
+
211
+ key->bottom = self->bottom;
212
+ key->left = self->left;
213
+ key->right = self->right;
214
+ key->top = self->top;
215
+ key->diag_border = self->diag_border;
216
+ key->diag_type = self->diag_type;
217
+ key->bottom_color = self->bottom_color;
218
+ key->left_color = self->left_color;
219
+ key->right_color = self->right_color;
220
+ key->top_color = self->top_color;
221
+ key->diag_color = self->diag_color;
222
+
223
+ return key;
224
+
225
+ mem_error:
226
+ return NULL;
227
+ }
228
+
229
+ /*
230
+ * Returns a pattern fill struct suitable for hashing as a lookup key.
231
+ */
232
+ lxw_fill *
233
+ lxw_format_get_fill_key(lxw_format *self)
234
+ {
235
+ lxw_fill *key = calloc(1, sizeof(lxw_fill));
236
+ GOTO_LABEL_ON_MEM_ERROR(key, mem_error);
237
+
238
+ key->fg_color = self->fg_color;
239
+ key->bg_color = self->bg_color;
240
+ key->pattern = self->pattern;
241
+
242
+ return key;
243
+
244
+ mem_error:
245
+ return NULL;
246
+ }
247
+
248
+ /*
249
+ * Returns the XF index number used by Excel to identify a format.
250
+ */
251
+ int32_t
252
+ lxw_format_get_xf_index(lxw_format *self)
253
+ {
254
+ lxw_format *format_key;
255
+ lxw_format *existing_format;
256
+ lxw_hash_element *hash_element;
257
+ lxw_hash_table *formats_hash_table = self->xf_format_indices;
258
+ int32_t index;
259
+
260
+ /* Note: The formats_hash_table/xf_format_indices contains the unique and
261
+ * more importantly the *used* formats in the workbook.
262
+ */
263
+
264
+ /* Format already has an index number so return it. */
265
+ if (self->xf_index != LXW_PROPERTY_UNSET) {
266
+ return self->xf_index;
267
+ }
268
+
269
+ /* Otherwise, the format doesn't have an index number so we assign one.
270
+ * First generate a unique key to identify the format in the hash table.
271
+ */
272
+ format_key = _get_format_key(self);
273
+
274
+ /* Return the default format index if the key generation failed. */
275
+ if (!format_key)
276
+ return 0;
277
+
278
+ /* Look up the format in the hash table. */
279
+ hash_element =
280
+ lxw_hash_key_exists(formats_hash_table, format_key,
281
+ sizeof(lxw_format));
282
+
283
+ if (hash_element) {
284
+ /* Format matches existing format with an index. */
285
+ free(format_key);
286
+ existing_format = hash_element->value;
287
+ return existing_format->xf_index;
288
+ }
289
+ else {
290
+ /* New format requiring an index. */
291
+ index = formats_hash_table->unique_count;
292
+ self->xf_index = index;
293
+ lxw_insert_hash_element(formats_hash_table, format_key, self,
294
+ sizeof(lxw_format));
295
+ return index;
296
+ }
297
+ }
298
+
299
+ /*
300
+ * Set the font_name property.
301
+ */
302
+ void
303
+ format_set_font_name(lxw_format *self, const char *font_name)
304
+ {
305
+ LXW_FORMAT_FIELD_COPY(self->font_name, font_name);
306
+ }
307
+
308
+ /*
309
+ * Set the font_size property.
310
+ */
311
+ void
312
+ format_set_font_size(lxw_format *self, uint16_t size)
313
+ {
314
+
315
+ if (size >= LXW_MIN_FONT_SIZE && size <= LXW_MAX_FONT_SIZE)
316
+ self->font_size = size;
317
+ if (size < LXW_MIN_FONT_SIZE) self->font_size = 0;
318
+ }
319
+
320
+ /*
321
+ * Set the font_color property.
322
+ */
323
+ void
324
+ format_set_font_color(lxw_format *self, lxw_color_t color)
325
+ {
326
+ self->font_color = lxw_format_check_color(color);
327
+ }
328
+
329
+ /*
330
+ * Set the bold property.
331
+ */
332
+ void
333
+ format_set_bold(lxw_format *self)
334
+ {
335
+ self->bold = LXW_TRUE;
336
+ }
337
+
338
+ /*
339
+ * Set the italic property.
340
+ */
341
+
342
+ void
343
+ format_set_italic(lxw_format *self)
344
+ {
345
+ self->italic = LXW_TRUE;
346
+ }
347
+
348
+ /*
349
+ * Set the underline property.
350
+ */
351
+ void
352
+ format_set_underline(lxw_format *self, uint8_t style)
353
+ {
354
+ if (style >= LXW_UNDERLINE_SINGLE
355
+ && style <= LXW_UNDERLINE_DOUBLE_ACCOUNTING)
356
+ self->underline = style;
357
+ }
358
+
359
+ /*
360
+ * Set the font_strikeout property.
361
+ */
362
+ void
363
+ format_set_font_strikeout(lxw_format *self)
364
+ {
365
+ self->font_strikeout = LXW_TRUE;
366
+ }
367
+
368
+ /*
369
+ * Set the font_script property.
370
+ */
371
+ void
372
+ format_set_font_script(lxw_format *self, uint8_t style)
373
+ {
374
+ if (style >= LXW_FONT_SUPERSCRIPT && style <= LXW_FONT_SUBSCRIPT)
375
+ self->font_script = style;
376
+ }
377
+
378
+ /*
379
+ * Set the font_outline property.
380
+ */
381
+ void
382
+ format_set_font_outline(lxw_format *self)
383
+ {
384
+ self->font_outline = LXW_TRUE;
385
+ }
386
+
387
+ /*
388
+ * Set the font_shadow property.
389
+ */
390
+ void
391
+ format_set_font_shadow(lxw_format *self)
392
+ {
393
+ self->font_shadow = LXW_TRUE;
394
+ }
395
+
396
+ /*
397
+ * Set the num_format property.
398
+ */
399
+ void
400
+ format_set_num_format(lxw_format *self, const char *num_format)
401
+ {
402
+ LXW_FORMAT_FIELD_COPY(self->num_format, num_format);
403
+ }
404
+
405
+ /*
406
+ * Set the unlocked property.
407
+ */
408
+ void
409
+ format_set_unlocked(lxw_format *self)
410
+ {
411
+ self->locked = LXW_FALSE;
412
+ }
413
+
414
+ /*
415
+ * Set the hidden property.
416
+ */
417
+ void
418
+ format_set_hidden(lxw_format *self)
419
+ {
420
+ self->hidden = LXW_TRUE;
421
+ }
422
+
423
+ /*
424
+ * Set the align property.
425
+ */
426
+ void
427
+ format_set_align(lxw_format *self, uint8_t value)
428
+ {
429
+ if (value >= LXW_ALIGN_LEFT && value <= LXW_ALIGN_DISTRIBUTED) {
430
+ self->text_h_align = value;
431
+ }
432
+
433
+ if (value >= LXW_ALIGN_VERTICAL_TOP
434
+ && value <= LXW_ALIGN_VERTICAL_DISTRIBUTED) {
435
+ self->text_v_align = value;
436
+ }
437
+ }
438
+
439
+ /*
440
+ * Set the text_wrap property.
441
+ */
442
+ void
443
+ format_set_text_wrap(lxw_format *self)
444
+ {
445
+ self->text_wrap = LXW_TRUE;
446
+ }
447
+
448
+ /*
449
+ * Set the rotation property.
450
+ */
451
+ void
452
+ format_set_rotation(lxw_format *self, int16_t angle)
453
+ {
454
+ /* Convert user angle to Excel angle. */
455
+ if (angle == 270) {
456
+ self->rotation = 255;
457
+ }
458
+ else if (angle >= -90 || angle <= 90) {
459
+ if (angle < 0)
460
+ angle = -angle + 90;
461
+
462
+ self->rotation = angle;
463
+ }
464
+ else {
465
+ LXW_WARN("Rotation rotation outside range: -90 <= angle <= 90.");
466
+ self->rotation = 0;
467
+ }
468
+ }
469
+
470
+ /*
471
+ * Set the indent property.
472
+ */
473
+ void
474
+ format_set_indent(lxw_format *self, uint8_t value)
475
+ {
476
+ self->indent = value;
477
+ }
478
+
479
+ /*
480
+ * Set the shrink property.
481
+ */
482
+ void
483
+ format_set_shrink(lxw_format *self)
484
+ {
485
+ self->shrink = LXW_TRUE;
486
+ }
487
+
488
+ /*
489
+ * Set the text_justlast property.
490
+ */
491
+ void
492
+ format_set_text_justlast(lxw_format *self)
493
+ {
494
+ self->text_justlast = LXW_TRUE;
495
+ }
496
+
497
+ /*
498
+ * Set the pattern property.
499
+ */
500
+ void
501
+ format_set_pattern(lxw_format *self, uint8_t value)
502
+ {
503
+ self->pattern = value;
504
+ }
505
+
506
+ /*
507
+ * Set the bg_color property.
508
+ */
509
+ void
510
+ format_set_bg_color(lxw_format *self, lxw_color_t color)
511
+ {
512
+ self->bg_color = lxw_format_check_color(color);
513
+ }
514
+
515
+ /*
516
+ * Set the fg_color property.
517
+ */
518
+ void
519
+ format_set_fg_color(lxw_format *self, lxw_color_t color)
520
+ {
521
+ self->fg_color = lxw_format_check_color(color);
522
+ }
523
+
524
+ /*
525
+ * Set the border property.
526
+ */
527
+ void
528
+ format_set_border(lxw_format *self, uint8_t style)
529
+ {
530
+ style = _check_border(style);
531
+ self->bottom = style;
532
+ self->top = style;
533
+ self->left = style;
534
+ self->right = style;
535
+ }
536
+
537
+ /*
538
+ * Set the border_color property.
539
+ */
540
+ void
541
+ format_set_border_color(lxw_format *self, lxw_color_t color)
542
+ {
543
+ color = lxw_format_check_color(color);
544
+ self->bottom_color = color;
545
+ self->top_color = color;
546
+ self->left_color = color;
547
+ self->right_color = color;
548
+ }
549
+
550
+ /*
551
+ * Set the bottom property.
552
+ */
553
+ void
554
+ format_set_bottom(lxw_format *self, uint8_t style)
555
+ {
556
+ self->bottom = _check_border(style);
557
+ }
558
+
559
+ /*
560
+ * Set the bottom_color property.
561
+ */
562
+ void
563
+ format_set_bottom_color(lxw_format *self, lxw_color_t color)
564
+ {
565
+ self->bottom_color = lxw_format_check_color(color);
566
+ }
567
+
568
+ /*
569
+ * Set the left property.
570
+ */
571
+ void
572
+ format_set_left(lxw_format *self, uint8_t style)
573
+ {
574
+ self->left = _check_border(style);
575
+ }
576
+
577
+ /*
578
+ * Set the left_color property.
579
+ */
580
+ void
581
+ format_set_left_color(lxw_format *self, lxw_color_t color)
582
+ {
583
+ self->left_color = lxw_format_check_color(color);
584
+ }
585
+
586
+ /*
587
+ * Set the right property.
588
+ */
589
+ void
590
+ format_set_right(lxw_format *self, uint8_t style)
591
+ {
592
+ self->right = _check_border(style);
593
+ }
594
+
595
+ /*
596
+ * Set the right_color property.
597
+ */
598
+ void
599
+ format_set_right_color(lxw_format *self, lxw_color_t color)
600
+ {
601
+ self->right_color = lxw_format_check_color(color);
602
+ }
603
+
604
+ /*
605
+ * Set the top property.
606
+ */
607
+ void
608
+ format_set_top(lxw_format *self, uint8_t style)
609
+ {
610
+ self->top = _check_border(style);
611
+ }
612
+
613
+ /*
614
+ * Set the top_color property.
615
+ */
616
+ void
617
+ format_set_top_color(lxw_format *self, lxw_color_t color)
618
+ {
619
+ self->top_color = lxw_format_check_color(color);
620
+ }
621
+
622
+ /*
623
+ * Set the diag_type property.
624
+ */
625
+ void
626
+ format_set_diag_type(lxw_format *self, uint8_t type)
627
+ {
628
+ if (type >= LXW_DIAGONAL_BORDER_UP && type <= LXW_DIAGONAL_BORDER_UP_DOWN)
629
+ self->diag_type = type;
630
+ }
631
+
632
+ /*
633
+ * Set the diag_color property.
634
+ */
635
+ void
636
+ format_set_diag_color(lxw_format *self, lxw_color_t color)
637
+ {
638
+ self->diag_color = lxw_format_check_color(color);
639
+ }
640
+
641
+ /*
642
+ * Set the diag_border property.
643
+ */
644
+ void
645
+ format_set_diag_border(lxw_format *self, uint8_t style)
646
+ {
647
+ self->diag_border = style;
648
+ }
649
+
650
+ /*
651
+ * Set the num_format_index property.
652
+ */
653
+ void
654
+ format_set_num_format_index(lxw_format *self, uint8_t value)
655
+ {
656
+ self->num_format_index = value;
657
+ }
658
+
659
+ /*
660
+ * Set the valign property.
661
+ */
662
+ void
663
+ format_set_valign(lxw_format *self, uint8_t value)
664
+ {
665
+ self->text_v_align = value;
666
+ }
667
+
668
+ /*
669
+ * Set the reading_order property.
670
+ */
671
+ void
672
+ format_set_reading_order(lxw_format *self, uint8_t value)
673
+ {
674
+ self->reading_order = value;
675
+ }
676
+
677
+ /*
678
+ * Set the font_family property.
679
+ */
680
+ void
681
+ format_set_font_family(lxw_format *self, uint8_t value)
682
+ {
683
+ self->font_family = value;
684
+ }
685
+
686
+ /*
687
+ * Set the font_charset property.
688
+ */
689
+ void
690
+ format_set_font_charset(lxw_format *self, uint8_t value)
691
+ {
692
+ self->font_charset = value;
693
+ }
694
+
695
+ /*
696
+ * Set the font_scheme property.
697
+ */
698
+ void
699
+ format_set_font_scheme(lxw_format *self, const char *font_scheme)
700
+ {
701
+ LXW_FORMAT_FIELD_COPY(self->font_scheme, font_scheme);
702
+ }
703
+
704
+ /*
705
+ * Set the font_condense property.
706
+ */
707
+ void
708
+ format_set_font_condense(lxw_format *self)
709
+ {
710
+ self->font_condense = LXW_TRUE;
711
+ }
712
+
713
+ /*
714
+ * Set the font_extend property.
715
+ */
716
+ void
717
+ format_set_font_extend(lxw_format *self)
718
+ {
719
+ self->font_extend = LXW_TRUE;
720
+ }
721
+
722
+ /*
723
+ * Set the theme property.
724
+ */
725
+ void
726
+ format_set_theme(lxw_format *self, uint8_t value)
727
+ {
728
+ self->theme = value;
729
+ }