Changeset View
Changeset View
Standalone View
Standalone View
source/gui/scripting/GuiScriptConversions.cpp
Show First 20 Lines • Show All 158 Lines • ▼ Show 20 Lines | |||||
{ | { | ||||
ScriptInterface::GetScriptInterfaceAndCBData(cx)->pScriptInterface->CreateObject(ret, "width", val.cx, "height", val.cy); | ScriptInterface::GetScriptInterfaceAndCBData(cx)->pScriptInterface->CreateObject(ret, "width", val.cx, "height", val.cy); | ||||
} | } | ||||
template<> bool ScriptInterface::FromJSVal<CSize>(JSContext* cx, JS::HandleValue v, CSize& out) | template<> bool ScriptInterface::FromJSVal<CSize>(JSContext* cx, JS::HandleValue v, CSize& out) | ||||
{ | { | ||||
if (!v.isObject()) | if (!v.isObject()) | ||||
{ | { | ||||
JSAutoRequest rq(cx); | |||||
JS_ReportError(cx, "CSize value must be an object!"); | JS_ReportError(cx, "CSize value must be an object!"); | ||||
return false; | return false; | ||||
} | } | ||||
if (!FromJSProperty(cx, v, "width", out.cx)) | if (!FromJSProperty(cx, v, "width", out.cx)) | ||||
{ | { | ||||
JSAutoRequest rq(cx); | |||||
JS_ReportError(cx, "Failed to get CSize.cx property"); | JS_ReportError(cx, "Failed to get CSize.cx property"); | ||||
return false; | return false; | ||||
} | } | ||||
if (!FromJSProperty(cx, v, "height", out.cy)) | if (!FromJSProperty(cx, v, "height", out.cy)) | ||||
{ | { | ||||
JSAutoRequest rq(cx); | |||||
JS_ReportError(cx, "Failed to get CSize.cy property"); | JS_ReportError(cx, "Failed to get CSize.cy property"); | ||||
return false; | return false; | ||||
} | } | ||||
return true; | return true; | ||||
} | } | ||||
template<> void ScriptInterface::ToJSVal<CPos>(JSContext* cx, JS::MutableHandleValue ret, const CPos& val) | template<> void ScriptInterface::ToJSVal<CPos>(JSContext* cx, JS::MutableHandleValue ret, const CPos& val) | ||||
{ | { | ||||
ScriptInterface::GetScriptInterfaceAndCBData(cx)->pScriptInterface->CreateObject(ret, "x", val.x, "y", val.y); | ScriptInterface::GetScriptInterfaceAndCBData(cx)->pScriptInterface->CreateObject(ret, "x", val.x, "y", val.y); | ||||
} | } | ||||
template<> bool ScriptInterface::FromJSVal<CPos>(JSContext* cx, JS::HandleValue v, CPos& out) | template<> bool ScriptInterface::FromJSVal<CPos>(JSContext* cx, JS::HandleValue v, CPos& out) | ||||
{ | { | ||||
if (!v.isObject()) | if (!v.isObject()) | ||||
{ | { | ||||
JSAutoRequest rq(cx); | |||||
JS_ReportError(cx, "CPos value must be an object!"); | JS_ReportError(cx, "CPos value must be an object!"); | ||||
return false; | return false; | ||||
} | } | ||||
if (!FromJSProperty(cx, v, "x", out.x)) | if (!FromJSProperty(cx, v, "x", out.x)) | ||||
{ | { | ||||
JSAutoRequest rq(cx); | |||||
JS_ReportError(cx, "Failed to get CPos.x property"); | JS_ReportError(cx, "Failed to get CPos.x property"); | ||||
return false; | return false; | ||||
} | } | ||||
if (!FromJSProperty(cx, v, "y", out.y)) | if (!FromJSProperty(cx, v, "y", out.y)) | ||||
{ | { | ||||
JSAutoRequest rq(cx); | |||||
JS_ReportError(cx, "Failed to get CPos.y property"); | JS_ReportError(cx, "Failed to get CPos.y property"); | ||||
return false; | return false; | ||||
} | } | ||||
return true; | return true; | ||||
} | } | ||||
template<> void ScriptInterface::ToJSVal<CClientArea>(JSContext* cx, JS::MutableHandleValue ret, const CClientArea& val) | template<> void ScriptInterface::ToJSVal<CClientArea>(JSContext* cx, JS::MutableHandleValue ret, const CClientArea& val) | ||||
Show All 40 Lines | case EVAlign_Bottom: | ||||
break; | break; | ||||
case EVAlign_Center: | case EVAlign_Center: | ||||
word = "center"; | word = "center"; | ||||
break; | break; | ||||
default: | default: | ||||
word = "error"; | word = "error"; | ||||
JSAutoRequest rq(cx); | |||||
JS_ReportError(cx, "Invalid EVAlign"); | JS_ReportError(cx, "Invalid EVAlign"); | ||||
break; | break; | ||||
} | } | ||||
ToJSVal(cx, ret, word); | ToJSVal(cx, ret, word); | ||||
} | } | ||||
template<> bool ScriptInterface::FromJSVal<EVAlign>(JSContext* cx, JS::HandleValue v, EVAlign& out) | template<> bool ScriptInterface::FromJSVal<EVAlign>(JSContext* cx, JS::HandleValue v, EVAlign& out) | ||||
{ | { | ||||
std::string word; | std::string word; | ||||
FromJSVal(cx, v, word); | FromJSVal(cx, v, word); | ||||
if (word == "top") | if (word == "top") | ||||
out = EVAlign_Top; | out = EVAlign_Top; | ||||
else if (word == "bottom") | else if (word == "bottom") | ||||
out = EVAlign_Bottom; | out = EVAlign_Bottom; | ||||
else if (word == "center") | else if (word == "center") | ||||
out = EVAlign_Center; | out = EVAlign_Center; | ||||
else | else | ||||
{ | { | ||||
out = EVAlign_Top; | out = EVAlign_Top; | ||||
JSAutoRequest rq(cx); | |||||
JS_ReportError(cx, "Invalid alignment (should be 'left', 'right' or 'center')"); | JS_ReportError(cx, "Invalid alignment (should be 'left', 'right' or 'center')"); | ||||
return false; | return false; | ||||
} | } | ||||
return true; | return true; | ||||
} | } | ||||
template<> void ScriptInterface::ToJSVal<EAlign>(JSContext* cx, JS::MutableHandleValue ret, const EAlign& val) | template<> void ScriptInterface::ToJSVal<EAlign>(JSContext* cx, JS::MutableHandleValue ret, const EAlign& val) | ||||
{ | { | ||||
std::string word; | std::string word; | ||||
switch (val) | switch (val) | ||||
{ | { | ||||
case EAlign_Left: | case EAlign_Left: | ||||
word = "left"; | word = "left"; | ||||
break; | break; | ||||
case EAlign_Right: | case EAlign_Right: | ||||
word = "right"; | word = "right"; | ||||
break; | break; | ||||
case EAlign_Center: | case EAlign_Center: | ||||
word = "center"; | word = "center"; | ||||
break; | break; | ||||
default: | default: | ||||
word = "error"; | word = "error"; | ||||
JSAutoRequest rq(cx); | |||||
JS_ReportError(cx, "Invalid alignment (should be 'left', 'right' or 'center')"); | JS_ReportError(cx, "Invalid alignment (should be 'left', 'right' or 'center')"); | ||||
break; | break; | ||||
} | } | ||||
ToJSVal(cx, ret, word); | ToJSVal(cx, ret, word); | ||||
} | } | ||||
template<> bool ScriptInterface::FromJSVal<EAlign>(JSContext* cx, JS::HandleValue v, EAlign& out) | template<> bool ScriptInterface::FromJSVal<EAlign>(JSContext* cx, JS::HandleValue v, EAlign& out) | ||||
{ | { | ||||
std::string word; | std::string word; | ||||
FromJSVal(cx, v, word); | FromJSVal(cx, v, word); | ||||
if (word == "left") | if (word == "left") | ||||
out = EAlign_Left; | out = EAlign_Left; | ||||
else if (word == "right") | else if (word == "right") | ||||
out = EAlign_Right; | out = EAlign_Right; | ||||
else if (word == "center") | else if (word == "center") | ||||
out = EAlign_Center; | out = EAlign_Center; | ||||
else | else | ||||
{ | { | ||||
out = EAlign_Left; | out = EAlign_Left; | ||||
JSAutoRequest rq(cx); | |||||
JS_ReportError(cx, "Invalid alignment (should be 'left', 'right' or 'center')"); | JS_ReportError(cx, "Invalid alignment (should be 'left', 'right' or 'center')"); | ||||
return false; | return false; | ||||
} | } | ||||
return true; | return true; | ||||
} | } | ||||
template<> void ScriptInterface::ToJSVal<CGUISpriteInstance>(JSContext* cx, JS::MutableHandleValue ret, const CGUISpriteInstance& val) | template<> void ScriptInterface::ToJSVal<CGUISpriteInstance>(JSContext* cx, JS::MutableHandleValue ret, const CGUISpriteInstance& val) | ||||
{ | { | ||||
Show All 14 Lines |
Wildfire Games · Phabricator