add input get mouse state; remove various array extensions
This commit is contained in:
120
source/jsffi.c
120
source/jsffi.c
@@ -2444,12 +2444,106 @@ JSC_CCALL(array_lerp,
|
||||
return arr;
|
||||
)
|
||||
|
||||
JSValue js_array_get_x(JSContext *js, JSValue self) { return JS_GetPropertyUint32(js,self,0); }
|
||||
JSValue js_array_set_x(JSContext *js, JSValue self, JSValue val) { JS_SetPropertyUint32(js,self,0,val); return JS_UNDEFINED; }
|
||||
|
||||
JSValue js_array_get_y(JSContext *js, JSValue self) { return JS_GetPropertyUint32(js,self,1); }
|
||||
JSValue js_array_set_y(JSContext *js, JSValue self, JSValue val) { JS_SetPropertyUint32(js,self,1,val); return JS_UNDEFINED; }
|
||||
|
||||
JSValue js_array_get_xy(JSContext *js, JSValue self)
|
||||
{
|
||||
JSValue arr = JS_NewArray(js);
|
||||
JS_SetPropertyUint32(js,arr,0,JS_GetPropertyUint32(js,self,0));
|
||||
JS_SetPropertyUint32(js,arr,1,JS_GetPropertyUint32(js,self,1));
|
||||
return arr;
|
||||
}
|
||||
|
||||
JSValue js_array_set_xy(JSContext *js, JSValue self, JSValue v)
|
||||
{
|
||||
JS_SetPropertyUint32(js,self,0,JS_GetPropertyUint32(js,v,0));
|
||||
JS_SetPropertyUint32(js,self,1,JS_GetPropertyUint32(js,v,1));
|
||||
return JS_UNDEFINED;
|
||||
}
|
||||
|
||||
// Single-value accessors
|
||||
|
||||
JSValue js_array_get_r(JSContext *js, JSValue self)
|
||||
{ return JS_GetPropertyUint32(js, self, 0); }
|
||||
|
||||
JSValue js_array_set_r(JSContext *js, JSValue self, JSValue val)
|
||||
{ JS_SetPropertyUint32(js, self, 0, val); return JS_UNDEFINED; }
|
||||
|
||||
JSValue js_array_get_g(JSContext *js, JSValue self)
|
||||
{ return JS_GetPropertyUint32(js, self, 1); }
|
||||
|
||||
JSValue js_array_set_g(JSContext *js, JSValue self, JSValue val)
|
||||
{ JS_SetPropertyUint32(js, self, 1, val); return JS_UNDEFINED; }
|
||||
|
||||
JSValue js_array_get_b(JSContext *js, JSValue self)
|
||||
{ return JS_GetPropertyUint32(js, self, 2); }
|
||||
|
||||
JSValue js_array_set_b(JSContext *js, JSValue self, JSValue val)
|
||||
{ JS_SetPropertyUint32(js, self, 2, val); return JS_UNDEFINED; }
|
||||
|
||||
JSValue js_array_get_a(JSContext *js, JSValue self)
|
||||
{ return JS_GetPropertyUint32(js, self, 3); }
|
||||
|
||||
JSValue js_array_set_a(JSContext *js, JSValue self, JSValue val)
|
||||
{ JS_SetPropertyUint32(js, self, 3, val); return JS_UNDEFINED; }
|
||||
|
||||
// Multi-value accessors
|
||||
|
||||
JSValue js_array_get_rgb(JSContext *js, JSValue self)
|
||||
{
|
||||
JSValue arr = JS_NewArray(js);
|
||||
JS_SetPropertyUint32(js, arr, 0, JS_GetPropertyUint32(js, self, 0));
|
||||
JS_SetPropertyUint32(js, arr, 1, JS_GetPropertyUint32(js, self, 1));
|
||||
JS_SetPropertyUint32(js, arr, 2, JS_GetPropertyUint32(js, self, 2));
|
||||
return arr;
|
||||
}
|
||||
|
||||
JSValue js_array_set_rgb(JSContext *js, JSValue self, JSValue val)
|
||||
{
|
||||
JS_SetPropertyUint32(js, self, 0, JS_GetPropertyUint32(js, val, 0));
|
||||
JS_SetPropertyUint32(js, self, 1, JS_GetPropertyUint32(js, val, 1));
|
||||
JS_SetPropertyUint32(js, self, 2, JS_GetPropertyUint32(js, val, 2));
|
||||
return JS_UNDEFINED;
|
||||
}
|
||||
|
||||
JSValue js_array_get_rgba(JSContext *js, JSValue self)
|
||||
{
|
||||
JSValue arr = JS_NewArray(js);
|
||||
JS_SetPropertyUint32(js, arr, 0, JS_GetPropertyUint32(js, self, 0));
|
||||
JS_SetPropertyUint32(js, arr, 1, JS_GetPropertyUint32(js, self, 1));
|
||||
JS_SetPropertyUint32(js, arr, 2, JS_GetPropertyUint32(js, self, 2));
|
||||
JS_SetPropertyUint32(js, arr, 3, JS_GetPropertyUint32(js, self, 3));
|
||||
return arr;
|
||||
}
|
||||
|
||||
JSValue js_array_set_rgba(JSContext *js, JSValue self, JSValue val)
|
||||
{
|
||||
JS_SetPropertyUint32(js, self, 0, JS_GetPropertyUint32(js, val, 0));
|
||||
JS_SetPropertyUint32(js, self, 1, JS_GetPropertyUint32(js, val, 1));
|
||||
JS_SetPropertyUint32(js, self, 2, JS_GetPropertyUint32(js, val, 2));
|
||||
JS_SetPropertyUint32(js, self, 3, JS_GetPropertyUint32(js, val, 3));
|
||||
return JS_UNDEFINED;
|
||||
}
|
||||
|
||||
static const JSCFunctionListEntry js_array_funcs[] = {
|
||||
PROTO_FUNC_DEF(array, add, 1),
|
||||
PROTO_FUNC_DEF(array, sub, 1),
|
||||
PROTO_FUNC_DEF(array, div,1),
|
||||
PROTO_FUNC_DEF(array, scale, 1),
|
||||
PROTO_FUNC_DEF(array, lerp, 2)
|
||||
PROTO_FUNC_DEF(array, lerp, 2),
|
||||
JS_CGETSET_DEF("x", js_array_get_x,js_array_set_x),
|
||||
JS_CGETSET_DEF("y", js_array_get_y, js_array_set_y),
|
||||
JS_CGETSET_DEF("xy", js_array_get_xy, js_array_set_xy),
|
||||
JS_CGETSET_DEF("r", js_array_get_r, js_array_set_r),
|
||||
JS_CGETSET_DEF("g", js_array_get_g, js_array_set_g),
|
||||
JS_CGETSET_DEF("b", js_array_get_b, js_array_set_b),
|
||||
JS_CGETSET_DEF("a", js_array_get_a, js_array_set_a),
|
||||
JS_CGETSET_DEF("rgb", js_array_get_rgb, js_array_set_rgb),
|
||||
JS_CGETSET_DEF("rgba", js_array_get_rgba, js_array_set_rgba),
|
||||
};
|
||||
|
||||
JSC_CCALL(number_lerp,
|
||||
@@ -5661,12 +5755,34 @@ JSC_CCALL(input_keymod,
|
||||
return js_keymod(js);
|
||||
)
|
||||
|
||||
JSC_CCALL(input_mousestate,
|
||||
float x,y;
|
||||
SDL_MouseButtonFlags flags = SDL_GetMouseState(&x,&y);
|
||||
JSValue m = JS_NewObject(js);
|
||||
JS_SetProperty(js,m,x_atom, number2js(js,x));
|
||||
JS_SetProperty(js,m,y_atom,number2js(js,y));
|
||||
|
||||
if (flags & SDL_BUTTON_LMASK)
|
||||
JS_SetPropertyStr(js, m, "left", JS_NewBool(js, 1));
|
||||
if (flags & SDL_BUTTON_MMASK)
|
||||
JS_SetPropertyStr(js, m, "middle", JS_NewBool(js, 1));
|
||||
if (flags & SDL_BUTTON_RMASK)
|
||||
JS_SetPropertyStr(js, m, "right", JS_NewBool(js, 1));
|
||||
if (flags & SDL_BUTTON_X1MASK)
|
||||
JS_SetPropertyStr(js, m, "x1", JS_NewBool(js, 1));
|
||||
if (flags & SDL_BUTTON_X2MASK)
|
||||
JS_SetPropertyStr(js, m, "x2", JS_NewBool(js, 1));
|
||||
|
||||
return m;
|
||||
)
|
||||
|
||||
static const JSCFunctionListEntry js_input_funcs[] = {
|
||||
MIST_FUNC_DEF(input, mouse_show, 1),
|
||||
MIST_FUNC_DEF(input, mouse_lock, 1),
|
||||
MIST_FUNC_DEF(input, cursor_set, 1),
|
||||
MIST_FUNC_DEF(input, keyname, 1),
|
||||
MIST_FUNC_DEF(input, keymod, 0),
|
||||
MIST_FUNC_DEF(input, mousestate, 0),
|
||||
};
|
||||
|
||||
JSC_CCALL(os_guid,
|
||||
@@ -7786,4 +7902,4 @@ void ffi_load(JSContext *js, int argc, char **argv) {
|
||||
JS_FreeCString(caller_ctx,fn_src);
|
||||
#endif
|
||||
|
||||
*/
|
||||
*/
|
||||
|
||||
@@ -10,7 +10,15 @@
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
#include "quickjs.h"
|
||||
#include <malloc/malloc.h>
|
||||
|
||||
#if defined(__APPLE__)
|
||||
#include <malloc/malloc.h>
|
||||
#elif defined(_WIN32)
|
||||
#include <malloc.h>
|
||||
#elif defined(__linux__) || defined(__GLIBC__)
|
||||
#define _GNU_SOURCE
|
||||
#include <malloc.h>
|
||||
#endif
|
||||
|
||||
#include "physfs.h"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user