123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- // Copyright (c) 2011 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef PRINTING_PRINTING_CONTEXT_MAC_H_
- #define PRINTING_PRINTING_CONTEXT_MAC_H_
- #include <ApplicationServices/ApplicationServices.h>
- #include <string>
- #include "base/mac/scoped_nsobject.h"
- #include "base/strings/string_piece.h"
- #include "printing/mojom/print.mojom.h"
- #include "printing/print_job_constants.h"
- #include "printing/printing_context.h"
- @class NSPrintInfo;
- namespace printing {
- class COMPONENT_EXPORT(PRINTING) PrintingContextMac : public PrintingContext {
- public:
- explicit PrintingContextMac(Delegate* delegate);
- PrintingContextMac(const PrintingContextMac&) = delete;
- PrintingContextMac& operator=(const PrintingContextMac&) = delete;
- ~PrintingContextMac() override;
- // PrintingContext implementation.
- void AskUserForSettings(int max_pages,
- bool has_selection,
- bool is_scripted,
- PrintSettingsCallback callback) override;
- mojom::ResultCode UseDefaultSettings() override;
- gfx::Size GetPdfPaperSizeDeviceUnits() override;
- mojom::ResultCode UpdatePrinterSettings(
- const PrinterSettings& printer_settings) override;
- mojom::ResultCode NewDocument(const std::u16string& document_name) override;
- mojom::ResultCode PrintDocument(const MetafilePlayer& metafile,
- const PrintSettings& settings,
- uint32_t num_pages) override;
- mojom::ResultCode DocumentDone() override;
- void Cancel() override;
- void ReleaseContext() override;
- printing::NativeDrawingContext context() const override;
- private:
- // Initializes PrintSettings from `print_info_`. This must be called
- // after changes to `print_info_` in order for the changes to take effect in
- // printing.
- // This function ignores the page range information specified in the print
- // info object and use `settings_.ranges` instead.
- void InitPrintSettingsFromPrintInfo();
- // Returns the set of page ranges constructed from `print_info_`.
- PageRanges GetPageRangesFromPrintInfo();
- // Updates `print_info_` to use the given printer.
- // Returns true if the printer was set.
- bool SetPrinter(const std::string& device_name);
- // Updates `print_info_` page format with paper selected by user. If paper was
- // not selected, default system paper is used.
- // Returns true if the paper was set.
- bool UpdatePageFormatWithPaperInfo();
- // Updates `print_info_` page format with `paper`.
- // Returns true if the paper was set.
- bool UpdatePageFormatWithPaper(PMPaper paper, PMPageFormat page_format);
- // Sets the print job destination type as preview job.
- // Returns true if the print job destination type is set.
- bool SetPrintPreviewJob();
- // Sets `copies` in PMPrintSettings.
- // Returns true if the number of copies is set.
- bool SetCopiesInPrintSettings(int copies);
- // Sets `collate` in PMPrintSettings.
- // Returns true if `collate` is set.
- bool SetCollateInPrintSettings(bool collate);
- // Sets orientation in native print info object.
- // Returns true if the orientation was set.
- bool SetOrientationIsLandscape(bool landscape);
- // Sets duplex mode in PMPrintSettings.
- // Returns true if duplex mode is set.
- bool SetDuplexModeInPrintSettings(mojom::DuplexMode mode);
- // Sets output color mode in PMPrintSettings.
- // Returns true if color mode is set.
- bool SetOutputColor(int color_mode);
- // Sets resolution in PMPrintSettings.
- // Returns true if resolution is set.
- bool SetResolution(const gfx::Size& dpi_size);
- // Sets key-value pair in PMPrintSettings.
- // Returns true is the pair is set.
- bool SetKeyValue(base::StringPiece key, base::StringPiece value);
- // Starts a new page.
- mojom::ResultCode NewPage();
- // Closes the printed page.
- mojom::ResultCode PageDone();
- // The native print info object.
- base::scoped_nsobject<NSPrintInfo> print_info_;
- // The current page's context; only valid between NewPage and PageDone call
- // pairs.
- CGContext* context_;
- };
- } // namespace printing
- #endif // PRINTING_PRINTING_CONTEXT_MAC_H_
|