ganeswidgets/src/hgqtquadrenderer.cpp
changeset 17 a10844a9914d
parent 5 4fa04caf0f43
child 20 a60f8b6b1d32
equal deleted inserted replaced
15:1ef5359bf0f4 17:a10844a9914d
   154     ~HgQtQuad()
   154     ~HgQtQuad()
   155     {
   155     {
   156         
   156         
   157     }
   157     }
   158 
   158 
   159     void draw(QPainter* painter, const QRectF& rect)    
   159     void draw(QPainter* painter, const QRectF& rect, const QTransform& transform)    
   160     {
   160     {
   161         if (!quad()->visible())
   161         if (!quad()->visible())
   162             return;
   162             return;
   163                 
   163                 
   164         HgQtImage* image = (HgQtImage*)quad()->image();        
   164         HgQtImage* image = (HgQtImage*)quad()->image();        
   169             return;
   169             return;
   170         
   170         
   171         if (image->pixmap().isNull())
   171         if (image->pixmap().isNull())
   172             image = mRenderer->defaultImage();
   172             image = mRenderer->defaultImage();
   173         
   173         
   174         drawImage(painter, image, rect);                      
   174         drawImage(painter, image, rect, transform);                      
   175     }
   175     }
   176 
   176 
   177     
   177     
   178 private:
   178 private:
   179 
   179 
   194         img.append(QPointF(0,0));
   194         img.append(QPointF(0,0));
   195 
   195 
   196         QTransform::quadToQuad(img, poly, tm);
   196         QTransform::quadToQuad(img, poly, tm);
   197     }
   197     }
   198     
   198     
   199     void drawImage(QPainter* painter, HgQtImage* image, const QRectF& rect)
   199     void drawImage(QPainter* painter, HgQtImage* image, const QRectF& rect, const QTransform& transform)
   200     {
   200     {
   201         const QPixmap& pixmap = image->pixmap();
   201         const QPixmap& pixmap = image->pixmap();
   202         
   202         
   203         if (pixmap.isNull())            
   203         if (pixmap.isNull())            
   204             return;
   204             return;
   217             return;
   217             return;
   218         }
   218         }
   219         
   219         
   220         computeWarpMatrix(mTransform, image->width(), image->height(), points);
   220         computeWarpMatrix(mTransform, image->width(), image->height(), points);
   221         
   221         
   222         QTransform base = painter->transform(); 
   222         painter->setTransform(mTransform * transform);    
   223         painter->setTransform(mTransform * base);    
       
   224         painter->drawPixmap(QPointF(0,0), pixmap);
   223         painter->drawPixmap(QPointF(0,0), pixmap);
   225         painter->setTransform(base);
       
   226     }
   224     }
   227 
   225 
   228     HgQtQuadRenderer* mRenderer;
   226     HgQtQuadRenderer* mRenderer;
   229     QTransform mTransform;
   227     QTransform mTransform;
   230     QTransform mMirrorTransform;
   228     QTransform mMirrorTransform;
   265 
   263 
   266     if (mReflectionsEnabled) 
   264     if (mReflectionsEnabled) 
   267     {
   265     {
   268         mIsReflection = true;
   266         mIsReflection = true;
   269 
   267 
   270         drawTransformedQuads(painter, rect);
   268         drawTransformedQuads(painter, rect, temp);    
   271     
   269 
       
   270         painter->setTransform(temp);        
   272         drawFloor(painter, rect);
   271         drawFloor(painter, rect);
   273     }
   272     }
   274     
   273     
   275     mIsReflection = false;
   274     mIsReflection = false;
   276     
   275     
   277     drawTransformedQuads(painter, rect);
   276     drawTransformedQuads(painter, rect, temp);
   278         
   277         
   279     painter->setTransform(temp);
   278     painter->setTransform(temp);
   280     
   279     
   281 }
   280 }
   282 
   281