summaryrefslogtreecommitdiffstats
path: root/tdegtk/tqtcairopainter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tdegtk/tqtcairopainter.cpp')
-rw-r--r--tdegtk/tqtcairopainter.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/tdegtk/tqtcairopainter.cpp b/tdegtk/tqtcairopainter.cpp
index 4c64df8..d926541 100644
--- a/tdegtk/tqtcairopainter.cpp
+++ b/tdegtk/tqtcairopainter.cpp
@@ -18,6 +18,11 @@
**
**********************************************************************/
+// If USE_TDE_SPECIFIC_LIBRARIES is set, the painter will use certain TDE libraries
+// to increase painting performance. If this dependency is not desired and you can
+// live with the corresponding performance loss, comment out the following line:
+#define USE_TDE_SPECIFIC_LIBRARIES 1
+
#include "tqtcairopainter.h"
#define TQT_NO_COMPAT_NAMES
@@ -28,6 +33,10 @@
#include "tqfile.h"
#include "tqpaintdevicemetrics.h"
+#ifdef USE_TDE_SPECIFIC_LIBRARIES
+#include <kpixmapio.h>
+#endif // USE_TDE_SPECIFIC_LIBRARIES
+
#undef Qt
#define CAIRO_PEN_PIXEL_OFFSET (0.5)
@@ -661,7 +670,11 @@ void TQt3CairoPaintDevice::updateBrush(bool backgroundStroke, cairo_fill_rule_t
else {
TQPixmap *pm;
pm = m_brush.pixmap();
+#ifdef USE_TDE_SPECIFIC_LIBRARIES
+ brushImage = tdePixmapIO->convertToImage(*pm);
+#else // USE_TDE_SPECIFIC_LIBRARIES
brushImage = pm->convertToImage();
+#endif
}
cairo_surface_t* brushSurface = TQImageToCairoSurface(brushImage);
@@ -1228,6 +1241,11 @@ TQt3CairoPaintDevice::~TQt3CairoPaintDevice()
if (m_intermediateSurface) {
cairo_surface_destroy(m_intermediateSurface);
}
+#ifdef USE_TDE_SPECIFIC_LIBRARIES
+ if (tdePixmapIO) {
+ delete tdePixmapIO;
+ }
+#endif // USE_TDE_SPECIFIC_LIBRARIES
}
/*!
@@ -1247,6 +1265,12 @@ void TQt3CairoPaintDevice::init() {
m_tabStopArray = NULL;
m_transferNeeded = false;
+
+#ifdef USE_TDE_SPECIFIC_LIBRARIES
+ tdePixmapIO = new KPixmapIO();
+#else // USE_TDE_SPECIFIC_LIBRARIES
+ tdePixmapIO = NULL;
+#endif // USE_TDE_SPECIFIC_LIBRARIES
}
void TQt3CairoPaintDevice::updateSurfaceDimensions() const {
@@ -1534,10 +1558,19 @@ bool TQt3CairoPaintDevice::cmd( int c, TQPainter *pt, TQPDevCmdParam *p )
TQPixmap mergedPixmap = TQPixmap(bitmap->width(), bitmap->height());
mergedPixmap.fill(m_pen.color());
mergedPixmap.setMask(*bitmap);
+
+#ifdef USE_TDE_SPECIFIC_LIBRARIES
+ sourceImage = tdePixmapIO->convertToImage(mergedPixmap);
+#else // USE_TDE_SPECIFIC_LIBRARIES
sourceImage = mergedPixmap.convertToImage();
+#endif
}
else {
+#ifdef USE_TDE_SPECIFIC_LIBRARIES
+ sourceImage = tdePixmapIO->convertToImage(*p[1].pixmap);
+#else // USE_TDE_SPECIFIC_LIBRARIES
sourceImage = p[1].pixmap->convertToImage();
+#endif
}
cairo_surface_t* sourceSurface = TQImageToCairoSurface(sourceImage);
cairo_rectangle(FASTEST_AVAILABLE_PAINTER, p[0].rect->x(), p[0].rect->y(), p[0].rect->width(), p[0].rect->height());