Changeset 136000 in webkit
- Timestamp:
- Nov 28, 2012 5:09:34 AM (11 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r135999 r136000 1 2012-11-28 Kenneth Rohde Christiansen <kenneth@webkit.org> 2 3 [EFL][WK2] MiniBrowser rendering should not get blurry when scrolled down with different scale values 4 https://bugs.webkit.org/show_bug.cgi?id=103079 5 6 Reviewed by Simon Hausmann. 7 8 The problem was caused because we moved the page inside our viewport 9 in non-discrete units. 10 11 Now instead of changing the content visible in our viewport by 12 applying scale, and then transforming the CSS offset, we now first 13 discretely position the page in UI coordinates. 14 15 This patch also removes some dead code. 16 17 * UIProcess/API/efl/EwkViewImpl.cpp: 18 (EwkViewImpl::transformFromScene): 19 (EwkViewImpl::displayTimerFired): 20 21 Transform according to the page position. 22 23 * UIProcess/API/efl/EwkViewImpl.h: 24 (EwkViewImpl::setPagePosition): Now stores a float. 25 (EwkViewImpl::discretePagePosition): Returns the discrete page position. 26 (EwkViewImpl): 27 * UIProcess/efl/PageClientLegacyImpl.cpp: 28 (WebKit::PageClientLegacyImpl::updateViewportSize): 29 (WebKit::PageClientLegacyImpl::pageDidRequestScroll): 30 * UIProcess/efl/PageViewportControllerClientEfl.cpp: 31 (WebKit::PageViewportControllerClientEfl::PageViewportControllerClientEfl): 32 (WebKit::PageViewportControllerClientEfl::setViewportPosition): Convert to page position. 33 (WebKit::PageViewportControllerClientEfl::setContentsScale): 34 (WebKit::PageViewportControllerClientEfl::didResumeContent): 35 * UIProcess/efl/PageViewportControllerClientEfl.h: 36 (WebKit::PageViewportControllerClientEfl::scaleFactor): Use the value 37 from the view directly. 38 (WebKit::PageViewportControllerClientEfl::contentPosition): 39 (PageViewportControllerClientEfl): 40 1 41 2012-11-28 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> 2 42 -
trunk/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp
r135999 r136000 292 292 293 293 #if USE(TILED_BACKING_STORE) 294 transform.translate(m_scrollPosition.x(), m_scrollPosition.y());295 294 transform.scale(1 / m_scaleFactor); 295 transform.translate(discretePagePosition().x(), discretePagePosition().y()); 296 296 #endif 297 297 … … 384 384 385 385 RefPtr<cairo_t> graphicsContext = adoptRef(cairo_create(surface.get())); 386 cairo_translate(graphicsContext.get(), - discretePagePosition().x(), - discretePagePosition().y()); 386 387 cairo_scale(graphicsContext.get(), m_scaleFactor, m_scaleFactor); 387 cairo_translate(graphicsContext.get(), -m_scrollPosition.x(), -m_scrollPosition.y());388 388 renderer->paintToGraphicsContext(graphicsContext.get()); 389 389 evas_object_image_data_update_add(sd->image, 0, 0, viewport.width(), viewport.height()); -
trunk/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h
r135999 r136000 29 29 #include "WKRetainPtr.h" 30 30 #include <Evas.h> 31 #include <WebCore/FloatPoint.h> 31 32 #include <WebCore/IntRect.h> 32 33 #include <WebCore/TextDirection.h> … … 201 202 float scaleFactor() const { return m_scaleFactor; } 202 203 203 void set ScrollPosition(WebCore::IntPoint position) { m_scrollPosition = position; }204 const WebCore::IntPoint scrollPosition() const { return m_scrollPosition; }204 void setPagePosition(const WebCore::FloatPoint& position) { m_pagePosition = position; } 205 const WebCore::IntPoint discretePagePosition() const { return roundedIntPoint(m_pagePosition); } 205 206 #endif 206 207 … … 262 263 #if USE(TILED_BACKING_STORE) 263 264 float m_scaleFactor; 264 WebCore:: IntPoint m_scrollPosition;265 WebCore::FloatPoint m_pagePosition; 265 266 #endif 266 267 OwnPtr<EwkSettings> m_settings; -
trunk/Source/WebKit2/UIProcess/efl/PageClientLegacyImpl.cpp
r134251 r136000 50 50 { 51 51 #if USE(TILED_BACKING_STORE) 52 m_viewImpl->page()->drawingArea()->setVisibleContentsRect(IntRect(m_viewImpl-> scrollPosition(), size), m_viewImpl->scaleFactor(), FloatPoint());52 m_viewImpl->page()->drawingArea()->setVisibleContentsRect(IntRect(m_viewImpl->discretePagePosition(), size), m_viewImpl->scaleFactor(), FloatPoint()); 53 53 #else 54 54 UNUSED_PARAM(size); … … 87 87 void PageClientLegacyImpl::pageDidRequestScroll(const IntPoint& position) 88 88 { 89 m_viewImpl->set ScrollPosition(position);89 m_viewImpl->setPagePosition(FloatPoint(position)); 90 90 m_viewImpl->update(); 91 91 } -
trunk/Source/WebKit2/UIProcess/efl/PageViewportControllerClientEfl.cpp
r135453 r136000 41 41 PageViewportControllerClientEfl::PageViewportControllerClientEfl(EwkViewImpl* viewImpl) 42 42 : m_viewImpl(viewImpl) 43 , m_scaleFactor(1)44 43 , m_controller(0) 45 44 { … … 69 68 } 70 69 71 void PageViewportControllerClientEfl::setVisibleContentsRect(const IntPoint& newScrollPosition, float newScale, const FloatPoint& trajectory)72 {73 m_scaleFactor = newScale;74 m_scrollPosition = newScrollPosition;75 76 ASSERT(m_controller);77 m_controller->didChangeContentsVisibility(m_scrollPosition, m_scaleFactor, trajectory);78 }79 80 70 void PageViewportControllerClientEfl::didChangeContentsSize(const WebCore::IntSize& contentsSize) 81 71 { … … 86 76 void PageViewportControllerClientEfl::setViewportPosition(const WebCore::FloatPoint& contentsPoint) 87 77 { 88 IntPoint position(contentsPoint.x(), contentsPoint.y()); 89 setVisibleContentsRect(position, m_scaleFactor, FloatPoint()); 90 m_viewImpl->setScrollPosition(position); 78 m_contentPosition = roundedIntPoint(contentsPoint); 79 80 FloatPoint pos(contentsPoint); 81 pos.scale(scaleFactor(), scaleFactor()); 82 m_viewImpl->setPagePosition(pos); 83 84 m_controller->didChangeContentsVisibility(m_contentPosition, scaleFactor()); 91 85 } 92 86 93 87 void PageViewportControllerClientEfl::setContentsScale(float newScale, bool treatAsInitialValue) 94 88 { 95 if (treatAsInitialValue) { 96 m_scrollPosition = IntPoint(); 97 m_viewImpl->setScrollPosition(IntPoint()); 98 } 99 m_scaleFactor = newScale; 89 if (treatAsInitialValue) 90 setViewportPosition(FloatPoint(0, 0)); 91 100 92 m_viewImpl->setScaleFactor(newScale); 101 93 } … … 104 96 { 105 97 ASSERT(m_controller); 106 m_controller->didChangeContentsVisibility(m_ scrollPosition, m_scaleFactor);98 m_controller->didChangeContentsVisibility(m_contentPosition, scaleFactor()); 107 99 } 108 100 -
trunk/Source/WebKit2/UIProcess/efl/PageViewportControllerClientEfl.h
r133464 r136000 29 29 #if USE(TILED_BACKING_STORE) 30 30 31 #include "EwkViewImpl.h" 31 32 #include "PageClientBase.h" 32 33 #include "PageViewportControllerClient.h" 33 34 #include <wtf/PassOwnPtr.h> 34 35 class EwkViewImpl;36 35 37 36 namespace WebKit { … … 47 46 DrawingAreaProxy* drawingArea() const; 48 47 WebCore::IntSize viewSize() { return m_viewportSize; } 49 float scaleFactor() const { return m_ scaleFactor; }50 WebCore::IntPoint scrollPosition() { return m_scrollPosition; }48 float scaleFactor() const { return m_viewImpl->scaleFactor(); } 49 WebCore::IntPoint contentPosition() const { return m_contentPosition; } 51 50 52 51 void updateViewportSize(const WebCore::IntSize& viewportSize); 53 void setVisibleContentsRect(const WebCore::IntPoint&, float, const WebCore::FloatPoint&);54 52 void setRendererActive(bool); 55 53 … … 69 67 EwkViewImpl* m_viewImpl; 70 68 WebCore::IntSize m_viewportSize; 71 WebCore::IntPoint m_scrollPosition; 72 float m_scaleFactor; 69 WebCore::IntPoint m_contentPosition; 73 70 PageViewportController* m_controller; 74 71 };
Note: See TracChangeset
for help on using the changeset viewer.