// qprinter.sip generated by MetaSIP
//
// This file is part of the QtPrintSupport Python extension module.
//
// Copyright (c) 2025 Riverbank Computing Limited <info@riverbankcomputing.com>
// 
// This file is part of PyQt6.
// 
// This file may be used under the terms of the GNU General Public License
// version 3.0 as published by the Free Software Foundation and appearing in
// the file LICENSE included in the packaging of this file.  Please review the
// following information to ensure the GNU General Public License version 3.0
// requirements will be met: http://www.gnu.org/copyleft/gpl.html.
// 
// If you do not wish to use this file under the terms of the GPL version 3.0
// then you may purchase a commercial license.  For more information contact
// info@riverbankcomputing.com.
// 
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.


%If (PyQt_Printer)

class QPrinter : public QPagedPaintDevice
{
%TypeHeaderCode
#include <qprinter.h>
%End

public:
    enum PrinterMode
    {
        ScreenResolution,
        PrinterResolution,
        HighResolution,
    };

    explicit QPrinter(QPrinter::PrinterMode mode = QPrinter::ScreenResolution);
    QPrinter(const QPrinterInfo &printer, QPrinter::PrinterMode mode = QPrinter::ScreenResolution);
    virtual ~QPrinter();

    enum PageOrder
    {
        FirstPageFirst,
        LastPageFirst,
    };

    enum ColorMode
    {
        GrayScale,
        Color,
    };

    enum PaperSource
    {
        OnlyOne,
        Lower,
        Middle,
        Manual,
        Envelope,
        EnvelopeManual,
        Auto,
        Tractor,
        SmallFormat,
        LargeFormat,
        LargeCapacity,
        Cassette,
        FormSource,
        MaxPageSource,
        Upper,
        CustomSource,
        LastPaperSource,
    };

    enum PrinterState
    {
        Idle,
        Active,
        Aborted,
        Error,
    };

    enum OutputFormat
    {
        NativeFormat,
        PdfFormat,
    };

    enum PrintRange
    {
        AllPages,
        Selection,
        PageRange,
        CurrentPage,
    };

    enum Unit
    {
        Millimeter,
        Point,
        Inch,
        Pica,
        Didot,
        Cicero,
        DevicePixel,
    };

    enum DuplexMode
    {
        DuplexNone,
        DuplexAuto,
        DuplexLongSide,
        DuplexShortSide,
    };

    void setOutputFormat(QPrinter::OutputFormat format);
    QPrinter::OutputFormat outputFormat() const;
    void setPrinterName(const QString &);
    QString printerName() const;
    bool isValid() const;
    void setOutputFileName(const QString &);
    QString outputFileName() const;
    void setPrintProgram(const QString &);
    QString printProgram() const;
    void setDocName(const QString &);
    QString docName() const;
    void setCreator(const QString &);
    QString creator() const;
    void setPageOrder(QPrinter::PageOrder);
    QPrinter::PageOrder pageOrder() const;
    void setResolution(int);
    int resolution() const;
    void setColorMode(QPrinter::ColorMode);
    QPrinter::ColorMode colorMode() const;
    void setCollateCopies(bool collate);
    bool collateCopies() const;
    void setFullPage(bool);
    bool fullPage() const;
    void setCopyCount(int);
    int copyCount() const;
    bool supportsMultipleCopies() const;
    void setPaperSource(QPrinter::PaperSource);
    QPrinter::PaperSource paperSource() const;
    void setDuplex(QPrinter::DuplexMode duplex);
    QPrinter::DuplexMode duplex() const;
    QList<int> supportedResolutions() const;
    void setFontEmbeddingEnabled(bool enable);
    bool fontEmbeddingEnabled() const;
    QRectF paperRect(QPrinter::Unit) const;
    QRectF pageRect(QPrinter::Unit) const;
%If (Android || Linux || iOS || macOS || WebAssembly)
    QString printerSelectionOption() const;
%End
%If (Android || Linux || iOS || macOS || WebAssembly)
    void setPrinterSelectionOption(const QString &);
%End
    virtual bool newPage();
    bool abort();
    QPrinter::PrinterState printerState() const;
    virtual QPaintEngine *paintEngine() const;
    QPrintEngine *printEngine() const;
    void setFromTo(int fromPage, int toPage);
    int fromPage() const;
    int toPage() const;
    void setPrintRange(QPrinter::PrintRange range);
    QPrinter::PrintRange printRange() const;

protected:
    virtual int metric(QPaintDevice::PaintDeviceMetric) const;
    void setEngines(QPrintEngine *printEngine, QPaintEngine *paintEngine);

public:
    void setPdfVersion(QPagedPaintDevice::PdfVersion version);
    QPagedPaintDevice::PdfVersion pdfVersion() const;
};

%End
