// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef PRINTING_NUP_PARAMETERS_H_
#define PRINTING_NUP_PARAMETERS_H_

#include "base/component_export.h"

namespace printing {

class COMPONENT_EXPORT(PRINTING) NupParameters {
 public:
  // Callers should check `pages_per_sheet` values with IsSupported() first,
  // and only pass in supported values.
  NupParameters(int pages_per_sheet, bool is_source_landscape);

  // Whether or not the input `pages_per_sheet` is a supported N-up value.
  // Supported values are: 1 2 4 6 9 16
  static bool IsSupported(int pages_per_sheet);

  // Orientation of the to-be-generated N-up PDF document.
  bool landscape() const { return landscape_; }
  int num_pages_on_x_axis() const { return num_pages_on_x_axis_; }
  int num_pages_on_y_axis() const { return num_pages_on_y_axis_; }

 private:
  // Calculates the `num_pages_on_x_axis_`, `num_pages_on_y_axis_` and
  // `landscape_` based on the input.
  void SetParameters(int pages_per_sheet, bool is_source_landscape);

  int num_pages_on_x_axis_ = 1;
  int num_pages_on_y_axis_ = 1;
  bool landscape_ = false;
};

}  // namespace printing

#endif  // PRINTING_NUP_PARAMETERS_H_
