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 13 namespace pp { 14 15 class 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. 19 class 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