// Copyright (c) 2011 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_PAGE_RANGE_H_ #define PRINTING_PAGE_RANGE_H_ #include #include #include #include "base/component_export.h" namespace printing { struct PageRange; using PageRanges = std::vector; // 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::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_