Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(118)

Side by Side Diff: components/cloud_devices/common/printer_description.cc

Issue 294923005: Add media size capability to PDF printer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Retrieve PDF printer capabilites via the same API as for any other local printer. Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698