1// Copyright 2014 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 PRINTING_PRINTING_CONTEXT_LINUX_H_ 6#define PRINTING_PRINTING_CONTEXT_LINUX_H_ 7 8#include <string> 9 10#include "printing/printing_context.h" 11 12namespace base { 13class DictionaryValue; 14} 15 16namespace printing { 17 18class MetafilePlayer; 19class PrintDialogGtkInterface; 20 21// PrintingContext with optional native UI for print dialog and pdf_paper_size. 22class PRINTING_EXPORT PrintingContextLinux : public PrintingContext { 23 public: 24 explicit PrintingContextLinux(Delegate* delegate); 25 virtual ~PrintingContextLinux(); 26 27 // Sets the function that creates the print dialog. 28 static void SetCreatePrintDialogFunction( 29 PrintDialogGtkInterface* (*create_dialog_func)( 30 PrintingContextLinux* context)); 31 32 // Sets the function that returns pdf paper size through the native API. 33 static void SetPdfPaperSizeFunction( 34 gfx::Size (*get_pdf_paper_size)(PrintingContextLinux* context)); 35 36 // Prints the document contained in |metafile|. 37 void PrintDocument(const MetafilePlayer& metafile); 38 39 // PrintingContext implementation. 40 virtual void AskUserForSettings( 41 int max_pages, 42 bool has_selection, 43 const PrintSettingsCallback& callback) OVERRIDE; 44 virtual gfx::Size GetPdfPaperSizeDeviceUnits() OVERRIDE; 45 virtual Result UseDefaultSettings() OVERRIDE; 46 virtual Result UpdatePrinterSettings(bool external_preview, 47 bool show_system_dialog) OVERRIDE; 48 virtual Result InitWithSettings(const PrintSettings& settings) OVERRIDE; 49 virtual Result NewDocument(const base::string16& document_name) OVERRIDE; 50 virtual Result NewPage() OVERRIDE; 51 virtual Result PageDone() OVERRIDE; 52 virtual Result DocumentDone() OVERRIDE; 53 virtual void Cancel() OVERRIDE; 54 virtual void ReleaseContext() OVERRIDE; 55 virtual gfx::NativeDrawingContext context() const OVERRIDE; 56 57 private: 58 base::string16 document_name_; 59 PrintDialogGtkInterface* print_dialog_; 60 61 DISALLOW_COPY_AND_ASSIGN(PrintingContextLinux); 62}; 63 64} // namespace printing 65 66#endif // PRINTING_PRINTING_CONTEXT_LINUX_H_ 67