Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/source/gui/scripting/JSInterface_IGUITextOwner.cpp
Show All 27 Lines | JSFunctionSpec JSI_IGUITextOwner::JSI_methods[] = | ||||
JS_FS_END | JS_FS_END | ||||
}; | }; | ||||
void JSI_IGUITextOwner::RegisterScriptFunctions(JSContext* cx, JS::HandleObject obj) | void JSI_IGUITextOwner::RegisterScriptFunctions(JSContext* cx, JS::HandleObject obj) | ||||
{ | { | ||||
JS_DefineFunctions(cx, obj, JSI_methods); | JS_DefineFunctions(cx, obj, JSI_methods); | ||||
} | } | ||||
bool JSI_IGUITextOwner::GetTextSize(JSContext* cx, uint UNUSED(argc), JS::Value* vp) | bool JSI_IGUITextOwner::GetTextSize(JSContext* cx, uint argc, JS::Value* vp) | ||||
{ | { | ||||
JSAutoRequest rq(cx); | // No JSAutoRequest needed for these calls | ||||
JS::CallReceiver rec = JS::CallReceiverFromVp(vp); | JS::CallArgs args = JS::CallArgsFromVp(argc, vp); | ||||
JS::RootedObject thisObj(cx, &rec.thisv().toObject()); | IGUIObject* obj = ScriptInterface::GetPrivate<IGUIObject>(cx, args, &JSI_IGUIObject::JSI_class); | ||||
IGUIObject* obj = static_cast<IGUIObject*>(JS_GetInstancePrivate(cx, thisObj, &JSI_IGUIObject::JSI_class, nullptr)); | |||||
if (!obj) | if (!obj) | ||||
{ | |||||
JS_ReportError(cx, "This is not an IGUIObject!"); | |||||
return false; | return false; | ||||
} | |||||
// Avoid dynamic_cast for performance reasons | // Avoid dynamic_cast for performance reasons | ||||
IGUITextOwner* objText = static_cast<IGUITextOwner*>(obj->GetTextOwner()); | IGUITextOwner* objText = static_cast<IGUITextOwner*>(obj->GetTextOwner()); | ||||
if (!objText) | if (!objText) | ||||
{ | { | ||||
JSAutoRequest rq(cx); | |||||
JS_ReportError(cx, "This IGUIObject is not an IGUITextOwner!"); | JS_ReportError(cx, "This IGUIObject is not an IGUITextOwner!"); | ||||
return false; | return false; | ||||
} | } | ||||
ScriptInterface::ToJSVal(cx, rec.rval(), objText->CalculateTextSize()); | ScriptInterface::ToJSVal(cx, args.rval(), objText->CalculateTextSize()); | ||||
return true; | return true; | ||||
} | } |
Wildfire Games · Phabricator