V8SVGMatrixCustom.cpp [plain text]
#include <config.h>
#if ENABLE(SVG)
#include "TransformationMatrix.h"
#include "SVGException.h"
#include "V8Binding.h"
#include "V8CustomBinding.h"
#include "V8SVGPODTypeWrapper.h"
#include "V8Proxy.h"
namespace WebCore {
CALLBACK_FUNC_DECL(SVGMatrixInverse)
{
INC_STATS("DOM.SVGMatrix.inverse()");
TransformationMatrix matrix = *V8DOMWrapper::convertToNativeObject<V8SVGPODTypeWrapper<TransformationMatrix> >(V8ClassIndex::SVGMATRIX, args.Holder());
ExceptionCode ec = 0;
TransformationMatrix result = matrix.inverse();
if (!matrix.isInvertible())
ec = SVGException::SVG_MATRIX_NOT_INVERTABLE;
if (ec != 0) {
V8Proxy::setDOMException(ec);
return v8::Handle<v8::Value>();
}
return V8DOMWrapper::convertToV8Object(V8ClassIndex::SVGMATRIX, new V8SVGStaticPODTypeWrapper<TransformationMatrix>(result));
}
CALLBACK_FUNC_DECL(SVGMatrixRotateFromVector)
{
INC_STATS("DOM.SVGMatrix.rotateFromVector()");
TransformationMatrix matrix = *V8DOMWrapper::convertToNativeObject<V8SVGPODTypeWrapper<TransformationMatrix> >(V8ClassIndex::SVGMATRIX, args.Holder());
ExceptionCode ec = 0;
float x = toFloat(args[0]);
float y = toFloat(args[1]);
TransformationMatrix result = matrix;
result.rotateFromVector(x, y);
if (x == 0.0 || y == 0.0)
ec = SVGException::SVG_INVALID_VALUE_ERR;
if (ec != 0) {
V8Proxy::setDOMException(ec);
return v8::Handle<v8::Value>();
}
return V8DOMWrapper::convertToV8Object(V8ClassIndex::SVGMATRIX, new V8SVGStaticPODTypeWrapper<TransformationMatrix>(result));
}
}
#endif