Changeset 77140 in webkit


Ignore:
Timestamp:
Jan 31, 2011 10:11:11 AM (13 years ago)
Author:
commit-queue@webkit.org
Message:

2011-01-31 Shane Stephens <shanestephens@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):
Location:
trunk/Source/WebCore
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r77137 r77140  
     12011-01-31  Shane Stephens  <shanestephens@google.com>
     2
     3        Reviewed by Simon Fraser.
     4
     5        AffineTransform::translateRight incorrectly computes a translateLeft.
     6        https://bugs.webkit.org/show_bug.cgi?id=52551
     7
     8        Removed translateRight and converted all uses to perform standard
     9        matrix multiplication.
     10
     11        No new tests because patch doesn't modify functionality.
     12
     13        * platform/graphics/transforms/AffineTransform.cpp:
     14        * platform/graphics/transforms/AffineTransform.h:
     15        (WebCore::AffineTransform::translation):
     16        * rendering/svg/RenderSVGResourceMarker.cpp:
     17        (WebCore::RenderSVGResourceMarker::localToParentTransform):
     18        * rendering/svg/RenderSVGRoot.cpp:
     19        (WebCore::RenderSVGRoot::localToRepaintContainerTransform):
     20        (WebCore::RenderSVGRoot::localToParentTransform):
     21        * rendering/svg/RenderSVGViewportContainer.cpp:
     22        (WebCore::RenderSVGViewportContainer::localToParentTransform):
     23        * rendering/svg/SVGTextLayoutEngine.cpp:
     24        (WebCore::SVGTextLayoutEngine::finalizeTransformMatrices):
     25
    1262011-01-31  Mario Sanchez Prada  <msanchez@igalia.com>
    227
  • trunk/Source/WebCore/platform/graphics/transforms/AffineTransform.cpp

    r76146 r77140  
    223223}
    224224
    225 // *this = translation * *this
    226 AffineTransform& AffineTransform::translateRight(double tx, double ty)
    227 {
    228     m_transform[4] += tx;
    229     m_transform[5] += ty;
    230     return *this;
    231 }
    232 
    233225AffineTransform& AffineTransform::scaleNonUniform(double sx, double sy)
    234226{
  • trunk/Source/WebCore/platform/graphics/transforms/AffineTransform.h

    r76248 r77140  
    104104    AffineTransform& rotateFromVector(double x, double y);
    105105    AffineTransform& translate(double tx, double ty);
    106     AffineTransform& translateRight(double tx, double ty);
    107106    AffineTransform& shear(double sx, double sy);
    108107    AffineTransform& flipX();
     
    173172#endif
    174173
     174    static AffineTransform translation(double x, double y)
     175    {
     176        return AffineTransform(1, 0, 0, 1, x, y);
     177    }
     178
    175179private:
    176180    void setMatrix(const Transform m)
  • trunk/Source/WebCore/rendering/svg/RenderSVGResourceMarker.cpp

    r75350 r77140  
    8787const AffineTransform& RenderSVGResourceMarker::localToParentTransform() const
    8888{
    89     AffineTransform viewportTranslation(viewportTransform());
    90     m_localToParentTransform = viewportTranslation.translateRight(m_viewport.x(), m_viewport.y());
     89    m_localToParentTransform = AffineTransform::translation(m_viewport.x(), m_viewport.y()) * viewportTransform();
    9190    return m_localToParentTransform;
    9291    // If this class were ever given a localTransform(), then the above would read:
    93     // return viewportTransform() * localTransform() * viewportTranslation;
     92    // return viewportTranslation * localTransform() * viewportTransform();
    9493}
    9594
  • trunk/Source/WebCore/rendering/svg/RenderSVGRoot.cpp

    r76146 r77140  
    262262AffineTransform RenderSVGRoot::localToRepaintContainerTransform(const IntPoint& parentOriginInContainer) const
    263263{
    264     AffineTransform parentToContainer(localToParentTransform());
    265     return parentToContainer.translateRight(parentOriginInContainer.x(), parentOriginInContainer.y());
     264    return AffineTransform::translation(parentOriginInContainer.x(), parentOriginInContainer.y()) * localToParentTransform();
    266265}
    267266
     
    270269    IntSize parentToBorderBoxOffset = parentOriginToBorderBox();
    271270
    272     AffineTransform borderBoxOriginToParentOrigin(localToBorderBoxTransform());
    273     borderBoxOriginToParentOrigin.translateRight(parentToBorderBoxOffset.width(), parentToBorderBoxOffset.height());
    274 
    275     m_localToParentTransform = borderBoxOriginToParentOrigin;
     271    m_localToParentTransform = AffineTransform::translation(parentToBorderBoxOffset.width(), parentToBorderBoxOffset.height()) * localToBorderBoxTransform();
     272
    276273    return m_localToParentTransform;
    277274}
  • trunk/Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp

    r75350 r77140  
    7373const AffineTransform& RenderSVGViewportContainer::localToParentTransform() const
    7474{
    75     AffineTransform viewportTranslation(viewportTransform());
    76     m_localToParentTransform = viewportTranslation.translateRight(m_viewport.x(), m_viewport.y());
     75    m_localToParentTransform = AffineTransform::translation(m_viewport.x(), m_viewport.y()) * viewportTransform();
    7776    return m_localToParentTransform;
    7877    // If this class were ever given a localTransform(), then the above would read:
    79     // return viewportTransform() * localTransform() * viewportTranslation;
     78    // return viewportTranslation * localTransform() * viewportTransform()
    8079}
    8180
  • trunk/Source/WebCore/rendering/svg/SVGTextLayoutEngine.cpp

    r76146 r77140  
    311311            AffineTransform& transform = fragment.transform;
    312312            if (!transform.isIdentity()) {
    313                 transform.translateRight(fragment.x, fragment.y);
     313                transform = AffineTransform::translation(fragment.x, fragment.y) * transform;
    314314                transform.translate(-fragment.x, -fragment.y);
    315315            }
Note: See TracChangeset for help on using the changeset viewer.