ganeswidgets/inc/hgquadrenderer.h
changeset 2 49c70dcc3f17
parent 1 e48454f237ca
child 5 4fa04caf0f43
equal deleted inserted replaced
1:e48454f237ca 2:49c70dcc3f17
    27 class QPainter;
    27 class QPainter;
    28 class QRectF;
    28 class QRectF;
    29 class QMatrix4x4;
    29 class QMatrix4x4;
    30 class QPolygonF;
    30 class QPolygonF;
    31 class HgImage;
    31 class HgImage;
    32 class HgImageFader;
    32 
    33 /**
    33 /**
    34  *
    34  *
    35  * Abstract class to be inherited by differend quad renderer implementations.
    35  * Abstract class to be inherited by differend quad renderer implementations.
    36  * One could for example implement this in OpenGL instead of OpenVG.
    36  * One could for example implement this in OpenGL instead of OpenVG.
    37  */
    37  */
    56      * Gets quads index at pointer position.
    56      * Gets quads index at pointer position.
    57      * @param pointer position.
    57      * @param pointer position.
    58      * @return quad under the pointer position or -1 if nothing is there.
    58      * @return quad under the pointer position or -1 if nothing is there.
    59      */
    59      */
    60     virtual HgQuad* getQuadAt(const QPointF& point) const = 0;
    60     virtual HgQuad* getQuadAt(const QPointF& point) const = 0;
       
    61 
    61     /**
    62     /**
    62      * Transform quads with view and projection transformation for rendering.
    63      * Rasterize 3D quads to 2D screen using painter or underlying Native graphics API.
    63      * @param view view transformation matrix.
    64      * This should be called inside Widgets draw method.
    64      * @param projection transformation matrix.
    65      * @param painter QPainter-object.
    65      * @rect window rectangle.
    66      * @param rect window rectangle.
       
    67      * @param viewMatrix view matrix
       
    68      * @param projectionMatrix projection matrix
       
    69      * @param orientation current screen orientation
    66      */
    70      */
    67     virtual void transformQuads(const QMatrix4x4& view, const QMatrix4x4& proj, 
    71     virtual void drawQuads(QPainter* painter, const QRectF& rect, 
    68         const QRectF& rect)=0;
    72         const QMatrix4x4& viewMatrix, const QMatrix4x4& projectionMatrix, 
    69     /**
    73         const Qt::Orientation orientation, 
    70      * Draw transformed quads using painter or underlying Native graphics API.
    74         const QTransform& sceneTransform)=0;
    71      * This should be called inside Widgets draw method.
       
    72      * @param rect window rectangle.
       
    73      * @param painter QPainter-object.
       
    74      */
       
    75     virtual void drawQuads(const QRectF& rect, QPainter* painter)=0;
       
    76     
    75     
    77     /**
    76     /**
    78      * 
    77      * 
    79      */
    78      */
    80     virtual bool getQuadTranformedPoints(QPolygonF& points, int index) const=0;
    79     virtual bool getQuadTranformedPointsByUserData(QPolygonF& points, const QVariant& userData) const=0;
    81     
    80     
    82     /**
    81     /**
    83      * 
    82      * 
    84      */
    83      */
    85     virtual void setMirroringPlaneY(qreal mirroringPlaneY);
    84     virtual void setMirroringPlaneY(qreal mirroringPlaneY);
    86 
    85 
    87     /**
    86     /**
    88      * 
    87      * 
    89      */
    88      */
    90     virtual HgImage* createNativeImage()=0;
    89     virtual HgImage* createNativeImage()=0;
    91     
    90         
    92     /**
       
    93      * 
       
    94      */
       
    95     virtual void setImageFader(HgImageFader* fader);
       
    96     
       
    97     /**
    91     /**
    98      * 
    92      * 
    99      */
    93      */
   100     virtual QList<HgQuad*> getVisibleQuads(const QRectF& rect) const=0;
    94     virtual QList<HgQuad*> getVisibleQuads(const QRectF& rect) const=0;
   101     
    95     
       
    96     /**
       
    97      * 
       
    98      */
   102     virtual void setDefaultImage(QImage defaultImage);
    99     virtual void setDefaultImage(QImage defaultImage);
   103 
   100 
   104     /**
   101     /**
   105      * 
   102      * 
   106      */
   103      */
   114     /**
   111     /**
   115      * 
   112      * 
   116      */
   113      */
   117     virtual QImage getDefaultImage() const;
   114     virtual QImage getDefaultImage() const;
   118     
   115     
       
   116     /**
       
   117      * 
       
   118      */
       
   119     virtual void enableReflections(bool enabled);
       
   120     
       
   121     /**
       
   122      * 
       
   123      */
       
   124     virtual bool reflectionsEnabled() const;
       
   125     
   119 protected:    
   126 protected:    
   120     HgQuadRenderer(int maxQuads);
   127     HgQuadRenderer(int maxQuads);
   121 
   128 
   122     QList<HgQuad*> mQuads;
   129     QList<HgQuad*> mQuads;
   123     qreal mMirroringPlaneY;
   130     qreal mMirroringPlaneY;
   124     HgImageFader* mImageFader;
       
   125     QImage mDefaultImage;
   131     QImage mDefaultImage;
   126     QVector2D mTranslation;
   132     QVector2D mTranslation;
       
   133     bool mReflectionsEnabled;
   127 };
   134 };
   128 
   135 
   129 #endif
   136 #endif