Title: [133423] trunk/Source/WebKit2
Revision
133423
Author
[email protected]
Date
2012-11-04 08:02:29 -0800 (Sun, 04 Nov 2012)

Log Message

[EFL] Unify transforms in WK2
https://bugs.webkit.org/show_bug.cgi?id=101051

Reviewed by Simon Hausmann.

Move our transforms into EwkViewImpl and use them
everywhere needed.

* UIProcess/API/efl/EwkViewImpl.cpp:
(EwkViewImpl::smartData):
(EwkViewImpl::transformFromScene):
(EwkViewImpl::transformToScene):
(EwkViewImpl::transformToScreen):
(EwkViewImpl::displayTimerFired):
* UIProcess/API/efl/EwkViewImpl.h:
(WebCore):
(EwkViewImpl):
(EwkViewImpl::pageViewportControllerClient):
(EwkViewImpl::pageViewportController):
* UIProcess/API/efl/ewk_view.cpp:
(_ewk_view_smart_mouse_wheel):
(_ewk_view_smart_mouse_down):
(_ewk_view_smart_mouse_up):
(_ewk_view_smart_mouse_move):
(ewk_view_feed_touch_event):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (133422 => 133423)


--- trunk/Source/WebKit2/ChangeLog	2012-11-04 14:57:52 UTC (rev 133422)
+++ trunk/Source/WebKit2/ChangeLog	2012-11-04 16:02:29 UTC (rev 133423)
@@ -1,3 +1,31 @@
+2012-11-02  Kenneth Rohde Christiansen  <[email protected]>
+
+        [EFL] Unify transforms in WK2
+        https://bugs.webkit.org/show_bug.cgi?id=101051
+
+        Reviewed by Simon Hausmann.
+
+        Move our transforms into EwkViewImpl and use them
+        everywhere needed.
+
+        * UIProcess/API/efl/EwkViewImpl.cpp:
+        (EwkViewImpl::smartData):
+        (EwkViewImpl::transformFromScene):
+        (EwkViewImpl::transformToScene):
+        (EwkViewImpl::transformToScreen):
+        (EwkViewImpl::displayTimerFired):
+        * UIProcess/API/efl/EwkViewImpl.h:
+        (WebCore):
+        (EwkViewImpl):
+        (EwkViewImpl::pageViewportControllerClient):
+        (EwkViewImpl::pageViewportController):
+        * UIProcess/API/efl/ewk_view.cpp:
+        (_ewk_view_smart_mouse_wheel):
+        (_ewk_view_smart_mouse_down):
+        (_ewk_view_smart_mouse_up):
+        (_ewk_view_smart_mouse_move):
+        (ewk_view_feed_touch_event):
+
 2012-11-03  Alexey Proskuryakov  <[email protected]>
 
         Get rid of USE(CFURLSTORAGESESSIONS)

Modified: trunk/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp (133422 => 133423)


--- trunk/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp	2012-11-04 14:57:52 UTC (rev 133422)
+++ trunk/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp	2012-11-04 16:02:29 UTC (rev 133423)
@@ -51,6 +51,7 @@
 #include "ewk_view.h"
 #include "ewk_view_private.h"
 #include <Ecore_Evas.h>
+#include <Ecore_X.h>
 #include <Edje.h>
 #include <WebCore/Cursor.h>
 
@@ -169,7 +170,7 @@
     EwkViewImpl::removeFromPageViewMap(this);
 }
 
-Ewk_View_Smart_Data* EwkViewImpl::smartData()
+Ewk_View_Smart_Data* EwkViewImpl::smartData() const
 {
     return static_cast<Ewk_View_Smart_Data*>(evas_object_smart_data_get(m_view));
 }
@@ -239,6 +240,55 @@
     ecore_evas_object_cursor_set(ecoreEvas, cursorObject.release().leakRef(), EVAS_LAYER_MAX, hotspotX, hotspotY);
 }
 
+AffineTransform EwkViewImpl::transformFromScene() const
+{
+    AffineTransform transform;
+
+#if USE(TILED_BACKING_STORE)
+    IntPoint scrollPos = pageViewportControllerClient()->scrollPosition();
+    transform.translate(scrollPos.x(), scrollPos.y());
+    transform.scale(1 / pageViewportControllerClient()->scaleFactor());
+#endif
+
+    Ewk_View_Smart_Data* sd = smartData();
+    transform.translate(-sd->view.x, -sd->view.y);
+
+    return transform;
+}
+
+AffineTransform EwkViewImpl::transformToScene() const
+{
+    return transformFromScene().inverse();
+}
+
+AffineTransform EwkViewImpl::transformToScreen() const
+{
+    AffineTransform transform;
+
+    int windowGlobalX = 0;
+    int windowGlobalY = 0;
+
+    Ewk_View_Smart_Data* sd = smartData();
+
+#ifdef HAVE_ECORE_X
+    Ecore_Evas* ecoreEvas = ecore_evas_ecore_evas_get(sd->base.evas);
+    Ecore_X_Window window = ecore_evas_software_x11_window_get(ecoreEvas); // Returns 0 if none.
+
+    int x, y; // x, y are relative to parent (in a reparenting window manager).
+    while (window) {
+        ecore_x_window_geometry_get(window, &x, &y, 0, 0);
+        windowGlobalX += x;
+        windowGlobalY += y;
+        window = ecore_x_window_parent_get(window);
+    }
+#endif
+
+    transform.translate(-sd->view.x, -sd->view.y);
+    transform.translate(windowGlobalX, windowGlobalY);
+
+    return transform;
+}
+
 void EwkViewImpl::displayTimerFired(Timer<EwkViewImpl>*)
 {
 #if USE(COORDINATED_GRAPHICS)
@@ -249,19 +299,11 @@
     // We are supposed to clip to the actual viewport, nothing less.
     IntRect viewport(sd->view.x, sd->view.y, sd->view.w, sd->view.h);
 
-    IntPoint scrollPosition = m_pageViewportControllerClient->scrollPosition();
-    float scaleFactor = m_pageViewportControllerClient->scaleFactor();
-
-    WebCore::TransformationMatrix matrix;
-    matrix.translate(viewport.x(), viewport.y());
-    matrix.scale(scaleFactor);
-    matrix.translate(-scrollPosition.x(), -scrollPosition.y());
-
     LayerTreeRenderer* renderer = page()->drawingArea()->layerTreeCoordinatorProxy()->layerTreeRenderer();
     renderer->setActive(true);
     renderer->syncRemoteContent();
 
-    renderer->paintToCurrentGLContext(matrix, /* opacity */ 1, viewport);
+    renderer->paintToCurrentGLContext(transformToScene().toTransformationMatrix(), /* opacity */ 1, viewport);
 
     evas_object_image_data_update_add(sd->image, viewport.x(), viewport.y(), viewport.width(), viewport.height());
 #endif

Modified: trunk/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h (133422 => 133423)


--- trunk/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h	2012-11-04 14:57:52 UTC (rev 133422)
+++ trunk/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h	2012-11-04 16:02:29 UTC (rev 133423)
@@ -62,6 +62,7 @@
 }
 
 namespace WebCore {
+class AffineTransform;
 class Color;
 class Cursor;
 class IntSize;
@@ -107,6 +108,10 @@
     bool isFocused() const;
     bool isVisible() const;
 
+    WebCore::AffineTransform transformToScene() const;
+    WebCore::AffineTransform transformFromScene() const;
+    WebCore::AffineTransform transformToScreen() const;
+
     const char* url() const { return m_url; }
     const char* faviconURL() const { return m_faviconURL; }
     const char* title() const;
@@ -174,8 +179,8 @@
     unsigned long long informDatabaseQuotaReached(const String& databaseName, const String& displayName, unsigned long long currentQuota, unsigned long long currentOriginUsage, unsigned long long currentDatabaseUsage, unsigned long long expectedUsage);
 
 #if USE(TILED_BACKING_STORE)
-    WebKit::PageViewportControllerClientEfl* pageViewportControllerClient() { return m_pageViewportControllerClient.get(); }
-    WebKit::PageViewportController* pageViewportController() { return m_pageViewportController.get(); }
+    WebKit::PageViewportControllerClientEfl* pageViewportControllerClient() const { return m_pageViewportControllerClient.get(); }
+    WebKit::PageViewportController* pageViewportController() const { return m_pageViewportController.get(); }
 #endif
 #if USE(ACCELERATED_COMPOSITING)
     Evas_GL* evasGL() { return m_evasGL.get(); }
@@ -188,7 +193,7 @@
     void informURLChange();
 
 private:
-    inline Ewk_View_Smart_Data* smartData();
+    inline Ewk_View_Smart_Data* smartData() const;
     void displayTimerFired(WebCore::Timer<EwkViewImpl>*);
 
     void informIconChange();

Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp (133422 => 133423)


--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp	2012-11-04 14:57:52 UTC (rev 133422)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp	2012-11-04 16:02:29 UTC (rev 133423)
@@ -50,7 +50,6 @@
 #include "ewk_settings_private.h"
 #include "ewk_view_private.h"
 #include <Ecore_Evas.h>
-#include <Ecore_X.h>
 #include <WebKit2/WKPageGroup.h>
 #include <wtf/text/CString.h>
 
@@ -169,53 +168,11 @@
     return true;
 }
 
-static AffineTransform toDeviceScreenTransform(Ewk_View_Smart_Data* smartData)
-{
-    AffineTransform transform;
-    EWK_VIEW_IMPL_GET_BY_SD_OR_RETURN(smartData, impl, transform);
-
-    int windowGlobalX = 0;
-    int windowGlobalY = 0;
-
-#ifdef HAVE_ECORE_X
-    Ecore_Evas* ecoreEvas = ecore_evas_ecore_evas_get(smartData->base.evas);
-    Ecore_X_Window window = ecore_evas_software_x11_window_get(ecoreEvas); // Returns 0 if none.
-
-    int x, y; // x, y are relative to parent (in a reparenting window manager).
-    while (window) {
-        ecore_x_window_geometry_get(window, &x, &y, 0, 0);
-        windowGlobalX += x;
-        windowGlobalY += y;
-        window = ecore_x_window_parent_get(window);
-    }
-#endif
-
-    transform.translate(-smartData->view.x, -smartData->view.y);
-    transform.translate(windowGlobalX, windowGlobalY);
-
-    return transform;
-}
-
-static AffineTransform toWebContentTransform(Ewk_View_Smart_Data* smartData)
-{
-    AffineTransform transform;
-    EWK_VIEW_IMPL_GET_BY_SD_OR_RETURN(smartData, impl, transform);
-
-#if USE(TILED_BACKING_STORE)
-    IntPoint scrollPos = impl->pageViewportControllerClient()->scrollPosition();
-    transform.translate(scrollPos.x(), scrollPos.y());
-    transform.scale(1 / impl->pageViewportControllerClient()->scaleFactor());
-#endif
-    transform.translate(-smartData->view.x, -smartData->view.y);
-
-    return transform;
-}
-
 static Eina_Bool _ewk_view_smart_mouse_wheel(Ewk_View_Smart_Data* smartData, const Evas_Event_Mouse_Wheel* wheelEvent)
 {
     EWK_VIEW_IMPL_GET_BY_SD_OR_RETURN(smartData, impl, false);
 
-    impl->page()->handleWheelEvent(NativeWebWheelEvent(wheelEvent, toWebContentTransform(smartData), toDeviceScreenTransform(smartData)));
+    impl->page()->handleWheelEvent(NativeWebWheelEvent(wheelEvent, impl->transformFromScene(), impl->transformToScreen()));
     return true;
 }
 
@@ -223,7 +180,7 @@
 {
     EWK_VIEW_IMPL_GET_BY_SD_OR_RETURN(smartData, impl, false);
 
-    impl->page()->handleMouseEvent(NativeWebMouseEvent(downEvent, toWebContentTransform(smartData), toDeviceScreenTransform(smartData)));
+    impl->page()->handleMouseEvent(NativeWebMouseEvent(downEvent, impl->transformFromScene(), impl->transformToScreen()));
     return true;
 }
 
@@ -231,7 +188,7 @@
 {
     EWK_VIEW_IMPL_GET_BY_SD_OR_RETURN(smartData, impl, false);
 
-    impl->page()->handleMouseEvent(NativeWebMouseEvent(upEvent, toWebContentTransform(smartData), toDeviceScreenTransform(smartData)));
+    impl->page()->handleMouseEvent(NativeWebMouseEvent(upEvent, impl->transformFromScene(), impl->transformToScreen()));
 
     InputMethodContextEfl* inputMethodContext = impl->inputMethodContext();
     if (inputMethodContext)
@@ -244,7 +201,7 @@
 {
     EWK_VIEW_IMPL_GET_BY_SD_OR_RETURN(smartData, impl, false);
 
-    impl->page()->handleMouseEvent(NativeWebMouseEvent(moveEvent, toWebContentTransform(smartData), toDeviceScreenTransform(smartData)));
+    impl->page()->handleMouseEvent(NativeWebMouseEvent(moveEvent, impl->transformFromScene(), impl->transformToScreen()));
     return true;
 }
 
@@ -865,7 +822,7 @@
     EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData, false);
     EWK_VIEW_IMPL_GET_BY_SD_OR_RETURN(smartData, impl, false);
 
-    impl->page()->handleTouchEvent(NativeWebTouchEvent(type, points, modifiers, toWebContentTransform(smartData), toDeviceScreenTransform(smartData), ecore_time_get()));
+    impl->page()->handleTouchEvent(NativeWebTouchEvent(type, points, modifiers, impl->transformFromScene(), impl->transformToScreen(), ecore_time_get()));
 
     return true;
 #else
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to