Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(983)

Side by Side Diff: Source/core/css/resolver/TransformBuilder.cpp

Issue 15797004: Cleanup WebKit prefixed names for classes in css directory. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) 3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com)
4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) 4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com)
5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved. 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved.
6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> 7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org>
8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. 9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
10 * Copyright (C) Research In Motion Limited 2011. All rights reserved. 10 * Copyright (C) Research In Motion Limited 2011. All rights reserved.
(...skipping 12 matching lines...) Expand all
23 * You should have received a copy of the GNU Library General Public License 23 * You should have received a copy of the GNU Library General Public License
24 * along with this library; see the file COPYING.LIB. If not, write to 24 * along with this library; see the file COPYING.LIB. If not, write to
25 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 25 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
26 * Boston, MA 02110-1301, USA. 26 * Boston, MA 02110-1301, USA.
27 */ 27 */
28 28
29 #include "config.h" 29 #include "config.h"
30 #include "core/css/resolver/TransformBuilder.h" 30 #include "core/css/resolver/TransformBuilder.h"
31 31
32 #include "core/css/CSSPrimitiveValueMappings.h" 32 #include "core/css/CSSPrimitiveValueMappings.h"
33 #include "core/css/WebKitCSSTransformValue.h" 33 #include "core/css/CSSTransformValue.h"
34 #include "core/platform/graphics/transforms/Matrix3DTransformOperation.h" 34 #include "core/platform/graphics/transforms/Matrix3DTransformOperation.h"
35 #include "core/platform/graphics/transforms/MatrixTransformOperation.h" 35 #include "core/platform/graphics/transforms/MatrixTransformOperation.h"
36 #include "core/platform/graphics/transforms/PerspectiveTransformOperation.h" 36 #include "core/platform/graphics/transforms/PerspectiveTransformOperation.h"
37 #include "core/platform/graphics/transforms/RotateTransformOperation.h" 37 #include "core/platform/graphics/transforms/RotateTransformOperation.h"
38 #include "core/platform/graphics/transforms/ScaleTransformOperation.h" 38 #include "core/platform/graphics/transforms/ScaleTransformOperation.h"
39 #include "core/platform/graphics/transforms/SkewTransformOperation.h" 39 #include "core/platform/graphics/transforms/SkewTransformOperation.h"
40 #include "core/platform/graphics/transforms/TransformationMatrix.h" 40 #include "core/platform/graphics/transforms/TransformationMatrix.h"
41 #include "core/platform/graphics/transforms/TranslateTransformOperation.h" 41 #include "core/platform/graphics/transforms/TranslateTransformOperation.h"
42 #include "core/rendering/style/RenderStyle.h" 42 #include "core/rendering/style/RenderStyle.h"
43 43
44 namespace WebCore { 44 namespace WebCore {
45 45
46 TransformBuilder::TransformBuilder() 46 TransformBuilder::TransformBuilder()
47 { 47 {
48 } 48 }
49 49
50 TransformBuilder::~TransformBuilder() 50 TransformBuilder::~TransformBuilder()
51 { 51 {
52 } 52 }
53 53
54 static Length convertToFloatLength(CSSPrimitiveValue* primitiveValue, RenderStyl e* style, RenderStyle* rootStyle, double multiplier) 54 static Length convertToFloatLength(CSSPrimitiveValue* primitiveValue, RenderStyl e* style, RenderStyle* rootStyle, double multiplier)
55 { 55 {
56 return primitiveValue ? primitiveValue->convertToLength<FixedFloatConversion | PercentConversion | CalculatedConversion | FractionConversion | ViewportPerce ntageConversion>(style, rootStyle, multiplier) : Length(Undefined); 56 return primitiveValue ? primitiveValue->convertToLength<FixedFloatConversion | PercentConversion | CalculatedConversion | FractionConversion | ViewportPerce ntageConversion>(style, rootStyle, multiplier) : Length(Undefined);
57 } 57 }
58 58
59 static TransformOperation::OperationType getTransformOperationType(WebKitCSSTran sformValue::TransformOperationType type) 59 static TransformOperation::OperationType getTransformOperationType(CSSTransformV alue::TransformOperationType type)
60 { 60 {
61 switch (type) { 61 switch (type) {
62 case WebKitCSSTransformValue::ScaleTransformOperation: return TransformOpera tion::SCALE; 62 case CSSTransformValue::ScaleTransformOperation: return TransformOperation:: SCALE;
63 case WebKitCSSTransformValue::ScaleXTransformOperation: return TransformOper ation::SCALE_X; 63 case CSSTransformValue::ScaleXTransformOperation: return TransformOperation: :SCALE_X;
64 case WebKitCSSTransformValue::ScaleYTransformOperation: return TransformOper ation::SCALE_Y; 64 case CSSTransformValue::ScaleYTransformOperation: return TransformOperation: :SCALE_Y;
65 case WebKitCSSTransformValue::ScaleZTransformOperation: return TransformOper ation::SCALE_Z; 65 case CSSTransformValue::ScaleZTransformOperation: return TransformOperation: :SCALE_Z;
66 case WebKitCSSTransformValue::Scale3DTransformOperation: return TransformOpe ration::SCALE_3D; 66 case CSSTransformValue::Scale3DTransformOperation: return TransformOperation ::SCALE_3D;
67 case WebKitCSSTransformValue::TranslateTransformOperation: return TransformO peration::TRANSLATE; 67 case CSSTransformValue::TranslateTransformOperation: return TransformOperati on::TRANSLATE;
68 case WebKitCSSTransformValue::TranslateXTransformOperation: return Transform Operation::TRANSLATE_X; 68 case CSSTransformValue::TranslateXTransformOperation: return TransformOperat ion::TRANSLATE_X;
69 case WebKitCSSTransformValue::TranslateYTransformOperation: return Transform Operation::TRANSLATE_Y; 69 case CSSTransformValue::TranslateYTransformOperation: return TransformOperat ion::TRANSLATE_Y;
70 case WebKitCSSTransformValue::TranslateZTransformOperation: return Transform Operation::TRANSLATE_Z; 70 case CSSTransformValue::TranslateZTransformOperation: return TransformOperat ion::TRANSLATE_Z;
71 case WebKitCSSTransformValue::Translate3DTransformOperation: return Transfor mOperation::TRANSLATE_3D; 71 case CSSTransformValue::Translate3DTransformOperation: return TransformOpera tion::TRANSLATE_3D;
72 case WebKitCSSTransformValue::RotateTransformOperation: return TransformOper ation::ROTATE; 72 case CSSTransformValue::RotateTransformOperation: return TransformOperation: :ROTATE;
73 case WebKitCSSTransformValue::RotateXTransformOperation: return TransformOpe ration::ROTATE_X; 73 case CSSTransformValue::RotateXTransformOperation: return TransformOperation ::ROTATE_X;
74 case WebKitCSSTransformValue::RotateYTransformOperation: return TransformOpe ration::ROTATE_Y; 74 case CSSTransformValue::RotateYTransformOperation: return TransformOperation ::ROTATE_Y;
75 case WebKitCSSTransformValue::RotateZTransformOperation: return TransformOpe ration::ROTATE_Z; 75 case CSSTransformValue::RotateZTransformOperation: return TransformOperation ::ROTATE_Z;
76 case WebKitCSSTransformValue::Rotate3DTransformOperation: return TransformOp eration::ROTATE_3D; 76 case CSSTransformValue::Rotate3DTransformOperation: return TransformOperatio n::ROTATE_3D;
77 case WebKitCSSTransformValue::SkewTransformOperation: return TransformOperat ion::SKEW; 77 case CSSTransformValue::SkewTransformOperation: return TransformOperation::S KEW;
78 case WebKitCSSTransformValue::SkewXTransformOperation: return TransformOpera tion::SKEW_X; 78 case CSSTransformValue::SkewXTransformOperation: return TransformOperation:: SKEW_X;
79 case WebKitCSSTransformValue::SkewYTransformOperation: return TransformOpera tion::SKEW_Y; 79 case CSSTransformValue::SkewYTransformOperation: return TransformOperation:: SKEW_Y;
80 case WebKitCSSTransformValue::MatrixTransformOperation: return TransformOper ation::MATRIX; 80 case CSSTransformValue::MatrixTransformOperation: return TransformOperation: :MATRIX;
81 case WebKitCSSTransformValue::Matrix3DTransformOperation: return TransformOp eration::MATRIX_3D; 81 case CSSTransformValue::Matrix3DTransformOperation: return TransformOperatio n::MATRIX_3D;
82 case WebKitCSSTransformValue::PerspectiveTransformOperation: return Transfor mOperation::PERSPECTIVE; 82 case CSSTransformValue::PerspectiveTransformOperation: return TransformOpera tion::PERSPECTIVE;
83 case WebKitCSSTransformValue::UnknownTransformOperation: return TransformOpe ration::NONE; 83 case CSSTransformValue::UnknownTransformOperation: return TransformOperation ::NONE;
84 } 84 }
85 return TransformOperation::NONE; 85 return TransformOperation::NONE;
86 } 86 }
87 87
88 bool TransformBuilder::createTransformOperations(CSSValue* inValue, RenderStyle* style, RenderStyle* rootStyle, TransformOperations& outOperations) 88 bool TransformBuilder::createTransformOperations(CSSValue* inValue, RenderStyle* style, RenderStyle* rootStyle, TransformOperations& outOperations)
89 { 89 {
90 if (!inValue || !inValue->isValueList()) { 90 if (!inValue || !inValue->isValueList()) {
91 outOperations.clear(); 91 outOperations.clear();
92 return false; 92 return false;
93 } 93 }
94 94
95 float zoomFactor = style ? style->effectiveZoom() : 1; 95 float zoomFactor = style ? style->effectiveZoom() : 1;
96 TransformOperations operations; 96 TransformOperations operations;
97 for (CSSValueListIterator i = inValue; i.hasMore(); i.advance()) { 97 for (CSSValueListIterator i = inValue; i.hasMore(); i.advance()) {
98 CSSValue* currValue = i.value(); 98 CSSValue* currValue = i.value();
99 99
100 if (!currValue->isWebKitCSSTransformValue()) 100 if (!currValue->isCSSTransformValue())
101 continue; 101 continue;
102 102
103 WebKitCSSTransformValue* transformValue = static_cast<WebKitCSSTransform Value*>(i.value()); 103 CSSTransformValue* transformValue = static_cast<CSSTransformValue*>(i.va lue());
104 if (!transformValue->length()) 104 if (!transformValue->length())
105 continue; 105 continue;
106 106
107 bool haveNonPrimitiveValue = false; 107 bool haveNonPrimitiveValue = false;
108 for (unsigned j = 0; j < transformValue->length(); ++j) { 108 for (unsigned j = 0; j < transformValue->length(); ++j) {
109 if (!transformValue->itemWithoutBoundsCheck(j)->isPrimitiveValue()) { 109 if (!transformValue->itemWithoutBoundsCheck(j)->isPrimitiveValue()) {
110 haveNonPrimitiveValue = true; 110 haveNonPrimitiveValue = true;
111 break; 111 break;
112 } 112 }
113 } 113 }
114 if (haveNonPrimitiveValue) 114 if (haveNonPrimitiveValue)
115 continue; 115 continue;
116 116
117 CSSPrimitiveValue* firstValue = toCSSPrimitiveValue(transformValue->item WithoutBoundsCheck(0)); 117 CSSPrimitiveValue* firstValue = toCSSPrimitiveValue(transformValue->item WithoutBoundsCheck(0));
118 118
119 switch (transformValue->operationType()) { 119 switch (transformValue->operationType()) {
120 case WebKitCSSTransformValue::ScaleTransformOperation: 120 case CSSTransformValue::ScaleTransformOperation:
121 case WebKitCSSTransformValue::ScaleXTransformOperation: 121 case CSSTransformValue::ScaleXTransformOperation:
122 case WebKitCSSTransformValue::ScaleYTransformOperation: { 122 case CSSTransformValue::ScaleYTransformOperation: {
123 double sx = 1.0; 123 double sx = 1.0;
124 double sy = 1.0; 124 double sy = 1.0;
125 if (transformValue->operationType() == WebKitCSSTransformValue::Scal eYTransformOperation) 125 if (transformValue->operationType() == CSSTransformValue::ScaleYTran sformOperation)
126 sy = firstValue->getDoubleValue(); 126 sy = firstValue->getDoubleValue();
127 else { 127 else {
128 sx = firstValue->getDoubleValue(); 128 sx = firstValue->getDoubleValue();
129 if (transformValue->operationType() != WebKitCSSTransformValue:: ScaleXTransformOperation) { 129 if (transformValue->operationType() != CSSTransformValue::ScaleX TransformOperation) {
130 if (transformValue->length() > 1) { 130 if (transformValue->length() > 1) {
131 CSSPrimitiveValue* secondValue = toCSSPrimitiveValue(tra nsformValue->itemWithoutBoundsCheck(1)); 131 CSSPrimitiveValue* secondValue = toCSSPrimitiveValue(tra nsformValue->itemWithoutBoundsCheck(1));
132 sy = secondValue->getDoubleValue(); 132 sy = secondValue->getDoubleValue();
133 } else 133 } else
134 sy = sx; 134 sy = sx;
135 } 135 }
136 } 136 }
137 operations.operations().append(ScaleTransformOperation::create(sx, s y, 1.0, getTransformOperationType(transformValue->operationType()))); 137 operations.operations().append(ScaleTransformOperation::create(sx, s y, 1.0, getTransformOperationType(transformValue->operationType())));
138 break; 138 break;
139 } 139 }
140 case WebKitCSSTransformValue::ScaleZTransformOperation: 140 case CSSTransformValue::ScaleZTransformOperation:
141 case WebKitCSSTransformValue::Scale3DTransformOperation: { 141 case CSSTransformValue::Scale3DTransformOperation: {
142 double sx = 1.0; 142 double sx = 1.0;
143 double sy = 1.0; 143 double sy = 1.0;
144 double sz = 1.0; 144 double sz = 1.0;
145 if (transformValue->operationType() == WebKitCSSTransformValue::Scal eZTransformOperation) 145 if (transformValue->operationType() == CSSTransformValue::ScaleZTran sformOperation)
146 sz = firstValue->getDoubleValue(); 146 sz = firstValue->getDoubleValue();
147 else if (transformValue->operationType() == WebKitCSSTransformValue: :ScaleYTransformOperation) 147 else if (transformValue->operationType() == CSSTransformValue::Scale YTransformOperation)
148 sy = firstValue->getDoubleValue(); 148 sy = firstValue->getDoubleValue();
149 else { 149 else {
150 sx = firstValue->getDoubleValue(); 150 sx = firstValue->getDoubleValue();
151 if (transformValue->operationType() != WebKitCSSTransformValue:: ScaleXTransformOperation) { 151 if (transformValue->operationType() != CSSTransformValue::ScaleX TransformOperation) {
152 if (transformValue->length() > 2) { 152 if (transformValue->length() > 2) {
153 CSSPrimitiveValue* thirdValue = toCSSPrimitiveValue(tran sformValue->itemWithoutBoundsCheck(2)); 153 CSSPrimitiveValue* thirdValue = toCSSPrimitiveValue(tran sformValue->itemWithoutBoundsCheck(2));
154 sz = thirdValue->getDoubleValue(); 154 sz = thirdValue->getDoubleValue();
155 } 155 }
156 if (transformValue->length() > 1) { 156 if (transformValue->length() > 1) {
157 CSSPrimitiveValue* secondValue = toCSSPrimitiveValue(tra nsformValue->itemWithoutBoundsCheck(1)); 157 CSSPrimitiveValue* secondValue = toCSSPrimitiveValue(tra nsformValue->itemWithoutBoundsCheck(1));
158 sy = secondValue->getDoubleValue(); 158 sy = secondValue->getDoubleValue();
159 } else 159 } else
160 sy = sx; 160 sy = sx;
161 } 161 }
162 } 162 }
163 operations.operations().append(ScaleTransformOperation::create(sx, s y, sz, getTransformOperationType(transformValue->operationType()))); 163 operations.operations().append(ScaleTransformOperation::create(sx, s y, sz, getTransformOperationType(transformValue->operationType())));
164 break; 164 break;
165 } 165 }
166 case WebKitCSSTransformValue::TranslateTransformOperation: 166 case CSSTransformValue::TranslateTransformOperation:
167 case WebKitCSSTransformValue::TranslateXTransformOperation: 167 case CSSTransformValue::TranslateXTransformOperation:
168 case WebKitCSSTransformValue::TranslateYTransformOperation: { 168 case CSSTransformValue::TranslateYTransformOperation: {
169 Length tx = Length(0, Fixed); 169 Length tx = Length(0, Fixed);
170 Length ty = Length(0, Fixed); 170 Length ty = Length(0, Fixed);
171 if (transformValue->operationType() == WebKitCSSTransformValue::Tran slateYTransformOperation) 171 if (transformValue->operationType() == CSSTransformValue::TranslateY TransformOperation)
172 ty = convertToFloatLength(firstValue, style, rootStyle, zoomFact or); 172 ty = convertToFloatLength(firstValue, style, rootStyle, zoomFact or);
173 else { 173 else {
174 tx = convertToFloatLength(firstValue, style, rootStyle, zoomFact or); 174 tx = convertToFloatLength(firstValue, style, rootStyle, zoomFact or);
175 if (transformValue->operationType() != WebKitCSSTransformValue:: TranslateXTransformOperation) { 175 if (transformValue->operationType() != CSSTransformValue::Transl ateXTransformOperation) {
176 if (transformValue->length() > 1) { 176 if (transformValue->length() > 1) {
177 CSSPrimitiveValue* secondValue = toCSSPrimitiveValue(tra nsformValue->itemWithoutBoundsCheck(1)); 177 CSSPrimitiveValue* secondValue = toCSSPrimitiveValue(tra nsformValue->itemWithoutBoundsCheck(1));
178 ty = convertToFloatLength(secondValue, style, rootStyle, zoomFactor); 178 ty = convertToFloatLength(secondValue, style, rootStyle, zoomFactor);
179 } 179 }
180 } 180 }
181 } 181 }
182 182
183 if (tx.isUndefined() || ty.isUndefined()) 183 if (tx.isUndefined() || ty.isUndefined())
184 return false; 184 return false;
185 185
186 operations.operations().append(TranslateTransformOperation::create(t x, ty, Length(0, Fixed), getTransformOperationType(transformValue->operationType ()))); 186 operations.operations().append(TranslateTransformOperation::create(t x, ty, Length(0, Fixed), getTransformOperationType(transformValue->operationType ())));
187 break; 187 break;
188 } 188 }
189 case WebKitCSSTransformValue::TranslateZTransformOperation: 189 case CSSTransformValue::TranslateZTransformOperation:
190 case WebKitCSSTransformValue::Translate3DTransformOperation: { 190 case CSSTransformValue::Translate3DTransformOperation: {
191 Length tx = Length(0, Fixed); 191 Length tx = Length(0, Fixed);
192 Length ty = Length(0, Fixed); 192 Length ty = Length(0, Fixed);
193 Length tz = Length(0, Fixed); 193 Length tz = Length(0, Fixed);
194 if (transformValue->operationType() == WebKitCSSTransformValue::Tran slateZTransformOperation) 194 if (transformValue->operationType() == CSSTransformValue::TranslateZ TransformOperation)
195 tz = convertToFloatLength(firstValue, style, rootStyle, zoomFact or); 195 tz = convertToFloatLength(firstValue, style, rootStyle, zoomFact or);
196 else if (transformValue->operationType() == WebKitCSSTransformValue: :TranslateYTransformOperation) 196 else if (transformValue->operationType() == CSSTransformValue::Trans lateYTransformOperation)
197 ty = convertToFloatLength(firstValue, style, rootStyle, zoomFact or); 197 ty = convertToFloatLength(firstValue, style, rootStyle, zoomFact or);
198 else { 198 else {
199 tx = convertToFloatLength(firstValue, style, rootStyle, zoomFact or); 199 tx = convertToFloatLength(firstValue, style, rootStyle, zoomFact or);
200 if (transformValue->operationType() != WebKitCSSTransformValue:: TranslateXTransformOperation) { 200 if (transformValue->operationType() != CSSTransformValue::Transl ateXTransformOperation) {
201 if (transformValue->length() > 2) { 201 if (transformValue->length() > 2) {
202 CSSPrimitiveValue* thirdValue = toCSSPrimitiveValue(tran sformValue->itemWithoutBoundsCheck(2)); 202 CSSPrimitiveValue* thirdValue = toCSSPrimitiveValue(tran sformValue->itemWithoutBoundsCheck(2));
203 tz = convertToFloatLength(thirdValue, style, rootStyle, zoomFactor); 203 tz = convertToFloatLength(thirdValue, style, rootStyle, zoomFactor);
204 } 204 }
205 if (transformValue->length() > 1) { 205 if (transformValue->length() > 1) {
206 CSSPrimitiveValue* secondValue = toCSSPrimitiveValue(tra nsformValue->itemWithoutBoundsCheck(1)); 206 CSSPrimitiveValue* secondValue = toCSSPrimitiveValue(tra nsformValue->itemWithoutBoundsCheck(1));
207 ty = convertToFloatLength(secondValue, style, rootStyle, zoomFactor); 207 ty = convertToFloatLength(secondValue, style, rootStyle, zoomFactor);
208 } 208 }
209 } 209 }
210 } 210 }
211 211
212 if (tx.isUndefined() || ty.isUndefined() || tz.isUndefined()) 212 if (tx.isUndefined() || ty.isUndefined() || tz.isUndefined())
213 return false; 213 return false;
214 214
215 operations.operations().append(TranslateTransformOperation::create(t x, ty, tz, getTransformOperationType(transformValue->operationType()))); 215 operations.operations().append(TranslateTransformOperation::create(t x, ty, tz, getTransformOperationType(transformValue->operationType())));
216 break; 216 break;
217 } 217 }
218 case WebKitCSSTransformValue::RotateTransformOperation: { 218 case CSSTransformValue::RotateTransformOperation: {
219 double angle = firstValue->computeDegrees(); 219 double angle = firstValue->computeDegrees();
220 operations.operations().append(RotateTransformOperation::create(0, 0 , 1, angle, getTransformOperationType(transformValue->operationType()))); 220 operations.operations().append(RotateTransformOperation::create(0, 0 , 1, angle, getTransformOperationType(transformValue->operationType())));
221 break; 221 break;
222 } 222 }
223 case WebKitCSSTransformValue::RotateXTransformOperation: 223 case CSSTransformValue::RotateXTransformOperation:
224 case WebKitCSSTransformValue::RotateYTransformOperation: 224 case CSSTransformValue::RotateYTransformOperation:
225 case WebKitCSSTransformValue::RotateZTransformOperation: { 225 case CSSTransformValue::RotateZTransformOperation: {
226 double x = 0; 226 double x = 0;
227 double y = 0; 227 double y = 0;
228 double z = 0; 228 double z = 0;
229 double angle = firstValue->computeDegrees(); 229 double angle = firstValue->computeDegrees();
230 230
231 if (transformValue->operationType() == WebKitCSSTransformValue::Rota teXTransformOperation) 231 if (transformValue->operationType() == CSSTransformValue::RotateXTra nsformOperation)
232 x = 1; 232 x = 1;
233 else if (transformValue->operationType() == WebKitCSSTransformValue: :RotateYTransformOperation) 233 else if (transformValue->operationType() == CSSTransformValue::Rotat eYTransformOperation)
234 y = 1; 234 y = 1;
235 else 235 else
236 z = 1; 236 z = 1;
237 operations.operations().append(RotateTransformOperation::create(x, y , z, angle, getTransformOperationType(transformValue->operationType()))); 237 operations.operations().append(RotateTransformOperation::create(x, y , z, angle, getTransformOperationType(transformValue->operationType())));
238 break; 238 break;
239 } 239 }
240 case WebKitCSSTransformValue::Rotate3DTransformOperation: { 240 case CSSTransformValue::Rotate3DTransformOperation: {
241 if (transformValue->length() < 4) 241 if (transformValue->length() < 4)
242 break; 242 break;
243 CSSPrimitiveValue* secondValue = toCSSPrimitiveValue(transformValue- >itemWithoutBoundsCheck(1)); 243 CSSPrimitiveValue* secondValue = toCSSPrimitiveValue(transformValue- >itemWithoutBoundsCheck(1));
244 CSSPrimitiveValue* thirdValue = toCSSPrimitiveValue(transformValue-> itemWithoutBoundsCheck(2)); 244 CSSPrimitiveValue* thirdValue = toCSSPrimitiveValue(transformValue-> itemWithoutBoundsCheck(2));
245 CSSPrimitiveValue* fourthValue = toCSSPrimitiveValue(transformValue- >itemWithoutBoundsCheck(3)); 245 CSSPrimitiveValue* fourthValue = toCSSPrimitiveValue(transformValue- >itemWithoutBoundsCheck(3));
246 double x = firstValue->getDoubleValue(); 246 double x = firstValue->getDoubleValue();
247 double y = secondValue->getDoubleValue(); 247 double y = secondValue->getDoubleValue();
248 double z = thirdValue->getDoubleValue(); 248 double z = thirdValue->getDoubleValue();
249 double angle = fourthValue->computeDegrees(); 249 double angle = fourthValue->computeDegrees();
250 operations.operations().append(RotateTransformOperation::create(x, y , z, angle, getTransformOperationType(transformValue->operationType()))); 250 operations.operations().append(RotateTransformOperation::create(x, y , z, angle, getTransformOperationType(transformValue->operationType())));
251 break; 251 break;
252 } 252 }
253 case WebKitCSSTransformValue::SkewTransformOperation: 253 case CSSTransformValue::SkewTransformOperation:
254 case WebKitCSSTransformValue::SkewXTransformOperation: 254 case CSSTransformValue::SkewXTransformOperation:
255 case WebKitCSSTransformValue::SkewYTransformOperation: { 255 case CSSTransformValue::SkewYTransformOperation: {
256 double angleX = 0; 256 double angleX = 0;
257 double angleY = 0; 257 double angleY = 0;
258 double angle = firstValue->computeDegrees(); 258 double angle = firstValue->computeDegrees();
259 if (transformValue->operationType() == WebKitCSSTransformValue::Skew YTransformOperation) 259 if (transformValue->operationType() == CSSTransformValue::SkewYTrans formOperation)
260 angleY = angle; 260 angleY = angle;
261 else { 261 else {
262 angleX = angle; 262 angleX = angle;
263 if (transformValue->operationType() == WebKitCSSTransformValue:: SkewTransformOperation) { 263 if (transformValue->operationType() == CSSTransformValue::SkewTr ansformOperation) {
264 if (transformValue->length() > 1) { 264 if (transformValue->length() > 1) {
265 CSSPrimitiveValue* secondValue = toCSSPrimitiveValue(tra nsformValue->itemWithoutBoundsCheck(1)); 265 CSSPrimitiveValue* secondValue = toCSSPrimitiveValue(tra nsformValue->itemWithoutBoundsCheck(1));
266 angleY = secondValue->computeDegrees(); 266 angleY = secondValue->computeDegrees();
267 } 267 }
268 } 268 }
269 } 269 }
270 operations.operations().append(SkewTransformOperation::create(angleX , angleY, getTransformOperationType(transformValue->operationType()))); 270 operations.operations().append(SkewTransformOperation::create(angleX , angleY, getTransformOperationType(transformValue->operationType())));
271 break; 271 break;
272 } 272 }
273 case WebKitCSSTransformValue::MatrixTransformOperation: { 273 case CSSTransformValue::MatrixTransformOperation: {
274 if (transformValue->length() < 6) 274 if (transformValue->length() < 6)
275 break; 275 break;
276 double a = firstValue->getDoubleValue(); 276 double a = firstValue->getDoubleValue();
277 double b = toCSSPrimitiveValue(transformValue->itemWithoutBoundsChec k(1))->getDoubleValue(); 277 double b = toCSSPrimitiveValue(transformValue->itemWithoutBoundsChec k(1))->getDoubleValue();
278 double c = toCSSPrimitiveValue(transformValue->itemWithoutBoundsChec k(2))->getDoubleValue(); 278 double c = toCSSPrimitiveValue(transformValue->itemWithoutBoundsChec k(2))->getDoubleValue();
279 double d = toCSSPrimitiveValue(transformValue->itemWithoutBoundsChec k(3))->getDoubleValue(); 279 double d = toCSSPrimitiveValue(transformValue->itemWithoutBoundsChec k(3))->getDoubleValue();
280 double e = zoomFactor * toCSSPrimitiveValue(transformValue->itemWith outBoundsCheck(4))->getDoubleValue(); 280 double e = zoomFactor * toCSSPrimitiveValue(transformValue->itemWith outBoundsCheck(4))->getDoubleValue();
281 double f = zoomFactor * toCSSPrimitiveValue(transformValue->itemWith outBoundsCheck(5))->getDoubleValue(); 281 double f = zoomFactor * toCSSPrimitiveValue(transformValue->itemWith outBoundsCheck(5))->getDoubleValue();
282 operations.operations().append(MatrixTransformOperation::create(a, b , c, d, e, f)); 282 operations.operations().append(MatrixTransformOperation::create(a, b , c, d, e, f));
283 break; 283 break;
284 } 284 }
285 case WebKitCSSTransformValue::Matrix3DTransformOperation: { 285 case CSSTransformValue::Matrix3DTransformOperation: {
286 if (transformValue->length() < 16) 286 if (transformValue->length() < 16)
287 break; 287 break;
288 TransformationMatrix matrix(toCSSPrimitiveValue(transformValue->item WithoutBoundsCheck(0))->getDoubleValue(), 288 TransformationMatrix matrix(toCSSPrimitiveValue(transformValue->item WithoutBoundsCheck(0))->getDoubleValue(),
289 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(1))-> getDoubleValue(), 289 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(1))-> getDoubleValue(),
290 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(2))-> getDoubleValue(), 290 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(2))-> getDoubleValue(),
291 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(3))-> getDoubleValue(), 291 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(3))-> getDoubleValue(),
292 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(4))-> getDoubleValue(), 292 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(4))-> getDoubleValue(),
293 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(5))-> getDoubleValue(), 293 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(5))-> getDoubleValue(),
294 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(6))-> getDoubleValue(), 294 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(6))-> getDoubleValue(),
295 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(7))-> getDoubleValue(), 295 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(7))-> getDoubleValue(),
296 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(8))-> getDoubleValue(), 296 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(8))-> getDoubleValue(),
297 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(9))-> getDoubleValue(), 297 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(9))-> getDoubleValue(),
298 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(10))- >getDoubleValue(), 298 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(10))- >getDoubleValue(),
299 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(11))- >getDoubleValue(), 299 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(11))- >getDoubleValue(),
300 zoomFactor * toCSSPrimitiveValue(transformValue->itemWithoutBoun dsCheck(12))->getDoubleValue(), 300 zoomFactor * toCSSPrimitiveValue(transformValue->itemWithoutBoun dsCheck(12))->getDoubleValue(),
301 zoomFactor * toCSSPrimitiveValue(transformValue->itemWithoutBoun dsCheck(13))->getDoubleValue(), 301 zoomFactor * toCSSPrimitiveValue(transformValue->itemWithoutBoun dsCheck(13))->getDoubleValue(),
302 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(14))- >getDoubleValue(), 302 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(14))- >getDoubleValue(),
303 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(15))- >getDoubleValue()); 303 toCSSPrimitiveValue(transformValue->itemWithoutBoundsCheck(15))- >getDoubleValue());
304 operations.operations().append(Matrix3DTransformOperation::create(ma trix)); 304 operations.operations().append(Matrix3DTransformOperation::create(ma trix));
305 break; 305 break;
306 } 306 }
307 case WebKitCSSTransformValue::PerspectiveTransformOperation: { 307 case CSSTransformValue::PerspectiveTransformOperation: {
308 Length p = Length(0, Fixed); 308 Length p = Length(0, Fixed);
309 if (firstValue->isLength()) 309 if (firstValue->isLength())
310 p = convertToFloatLength(firstValue, style, rootStyle, zoomFacto r); 310 p = convertToFloatLength(firstValue, style, rootStyle, zoomFacto r);
311 else { 311 else {
312 // This is a quirk that should go away when 3d transforms are fi nalized. 312 // This is a quirk that should go away when 3d transforms are fi nalized.
313 double val = firstValue->getDoubleValue(); 313 double val = firstValue->getDoubleValue();
314 p = val >= 0 ? Length(clampToPositiveInteger(val), Fixed) : Leng th(Undefined); 314 p = val >= 0 ? Length(clampToPositiveInteger(val), Fixed) : Leng th(Undefined);
315 } 315 }
316 316
317 if (p.isUndefined()) 317 if (p.isUndefined())
318 return false; 318 return false;
319 319
320 operations.operations().append(PerspectiveTransformOperation::create (p)); 320 operations.operations().append(PerspectiveTransformOperation::create (p));
321 break; 321 break;
322 } 322 }
323 case WebKitCSSTransformValue::UnknownTransformOperation: 323 case CSSTransformValue::UnknownTransformOperation:
324 ASSERT_NOT_REACHED(); 324 ASSERT_NOT_REACHED();
325 break; 325 break;
326 } 326 }
327 } 327 }
328 328
329 outOperations = operations; 329 outOperations = operations;
330 return true; 330 return true;
331 } 331 }
332 332
333 } // namespace WebCore 333 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698