Add world matrix stack

pull/1/head
Timothy Pearson 12 years ago
parent e9fa6f1ca5
commit 5fa60a7aba

@ -847,6 +847,7 @@ TQt3CairoPaintDevice::TQt3CairoPaintDevice( cairo_surface_t *cairosurface )
: TQPaintDevice( TQInternal::Picture | TQInternal::ExternalDevice ), m_intermediateSurface(NULL), m_painter(NULL), m_devicePainter(NULL) : TQPaintDevice( TQInternal::Picture | TQInternal::ExternalDevice ), m_intermediateSurface(NULL), m_painter(NULL), m_devicePainter(NULL)
{ {
m_surface = cairosurface; m_surface = cairosurface;
m_worldMatrixStack.setAutoDelete(TRUE);
} }
/*! /*!
@ -1174,6 +1175,7 @@ bool TQt3CairoPaintDevice::cmd( int c, TQPainter *pt, TQPDevCmdParam *p )
setCairoTransformations(); setCairoTransformations();
m_clipRegion = TQImage(); m_clipRegion = TQImage();
m_clipRegionEnabled = false; m_clipRegionEnabled = false;
m_worldMatrixStack.clear();
} }
break; break;
case PdcEnd: case PdcEnd:
@ -1386,16 +1388,28 @@ bool TQt3CairoPaintDevice::cmd( int c, TQPainter *pt, TQPDevCmdParam *p )
} }
} }
break; break;
#if 0
#ifndef QT_NO_TRANSFORMATIONS
case PdcSaveWMatrix: case PdcSaveWMatrix:
painter->saveWorldMatrix(); if (p) {
const TQWMatrix* tqt3matrix = p[0].matrix;
m_worldMatrixStack.push(new TQWMatrix(*tqt3matrix));
}
break; break;
case PdcRestoreWMatrix: 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; break;
#endif
#endif
case PdcSetClip: case PdcSetClip:
if ((p) && (m_painter)) { if ((p) && (m_painter)) {
m_clipRegionEnabled = p[0].ival; m_clipRegionEnabled = p[0].ival;

@ -29,11 +29,14 @@
#include "ntqbrush.h" #include "ntqbrush.h"
#include "ntqfont.h" #include "ntqfont.h"
#include "ntqimage.h" #include "ntqimage.h"
#include "ntqptrstack.h"
#include "ntqpainter.h" #include "ntqpainter.h"
#include <cairo.h> #include <cairo.h>
#include <pango/pangocairo.h> #include <pango/pangocairo.h>
typedef TQPtrStack<TQWMatrix> TQWMatrixStack;
class Q_EXPORT TQt3CairoPaintDevice : public TQPaintDevice // picture class class Q_EXPORT TQt3CairoPaintDevice : public TQPaintDevice // picture class
{ {
public: public:
@ -85,6 +88,8 @@ class Q_EXPORT TQt3CairoPaintDevice : public TQPaintDevice // picture class
TQFont m_font; TQFont m_font;
TQImage m_clipRegion; TQImage m_clipRegion;
bool m_clipRegionEnabled; bool m_clipRegionEnabled;
TQWMatrixStack m_worldMatrixStack;
}; };
#endif // TDEQT4PAINTER_H #endif // TDEQT4PAINTER_H

Loading…
Cancel
Save