packager.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /*
  2. * libxlsxwriter
  3. *
  4. * Copyright 2014-2018, John McNamara, [email protected]. See LICENSE.txt.
  5. *
  6. * packager - A libxlsxwriter library for creating Excel XLSX packager files.
  7. *
  8. */
  9. #ifndef __LXW_PACKAGER_H__
  10. #define __LXW_PACKAGER_H__
  11. #include <stdint.h>
  12. #ifdef USE_SYSTEM_MINIZIP
  13. #include "minizip/zip.h"
  14. #else
  15. #include "third_party/zip.h"
  16. #endif
  17. #include "common.h"
  18. #include "workbook.h"
  19. #include "worksheet.h"
  20. #include "shared_strings.h"
  21. #include "app.h"
  22. #include "core.h"
  23. #include "custom.h"
  24. #include "theme.h"
  25. #include "styles.h"
  26. #include "format.h"
  27. #include "content_types.h"
  28. #include "relationships.h"
  29. #define LXW_ZIP_BUFFER_SIZE (16384)
  30. /* If zlib returns Z_ERRNO then errno is set and we can trap that. Otherwise
  31. * return a default libxlsxwriter error. */
  32. #define RETURN_ON_ZIP_ERROR(err, default_err) \
  33. if (err == Z_ERRNO) \
  34. return LXW_ERROR_ZIP_FILE_OPERATION; \
  35. else \
  36. return default_err;
  37. /*
  38. * Struct to represent a packager.
  39. */
  40. typedef struct lxw_packager {
  41. FILE *file;
  42. lxw_workbook *workbook;
  43. size_t buffer_size;
  44. zipFile zipfile;
  45. zip_fileinfo zipfile_info;
  46. char *filename;
  47. char *buffer;
  48. char *tmpdir;
  49. uint16_t chart_count;
  50. uint16_t drawing_count;
  51. } lxw_packager;
  52. /* *INDENT-OFF* */
  53. #ifdef __cplusplus
  54. extern "C" {
  55. #endif
  56. /* *INDENT-ON* */
  57. lxw_packager *lxw_packager_new(const char *filename, char *tmpdir);
  58. void lxw_packager_free(lxw_packager *packager);
  59. lxw_error lxw_create_package(lxw_packager *self);
  60. /* Declarations required for unit testing. */
  61. #ifdef TESTING
  62. #endif /* TESTING */
  63. /* *INDENT-OFF* */
  64. #ifdef __cplusplus
  65. }
  66. #endif
  67. /* *INDENT-ON* */
  68. #endif /* __LXW_PACKAGER_H__ */