OLD | NEW |
| (Empty) |
1 /* | |
2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) | |
3 * (C) 2000 Antti Koivisto (koivisto@kde.org) | |
4 * (C) 2000 Dirk Mueller (mueller@kde.org) | |
5 * Copyright (C) 2003, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. | |
6 * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com) | |
7 * | |
8 * This library is free software; you can redistribute it and/or | |
9 * modify it under the terms of the GNU Library General Public | |
10 * License as published by the Free Software Foundation; either | |
11 * version 2 of the License, or (at your option) any later version. | |
12 * | |
13 * This library is distributed in the hope that it will be useful, | |
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
16 * Library General Public License for more details. | |
17 * | |
18 * You should have received a copy of the GNU Library General Public License | |
19 * along with this library; see the file COPYING.LIB. If not, write to | |
20 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | |
21 * Boston, MA 02110-1301, USA. | |
22 * | |
23 */ | |
24 | |
25 #ifndef MatrixTransformOperation_h | |
26 #define MatrixTransformOperation_h | |
27 | |
28 #include "core/platform/graphics/transforms/TransformOperation.h" | |
29 #include "platform/transforms/TransformationMatrix.h" | |
30 | |
31 namespace WebCore { | |
32 | |
33 class MatrixTransformOperation : public TransformOperation { | |
34 public: | |
35 static PassRefPtr<MatrixTransformOperation> create(double a, double b, doubl
e c, double d, double e, double f) | |
36 { | |
37 return adoptRef(new MatrixTransformOperation(a, b, c, d, e, f)); | |
38 } | |
39 | |
40 static PassRefPtr<MatrixTransformOperation> create(const TransformationMatri
x& t) | |
41 { | |
42 return adoptRef(new MatrixTransformOperation(t)); | |
43 } | |
44 | |
45 TransformationMatrix matrix() const { return TransformationMatrix(m_a, m_b,
m_c, m_d, m_e, m_f); } | |
46 | |
47 private: | |
48 virtual bool isIdentity() const { return m_a == 1 && m_b == 0 && m_c == 0 &&
m_d == 1 && m_e == 0 && m_f == 0; } | |
49 | |
50 virtual OperationType getOperationType() const { return Matrix; } | |
51 virtual bool isSameType(const TransformOperation& o) const { return o.getOpe
rationType() == Matrix; } | |
52 | |
53 virtual bool operator==(const TransformOperation& o) const | |
54 { | |
55 if (!isSameType(o)) | |
56 return false; | |
57 | |
58 const MatrixTransformOperation* m = static_cast<const MatrixTransformOpe
ration*>(&o); | |
59 return m_a == m->m_a && m_b == m->m_b && m_c == m->m_c && m_d == m->m_d
&& m_e == m->m_e && m_f == m->m_f; | |
60 } | |
61 | |
62 virtual bool apply(TransformationMatrix& transform, const FloatSize&) const | |
63 { | |
64 TransformationMatrix matrix(m_a, m_b, m_c, m_d, m_e, m_f); | |
65 transform.multiply(matrix); | |
66 return false; | |
67 } | |
68 | |
69 virtual PassRefPtr<TransformOperation> blend(const TransformOperation* from,
double progress, bool blendToIdentity = false); | |
70 | |
71 MatrixTransformOperation(double a, double b, double c, double d, double e, d
ouble f) | |
72 : m_a(a) | |
73 , m_b(b) | |
74 , m_c(c) | |
75 , m_d(d) | |
76 , m_e(e) | |
77 , m_f(f) | |
78 { | |
79 } | |
80 | |
81 MatrixTransformOperation(const TransformationMatrix& t) | |
82 : m_a(t.a()) | |
83 , m_b(t.b()) | |
84 , m_c(t.c()) | |
85 , m_d(t.d()) | |
86 , m_e(t.e()) | |
87 , m_f(t.f()) | |
88 { | |
89 } | |
90 | |
91 double m_a; | |
92 double m_b; | |
93 double m_c; | |
94 double m_d; | |
95 double m_e; | |
96 double m_f; | |
97 }; | |
98 | |
99 } // namespace WebCore | |
100 | |
101 #endif // MatrixTransformOperation_h | |
OLD | NEW |