diff --git a/content/canvas/src/CanvasUtils.cpp b/content/canvas/src/CanvasUtils.cpp index 2a5f8cd92a48..6cf0f538b5a4 100644 --- a/content/canvas/src/CanvasUtils.cpp +++ b/content/canvas/src/CanvasUtils.cpp @@ -85,100 +85,5 @@ CoerceDouble(jsval v, double* d) return true; } -template -static bool -JSValToMatrixElts(JSContext* cx, const jsval& val, - double* (&elts)[N], nsresult* rv) -{ - JSObject* obj; - uint32_t length; - - if (JSVAL_IS_PRIMITIVE(val) || - !(obj = JSVAL_TO_OBJECT(val)) || - !JS_GetArrayLength(cx, obj, &length) || - N != length) { - // Not an array-like thing or wrong size - *rv = NS_ERROR_INVALID_ARG; - return false; - } - - for (uint32_t i = 0; i < N; ++i) { - jsval elt; - double d; - if (!JS_GetElement(cx, obj, i, &elt)) { - *rv = NS_ERROR_FAILURE; - return false; - } - if (!CoerceDouble(elt, &d)) { - *rv = NS_ERROR_INVALID_ARG; - return false; - } - if (!FloatValidate(d)) { - // This is weird, but it's the behavior of SetTransform() - *rv = NS_OK; - return false; - } - *elts[i] = d; - } - - *rv = NS_OK; - return true; -} - -bool -JSValToMatrix(JSContext* cx, const jsval& val, gfxMatrix* matrix, nsresult* rv) -{ - double* elts[] = { &matrix->xx, &matrix->yx, &matrix->xy, &matrix->yy, - &matrix->x0, &matrix->y0 }; - return JSValToMatrixElts(cx, val, elts, rv); -} - -bool -JSValToMatrix(JSContext* cx, const jsval& val, Matrix* matrix, nsresult* rv) -{ - gfxMatrix m; - if (!JSValToMatrix(cx, val, &m, rv)) - return false; - *matrix = Matrix(Float(m.xx), Float(m.yx), Float(m.xy), Float(m.yy), - Float(m.x0), Float(m.y0)); - return true; -} - -template -static nsresult -MatrixEltsToJSVal(/*const*/ jsval (&elts)[N], JSContext* cx, jsval* val) -{ - JSObject* obj = JS_NewArrayObject(cx, N, elts); - if (!obj) { - return NS_ERROR_OUT_OF_MEMORY; - } - - *val = OBJECT_TO_JSVAL(obj); - - return NS_OK; -} - -nsresult -MatrixToJSVal(const gfxMatrix& matrix, JSContext* cx, jsval* val) -{ - jsval elts[] = { - DOUBLE_TO_JSVAL(matrix.xx), DOUBLE_TO_JSVAL(matrix.yx), - DOUBLE_TO_JSVAL(matrix.xy), DOUBLE_TO_JSVAL(matrix.yy), - DOUBLE_TO_JSVAL(matrix.x0), DOUBLE_TO_JSVAL(matrix.y0) - }; - return MatrixEltsToJSVal(elts, cx, val); -} - -nsresult -MatrixToJSVal(const Matrix& matrix, JSContext* cx, jsval* val) -{ - jsval elts[] = { - DOUBLE_TO_JSVAL(matrix._11), DOUBLE_TO_JSVAL(matrix._12), - DOUBLE_TO_JSVAL(matrix._21), DOUBLE_TO_JSVAL(matrix._22), - DOUBLE_TO_JSVAL(matrix._31), DOUBLE_TO_JSVAL(matrix._32) - }; - return MatrixEltsToJSVal(elts, cx, val); -} - } // namespace CanvasUtils } // namespace mozilla diff --git a/content/canvas/src/CanvasUtils.h b/content/canvas/src/CanvasUtils.h index 9b3603d8ff22..bef1ba7ff5df 100644 --- a/content/canvas/src/CanvasUtils.h +++ b/content/canvas/src/CanvasUtils.h @@ -49,18 +49,6 @@ void DoDrawImageSecurityCheck(nsHTMLCanvasElement *aCanvasElement, // succeeded. bool CoerceDouble(jsval v, double* d); -// Return true iff the conversion succeeded, false otherwise. *rv is -// the value to return to script if this returns false. -bool JSValToMatrix(JSContext* cx, const jsval& val, - gfxMatrix* matrix, nsresult* rv); -bool JSValToMatrix(JSContext* cx, const jsval& val, - gfx::Matrix* matrix, nsresult* rv); - -nsresult MatrixToJSVal(const gfxMatrix& matrix, - JSContext* cx, jsval* val); -nsresult MatrixToJSVal(const gfx::Matrix& matrix, - JSContext* cx, jsval* val); - /* Float validation stuff */ #define VALIDATE(_f) if (!NS_finite(_f)) return false