From 5fa60a7abaa72ba95b90a4587476b940e764d889 Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Mon, 17 Sep 2012 15:20:04 -0500 Subject: Add world matrix stack --- tdegtk/tqtcairopainter.cpp | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) (limited to 'tdegtk/tqtcairopainter.cpp') diff --git a/tdegtk/tqtcairopainter.cpp b/tdegtk/tqtcairopainter.cpp index 75d1b99..0e8da20 100644 --- a/tdegtk/tqtcairopainter.cpp +++ b/tdegtk/tqtcairopainter.cpp @@ -847,6 +847,7 @@ TQt3CairoPaintDevice::TQt3CairoPaintDevice( cairo_surface_t *cairosurface ) : TQPaintDevice( TQInternal::Picture | TQInternal::ExternalDevice ), m_intermediateSurface(NULL), m_painter(NULL), m_devicePainter(NULL) { m_surface = cairosurface; + m_worldMatrixStack.setAutoDelete(TRUE); } /*! @@ -1174,6 +1175,7 @@ bool TQt3CairoPaintDevice::cmd( int c, TQPainter *pt, TQPDevCmdParam *p ) setCairoTransformations(); m_clipRegion = TQImage(); m_clipRegionEnabled = false; + m_worldMatrixStack.clear(); } break; case PdcEnd: @@ -1386,16 +1388,28 @@ bool TQt3CairoPaintDevice::cmd( int c, TQPainter *pt, TQPDevCmdParam *p ) } } break; -#if 0 -#ifndef QT_NO_TRANSFORMATIONS case PdcSaveWMatrix: - painter->saveWorldMatrix(); + if (p) { + const TQWMatrix* tqt3matrix = p[0].matrix; + m_worldMatrixStack.push(new TQWMatrix(*tqt3matrix)); + } break; case PdcRestoreWMatrix: - painter->restoreWorldMatrix(); + if (p) { + if (!m_worldMatrixStack.isEmpty()) { + TQWMatrix* matrix = m_worldMatrixStack.pop(); + + // Set world matrix + TQPDevCmdParam param[2]; + int command = PdcSetWMatrix; + param[0].matrix = matrix; + param[1].ival = 0; + cmd(command, pt, param); + + delete matrix; + } + } break; -#endif -#endif case PdcSetClip: if ((p) && (m_painter)) { m_clipRegionEnabled = p[0].ival; -- cgit v1.2.3