Add skewX and skewY to the transform style options

Summary: Closes https://github.com/facebook/react-native/pull/2652

Reviewed By: @​trunkagent, @​svcscm

Differential Revision: D2437758

Pulled By: @vjeux
This commit is contained in:
Jason Brown
2015-09-23 20:03:16 -07:00
committed by facebook-github-bot-9
parent 8db35d492b
commit 74f467b00a
3 changed files with 21 additions and 1 deletions

View File

@@ -25,7 +25,9 @@ var TransformPropTypes = {
ReactPropTypes.shape({scaleX: ReactPropTypes.number}), ReactPropTypes.shape({scaleX: ReactPropTypes.number}),
ReactPropTypes.shape({scaleY: ReactPropTypes.number}), ReactPropTypes.shape({scaleY: ReactPropTypes.number}),
ReactPropTypes.shape({translateX: ReactPropTypes.number}), ReactPropTypes.shape({translateX: ReactPropTypes.number}),
ReactPropTypes.shape({translateY: ReactPropTypes.number}) ReactPropTypes.shape({translateY: ReactPropTypes.number}),
ReactPropTypes.shape({skewX: ReactPropTypes.string}),
ReactPropTypes.shape({skewY: ReactPropTypes.string})
]) ])
), ),
transformMatrix: ReactPropTypes.arrayOf(ReactPropTypes.number), transformMatrix: ReactPropTypes.arrayOf(ReactPropTypes.number),

View File

@@ -128,6 +128,12 @@ function _precomputeTransforms(style: Object): Object {
case 'translateY': case 'translateY':
_multiplyTransform(result, MatrixMath.reuseTranslate2dCommand, [0, value]); _multiplyTransform(result, MatrixMath.reuseTranslate2dCommand, [0, value]);
break; break;
case 'skewX':
_multiplyTransform(result, MatrixMath.reuseSkewXCommand, [_convertToRadians(value)]);
break;
case 'skewY':
_multiplyTransform(result, MatrixMath.reuseSkewYCommand, [_convertToRadians(value)]);
break;
default: default:
throw new Error('Invalid transform name: ' + key); throw new Error('Invalid transform name: ' + key);
} }
@@ -209,6 +215,8 @@ function _validateTransform(key, value, transformation) {
case 'rotateY': case 'rotateY':
case 'rotateZ': case 'rotateZ':
case 'rotate': case 'rotate':
case 'skewX':
case 'skewY':
invariant( invariant(
typeof value === 'string', typeof value === 'string',
'Transform with key of "%s" must be a string: %s', 'Transform with key of "%s" must be a string: %s',

View File

@@ -157,6 +157,16 @@ var MatrixMath = {
return mat; return mat;
}, },
reuseSkewXCommand: function(matrixCommand, radians) {
matrixCommand[4] = Math.sin(radians);
matrixCommand[5] = Math.cos(radians);
},
reuseSkewYCommand: function(matrixCommand, radians) {
matrixCommand[0] = Math.cos(radians);
matrixCommand[1] = Math.sin(radians);
},
multiplyInto: function(out, a, b) { multiplyInto: function(out, a, b) {
var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],
a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],