format_impl.hpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #pragma once
  2. #include <cstddef>
  3. #include <xlnt/styles/alignment.hpp>
  4. #include <xlnt/styles/border.hpp>
  5. #include <xlnt/styles/fill.hpp>
  6. #include <xlnt/styles/font.hpp>
  7. #include <xlnt/styles/number_format.hpp>
  8. #include <xlnt/styles/protection.hpp>
  9. #include <xlnt/utils/optional.hpp>
  10. namespace xlnt {
  11. class alignment;
  12. class border;
  13. class fill;
  14. class font;
  15. class number_format;
  16. class protection;
  17. namespace detail {
  18. struct stylesheet;
  19. struct format_impl
  20. {
  21. stylesheet *parent;
  22. std::size_t id;
  23. optional<std::size_t> alignment_id;
  24. optional<bool> alignment_applied;
  25. optional<std::size_t> border_id;
  26. optional<bool> border_applied;
  27. optional<std::size_t> fill_id;
  28. optional<bool> fill_applied;
  29. optional<std::size_t> font_id;
  30. optional<bool> font_applied;
  31. optional<std::size_t> number_format_id;
  32. optional<bool> number_format_applied;
  33. optional<std::size_t> protection_id;
  34. optional<bool> protection_applied;
  35. bool pivot_button_ = false;
  36. bool quote_prefix_ = false;
  37. optional<std::string> style;
  38. std::size_t references = 0;
  39. XLNT_API friend bool operator==(const format_impl &left, const format_impl &right)
  40. {
  41. return left.parent == right.parent
  42. && left.alignment_id == right.alignment_id
  43. && left.alignment_applied == right.alignment_applied
  44. && left.border_id == right.border_id
  45. && left.border_applied == right.border_applied
  46. && left.fill_id == right.fill_id
  47. && left.fill_applied == right.fill_applied
  48. && left.font_id == right.font_id
  49. && left.font_applied == right.font_applied
  50. && left.number_format_id == right.number_format_id
  51. && left.number_format_applied == right.number_format_applied
  52. && left.protection_id == right.protection_id
  53. && left.protection_applied == right.protection_applied
  54. && left.pivot_button_ == right.pivot_button_
  55. && left.quote_prefix_ == right.quote_prefix_
  56. && left.style == right.style;
  57. }
  58. };
  59. } // namespace detail
  60. } // namespace xlnt