CEXPORT JSBool def_timestep_image_map_class_constructor(JSContext *cx, unsigned argc, jsval *vp) { JS_BeginRequest(cx); JSObject *thiz = timestep_image_map_create_ctor_object(cx, vp); timestep_image_map *map = timestep_image_map_init(); JS_SetPrivate(thiz, map); JSObject *parent; // NOTE: Parent is currently not stored anywhere JSString *url_jstr; if (argc == 6) { if (JS_ConvertArguments(cx, argc, JS_ARGV(cx, vp), "oiiiiS", &parent, &map->x, &map->y, &map->width, &map->height, &url_jstr)) { map->margin_top = 0; map->margin_right = 0; map->margin_bottom = 0; map->margin_left = 0; JSTR_TO_CSTR_PERSIST(cx, url_jstr, url_cstr); map->url = url_cstr; JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(thiz)); JS_EndRequest(cx); return JS_TRUE; } } else if (argc == 10) { if (JS_ConvertArguments(cx, argc, JS_ARGV(cx, vp), "oiiiiiiiiS", &parent, &map->x, &map->y, &map->width, &map->height, &map->margin_top, &map->margin_right, &map->margin_bottom, &map->margin_left, &url_jstr)) { JSTR_TO_CSTR_PERSIST(cx, url_jstr, url_cstr); map->url = url_cstr; JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(thiz)); JS_EndRequest(cx); return JS_TRUE; } } LOG("{imagemap} ERROR: ImageMap constructor arguments were invalid!"); // Unlikely timestep_image_delete(map); JS_EndRequest(cx); return JS_FALSE; }
CEXPORT JSBool def_timestep_image_map_set_url(JSContext *cx, JSHandleObject obj, JSHandleId id, JSBool strict, JSMutableHandleValue vp) { JS_BeginRequest(cx); timestep_image_map *thiz = (timestep_image_map*)JS_GetPrivate(obj.get()); if (thiz) { if (vp.isString()) { JSString *jstr = vp.toString(); JSTR_TO_CSTR_PERSIST(cx, jstr, cstr); if (thiz->url) { free(thiz->url); } thiz->url = cstr; } } JS_EndRequest(cx); return JS_TRUE; }