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 return NULL; | |
Vitaly Buka (NO REVIEWS)
2014/05/22 01:11:21
NOTREACHED here
Aleksey Shlyapnikov
2014/05/22 03:51:18
Done.
| |
344 } | |
345 | |
346 const MediaDefinition* FindMediaBySize(int32 width_um, int32 height_um) { | |
347 const MediaDefinition* result = NULL; | |
340 for (size_t i = 0; i < arraysize(kMediaDefinitions); ++i) { | 348 for (size_t i = 0; i < arraysize(kMediaDefinitions); ++i) { |
341 int32 diff = std::max(std::abs(width_um - kMediaDefinitions[i].width_um), | 349 int32 diff = std::max(std::abs(width_um - kMediaDefinitions[i].width_um), |
342 std::abs(height_um - kMediaDefinitions[i].height_um)); | 350 std::abs(height_um - kMediaDefinitions[i].height_um)); |
343 if (diff < kSizeTrasholdUm) | 351 if (diff < kSizeTrasholdUm) |
344 result = &kMediaDefinitions[i]; | 352 result = &kMediaDefinitions[i]; |
345 } | 353 } |
346 return result; | 354 return result; |
347 } | 355 } |
348 | 356 |
349 template <class T, class IdType> | 357 template <class T, class IdType> |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
425 } | 433 } |
426 | 434 |
427 bool Dpi::operator==(const Dpi& other) const { | 435 bool Dpi::operator==(const Dpi& other) const { |
428 return horizontal == other.horizontal && vertical == other.vertical; | 436 return horizontal == other.horizontal && vertical == other.vertical; |
429 } | 437 } |
430 | 438 |
431 Media::Media() | 439 Media::Media() |
432 : type(CUSTOM_MEDIA), width_um(0), height_um(0), is_continuous_feed(false) { | 440 : type(CUSTOM_MEDIA), width_um(0), height_um(0), is_continuous_feed(false) { |
433 } | 441 } |
434 | 442 |
443 Media::Media(MediaType type) | |
444 : type(type), | |
445 width_um(0), | |
Vitaly Buka (NO REVIEWS)
2014/05/22 01:11:21
just call MatchByType() here
Aleksey Shlyapnikov
2014/05/22 03:51:18
Done.
| |
446 height_um(0), | |
447 is_continuous_feed(false) { | |
448 } | |
449 | |
435 Media::Media(MediaType type, int32 width_um, int32 height_um) | 450 Media::Media(MediaType type, int32 width_um, int32 height_um) |
436 : type(type), | 451 : type(type), |
437 width_um(width_um), | 452 width_um(width_um), |
438 height_um(height_um), | 453 height_um(height_um), |
439 is_continuous_feed(width_um <= 0 || height_um <= 0) { | 454 is_continuous_feed(width_um <= 0 || height_um <= 0) { |
440 } | 455 } |
441 | 456 |
442 Media::Media(const std::string& custom_display_name, | 457 Media::Media(const std::string& custom_display_name, |
443 int32 width_um, | 458 int32 width_um, |
444 int32 height_um) | 459 int32 height_um) |
445 : type(CUSTOM_MEDIA), | 460 : type(CUSTOM_MEDIA), |
446 width_um(width_um), | 461 width_um(width_um), |
447 height_um(height_um), | 462 height_um(height_um), |
448 is_continuous_feed(width_um <= 0 || height_um <= 0), | 463 is_continuous_feed(width_um <= 0 || height_um <= 0), |
449 custom_display_name(custom_display_name) { | 464 custom_display_name(custom_display_name) { |
450 } | 465 } |
451 | 466 |
467 bool Media::MatchByType() { | |
468 const MediaDefinition* media = FindMediaByType(type); | |
469 if (!media) | |
470 return false; | |
471 width_um = media->width_um; | |
472 height_um = media->height_um; | |
473 is_continuous_feed = width_um <= 0 || height_um <= 0; | |
474 custom_display_name.clear(); | |
475 return true; | |
476 } | |
477 | |
452 bool Media::MatchBySize() { | 478 bool Media::MatchBySize() { |
453 const MadiaDefinition* media = FindMediaBySize(width_um, height_um); | 479 const MediaDefinition* media = FindMediaBySize(width_um, height_um); |
454 if (!media) | 480 if (!media) |
455 return false; | 481 return false; |
456 type = media->id; | 482 type = media->id; |
457 custom_display_name.clear(); | 483 custom_display_name.clear(); |
458 return true; | 484 return true; |
459 } | 485 } |
460 | 486 |
461 bool Media::IsValid() const { | 487 bool Media::IsValid() const { |
462 if (is_continuous_feed) { | 488 if (is_continuous_feed) { |
463 if (width_um <= 0 && height_um <= 0) | 489 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>; | 834 template class TicketItem<Margins, MarginsTraits>; |
809 template class TicketItem<Dpi, DpiTraits>; | 835 template class TicketItem<Dpi, DpiTraits>; |
810 template class TicketItem<FitToPageType, FitToPageTraits>; | 836 template class TicketItem<FitToPageType, FitToPageTraits>; |
811 template class TicketItem<Media, MediaTraits>; | 837 template class TicketItem<Media, MediaTraits>; |
812 template class TicketItem<int32, CopiesTraits>; | 838 template class TicketItem<int32, CopiesTraits>; |
813 template class TicketItem<PageRange, PageRangeTraits>; | 839 template class TicketItem<PageRange, PageRangeTraits>; |
814 template class TicketItem<bool, CollateTraits>; | 840 template class TicketItem<bool, CollateTraits>; |
815 template class TicketItem<bool, ReverseTraits>; | 841 template class TicketItem<bool, ReverseTraits>; |
816 | 842 |
817 } // namespace cloud_devices | 843 } // namespace cloud_devices |
OLD | NEW |