qprinter.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:9k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /****************************************************************************
  2. **
  3. ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
  4. ** Contact: Qt Software Information (qt-info@nokia.com)
  5. **
  6. ** This file is part of the QtGui module of the Qt Toolkit.
  7. **
  8. ** Commercial Usage
  9. ** Licensees holding valid Qt Commercial licenses may use this file in
  10. ** accordance with the Qt Commercial License Agreement provided with the
  11. ** Software or, alternatively, in accordance with the terms contained in
  12. ** a written agreement between you and Nokia.
  13. **
  14. **
  15. ** GNU General Public License Usage
  16. ** Alternatively, this file may be used under the terms of the GNU
  17. ** General Public License versions 2.0 or 3.0 as published by the Free
  18. ** Software Foundation and appearing in the file LICENSE.GPL included in
  19. ** the packaging of this file.  Please review the following information
  20. ** to ensure GNU General Public Licensing requirements will be met:
  21. ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
  22. ** http://www.gnu.org/copyleft/gpl.html.  In addition, as a special
  23. ** exception, Nokia gives you certain additional rights. These rights
  24. ** are described in the Nokia Qt GPL Exception version 1.3, included in
  25. ** the file GPL_EXCEPTION.txt in this package.
  26. **
  27. ** Qt for Windows(R) Licensees
  28. ** As a special exception, Nokia, as the sole copyright holder for Qt
  29. ** Designer, grants users of the Qt/Eclipse Integration plug-in the
  30. ** right for the Qt/Eclipse Integration to link to functionality
  31. ** provided by Qt Designer and its related libraries.
  32. **
  33. ** If you are unsure which license is appropriate for your use, please
  34. ** contact the sales department at qt-sales@nokia.com.
  35. **
  36. ****************************************************************************/
  37. #ifndef QPRINTER_H
  38. #define QPRINTER_H
  39. #include <QtGui/qpaintdevice.h>
  40. #include <QtCore/qstring.h>
  41. QT_BEGIN_HEADER
  42. QT_BEGIN_NAMESPACE
  43. QT_MODULE(Gui)
  44. #ifndef QT_NO_PRINTER
  45. #if defined(B0)
  46. #undef B0 // Terminal hang-up.  We assume that you do not want that.
  47. #endif
  48. class QPrinterPrivate;
  49. class QPaintEngine;
  50. class QPrintEngine;
  51. class QPrinterInfo;
  52. class Q_GUI_EXPORT QPrinter : public QPaintDevice
  53. {
  54.     Q_DECLARE_PRIVATE(QPrinter)
  55. public:
  56.     enum PrinterMode { ScreenResolution, PrinterResolution, HighResolution };
  57.     explicit QPrinter(PrinterMode mode = ScreenResolution);
  58.     explicit QPrinter(const QPrinterInfo& printer, PrinterMode mode = ScreenResolution);
  59.     ~QPrinter();
  60.     int devType() const;
  61.     enum Orientation { Portrait, Landscape };
  62. #ifndef Q_QDOC
  63.     enum PageSize { A4, B5, Letter, Legal, Executive,
  64.                     A0, A1, A2, A3, A5, A6, A7, A8, A9, B0, B1,
  65.                     B10, B2, B3, B4, B6, B7, B8, B9, C5E, Comm10E,
  66.                     DLE, Folio, Ledger, Tabloid, Custom, NPageSize = Custom, NPaperSize = Custom };
  67.     typedef PageSize PaperSize;
  68. #else
  69.     enum PageSize { A4, B5, Letter, Legal, Executive,
  70.                     A0, A1, A2, A3, A5, A6, A7, A8, A9, B0, B1,
  71.                     B10, B2, B3, B4, B6, B7, B8, B9, C5E, Comm10E,
  72.                     DLE, Folio, Ledger, Tabloid, Custom, NPageSize = Custom };
  73.     enum PaperSize { A4, B5, Letter, Legal, Executive,
  74.                      A0, A1, A2, A3, A5, A6, A7, A8, A9, B0, B1,
  75.                      B10, B2, B3, B4, B6, B7, B8, B9, C5E, Comm10E,
  76.                      DLE, Folio, Ledger, Tabloid, Custom, NPageSize = Custom, NPaperSize = Custom };
  77. #endif
  78.     enum PageOrder   { FirstPageFirst,
  79.                        LastPageFirst };
  80.     enum ColorMode   { GrayScale,
  81.                        Color };
  82.     enum PaperSource { OnlyOne,
  83.                        Lower,
  84.                        Middle,
  85.                        Manual,
  86.                        Envelope,
  87.                        EnvelopeManual,
  88.                        Auto,
  89.                        Tractor,
  90.                        SmallFormat,
  91.                        LargeFormat,
  92.                        LargeCapacity,
  93.                        Cassette,
  94.                        FormSource,
  95.                        MaxPageSource
  96.     };
  97.     enum PrinterState { Idle,
  98.                         Active,
  99.                         Aborted,
  100.                         Error };
  101.     enum OutputFormat { NativeFormat, PdfFormat, PostScriptFormat };
  102.     // ### Qt 5: Merge with QAbstractPrintDialog::PrintRange
  103.     enum PrintRange { AllPages, Selection, PageRange };
  104.     enum Unit {
  105.         Millimeter,
  106.         Point,
  107.         Inch,
  108.         Pica,
  109.         Didot,
  110.         Cicero,
  111.         DevicePixel
  112.     };
  113.     enum DuplexMode {
  114.         DuplexNone = 0,
  115.         DuplexAuto,
  116.         DuplexLongSide,
  117.         DuplexShortSide
  118.     };
  119. #ifdef QT3_SUPPORT
  120.     enum PrinterOption { PrintToFile, PrintSelection, PrintPageRange };
  121. #endif // QT3_SUPPORT
  122.     void setOutputFormat(OutputFormat format);
  123.     OutputFormat outputFormat() const;
  124.     void setPrinterName(const QString &);
  125.     QString printerName() const;
  126.     bool isValid() const;
  127.     void setOutputFileName(const QString &);
  128.     QString outputFileName()const;
  129.     void setPrintProgram(const QString &);
  130.     QString printProgram() const;
  131.     void setDocName(const QString &);
  132.     QString docName() const;
  133.     void setCreator(const QString &);
  134.     QString creator() const;
  135.     void setOrientation(Orientation);
  136.     Orientation orientation() const;
  137.     void setPageSize(PageSize);
  138.     PageSize pageSize() const;
  139.     void setPaperSize(PaperSize);
  140.     PaperSize paperSize() const;
  141.     void setPaperSize(const QSizeF &paperSize, Unit unit);
  142.     QSizeF paperSize(Unit unit) const;
  143.     void setPageOrder(PageOrder);
  144.     PageOrder pageOrder() const;
  145.     void setResolution(int);
  146.     int resolution() const;
  147.     void setColorMode(ColorMode);
  148.     ColorMode colorMode() const;
  149.     void setCollateCopies(bool collate);
  150.     bool collateCopies() const;
  151.     void setFullPage(bool);
  152.     bool fullPage() const;
  153.     void setNumCopies(int);
  154.     int numCopies() const;
  155.     void setPaperSource(PaperSource);
  156.     PaperSource paperSource() const;
  157.     void setDuplex(DuplexMode duplex);
  158.     DuplexMode duplex() const;
  159.     QList<int> supportedResolutions() const;
  160. #ifdef Q_WS_WIN
  161.     QList<PaperSource> supportedPaperSources() const;
  162. #endif
  163.     void setFontEmbeddingEnabled(bool enable);
  164.     bool fontEmbeddingEnabled() const;
  165.     void setDoubleSidedPrinting(bool enable);
  166.     bool doubleSidedPrinting() const;
  167. #ifdef Q_WS_WIN
  168.     void setWinPageSize(int winPageSize);
  169.     int winPageSize() const;
  170. #endif
  171.     QRect paperRect() const;
  172.     QRect pageRect() const;
  173.     QRectF paperRect(Unit) const;
  174.     QRectF pageRect(Unit) const;
  175. #if !defined(Q_WS_WIN) || defined(qdoc)
  176.     QString printerSelectionOption() const;
  177.     void setPrinterSelectionOption(const QString &);
  178. #endif
  179.     bool newPage();
  180.     bool abort();
  181.     PrinterState printerState() const;
  182.     QPaintEngine *paintEngine() const;
  183.     QPrintEngine *printEngine() const;
  184. #ifdef Q_WS_WIN
  185.     HDC getDC() const;
  186.     void releaseDC(HDC hdc) const;
  187. #endif
  188.     void setFromTo(int fromPage, int toPage);
  189.     int fromPage() const;
  190.     int toPage() const;
  191.     void setPrintRange(PrintRange range);
  192.     PrintRange printRange() const;
  193.     void setPageMargins(qreal left, qreal top, qreal right, qreal bottom, Unit unit);
  194.     void getPageMargins(qreal *left, qreal *top, qreal *right, qreal *bottom, Unit unit) const;
  195. #ifdef QT3_SUPPORT
  196. #ifdef Q_WS_MAC
  197.     QT3_SUPPORT bool pageSetup(QWidget *parent = 0);
  198.     QT3_SUPPORT bool printSetup(QWidget *parent = 0);
  199. #endif
  200.     QT3_SUPPORT bool setup(QWidget *parent = 0);
  201.     QT3_SUPPORT void setMinMax(int minPage, int maxPage);
  202.     QT3_SUPPORT int minPage() const;
  203.     QT3_SUPPORT int maxPage() const;
  204.     QT3_SUPPORT void setCollateCopiesEnabled(bool);
  205.     QT3_SUPPORT bool collateCopiesEnabled() const;
  206.     QT3_SUPPORT void setOptionEnabled(PrinterOption, bool enable);
  207.     QT3_SUPPORT bool isOptionEnabled(PrinterOption) const;
  208.     inline QT3_SUPPORT QSize margins() const;
  209.     inline QT3_SUPPORT void margins(uint *top, uint *left, uint *bottom, uint *right) const;
  210.     inline QT3_SUPPORT bool aborted() { return printerState() == Aborted; }
  211.     QT3_SUPPORT void setOutputToFile(bool);
  212.     inline QT3_SUPPORT bool outputToFile() const { return !outputFileName().isEmpty(); }
  213. #endif
  214. protected:
  215.     int metric(PaintDeviceMetric) const;
  216.     void setEngines(QPrintEngine *printEngine, QPaintEngine *paintEngine);
  217. private:
  218.     void init(PrinterMode mode);
  219.     Q_DISABLE_COPY(QPrinter)
  220.     QPrinterPrivate *d_ptr;
  221.     friend class QPrintDialogWin;
  222.     friend class QAbstractPrintDialog;
  223.     friend class QPrintPreviewWidgetPrivate;
  224.     friend class QTextDocument;
  225. };
  226. #ifdef QT3_SUPPORT
  227. inline QSize QPrinter::margins() const
  228. {
  229.     QRect page = pageRect();
  230.     QRect paper = paperRect();
  231.     return QSize(page.left() - paper.left(), page.top() - paper.top());
  232. }
  233. inline void QPrinter::margins(uint *top, uint *left, uint *bottom, uint *right) const
  234. {
  235.     QRect page = pageRect();
  236.     QRect paper = paperRect();
  237.     if (top)
  238.         *top = page.top() - paper.top();
  239.     if (left)
  240.         *left = page.left() - paper.left();
  241.     if (bottom)
  242.         *bottom = paper.bottom() - page.bottom();
  243.     if (right)
  244.         *right = paper.right() - page.right();
  245. }
  246. #endif
  247. #endif // QT_NO_PRINTER
  248. QT_END_NAMESPACE
  249. QT_END_HEADER
  250. #endif // QPRINTER_H