зеркало из https://github.com/mozilla/gecko-dev.git
Bug 812789. Remove some dead code for converting jsvals to Matrix objects. r=nrc
This commit is contained in:
Родитель
45165aa7cf
Коммит
5b51825485
|
@ -85,100 +85,5 @@ CoerceDouble(jsval v, double* d)
|
|||
return true;
|
||||
}
|
||||
|
||||
template<size_t N>
|
||||
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<size_t N>
|
||||
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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче