OLD | NEW |
| (Empty) |
1 /* | |
2 * Copyright (C) 2012 Google Inc. All rights reserved. | |
3 * | |
4 * Redistribution and use in source and binary forms, with or without | |
5 * modification, are permitted provided that the following conditions | |
6 * are met: | |
7 * 1. Redistributions of source code must retain the above copyright | |
8 * notice, this list of conditions and the following disclaimer. | |
9 * 2. Redistributions in binary form must reproduce the above copyright | |
10 * notice, this list of conditions and the following disclaimer in the | |
11 * documentation and/or other materials provided with the distribution. | |
12 * | |
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND AN
Y | |
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |
15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
16 * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR AN
Y | |
17 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |
18 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |
19 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND O
N | |
20 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | |
22 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
23 */ | |
24 | |
25 | |
26 #include "core/animation/AnimationTranslationUtil.h" | |
27 | |
28 #include "platform/animation/CompositorTransformOperations.h" | |
29 #include "platform/graphics/filters/FilterOperations.h" | |
30 #include "platform/graphics/filters/SkiaImageFilterBuilder.h" | |
31 #include "platform/transforms/InterpolatedTransformOperation.h" | |
32 #include "platform/transforms/Matrix3DTransformOperation.h" | |
33 #include "platform/transforms/MatrixTransformOperation.h" | |
34 #include "platform/transforms/PerspectiveTransformOperation.h" | |
35 #include "platform/transforms/RotateTransformOperation.h" | |
36 #include "platform/transforms/ScaleTransformOperation.h" | |
37 #include "platform/transforms/SkewTransformOperation.h" | |
38 #include "platform/transforms/TransformOperations.h" | |
39 #include "platform/transforms/TransformationMatrix.h" | |
40 #include "platform/transforms/TranslateTransformOperation.h" | |
41 | |
42 namespace blink { | |
43 | |
44 void toCompositorTransformOperations(const TransformOperations& transformOperati
ons, CompositorTransformOperations* webTransformOperations) | |
45 { | |
46 // We need to do a deep copy the transformOperations may contain ref pointer
s to TransformOperation objects. | |
47 for (size_t j = 0; j < transformOperations.size(); ++j) { | |
48 switch (transformOperations.operations()[j]->type()) { | |
49 case TransformOperation::ScaleX: | |
50 case TransformOperation::ScaleY: | |
51 case TransformOperation::ScaleZ: | |
52 case TransformOperation::Scale3D: | |
53 case TransformOperation::Scale: { | |
54 ScaleTransformOperation* transform = static_cast<ScaleTransformOpera
tion*>(transformOperations.operations()[j].get()); | |
55 webTransformOperations->appendScale(transform->x(), transform->y(),
transform->z()); | |
56 break; | |
57 } | |
58 case TransformOperation::TranslateX: | |
59 case TransformOperation::TranslateY: | |
60 case TransformOperation::TranslateZ: | |
61 case TransformOperation::Translate3D: | |
62 case TransformOperation::Translate: { | |
63 TranslateTransformOperation* transform = static_cast<TranslateTransf
ormOperation*>(transformOperations.operations()[j].get()); | |
64 ASSERT(transform->x().isFixed() && transform->y().isFixed()); | |
65 webTransformOperations->appendTranslate(transform->x().value(), tran
sform->y().value(), transform->z()); | |
66 break; | |
67 } | |
68 case TransformOperation::RotateX: | |
69 case TransformOperation::RotateY: | |
70 case TransformOperation::Rotate3D: | |
71 case TransformOperation::Rotate: { | |
72 RotateTransformOperation* transform = static_cast<RotateTransformOpe
ration*>(transformOperations.operations()[j].get()); | |
73 webTransformOperations->appendRotate(transform->x(), transform->y(),
transform->z(), transform->angle()); | |
74 break; | |
75 } | |
76 case TransformOperation::SkewX: | |
77 case TransformOperation::SkewY: | |
78 case TransformOperation::Skew: { | |
79 SkewTransformOperation* transform = static_cast<SkewTransformOperati
on*>(transformOperations.operations()[j].get()); | |
80 webTransformOperations->appendSkew(transform->angleX(), transform->a
ngleY()); | |
81 break; | |
82 } | |
83 case TransformOperation::Matrix: { | |
84 MatrixTransformOperation* transform = static_cast<MatrixTransformOpe
ration*>(transformOperations.operations()[j].get()); | |
85 TransformationMatrix m = transform->matrix(); | |
86 webTransformOperations->appendMatrix(TransformationMatrix::toSkMatri
x44(m)); | |
87 break; | |
88 } | |
89 case TransformOperation::Matrix3D: { | |
90 Matrix3DTransformOperation* transform = static_cast<Matrix3DTransfor
mOperation*>(transformOperations.operations()[j].get()); | |
91 TransformationMatrix m = transform->matrix(); | |
92 webTransformOperations->appendMatrix(TransformationMatrix::toSkMatri
x44(m)); | |
93 break; | |
94 } | |
95 case TransformOperation::Perspective: { | |
96 PerspectiveTransformOperation* transform = static_cast<PerspectiveTr
ansformOperation*>(transformOperations.operations()[j].get()); | |
97 webTransformOperations->appendPerspective(transform->perspective()); | |
98 break; | |
99 } | |
100 case TransformOperation::Interpolated: { | |
101 TransformationMatrix m; | |
102 transformOperations.operations()[j]->apply(m, FloatSize()); | |
103 webTransformOperations->appendMatrix(TransformationMatrix::toSkMatri
x44(m)); | |
104 break; | |
105 } | |
106 case TransformOperation::Identity: | |
107 webTransformOperations->appendIdentity(); | |
108 break; | |
109 case TransformOperation::None: | |
110 // Do nothing. | |
111 break; | |
112 } // switch | |
113 } // for each operation | |
114 } | |
115 | |
116 void toCompositorFilterOperations(const FilterOperations& inOperations, Composit
orFilterOperations* outOperations) | |
117 { | |
118 SkiaImageFilterBuilder builder; | |
119 builder.buildFilterOperations(inOperations, outOperations); | |
120 } | |
121 | |
122 } // namespace blink | |
OLD | NEW |