MCPcopy Create free account
hub / github.com/OpenRCT2/OpenRCT2 / FromJSValue

Method FromJSValue

src/openrct2-ui/scripting/CustomWindow.cpp:93–199  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

91 JSCallback OnHighlight;
92
93 static CustomWidgetDesc FromJSValue(JSContext* ctx, JSValue desc)
94 {
95 CustomWidgetDesc result;
96 result.Type = JSToStdString(ctx, desc, "type");
97 result.X = JSToInt(ctx, desc, "x");
98 result.Y = JSToInt(ctx, desc, "y");
99 result.Width = JSToInt(ctx, desc, "width");
100 result.Height = JSToInt(ctx, desc, "height");
101 result.IsDisabled = AsOrDefault(ctx, desc, "isDisabled", false);
102 result.IsVisible = AsOrDefault(ctx, desc, "isVisible", true);
103 result.Name = AsOrDefault(ctx, desc, "name", "");
104 result.Tooltip = AsOrDefault(ctx, desc, "tooltip", "");
105 if (result.Type == "button")
106 {
107 JSValue jsImage = JS_GetPropertyStr(ctx, desc, "image");
108 if (JS_IsString(jsImage) || JS_IsNumber(jsImage))
109 {
110 result.Image = ImageId(ImageFromJSValue(ctx, jsImage));
111 result.HasBorder = false;
112 }
113 else
114 {
115 result.Text = AsOrDefault(ctx, desc, "text", "");
116 result.HasBorder = true;
117 }
118 JS_FreeValue(ctx, jsImage);
119 result.IsPressed = AsOrDefault(ctx, desc, "isPressed", false);
120 result.OnClick = JSToCallback(ctx, desc, "onClick");
121 }
122 else if (result.Type == "checkbox")
123 {
124 result.Text = AsOrDefault(ctx, desc, "text", "");
125 result.IsChecked = AsOrDefault(ctx, desc, "isChecked", false);
126 result.OnChange = JSToCallback(ctx, desc, "onChange");
127 }
128 else if (result.Type == "colourpicker")
129 {
130 auto colour = AsOrDefault(ctx, desc, "colour", 0);
131 if (colour < kColourNumTotal)
132 {
133 result.Colour = static_cast<Drawing::Colour>(colour);
134 }
135 result.OnChange = JSToCallback(ctx, desc, "onChange");
136 }
137 else if (result.Type == "custom")
138 {
139 result.OnDraw = JSToCallback(ctx, desc, "onDraw");
140 }
141 else if (result.Type == "dropdown")
142 {
143 JSIterateArray(ctx, desc, "items", [&result](JSContext* ctx2, JSValue val) {
144 result.Items.push_back(JSToStdString(ctx2, val));
145 });
146 result.SelectedIndex = AsOrDefault(ctx, desc, "selectedIndex", 0);
147 result.OnChange = JSToCallback(ctx, desc, "onChange");
148 }
149 else if (result.Type == "groupbox")
150 {

Callers

nothing calls this directly

Calls 12

JSToStdStringFunction · 0.85
JSToIntFunction · 0.85
AsOrDefaultFunction · 0.85
ImageFromJSValueFunction · 0.85
JSToCallbackFunction · 0.85
JSIterateArrayFunction · 0.85
ListViewColumnVecFromJSFunction · 0.85
ListViewItemVecFromJSFunction · 0.85
RowColumnFromJSFunction · 0.85
ScrollbarTypeFromJSFunction · 0.85
ImageIdClass · 0.50
push_backMethod · 0.45

Tested by

no test coverage detected