mirror of https://github.com/mode777/rayjs.git
Support out-parameter for strings
This commit is contained in:
parent
5c2cb695e1
commit
7e0c04020e
|
@ -501,14 +501,17 @@ function main(){
|
|||
const param = fun!.params![index]
|
||||
param.binding = {
|
||||
jsType: `{ ${param.name}: number }`,
|
||||
customConverter: gen => {
|
||||
customConverter: (gen,src) => {
|
||||
gen.declare(param.name, param.type, false, "NULL");
|
||||
gen.declare(param.name+"_out", param.type.replace(" *",""))
|
||||
gen.declare(param.name, param.type, false, "&"+param.name+"_out")
|
||||
gen.call("JS_GetPropertyStr", ["ctx","argv["+index+"]", '"'+param.name+'"'], { name: param.name+"_js", type: "JSValue" })
|
||||
gen.call("JS_ToInt32", ["ctx",param.name,param.name+"_js"])
|
||||
const body = gen.if("!JS_IsNull("+src+")")
|
||||
body.statement(param.name + " = &" + param.name + "_out")
|
||||
body.call("JS_GetPropertyStr", ["ctx",src, '"'+param.name+'"'], { name: param.name+"_js", type: "JSValue" })
|
||||
body.call("JS_ToInt32", ["ctx",param.name,param.name+"_js"])
|
||||
},
|
||||
customCleanup: gen => {
|
||||
gen.call("JS_SetPropertyStr", ["ctx", "argv["+index+"]", `"${param.name}"`, "JS_NewInt32(ctx,"+param.name+"_out)"])
|
||||
customCleanup: (gen,src) => {
|
||||
const body = gen.if("!JS_IsNull("+src+")")
|
||||
body.call("JS_SetPropertyStr", ["ctx", src, `"${param.name}"`, "JS_NewInt32(ctx,"+param.name+"_out)"])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -518,8 +521,8 @@ function main(){
|
|||
const param = fun!.params![index]
|
||||
param.binding = {
|
||||
jsType: `{ ${param.name}: string }`,
|
||||
customConverter: gen => {
|
||||
gen.call("JS_GetPropertyStr", ["ctx","argv["+index+"]", '"'+param.name+'"'], { name: param.name+"_js", type: "JSValue" })
|
||||
customConverter: (gen,src) => {
|
||||
gen.call("JS_GetPropertyStr", ["ctx",src, '"'+param.name+'"'], { name: param.name+"_js", type: "JSValue" })
|
||||
gen.declare(param.name+"_len", "size_t");
|
||||
gen.call("JS_ToCStringLen",["ctx", "&"+param.name+"_len", param.name+"_js"], { name: param.name+"_val", type: "const char *" })
|
||||
gen.call("memcpy", ["(void *)textbuffer", param.name+"_val", param.name+"_len"])
|
||||
|
@ -527,9 +530,9 @@ function main(){
|
|||
gen.declare(param.name, param.type, false, "textbuffer");
|
||||
gen.declare(lenParam.name, lenParam.type, false, "4096")
|
||||
},
|
||||
customCleanup: gen => {
|
||||
customCleanup: (gen, src) => {
|
||||
gen.jsCleanUpParameter("const char *", param.name + "_val")
|
||||
gen.call("JS_SetPropertyStr", ["ctx", "argv["+index+"]", `"${param.name}"`, "JS_NewString(ctx,"+param.name+")"])
|
||||
gen.call("JS_SetPropertyStr", ["ctx", src, `"${param.name}"`, "JS_NewString(ctx,"+param.name+")"])
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -544,7 +547,10 @@ function main(){
|
|||
ignore("GuiListViewEx")
|
||||
setOutParamString(getFunction(api.functions, "GuiTextBox")!, 1,2)
|
||||
//ignore("GuiTextBox")
|
||||
ignore("GuiTextInputBox")
|
||||
const gtib = getFunction(api.functions, "GuiTextInputBox")!
|
||||
setOutParamString(gtib,4,5)
|
||||
setOutParam(gtib, 6)
|
||||
|
||||
//setOutParam(getFunction(api.functions, "GuiTextInputBox")!, 6)
|
||||
ignore("GuiTabBar")
|
||||
ignore("GuiGetIcons")
|
||||
|
|
|
@ -21,8 +21,8 @@ export interface FuncBindingOptions {
|
|||
|
||||
export interface ParamBindingOptions {
|
||||
ignore?: boolean,
|
||||
customConverter?: (gen: QuickJsGenerator) => void,
|
||||
customCleanup?: (gen: QuickJsGenerator) => void,
|
||||
customConverter?: (gen: QuickJsGenerator, src: string) => void,
|
||||
customCleanup?: (gen: QuickJsGenerator, src: string) => void,
|
||||
jsType?: string,
|
||||
typeAlias?: string
|
||||
}
|
||||
|
|
|
@ -31,18 +31,20 @@ export class RayLibHeader extends QuickJsHeader {
|
|||
if(options.before) options.before(fun)
|
||||
// read parameters
|
||||
api.params = api.params || []
|
||||
for (let i = 0; i < api.params.length; i++) {
|
||||
if(api.params[i]?.binding?.ignore) continue;
|
||||
const para = api.params[i]
|
||||
if(para.binding?.customConverter) para.binding.customConverter(fun)
|
||||
const activeParams = api.params.filter(x => !x.binding?.ignore)
|
||||
|
||||
for (let i = 0; i < activeParams.length; i++) {
|
||||
const para = activeParams[i]
|
||||
if(para.binding?.customConverter) para.binding.customConverter(fun, "argv["+i+"]")
|
||||
else fun.jsToC(para.type,para.name,"argv["+i+"]", this.structLookup, false, para.binding?.typeAlias)
|
||||
}
|
||||
// call c function
|
||||
if(options.customizeCall) fun.line(options.customizeCall)
|
||||
else fun.call(api.name, api.params.map(x => x.name), api.returnType === "void" ? null : {type: api.returnType, name: "returnVal"})
|
||||
// clean up parameters
|
||||
for (const param of api.params) {
|
||||
if(param.binding?.customCleanup) param.binding.customCleanup(fun)
|
||||
for (let i = 0; i < activeParams.length; i++) {
|
||||
const param = activeParams[i]
|
||||
if(param.binding?.customCleanup) param.binding.customCleanup(fun, "argv["+i+"]")
|
||||
else fun.jsCleanUpParameter(param.type, param.name)
|
||||
}
|
||||
// return result
|
||||
|
|
|
@ -1502,6 +1502,8 @@ declare function guiGrid(bounds: Rectangle, text: string, spacing: number, subdi
|
|||
declare function guiListView(bounds: Rectangle, text: string, scrollIndex: { scrollIndex: number }, active: number): number;
|
||||
/** Message Box control, displays a message */
|
||||
declare function guiMessageBox(bounds: Rectangle, title: string, message: string, buttons: string): number;
|
||||
/** Text Input Box control, ask for text, supports secret */
|
||||
declare function guiTextInputBox(bounds: Rectangle, title: string, message: string, buttons: string, text: { text: string }, secretViewActive: { secretViewActive: number }): number;
|
||||
/** Color Picker control (multiple color controls) */
|
||||
declare function guiColorPicker(bounds: Rectangle, text: string, color: Color): Color;
|
||||
/** Color Panel control */
|
||||
|
|
|
@ -57,7 +57,7 @@ let viewScroll = new Vector2(0,0);
|
|||
let exitWindow = false;
|
||||
let showMessageBox = false;
|
||||
|
||||
let textInput = "";
|
||||
let textInput = { text: "" };
|
||||
let showTextInputBox = false;
|
||||
|
||||
let textInputFileName = "";
|
||||
|
@ -105,7 +105,7 @@ while (!exitWindow) // Detect window close button or ESC key
|
|||
if (guiSpinner(new Rectangle(25, 135, 125, 30), null, spinner001Value, 0, 100, spinnerEditMode)) spinnerEditMode = !spinnerEditMode;
|
||||
if (guiValueBox(new Rectangle(25, 175, 125, 30), null, valueBox002Value, 0, 100, valueBoxEditMode)) valueBoxEditMode = !valueBoxEditMode;
|
||||
guiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT);
|
||||
if (guiTextBox(new Rectangle(25, 215, 125, 30), textBoxText, 64, textBoxEditMode)) textBoxEditMode = !textBoxEditMode;
|
||||
if (guiTextBox(new Rectangle(25, 215, 125, 30), textBoxText, textBoxEditMode)) textBoxEditMode = !textBoxEditMode;
|
||||
|
||||
guiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER);
|
||||
|
||||
|
@ -162,24 +162,23 @@ while (!exitWindow) // Detect window close button or ESC key
|
|||
else if (result == 1) exitWindow = true;
|
||||
}
|
||||
|
||||
// if (showTextInputBox)
|
||||
// {
|
||||
// drawRectangle(0, 0, getScreenWidth(), getScreenHeight(), fade(RAYWHITE, 0.8));
|
||||
// let result = guiTextInputBox(new Rectangle(getScreenWidth()/2 - 120, getScreenHeight()/2 - 60, 240, 140), "Save", guiIconText(ICON_FILE_SAVE, "Save file as..."), "Ok;Cancel", textInput, 255, null);
|
||||
if (showTextInputBox)
|
||||
{
|
||||
drawRectangle(0, 0, getScreenWidth(), getScreenHeight(), fade(RAYWHITE, 0.8));
|
||||
let result = guiTextInputBox(new Rectangle(getScreenWidth()/2 - 120, getScreenHeight()/2 - 60, 240, 140), "Save", guiIconText(ICON_FILE_SAVE, "Save file as..."), "Ok;Cancel", textInput, null);
|
||||
|
||||
// if (result == 1)
|
||||
// {
|
||||
// // TODO: Validate textInput value and save
|
||||
if (result == 1)
|
||||
{
|
||||
// TODO: Validate textInput value and save
|
||||
textInputFileName = textInput.text
|
||||
}
|
||||
|
||||
// strcpy(textInputFileName, textInput);
|
||||
// }
|
||||
|
||||
// if ((result == 0) || (result == 1) || (result == 2))
|
||||
// {
|
||||
// showTextInputBox = false;
|
||||
// strcpy(textInput, "\0");
|
||||
// }
|
||||
// }
|
||||
if ((result == 0) || (result == 1) || (result == 2))
|
||||
{
|
||||
showTextInputBox = false;
|
||||
textInput.text = ""
|
||||
}
|
||||
}
|
||||
//----------------------------------------------------------------------------------
|
||||
|
||||
endDrawing();
|
||||
|
|
|
@ -660,12 +660,11 @@ class RayLibHeader extends quickjs_1.QuickJsHeader {
|
|||
options.before(fun);
|
||||
// read parameters
|
||||
api.params = api.params || [];
|
||||
for (let i = 0; i < api.params.length; i++) {
|
||||
if (api.params[i]?.binding?.ignore)
|
||||
continue;
|
||||
const para = api.params[i];
|
||||
const activeParams = api.params.filter(x => !x.binding?.ignore);
|
||||
for (let i = 0; i < activeParams.length; i++) {
|
||||
const para = activeParams[i];
|
||||
if (para.binding?.customConverter)
|
||||
para.binding.customConverter(fun);
|
||||
para.binding.customConverter(fun, "argv[" + i + "]");
|
||||
else
|
||||
fun.jsToC(para.type, para.name, "argv[" + i + "]", this.structLookup, false, para.binding?.typeAlias);
|
||||
}
|
||||
|
@ -675,9 +674,10 @@ class RayLibHeader extends quickjs_1.QuickJsHeader {
|
|||
else
|
||||
fun.call(api.name, api.params.map(x => x.name), api.returnType === "void" ? null : { type: api.returnType, name: "returnVal" });
|
||||
// clean up parameters
|
||||
for (const param of api.params) {
|
||||
for (let i = 0; i < activeParams.length; i++) {
|
||||
const param = activeParams[i];
|
||||
if (param.binding?.customCleanup)
|
||||
param.binding.customCleanup(fun);
|
||||
param.binding.customCleanup(fun, "argv[" + i + "]");
|
||||
else
|
||||
fun.jsCleanUpParameter(param.type, param.name);
|
||||
}
|
||||
|
@ -1387,14 +1387,17 @@ function main() {
|
|||
const param = fun.params[index];
|
||||
param.binding = {
|
||||
jsType: `{ ${param.name}: number }`,
|
||||
customConverter: gen => {
|
||||
customConverter: (gen, src) => {
|
||||
gen.declare(param.name, param.type, false, "NULL");
|
||||
gen.declare(param.name + "_out", param.type.replace(" *", ""));
|
||||
gen.declare(param.name, param.type, false, "&" + param.name + "_out");
|
||||
gen.call("JS_GetPropertyStr", ["ctx", "argv[" + index + "]", '"' + param.name + '"'], { name: param.name + "_js", type: "JSValue" });
|
||||
gen.call("JS_ToInt32", ["ctx", param.name, param.name + "_js"]);
|
||||
const body = gen.if("!JS_IsNull(" + src + ")");
|
||||
body.statement(param.name + " = &" + param.name + "_out");
|
||||
body.call("JS_GetPropertyStr", ["ctx", src, '"' + param.name + '"'], { name: param.name + "_js", type: "JSValue" });
|
||||
body.call("JS_ToInt32", ["ctx", param.name, param.name + "_js"]);
|
||||
},
|
||||
customCleanup: gen => {
|
||||
gen.call("JS_SetPropertyStr", ["ctx", "argv[" + index + "]", `"${param.name}"`, "JS_NewInt32(ctx," + param.name + "_out)"]);
|
||||
customCleanup: (gen, src) => {
|
||||
const body = gen.if("!JS_IsNull(" + src + ")");
|
||||
body.call("JS_SetPropertyStr", ["ctx", src, `"${param.name}"`, "JS_NewInt32(ctx," + param.name + "_out)"]);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
@ -1404,8 +1407,8 @@ function main() {
|
|||
const param = fun.params[index];
|
||||
param.binding = {
|
||||
jsType: `{ ${param.name}: string }`,
|
||||
customConverter: gen => {
|
||||
gen.call("JS_GetPropertyStr", ["ctx", "argv[" + index + "]", '"' + param.name + '"'], { name: param.name + "_js", type: "JSValue" });
|
||||
customConverter: (gen, src) => {
|
||||
gen.call("JS_GetPropertyStr", ["ctx", src, '"' + param.name + '"'], { name: param.name + "_js", type: "JSValue" });
|
||||
gen.declare(param.name + "_len", "size_t");
|
||||
gen.call("JS_ToCStringLen", ["ctx", "&" + param.name + "_len", param.name + "_js"], { name: param.name + "_val", type: "const char *" });
|
||||
gen.call("memcpy", ["(void *)textbuffer", param.name + "_val", param.name + "_len"]);
|
||||
|
@ -1413,9 +1416,9 @@ function main() {
|
|||
gen.declare(param.name, param.type, false, "textbuffer");
|
||||
gen.declare(lenParam.name, lenParam.type, false, "4096");
|
||||
},
|
||||
customCleanup: gen => {
|
||||
customCleanup: (gen, src) => {
|
||||
gen.jsCleanUpParameter("const char *", param.name + "_val");
|
||||
gen.call("JS_SetPropertyStr", ["ctx", "argv[" + index + "]", `"${param.name}"`, "JS_NewString(ctx," + param.name + ")"]);
|
||||
gen.call("JS_SetPropertyStr", ["ctx", src, `"${param.name}"`, "JS_NewString(ctx," + param.name + ")"]);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
@ -1427,7 +1430,9 @@ function main() {
|
|||
ignore("GuiListViewEx");
|
||||
setOutParamString(getFunction(api.functions, "GuiTextBox"), 1, 2);
|
||||
//ignore("GuiTextBox")
|
||||
ignore("GuiTextInputBox");
|
||||
const gtib = getFunction(api.functions, "GuiTextInputBox");
|
||||
setOutParamString(gtib, 4, 5);
|
||||
setOutParam(gtib, 6);
|
||||
//setOutParam(getFunction(api.functions, "GuiTextInputBox")!, 6)
|
||||
ignore("GuiTabBar");
|
||||
ignore("GuiGetIcons");
|
||||
|
|
|
@ -8913,14 +8913,19 @@ static JSValue js_guiDropdownBox(JSContext * ctx, JSValueConst this_val, int arg
|
|||
if(bounds_ptr == NULL) return JS_EXCEPTION;
|
||||
Rectangle bounds = *bounds_ptr;
|
||||
const char * text = JS_IsNull(argv[1]) ? NULL : (const char *)JS_ToCString(ctx, argv[1]);
|
||||
int * active = NULL;
|
||||
int active_out;
|
||||
int * active = &active_out;
|
||||
if(!JS_IsNull(argv[2])) {
|
||||
active = &active_out;
|
||||
JSValue active_js = JS_GetPropertyStr(ctx, argv[2], "active");
|
||||
JS_ToInt32(ctx, active, active_js);
|
||||
}
|
||||
bool editMode = JS_ToBool(ctx, argv[3]);
|
||||
bool returnVal = GuiDropdownBox(bounds, text, active, editMode);
|
||||
JS_FreeCString(ctx, text);
|
||||
if(!JS_IsNull(argv[2])) {
|
||||
JS_SetPropertyStr(ctx, argv[2], "active", JS_NewInt32(ctx,active_out));
|
||||
}
|
||||
JSValue ret = JS_NewBool(ctx, returnVal);
|
||||
return ret;
|
||||
}
|
||||
|
@ -8930,10 +8935,13 @@ static JSValue js_guiSpinner(JSContext * ctx, JSValueConst this_val, int argc, J
|
|||
if(bounds_ptr == NULL) return JS_EXCEPTION;
|
||||
Rectangle bounds = *bounds_ptr;
|
||||
const char * text = JS_IsNull(argv[1]) ? NULL : (const char *)JS_ToCString(ctx, argv[1]);
|
||||
int * value = NULL;
|
||||
int value_out;
|
||||
int * value = &value_out;
|
||||
if(!JS_IsNull(argv[2])) {
|
||||
value = &value_out;
|
||||
JSValue value_js = JS_GetPropertyStr(ctx, argv[2], "value");
|
||||
JS_ToInt32(ctx, value, value_js);
|
||||
}
|
||||
int minValue;
|
||||
JS_ToInt32(ctx, &minValue, argv[3]);
|
||||
int maxValue;
|
||||
|
@ -8941,7 +8949,9 @@ static JSValue js_guiSpinner(JSContext * ctx, JSValueConst this_val, int argc, J
|
|||
bool editMode = JS_ToBool(ctx, argv[5]);
|
||||
bool returnVal = GuiSpinner(bounds, text, value, minValue, maxValue, editMode);
|
||||
JS_FreeCString(ctx, text);
|
||||
if(!JS_IsNull(argv[2])) {
|
||||
JS_SetPropertyStr(ctx, argv[2], "value", JS_NewInt32(ctx,value_out));
|
||||
}
|
||||
JSValue ret = JS_NewBool(ctx, returnVal);
|
||||
return ret;
|
||||
}
|
||||
|
@ -8951,10 +8961,13 @@ static JSValue js_guiValueBox(JSContext * ctx, JSValueConst this_val, int argc,
|
|||
if(bounds_ptr == NULL) return JS_EXCEPTION;
|
||||
Rectangle bounds = *bounds_ptr;
|
||||
const char * text = JS_IsNull(argv[1]) ? NULL : (const char *)JS_ToCString(ctx, argv[1]);
|
||||
int * value = NULL;
|
||||
int value_out;
|
||||
int * value = &value_out;
|
||||
if(!JS_IsNull(argv[2])) {
|
||||
value = &value_out;
|
||||
JSValue value_js = JS_GetPropertyStr(ctx, argv[2], "value");
|
||||
JS_ToInt32(ctx, value, value_js);
|
||||
}
|
||||
int minValue;
|
||||
JS_ToInt32(ctx, &minValue, argv[3]);
|
||||
int maxValue;
|
||||
|
@ -8962,7 +8975,9 @@ static JSValue js_guiValueBox(JSContext * ctx, JSValueConst this_val, int argc,
|
|||
bool editMode = JS_ToBool(ctx, argv[5]);
|
||||
bool returnVal = GuiValueBox(bounds, text, value, minValue, maxValue, editMode);
|
||||
JS_FreeCString(ctx, text);
|
||||
if(!JS_IsNull(argv[2])) {
|
||||
JS_SetPropertyStr(ctx, argv[2], "value", JS_NewInt32(ctx,value_out));
|
||||
}
|
||||
JSValue ret = JS_NewBool(ctx, returnVal);
|
||||
return ret;
|
||||
}
|
||||
|
@ -8978,7 +8993,7 @@ static JSValue js_guiTextBox(JSContext * ctx, JSValueConst this_val, int argc, J
|
|||
textbuffer[text_len] = 0;
|
||||
char * text = textbuffer;
|
||||
int textSize = 4096;
|
||||
bool editMode = JS_ToBool(ctx, argv[3]);
|
||||
bool editMode = JS_ToBool(ctx, argv[2]);
|
||||
bool returnVal = GuiTextBox(bounds, text, textSize, editMode);
|
||||
JS_FreeCString(ctx, text_val);
|
||||
JS_SetPropertyStr(ctx, argv[1], "text", JS_NewString(ctx,text));
|
||||
|
@ -9096,15 +9111,20 @@ static JSValue js_guiListView(JSContext * ctx, JSValueConst this_val, int argc,
|
|||
if(bounds_ptr == NULL) return JS_EXCEPTION;
|
||||
Rectangle bounds = *bounds_ptr;
|
||||
const char * text = JS_IsNull(argv[1]) ? NULL : (const char *)JS_ToCString(ctx, argv[1]);
|
||||
int * scrollIndex = NULL;
|
||||
int scrollIndex_out;
|
||||
int * scrollIndex = &scrollIndex_out;
|
||||
if(!JS_IsNull(argv[2])) {
|
||||
scrollIndex = &scrollIndex_out;
|
||||
JSValue scrollIndex_js = JS_GetPropertyStr(ctx, argv[2], "scrollIndex");
|
||||
JS_ToInt32(ctx, scrollIndex, scrollIndex_js);
|
||||
}
|
||||
int active;
|
||||
JS_ToInt32(ctx, &active, argv[3]);
|
||||
int returnVal = GuiListView(bounds, text, scrollIndex, active);
|
||||
JS_FreeCString(ctx, text);
|
||||
if(!JS_IsNull(argv[2])) {
|
||||
JS_SetPropertyStr(ctx, argv[2], "scrollIndex", JS_NewInt32(ctx,scrollIndex_out));
|
||||
}
|
||||
JSValue ret = JS_NewInt32(ctx, returnVal);
|
||||
return ret;
|
||||
}
|
||||
|
@ -9124,6 +9144,40 @@ static JSValue js_guiMessageBox(JSContext * ctx, JSValueConst this_val, int argc
|
|||
return ret;
|
||||
}
|
||||
|
||||
static JSValue js_guiTextInputBox(JSContext * ctx, JSValueConst this_val, int argc, JSValueConst * argv) {
|
||||
Rectangle* bounds_ptr = (Rectangle*)JS_GetOpaque2(ctx, argv[0], js_Rectangle_class_id);
|
||||
if(bounds_ptr == NULL) return JS_EXCEPTION;
|
||||
Rectangle bounds = *bounds_ptr;
|
||||
const char * title = JS_IsNull(argv[1]) ? NULL : (const char *)JS_ToCString(ctx, argv[1]);
|
||||
const char * message = JS_IsNull(argv[2]) ? NULL : (const char *)JS_ToCString(ctx, argv[2]);
|
||||
const char * buttons = JS_IsNull(argv[3]) ? NULL : (const char *)JS_ToCString(ctx, argv[3]);
|
||||
JSValue text_js = JS_GetPropertyStr(ctx, argv[4], "text");
|
||||
size_t text_len;
|
||||
const char * text_val = JS_ToCStringLen(ctx, &text_len, text_js);
|
||||
memcpy((void *)textbuffer, text_val, text_len);
|
||||
textbuffer[text_len] = 0;
|
||||
char * text = textbuffer;
|
||||
int textMaxSize = 4096;
|
||||
int * secretViewActive = NULL;
|
||||
int secretViewActive_out;
|
||||
if(!JS_IsNull(argv[5])) {
|
||||
secretViewActive = &secretViewActive_out;
|
||||
JSValue secretViewActive_js = JS_GetPropertyStr(ctx, argv[5], "secretViewActive");
|
||||
JS_ToInt32(ctx, secretViewActive, secretViewActive_js);
|
||||
}
|
||||
int returnVal = GuiTextInputBox(bounds, title, message, buttons, text, textMaxSize, secretViewActive);
|
||||
JS_FreeCString(ctx, title);
|
||||
JS_FreeCString(ctx, message);
|
||||
JS_FreeCString(ctx, buttons);
|
||||
JS_FreeCString(ctx, text_val);
|
||||
JS_SetPropertyStr(ctx, argv[4], "text", JS_NewString(ctx,text));
|
||||
if(!JS_IsNull(argv[5])) {
|
||||
JS_SetPropertyStr(ctx, argv[5], "secretViewActive", JS_NewInt32(ctx,secretViewActive_out));
|
||||
}
|
||||
JSValue ret = JS_NewInt32(ctx, returnVal);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static JSValue js_guiColorPicker(JSContext * ctx, JSValueConst this_val, int argc, JSValueConst * argv) {
|
||||
Rectangle* bounds_ptr = (Rectangle*)JS_GetOpaque2(ctx, argv[0], js_Rectangle_class_id);
|
||||
if(bounds_ptr == NULL) return JS_EXCEPTION;
|
||||
|
@ -10248,6 +10302,7 @@ static const JSCFunctionListEntry js_raylib_core_funcs[] = {
|
|||
JS_CFUNC_DEF("guiGrid",4,js_guiGrid),
|
||||
JS_CFUNC_DEF("guiListView",4,js_guiListView),
|
||||
JS_CFUNC_DEF("guiMessageBox",4,js_guiMessageBox),
|
||||
JS_CFUNC_DEF("guiTextInputBox",6,js_guiTextInputBox),
|
||||
JS_CFUNC_DEF("guiColorPicker",3,js_guiColorPicker),
|
||||
JS_CFUNC_DEF("guiColorPanel",3,js_guiColorPanel),
|
||||
JS_CFUNC_DEF("guiColorBarAlpha",3,js_guiColorBarAlpha),
|
||||
|
|
Loading…
Reference in New Issue