OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/cloud_devices/common/printer_description.h" | 5 #include "components/cloud_devices/common/printer_description.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/json/json_reader.h" | 9 #include "base/json/json_reader.h" |
10 #include "base/json/json_writer.h" | 10 #include "base/json/json_writer.h" |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 const int32 kInchToUm = 25400; | 155 const int32 kInchToUm = 25400; |
156 const int32 kMmToUm = 1000; | 156 const int32 kMmToUm = 1000; |
157 const int32 kSizeTrasholdUm = 1000; | 157 const int32 kSizeTrasholdUm = 1000; |
158 | 158 |
159 #define MAP_CLOUD_PRINT_MEDIA_TYPE(type, width, height, unit_um) \ | 159 #define MAP_CLOUD_PRINT_MEDIA_TYPE(type, width, height, unit_um) \ |
160 { \ | 160 { \ |
161 type, #type, static_cast<int>(width* unit_um + 0.5), \ | 161 type, #type, static_cast<int>(width* unit_um + 0.5), \ |
162 static_cast<int>(height* unit_um + 0.5) \ | 162 static_cast<int>(height* unit_um + 0.5) \ |
163 } | 163 } |
164 | 164 |
165 const struct MadiaDefinition { | 165 const struct MediaDefinition { |
166 MediaType id; | 166 MediaType id; |
167 const char* const json_name; | 167 const char* const json_name; |
168 int width_um; | 168 int width_um; |
169 int height_um; | 169 int height_um; |
170 } kMediaDefinitions[] = { | 170 } kMediaDefinitions[] = { |
171 {CUSTOM_MEDIA, "CUSTOM", 0, 0}, | 171 {CUSTOM_MEDIA, "CUSTOM", 0, 0}, |
172 MAP_CLOUD_PRINT_MEDIA_TYPE(NA_INDEX_3X5, 3, 5, kInchToUm), | 172 MAP_CLOUD_PRINT_MEDIA_TYPE(NA_INDEX_3X5, 3, 5, kInchToUm), |
173 MAP_CLOUD_PRINT_MEDIA_TYPE(NA_PERSONAL, 3.625f, 6.5f, kInchToUm), | 173 MAP_CLOUD_PRINT_MEDIA_TYPE(NA_PERSONAL, 3.625f, 6.5f, kInchToUm), |
174 MAP_CLOUD_PRINT_MEDIA_TYPE(NA_MONARCH, 3.875f, 7.5f, kInchToUm), | 174 MAP_CLOUD_PRINT_MEDIA_TYPE(NA_MONARCH, 3.875f, 7.5f, kInchToUm), |
175 MAP_CLOUD_PRINT_MEDIA_TYPE(NA_NUMBER_9, 3.875f, 8.875f, kInchToUm), | 175 MAP_CLOUD_PRINT_MEDIA_TYPE(NA_NUMBER_9, 3.875f, 8.875f, kInchToUm), |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
328 MAP_CLOUD_PRINT_MEDIA_TYPE(JPN_KAKU2, 240, 332, kMmToUm), | 328 MAP_CLOUD_PRINT_MEDIA_TYPE(JPN_KAKU2, 240, 332, kMmToUm), |
329 MAP_CLOUD_PRINT_MEDIA_TYPE(OM_SMALL_PHOTO, 100, 150, kMmToUm), | 329 MAP_CLOUD_PRINT_MEDIA_TYPE(OM_SMALL_PHOTO, 100, 150, kMmToUm), |
330 MAP_CLOUD_PRINT_MEDIA_TYPE(OM_ITALIAN, 110, 230, kMmToUm), | 330 MAP_CLOUD_PRINT_MEDIA_TYPE(OM_ITALIAN, 110, 230, kMmToUm), |
331 MAP_CLOUD_PRINT_MEDIA_TYPE(OM_POSTFIX, 114, 229, kMmToUm), | 331 MAP_CLOUD_PRINT_MEDIA_TYPE(OM_POSTFIX, 114, 229, kMmToUm), |
332 MAP_CLOUD_PRINT_MEDIA_TYPE(OM_LARGE_PHOTO, 200, 300, kMmToUm), | 332 MAP_CLOUD_PRINT_MEDIA_TYPE(OM_LARGE_PHOTO, 200, 300, kMmToUm), |
333 MAP_CLOUD_PRINT_MEDIA_TYPE(OM_FOLIO, 210, 330, kMmToUm), | 333 MAP_CLOUD_PRINT_MEDIA_TYPE(OM_FOLIO, 210, 330, kMmToUm), |
334 MAP_CLOUD_PRINT_MEDIA_TYPE(OM_FOLIO_SP, 215, 315, kMmToUm), | 334 MAP_CLOUD_PRINT_MEDIA_TYPE(OM_FOLIO_SP, 215, 315, kMmToUm), |
335 MAP_CLOUD_PRINT_MEDIA_TYPE(OM_INVITE, 220, 220, kMmToUm)}; | 335 MAP_CLOUD_PRINT_MEDIA_TYPE(OM_INVITE, 220, 220, kMmToUm)}; |
336 #undef MAP_CLOUD_PRINT_MEDIA_TYPE | 336 #undef MAP_CLOUD_PRINT_MEDIA_TYPE |
337 | 337 |
338 const MadiaDefinition* FindMediaBySize(int32 width_um, int32 height_um) { | 338 const MediaDefinition& FindMediaByType(MediaType type) { |
339 const MadiaDefinition* result = NULL; | 339 for (size_t i = 0; i < arraysize(kMediaDefinitions); ++i) { |
| 340 if (kMediaDefinitions[i].id == type) |
| 341 return kMediaDefinitions[i]; |
| 342 } |
| 343 NOTREACHED(); |
| 344 return kMediaDefinitions[0]; |
| 345 } |
| 346 |
| 347 const MediaDefinition* FindMediaBySize(int32 width_um, int32 height_um) { |
| 348 const MediaDefinition* result = NULL; |
340 for (size_t i = 0; i < arraysize(kMediaDefinitions); ++i) { | 349 for (size_t i = 0; i < arraysize(kMediaDefinitions); ++i) { |
341 int32 diff = std::max(std::abs(width_um - kMediaDefinitions[i].width_um), | 350 int32 diff = std::max(std::abs(width_um - kMediaDefinitions[i].width_um), |
342 std::abs(height_um - kMediaDefinitions[i].height_um)); | 351 std::abs(height_um - kMediaDefinitions[i].height_um)); |
343 if (diff < kSizeTrasholdUm) | 352 if (diff < kSizeTrasholdUm) |
344 result = &kMediaDefinitions[i]; | 353 result = &kMediaDefinitions[i]; |
345 } | 354 } |
346 return result; | 355 return result; |
347 } | 356 } |
348 | 357 |
349 template <class T, class IdType> | 358 template <class T, class IdType> |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
425 } | 434 } |
426 | 435 |
427 bool Dpi::operator==(const Dpi& other) const { | 436 bool Dpi::operator==(const Dpi& other) const { |
428 return horizontal == other.horizontal && vertical == other.vertical; | 437 return horizontal == other.horizontal && vertical == other.vertical; |
429 } | 438 } |
430 | 439 |
431 Media::Media() | 440 Media::Media() |
432 : type(CUSTOM_MEDIA), width_um(0), height_um(0), is_continuous_feed(false) { | 441 : type(CUSTOM_MEDIA), width_um(0), height_um(0), is_continuous_feed(false) { |
433 } | 442 } |
434 | 443 |
| 444 Media::Media(MediaType type) |
| 445 : type(type), |
| 446 width_um(0), |
| 447 height_um(0), |
| 448 is_continuous_feed(false) { |
| 449 const MediaDefinition& media = FindMediaByType(type); |
| 450 width_um = media.width_um; |
| 451 height_um = media.height_um; |
| 452 is_continuous_feed = width_um <= 0 || height_um <= 0; |
| 453 } |
| 454 |
435 Media::Media(MediaType type, int32 width_um, int32 height_um) | 455 Media::Media(MediaType type, int32 width_um, int32 height_um) |
436 : type(type), | 456 : type(type), |
437 width_um(width_um), | 457 width_um(width_um), |
438 height_um(height_um), | 458 height_um(height_um), |
439 is_continuous_feed(width_um <= 0 || height_um <= 0) { | 459 is_continuous_feed(width_um <= 0 || height_um <= 0) { |
440 } | 460 } |
441 | 461 |
442 Media::Media(const std::string& custom_display_name, | 462 Media::Media(const std::string& custom_display_name, |
443 int32 width_um, | 463 int32 width_um, |
444 int32 height_um) | 464 int32 height_um) |
445 : type(CUSTOM_MEDIA), | 465 : type(CUSTOM_MEDIA), |
446 width_um(width_um), | 466 width_um(width_um), |
447 height_um(height_um), | 467 height_um(height_um), |
448 is_continuous_feed(width_um <= 0 || height_um <= 0), | 468 is_continuous_feed(width_um <= 0 || height_um <= 0), |
449 custom_display_name(custom_display_name) { | 469 custom_display_name(custom_display_name) { |
450 } | 470 } |
451 | 471 |
452 bool Media::MatchBySize() { | 472 bool Media::MatchBySize() { |
453 const MadiaDefinition* media = FindMediaBySize(width_um, height_um); | 473 const MediaDefinition* media = FindMediaBySize(width_um, height_um); |
454 if (!media) | 474 if (!media) |
455 return false; | 475 return false; |
456 type = media->id; | 476 type = media->id; |
457 custom_display_name.clear(); | 477 custom_display_name.clear(); |
458 return true; | 478 return true; |
459 } | 479 } |
460 | 480 |
461 bool Media::IsValid() const { | 481 bool Media::IsValid() const { |
462 if (is_continuous_feed) { | 482 if (is_continuous_feed) { |
463 if (width_um <= 0 && height_um <= 0) | 483 if (width_um <= 0 && height_um <= 0) |
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
808 template class TicketItem<Margins, MarginsTraits>; | 828 template class TicketItem<Margins, MarginsTraits>; |
809 template class TicketItem<Dpi, DpiTraits>; | 829 template class TicketItem<Dpi, DpiTraits>; |
810 template class TicketItem<FitToPageType, FitToPageTraits>; | 830 template class TicketItem<FitToPageType, FitToPageTraits>; |
811 template class TicketItem<Media, MediaTraits>; | 831 template class TicketItem<Media, MediaTraits>; |
812 template class TicketItem<int32, CopiesTraits>; | 832 template class TicketItem<int32, CopiesTraits>; |
813 template class TicketItem<PageRange, PageRangeTraits>; | 833 template class TicketItem<PageRange, PageRangeTraits>; |
814 template class TicketItem<bool, CollateTraits>; | 834 template class TicketItem<bool, CollateTraits>; |
815 template class TicketItem<bool, ReverseTraits>; | 835 template class TicketItem<bool, ReverseTraits>; |
816 | 836 |
817 } // namespace cloud_devices | 837 } // namespace cloud_devices |
OLD | NEW |