/**************************************************************************** ** ** Copyright (C) 2015 The Qt Company Ltd. ** Contact: http://www.qt.io/licensing/ ** ** This file is part of the QtGui module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see http://www.qt.io/terms-conditions. For further ** information use the contact form at http://www.qt.io/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 or version 3 as published by the Free ** Software Foundation and appearing in the file LICENSE.LGPLv21 and ** LICENSE.LGPLv3 included in the packaging of this file. Please review the ** following information to ensure the GNU Lesser General Public License ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** As a special exception, The Qt Company gives you certain additional ** rights. These rights are described in The Qt Company LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, 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.GPL 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. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef QPRINTER_H #define QPRINTER_H #include #include #include QT_BEGIN_HEADER QT_BEGIN_NAMESPACE QT_MODULE(Gui) #ifndef QT_NO_PRINTER #if defined(B0) #undef B0 // Terminal hang-up. We assume that you do not want that. #endif class QPrinterPrivate; class QPaintEngine; class QPrintEngine; class QPrinterInfo; class Q_GUI_EXPORT QPrinter : public QPaintDevice { Q_DECLARE_PRIVATE(QPrinter) public: enum PrinterMode { ScreenResolution, PrinterResolution, HighResolution }; explicit QPrinter(PrinterMode mode = ScreenResolution); explicit QPrinter(const QPrinterInfo& printer, PrinterMode mode = ScreenResolution); ~QPrinter(); int devType() const; enum Orientation { Portrait, Landscape }; #ifndef Q_QDOC enum PageSize { A4, B5, Letter, Legal, Executive, A0, A1, A2, A3, A5, A6, A7, A8, A9, B0, B1, B10, B2, B3, B4, B6, B7, B8, B9, C5E, Comm10E, DLE, Folio, Ledger, Tabloid, Custom, NPageSize = Custom, NPaperSize = Custom }; typedef PageSize PaperSize; #else enum PageSize { A4, B5, Letter, Legal, Executive, A0, A1, A2, A3, A5, A6, A7, A8, A9, B0, B1, B10, B2, B3, B4, B6, B7, B8, B9, C5E, Comm10E, DLE, Folio, Ledger, Tabloid, Custom, NPageSize = Custom }; enum PaperSize { A4, B5, Letter, Legal, Executive, A0, A1, A2, A3, A5, A6, A7, A8, A9, B0, B1, B10, B2, B3, B4, B6, B7, B8, B9, C5E, Comm10E, DLE, Folio, Ledger, Tabloid, Custom, NPageSize = Custom, NPaperSize = Custom }; #endif enum PageOrder { FirstPageFirst, LastPageFirst }; enum ColorMode { GrayScale, Color }; enum PaperSource { OnlyOne, Lower, Middle, Manual, Envelope, EnvelopeManual, Auto, Tractor, SmallFormat, LargeFormat, LargeCapacity, Cassette, FormSource, MaxPageSource }; enum PrinterState { Idle, Active, Aborted, Error }; enum OutputFormat { NativeFormat, PdfFormat, PostScriptFormat }; // ### Qt 5: Merge with QAbstractPrintDialog::PrintRange enum PrintRange { AllPages, Selection, PageRange, CurrentPage }; enum Unit { Millimeter, Point, Inch, Pica, Didot, Cicero, DevicePixel }; enum DuplexMode { DuplexNone = 0, DuplexAuto, DuplexLongSide, DuplexShortSide }; #ifdef QT3_SUPPORT enum PrinterOption { PrintToFile, PrintSelection, PrintPageRange }; #endif // QT3_SUPPORT void setOutputFormat(OutputFormat format); 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 setOrientation(Orientation); Orientation orientation() const; void setPageSize(PageSize); PageSize pageSize() const; void setPaperSize(PaperSize); PaperSize paperSize() const; void setPaperSize(const QSizeF &paperSize, Unit unit); QSizeF paperSize(Unit unit) const; void setPageOrder(PageOrder); PageOrder pageOrder() const; void setResolution(int); int resolution() const; void setColorMode(ColorMode); ColorMode colorMode() const; void setCollateCopies(bool collate); bool collateCopies() const; void setFullPage(bool); bool fullPage() const; void setNumCopies(int); int numCopies() const; int actualNumCopies() const; void setCopyCount(int); int copyCount() const; bool supportsMultipleCopies() const; void setPaperSource(PaperSource); PaperSource paperSource() const; void setDuplex(DuplexMode duplex); DuplexMode duplex() const; QList supportedResolutions() const; #ifdef Q_WS_WIN QList supportedPaperSources() const; #endif void setFontEmbeddingEnabled(bool enable); bool fontEmbeddingEnabled() const; void setDoubleSidedPrinting(bool enable); bool doubleSidedPrinting() const; #ifdef Q_WS_WIN void setWinPageSize(int winPageSize); int winPageSize() const; #endif QRect paperRect() const; QRect pageRect() const; QRectF paperRect(Unit) const; QRectF pageRect(Unit) const; #if !defined(Q_WS_WIN) || defined(qdoc) QString printerSelectionOption() const; void setPrinterSelectionOption(const QString &); #endif bool newPage(); bool abort(); PrinterState printerState() const; QPaintEngine *paintEngine() const; QPrintEngine *printEngine() const; #ifdef Q_WS_WIN HDC getDC() const; void releaseDC(HDC hdc) const; #endif void setFromTo(int fromPage, int toPage); int fromPage() const; int toPage() const; void setPrintRange(PrintRange range); PrintRange printRange() const; void setPageMargins(qreal left, qreal top, qreal right, qreal bottom, Unit unit); void getPageMargins(qreal *left, qreal *top, qreal *right, qreal *bottom, Unit unit) const; #ifdef QT3_SUPPORT #ifdef Q_WS_MAC QT3_SUPPORT bool pageSetup(QWidget *parent = 0); QT3_SUPPORT bool printSetup(QWidget *parent = 0); #endif QT3_SUPPORT bool setup(QWidget *parent = 0); QT3_SUPPORT void setMinMax(int minPage, int maxPage); QT3_SUPPORT int minPage() const; QT3_SUPPORT int maxPage() const; QT3_SUPPORT void setCollateCopiesEnabled(bool); QT3_SUPPORT bool collateCopiesEnabled() const; QT3_SUPPORT void setOptionEnabled(PrinterOption, bool enable); QT3_SUPPORT bool isOptionEnabled(PrinterOption) const; inline QT3_SUPPORT QSize margins() const; inline QT3_SUPPORT void margins(uint *top, uint *left, uint *bottom, uint *right) const; inline QT3_SUPPORT bool aborted() { return printerState() == Aborted; } QT3_SUPPORT void setOutputToFile(bool); inline QT3_SUPPORT bool outputToFile() const { return !outputFileName().isEmpty(); } #endif protected: int metric(PaintDeviceMetric) const; void setEngines(QPrintEngine *printEngine, QPaintEngine *paintEngine); private: void init(PrinterMode mode); Q_DISABLE_COPY(QPrinter) QScopedPointer d_ptr; friend class QPrintDialogPrivate; friend class QAbstractPrintDialog; friend class QAbstractPrintDialogPrivate; friend class QPrintPreviewWidgetPrivate; friend class QTextDocument; friend class QPageSetupWidget; }; #ifdef QT3_SUPPORT inline QSize QPrinter::margins() const { QRect page = pageRect(); QRect paper = paperRect(); return QSize(page.left() - paper.left(), page.top() - paper.top()); } inline void QPrinter::margins(uint *top, uint *left, uint *bottom, uint *right) const { QRect page = pageRect(); QRect paper = paperRect(); if (top) *top = page.top() - paper.top(); if (left) *left = page.left() - paper.left(); if (bottom) *bottom = paper.bottom() - page.bottom(); if (right) *right = paper.right() - page.right(); } #endif #endif // QT_NO_PRINTER QT_END_NAMESPACE QT_END_HEADER #endif // QPRINTER_H