diff options
author | sverrir@google.com <sverrir@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-07 21:31:39 +0000 |
---|---|---|
committer | sverrir@google.com <sverrir@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-07 21:31:39 +0000 |
commit | 8ff1d42631e79e842669dc3051d91ed7db80f1dc (patch) | |
tree | 55c1987549e982bfbf60a33fad3b60b5113d7864 /printing/page_number.h | |
parent | 395f9295b3e370746846dbe6073a0d43ab7e4af5 (diff) | |
download | chromium_src-8ff1d42631e79e842669dc3051d91ed7db80f1dc.zip chromium_src-8ff1d42631e79e842669dc3051d91ed7db80f1dc.tar.gz chromium_src-8ff1d42631e79e842669dc3051d91ed7db80f1dc.tar.bz2 |
Move printing related stuff to the root printing project from the browser project. This simplifies further refactoring and eases understanding of the printing part of Chrome.
Also renamed win_printing_context to printing_context_win (correct naming convention) and added stub implementations for _linux and mac.
Now all but one file is compiling on all platforms.
TEST=none (no functional change).
BUG=none
Review URL: http://codereview.chromium.org/149212
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20086 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'printing/page_number.h')
-rw-r--r-- | printing/page_number.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/printing/page_number.h b/printing/page_number.h new file mode 100644 index 0000000..528a41d --- /dev/null +++ b/printing/page_number.h @@ -0,0 +1,73 @@ +// Copyright (c) 2006-2008 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 "printing/page_range.h" + +namespace printing { + +class PrintSettings; + +// Represents a page series following the array of page ranges defined in a +// PrintSettings. +class PageNumber { + public: + // Initializes the page to the first page in the settings's range or 0. + PageNumber(const PrintSettings& settings, int document_page_count); + + PageNumber(); + + void operator=(const PageNumber& other); + + // Initializes the page to the first page in the setting's range or 0. It + // initialize to npos if the range is empty and document_page_count is 0. + void Init(const PrintSettings& settings, int document_page_count); + + // Converts to a page numbers. + int ToInt() const { + return page_number_; + } + + // Calculates the next page in the serie. + int operator++(); + + // Returns an instance that represents the end of a serie. + 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; + + private: + // The page range to follow. + const PageRanges* ranges_; + + // The next page to be printed. -1 when not printing. + int page_number_; + + // The next page to be printed. -1 when not used. Valid only if + // document()->settings().range.empty() is false. + int page_range_index_; + + // Number of expected pages in the document. Used when ranges_ is NULL. + int 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.ToInt(); +} + +} // namespace printing + +#endif // PRINTING_PAGE_NUMBER_H_ |