예제 #1
0
/* static */ int
DOM_CSSMatrix::scale(DOM_Object* this_object, ES_Value* argv, int argc, ES_Value* return_value, DOM_Runtime* origining_runtime)
{
	DOM_THIS_OBJECT(matrix, DOM_TYPE_CSS_MATRIX, DOM_CSSMatrix);
	DOM_CHECK_ARGUMENTS("n|n");

	float sx = static_cast<float>(argv[0].value.number);
	float sy;
	if (argc == 2)
		sy = static_cast<float>(argv[1].value.number);
	else
		sy = sx;

	AffineTransform tmp;
	tmp.LoadScale(sx, sy);

	AffineTransform transform = matrix->transform;
	transform.PostMultiply(tmp);

	DOM_CSSMatrix *result_matrix;
	if (OpStatus::IsMemoryError(DOM_CSSMatrix::Make(result_matrix, transform, matrix->style_declaration)))
		return ES_NO_MEMORY;

	DOMSetObject(return_value, result_matrix);
	return ES_VALUE;
}
예제 #2
0
/* static */ int
DOM_CSSMatrix::multiply(DOM_Object* this_object, ES_Value* argv, int argc, ES_Value* return_value, DOM_Runtime* origining_runtime)
{
	DOM_THIS_OBJECT(matrix, DOM_TYPE_CSS_MATRIX, DOM_CSSMatrix);
	DOM_CHECK_ARGUMENTS("o");
	DOM_ARGUMENT_OBJECT(passed_matrix, 0, DOM_TYPE_CSS_MATRIX, DOM_CSSMatrix);

	AffineTransform transform;

	transform = matrix->transform;
	transform.PostMultiply(passed_matrix->transform);

	DOM_CSSMatrix *result_matrix;
	if (OpStatus::IsMemoryError(DOM_CSSMatrix::Make(result_matrix, transform, matrix->style_declaration)))
		return ES_NO_MEMORY;

	DOMSetObject(return_value, result_matrix);
	return ES_VALUE;
}
예제 #3
0
/* static */ int
DOM_CSSMatrix::rotate(DOM_Object* this_object, ES_Value* argv, int argc, ES_Value* return_value, DOM_Runtime* origining_runtime)
{
	DOM_THIS_OBJECT(matrix, DOM_TYPE_CSS_MATRIX, DOM_CSSMatrix);
	DOM_CHECK_ARGUMENTS("n");

	double s = argv[0].value.number;

	AffineTransform tmp;

	// Input is in degrees, AffineTransform wants radians.
	float radians = static_cast<float>(s * M_PI / 180.0);
	tmp.LoadRotate(radians);

	AffineTransform transform = matrix->transform;
	transform.PostMultiply(tmp);

	DOM_CSSMatrix *result_matrix;
	if (OpStatus::IsMemoryError(DOM_CSSMatrix::Make(result_matrix, transform, matrix->style_declaration)))
		return ES_NO_MEMORY;

	DOMSetObject(return_value, result_matrix);
	return ES_VALUE;
}