Upload upstream chromium 73.0.3683.0
[platform/framework/web/chromium-efl.git] / printing / nup_parameters.cc
1 // Copyright 2018 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
5 #include "printing/nup_parameters.h"
6
7 #include <algorithm>
8 #include <cmath>
9
10 #include "base/logging.h"
11
12 namespace printing {
13
14 NupParameters::NupParameters() {
15   Clear();
16 }
17
18 void NupParameters::Clear() {
19   landscape_ = false;
20   num_pages_on_x_axis_ = 1;
21   num_pages_on_y_axis_ = 1;
22 }
23
24 // static
25 bool NupParameters::IsSupported(int pages_per_sheet) {
26   // Supports N-up: 1 2 4 6 9 16
27
28   return pages_per_sheet == 1 || pages_per_sheet == 2 || pages_per_sheet == 4 ||
29          pages_per_sheet == 6 || pages_per_sheet == 9 || pages_per_sheet == 16;
30 }
31
32 void NupParameters::SetParameters(int pages_per_sheet,
33                                   bool is_source_landscape) {
34   DCHECK(IsSupported(pages_per_sheet));
35
36   switch (pages_per_sheet) {
37     case 1:
38       num_pages_on_x_axis_ = 1;
39       num_pages_on_y_axis_ = 1;
40       break;
41     case 2:
42       if (!is_source_landscape) {
43         num_pages_on_x_axis_ = 2;
44         num_pages_on_y_axis_ = 1;
45         landscape_ = true;
46       } else {
47         num_pages_on_x_axis_ = 1;
48         num_pages_on_y_axis_ = 2;
49       }
50       break;
51     case 6:
52       if (!is_source_landscape) {
53         num_pages_on_x_axis_ = 3;
54         num_pages_on_y_axis_ = 2;
55         landscape_ = true;
56       } else {
57         num_pages_on_x_axis_ = 2;
58         num_pages_on_y_axis_ = 3;
59       }
60       break;
61     case 4:
62     case 9:
63     case 16:
64       num_pages_on_x_axis_ = std::sqrt(pages_per_sheet);
65       num_pages_on_y_axis_ = std::sqrt(pages_per_sheet);
66       if (is_source_landscape)
67         landscape_ = true;
68       break;
69     default:
70       NOTREACHED();
71   }
72 }
73
74 }  // namespace printing