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

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: Add a comment to the new query stopping code. Created 6 years, 6 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 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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698