printing_context_linux.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. #ifndef PRINTING_PRINTING_CONTEXT_LINUX_H_
  5. #define PRINTING_PRINTING_CONTEXT_LINUX_H_
  6. #include <memory>
  7. #include <string>
  8. #include "base/memory/raw_ptr.h"
  9. #include "printing/mojom/print.mojom.h"
  10. #include "printing/printing_context.h"
  11. namespace printing {
  12. class MetafilePlayer;
  13. class PrintDialogLinuxInterface;
  14. // PrintingContext with optional native UI for print dialog and pdf_paper_size.
  15. class COMPONENT_EXPORT(PRINTING) PrintingContextLinux : public PrintingContext {
  16. public:
  17. explicit PrintingContextLinux(Delegate* delegate);
  18. PrintingContextLinux(const PrintingContextLinux&) = delete;
  19. PrintingContextLinux& operator=(const PrintingContextLinux&) = delete;
  20. ~PrintingContextLinux() override;
  21. // Initializes with predefined settings.
  22. void InitWithSettings(std::unique_ptr<PrintSettings> settings);
  23. // PrintingContext implementation.
  24. void AskUserForSettings(int max_pages,
  25. bool has_selection,
  26. bool is_scripted,
  27. PrintSettingsCallback callback) override;
  28. gfx::Size GetPdfPaperSizeDeviceUnits() override;
  29. mojom::ResultCode UseDefaultSettings() override;
  30. mojom::ResultCode UpdatePrinterSettings(
  31. const PrinterSettings& printer_settings) override;
  32. mojom::ResultCode NewDocument(const std::u16string& document_name) override;
  33. mojom::ResultCode PrintDocument(const MetafilePlayer& metafile,
  34. const PrintSettings& settings,
  35. uint32_t num_pages) override;
  36. mojom::ResultCode DocumentDone() override;
  37. void Cancel() override;
  38. void ReleaseContext() override;
  39. printing::NativeDrawingContext context() const override;
  40. private:
  41. std::u16string document_name_;
  42. raw_ptr<PrintDialogLinuxInterface> print_dialog_;
  43. };
  44. } // namespace printing
  45. #endif // PRINTING_PRINTING_CONTEXT_LINUX_H_