44
55namespace HostApi {
66
7- void register_hapi_enums (JSContext* ctx, JSModuleDef* m) {
8-
9- static auto export_object = []<typename ... Pairs>(JSContext* js_context, JSModuleDef* js_module_def, const char * obj_name, Pairs&&... pairs) {
7+ template <typename ... Pairs>
8+ static void export_object (JSContext* js_context, JSModuleDef* js_module_def, const char * obj_name, Pairs&&... pairs) {
109 const JSValue obj = JS_NewObject (js_context);
1110 Utils::set_object_properties (js_context, obj, std::forward<Pairs>(pairs)...);
1211 JS_SetModuleExport (js_context, js_module_def, obj_name, obj);
13- };
12+ }
13+
14+ void register_hapi_enums (JSContext* ctx, JSModuleDef* m) {
15+
16+ // --- Palette Object ---
17+ export_object (ctx, m, " Palette" ,
18+ std::pair{" LIGHTGRAY" , LIGHTGRAY },
19+ std::pair{" GRAY" , GRAY },
20+ std::pair{" DARKGRAY" , DARKGRAY },
21+ std::pair{" YELLOW" , YELLOW },
22+ std::pair{" GOLD" , GOLD },
23+ std::pair{" ORANGE" , ORANGE },
24+ std::pair{" PINK" , PINK },
25+ std::pair{" RED" , RED },
26+ std::pair{" MAROON" , MAROON },
27+ std::pair{" GREEN" , GREEN },
28+ std::pair{" LIME" , LIME },
29+ std::pair{" DARKGREEN" , DARKGREEN },
30+ std::pair{" SKYBLUE" , SKYBLUE },
31+ std::pair{" BLUE" , BLUE },
32+ std::pair{" DARKBLUE" , DARKBLUE },
33+ std::pair{" PURPLE" , PURPLE },
34+ std::pair{" VIOLET" , VIOLET },
35+ std::pair{" DARKPURPLE" , DARKPURPLE },
36+ std::pair{" BEIGE" , BEIGE },
37+ std::pair{" BROWN" , BROWN },
38+ std::pair{" DARKBROWN" , DARKBROWN },
39+ std::pair{" WHITE" , WHITE },
40+ std::pair{" BLACK" , BLACK },
41+ std::pair{" BLANK" , BLANK },
42+ std::pair{" MAGENTA" , MAGENTA },
43+ std::pair{" RAYWHITE" , RAYWHITE }
44+ );
45+
46+ // --- Info Object ---
47+ export_object (ctx, m, " Info" ,
48+ std::pair{" RAYLIB_VERSION" , RAYLIB_VERSION_STR },
49+ std::pair{" QUICKJS_VERSION" , QUICKJS_VERSION_STR }
50+ );
1451
15- constexpr static auto P = []<typename V>(const char * name, V&& val) {
16- return std::pair{name, std::forward<V>(val)};
17- };
52+ // --- ConfigFlags Object ---
53+ export_object (ctx, m, " ConfigFlags" ,
54+ std::pair{" FLAG_VSYNC_HINT" , FLAG_VSYNC_HINT },
55+ std::pair{" FLAG_FULLSCREEN_MODE" , FLAG_FULLSCREEN_MODE },
56+ std::pair{" FLAG_WINDOW_RESIZABLE" , FLAG_WINDOW_RESIZABLE },
57+ std::pair{" FLAG_WINDOW_UNDECORATED" , FLAG_WINDOW_UNDECORATED },
58+ std::pair{" FLAG_WINDOW_HIDDEN" , FLAG_WINDOW_HIDDEN },
59+ std::pair{" FLAG_WINDOW_MINIMIZED" , FLAG_WINDOW_MINIMIZED },
60+ std::pair{" FLAG_WINDOW_MAXIMIZED" , FLAG_WINDOW_MAXIMIZED },
61+ std::pair{" FLAG_WINDOW_UNFOCUSED" , FLAG_WINDOW_UNFOCUSED },
62+ std::pair{" FLAG_WINDOW_TOPMOST" , FLAG_WINDOW_TOPMOST },
63+ std::pair{" FLAG_WINDOW_ALWAYS_RUN" , FLAG_WINDOW_ALWAYS_RUN },
64+ std::pair{" FLAG_WINDOW_TRANSPARENT" , FLAG_WINDOW_TRANSPARENT },
65+ std::pair{" FLAG_WINDOW_HIGHDPI" , FLAG_WINDOW_HIGHDPI },
66+ std::pair{" FLAG_WINDOW_MOUSE_PASSTHROUGH" , FLAG_WINDOW_MOUSE_PASSTHROUGH },
67+ std::pair{" FLAG_BORDERLESS_WINDOWED_MODE" , FLAG_BORDERLESS_WINDOWED_MODE },
68+ std::pair{" FLAG_MSAA_4X_HINT" , FLAG_MSAA_4X_HINT },
69+ std::pair{" FLAG_INTERLACED_HINT" , FLAG_INTERLACED_HINT }
70+ );
1871
19- // --- Palette Object ---
20- export_object (ctx, m, " Palette" ,
21- P (" LIGHTGRAY" , LIGHTGRAY ),
22- P (" GRAY" , GRAY ),
23- P (" DARKGRAY" , DARKGRAY ),
24- P (" YELLOW" , YELLOW ),
25- P (" GOLD" , GOLD ),
26- P (" ORANGE" , ORANGE ),
27- P (" PINK" , PINK ),
28- P (" RED" , RED ),
29- P (" MAROON" , MAROON ),
30- P (" GREEN" , GREEN ),
31- P (" LIME" , LIME ),
32- P (" DARKGREEN" , DARKGREEN ),
33- P (" SKYBLUE" , SKYBLUE ),
34- P (" BLUE" , BLUE ),
35- P (" DARKBLUE" , DARKBLUE ),
36- P (" PURPLE" , PURPLE ),
37- P (" VIOLET" , VIOLET ),
38- P (" DARKPURPLE" , DARKPURPLE ),
39- P (" BEIGE" , BEIGE ),
40- P (" BROWN" , BROWN ),
41- P (" DARKBROWN" , DARKBROWN ),
42- P (" WHITE" , WHITE ),
43- P (" BLACK" , BLACK ),
44- P (" BLANK" , BLANK ),
45- P (" MAGENTA" , MAGENTA ),
46- P (" RAYWHITE" , RAYWHITE )
47- );
72+ export_object (ctx, m, " Keyboard" ,
73+ std::pair{" KEY_NULL" , KEY_NULL },
74+ std::pair{" KEY_APOSTROPHE" , KEY_APOSTROPHE },
75+ std::pair{" KEY_COMMA" , KEY_COMMA },
76+ std::pair{" KEY_MINUS" , KEY_MINUS },
77+ std::pair{" KEY_PERIOD" , KEY_PERIOD },
78+ std::pair{" KEY_SLASH" , KEY_SLASH },
79+ std::pair{" KEY_ZERO" , KEY_ZERO },
80+ std::pair{" KEY_ONE" , KEY_ONE },
81+ std::pair{" KEY_TWO" , KEY_TWO },
82+ std::pair{" KEY_THREE" , KEY_THREE },
83+ std::pair{" KEY_FOUR" , KEY_FOUR },
84+ std::pair{" KEY_FIVE" , KEY_FIVE },
85+ std::pair{" KEY_SIX" , KEY_SIX },
86+ std::pair{" KEY_SEVEN" , KEY_SEVEN },
87+ std::pair{" KEY_EIGHT" , KEY_EIGHT },
88+ std::pair{" KEY_NINE" , KEY_NINE },
89+ std::pair{" KEY_SEMICOLON" , KEY_SEMICOLON },
90+ std::pair{" KEY_EQUAL" , KEY_EQUAL },
91+ std::pair{" KEY_A" , KEY_A },
92+ std::pair{" KEY_B" , KEY_B },
93+ std::pair{" KEY_C" , KEY_C },
94+ std::pair{" KEY_D" , KEY_D },
95+ std::pair{" KEY_E" , KEY_E },
96+ std::pair{" KEY_F" , KEY_F },
97+ std::pair{" KEY_G" , KEY_G },
98+ std::pair{" KEY_H" , KEY_H },
99+ std::pair{" KEY_I" , KEY_I },
100+ std::pair{" KEY_J" , KEY_J },
101+ std::pair{" KEY_K" , KEY_K },
102+ std::pair{" KEY_L" , KEY_L },
103+ std::pair{" KEY_M" , KEY_M },
104+ std::pair{" KEY_N" , KEY_N },
105+ std::pair{" KEY_O" , KEY_O },
106+ std::pair{" KEY_P" , KEY_P },
107+ std::pair{" KEY_Q" , KEY_Q },
108+ std::pair{" KEY_R" , KEY_R },
109+ std::pair{" KEY_S" , KEY_S },
110+ std::pair{" KEY_T" , KEY_T },
111+ std::pair{" KEY_U" , KEY_U },
112+ std::pair{" KEY_V" , KEY_V },
113+ std::pair{" KEY_W" , KEY_W },
114+ std::pair{" KEY_X" , KEY_X },
115+ std::pair{" KEY_Y" , KEY_Y },
116+ std::pair{" KEY_Z" , KEY_Z },
117+ std::pair{" KEY_LEFT_BRACKET" , KEY_LEFT_BRACKET },
118+ std::pair{" KEY_BACKSLASH" , KEY_BACKSLASH },
119+ std::pair{" KEY_RIGHT_BRACKET" , KEY_RIGHT_BRACKET },
120+ std::pair{" KEY_GRAVE" , KEY_GRAVE },
121+ std::pair{" KEY_SPACE" , KEY_SPACE },
122+ std::pair{" KEY_ESCAPE" , KEY_ESCAPE },
123+ std::pair{" KEY_ENTER" , KEY_ENTER },
124+ std::pair{" KEY_TAB" , KEY_TAB },
125+ std::pair{" KEY_BACKSPACE" , KEY_BACKSPACE },
126+ std::pair{" KEY_INSERT" , KEY_INSERT },
127+ std::pair{" KEY_DELETE" , KEY_DELETE },
128+ std::pair{" KEY_RIGHT" , KEY_RIGHT },
129+ std::pair{" KEY_LEFT" , KEY_LEFT },
130+ std::pair{" KEY_DOWN" , KEY_DOWN },
131+ std::pair{" KEY_UP" , KEY_UP },
132+ std::pair{" KEY_PAGE_UP" , KEY_PAGE_UP },
133+ std::pair{" KEY_PAGE_DOWN" , KEY_PAGE_DOWN },
134+ std::pair{" KEY_HOME" , KEY_HOME },
135+ std::pair{" KEY_END" , KEY_END },
136+ std::pair{" KEY_CAPS_LOCK" , KEY_CAPS_LOCK },
137+ std::pair{" KEY_SCROLL_LOCK" , KEY_SCROLL_LOCK },
138+ std::pair{" KEY_NUM_LOCK" , KEY_NUM_LOCK },
139+ std::pair{" KEY_PRINT_SCREEN" , KEY_PRINT_SCREEN },
140+ std::pair{" KEY_PAUSE" , KEY_PAUSE },
141+ std::pair{" KEY_F1" , KEY_F1 },
142+ std::pair{" KEY_F2" , KEY_F2 },
143+ std::pair{" KEY_F3" , KEY_F3 },
144+ std::pair{" KEY_F4" , KEY_F4 },
145+ std::pair{" KEY_F5" , KEY_F5 },
146+ std::pair{" KEY_F6" , KEY_F6 },
147+ std::pair{" KEY_F7" , KEY_F7 },
148+ std::pair{" KEY_F8" , KEY_F8 },
149+ std::pair{" KEY_F9" , KEY_F9 },
150+ std::pair{" KEY_F10" , KEY_F10 },
151+ std::pair{" KEY_F11" , KEY_F11 },
152+ std::pair{" KEY_F12" , KEY_F12 },
153+ std::pair{" KEY_LEFT_SHIFT" , KEY_LEFT_SHIFT },
154+ std::pair{" KEY_LEFT_CONTROL" , KEY_LEFT_CONTROL },
155+ std::pair{" KEY_LEFT_ALT" , KEY_LEFT_ALT },
156+ std::pair{" KEY_LEFT_SUPER" , KEY_LEFT_SUPER },
157+ std::pair{" KEY_RIGHT_SHIFT" , KEY_RIGHT_SHIFT },
158+ std::pair{" KEY_RIGHT_CONTROL" , KEY_RIGHT_CONTROL },
159+ std::pair{" KEY_RIGHT_ALT" , KEY_RIGHT_ALT },
160+ std::pair{" KEY_RIGHT_SUPER" , KEY_RIGHT_SUPER },
161+ std::pair{" KEY_KB_MENU" , KEY_KB_MENU },
162+ std::pair{" KEY_KP_0" , KEY_KP_0 },
163+ std::pair{" KEY_KP_1" , KEY_KP_1 },
164+ std::pair{" KEY_KP_2" , KEY_KP_2 },
165+ std::pair{" KEY_KP_3" , KEY_KP_3 },
166+ std::pair{" KEY_KP_4" , KEY_KP_4 },
167+ std::pair{" KEY_KP_5" , KEY_KP_5 },
168+ std::pair{" KEY_KP_6" , KEY_KP_6 },
169+ std::pair{" KEY_KP_7" , KEY_KP_7 },
170+ std::pair{" KEY_KP_8" , KEY_KP_8 },
171+ std::pair{" KEY_KP_9" , KEY_KP_9 },
172+ std::pair{" KEY_KP_DECIMAL" , KEY_KP_DECIMAL },
173+ std::pair{" KEY_KP_DIVIDE" , KEY_KP_DIVIDE },
174+ std::pair{" KEY_KP_MULTIPLY" , KEY_KP_MULTIPLY },
175+ std::pair{" KEY_KP_SUBTRACT" , KEY_KP_SUBTRACT },
176+ std::pair{" KEY_KP_ADD" , KEY_KP_ADD },
177+ std::pair{" KEY_KP_ENTER" , KEY_KP_ENTER },
178+ std::pair{" KEY_KP_EQUAL" , KEY_KP_EQUAL },
179+ std::pair{" KEY_BACK" , KEY_BACK },
180+ std::pair{" KEY_MENU" , KEY_MENU },
181+ std::pair{" KEY_VOLUME_UP" , KEY_VOLUME_UP },
182+ std::pair{" KEY_VOLUME_DOWN" , KEY_VOLUME_DOWN }
183+ );
48184
49- // --- Info Object ---
50- export_object (ctx, m, " Info" ,
51- P (" RAYLIB_VERSION" , RAYLIB_VERSION_STR ),
52- P (" QUICKJS_VERSION" , QUICKJS_VERSION_STR )
53- );
185+ // Enum: MouseButton
186+ export_object (ctx, m, " MouseButton" ,
187+ std::pair{" MOUSE_BUTTON_LEFT" , MOUSE_BUTTON_LEFT },
188+ std::pair{" MOUSE_BUTTON_RIGHT" , MOUSE_BUTTON_RIGHT },
189+ std::pair{" MOUSE_BUTTON_MIDDLE" , MOUSE_BUTTON_MIDDLE },
190+ std::pair{" MOUSE_BUTTON_SIDE" , MOUSE_BUTTON_SIDE },
191+ std::pair{" MOUSE_BUTTON_EXTRA" , MOUSE_BUTTON_EXTRA },
192+ std::pair{" MOUSE_BUTTON_FORWARD" , MOUSE_BUTTON_FORWARD },
193+ std::pair{" MOUSE_BUTTON_BACK" , MOUSE_BUTTON_BACK }
194+ );
54195
55- // --- ConfigFlags Object ---
56- export_object (ctx, m, " ConfigFlags" ,
57- P (" FLAG_VSYNC_HINT" , FLAG_VSYNC_HINT ),
58- P (" FLAG_FULLSCREEN_MODE" , FLAG_FULLSCREEN_MODE ),
59- P (" FLAG_WINDOW_RESIZABLE" , FLAG_WINDOW_RESIZABLE ),
60- P (" FLAG_WINDOW_UNDECORATED" , FLAG_WINDOW_UNDECORATED ),
61- P (" FLAG_WINDOW_HIDDEN" , FLAG_WINDOW_HIDDEN ),
62- P (" FLAG_WINDOW_MINIMIZED" , FLAG_WINDOW_MINIMIZED ),
63- P (" FLAG_WINDOW_MAXIMIZED" , FLAG_WINDOW_MAXIMIZED ),
64- P (" FLAG_WINDOW_UNFOCUSED" , FLAG_WINDOW_UNFOCUSED ),
65- P (" FLAG_WINDOW_TOPMOST" , FLAG_WINDOW_TOPMOST ),
66- P (" FLAG_WINDOW_ALWAYS_RUN" , FLAG_WINDOW_ALWAYS_RUN ),
67- P (" FLAG_WINDOW_TRANSPARENT" , FLAG_WINDOW_TRANSPARENT ),
68- P (" FLAG_WINDOW_HIGHDPI" , FLAG_WINDOW_HIGHDPI ),
69- P (" FLAG_WINDOW_MOUSE_PASSTHROUGH" , FLAG_WINDOW_MOUSE_PASSTHROUGH ),
70- P (" FLAG_BORDERLESS_WINDOWED_MODE" , FLAG_BORDERLESS_WINDOWED_MODE ),
71- P (" FLAG_MSAA_4X_HINT" , FLAG_MSAA_4X_HINT ),
72- P (" FLAG_INTERLACED_HINT" , FLAG_INTERLACED_HINT )
73- );
196+ // Enum: MouseCursor
197+ export_object (ctx, m, " MouseCursor" ,
198+ std::pair{" MOUSE_CURSOR_DEFAULT" , MOUSE_CURSOR_DEFAULT },
199+ std::pair{" MOUSE_CURSOR_ARROW" , MOUSE_CURSOR_ARROW },
200+ std::pair{" MOUSE_CURSOR_IBEAM" , MOUSE_CURSOR_IBEAM },
201+ std::pair{" MOUSE_CURSOR_CROSSHAIR" , MOUSE_CURSOR_CROSSHAIR },
202+ std::pair{" MOUSE_CURSOR_POINTING_HAND" , MOUSE_CURSOR_POINTING_HAND },
203+ std::pair{" MOUSE_CURSOR_RESIZE_EW" , MOUSE_CURSOR_RESIZE_EW },
204+ std::pair{" MOUSE_CURSOR_RESIZE_NS" , MOUSE_CURSOR_RESIZE_NS },
205+ std::pair{" MOUSE_CURSOR_RESIZE_NWSE" , MOUSE_CURSOR_RESIZE_NWSE },
206+ std::pair{" MOUSE_CURSOR_RESIZE_NESW" , MOUSE_CURSOR_RESIZE_NESW },
207+ std::pair{" MOUSE_CURSOR_RESIZE_ALL" , MOUSE_CURSOR_RESIZE_ALL },
208+ std::pair{" MOUSE_CURSOR_NOT_ALLOWED" , MOUSE_CURSOR_NOT_ALLOWED }
209+ );
74210}
75211
76212} // namespace HostApi
0 commit comments