drawing.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. /*
  2. * libxlsxwriter
  3. *
  4. * Copyright 2014-2018, John McNamara, [email protected]. See LICENSE.txt.
  5. *
  6. * drawing - A libxlsxwriter library for creating Excel XLSX drawing files.
  7. *
  8. */
  9. #ifndef __LXW_DRAWING_H__
  10. #define __LXW_DRAWING_H__
  11. #include <stdint.h>
  12. #include "common.h"
  13. STAILQ_HEAD(lxw_drawing_objects, lxw_drawing_object);
  14. enum lxw_drawing_types {
  15. LXW_DRAWING_NONE = 0,
  16. LXW_DRAWING_IMAGE,
  17. LXW_DRAWING_CHART,
  18. LXW_DRAWING_SHAPE
  19. };
  20. enum lxw_anchor_types {
  21. LXW_ANCHOR_TYPE_NONE = 0,
  22. LXW_ANCHOR_TYPE_IMAGE,
  23. LXW_ANCHOR_TYPE_CHART
  24. };
  25. enum lxw_anchor_edit_types {
  26. LXW_ANCHOR_EDIT_AS_NONE = 0,
  27. LXW_ANCHOR_EDIT_AS_RELATIVE,
  28. LXW_ANCHOR_EDIT_AS_ONE_CELL,
  29. LXW_ANCHOR_EDIT_AS_ABSOLUTE
  30. };
  31. enum image_types {
  32. LXW_IMAGE_UNKNOWN = 0,
  33. LXW_IMAGE_PNG,
  34. LXW_IMAGE_JPEG,
  35. LXW_IMAGE_BMP
  36. };
  37. /* Coordinates used in a drawing object. */
  38. typedef struct lxw_drawing_coords {
  39. uint32_t col;
  40. uint32_t row;
  41. double col_offset;
  42. double row_offset;
  43. } lxw_drawing_coords;
  44. /* Object to represent the properties of a drawing. */
  45. typedef struct lxw_drawing_object {
  46. uint8_t anchor_type;
  47. uint8_t edit_as;
  48. struct lxw_drawing_coords from;
  49. struct lxw_drawing_coords to;
  50. uint32_t col_absolute;
  51. uint32_t row_absolute;
  52. uint32_t width;
  53. uint32_t height;
  54. uint8_t shape;
  55. char *description;
  56. char *url;
  57. char *tip;
  58. STAILQ_ENTRY (lxw_drawing_object) list_pointers;
  59. } lxw_drawing_object;
  60. /*
  61. * Struct to represent a collection of drawings.
  62. */
  63. typedef struct lxw_drawing {
  64. FILE *file;
  65. uint8_t embedded;
  66. struct lxw_drawing_objects *drawing_objects;
  67. } lxw_drawing;
  68. /* *INDENT-OFF* */
  69. #ifdef __cplusplus
  70. extern "C" {
  71. #endif
  72. /* *INDENT-ON* */
  73. lxw_drawing *lxw_drawing_new();
  74. void lxw_drawing_free(lxw_drawing *drawing);
  75. void lxw_drawing_assemble_xml_file(lxw_drawing *self);
  76. void lxw_free_drawing_object(struct lxw_drawing_object *drawing_object);
  77. void lxw_add_drawing_object(lxw_drawing *drawing,
  78. lxw_drawing_object *drawing_object);
  79. /* Declarations required for unit testing. */
  80. #ifdef TESTING
  81. STATIC void _drawing_xml_declaration(lxw_drawing *self);
  82. #endif /* TESTING */
  83. /* *INDENT-OFF* */
  84. #ifdef __cplusplus
  85. }
  86. #endif
  87. /* *INDENT-ON* */
  88. #endif /* __LXW_DRAWING_H__ */