printing_context_mojom_traits.h 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. // Copyright 2021 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef PRINTING_MOJOM_PRINTING_CONTEXT_MOJOM_TRAITS_H_
  5. #define PRINTING_MOJOM_PRINTING_CONTEXT_MOJOM_TRAITS_H_
  6. #include <string>
  7. #include "build/build_config.h"
  8. #include "printing/mojom/print.mojom.h"
  9. #include "printing/mojom/printing_context.mojom-shared.h"
  10. #include "printing/page_setup.h"
  11. #include "printing/print_settings.h"
  12. #include "ui/gfx/geometry/size.h"
  13. namespace mojo {
  14. template <>
  15. struct StructTraits<printing::mojom::PageMarginsDataView,
  16. printing::PageMargins> {
  17. static int32_t header(const printing::PageMargins& m) { return m.header; }
  18. static int32_t footer(const printing::PageMargins& m) { return m.footer; }
  19. static int32_t left(const printing::PageMargins& m) { return m.left; }
  20. static int32_t right(const printing::PageMargins& m) { return m.right; }
  21. static int32_t top(const printing::PageMargins& m) { return m.top; }
  22. static int32_t bottom(const printing::PageMargins& m) { return m.bottom; }
  23. static bool Read(printing::mojom::PageMarginsDataView data,
  24. printing::PageMargins* out);
  25. };
  26. template <>
  27. struct StructTraits<printing::mojom::PageSetupDataView, printing::PageSetup> {
  28. static const gfx::Size& physical_size(const printing::PageSetup& s) {
  29. return s.physical_size();
  30. }
  31. static const gfx::Rect& printable_area(const printing::PageSetup& s) {
  32. return s.printable_area();
  33. }
  34. static const gfx::Rect& overlay_area(const printing::PageSetup& s) {
  35. return s.overlay_area();
  36. }
  37. static const gfx::Rect& content_area(const printing::PageSetup& s) {
  38. return s.content_area();
  39. }
  40. static const printing::PageMargins& effective_margins(
  41. const printing::PageSetup& s) {
  42. return s.effective_margins();
  43. }
  44. static const printing::PageMargins& requested_margins(
  45. const printing::PageSetup& s) {
  46. return s.requested_margins();
  47. }
  48. static bool forced_margins(const printing::PageSetup& s) {
  49. return s.forced_margins();
  50. }
  51. static int32_t text_height(const printing::PageSetup& s) {
  52. return s.text_height();
  53. }
  54. static bool Read(printing::mojom::PageSetupDataView data,
  55. printing::PageSetup* out);
  56. };
  57. template <>
  58. struct StructTraits<printing::mojom::RequestedMediaDataView,
  59. printing::PrintSettings::RequestedMedia> {
  60. static const gfx::Size& size_microns(
  61. const printing::PrintSettings::RequestedMedia& r) {
  62. return r.size_microns;
  63. }
  64. static const std::string& vendor_id(
  65. const printing::PrintSettings::RequestedMedia& r) {
  66. return r.vendor_id;
  67. }
  68. static bool Read(printing::mojom::RequestedMediaDataView data,
  69. printing::PrintSettings::RequestedMedia* out);
  70. };
  71. template <>
  72. struct StructTraits<printing::mojom::PrintSettingsDataView,
  73. printing::PrintSettings> {
  74. static const printing::PageRanges& ranges(const printing::PrintSettings& s) {
  75. return s.ranges();
  76. }
  77. static bool selection_only(const printing::PrintSettings& s) {
  78. return s.selection_only();
  79. }
  80. static printing::mojom::MarginType margin_type(
  81. const printing::PrintSettings& s) {
  82. return s.margin_type();
  83. }
  84. static const std::u16string& title(const printing::PrintSettings& s) {
  85. return s.title();
  86. }
  87. static const std::u16string& url(const printing::PrintSettings& s) {
  88. return s.url();
  89. }
  90. static bool display_header_footer(const printing::PrintSettings& s) {
  91. return s.display_header_footer();
  92. }
  93. static bool should_print_backgrounds(const printing::PrintSettings& s) {
  94. return s.should_print_backgrounds();
  95. }
  96. static bool collate(const printing::PrintSettings& s) { return s.collate(); }
  97. static printing::mojom::ColorModel color(const printing::PrintSettings& s) {
  98. return s.color();
  99. }
  100. static int32_t copies(const printing::PrintSettings& s) { return s.copies(); }
  101. static printing::mojom::DuplexMode duplex_mode(
  102. const printing::PrintSettings& s) {
  103. return s.duplex_mode();
  104. }
  105. static const std::u16string& device_name(const printing::PrintSettings& s) {
  106. return s.device_name();
  107. }
  108. static const printing::PrintSettings::RequestedMedia& requested_media(
  109. const printing::PrintSettings& s) {
  110. return s.requested_media();
  111. }
  112. static const printing::PageSetup& page_setup_device_units(
  113. const printing::PrintSettings& s) {
  114. return s.page_setup_device_units();
  115. }
  116. static const gfx::Size& dpi(const printing::PrintSettings& s) {
  117. return s.dpi_size();
  118. }
  119. static double scale_factor(const printing::PrintSettings& s) {
  120. return s.scale_factor();
  121. }
  122. static bool rasterize_pdf(const printing::PrintSettings& s) {
  123. return s.rasterize_pdf();
  124. }
  125. static bool landscape(const printing::PrintSettings& s) {
  126. return s.landscape();
  127. }
  128. static bool supports_alpha_blend(const printing::PrintSettings& s) {
  129. return s.supports_alpha_blend();
  130. }
  131. #if BUILDFLAG(IS_WIN)
  132. static printing::mojom::PrinterLanguageType printer_language_type(
  133. const printing::PrintSettings& s) {
  134. return s.printer_language_type();
  135. }
  136. #endif // BUILDFLAG(IS_WIN)
  137. static bool is_modifiable(const printing::PrintSettings& s) {
  138. return s.is_modifiable();
  139. }
  140. static const printing::PageMargins& requested_custom_margins_in_points(
  141. const printing::PrintSettings& s) {
  142. return s.requested_custom_margins_in_points();
  143. }
  144. static int32_t pages_per_sheet(const printing::PrintSettings& s) {
  145. return s.pages_per_sheet();
  146. }
  147. #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
  148. static const printing::PrintSettings::AdvancedSettings& advanced_settings(
  149. const printing::PrintSettings& s) {
  150. return s.advanced_settings();
  151. }
  152. #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
  153. #if BUILDFLAG(IS_CHROMEOS)
  154. static bool send_user_info(const printing::PrintSettings& s) {
  155. return s.send_user_info();
  156. }
  157. static const std::string& username(const printing::PrintSettings& s) {
  158. return s.username();
  159. }
  160. static const std::string& pin_value(const printing::PrintSettings& s) {
  161. return s.pin_value();
  162. }
  163. #endif // BUILDFLAG(IS_CHROMEOS)
  164. static bool Read(printing::mojom::PrintSettingsDataView data,
  165. printing::PrintSettings* out);
  166. };
  167. } // namespace mojo
  168. #endif // PRINTING_MOJOM_PRINTING_CONTEXT_MOJOM_TRAITS_H_