commit e1005fa6778bbaf0069c8a20001124cc963dee70 Author: Joerg Bornemann Date: Wed Dec 9 09:24:47 2009 +0100 first attempt for PDF support on Windows CE diff --git a/mkspecs/common/wince/qmake.conf b/mkspecs/common/wince/qmake.conf index 57b89b9..65c8d91 100644 --- a/mkspecs/common/wince/qmake.conf +++ b/mkspecs/common/wince/qmake.conf @@ -7,7 +7,7 @@ TEMPLATE = app QT += core gui CONFIG += qt warn_on release incremental flat link_prl precompile_header autogen_precompile_source copy_dir_files debug_and_release debug_and_release_target embed_manifest_dll embed_manifest_exe -DEFINES += UNDER_CE WINCE _WINDOWS _UNICODE UNICODE _WIN32 QT_NO_PRINTER QT_NO_PRINTDIALOG +DEFINES += UNDER_CE WINCE _WINDOWS _UNICODE UNICODE _WIN32 QT_NO_PRINTDIALOG QMAKE_COMPILER_DEFINES += _MSC_VER=1400 diff --git a/mkspecs/wince50standard-armv4i-msvc2005/qmake.conf b/mkspecs/wince50standard-armv4i-msvc2005/qmake.conf index 28ca6a6..d7c4b29 100644 --- a/mkspecs/wince50standard-armv4i-msvc2005/qmake.conf +++ b/mkspecs/wince50standard-armv4i-msvc2005/qmake.conf @@ -8,7 +8,7 @@ include(../common/wince/qmake.conf) CE_SDK = STANDARDSDK_500 CE_ARCH = ARMV4I -DEFINES += STANDARDSHELL_UI_MODEL _WIN32_WCE=0x500 $$CE_ARCH _ARMV4I_ armv4i _ARM_ ARM _M_ARM ARM __arm__ Q_OS_WINCE_STD QT_NO_PRINTER QT_NO_PRINTDIALOG +DEFINES += STANDARDSHELL_UI_MODEL _WIN32_WCE=0x500 $$CE_ARCH _ARMV4I_ armv4i _ARM_ ARM _M_ARM ARM __arm__ Q_OS_WINCE_STD QMAKE_CFLAGS += -QRarch4T -QRinterwork-return diff --git a/mkspecs/wince50standard-mipsii-msvc2005/qmake.conf b/mkspecs/wince50standard-mipsii-msvc2005/qmake.conf index 0cc1ab0..751d90a 100644 --- a/mkspecs/wince50standard-mipsii-msvc2005/qmake.conf +++ b/mkspecs/wince50standard-mipsii-msvc2005/qmake.conf @@ -8,7 +8,7 @@ include(../common/wince/qmake.conf) CE_SDK = STANDARDSDK_500 CE_ARCH = MIPSII -DEFINES += STANDARDSHELL_UI_MODEL _WIN32_WCE=0x500 _M_MRX000=3000 MIPS _MIPS_ Q_OS_WINCE_STD QT_NO_PRINTER QT_NO_PRINTDIALOG +DEFINES += STANDARDSHELL_UI_MODEL _WIN32_WCE=0x500 _M_MRX000=3000 MIPS _MIPS_ Q_OS_WINCE_STD QMAKE_CFLAGS += -QMmips2 QMAKE_CXXFLAGS += -QMmips2 diff --git a/mkspecs/wince50standard-mipsiv-msvc2005/qmake.conf b/mkspecs/wince50standard-mipsiv-msvc2005/qmake.conf index a22505c..62a2f4f 100644 --- a/mkspecs/wince50standard-mipsiv-msvc2005/qmake.conf +++ b/mkspecs/wince50standard-mipsiv-msvc2005/qmake.conf @@ -8,7 +8,7 @@ include(../common/wince/qmake.conf) CE_SDK = STANDARDSDK_500 CE_ARCH = MIPSIV -DEFINES += STANDARDSHELL_UI_MODEL _WIN32_WCE=0x500 _M_MRX000=4000 MIPS _MIPS_ Q_OS_WINCE_STD QT_NO_PRINTER QT_NO_PRINTDIALOG MIPS_HAS_FPU +DEFINES += STANDARDSHELL_UI_MODEL _WIN32_WCE=0x500 _M_MRX000=4000 MIPS _MIPS_ Q_OS_WINCE_STD MIPS_HAS_FPU QMAKE_CFLAGS += -QMmips4 QMAKE_CXXFLAGS += -QMmips4 diff --git a/mkspecs/wince50standard-sh4-msvc2005/qmake.conf b/mkspecs/wince50standard-sh4-msvc2005/qmake.conf index 1ee8950..779ee31 100644 --- a/mkspecs/wince50standard-sh4-msvc2005/qmake.conf +++ b/mkspecs/wince50standard-sh4-msvc2005/qmake.conf @@ -8,7 +8,7 @@ include(../common/wince/qmake.conf) CE_SDK = STANDARDSDK_500 CE_ARCH = SH4 -DEFINES += STANDARDSHELL_UI_MODEL _WIN32_WCE=0x500 _M_SH SHx _SHX_ Q_OS_WINCE_STD QT_NO_PRINTER QT_NO_PRINTDIALOG +DEFINES += STANDARDSHELL_UI_MODEL _WIN32_WCE=0x500 _M_SH SHx _SHX_ Q_OS_WINCE_STD QMAKE_CFLAGS = -nologo -Zm200 -Zc:wchar_t- -QSsh4 diff --git a/mkspecs/wince50standard-x86-msvc2005/qmake.conf b/mkspecs/wince50standard-x86-msvc2005/qmake.conf index 2fa7556..d826bf6 100644 --- a/mkspecs/wince50standard-x86-msvc2005/qmake.conf +++ b/mkspecs/wince50standard-x86-msvc2005/qmake.conf @@ -8,7 +8,7 @@ include(../common/wince/qmake.conf) CE_SDK = STANDARDSDK_500 CE_ARCH = x86 -DEFINES += STANDARDSHELL_UI_MODEL _WIN32_WCE=0x500 $$CE_ARCH _X86_ _M_IX86 Q_OS_WINCE_STD QT_NO_PRINTER QT_NO_PRINTDIALOG +DEFINES += STANDARDSHELL_UI_MODEL _WIN32_WCE=0x500 $$CE_ARCH _X86_ _M_IX86 Q_OS_WINCE_STD QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:WINDOWSCE,5.00 /MACHINE:X86 /ENTRY:mainACRTStartup QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWSCE,5.00 /MACHINE:X86 diff --git a/mkspecs/wincewm50pocket-msvc2005/qmake.conf b/mkspecs/wincewm50pocket-msvc2005/qmake.conf index 676be5a..4f43cd7 100644 --- a/mkspecs/wincewm50pocket-msvc2005/qmake.conf +++ b/mkspecs/wincewm50pocket-msvc2005/qmake.conf @@ -8,7 +8,7 @@ include(../common/wince/qmake.conf) CE_SDK = Windows Mobile 5.0 Pocket PC SDK CE_ARCH = ARMV4I -DEFINES += _WIN32_WCE=0x501 $$CE_ARCH _ARMV4I_ armv4i _ARM_ ARM _M_ARM ARM __arm__ Q_OS_WINCE_WM QT_NO_PRINTER QT_NO_PRINTDIALOG +DEFINES += _WIN32_WCE=0x501 $$CE_ARCH _ARMV4I_ armv4i _ARM_ ARM _M_ARM ARM __arm__ Q_OS_WINCE_WM QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB /ENTRY:mainACRTStartup QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB diff --git a/mkspecs/wincewm50smart-msvc2005/qmake.conf b/mkspecs/wincewm50smart-msvc2005/qmake.conf index c0f09cc..fb81bb6 100644 --- a/mkspecs/wincewm50smart-msvc2005/qmake.conf +++ b/mkspecs/wincewm50smart-msvc2005/qmake.conf @@ -8,7 +8,7 @@ include(../common/wince/qmake.conf) CE_SDK = Windows Mobile 5.0 Smartphone SDK CE_ARCH = ARMV4I -DEFINES += SMARTPHONE2003_UI_MODEL _WIN32_WCE=0x501 $$CE_ARCH _ARMV4I_ armv4i _ARM_ ARM _M_ARM ARM __arm__ Q_OS_WINCE_WM QT_NO_PRINTER QT_NO_PRINTDIALOG QT_KEYPAD_NAVIGATION +DEFINES += SMARTPHONE2003_UI_MODEL _WIN32_WCE=0x501 $$CE_ARCH _ARMV4I_ armv4i _ARM_ ARM _M_ARM ARM __arm__ Q_OS_WINCE_WM QT_KEYPAD_NAVIGATION QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB /ENTRY:mainACRTStartup QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB diff --git a/src/gui/painting/painting.pri b/src/gui/painting/painting.pri index 4023f65..2def94d 100644 --- a/src/gui/painting/painting.pri +++ b/src/gui/painting/painting.pri @@ -102,9 +102,13 @@ win32 { SOURCES += \ painting/qcolormap_win.cpp \ painting/qpaintdevice_win.cpp \ - painting/qprintengine_win.cpp \ painting/qprinterinfo_win.cpp + !wince* { + SOURCES += \ + painting/qprintengine_win.cpp + } + !win32-borland:!wince*:LIBS += -lmsimg32 } diff --git a/src/gui/painting/qpdf.cpp b/src/gui/painting/qpdf.cpp index 6e02435..7fce3c6 100644 --- a/src/gui/painting/qpdf.cpp +++ b/src/gui/painting/qpdf.cpp @@ -358,7 +358,7 @@ QByteArray QPdf::generateDashes(const QPen &pen) w = 1; for (int i = 0; i < dasharray.size(); ++i) { qreal dw = dasharray.at(i)*w; - if (dw < 0.0001) dw = 0.0001; + if (dw < qreal(0.0001)) dw = qreal(0.0001); s << dw; } s << ']'; @@ -760,7 +760,7 @@ QPdf::Stroker::Stroker() basicStroker.setLineToHook(lineToHook); basicStroker.setCubicToHook(cubicToHook); cosmeticPen = true; - basicStroker.setStrokeWidth(.1); + basicStroker.setStrokeWidth(qreal(.1)); } void QPdf::Stroker::setPen(const QPen &pen) @@ -773,7 +773,7 @@ void QPdf::Stroker::setPen(const QPen &pen) bool zeroWidth = w < 0.0001; cosmeticPen = pen.isCosmetic(); if (zeroWidth) - w = .1; + w = qreal(.1); basicStroker.setStrokeWidth(w); basicStroker.setCapStyle(pen.capStyle()); @@ -975,7 +975,7 @@ void QPdfBaseEngine::drawPoints (const QPointF *points, int pointCount) QPainterPath p; for (int i=0; i!=pointCount;++i) { p.moveTo(points[i]); - p.lineTo(points[i] + QPointF(0, 0.001)); + p.lineTo(points[i] + QPointF(0, qreal(0.001))); } bool hadBrush = d->hasBrush; @@ -1828,7 +1828,9 @@ void QPdfBaseEnginePrivate::closePrintDevice() return; outDevice->close(); if (fd >= 0) -#if defined(Q_OS_WIN) && defined(_MSC_VER) && _MSC_VER >= 1400 +#if defined(Q_OS_WINCE) + QT_CLOSE(fd); +#elif defined(Q_OS_WIN) && defined(_MSC_VER) && _MSC_VER >= 1400 ::_close(fd); #else ::close(fd); diff --git a/src/gui/painting/qpdf_p.h b/src/gui/painting/qpdf_p.h index 9c4d05d..a430408 100644 --- a/src/gui/painting/qpdf_p.h +++ b/src/gui/painting/qpdf_p.h @@ -98,8 +98,13 @@ namespace QPdf { QIODevice *stream(); void clear(); +#ifdef Q_OS_WINCE + static inline int maxMemorySize() { return 1000000; } + static inline int chunkSize() { return 100000; } +#else static inline int maxMemorySize() { return 100000000; } static inline int chunkSize() { return 10000000; } +#endif protected: void constructor_helper(QIODevice *dev); diff --git a/src/gui/painting/qprintengine_pdf.cpp b/src/gui/painting/qprintengine_pdf.cpp index 2955e39..de57365 100644 --- a/src/gui/painting/qprintengine_pdf.cpp +++ b/src/gui/painting/qprintengine_pdf.cpp @@ -59,10 +59,6 @@ #include #endif -#if defined(Q_OS_WINCE) -#include "qwinfunctions_wince.h" -#endif - #include "qprintengine_pdf_p.h" #include "private/qdrawhelper_p.h" diff --git a/src/gui/painting/qprintengine_ps.cpp b/src/gui/painting/qprintengine_ps.cpp index 28e9a7a..12345ca 100644 --- a/src/gui/painting/qprintengine_ps.cpp +++ b/src/gui/painting/qprintengine_ps.cpp @@ -718,7 +718,9 @@ QPSPrintEngine::~QPSPrintEngine() { Q_D(QPSPrintEngine); if (d->fd >= 0) -#if defined(Q_OS_WIN) && defined(_MSC_VER) && _MSC_VER >= 1400 +#if defined(Q_OS_WINCE) + QT_CLOSE(d->fd); +#elif defined(Q_OS_WIN) && defined(_MSC_VER) && _MSC_VER >= 1400 ::_close(d->fd); #else ::close(d->fd); diff --git a/src/gui/painting/qprinter.cpp b/src/gui/painting/qprinter.cpp index ae21416..a979fd1 100644 --- a/src/gui/painting/qprinter.cpp +++ b/src/gui/painting/qprinter.cpp @@ -53,7 +53,7 @@ #ifndef QT_NO_PRINTER -#if defined (Q_WS_WIN) +#if defined(Q_WS_WIN) && !defined(Q_WS_WINCE) #include #elif defined (Q_WS_MAC) #include @@ -169,9 +169,14 @@ void QPrinterPrivate::createDefaultEngines() #endif #endif +#if defined(Q_WS_WINCE) + if(outputFormat == QPrinter::NativeFormat) + realOutputFormat = QPrinter::PdfFormat; +#endif + switch (realOutputFormat) { case QPrinter::NativeFormat: { -#if defined (Q_WS_WIN) +#if defined(Q_WS_WIN) && !defined(Q_WS_WINCE) QWin32PrintEngine *winEngine = new QWin32PrintEngine(printerMode); paintEngine = winEngine; printEngine = winEngine; @@ -183,7 +188,7 @@ void QPrinterPrivate::createDefaultEngines() QtopiaPrintEngine *qwsEngine = new QtopiaPrintEngine(printerMode); paintEngine = qwsEngine; printEngine = qwsEngine; -#elif defined (Q_OS_UNIX) +#elif defined(Q_OS_UNIX) || defined(Q_WS_WINCE) Q_ASSERT(false); #endif } @@ -1761,7 +1766,7 @@ QPrintEngine *QPrinter::printEngine() const return d->printEngine; } -#if defined (Q_WS_WIN) +#if defined(Q_WS_WIN) && !defined(Q_OS_WINCE) /*! Sets the page size to be used by the printer under Windows to \a pageSize. @@ -1792,7 +1797,7 @@ int QPrinter::winPageSize() const Q_D(const QPrinter); return d->printEngine->property(QPrintEngine::PPK_WindowsPageSize).toInt(); } -#endif // Q_WS_WIN +#endif // defined(Q_WS_WIN) && !defined(Q_OS_WINCE) /*! Returns a list of the resolutions (a list of dots-per-inch @@ -1903,7 +1908,7 @@ QPrinter::PrinterState QPrinter::printerState() const Use printerState() == QPrinter::Aborted instead. */ -#ifdef Q_WS_WIN +#if defined(Q_WS_WIN) && !defined(Q_OS_WINCE) /*! \internal */ diff --git a/src/gui/painting/qprinter.h b/src/gui/painting/qprinter.h index 996a954..d01faec 100644 --- a/src/gui/painting/qprinter.h +++ b/src/gui/painting/qprinter.h @@ -211,7 +211,7 @@ public: QList supportedResolutions() const; -#ifdef Q_WS_WIN +#if defined(Q_WS_WIN) && !defined(Q_WS_WINCE) QList supportedPaperSources() const; #endif @@ -221,7 +221,7 @@ public: void setDoubleSidedPrinting(bool enable); bool doubleSidedPrinting() const; -#ifdef Q_WS_WIN +#if defined(Q_WS_WIN) && !defined(Q_WS_WINCE) void setWinPageSize(int winPageSize); int winPageSize() const; #endif @@ -244,7 +244,7 @@ public: QPaintEngine *paintEngine() const; QPrintEngine *printEngine() const; -#ifdef Q_WS_WIN +#if defined(Q_WS_WIN) && !defined(Q_WS_WINCE) HDC getDC() const; void releaseDC(HDC hdc) const; #endif diff --git a/src/gui/painting/qprinterinfo_win.cpp b/src/gui/painting/qprinterinfo_win.cpp index caada1f..55a540e 100644 --- a/src/gui/painting/qprinterinfo_win.cpp +++ b/src/gui/painting/qprinterinfo_win.cpp @@ -84,6 +84,9 @@ public: QList QPrinterInfo::availablePrinters() { +#ifdef Q_WS_WINCE + return QList(); +#else QList printers; LPBYTE buffer; DWORD needed = 0; @@ -109,10 +112,17 @@ QList QPrinterInfo::availablePrinters() } return printers; +#endif } QPrinterInfo QPrinterInfo::defaultPrinter() { +#ifdef Q_WS_WINCE + QPrinterInfo prn(QLatin1String("not available")); + prn.d_ptr->m_default = true; + prn.d_ptr->m_isNull = true; + return prn; +#else QString noPrinters(QLatin1String("qt_no_printers")); wchar_t buffer[256]; GetProfileString(L"windows", L"device", (wchar_t*)noPrinters.utf16(), buffer, 256); @@ -129,6 +139,7 @@ QPrinterInfo QPrinterInfo::defaultPrinter() if (noConfiguredPrinters) prn.d_ptr->m_isNull = true; return prn; +#endif } ///////////////////////////////////////////////////////////////////////////// @@ -197,6 +208,15 @@ bool QPrinterInfo::isDefault() const QList QPrinterInfo::supportedPaperSizes() const { +#ifdef Q_WS_WINCE + return QList() + << QPrinter::A0 << QPrinter::A1 << QPrinter::A2 << QPrinter::A3 << QPrinter::A4 + << QPrinter::A5 << QPrinter::A6 << QPrinter::A7 << QPrinter::A8 << QPrinter::A9 + << QPrinter::B0 << QPrinter::B1 << QPrinter::B2 << QPrinter::B3 << QPrinter::B4 + << QPrinter::B5 << QPrinter::B6 << QPrinter::B7 << QPrinter::B8 << QPrinter::B9 + << QPrinter::B10 << QPrinter::C5E << QPrinter::Comm10E << QPrinter::DLE << QPrinter::Executive + << QPrinter::Folio << QPrinter::Ledger << QPrinter::Letter << QPrinter::Tabloid; +#else const Q_D(QPrinterInfo); QList paperList; @@ -216,6 +236,7 @@ QList QPrinterInfo::supportedPaperSizes() const delete [] papers; return paperList; +#endif } /////////////////////////////////////////////////////////////////////////////