12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- // 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_NUMBER_H_
- #define PRINTING_PAGE_NUMBER_H_
- #include <ostream>
- #include <vector>
- #include "base/memory/raw_ptr.h"
- #include "printing/page_range.h"
- namespace printing {
- // Represents a page series using the array of page ranges.
- class COMPONENT_EXPORT(PRINTING) PageNumber {
- public:
- // Initializes the page to the first page in the ranges or 0.
- PageNumber(const PageRanges& ranges, uint32_t document_page_count);
- PageNumber();
- PageNumber(const PageNumber& other);
- PageNumber& operator=(const PageNumber& other);
- // Initializes the page to the first page in the ranges or 0.
- // Initializes to npos if the ranges is empty and document_page_count is 0.
- void Init(const PageRanges& ranges, uint32_t document_page_count);
- // Converts to a page numbers.
- uint32_t ToUint() const { return page_number_; }
- // Calculates the next page in the series.
- uint32_t operator++();
- // Returns an instance that represents the end of a series.
- static const PageNumber npos() { return PageNumber(); }
- // Equality operator. Only the current page number is verified so that
- // "page != PageNumber::npos()" works.
- bool operator==(const PageNumber& other) const;
- bool operator!=(const PageNumber& other) const;
- static std::vector<uint32_t> GetPages(PageRanges ranges,
- uint32_t document_page_count);
- private:
- // The page range to follow.
- raw_ptr<const PageRanges> ranges_;
- // The next page to be printed. `kInvalidPageIndex` when not printing.
- uint32_t page_number_;
- // The next page to be printed. `kInvalidPageIndex` when not used. Valid only
- // if document()->settings().range.empty() is false.
- uint32_t page_range_index_;
- // Number of expected pages in the document. Used when ranges_ is NULL.
- uint32_t document_page_count_;
- };
- // Debug output support.
- template <class E, class T>
- inline typename std::basic_ostream<E, T>& operator<<(
- typename std::basic_ostream<E, T>& ss,
- const PageNumber& page) {
- return ss << page.ToUint();
- }
- } // namespace printing
- #endif // PRINTING_PAGE_NUMBER_H_
|