Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/source/gui/scripting/JSInterface_GUITypes.cpp
Show First 20 Lines • Show All 88 Lines • ▼ Show 20 Lines | CStr ToPercentString(double pix, double per) | ||||
if (per == 0) | if (per == 0) | ||||
return CStr::FromDouble(pix); | return CStr::FromDouble(pix); | ||||
return CStr::FromDouble(per)+"%"+(pix == 0.0 ? CStr() : pix > 0.0 ? CStr("+")+CStr::FromDouble(pix) : CStr::FromDouble(pix)); | return CStr::FromDouble(per)+"%"+(pix == 0.0 ? CStr() : pix > 0.0 ? CStr("+")+CStr::FromDouble(pix) : CStr::FromDouble(pix)); | ||||
} | } | ||||
bool JSI_GUISize::toString(JSContext* cx, uint argc, JS::Value* vp) | bool JSI_GUISize::toString(JSContext* cx, uint argc, JS::Value* vp) | ||||
{ | { | ||||
UNUSED2(argc); | // JSAutoRequest not needed for the calls below | ||||
JS::CallReceiver rec = JS::CallReceiverFromVp(vp); | JS::CallArgs args = JS::CallArgsFromVp(argc, vp); | ||||
CStr buffer; | CStr buffer; | ||||
try | try | ||||
{ | { | ||||
ScriptInterface* pScriptInterface = ScriptInterface::GetScriptInterfaceAndCBData(cx)->pScriptInterface; | ScriptInterface* pScriptInterface = ScriptInterface::GetScriptInterfaceAndCBData(cx)->pScriptInterface; | ||||
double val, valr; | double val, valr; | ||||
#define SIDE(side) \ | #define SIDE(side) \ | ||||
pScriptInterface->GetProperty(rec.thisv(), #side, val); \ | pScriptInterface->GetProperty(args.thisv(), #side, val); \ | ||||
pScriptInterface->GetProperty(rec.thisv(), "r"#side, valr); \ | pScriptInterface->GetProperty(args.thisv(), "r"#side, valr); \ | ||||
buffer += ToPercentString(val, valr); | buffer += ToPercentString(val, valr); | ||||
SIDE(left); | SIDE(left); | ||||
buffer += " "; | buffer += " "; | ||||
SIDE(top); | SIDE(top); | ||||
buffer += " "; | buffer += " "; | ||||
SIDE(right); | SIDE(right); | ||||
buffer += " "; | buffer += " "; | ||||
SIDE(bottom); | SIDE(bottom); | ||||
#undef SIDE | #undef SIDE | ||||
} | } | ||||
catch (PSERROR_Scripting_ConversionFailed&) | catch (PSERROR_Scripting_ConversionFailed&) | ||||
{ | { | ||||
ScriptInterface::ToJSVal(cx, rec.rval(), std::string("<Error converting value to numbers>")); | ScriptInterface::ToJSVal(cx, args.rval(), std::string("<Error converting value to numbers>")); | ||||
return true; | return true; | ||||
} | } | ||||
ScriptInterface::ToJSVal(cx, rec.rval(), buffer); | ScriptInterface::ToJSVal(cx, args.rval(), buffer); | ||||
return true; | return true; | ||||
} | } | ||||
void JSI_GUITypes::init(ScriptInterface& scriptInterface) | void JSI_GUITypes::init(ScriptInterface& scriptInterface) | ||||
{ | { | ||||
scriptInterface.DefineCustomObjectType(&JSI_GUISize::JSI_class, JSI_GUISize::construct, 1, nullptr, JSI_GUISize::JSI_methods, NULL, NULL); | scriptInterface.DefineCustomObjectType(&JSI_GUISize::JSI_class, JSI_GUISize::construct, 1, nullptr, JSI_GUISize::JSI_methods, NULL, NULL); | ||||
} | } |
Wildfire Games · Phabricator