2011-05-26 Emil A Eklund <eae@chromium.org>
authoreae@chromium.org <eae@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 26 May 2011 18:46:57 +0000 (18:46 +0000)
committereae@chromium.org <eae@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 26 May 2011 18:46:57 +0000 (18:46 +0000)
        Reviewed by Eric Seidel.

        Change RenderObject to use FloatPoint::scale and FloatQuad::scale
        https://bugs.webkit.org/show_bug.cgi?id=61497

        Covered by existing test.

        * platform/graphics/FloatQuad.h:
        (WebCore::FloatQuad::scale):
        * rendering/RenderObject.h:
        (WebCore::adjustFloatQuadForAbsoluteZoom):
        (WebCore::adjustFloatRectForAbsoluteZoom):
        (WebCore::adjustFloatQuadForPageScale):
        (WebCore::adjustFloatRectForPageScale):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@87407 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/FloatQuad.h
Source/WebCore/rendering/RenderObject.h

index 93a898d..9d8c366 100644 (file)
@@ -1,3 +1,20 @@
+2011-05-26  Emil A Eklund  <eae@chromium.org>
+
+        Reviewed by Eric Seidel.
+
+        Change RenderObject to use FloatPoint::scale and FloatQuad::scale
+        https://bugs.webkit.org/show_bug.cgi?id=61497
+
+        Covered by existing test.
+
+        * platform/graphics/FloatQuad.h:
+        (WebCore::FloatQuad::scale):
+        * rendering/RenderObject.h:
+        (WebCore::adjustFloatQuadForAbsoluteZoom):
+        (WebCore::adjustFloatRectForAbsoluteZoom):
+        (WebCore::adjustFloatQuadForPageScale):
+        (WebCore::adjustFloatRectForPageScale):
+
 2011-05-26  Alexis Menard  <alexis.menard@openbossa.org>
 
         Unreviewed build fix for Qt and QuickTime backend.
index e913723..fa7ba89 100644 (file)
@@ -110,6 +110,14 @@ public:
         m_p4.move(dx, dy);
     }
 
+    void scale(float dx, float dy)
+    {
+        m_p1.scale(dx, dy);
+        m_p2.scale(dx, dy);
+        m_p3.scale(dx, dy);
+        m_p4.scale(dx, dy);
+    }
+
 private:
     FloatPoint m_p1;
     FloatPoint m_p2;
index a49c2b8..d22b397 100644 (file)
@@ -1076,57 +1076,30 @@ inline int adjustForAbsoluteZoom(int value, RenderObject* renderer)
     return adjustForAbsoluteZoom(value, renderer->style());
 }
 
-inline FloatPoint adjustFloatPointForAbsoluteZoom(const FloatPoint& point, RenderObject* renderer)
-{
-    // The result here is in floats, so we don't need the truncation hack from the integer version above.
-    float zoomFactor = renderer->style()->effectiveZoom();
-    if (zoomFactor == 1)
-        return point;
-    return FloatPoint(point.x() / zoomFactor, point.y() / zoomFactor);
-}
-
 inline void adjustFloatQuadForAbsoluteZoom(FloatQuad& quad, RenderObject* renderer)
 {
-    quad.setP1(adjustFloatPointForAbsoluteZoom(quad.p1(), renderer));
-    quad.setP2(adjustFloatPointForAbsoluteZoom(quad.p2(), renderer));
-    quad.setP3(adjustFloatPointForAbsoluteZoom(quad.p3(), renderer));
-    quad.setP4(adjustFloatPointForAbsoluteZoom(quad.p4(), renderer));
+    float zoom = renderer->style()->effectiveZoom();
+    if (zoom != 1)
+        quad.scale(1 / zoom, 1 / zoom);
 }
 
 inline void adjustFloatRectForAbsoluteZoom(FloatRect& rect, RenderObject* renderer)
 {
-    RenderStyle* style = renderer->style();
-    rect.setX(adjustFloatForAbsoluteZoom(rect.x(), style));
-    rect.setY(adjustFloatForAbsoluteZoom(rect.y(), style));
-    rect.setWidth(adjustFloatForAbsoluteZoom(rect.width(), style));
-    rect.setHeight(adjustFloatForAbsoluteZoom(rect.height(), style));
-}
-
-inline FloatPoint adjustFloatPointForPageScale(const FloatPoint& point, float pageScale)
-{
-    if (pageScale == 1)
-        return point;
-    return FloatPoint(point.x() / pageScale, point.y() / pageScale);
+    float zoom = renderer->style()->effectiveZoom();
+    if (zoom != 1)
+        rect.scale(1 / zoom, 1 / zoom);
 }
 
 inline void adjustFloatQuadForPageScale(FloatQuad& quad, float pageScale)
 {
-    if (pageScale == 1)
-        return;
-    quad.setP1(adjustFloatPointForPageScale(quad.p1(), pageScale));
-    quad.setP2(adjustFloatPointForPageScale(quad.p2(), pageScale));
-    quad.setP3(adjustFloatPointForPageScale(quad.p3(), pageScale));
-    quad.setP4(adjustFloatPointForPageScale(quad.p4(), pageScale));
+    if (pageScale != 1)
+        quad.scale(1 / pageScale, 1 / pageScale);
 }
 
 inline void adjustFloatRectForPageScale(FloatRect& rect, float pageScale)
 {
-    if (pageScale == 1)
-        return;
-    rect.setX(rect.x() / pageScale);
-    rect.setY(rect.y() / pageScale);
-    rect.setWidth(rect.width() / pageScale);
-    rect.setHeight(rect.height() / pageScale);
+    if (pageScale != 1)
+        rect.scale(1 / pageScale, 1 / pageScale);
 }
 
 } // namespace WebCore