kmadej_fast_excel_fork 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 (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
+ }