Let me repost as I was subscribed with another address: Hi there,
To get the right result you will need to scale the contents and not zoom it, as zooming is not the same as just applying a scale. Scaling the QPainter would do. On the other hand, you cannot ensure a really smooth pinch animation as you repaint the whole time without being able to ensure how long that repaint will take. What you really should do is to use the QGraphicsWebView as it supports a tiled backing store. Then you can pinch the following way: 1) freeze the backing store 2) apply a scale to the QGraphicsWebView (this will scale the frozen tiles (pixmaps)) 3) unfreeze the backing store (it will now repaint and become crisp) It would be nice if you could add such support to our demo/test browser QtTestBrowser found in our webkit repository. Just to make it clear, with the QGraphicsWebView you do not need to change the QPainter directly. A QGraphicsWebView is a QGraphicsWidget and it has a ::setScale() method, which you can use. I forgot to mention one more thing: 1) You need to enable resizesToContents if you are going to scale the QGraphicsWebView, which means that you need to implement your own panning as well. ie have a QGraphicsItem serve as a view to your QGraphicsWebView. Every time, the viewport is (re)sized, or a pinch/panning animation has ended, you will need to call setActualVisibleContentsRect(). Do not do this during animations for performance reasons. QtTestBrowser shows how to use resizesToContents with tiling etc, but it still lacks the setActualVisibleContentsRect() code, which is needed: 1) for not ending up in infinit tiling creation (it needs an initial size; the (re)sizing) 2) for programmatic scrolling to work, anchor links (it needs the new visible rect after each pinch, panning ended) Cheers, Kenneth On Sat, Jan 8, 2011 at 10:11 AM, Harri Pasanen <[email protected]> wrote: > I wonder if pinch zoom is on the roadmap for webkit? > > Meanwhile I rolled my own simple implementation which is better than nothing, > but not perfect. In my code I'm scaling a pixmap for fluid motion, and at the > end I call setZoomFactor. The relevant code is visible here: > http://pastebin.com/VzimAPD0 > > It is usable in that it works fluidly and gives you a rough idea what the > resulting zoom will be. But pixel positions move around and the end result is > rarely exact to the zoom preview. > > On Symbian3 the native browser's pinch zoom is much more faithful to pixel > positions and sizing of the preview. So that must be doing something more > clever, any hints what? > > Better yet, perhaps this is already implemented and I just have to be patient > and it will be delivered to my door... > > > Harri > http://mpaja.com/ > _______________________________________________ > webkit-qt mailing list > [email protected] > http://lists.webkit.org/mailman/listinfo.cgi/webkit-qt > -- Kenneth Rohde Christiansen Senior Engineer Application and Service Frameworks, Nokia Danmark A/S Phone +45 4093 0598 / E-mail kenneth.christiansen at gmail.com http://codeposts.blogspot.com ﹆﹆﹆ _______________________________________________ webkit-qt mailing list [email protected] http://lists.webkit.org/mailman/listinfo.cgi/webkit-qt
