1 // Copyright 2018 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "printing/nup_parameters.h"
10 #include "base/check.h"
11 #include "base/notreached.h"
15 NupParameters::NupParameters(int pages_per_sheet, bool is_source_landscape) {
16 SetParameters(pages_per_sheet, is_source_landscape);
20 bool NupParameters::IsSupported(int pages_per_sheet) {
21 // Supports N-up: 1 2 4 6 9 16
23 return pages_per_sheet == 1 || pages_per_sheet == 2 || pages_per_sheet == 4 ||
24 pages_per_sheet == 6 || pages_per_sheet == 9 || pages_per_sheet == 16;
27 void NupParameters::SetParameters(int pages_per_sheet,
28 bool is_source_landscape) {
29 DCHECK(IsSupported(pages_per_sheet));
31 switch (pages_per_sheet) {
33 num_pages_on_x_axis_ = 1;
34 num_pages_on_y_axis_ = 1;
37 if (!is_source_landscape) {
38 num_pages_on_x_axis_ = 2;
39 num_pages_on_y_axis_ = 1;
42 num_pages_on_x_axis_ = 1;
43 num_pages_on_y_axis_ = 2;
47 if (!is_source_landscape) {
48 num_pages_on_x_axis_ = 3;
49 num_pages_on_y_axis_ = 2;
52 num_pages_on_x_axis_ = 2;
53 num_pages_on_y_axis_ = 3;
59 num_pages_on_x_axis_ = std::sqrt(pages_per_sheet);
60 num_pages_on_y_axis_ = std::sqrt(pages_per_sheet);
61 if (is_source_landscape)
69 } // namespace printing