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.
5 #ifndef PRINTING_PRINTING_CONTEXT_LINUX_H_
6 #define PRINTING_PRINTING_CONTEXT_LINUX_H_
10 #include "printing/printing_context.h"
13 class DictionaryValue
;
19 class PrintDialogGtkInterface
;
21 // PrintingContext with optional native UI for print dialog and pdf_paper_size.
22 class PRINTING_EXPORT PrintingContextLinux
: public PrintingContext
{
24 explicit PrintingContextLinux(Delegate
* delegate
);
25 virtual ~PrintingContextLinux();
27 // Sets the function that creates the print dialog.
28 static void SetCreatePrintDialogFunction(
29 PrintDialogGtkInterface
* (*create_dialog_func
)(
30 PrintingContextLinux
* context
));
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
));
36 // Prints the document contained in |metafile|.
37 void PrintDocument(const MetafilePlayer
& metafile
);
39 // PrintingContext implementation.
40 virtual void AskUserForSettings(
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
;
58 base::string16 document_name_
;
59 PrintDialogGtkInterface
* print_dialog_
;
61 DISALLOW_COPY_AND_ASSIGN(PrintingContextLinux
);
64 } // namespace printing
66 #endif // PRINTING_PRINTING_CONTEXT_LINUX_H_