1// Copyright (c) 2012 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#ifndef PPAPI_CPP_DEV_PRINTING_DEV_H_
6#define PPAPI_CPP_DEV_PRINTING_DEV_H_
7
8#include "ppapi/c/dev/ppp_printing_dev.h"
9#include "ppapi/cpp/completion_callback.h"
10#include "ppapi/cpp/instance_handle.h"
11#include "ppapi/cpp/resource.h"
12
13namespace pp {
14
15class Instance;
16
17// You would typically use this either via inheritance on your instance or
18// by composition: see find_private.h for an example.
19class Printing_Dev : public Resource {
20 public:
21  // The instance parameter must outlive this class.
22  explicit Printing_Dev(Instance* instance);
23  virtual ~Printing_Dev();
24
25  // PPP_Printing_Dev functions exposed as virtual functions for you to
26  // override.
27  virtual uint32_t QuerySupportedPrintOutputFormats() = 0;
28  virtual int32_t PrintBegin(const PP_PrintSettings_Dev& print_settings) = 0;
29  virtual Resource PrintPages(const PP_PrintPageNumberRange_Dev* page_ranges,
30                              uint32_t page_range_count) = 0;
31  virtual void PrintEnd() = 0;
32  virtual bool IsPrintScalingDisabled() = 0;
33
34  // PPB_Printing_Dev functions.
35  // Returns true if the browser supports the required PPB_Printing_Dev
36  // interface.
37  static bool IsAvailable();
38
39  // Get the default print settings and store them in the output of |callback|.
40  int32_t GetDefaultPrintSettings(
41      const CompletionCallbackWithOutput<PP_PrintSettings_Dev>& callback) const;
42
43 private:
44  InstanceHandle associated_instance_;
45};
46
47}  // namespace pp
48
49#endif  // PPAPI_CPP_DEV_PRINTING_DEV_H_
50