Make TransformOperation::type() non-virtual
authorsimon.fraser@apple.com <simon.fraser@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 8 Aug 2017 02:46:11 +0000 (02:46 +0000)
committersimon.fraser@apple.com <simon.fraser@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 8 Aug 2017 02:46:11 +0000 (02:46 +0000)
https://bugs.webkit.org/show_bug.cgi?id=175297

Reviewed by Sam Weinig.

Store the OperationType in the base class so that type() and isSameType() can
be non-virtual.

Small perf win on some benchmarks.

* platform/graphics/transforms/IdentityTransformOperation.h:
* platform/graphics/transforms/Matrix3DTransformOperation.h:
* platform/graphics/transforms/MatrixTransformOperation.h:
* platform/graphics/transforms/PerspectiveTransformOperation.h:
* platform/graphics/transforms/RotateTransformOperation.cpp:
(WebCore::RotateTransformOperation::blend):
* platform/graphics/transforms/RotateTransformOperation.h:
* platform/graphics/transforms/ScaleTransformOperation.cpp:
(WebCore::ScaleTransformOperation::blend):
* platform/graphics/transforms/ScaleTransformOperation.h:
* platform/graphics/transforms/SkewTransformOperation.cpp:
(WebCore::SkewTransformOperation::blend):
* platform/graphics/transforms/SkewTransformOperation.h:
* platform/graphics/transforms/TransformOperation.h:
(WebCore::TransformOperation::TransformOperation):
(WebCore::TransformOperation::type const):
(WebCore::TransformOperation::isSameType const):
* platform/graphics/transforms/TranslateTransformOperation.cpp:
(WebCore::TranslateTransformOperation::blend):
* platform/graphics/transforms/TranslateTransformOperation.h:

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

14 files changed:
Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/transforms/IdentityTransformOperation.h
Source/WebCore/platform/graphics/transforms/Matrix3DTransformOperation.h
Source/WebCore/platform/graphics/transforms/MatrixTransformOperation.h
Source/WebCore/platform/graphics/transforms/PerspectiveTransformOperation.h
Source/WebCore/platform/graphics/transforms/RotateTransformOperation.cpp
Source/WebCore/platform/graphics/transforms/RotateTransformOperation.h
Source/WebCore/platform/graphics/transforms/ScaleTransformOperation.cpp
Source/WebCore/platform/graphics/transforms/ScaleTransformOperation.h
Source/WebCore/platform/graphics/transforms/SkewTransformOperation.cpp
Source/WebCore/platform/graphics/transforms/SkewTransformOperation.h
Source/WebCore/platform/graphics/transforms/TransformOperation.h
Source/WebCore/platform/graphics/transforms/TranslateTransformOperation.cpp
Source/WebCore/platform/graphics/transforms/TranslateTransformOperation.h

index 9532558..117fe73 100644 (file)
@@ -1,5 +1,38 @@
 2017-08-07  Simon Fraser  <simon.fraser@apple.com>
 
 2017-08-07  Simon Fraser  <simon.fraser@apple.com>
 
+        Make TransformOperation::type() non-virtual
+        https://bugs.webkit.org/show_bug.cgi?id=175297
+
+        Reviewed by Sam Weinig.
+
+        Store the OperationType in the base class so that type() and isSameType() can
+        be non-virtual.
+
+        Small perf win on some benchmarks.
+
+        * platform/graphics/transforms/IdentityTransformOperation.h:
+        * platform/graphics/transforms/Matrix3DTransformOperation.h:
+        * platform/graphics/transforms/MatrixTransformOperation.h:
+        * platform/graphics/transforms/PerspectiveTransformOperation.h:
+        * platform/graphics/transforms/RotateTransformOperation.cpp:
+        (WebCore::RotateTransformOperation::blend):
+        * platform/graphics/transforms/RotateTransformOperation.h:
+        * platform/graphics/transforms/ScaleTransformOperation.cpp:
+        (WebCore::ScaleTransformOperation::blend):
+        * platform/graphics/transforms/ScaleTransformOperation.h:
+        * platform/graphics/transforms/SkewTransformOperation.cpp:
+        (WebCore::SkewTransformOperation::blend):
+        * platform/graphics/transforms/SkewTransformOperation.h:
+        * platform/graphics/transforms/TransformOperation.h:
+        (WebCore::TransformOperation::TransformOperation):
+        (WebCore::TransformOperation::type const):
+        (WebCore::TransformOperation::isSameType const):
+        * platform/graphics/transforms/TranslateTransformOperation.cpp:
+        (WebCore::TranslateTransformOperation::blend):
+        * platform/graphics/transforms/TranslateTransformOperation.h:
+
+2017-08-07  Simon Fraser  <simon.fraser@apple.com>
+
         Inline ~Color and Color::isExtended()
         https://bugs.webkit.org/show_bug.cgi?id=175293
 
         Inline ~Color and Color::isExtended()
         https://bugs.webkit.org/show_bug.cgi?id=175293
 
index eed4c84..08d6d87 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
  *           (C) 2000 Antti Koivisto (koivisto@kde.org)
  *           (C) 2000 Dirk Mueller (mueller@kde.org)
  * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
  *           (C) 2000 Antti Koivisto (koivisto@kde.org)
  *           (C) 2000 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2003, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2003, 2005-2008, 2017 Apple Inc. All rights reserved.
  * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
  *
  * This library is free software; you can redistribute it and/or
  * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
  *
  * This library is free software; you can redistribute it and/or
@@ -22,8 +22,7 @@
  *
  */
 
  *
  */
 
-#ifndef IdentityTransformOperation_h
-#define IdentityTransformOperation_h
+#pragma once
 
 #include "TransformOperation.h"
 #include <wtf/Ref.h>
 
 #include "TransformOperation.h"
 #include <wtf/Ref.h>
@@ -44,8 +43,6 @@ public:
 
 private:
     bool isIdentity() const override { return true; }
 
 private:
     bool isIdentity() const override { return true; }
-    OperationType type() const override { return IDENTITY; }
-    bool isSameType(const TransformOperation& o) const override { return o.type() == IDENTITY; }
 
     bool operator==(const TransformOperation& o) const override
     {
 
     bool operator==(const TransformOperation& o) const override
     {
@@ -65,13 +62,11 @@ private:
     void dump(TextStream&) const final;
 
     IdentityTransformOperation()
     void dump(TextStream&) const final;
 
     IdentityTransformOperation()
+        : TransformOperation(IDENTITY)
     {
     }
     {
     }
-
 };
 
 } // namespace WebCore
 
 SPECIALIZE_TYPE_TRAITS_TRANSFORMOPERATION(WebCore::IdentityTransformOperation, type() == WebCore::TransformOperation::IDENTITY)
 };
 
 } // namespace WebCore
 
 SPECIALIZE_TYPE_TRAITS_TRANSFORMOPERATION(WebCore::IdentityTransformOperation, type() == WebCore::TransformOperation::IDENTITY)
-
-#endif // IdentityTransformOperation_h
index a30b0aa..0405326 100644 (file)
@@ -23,8 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-#ifndef Matrix3DTransformOperation_h
-#define Matrix3DTransformOperation_h
+#pragma once
 
 #include "TransformOperation.h"
 #include <wtf/Ref.h>
 
 #include "TransformOperation.h"
 #include <wtf/Ref.h>
@@ -49,9 +48,6 @@ private:
     bool isIdentity() const override { return m_matrix.isIdentity(); }
     bool isAffectedByTransformOrigin() const override { return !isIdentity(); }
 
     bool isIdentity() const override { return m_matrix.isIdentity(); }
     bool isAffectedByTransformOrigin() const override { return !isIdentity(); }
 
-    OperationType type() const override { return MATRIX_3D; }
-    bool isSameType(const TransformOperation& o) const override { return o.type() == MATRIX_3D; }
-
     bool operator==(const TransformOperation&) const override;
 
     bool apply(TransformationMatrix& transform, const FloatSize&) const override
     bool operator==(const TransformOperation&) const override;
 
     bool apply(TransformationMatrix& transform, const FloatSize&) const override
@@ -65,8 +61,9 @@ private:
     void dump(TextStream&) const final;
 
     Matrix3DTransformOperation(const TransformationMatrix& mat)
     void dump(TextStream&) const final;
 
     Matrix3DTransformOperation(const TransformationMatrix& mat)
+        : TransformOperation(MATRIX_3D)
+        , m_matrix(mat)
     {
     {
-        m_matrix = mat;
     }
 
     TransformationMatrix m_matrix;
     }
 
     TransformationMatrix m_matrix;
@@ -75,5 +72,3 @@ private:
 } // namespace WebCore
 
 SPECIALIZE_TYPE_TRAITS_TRANSFORMOPERATION(WebCore::Matrix3DTransformOperation, type() == WebCore::TransformOperation::MATRIX_3D)
 } // namespace WebCore
 
 SPECIALIZE_TYPE_TRAITS_TRANSFORMOPERATION(WebCore::Matrix3DTransformOperation, type() == WebCore::TransformOperation::MATRIX_3D)
-
-#endif // Matrix3DTransformOperation_h
index 3e88a99..ea2b2df 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
  *           (C) 2000 Antti Koivisto (koivisto@kde.org)
  *           (C) 2000 Dirk Mueller (mueller@kde.org)
  * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
  *           (C) 2000 Antti Koivisto (koivisto@kde.org)
  *           (C) 2000 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2003, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2003, 2005-2008, 2017 Apple Inc. All rights reserved.
  * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
  *
  * This library is free software; you can redistribute it and/or
  * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
  *
  * This library is free software; you can redistribute it and/or
@@ -22,8 +22,7 @@
  *
  */
 
  *
  */
 
-#ifndef MatrixTransformOperation_h
-#define MatrixTransformOperation_h
+#pragma once
 
 #include "TransformOperation.h"
 #include "TransformationMatrix.h"
 
 #include "TransformOperation.h"
 #include "TransformationMatrix.h"
@@ -54,9 +53,6 @@ private:
     bool isIdentity() const override { return m_a == 1 && m_b == 0 && m_c == 0 && m_d == 1 && m_e == 0 && m_f == 0; }
     bool isAffectedByTransformOrigin() const override { return !isIdentity(); }
 
     bool isIdentity() const override { return m_a == 1 && m_b == 0 && m_c == 0 && m_d == 1 && m_e == 0 && m_f == 0; }
     bool isAffectedByTransformOrigin() const override { return !isIdentity(); }
 
-    OperationType type() const override { return MATRIX; }
-    bool isSameType(const TransformOperation& o) const override { return o.type() == MATRIX; }
-
     bool operator==(const TransformOperation&) const override;
 
     bool apply(TransformationMatrix& transform, const FloatSize&) const override
     bool operator==(const TransformOperation&) const override;
 
     bool apply(TransformationMatrix& transform, const FloatSize&) const override
@@ -71,7 +67,8 @@ private:
     void dump(TextStream&) const final;
 
     MatrixTransformOperation(double a, double b, double c, double d, double e, double f)
     void dump(TextStream&) const final;
 
     MatrixTransformOperation(double a, double b, double c, double d, double e, double f)
-        : m_a(a)
+        : TransformOperation(MATRIX)
+        , m_a(a)
         , m_b(b)
         , m_c(c)
         , m_d(d)
         , m_b(b)
         , m_c(c)
         , m_d(d)
@@ -81,7 +78,8 @@ private:
     }
 
     MatrixTransformOperation(const TransformationMatrix& t)
     }
 
     MatrixTransformOperation(const TransformationMatrix& t)
-        : m_a(t.a())
+        : TransformOperation(MATRIX)
+        , m_a(t.a())
         , m_b(t.b())
         , m_c(t.c())
         , m_d(t.d())
         , m_b(t.b())
         , m_c(t.c())
         , m_d(t.d())
@@ -101,5 +99,3 @@ private:
 } // namespace WebCore
 
 SPECIALIZE_TYPE_TRAITS_TRANSFORMOPERATION(WebCore::MatrixTransformOperation, type() == WebCore::TransformOperation::MATRIX)
 } // namespace WebCore
 
 SPECIALIZE_TYPE_TRAITS_TRANSFORMOPERATION(WebCore::MatrixTransformOperation, type() == WebCore::TransformOperation::MATRIX)
-
-#endif // MatrixTransformOperation_h
index d9b20a5..d4348b5 100644 (file)
@@ -23,8 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-#ifndef PerspectiveTransformOperation_h
-#define PerspectiveTransformOperation_h
+#pragma once
 
 #include "Length.h"
 #include "LengthFunctions.h"
 
 #include "Length.h"
 #include "LengthFunctions.h"
@@ -51,9 +50,6 @@ private:
     bool isIdentity() const override { return !floatValueForLength(m_p, 1); }
     bool isAffectedByTransformOrigin() const override { return !isIdentity(); }
 
     bool isIdentity() const override { return !floatValueForLength(m_p, 1); }
     bool isAffectedByTransformOrigin() const override { return !isIdentity(); }
 
-    OperationType type() const override { return PERSPECTIVE; }
-    bool isSameType(const TransformOperation& o) const override { return o.type() == PERSPECTIVE; }
-
     bool operator==(const TransformOperation&) const override;
 
     bool apply(TransformationMatrix& transform, const FloatSize&) const override
     bool operator==(const TransformOperation&) const override;
 
     bool apply(TransformationMatrix& transform, const FloatSize&) const override
@@ -67,7 +63,8 @@ private:
     void dump(TextStream&) const final;
 
     PerspectiveTransformOperation(const Length& p)
     void dump(TextStream&) const final;
 
     PerspectiveTransformOperation(const Length& p)
-        : m_p(p)
+        : TransformOperation(PERSPECTIVE)
+        , m_p(p)
     {
         ASSERT(p.isFixed());
     }
     {
         ASSERT(p.isFixed());
     }
@@ -78,5 +75,3 @@ private:
 } // namespace WebCore
 
 SPECIALIZE_TYPE_TRAITS_TRANSFORMOPERATION(WebCore::PerspectiveTransformOperation, type() == WebCore::TransformOperation::PERSPECTIVE)
 } // namespace WebCore
 
 SPECIALIZE_TYPE_TRAITS_TRANSFORMOPERATION(WebCore::PerspectiveTransformOperation, type() == WebCore::TransformOperation::PERSPECTIVE)
-
-#endif // PerspectiveTransformOperation_h
index 52c3dbc..3214863 100644 (file)
@@ -43,7 +43,7 @@ Ref<TransformOperation> RotateTransformOperation::blend(const TransformOperation
         return *this;
     
     if (blendToIdentity)
         return *this;
     
     if (blendToIdentity)
-        return RotateTransformOperation::create(m_x, m_y, m_z, m_angle - m_angle * progress, m_type);
+        return RotateTransformOperation::create(m_x, m_y, m_z, m_angle - m_angle * progress, type());
     
     const RotateTransformOperation* fromOp = downcast<RotateTransformOperation>(from);
     
     
     const RotateTransformOperation* fromOp = downcast<RotateTransformOperation>(from);
     
@@ -55,7 +55,7 @@ Ref<TransformOperation> RotateTransformOperation::blend(const TransformOperation
         return RotateTransformOperation::create(fromOp ? fromOp->m_x : m_x, 
                                                 fromOp ? fromOp->m_y : m_y, 
                                                 fromOp ? fromOp->m_z : m_z, 
         return RotateTransformOperation::create(fromOp ? fromOp->m_x : m_x, 
                                                 fromOp ? fromOp->m_y : m_y, 
                                                 fromOp ? fromOp->m_z : m_z, 
-                                                WebCore::blend(fromAngle, m_angle, progress), m_type);
+                                                WebCore::blend(fromAngle, m_angle, progress), type());
     }
 
     const RotateTransformOperation* toOp = this;
     }
 
     const RotateTransformOperation* toOp = this;
index be8c6e2..df3dd09 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
  *           (C) 2000 Antti Koivisto (koivisto@kde.org)
  *           (C) 2000 Dirk Mueller (mueller@kde.org)
  * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
  *           (C) 2000 Antti Koivisto (koivisto@kde.org)
  *           (C) 2000 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2003, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2003, 2005-2008, 2017 Apple Inc. All rights reserved.
  * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
  *
  * This library is free software; you can redistribute it and/or
  * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
  *
  * This library is free software; you can redistribute it and/or
@@ -22,8 +22,7 @@
  *
  */
 
  *
  */
 
-#ifndef RotateTransformOperation_h
-#define RotateTransformOperation_h
+#pragma once
 
 #include "TransformOperation.h"
 #include <wtf/Ref.h>
 
 #include "TransformOperation.h"
 #include <wtf/Ref.h>
@@ -44,7 +43,7 @@ public:
 
     Ref<TransformOperation> clone() const override
     {
 
     Ref<TransformOperation> clone() const override
     {
-        return adoptRef(*new RotateTransformOperation(m_x, m_y, m_z, m_angle, m_type));
+        return adoptRef(*new RotateTransformOperation(m_x, m_y, m_z, m_angle, type()));
     }
 
     double x() const { return m_x; }
     }
 
     double x() const { return m_x; }
@@ -56,9 +55,6 @@ private:
     bool isIdentity() const override { return m_angle == 0; }
     bool isAffectedByTransformOrigin() const override { return !isIdentity(); }
 
     bool isIdentity() const override { return m_angle == 0; }
     bool isAffectedByTransformOrigin() const override { return !isIdentity(); }
 
-    OperationType type() const override { return m_type; }
-    bool isSameType(const TransformOperation& o) const override { return o.type() == m_type; }
-
     bool operator==(const TransformOperation&) const override;
 
     bool apply(TransformationMatrix& transform, const FloatSize& /*borderBoxSize*/) const override
     bool operator==(const TransformOperation&) const override;
 
     bool apply(TransformationMatrix& transform, const FloatSize& /*borderBoxSize*/) const override
@@ -72,11 +68,11 @@ private:
     void dump(TextStream&) const final;
 
     RotateTransformOperation(double x, double y, double z, double angle, OperationType type)
     void dump(TextStream&) const final;
 
     RotateTransformOperation(double x, double y, double z, double angle, OperationType type)
-        : m_x(x)
+        : TransformOperation(type)
+        , m_x(x)
         , m_y(y)
         , m_z(z)
         , m_angle(angle)
         , m_y(y)
         , m_z(z)
         , m_angle(angle)
-        , m_type(type)
     {
         ASSERT(isRotateTransformOperationType());
     }
     {
         ASSERT(isRotateTransformOperationType());
     }
@@ -85,11 +81,8 @@ private:
     double m_y;
     double m_z;
     double m_angle;
     double m_y;
     double m_z;
     double m_angle;
-    OperationType m_type;
 };
 
 } // namespace WebCore
 
 SPECIALIZE_TYPE_TRAITS_TRANSFORMOPERATION(WebCore::RotateTransformOperation, isRotateTransformOperationType())
 };
 
 } // namespace WebCore
 
 SPECIALIZE_TYPE_TRAITS_TRANSFORMOPERATION(WebCore::RotateTransformOperation, isRotateTransformOperationType())
-
-#endif // RotateTransformOperation_h
index 862eafe..417d1da 100644 (file)
@@ -43,7 +43,7 @@ Ref<TransformOperation> ScaleTransformOperation::blend(const TransformOperation*
     if (blendToIdentity)
         return ScaleTransformOperation::create(WebCore::blend(m_x, 1.0, progress),
                                                WebCore::blend(m_y, 1.0, progress),
     if (blendToIdentity)
         return ScaleTransformOperation::create(WebCore::blend(m_x, 1.0, progress),
                                                WebCore::blend(m_y, 1.0, progress),
-                                               WebCore::blend(m_z, 1.0, progress), m_type);
+                                               WebCore::blend(m_z, 1.0, progress), type());
     
     const ScaleTransformOperation* fromOp = downcast<ScaleTransformOperation>(from);
     double fromX = fromOp ? fromOp->m_x : 1.0;
     
     const ScaleTransformOperation* fromOp = downcast<ScaleTransformOperation>(from);
     double fromX = fromOp ? fromOp->m_x : 1.0;
@@ -51,7 +51,7 @@ Ref<TransformOperation> ScaleTransformOperation::blend(const TransformOperation*
     double fromZ = fromOp ? fromOp->m_z : 1.0;
     return ScaleTransformOperation::create(WebCore::blend(fromX, m_x, progress),
                                            WebCore::blend(fromY, m_y, progress),
     double fromZ = fromOp ? fromOp->m_z : 1.0;
     return ScaleTransformOperation::create(WebCore::blend(fromX, m_x, progress),
                                            WebCore::blend(fromY, m_y, progress),
-                                           WebCore::blend(fromZ, m_z, progress), m_type);
+                                           WebCore::blend(fromZ, m_z, progress), type());
 }
 
 void ScaleTransformOperation::dump(TextStream& ts) const
 }
 
 void ScaleTransformOperation::dump(TextStream& ts) const
index ae8a555..c582af4 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
  *           (C) 2000 Antti Koivisto (koivisto@kde.org)
  *           (C) 2000 Dirk Mueller (mueller@kde.org)
  * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
  *           (C) 2000 Antti Koivisto (koivisto@kde.org)
  *           (C) 2000 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2003, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2003, 2005-2008, 2017 Apple Inc. All rights reserved.
  * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
  *
  * This library is free software; you can redistribute it and/or
  * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
  *
  * This library is free software; you can redistribute it and/or
@@ -22,8 +22,7 @@
  *
  */
 
  *
  */
 
-#ifndef ScaleTransformOperation_h
-#define ScaleTransformOperation_h
+#pragma once
 
 #include "TransformOperation.h"
 #include <wtf/Ref.h>
 
 #include "TransformOperation.h"
 #include <wtf/Ref.h>
@@ -44,7 +43,7 @@ public:
 
     Ref<TransformOperation> clone() const override
     {
 
     Ref<TransformOperation> clone() const override
     {
-        return adoptRef(*new ScaleTransformOperation(m_x, m_y, m_z, m_type));
+        return adoptRef(*new ScaleTransformOperation(m_x, m_y, m_z, type()));
     }
 
     double x() const { return m_x; }
     }
 
     double x() const { return m_x; }
@@ -55,9 +54,6 @@ private:
     bool isIdentity() const override { return m_x == 1 &&  m_y == 1 &&  m_z == 1; }
     bool isAffectedByTransformOrigin() const override { return !isIdentity(); }
 
     bool isIdentity() const override { return m_x == 1 &&  m_y == 1 &&  m_z == 1; }
     bool isAffectedByTransformOrigin() const override { return !isIdentity(); }
 
-    OperationType type() const override { return m_type; }
-    bool isSameType(const TransformOperation& o) const override { return o.type() == m_type; }
-
     bool operator==(const TransformOperation&) const override;
 
     bool apply(TransformationMatrix& transform, const FloatSize&) const override
     bool operator==(const TransformOperation&) const override;
 
     bool apply(TransformationMatrix& transform, const FloatSize&) const override
@@ -71,10 +67,10 @@ private:
     void dump(TextStream&) const final;
 
     ScaleTransformOperation(double sx, double sy, double sz, OperationType type)
     void dump(TextStream&) const final;
 
     ScaleTransformOperation(double sx, double sy, double sz, OperationType type)
-        : m_x(sx)
+        : TransformOperation(type)
+        , m_x(sx)
         , m_y(sy)
         , m_z(sz)
         , m_y(sy)
         , m_z(sz)
-        , m_type(type)
     {
         ASSERT(isScaleTransformOperationType());
     }
     {
         ASSERT(isScaleTransformOperationType());
     }
@@ -82,11 +78,8 @@ private:
     double m_x;
     double m_y;
     double m_z;
     double m_x;
     double m_y;
     double m_z;
-    OperationType m_type;
 };
 
 } // namespace WebCore
 
 SPECIALIZE_TYPE_TRAITS_TRANSFORMOPERATION(WebCore::ScaleTransformOperation, isScaleTransformOperationType())
 };
 
 } // namespace WebCore
 
 SPECIALIZE_TYPE_TRAITS_TRANSFORMOPERATION(WebCore::ScaleTransformOperation, isScaleTransformOperationType())
-
-#endif // ScaleTransformOperation_h
index ec52112..88f2249 100644 (file)
@@ -41,12 +41,12 @@ Ref<TransformOperation> SkewTransformOperation::blend(const TransformOperation*
         return *this;
     
     if (blendToIdentity)
         return *this;
     
     if (blendToIdentity)
-        return SkewTransformOperation::create(WebCore::blend(m_angleX, 0.0, progress), WebCore::blend(m_angleY, 0.0, progress), m_type);
+        return SkewTransformOperation::create(WebCore::blend(m_angleX, 0.0, progress), WebCore::blend(m_angleY, 0.0, progress), type());
     
     const SkewTransformOperation* fromOp = downcast<SkewTransformOperation>(from);
     double fromAngleX = fromOp ? fromOp->m_angleX : 0;
     double fromAngleY = fromOp ? fromOp->m_angleY : 0;
     
     const SkewTransformOperation* fromOp = downcast<SkewTransformOperation>(from);
     double fromAngleX = fromOp ? fromOp->m_angleX : 0;
     double fromAngleY = fromOp ? fromOp->m_angleY : 0;
-    return SkewTransformOperation::create(WebCore::blend(fromAngleX, m_angleX, progress), WebCore::blend(fromAngleY, m_angleY, progress), m_type);
+    return SkewTransformOperation::create(WebCore::blend(fromAngleX, m_angleX, progress), WebCore::blend(fromAngleY, m_angleY, progress), type());
 }
 
 void SkewTransformOperation::dump(TextStream& ts) const
 }
 
 void SkewTransformOperation::dump(TextStream& ts) const
index 422d14b..ee2dd2f 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
  *           (C) 2000 Antti Koivisto (koivisto@kde.org)
  *           (C) 2000 Dirk Mueller (mueller@kde.org)
  * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
  *           (C) 2000 Antti Koivisto (koivisto@kde.org)
  *           (C) 2000 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2003, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2003, 2005-2008, 2017 Apple Inc. All rights reserved.
  * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
  *
  * This library is free software; you can redistribute it and/or
  * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
  *
  * This library is free software; you can redistribute it and/or
@@ -22,8 +22,7 @@
  *
  */
 
  *
  */
 
-#ifndef SkewTransformOperation_h
-#define SkewTransformOperation_h
+#pragma once
 
 #include "TransformOperation.h"
 #include <wtf/Ref.h>
 
 #include "TransformOperation.h"
 #include <wtf/Ref.h>
@@ -39,7 +38,7 @@ public:
 
     Ref<TransformOperation> clone() const override
     {
 
     Ref<TransformOperation> clone() const override
     {
-        return adoptRef(*new SkewTransformOperation(m_angleX, m_angleY, m_type));
+        return adoptRef(*new SkewTransformOperation(m_angleX, m_angleY, type()));
     }
 
     double angleX() const { return m_angleX; }
     }
 
     double angleX() const { return m_angleX; }
@@ -49,9 +48,6 @@ private:
     bool isIdentity() const override { return m_angleX == 0 && m_angleY == 0; }
     bool isAffectedByTransformOrigin() const override { return !isIdentity(); }
 
     bool isIdentity() const override { return m_angleX == 0 && m_angleY == 0; }
     bool isAffectedByTransformOrigin() const override { return !isIdentity(); }
 
-    OperationType type() const override { return m_type; }
-    bool isSameType(const TransformOperation& o) const override { return o.type() == m_type; }
-
     bool operator==(const TransformOperation&) const override;
 
     bool apply(TransformationMatrix& transform, const FloatSize&) const override
     bool operator==(const TransformOperation&) const override;
 
     bool apply(TransformationMatrix& transform, const FloatSize&) const override
@@ -65,20 +61,17 @@ private:
     void dump(TextStream&) const final;
     
     SkewTransformOperation(double angleX, double angleY, OperationType type)
     void dump(TextStream&) const final;
     
     SkewTransformOperation(double angleX, double angleY, OperationType type)
-        : m_angleX(angleX)
+        : TransformOperation(type)
+        , m_angleX(angleX)
         , m_angleY(angleY)
         , m_angleY(angleY)
-        , m_type(type)
     {
         ASSERT(isSkewTransformOperationType());
     }
     
     double m_angleX;
     double m_angleY;
     {
         ASSERT(isSkewTransformOperationType());
     }
     
     double m_angleX;
     double m_angleY;
-    OperationType m_type;
 };
 
 } // namespace WebCore
 
 SPECIALIZE_TYPE_TRAITS_TRANSFORMOPERATION(WebCore::SkewTransformOperation, isSkewTransformOperationType())
 };
 
 } // namespace WebCore
 
 SPECIALIZE_TYPE_TRAITS_TRANSFORMOPERATION(WebCore::SkewTransformOperation, isSkewTransformOperationType())
-
-#endif // SkewTransformOperation_h
index 4f6aa88..da44348 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
  *           (C) 2000 Antti Koivisto (koivisto@kde.org)
  *           (C) 2000 Dirk Mueller (mueller@kde.org)
  * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
  *           (C) 2000 Antti Koivisto (koivisto@kde.org)
  *           (C) 2000 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2003, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2003, 2005-2008, 2017 Apple Inc. All rights reserved.
  * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
  *
  * This library is free software; you can redistribute it and/or
  * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
  *
  * This library is free software; you can redistribute it and/or
@@ -22,8 +22,7 @@
  *
  */
 
  *
  */
 
-#ifndef TransformOperation_h
-#define TransformOperation_h
+#pragma once
 
 #include "FloatSize.h"
 #include "TransformationMatrix.h"
 
 #include "FloatSize.h"
 #include "TransformationMatrix.h"
@@ -52,6 +51,10 @@ public:
         IDENTITY, NONE
     };
 
         IDENTITY, NONE
     };
 
+    TransformOperation(OperationType type)
+        : m_type(type)
+    {
+    }
     virtual ~TransformOperation() { }
 
     virtual Ref<TransformOperation> clone() const = 0;
     virtual ~TransformOperation() { }
 
     virtual Ref<TransformOperation> clone() const = 0;
@@ -66,8 +69,8 @@ public:
 
     virtual Ref<TransformOperation> blend(const TransformOperation* from, double progress, bool blendToIdentity = false) = 0;
 
 
     virtual Ref<TransformOperation> blend(const TransformOperation* from, double progress, bool blendToIdentity = false) = 0;
 
-    virtual OperationType type() const = 0;
-    virtual bool isSameType(const TransformOperation&) const { return false; }
+    OperationType type() const { return m_type; }
+    bool isSameType(const TransformOperation& other) const { return type() == other.type(); }
 
     virtual bool isAffectedByTransformOrigin() const { return false; }
     
 
     virtual bool isAffectedByTransformOrigin() const { return false; }
     
@@ -106,6 +109,9 @@ public:
     }
     
     virtual void dump(TextStream&) const = 0;
     }
     
     virtual void dump(TextStream&) const = 0;
+
+private:
+    OperationType m_type;
 };
 
 TextStream& operator<<(TextStream&, TransformOperation::OperationType);
 };
 
 TextStream& operator<<(TextStream&, TransformOperation::OperationType);
@@ -117,5 +123,3 @@ TextStream& operator<<(TextStream&, const TransformOperation&);
 SPECIALIZE_TYPE_TRAITS_BEGIN(ToValueTypeName) \
     static bool isType(const WebCore::TransformOperation& operation) { return operation.predicate; } \
 SPECIALIZE_TYPE_TRAITS_END()
 SPECIALIZE_TYPE_TRAITS_BEGIN(ToValueTypeName) \
     static bool isType(const WebCore::TransformOperation& operation) { return operation.predicate; } \
 SPECIALIZE_TYPE_TRAITS_END()
-
-#endif // TransformOperation_h
index 0288084..96e597f 100644 (file)
@@ -42,13 +42,13 @@ Ref<TransformOperation> TranslateTransformOperation::blend(const TransformOperat
 
     Length zeroLength(0, Fixed);
     if (blendToIdentity)
 
     Length zeroLength(0, Fixed);
     if (blendToIdentity)
-        return TranslateTransformOperation::create(WebCore::blend(m_x, zeroLength, progress), WebCore::blend(m_y, zeroLength, progress), WebCore::blend(m_z, zeroLength, progress), m_type);
+        return TranslateTransformOperation::create(WebCore::blend(m_x, zeroLength, progress), WebCore::blend(m_y, zeroLength, progress), WebCore::blend(m_z, zeroLength, progress), type());
 
     const TranslateTransformOperation* fromOp = downcast<TranslateTransformOperation>(from);
     Length fromX = fromOp ? fromOp->m_x : zeroLength;
     Length fromY = fromOp ? fromOp->m_y : zeroLength;
     Length fromZ = fromOp ? fromOp->m_z : zeroLength;
 
     const TranslateTransformOperation* fromOp = downcast<TranslateTransformOperation>(from);
     Length fromX = fromOp ? fromOp->m_x : zeroLength;
     Length fromY = fromOp ? fromOp->m_y : zeroLength;
     Length fromZ = fromOp ? fromOp->m_z : zeroLength;
-    return TranslateTransformOperation::create(WebCore::blend(fromX, x(), progress), WebCore::blend(fromY, y(), progress), WebCore::blend(fromZ, z(), progress), m_type);
+    return TranslateTransformOperation::create(WebCore::blend(fromX, x(), progress), WebCore::blend(fromY, y(), progress), WebCore::blend(fromZ, z(), progress), type());
 }
 
 void TranslateTransformOperation::dump(TextStream& ts) const
 }
 
 void TranslateTransformOperation::dump(TextStream& ts) const
index e9f6875..d057632 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
  *           (C) 2000 Antti Koivisto (koivisto@kde.org)
  *           (C) 2000 Dirk Mueller (mueller@kde.org)
  * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
  *           (C) 2000 Antti Koivisto (koivisto@kde.org)
  *           (C) 2000 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2003, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2003, 2005-2008, 2017 Apple Inc. All rights reserved.
  * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
  *
  * This library is free software; you can redistribute it and/or
  * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
  *
  * This library is free software; you can redistribute it and/or
@@ -22,8 +22,7 @@
  *
  */
 
  *
  */
 
-#ifndef TranslateTransformOperation_h
-#define TranslateTransformOperation_h
+#pragma once
 
 #include "Length.h"
 #include "LengthFunctions.h"
 
 #include "Length.h"
 #include "LengthFunctions.h"
@@ -46,7 +45,7 @@ public:
 
     Ref<TransformOperation> clone() const override
     {
 
     Ref<TransformOperation> clone() const override
     {
-        return adoptRef(*new TranslateTransformOperation(m_x, m_y, m_z, m_type));
+        return adoptRef(*new TranslateTransformOperation(m_x, m_y, m_z, type()));
     }
 
     double x(const FloatSize& borderBoxSize) const { return floatValueForLength(m_x, borderBoxSize.width()); }
     }
 
     double x(const FloatSize& borderBoxSize) const { return floatValueForLength(m_x, borderBoxSize.width()); }
@@ -60,9 +59,6 @@ public:
 private:
     bool isIdentity() const override { return !floatValueForLength(m_x, 1) && !floatValueForLength(m_y, 1) && !floatValueForLength(m_z, 1); }
 
 private:
     bool isIdentity() const override { return !floatValueForLength(m_x, 1) && !floatValueForLength(m_y, 1) && !floatValueForLength(m_z, 1); }
 
-    OperationType type() const override { return m_type; }
-    bool isSameType(const TransformOperation& o) const override { return o.type() == m_type; }
-
     bool operator==(const TransformOperation&) const override;
 
     bool apply(TransformationMatrix& transform, const FloatSize& borderBoxSize) const override
     bool operator==(const TransformOperation&) const override;
 
     bool apply(TransformationMatrix& transform, const FloatSize& borderBoxSize) const override
@@ -76,10 +72,10 @@ private:
     void dump(TextStream&) const final;
 
     TranslateTransformOperation(const Length& tx, const Length& ty, const Length& tz, OperationType type)
     void dump(TextStream&) const final;
 
     TranslateTransformOperation(const Length& tx, const Length& ty, const Length& tz, OperationType type)
-        : m_x(tx)
+        : TransformOperation(type)
+        , m_x(tx)
         , m_y(ty)
         , m_z(tz)
         , m_y(ty)
         , m_z(tz)
-        , m_type(type)
     {
         ASSERT(isTranslateTransformOperationType());
     }
     {
         ASSERT(isTranslateTransformOperationType());
     }
@@ -87,11 +83,8 @@ private:
     Length m_x;
     Length m_y;
     Length m_z;
     Length m_x;
     Length m_y;
     Length m_z;
-    OperationType m_type;
 };
 
 } // namespace WebCore
 
 SPECIALIZE_TYPE_TRAITS_TRANSFORMOPERATION(WebCore::TranslateTransformOperation, isTranslateTransformOperationType())
 };
 
 } // namespace WebCore
 
 SPECIALIZE_TYPE_TRAITS_TRANSFORMOPERATION(WebCore::TranslateTransformOperation, isTranslateTransformOperationType())
-
-#endif // TranslateTransformOperation_h