summaryrefslogtreecommitdiffstats
path: root/src/gui/painting/qprintengine_qws_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/painting/qprintengine_qws_p.h')
-rw-r--r--src/gui/painting/qprintengine_qws_p.h213
1 files changed, 213 insertions, 0 deletions
diff --git a/src/gui/painting/qprintengine_qws_p.h b/src/gui/painting/qprintengine_qws_p.h
new file mode 100644
index 0000000000..59cbe3eba8
--- /dev/null
+++ b/src/gui/painting/qprintengine_qws_p.h
@@ -0,0 +1,213 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QPRINTENGINE_QWS_P_H
+#define QPRINTENGINE_QWS_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include "QtGui/qprinter.h"
+
+#ifndef QT_NO_PRINTER
+
+#include "QtGui/qprintengine.h"
+#include "QtCore/qbytearray.h"
+#include "private/qpaintengine_p.h"
+
+QT_BEGIN_NAMESPACE
+
+class QtopiaPrintEnginePrivate;
+class QRasterPaintEngine;
+class QPrinterPrivate;
+class QImage;
+
+class QtopiaPrintEngine : public QPaintEngine, public QPrintEngine
+{
+ Q_DECLARE_PRIVATE(QtopiaPrintEngine)
+public:
+ QtopiaPrintEngine(QPrinter::PrinterMode mode);
+
+ // override QWSPaintEngine
+ bool begin(QPaintDevice *dev);
+ bool end();
+ void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr);
+ void drawTextItem(const QPointF &p, const QTextItem &ti);
+ QPaintEngine::Type type() const { return QPaintEngine::X11; }
+
+ QPaintEngine *paintEngine() const;
+
+ void updateState(const QPaintEngineState &state);
+
+ QRect paperRect() const;
+ QRect pageRect() const;
+
+ bool newPage();
+ bool abort();
+
+ QPrinter::PrinterState printerState() const;
+
+ int metric(QPaintDevice::PaintDeviceMetric metricType) const;
+
+ QVariant property(PrintEnginePropertyKey key) const;
+ void setProperty(PrintEnginePropertyKey key, const QVariant &value);
+
+private:
+ friend class QPrintDialog;
+ friend class QPageSetupDialog;
+
+ void clearPage();
+ void flushPage();
+};
+
+class QtopiaPrintBuffer
+{
+public:
+ QtopiaPrintBuffer( bool bigEndian=FALSE ) { _bigEndian = bigEndian; }
+ ~QtopiaPrintBuffer() {}
+
+ const QByteArray& data() const { return _data; }
+
+ int size() const { return _data.size(); }
+
+ void clear() { _data.clear(); }
+
+ void append( char value ) { _data.append( value ); }
+ void append( short value );
+ void append( int value );
+ void append( const QByteArray& array ) { _data.append( array ); }
+
+ void patch( int posn, int value );
+
+ void pad();
+
+private:
+ QByteArray _data;
+ bool _bigEndian;
+};
+
+#define QT_QWS_PRINTER_DEFAULT_DPI 200
+
+class QtopiaPrintEnginePrivate : public QPaintEnginePrivate
+{
+ Q_DECLARE_PUBLIC(QtopiaPrintEngine)
+public:
+ QtopiaPrintEnginePrivate(QPrinter::PrinterMode m) :
+ mode(m),
+ printerState(QPrinter::Idle),
+ orientation(QPrinter::Portrait),
+ paperSize(QPrinter::A4),
+ pageOrder(QPrinter::FirstPageFirst),
+ colorMode(QPrinter::GrayScale),
+ paperSource(QPrinter::OnlyOne),
+ resolution(QT_QWS_PRINTER_DEFAULT_DPI),
+ _paintEngine(0),
+ numCopies(1),
+ outputToFile(false),
+ fullPage(false),
+ collateCopies(false),
+ pageNumber(0),
+ pageImage(0),
+ partialByte(0),
+ partialBits(0)
+ {
+ }
+ ~QtopiaPrintEnginePrivate();
+
+ void initialize();
+ QPaintEngine *paintEngine();
+
+ QPrinter::PrinterMode mode;
+
+ QString printerName;
+ QString outputFileName;
+ QString printProgram;
+ QString docName;
+ QString creator;
+
+ QPrinter::PrinterState printerState;
+
+ QPrinter::Orientation orientation;
+ QPrinter::PaperSize paperSize;
+ QPrinter::PageOrder pageOrder;
+ QPrinter::ColorMode colorMode;
+ QPrinter::PaperSource paperSource;
+
+ int resolution;
+ QPaintEngine *_paintEngine;
+ int numCopies;
+
+ bool outputToFile;
+ bool fullPage;
+ bool collateCopies;
+
+ int pageNumber;
+
+ QImage *pageImage;
+
+ QtopiaPrintBuffer buffer;
+
+ // Definitions that are only relevant to G3FAX output.
+ int ifdPatch;
+ int partialByte;
+ int partialBits;
+ void writeG3FaxHeader();
+ void writeG3FaxPage();
+ int writeG3IFDEntry( int tag, int type, int count, int value );
+ void writeG3Code( int code, int bits );
+ void writeG3WhiteRun( int len );
+ void writeG3BlackRun( int len );
+ void writeG3EOL();
+};
+
+QT_END_NAMESPACE
+
+#endif // QT_NO_PRINTER
+
+#endif // QPRINTENGINE_QWS_P_H