123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- // 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 <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_
|