Avoid some code duplication
This was SVN commit r10583.
This commit is contained in:
parent
ab88151ed0
commit
2878102ed7
@ -210,24 +210,24 @@ template<> jsval ScriptInterface::ToJSVal<CFixedVector2D>(JSContext* cx, const C
|
||||
return OBJECT_TO_JSVAL(obj);
|
||||
}
|
||||
|
||||
template<> jsval ScriptInterface::ToJSVal<Grid<u16> >(JSContext* cx, const Grid<u16>& val)
|
||||
template<jsint atype, typename T> jsval ToJSVal_Grid(JSContext* cx, const Grid<T>& val)
|
||||
{
|
||||
JSObject* obj = JS_NewObject(cx, NULL, NULL, NULL);
|
||||
if (!obj)
|
||||
return JSVAL_VOID;
|
||||
|
||||
jsuint len = val.m_W * val.m_H;
|
||||
JSObject *darray = js_CreateTypedArray(cx, js::TypedArray::TYPE_UINT16, len);
|
||||
JSObject *darray = js_CreateTypedArray(cx, atype, len);
|
||||
if (!darray)
|
||||
return JSVAL_VOID;
|
||||
|
||||
js::TypedArray *tdest = js::TypedArray::fromJSObject(darray);
|
||||
ENSURE(tdest->byteLength == len*sizeof(u16));
|
||||
ENSURE(tdest->byteLength == len*sizeof(T));
|
||||
|
||||
memcpy(tdest->data, val.m_Data, tdest->byteLength);
|
||||
|
||||
jsval w = ToJSVal(cx, val.m_W);
|
||||
jsval h = ToJSVal(cx, val.m_H);
|
||||
jsval w = ScriptInterface::ToJSVal(cx, val.m_W);
|
||||
jsval h = ScriptInterface::ToJSVal(cx, val.m_H);
|
||||
jsval data = OBJECT_TO_JSVAL(darray);
|
||||
|
||||
JS_SetProperty(cx, obj, "width", &w);
|
||||
@ -239,27 +239,10 @@ template<> jsval ScriptInterface::ToJSVal<Grid<u16> >(JSContext* cx, const Grid<
|
||||
|
||||
template<> jsval ScriptInterface::ToJSVal<Grid<u8> >(JSContext* cx, const Grid<u8>& val)
|
||||
{
|
||||
JSObject* obj = JS_NewObject(cx, NULL, NULL, NULL);
|
||||
if (!obj)
|
||||
return JSVAL_VOID;
|
||||
|
||||
jsuint len = val.m_W * val.m_H;
|
||||
JSObject *darray = js_CreateTypedArray(cx, js::TypedArray::TYPE_UINT8, len);
|
||||
if (!darray)
|
||||
return JSVAL_VOID;
|
||||
|
||||
js::TypedArray *tdest = js::TypedArray::fromJSObject(darray);
|
||||
ENSURE(tdest->byteLength == len*sizeof(u8));
|
||||
|
||||
memcpy(tdest->data, val.m_Data, tdest->byteLength);
|
||||
|
||||
jsval w = ToJSVal(cx, val.m_W);
|
||||
jsval h = ToJSVal(cx, val.m_H);
|
||||
jsval data = OBJECT_TO_JSVAL(darray);
|
||||
|
||||
JS_SetProperty(cx, obj, "width", &w);
|
||||
JS_SetProperty(cx, obj, "height", &h);
|
||||
JS_SetProperty(cx, obj, "data", &data);
|
||||
|
||||
return OBJECT_TO_JSVAL(obj);
|
||||
return ToJSVal_Grid<js::TypedArray::TYPE_UINT8>(cx, val);
|
||||
}
|
||||
|
||||
template<> jsval ScriptInterface::ToJSVal<Grid<u16> >(JSContext* cx, const Grid<u16>& val)
|
||||
{
|
||||
return ToJSVal_Grid<js::TypedArray::TYPE_UINT16>(cx, val);
|
||||
}
|
Loading…
Reference in New Issue
Block a user