[chromium] Use SkMatrix44 instead of WebTransformationMatrix in animation APIs
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 12 Mar 2013 00:45:33 +0000 (00:45 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 12 Mar 2013 00:45:33 +0000 (00:45 +0000)
https://bugs.webkit.org/show_bug.cgi?id=111791

Patch by James Robinson <jamesr@chromium.org> on 2013-03-11
Reviewed by Adrienne Walker.

Source/Platform:

This adds SkMatrix44 overrides for animation APIs that deal with matrices and slims the interface
down for WebTransformationMatrix to the minimum needed to compile. With this patch, there are no
live codepaths that use WebTransformationMatrix but some downstream code still needs a type and a
few functions to compile. After the downstream code is patched this type can go away completely.

* chromium/public/WebLayer.h:
(WebKit):
(WebLayer):
* chromium/public/WebTransformAnimationCurve.h:
(WebTransformAnimationCurve):
* chromium/public/WebTransformOperations.h:
(WebTransformOperations):
* chromium/public/WebTransformationMatrix.h:
(WebTransformationMatrix):

Source/WebCore:

Adds a new utility function to convert a TransformationMatrix to an SkMatrix44 and
uses it in AnimationTranslationUtil and GraphicsLayerChromium.

* WebCore.gypi:
* platform/chromium/support/WebTransformationMatrix.cpp:
(WebKit::WebTransformationMatrix::WebTransformationMatrix):
* platform/graphics/chromium/AnimationTranslationUtil.cpp:
(WebCore::toWebTransformOperations):
* platform/graphics/chromium/GraphicsLayerChromium.cpp:
(WebCore::GraphicsLayerChromium::updateTransform):
(WebCore::GraphicsLayerChromium::updateChildrenTransform):
* platform/graphics/chromium/TransformSkMatrix44Conversions.cpp:
(WebCore::TransformSkMatrix44Conversions::convert):
* platform/graphics/chromium/TransformSkMatrix44Conversions.h:
(TransformSkMatrix44Conversions):

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

12 files changed:
Source/Platform/ChangeLog
Source/Platform/chromium/public/WebLayer.h
Source/Platform/chromium/public/WebTransformAnimationCurve.h
Source/Platform/chromium/public/WebTransformOperations.h
Source/Platform/chromium/public/WebTransformationMatrix.h
Source/WebCore/ChangeLog
Source/WebCore/WebCore.gypi
Source/WebCore/platform/chromium/support/WebTransformationMatrix.cpp
Source/WebCore/platform/graphics/chromium/AnimationTranslationUtil.cpp
Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp
Source/WebCore/platform/graphics/chromium/TransformSkMatrix44Conversions.cpp [new file with mode: 0644]
Source/WebCore/platform/graphics/chromium/TransformSkMatrix44Conversions.h [new file with mode: 0644]

index 1cac9cd..6f258d2 100644 (file)
@@ -1,3 +1,25 @@
+2013-03-11  James Robinson  <jamesr@chromium.org>
+
+        [chromium] Use SkMatrix44 instead of WebTransformationMatrix in animation APIs
+        https://bugs.webkit.org/show_bug.cgi?id=111791
+
+        Reviewed by Adrienne Walker.
+
+        This adds SkMatrix44 overrides for animation APIs that deal with matrices and slims the interface
+        down for WebTransformationMatrix to the minimum needed to compile. With this patch, there are no
+        live codepaths that use WebTransformationMatrix but some downstream code still needs a type and a
+        few functions to compile. After the downstream code is patched this type can go away completely.
+
+        * chromium/public/WebLayer.h:
+        (WebKit):
+        (WebLayer):
+        * chromium/public/WebTransformAnimationCurve.h:
+        (WebTransformAnimationCurve):
+        * chromium/public/WebTransformOperations.h:
+        (WebTransformOperations):
+        * chromium/public/WebTransformationMatrix.h:
+        (WebTransformationMatrix):
+
 2013-03-08  Harald Alvestrand  <hta@chromium.org>
 
         Implemented new API for RTCStatsReport object.
index 9be7284..0134c30 100644 (file)
@@ -42,7 +42,6 @@ namespace WebKit {
 class WebAnimationDelegate;
 class WebFilterOperations;
 class WebLayerScrollClient;
-class WebTransformationMatrix;
 struct WebFloatPoint;
 struct WebFloatRect;
 struct WebSize;
@@ -94,11 +93,9 @@ public:
     virtual WebFloatPoint position() const = 0;
 
     virtual void setSublayerTransform(const SkMatrix44&) = 0;
-    virtual void setSublayerTransform(const WebTransformationMatrix&) = 0;
     virtual SkMatrix44 sublayerTransform() const = 0;
 
     virtual void setTransform(const SkMatrix44&) = 0;
-    virtual void setTransform(const WebTransformationMatrix&) = 0;
     virtual SkMatrix44 transform() const = 0;
 
     // Sets whether the layer draws its content when compositing.
index 960c6b5..29fb27a 100644 (file)
@@ -29,7 +29,6 @@
 
 #include "WebCommon.h"
 #include "WebTransformKeyframe.h"
-#include "WebTransformationMatrix.h"
 
 namespace WebKit {
 
@@ -44,9 +43,6 @@ public:
     // Adds the keyframe with a custom, bezier timing function. Note, it is
     // assumed that x0 = y0 = 0, and x3 = y3 = 1.
     virtual void add(const WebTransformKeyframe&, double x1, double y1, double x2, double y2) = 0;
-
-    virtual WebTransformationMatrix getValue(double time) const = 0;
-
 };
 
 } // namespace WebKit
index b1ecc4f..d9a5ebb 100644 (file)
@@ -25,7 +25,7 @@
 #ifndef WebTransformOperations_h
 #define WebTransformOperations_h
 
-#include "WebTransformationMatrix.h"
+class SkMatrix44;
 
 #define WEB_TRANSFORM_OPERATIONS_IS_VIRTUAL 1
 
@@ -45,7 +45,7 @@ public:
     virtual void appendScale(double x, double y, double z) = 0;
     virtual void appendSkew(double x, double y) = 0;
     virtual void appendPerspective(double depth) = 0;
-    virtual void appendMatrix(const WebTransformationMatrix&) = 0;
+    virtual void appendMatrix(const SkMatrix44&) = 0;
     virtual void appendIdentity() = 0;
 
     virtual bool isIdentity() const = 0;
index de88de0..ab6faa4 100644 (file)
@@ -47,48 +47,11 @@ namespace WebKit {
 class WebTransformationMatrix {
 public:
     WEBKIT_EXPORT WebTransformationMatrix();
-    WEBKIT_EXPORT WebTransformationMatrix(double a, double b, double c, double d, double e, double f);
-    WEBKIT_EXPORT WebTransformationMatrix(double m11, double m12, double m13, double m14,
-                                          double m21, double m22, double m23, double m24,
-                                          double m31, double m32, double m33, double m34,
-                                          double m41, double m42, double m43, double m44);
     WEBKIT_EXPORT WebTransformationMatrix(const WebTransformationMatrix&);
     ~WebTransformationMatrix() { reset(); }
 
     WEBKIT_EXPORT void reset();
 
-    // Operations that return a separate matrix and do not modify this one.
-    WEBKIT_EXPORT WebTransformationMatrix inverse() const;
-    WEBKIT_EXPORT WebTransformationMatrix to2dTransform() const;
-
-    WEBKIT_EXPORT WebTransformationMatrix& operator=(const WebTransformationMatrix&);
-    WEBKIT_EXPORT bool operator==(const WebTransformationMatrix&) const;
-    WEBKIT_EXPORT WebTransformationMatrix operator*(const WebTransformationMatrix&) const;
-
-    // Operations that modify this matrix
-    WEBKIT_EXPORT void multiply(const WebTransformationMatrix&);
-    WEBKIT_EXPORT void makeIdentity();
-    WEBKIT_EXPORT void translate(double tx, double ty);
-    WEBKIT_EXPORT void translate3d(double tx, double ty, double tz);
-    WEBKIT_EXPORT void translateRight3d(double tx, double ty, double tz);
-    WEBKIT_EXPORT void scale(double s);
-    WEBKIT_EXPORT void scaleNonUniform(double sx, double sy);
-    WEBKIT_EXPORT void scale3d(double sx, double sy, double sz);
-    WEBKIT_EXPORT void rotate(double angle);
-    WEBKIT_EXPORT void rotate3d(double rx, double ry, double rz);
-    WEBKIT_EXPORT void rotate3d(double x, double y, double z, double angle);
-    WEBKIT_EXPORT void skewX(double angle);
-    WEBKIT_EXPORT void skewY(double angle);
-    WEBKIT_EXPORT void applyPerspective(double p);
-    WEBKIT_EXPORT bool blend(const WebTransformationMatrix& from, double progress);
-
-    WEBKIT_EXPORT bool hasPerspective() const;
-    WEBKIT_EXPORT bool isInvertible() const;
-    WEBKIT_EXPORT bool isBackFaceVisible() const;
-    WEBKIT_EXPORT bool isIdentity() const;
-    WEBKIT_EXPORT bool isIdentityOrTranslation() const;
-    WEBKIT_EXPORT bool isIntegerTranslation() const;
-
     // Accessors
     WEBKIT_EXPORT double m11() const;
     WEBKIT_EXPORT void setM11(double);
index 915098c..44cfcdc 100644 (file)
@@ -1,3 +1,26 @@
+2013-03-11  James Robinson  <jamesr@chromium.org>
+
+        [chromium] Use SkMatrix44 instead of WebTransformationMatrix in animation APIs
+        https://bugs.webkit.org/show_bug.cgi?id=111791
+
+        Reviewed by Adrienne Walker.
+
+        Adds a new utility function to convert a TransformationMatrix to an SkMatrix44 and
+        uses it in AnimationTranslationUtil and GraphicsLayerChromium.
+
+        * WebCore.gypi:
+        * platform/chromium/support/WebTransformationMatrix.cpp:
+        (WebKit::WebTransformationMatrix::WebTransformationMatrix):
+        * platform/graphics/chromium/AnimationTranslationUtil.cpp:
+        (WebCore::toWebTransformOperations):
+        * platform/graphics/chromium/GraphicsLayerChromium.cpp:
+        (WebCore::GraphicsLayerChromium::updateTransform):
+        (WebCore::GraphicsLayerChromium::updateChildrenTransform):
+        * platform/graphics/chromium/TransformSkMatrix44Conversions.cpp:
+        (WebCore::TransformSkMatrix44Conversions::convert):
+        * platform/graphics/chromium/TransformSkMatrix44Conversions.h:
+        (TransformSkMatrix44Conversions):
+
 2013-03-11  Sheriff Bot  <webkit.review.bot@gmail.com>
 
         Unreviewed, rolling out r145435.
index 80a50c0..b1eb873 100644 (file)
             'platform/graphics/chromium/SimpleFontDataChromiumWin.cpp',
             'platform/graphics/chromium/ThreadSafeDataTransport.cpp',
             'platform/graphics/chromium/ThreadSafeDataTransport.h',
+            'platform/graphics/chromium/TransformSkMatrix44Conversions.cpp',
+            'platform/graphics/chromium/TransformSkMatrix44Conversions.h',
             'platform/graphics/chromium/TransparencyWin.cpp',
             'platform/graphics/chromium/TransparencyWin.h',
             'platform/graphics/chromium/UniscribeHelper.cpp',
index 5e7ac4f..2f9cefc 100644 (file)
@@ -37,21 +37,8 @@ WebTransformationMatrix::WebTransformationMatrix()
 {
 }
 
-WebTransformationMatrix::WebTransformationMatrix(double a, double b, double c, double d, double e, double f)
-    : m_private(new TransformationMatrix(a, b, c, d, e, f))
-{
-}
-
-WebTransformationMatrix::WebTransformationMatrix(double m11, double m12, double m13, double m14,
-                                                 double m21, double m22, double m23, double m24,
-                                                 double m31, double m32, double m33, double m34,
-                                                 double m41, double m42, double m43, double m44)
-    : m_private(new TransformationMatrix(m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44))
-{
-}
-
-WebTransformationMatrix::WebTransformationMatrix(const WebTransformationMatrix& t)
-    : m_private(new TransformationMatrix(*t.m_private.get()))
+WebTransformationMatrix::WebTransformationMatrix(const WebTransformationMatrix& matrix)
+    : m_private(new TransformationMatrix(*matrix.m_private.get()))
 {
 }
 
@@ -65,368 +52,84 @@ void WebTransformationMatrix::reset()
     m_private.reset(0);
 }
 
-WebTransformationMatrix& WebTransformationMatrix::operator=(const WebTransformationMatrix& t)
-{
-    m_private.reset(new TransformationMatrix(*t.m_private.get()));
-    return *this;
-}
-
-bool WebTransformationMatrix::operator==(const WebTransformationMatrix& t) const
-{
-    return *m_private.get() == *t.m_private.get();
-}
-
-WebTransformationMatrix WebTransformationMatrix::operator*(const WebTransformationMatrix& t) const
-{
-    WebTransformationMatrix result = *this;
-    result.multiply(t);
-    return result;
-}
-
-WebTransformationMatrix WebTransformationMatrix::inverse() const
-{
-    return WebTransformationMatrix(m_private->inverse());
-}
-
-WebTransformationMatrix WebTransformationMatrix::to2dTransform() const
-{
-    WebTransformationMatrix result;
-    result.m_private.reset(new TransformationMatrix(m_private->to2dTransform()));
-    return result;
-}
-
-void WebTransformationMatrix::multiply(const WebTransformationMatrix& t)
-{
-    m_private->multiply(*t.m_private.get());
-}
-
-void WebTransformationMatrix::makeIdentity()
-{
-    m_private->makeIdentity();
-}
-
-void WebTransformationMatrix::translate(double tx, double ty)
-{
-    m_private->translate(tx, ty);
-}
-
-void WebTransformationMatrix::translate3d(double tx, double ty, double tz)
-{
-    m_private->translate3d(tx, ty, tz);
-}
-
-void WebTransformationMatrix::translateRight3d(double tx, double ty, double tz)
-{
-    m_private->translateRight3d(tx, ty, tz);
-}
-
-void WebTransformationMatrix::scale(double s)
-{
-    m_private->scale(s);
-}
-
-void WebTransformationMatrix::scaleNonUniform(double sx, double sy)
-{
-    m_private->scaleNonUniform(sx, sy);
-}
-
-void WebTransformationMatrix::scale3d(double sx, double sy, double sz)
-{
-    m_private->scale3d(sx, sy, sz);
-}
-
-void WebTransformationMatrix::rotate(double angle)
-{
-    m_private->rotate(angle);
-}
-
-void WebTransformationMatrix::rotate3d(double rx, double ry, double rz)
-{
-    m_private->rotate3d(rx, ry, rz);
-}
-
-void WebTransformationMatrix::rotate3d(double x, double y, double z, double angle)
-{
-    m_private->rotate3d(x, y, z, angle);
-}
-
-void WebTransformationMatrix::skewX(double angle)
-{
-    m_private->skewX(angle);
-}
-
-void WebTransformationMatrix::skewY(double angle)
-{
-    m_private->skewY(angle);
-}
-
-void WebTransformationMatrix::applyPerspective(double p)
-{
-    m_private->applyPerspective(p);
-}
-
-bool WebTransformationMatrix::blend(const WebTransformationMatrix& from, double progress)
-{
-    WebCore::TransformationMatrix::DecomposedType dummy;
-    if (!m_private->decompose(dummy) || !from.m_private->decompose(dummy))
-        return false;
-    m_private->blend(*from.m_private.get(), progress);
-    return true;
-}
-
-bool WebTransformationMatrix::hasPerspective() const
-{
-    return m_private->hasPerspective();
-}
-
-bool WebTransformationMatrix::isInvertible() const
-{
-    return m_private->isInvertible();
-}
-
-bool WebTransformationMatrix::isBackFaceVisible() const
-{
-    return m_private->isBackFaceVisible();
-}
-
-bool WebTransformationMatrix::isIdentity() const
-{
-    return m_private->isIdentity();
-}
-
-bool WebTransformationMatrix::isIdentityOrTranslation() const
-{
-    return m_private->isIdentityOrTranslation();
-}
-
-bool WebTransformationMatrix::isIntegerTranslation() const
-{
-    return m_private->isIntegerTranslation();
-}
-
 double WebTransformationMatrix::m11() const
 {
     return m_private->m11();
 }
 
-void WebTransformationMatrix::setM11(double f)
-{
-    m_private->setM11(f);
-}
-
 double WebTransformationMatrix::m12() const
 {
     return m_private->m12();
 }
 
-void WebTransformationMatrix::setM12(double f)
-{
-    m_private->setM12(f);
-}
-
 double WebTransformationMatrix::m13() const
 {
     return m_private->m13();
 }
 
-void WebTransformationMatrix::setM13(double f)
-{
-    m_private->setM13(f);
-}
-
 double WebTransformationMatrix::m14() const
 {
     return m_private->m14();
 }
 
-void WebTransformationMatrix::setM14(double f)
-{
-    m_private->setM14(f);
-}
-
 double WebTransformationMatrix::m21() const
 {
     return m_private->m21();
 }
 
-void WebTransformationMatrix::setM21(double f)
-{
-    m_private->setM21(f);
-}
-
 double WebTransformationMatrix::m22() const
 {
     return m_private->m22();
 }
 
-void WebTransformationMatrix::setM22(double f)
-{
-    m_private->setM22(f);
-}
-
 double WebTransformationMatrix::m23() const
 {
     return m_private->m23();
 }
 
-void WebTransformationMatrix::setM23(double f)
-{
-    m_private->setM23(f);
-}
-
 double WebTransformationMatrix::m24() const
 {
     return m_private->m24();
 }
 
-void WebTransformationMatrix::setM24(double f)
-{
-    m_private->setM24(f);
-}
-
 double WebTransformationMatrix::m31() const
 {
     return m_private->m31();
 }
 
-void WebTransformationMatrix::setM31(double f)
-{
-    m_private->setM31(f);
-}
-
 double WebTransformationMatrix::m32() const
 {
     return m_private->m32();
 }
 
-void WebTransformationMatrix::setM32(double f)
-{
-    m_private->setM32(f);
-}
-
 double WebTransformationMatrix::m33() const
 {
     return m_private->m33();
 }
 
-void WebTransformationMatrix::setM33(double f)
-{
-    m_private->setM33(f);
-}
-
 double WebTransformationMatrix::m34() const
 {
     return m_private->m34();
 }
 
-void WebTransformationMatrix::setM34(double f)
-{
-    m_private->setM34(f);
-}
-
 double WebTransformationMatrix::m41() const
 {
     return m_private->m41();
 }
 
-void WebTransformationMatrix::setM41(double f)
-{
-    m_private->setM41(f);
-}
-
 double WebTransformationMatrix::m42() const
 {
     return m_private->m42();
 }
 
-void WebTransformationMatrix::setM42(double f)
-{
-    m_private->setM42(f);
-}
-
 double WebTransformationMatrix::m43() const
 {
     return m_private->m43();
 }
 
-void WebTransformationMatrix::setM43(double f)
-{
-    m_private->setM43(f);
-}
-
 double WebTransformationMatrix::m44() const
 {
     return m_private->m44();
 }
 
-void WebTransformationMatrix::setM44(double f)
-{
-    m_private->setM44(f);
-}
-
-double WebTransformationMatrix::a() const
-{
-    return m_private->a();
-}
-
-void WebTransformationMatrix::setA(double a)
-{
-    m_private->setA(a);
-}
-
-double WebTransformationMatrix::b() const
-{
-    return m_private->b();
-}
-
-void WebTransformationMatrix::setB(double b)
-{
-    m_private->setB(b);
-}
-
-double WebTransformationMatrix::c() const
-{
-    return m_private->c();
-}
-
-void WebTransformationMatrix::setC(double c)
-{
-    m_private->setC(c);
-}
-
-double WebTransformationMatrix::d() const
-{
-    return m_private->d();
-}
-
-void WebTransformationMatrix::setD(double d)
-{
-    m_private->setD(d);
-}
-
-double WebTransformationMatrix::e() const
-{
-    return m_private->e();
-}
-
-void WebTransformationMatrix::setE(double e)
-{
-    m_private->setE(e);
-}
-
-double WebTransformationMatrix::f() const
-{
-    return m_private->f();
-}
-
-void WebTransformationMatrix::setF(double f)
-{
-    m_private->setF(f);
-}
-
-TransformationMatrix WebTransformationMatrix::toWebCoreTransform() const
-{
-    return *m_private.get();
-}
-
 } // namespace WebKit
index 1a8b466..fdcc1f8 100644 (file)
 #include "PerspectiveTransformOperation.h"
 #include "RotateTransformOperation.h"
 #include "ScaleTransformOperation.h"
+#include "SkMatrix44.h"
 #include "SkewTransformOperation.h"
 #include "TransformOperations.h"
+#include "TransformSkMatrix44Conversions.h"
 #include "TranslateTransformOperation.h"
 
 #include <public/Platform.h>
@@ -47,7 +49,6 @@
 #include <public/WebFloatAnimationCurve.h>
 #include <public/WebTransformAnimationCurve.h>
 #include <public/WebTransformOperations.h>
-#include <public/WebTransformationMatrix.h>
 
 #include <wtf/OwnPtr.h>
 #include <wtf/text/CString.h>
@@ -102,13 +103,13 @@ PassOwnPtr<WebTransformOperations> toWebTransformOperations(const TransformOpera
         case TransformOperation::MATRIX: {
             MatrixTransformOperation* transform = static_cast<MatrixTransformOperation*>(transformOperations.operations()[j].get());
             TransformationMatrix m = transform->matrix();
-            webTransformOperations->appendMatrix(WebTransformationMatrix(m));
+            webTransformOperations->appendMatrix(TransformSkMatrix44Conversions::convert(m));
             break;
         }
         case TransformOperation::MATRIX_3D: {
             Matrix3DTransformOperation* transform = static_cast<Matrix3DTransformOperation*>(transformOperations.operations()[j].get());
             TransformationMatrix m = transform->matrix();
-            webTransformOperations->appendMatrix(WebTransformationMatrix(m));
+            webTransformOperations->appendMatrix(TransformSkMatrix44Conversions::convert(m));
             break;
         }
         case TransformOperation::PERSPECTIVE: {
index 4b1febe..5f35f09 100644 (file)
@@ -59,6 +59,7 @@
 #include "SkMatrix44.h"
 #include "SkiaImageFilterBuilder.h"
 #include "SystemTime.h"
+#include "TransformSkMatrix44Conversions.h"
 #include <public/Platform.h>
 #include <public/WebAnimation.h>
 #include <public/WebCompositorSupport.h>
@@ -701,36 +702,14 @@ void GraphicsLayerChromium::updateAnchorPoint()
     platformLayer()->setAnchorPointZ(m_anchorPoint.z());
 }
 
-static SkMatrix44 transformToSkMatrix44(const TransformationMatrix& matrix)
-{
-    SkMatrix44 ret(SkMatrix44::kUninitialized_Constructor);
-    ret.setDouble(0, 0, matrix.m11());
-    ret.setDouble(0, 1, matrix.m21());
-    ret.setDouble(0, 2, matrix.m31());
-    ret.setDouble(0, 3, matrix.m41());
-    ret.setDouble(1, 0, matrix.m12());
-    ret.setDouble(1, 1, matrix.m22());
-    ret.setDouble(1, 2, matrix.m32());
-    ret.setDouble(1, 3, matrix.m42());
-    ret.setDouble(2, 0, matrix.m13());
-    ret.setDouble(2, 1, matrix.m23());
-    ret.setDouble(2, 2, matrix.m33());
-    ret.setDouble(2, 3, matrix.m43());
-    ret.setDouble(3, 0, matrix.m14());
-    ret.setDouble(3, 1, matrix.m24());
-    ret.setDouble(3, 2, matrix.m34());
-    ret.setDouble(3, 3, matrix.m44());
-    return ret;
-}
-
 void GraphicsLayerChromium::updateTransform()
 {
-    platformLayer()->setTransform(transformToSkMatrix44(m_transform));
+    platformLayer()->setTransform(TransformSkMatrix44Conversions::convert(m_transform));
 }
 
 void GraphicsLayerChromium::updateChildrenTransform()
 {
-    platformLayer()->setSublayerTransform(transformToSkMatrix44(m_childrenTransform));
+    platformLayer()->setSublayerTransform(TransformSkMatrix44Conversions::convert(m_childrenTransform));
 }
 
 void GraphicsLayerChromium::updateMasksToBounds()
diff --git a/Source/WebCore/platform/graphics/chromium/TransformSkMatrix44Conversions.cpp b/Source/WebCore/platform/graphics/chromium/TransformSkMatrix44Conversions.cpp
new file mode 100644 (file)
index 0000000..f1b58d5
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2013 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+
+#include "TransformSkMatrix44Conversions.h"
+
+#include "TransformationMatrix.h"
+
+namespace WebCore {
+
+SkMatrix44 TransformSkMatrix44Conversions::convert(const TransformationMatrix& matrix)
+{
+    SkMatrix44 ret(SkMatrix44::kUninitialized_Constructor);
+    ret.setDouble(0, 0, matrix.m11());
+    ret.setDouble(0, 1, matrix.m21());
+    ret.setDouble(0, 2, matrix.m31());
+    ret.setDouble(0, 3, matrix.m41());
+    ret.setDouble(1, 0, matrix.m12());
+    ret.setDouble(1, 1, matrix.m22());
+    ret.setDouble(1, 2, matrix.m32());
+    ret.setDouble(1, 3, matrix.m42());
+    ret.setDouble(2, 0, matrix.m13());
+    ret.setDouble(2, 1, matrix.m23());
+    ret.setDouble(2, 2, matrix.m33());
+    ret.setDouble(2, 3, matrix.m43());
+    ret.setDouble(3, 0, matrix.m14());
+    ret.setDouble(3, 1, matrix.m24());
+    ret.setDouble(3, 2, matrix.m34());
+    ret.setDouble(3, 3, matrix.m44());
+    return ret;
+}
+
+} // namespace WebCore
diff --git a/Source/WebCore/platform/graphics/chromium/TransformSkMatrix44Conversions.h b/Source/WebCore/platform/graphics/chromium/TransformSkMatrix44Conversions.h
new file mode 100644 (file)
index 0000000..78b9234
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2013 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "SkMatrix44.h"
+
+namespace WebCore {
+
+class TransformationMatrix;
+
+class TransformSkMatrix44Conversions {
+public:
+    static SkMatrix44 convert(const TransformationMatrix&);
+};
+
+} // namespace WebCore