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

#ifndef PRINTING_PAGE_RANGE_H_
#define PRINTING_PAGE_RANGE_H_

#include <stdint.h>

#include <limits>
#include <vector>

#include "base/component_export.h"

namespace printing {

struct PageRange;

using PageRanges = std::vector<PageRange>;

// Print range is inclusive. To select one page, set from == to.
struct COMPONENT_EXPORT(PRINTING) PageRange {
  // Any value above maximum practical page count (enforced by PageNumber)
  // would work, but we chose something that works even where the page
  // numbers are 1-based (i.e. can be increased by one without overflow).
  static constexpr uint32_t kMaxPage = std::numeric_limits<uint32_t>::max() - 1;

  uint32_t from;
  uint32_t to;

  bool operator<(const PageRange& rhs) const {
    return from < rhs.from || (from == rhs.from && to < rhs.to);
  }
  bool operator==(const PageRange& rhs) const {
    return from == rhs.from && to == rhs.to;
  }

  // Ensures entries come in monotonically increasing order and do not
  // overlap.
  static void Normalize(PageRanges& ranges);
};

}  // namespace printing

#endif  // PRINTING_PAGE_RANGE_H_
