// 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 "printing/printing_export.h"

namespace printing {

class PRINTING_EXPORT NupParameters {
 public:
  NupParameters();

  // Whether or not the input |num_pages_per_sheet| is a supported N-up value.
  // Supported values are: 1 2 4 6 9 16
  static bool IsSupported(int num_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_; };

  // Calculates the |num_pages_on_x_axis_|, |num_pages_on_y_axis_| and
  // |landscape_| based on the input.  |is_source_landscape| is true if the
  // source document orientation is landscape.
  // Callers should check |num_pages_per_sheet| values with IsSupported() first,
  // and only pass in supported values.
  void SetParameters(int num_pages_per_sheet, bool is_source_landscape);

  // Turns off N-up mode by resetting |num_pages_on_x_axis| = 1,
  // |num_pages_on_y_axis| = 1, and |landscape_| = false
  void Clear();

 private:
  int num_pages_on_x_axis_;
  int num_pages_on_y_axis_;
  bool landscape_;
};

}  // namespace printing

#endif  // PRINTING_NUP_PARAMETERS_H_
