[SCM] WebKit Debian packaging branch, webkit-1.3, updated. upstream/1.3.7-4207-g178b198

commit-queue at webkit.org commit-queue at webkit.org
Mon Feb 21 00:27:00 UTC 2011


The following commit has been merged in the webkit-1.3 branch:
commit 4ef89be44dc37e0b54fa60dd17f6f315b0c797f0
Author: commit-queue at webkit.org <commit-queue at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon Jan 31 18:11:11 2011 +0000

    2011-01-31  Shane Stephens  <shanestephens at google.com>
    
            Reviewed by Simon Fraser.
    
            AffineTransform::translateRight incorrectly computes a translateLeft.
            https://bugs.webkit.org/show_bug.cgi?id=52551
    
            Removed translateRight and converted all uses to perform standard
            matrix multiplication.
    
            No new tests because patch doesn't modify functionality.
    
            * platform/graphics/transforms/AffineTransform.cpp:
            * platform/graphics/transforms/AffineTransform.h:
            (WebCore::AffineTransform::translation):
            * rendering/svg/RenderSVGResourceMarker.cpp:
            (WebCore::RenderSVGResourceMarker::localToParentTransform):
            * rendering/svg/RenderSVGRoot.cpp:
            (WebCore::RenderSVGRoot::localToRepaintContainerTransform):
            (WebCore::RenderSVGRoot::localToParentTransform):
            * rendering/svg/RenderSVGViewportContainer.cpp:
            (WebCore::RenderSVGViewportContainer::localToParentTransform):
            * rendering/svg/SVGTextLayoutEngine.cpp:
            (WebCore::SVGTextLayoutEngine::finalizeTransformMatrices):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@77140 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 8aba255..20982b5 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,28 @@
+2011-01-31  Shane Stephens  <shanestephens at google.com>
+
+        Reviewed by Simon Fraser.
+
+        AffineTransform::translateRight incorrectly computes a translateLeft.
+        https://bugs.webkit.org/show_bug.cgi?id=52551
+
+        Removed translateRight and converted all uses to perform standard
+        matrix multiplication.
+
+        No new tests because patch doesn't modify functionality.
+
+        * platform/graphics/transforms/AffineTransform.cpp:
+        * platform/graphics/transforms/AffineTransform.h:
+        (WebCore::AffineTransform::translation):
+        * rendering/svg/RenderSVGResourceMarker.cpp:
+        (WebCore::RenderSVGResourceMarker::localToParentTransform):
+        * rendering/svg/RenderSVGRoot.cpp:
+        (WebCore::RenderSVGRoot::localToRepaintContainerTransform):
+        (WebCore::RenderSVGRoot::localToParentTransform):
+        * rendering/svg/RenderSVGViewportContainer.cpp:
+        (WebCore::RenderSVGViewportContainer::localToParentTransform):
+        * rendering/svg/SVGTextLayoutEngine.cpp:
+        (WebCore::SVGTextLayoutEngine::finalizeTransformMatrices):
+
 2011-01-31  Mario Sanchez Prada  <msanchez at igalia.com>
 
         Reviewed by Martin Robinson.
diff --git a/Source/WebCore/platform/graphics/transforms/AffineTransform.cpp b/Source/WebCore/platform/graphics/transforms/AffineTransform.cpp
index 3f88140..43d2040 100644
--- a/Source/WebCore/platform/graphics/transforms/AffineTransform.cpp
+++ b/Source/WebCore/platform/graphics/transforms/AffineTransform.cpp
@@ -222,14 +222,6 @@ AffineTransform& AffineTransform::translate(double tx, double ty)
     return *this;
 }
 
-// *this = translation * *this
-AffineTransform& AffineTransform::translateRight(double tx, double ty)
-{
-    m_transform[4] += tx;
-    m_transform[5] += ty;
-    return *this;
-}
-
 AffineTransform& AffineTransform::scaleNonUniform(double sx, double sy)
 {
     return scale(sx, sy);
diff --git a/Source/WebCore/platform/graphics/transforms/AffineTransform.h b/Source/WebCore/platform/graphics/transforms/AffineTransform.h
index 50d0655..3e3995f 100644
--- a/Source/WebCore/platform/graphics/transforms/AffineTransform.h
+++ b/Source/WebCore/platform/graphics/transforms/AffineTransform.h
@@ -103,7 +103,6 @@ public:
     AffineTransform& rotate(double d);
     AffineTransform& rotateFromVector(double x, double y);
     AffineTransform& translate(double tx, double ty);
-    AffineTransform& translateRight(double tx, double ty);
     AffineTransform& shear(double sx, double sy);
     AffineTransform& flipX();
     AffineTransform& flipY();
@@ -172,6 +171,11 @@ public:
     operator wxGraphicsMatrix() const;
 #endif
 
+    static AffineTransform translation(double x, double y)
+    {
+        return AffineTransform(1, 0, 0, 1, x, y);
+    }
+
 private:
     void setMatrix(const Transform m)
     {
diff --git a/Source/WebCore/rendering/svg/RenderSVGResourceMarker.cpp b/Source/WebCore/rendering/svg/RenderSVGResourceMarker.cpp
index 2a68d92..fcad27f 100644
--- a/Source/WebCore/rendering/svg/RenderSVGResourceMarker.cpp
+++ b/Source/WebCore/rendering/svg/RenderSVGResourceMarker.cpp
@@ -86,11 +86,10 @@ FloatRect RenderSVGResourceMarker::markerBoundaries(const AffineTransform& marke
 
 const AffineTransform& RenderSVGResourceMarker::localToParentTransform() const
 {
-    AffineTransform viewportTranslation(viewportTransform());
-    m_localToParentTransform = viewportTranslation.translateRight(m_viewport.x(), m_viewport.y());
+    m_localToParentTransform = AffineTransform::translation(m_viewport.x(), m_viewport.y()) * viewportTransform();
     return m_localToParentTransform;
     // If this class were ever given a localTransform(), then the above would read:
-    // return viewportTransform() * localTransform() * viewportTranslation;
+    // return viewportTranslation * localTransform() * viewportTransform();
 }
 
 FloatPoint RenderSVGResourceMarker::referencePoint() const
diff --git a/Source/WebCore/rendering/svg/RenderSVGRoot.cpp b/Source/WebCore/rendering/svg/RenderSVGRoot.cpp
index 3a8dce9..30f72b9 100644
--- a/Source/WebCore/rendering/svg/RenderSVGRoot.cpp
+++ b/Source/WebCore/rendering/svg/RenderSVGRoot.cpp
@@ -261,18 +261,15 @@ IntSize RenderSVGRoot::borderOriginToContentBox() const
 
 AffineTransform RenderSVGRoot::localToRepaintContainerTransform(const IntPoint& parentOriginInContainer) const
 {
-    AffineTransform parentToContainer(localToParentTransform());
-    return parentToContainer.translateRight(parentOriginInContainer.x(), parentOriginInContainer.y());
+    return AffineTransform::translation(parentOriginInContainer.x(), parentOriginInContainer.y()) * localToParentTransform();
 }
 
 const AffineTransform& RenderSVGRoot::localToParentTransform() const
 {
     IntSize parentToBorderBoxOffset = parentOriginToBorderBox();
 
-    AffineTransform borderBoxOriginToParentOrigin(localToBorderBoxTransform());
-    borderBoxOriginToParentOrigin.translateRight(parentToBorderBoxOffset.width(), parentToBorderBoxOffset.height());
+    m_localToParentTransform = AffineTransform::translation(parentToBorderBoxOffset.width(), parentToBorderBoxOffset.height()) * localToBorderBoxTransform();
 
-    m_localToParentTransform = borderBoxOriginToParentOrigin;
     return m_localToParentTransform;
 }
 
diff --git a/Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp b/Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp
index 7f4b6f7..0f2f273 100644
--- a/Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp
+++ b/Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp
@@ -72,11 +72,10 @@ AffineTransform RenderSVGViewportContainer::viewportTransform() const
 
 const AffineTransform& RenderSVGViewportContainer::localToParentTransform() const
 {
-    AffineTransform viewportTranslation(viewportTransform());
-    m_localToParentTransform = viewportTranslation.translateRight(m_viewport.x(), m_viewport.y());
+    m_localToParentTransform = AffineTransform::translation(m_viewport.x(), m_viewport.y()) * viewportTransform();
     return m_localToParentTransform;
     // If this class were ever given a localTransform(), then the above would read:
-    // return viewportTransform() * localTransform() * viewportTranslation;
+    // return viewportTranslation * localTransform() * viewportTransform()
 }
 
 bool RenderSVGViewportContainer::pointIsInsideViewportClip(const FloatPoint& pointInParent)
diff --git a/Source/WebCore/rendering/svg/SVGTextLayoutEngine.cpp b/Source/WebCore/rendering/svg/SVGTextLayoutEngine.cpp
index 3b28d2b..c25ed79 100644
--- a/Source/WebCore/rendering/svg/SVGTextLayoutEngine.cpp
+++ b/Source/WebCore/rendering/svg/SVGTextLayoutEngine.cpp
@@ -310,7 +310,7 @@ void SVGTextLayoutEngine::finalizeTransformMatrices(Vector<SVGInlineTextBox*>& b
             SVGTextFragment& fragment = fragments.at(i);
             AffineTransform& transform = fragment.transform;
             if (!transform.isIdentity()) {
-                transform.translateRight(fragment.x, fragment.y);
+                transform = AffineTransform::translation(fragment.x, fragment.y) * transform;
                 transform.translate(-fragment.x, -fragment.y);
             }
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list