Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(735)

Side by Side Diff: chrome/browser/printing/page_number.cc

Issue 149212: Move printing related stuff to the root printing project from the browser pro... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/printing/page_number.h"
6
7 #include <limits>
8
9 #include "base/logging.h"
10 #include "chrome/browser/printing/print_settings.h"
11
12 namespace printing {
13
14 PageNumber::PageNumber(const PrintSettings& settings, int document_page_count) {
15 Init(settings, document_page_count);
16 }
17
18 PageNumber::PageNumber()
19 : ranges_(NULL),
20 page_number_(-1),
21 page_range_index_(-1),
22 document_page_count_(0) {
23 }
24
25 void PageNumber::operator=(const PageNumber& other) {
26 ranges_ = other.ranges_;
27 page_number_ = other.page_number_;
28 page_range_index_ = other.page_range_index_;
29 document_page_count_ = other.document_page_count_;
30 }
31
32 void PageNumber::Init(const PrintSettings& settings, int document_page_count) {
33 DCHECK(document_page_count);
34 ranges_ = settings.ranges.empty() ? NULL : &settings.ranges;
35 document_page_count_ = document_page_count;
36 if (ranges_) {
37 page_range_index_ = 0;
38 page_number_ = (*ranges_)[0].from;
39 } else {
40 if (document_page_count) {
41 page_number_ = 0;
42 } else {
43 page_number_ = -1;
44 }
45 page_range_index_ = -1;
46 }
47 }
48
49 int PageNumber::operator++() {
50 if (!ranges_) {
51 // Switch to next page.
52 if (++page_number_ == document_page_count_) {
53 // Finished.
54 *this = npos();
55 }
56 } else {
57 // Switch to next page.
58 ++page_number_;
59 // Page ranges are inclusive.
60 if (page_number_ > (*ranges_)[page_range_index_].to) {
61 DCHECK(ranges_->size() <= static_cast<size_t>(
62 std::numeric_limits<int>::max()));
63 if (++page_range_index_ == static_cast<int>(ranges_->size())) {
64 // Finished.
65 *this = npos();
66 } else {
67 page_number_ = (*ranges_)[page_range_index_].from;
68 }
69 }
70 }
71 return ToInt();
72 }
73
74 bool PageNumber::operator==(const PageNumber& other) const {
75 return page_number_ == other.page_number_ &&
76 page_range_index_ == other.page_range_index_;
77 }
78 bool PageNumber::operator!=(const PageNumber& other) const {
79 return page_number_ != other.page_number_ ||
80 page_range_index_ != other.page_range_index_;
81 }
82
83 } // namespace printing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698