qprinter.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:9k
- /****************************************************************************
- **
- ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
- ** Contact: Qt Software Information (qt-info@nokia.com)
- **
- ** This file is part of the QtGui module of the Qt Toolkit.
- **
- ** Commercial Usage
- ** Licensees holding valid Qt Commercial licenses may use this file in
- ** accordance with the Qt Commercial License Agreement provided with the
- ** Software or, alternatively, in accordance with the terms contained in
- ** a written agreement between you and Nokia.
- **
- **
- ** GNU General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU
- ** General Public License versions 2.0 or 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 GNU General Public Licensing requirements will be met:
- ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
- ** http://www.gnu.org/copyleft/gpl.html. In addition, as a special
- ** exception, Nokia gives you certain additional rights. These rights
- ** are described in the Nokia Qt GPL Exception version 1.3, included in
- ** the file GPL_EXCEPTION.txt in this package.
- **
- ** Qt for Windows(R) Licensees
- ** As a special exception, Nokia, as the sole copyright holder for Qt
- ** Designer, grants users of the Qt/Eclipse Integration plug-in the
- ** right for the Qt/Eclipse Integration to link to functionality
- ** provided by Qt Designer and its related libraries.
- **
- ** If you are unsure which license is appropriate for your use, please
- ** contact the sales department at qt-sales@nokia.com.
- **
- ****************************************************************************/
- #ifndef QPRINTER_H
- #define QPRINTER_H
- #include <QtGui/qpaintdevice.h>
- #include <QtCore/qstring.h>
- 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 };
- 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;
- void setPaperSource(PaperSource);
- PaperSource paperSource() const;
- void setDuplex(DuplexMode duplex);
- DuplexMode duplex() const;
- QList<int> supportedResolutions() const;
- #ifdef Q_WS_WIN
- QList<PaperSource> 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)
- QPrinterPrivate *d_ptr;
- friend class QPrintDialogWin;
- friend class QAbstractPrintDialog;
- friend class QPrintPreviewWidgetPrivate;
- friend class QTextDocument;
- };
- #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