ganeswidgets/inc/hgtransformedquadrenderer.h
changeset 2 49c70dcc3f17
child 5 4fa04caf0f43
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ganeswidgets/inc/hgtransformedquadrenderer.h	Fri May 14 16:57:01 2010 +0300
@@ -0,0 +1,63 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:    
+*
+*/
+
+#ifndef HGTRANSFORMEDQUADRENDERER_H
+#define HGTRANSFORMEDQUADRENDERER_H
+
+#include "hgquadrenderer.h"
+#include <qlist>
+#include <qimage>
+
+class QPoint;
+class QPainter;
+class QRectF;
+class QMatrix4x4;
+class QSize;
+class HgTransformedQuad;
+
+/**
+ * Abstract base class for quad renderers, that need to tranform quads manually. (using CPU)
+ */
+class HgTransformedQuadRenderer: public HgQuadRenderer
+{
+public:
+    
+    HgTransformedQuadRenderer(int maxQuads);
+    virtual ~HgTransformedQuadRenderer();    
+    
+    virtual HgQuad* getQuadAt(const QPointF& point) const;
+    virtual bool getQuadTranformedPointsByUserData(QPolygonF& points, const QVariant& userData) const;
+    virtual QList<HgQuad*> getVisibleQuads(const QRectF& rect) const;
+            
+protected:
+
+    // this must be called from inheriting class
+    void init(int maxQuads);
+    
+    virtual void transformQuads(const QMatrix4x4& view, const QMatrix4x4& proj, 
+        const QPointF& center, const QSizeF& windowSize);
+
+    virtual void drawTransformedQuads(QPainter* painter, const QRectF& rect);
+    
+    virtual HgTransformedQuad* createNativeQuad()=0;
+        
+private:
+    QList<HgTransformedQuad*> mTransformedQuads;    
+    QList<HgTransformedQuad*> mSortedQuads;    
+};
+
+#endif