15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "printing/page_range.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <set>
84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace {
104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)const std::size_t kMaxNumberOfPages = 100000;
114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace printing {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* static */
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::vector<int> PageRange::GetPages(const PageRanges& ranges) {
174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // TODO(vitalybuka): crbug.com/95548 Remove this method as part fix.
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::set<int> pages;
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (unsigned i = 0; i < ranges.size(); ++i) {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const PageRange& range = ranges[i];
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Ranges are inclusive.
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for (int i = range.from; i <= range.to; ++i) {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      pages.insert(i);
244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      if (pages.size() >= kMaxNumberOfPages)
254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)        return std::vector<int>(pages.begin(), pages.end());
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return std::vector<int>(pages.begin(), pages.end());
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace printing
32