Index: third_party/WebKit/Source/platform/transforms/RotateTransformOperation.h |
diff --git a/third_party/WebKit/Source/platform/transforms/RotateTransformOperation.h b/third_party/WebKit/Source/platform/transforms/RotateTransformOperation.h |
index c92f6ae71661a481c7acfb843faf3be1ed615cfc..e1f0cc434ac338518a001acfdcb592d95e9c3b36 100644 |
--- a/third_party/WebKit/Source/platform/transforms/RotateTransformOperation.h |
+++ b/third_party/WebKit/Source/platform/transforms/RotateTransformOperation.h |
@@ -31,8 +31,7 @@ |
namespace blink { |
-class PLATFORM_EXPORT RotateTransformOperation final |
- : public TransformOperation { |
+class PLATFORM_EXPORT RotateTransformOperation : public TransformOperation { |
public: |
static PassRefPtr<RotateTransformOperation> create(double angle, |
OperationType type) { |
@@ -49,6 +48,7 @@ class PLATFORM_EXPORT RotateTransformOperation final |
static PassRefPtr<RotateTransformOperation> create(const Rotation& rotation, |
OperationType type) { |
+ DCHECK(isMatchingOperationType(type)); |
return adoptRef(new RotateTransformOperation(rotation, type)); |
} |
@@ -77,17 +77,16 @@ class PLATFORM_EXPORT RotateTransformOperation final |
type == RotateZ || type == Rotate3D; |
} |
- private: |
+ protected: |
bool operator==(const TransformOperation&) const override; |
PassRefPtr<TransformOperation> blend(const TransformOperation* from, |
double progress, |
bool blendToIdentity = false) override; |
- PassRefPtr<TransformOperation> zoom(double factor) final { return this; } |
+ PassRefPtr<TransformOperation> zoom(double factor) override { return this; } |
RotateTransformOperation(const Rotation& rotation, OperationType type) |
: m_rotation(rotation), m_type(type) { |
- ASSERT(isMatchingOperationType(type)); |
} |
const Rotation m_rotation; |
@@ -96,6 +95,39 @@ class PLATFORM_EXPORT RotateTransformOperation final |
DEFINE_TRANSFORM_TYPE_CASTS(RotateTransformOperation); |
+class PLATFORM_EXPORT RotateAroundOriginTransformOperation final |
+ : public RotateTransformOperation { |
+ public: |
+ static PassRefPtr<RotateAroundOriginTransformOperation> |
+ create(double angle, double originX, double originY) { |
+ return adoptRef( |
+ new RotateAroundOriginTransformOperation(angle, originX, originY)); |
+ } |
+ |
+ void apply(TransformationMatrix&, const FloatSize&) const override; |
+ |
+ static bool isMatchingOperationType(OperationType type) { |
+ return type == RotateAroundOrigin; |
+ } |
+ |
+ private: |
+ RotateAroundOriginTransformOperation(double angle, |
+ double originX, |
+ double originY); |
+ |
+ bool operator==(const TransformOperation&) const override; |
+ |
+ PassRefPtr<TransformOperation> blend(const TransformOperation* from, |
+ double progress, |
+ bool blendToIdentity = false) override; |
+ PassRefPtr<TransformOperation> zoom(double factor) override; |
+ |
+ double m_originX; |
+ double m_originY; |
+}; |
+ |
+DEFINE_TRANSFORM_TYPE_CASTS(RotateAroundOriginTransformOperation); |
+ |
} // namespace blink |
#endif // RotateTransformOperation_h |