]> gitweb.factorcode.org Git - factor.git/blob - extra/raylib/raylib-docs.factor
ac845d797a95fce3b5870a7c61b9a3d4b0a6fc2a
[factor.git] / extra / raylib / raylib-docs.factor
1 ! Copyright (C) 2023 CapitalEx.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: accessors alien.c-types arrays help.markup help.syntax
4 kernel make math math.parser quotations sequences strings urls ;
5 IN: raylib
6
7 <PRIVATE
8 : $enum-members ( element -- )
9     "Enum members" $heading
10     first lookup-c-type members>> [ first ] map $subsections ;
11
12 : $raylib-color ( element -- )
13     "Word description" $heading
14     { { "value" Color } } $values
15     "Represents the color (" print-element print-element ")" print-element
16     "\n\n" print-element
17     "For a visual guide, see the following:\n" print-element
18     { "https://raw.githubusercontent.com/raysan5/raylib/master/examples/shapes/shapes_colors_palette.png" }
19         $url ;
20
21 GENERIC: ($raylib-key) ( array -- )
22 PREDICATE: triple < array length>> 3 = ;
23
24 M: pair ($raylib-key)
25     "Represents the key " print-element
26     first2 [ % " (" % # ")" % ] "" make $snippet
27     "." print-element ;
28
29 M: triple ($raylib-key)
30     unclip-last swap ($raylib-key) " " [ print-element ] bi@ ;
31
32
33 : $raylib-key ( element -- )
34     "Enum value description" $heading
35     ($raylib-key)
36     { $see-also KeyboardKey } print-element ;
37
38 PRIVATE>
39
40 ! Raylib version info
41 HELP: RAYLIB_VERSION_MAJOR
42 { $values
43     value: fixnum
44 }
45 { $description
46     The current major version of raylib.
47 } ;
48
49 HELP: RAYLIB_VERSION_MINOR
50 { $values
51     value: fixnum
52 }
53 { $description
54     The current minor version of raylib.
55 } ;
56
57 HELP: RAYLIB_VERSION_PATCH
58 { $values
59     value: fixnum
60 }
61 { $description
62     The current patch version of raylib.
63 } ;
64
65 HELP: RAYLIB_VERSION
66 { $values
67     value: string
68 }
69 { $description
70     A string representing the current version of raylib.
71 } ;
72
73
74 ! Config flag enum
75 HELP: ConfigFlags
76 { $var-description
77     An enum representing the various configuration flags in Raylib.
78
79     { $enum-members ConfigFlags }
80 } ;
81
82 HELP: FLAG_VSYNC_HINT
83 { $class-description
84     Setting this flag will attempt to enable v-sync on the GPU.
85     { $see-also ConfigFlags }
86 } ;
87
88 HELP: FLAG_FULLSCREEN_MODE
89 { $class-description
90     Setting this flag will run the program in fullscreen
91     { $see-also ConfigFlags }
92 } ;
93
94 HELP: FLAG_WINDOW_RESIZABLE
95 { $class-description
96     Setting this flag allows for resizing the window.
97     { $see-also ConfigFlags }
98 } ;
99
100 HELP: FLAG_WINDOW_UNDECORATED
101 { $class-description
102     Setting this flag remove window decorations (frame and buttons).
103     { $see-also ConfigFlags }
104 } ;
105
106 HELP: FLAG_WINDOW_HIDDEN
107 { $class-description
108     Setting this flag will hide the window.
109     { $see-also ConfigFlags }
110 } ;
111
112 HELP: FLAG_WINDOW_MINIMIZED
113 { $class-description
114     Setting this flag will minize the window.
115     { $see-also ConfigFlags }
116 } ;
117
118 HELP: FLAG_WINDOW_MAXIMIZED
119 { $class-description
120     Setting this flag will maximize the window to the monitor size.
121     { $see-also ConfigFlags }
122 } ;
123
124 HELP: FLAG_WINDOW_UNFOCUSED
125 { $class-description
126     Setting this flag will set the window to be unfocused.
127     { $see-also ConfigFlags }
128 } ;
129
130 HELP: FLAG_WINDOW_TOPMOST
131 { $class-description
132     Setting this flag sets the window to always be on top.
133     { $see-also ConfigFlags }
134 } ;
135
136 HELP: FLAG_WINDOW_ALWAYS_RUN
137 { $class-description
138     Setting this flag allows the window to run while minimized.
139     { $see-also ConfigFlags }
140 } ;
141
142 HELP: FLAG_WINDOW_TRANSPARENT
143 { $class-description
144     Setting this flag allows for transparent framebuffer.
145     { $see-also ConfigFlags }
146 } ;
147
148 HELP: FLAG_WINDOW_HIGHDPI
149 { $class-description
150     Setting this flag will enable HighDPI support.
151     { $see-also ConfigFlags }
152 } ;
153
154 HELP: FLAG_MSAA_4X_HINT
155 { $class-description
156     Setting this flag will attempt to enable MSAA 4x.
157     { $see-also ConfigFlags }
158 } ;
159
160 HELP: FLAG_INTERLACED_HINT
161 { $class-description
162     Setting this flag will attempt to enable the interlaced video
163     format for V3D.
164     { $see-also ConfigFlags }
165 } ;
166
167
168 ! Trace log level enum
169 HELP: TraceLogLevel
170 { $var-description
171     Represents the various logging levels in Raylib.
172     Logs are displayed using the system's standard output.
173
174     { $enum-members TraceLogLevel }
175 } ;
176
177 HELP: LOG_ALL
178 { $class-description
179     Displays all logs.
180
181     { $see-also TraceLogLevel }
182 } ;
183
184 HELP: LOG_TRACE
185 { $class-description
186     Deplays trace logging. \ LOG_TRACE meant for internal usage.
187
188     { $see-also TraceLogLevel }
189 } ;
190
191 HELP: LOG_INFO
192 { $class-description
193     Displays debugging logs. { $snippet LOG_INFO } is used for internal
194     debugging and should be disabled on release builds.
195
196     { $see-also TraceLogLevel }
197 } ;
198
199 HELP: LOG_WARNING
200 { $class-description
201     Displays warning logs. Warnings are recoverable failures.
202
203     { $see-also TraceLogLevel }
204 } ;
205
206 HELP: LOG_ERROR
207 { $class-description
208     Displays error logs. Errors are unrecoverable failures.
209
210     { $see-also TraceLogLevel }
211 } ;
212
213 HELP: LOG_FATAL
214 { $class-description
215     Displays fatal logs. Fatal errors are used while aborting
216     the program.
217     { $see-also TraceLogLevel }
218 } ;
219
220 HELP: LOG_NONE
221 { $class-description
222     Disables raylib logging.
223
224     { $see-also TraceLogLevel }
225 } ;
226
227
228 ! Keyboard key enum
229 HELP: KeyboardKey
230 { $var-description
231     An enum representing the various key codes Raylib can produce.
232     These codes are based on the physical layout of a US QWERTY
233     keyboard layout. Use \ get-key-pressed to allow for defining
234     alternative layouts.
235
236     { $enum-members KeyboardKey }
237 } ;
238
239 HELP: KEY_NULL          { $raylib-key 0    "NULL" " Used for no key pressed." } ;
240 HELP: KEY_APOSTROPHE    { $raylib-key 39   "'"                                } ;
241 HELP: KEY_COMMA         { $raylib-key 44   ","                                } ;
242 HELP: KEY_MINUS         { $raylib-key 45   "-"                                } ;
243 HELP: KEY_PERIOD        { $raylib-key 46   "."                                } ;
244 HELP: KEY_SLASH         { $raylib-key 47   "/"                                } ;
245 HELP: KEY_ZERO          { $raylib-key 48   "0"                                } ;
246 HELP: KEY_ONE           { $raylib-key 49   "1"                                } ;
247 HELP: KEY_TWO           { $raylib-key 50   "2"                                } ;
248 HELP: KEY_THREE         { $raylib-key 51   "3"                                } ;
249 HELP: KEY_FOUR          { $raylib-key 52   "4"                                } ;
250 HELP: KEY_FIVE          { $raylib-key 53   "5"                                } ;
251 HELP: KEY_SIX           { $raylib-key 54   "6"                                } ;
252 HELP: KEY_SEVEN         { $raylib-key 55   "7"                                } ;
253 HELP: KEY_EIGHT         { $raylib-key 56   "8"                                } ;
254 HELP: KEY_NINE          { $raylib-key 57   "9"                                } ;
255 HELP: KEY_SEMICOLON     { $raylib-key 59   ";"                                } ;
256 HELP: KEY_EQUAL         { $raylib-key 61   "="                                } ;
257 HELP: KEY_A             { $raylib-key 65   "lowercase and uppercase A"        } ;
258 HELP: KEY_B             { $raylib-key 66   "lowercase and uppercase B"        } ;
259 HELP: KEY_C             { $raylib-key 67   "lowercase and uppercase C"        } ;
260 HELP: KEY_D             { $raylib-key 68   "lowercase and uppercase D"        } ;
261 HELP: KEY_E             { $raylib-key 69   "lowercase and uppercase E"        } ;
262 HELP: KEY_F             { $raylib-key 70   "lowercase and uppercase F"        } ;
263 HELP: KEY_G             { $raylib-key 71   "lowercase and uppercase G"        } ;
264 HELP: KEY_H             { $raylib-key 72   "lowercase and uppercase H"        } ;
265 HELP: KEY_I             { $raylib-key 73   "lowercase and uppercase I"        } ;
266 HELP: KEY_J             { $raylib-key 74   "lowercase and uppercase J"        } ;
267 HELP: KEY_K             { $raylib-key 75   "lowercase and uppercase K"        } ;
268 HELP: KEY_L             { $raylib-key 76   "lowercase and uppercase L"        } ;
269 HELP: KEY_M             { $raylib-key 77   "lowercase and uppercase M"        } ;
270 HELP: KEY_N             { $raylib-key 78   "lowercase and uppercase N"        } ;
271 HELP: KEY_O             { $raylib-key 79   "lowercase and uppercase O"        } ;
272 HELP: KEY_P             { $raylib-key 80   "lowercase and uppercase P"        } ;
273 HELP: KEY_Q             { $raylib-key 81   "lowercase and uppercase Q"        } ;
274 HELP: KEY_R             { $raylib-key 82   "lowercase and uppercase R"        } ;
275 HELP: KEY_S             { $raylib-key 83   "lowercase and uppercase S"        } ;
276 HELP: KEY_T             { $raylib-key 84   "lowercase and uppercase T"        } ;
277 HELP: KEY_U             { $raylib-key 85   "lowercase and uppercase U"        } ;
278 HELP: KEY_V             { $raylib-key 86   "lowercase and uppercase V"        } ;
279 HELP: KEY_W             { $raylib-key 87   "lowercase and uppercase W"        } ;
280 HELP: KEY_X             { $raylib-key 88   "lowercase and uppercase X"        } ;
281 HELP: KEY_Y             { $raylib-key 89   "lowercase and uppercase Y"        } ;
282 HELP: KEY_Z             { $raylib-key 90   "lowercase and uppercase Z"        } ;
283 HELP: KEY_LEFT_BRACKET  { $raylib-key 91   "["                                } ;
284 HELP: KEY_BACKSLASH     { $raylib-key 92   "\\"                               } ;
285 HELP: KEY_RIGHT_BRACKET { $raylib-key 93   "]"                                } ;
286 HELP: KEY_GRAVE         { $raylib-key 96   "`"                                } ;
287 HELP: KEY_SPACE         { $raylib-key 32   "Space"                            } ;
288 HELP: KEY_ESCAPE        { $raylib-key 256  "Esc"                              } ;
289 HELP: KEY_ENTER         { $raylib-key 257  "Enter"                            } ;
290 HELP: KEY_TAB           { $raylib-key 258  "Tab"                              } ;
291 HELP: KEY_BACKSPACE     { $raylib-key 259  "Backspace"                        } ;
292 HELP: KEY_INSERT        { $raylib-key 260  "Ins"                              } ;
293 HELP: KEY_DELETE        { $raylib-key 261  "Del"                              } ;
294 HELP: KEY_RIGHT         { $raylib-key 262  "Cursor right"                     } ;
295 HELP: KEY_LEFT          { $raylib-key 263  "Cursor left"                      } ;
296 HELP: KEY_DOWN          { $raylib-key 264  "Cursor down"                      } ;
297 HELP: KEY_UP            { $raylib-key 265  "Cursor up"                        } ;
298 HELP: KEY_PAGE_UP       { $raylib-key 266  "Page up"                          } ;
299 HELP: KEY_PAGE_DOWN     { $raylib-key 267  "Page down"                        } ;
300 HELP: KEY_HOME          { $raylib-key 268  "Home"                             } ;
301 HELP: KEY_END           { $raylib-key 269  "End"                              } ;
302 HELP: KEY_CAPS_LOCK     { $raylib-key 280  "Caps lock"                        } ;
303 HELP: KEY_SCROLL_LOCK   { $raylib-key 281  "Scroll down"                      } ;
304 HELP: KEY_NUM_LOCK      { $raylib-key 282  "Num lock"                         } ;
305 HELP: KEY_PRINT_SCREEN  { $raylib-key 283  "Print screen"                     } ;
306 HELP: KEY_PAUSE         { $raylib-key 284  "Pause"                            } ;
307 HELP: KEY_F1            { $raylib-key 290  "F1"                               } ;
308 HELP: KEY_F2            { $raylib-key 291  "F2"                               } ;
309 HELP: KEY_F3            { $raylib-key 292  "F3"                               } ;
310 HELP: KEY_F4            { $raylib-key 293  "F4"                               } ;
311 HELP: KEY_F5            { $raylib-key 294  "F5"                               } ;
312 HELP: KEY_F6            { $raylib-key 295  "F6"                               } ;
313 HELP: KEY_F7            { $raylib-key 296  "F7"                               } ;
314 HELP: KEY_F8            { $raylib-key 297  "F8"                               } ;
315 HELP: KEY_F9            { $raylib-key 298  "F9"                               } ;
316 HELP: KEY_F10           { $raylib-key 299  "F10"                              } ;
317 HELP: KEY_F11           { $raylib-key 300  "F11"                              } ;
318 HELP: KEY_F12           { $raylib-key 301  "F12"                              } ;
319 HELP: KEY_LEFT_SHIFT    { $raylib-key 340  "Shift left"                       } ;
320 HELP: KEY_LEFT_CONTROL  { $raylib-key 341  "Control left"                     } ;
321 HELP: KEY_LEFT_ALT      { $raylib-key 342  "Alt left"                         } ;
322 HELP: KEY_LEFT_SUPER    { $raylib-key 343  "Super left"                       } ;
323 HELP: KEY_RIGHT_SHIFT   { $raylib-key 344  "Shift right"                      } ;
324 HELP: KEY_RIGHT_CONTROL { $raylib-key 345  "Control right"                    } ;
325 HELP: KEY_RIGHT_ALT     { $raylib-key 346  "Alt right"                        } ;
326 HELP: KEY_RIGHT_SUPER   { $raylib-key 347  "Super right"                      } ;
327 HELP: KEY_KB_MENU       { $raylib-key 348  "KB menu"                          } ;
328 HELP: KEY_KP_0          { $raylib-key 320  "Keypad 0"                         } ;
329 HELP: KEY_KP_1          { $raylib-key 321  "Keypad 1"                         } ;
330 HELP: KEY_KP_2          { $raylib-key 322  "Keypad 2"                         } ;
331 HELP: KEY_KP_3          { $raylib-key 323  "Keypad 3"                         } ;
332 HELP: KEY_KP_4          { $raylib-key 324  "Keypad 4"                         } ;
333 HELP: KEY_KP_5          { $raylib-key 325  "Keypad 5"                         } ;
334 HELP: KEY_KP_6          { $raylib-key 326  "Keypad 6"                         } ;
335 HELP: KEY_KP_7          { $raylib-key 327  "Keypad 7"                         } ;
336 HELP: KEY_KP_8          { $raylib-key 328  "Keypad 8"                         } ;
337 HELP: KEY_KP_9          { $raylib-key 329  "Keypad 9"                         } ;
338 HELP: KEY_KP_DECIMAL    { $raylib-key 330  "Keypad ."                         } ;
339 HELP: KEY_KP_DIVIDE     { $raylib-key 331  "Keypad /"                         } ;
340 HELP: KEY_KP_MULTIPLY   { $raylib-key 332  "Keypad *"                         } ;
341 HELP: KEY_KP_SUBTRACT   { $raylib-key 333  "Keypad -"                         } ;
342 HELP: KEY_KP_ADD        { $raylib-key 334  "Keypad +"                         } ;
343 HELP: KEY_KP_ENTER      { $raylib-key 335  "Keypad Enter"                     } ;
344 HELP: KEY_KP_EQUAL      { $raylib-key 336  "Keypad ="                         } ;
345 HELP: KEY_BACK          { $raylib-key 4    "Android back button"              } ;
346 HELP: KEY_MENU          { $raylib-key 82   "Android menu button"              } ;
347 HELP: KEY_VOLUME_UP     { $raylib-key 24   "Android volume up button"         } ;
348 HELP: KEY_VOLUME_DOWN   { $raylib-key 25   "Android volume down button"       } ;
349
350
351 ! Mouse button enum
352 HELP: MouseButton
353 { $var-description
354     An enum representing the various key mouse buttons Ralyb has support for.
355
356     { $enum-members MouseButton }
357 } ;
358
359 HELP: MOUSE_BUTTON_LEFT
360 { $class-description
361     Represents the left mouse button.
362
363     { $see-also MouseButton }
364 } ;
365
366 HELP: MOUSE_BUTTON_RIGHT
367 { $class-description
368     Represents the right mouse button.
369
370     { $see-also MouseButton }
371 } ;
372
373 HELP: MOUSE_BUTTON_MIDDLE
374 { $class-description
375     Represents the middle mouse button. On most mice, this is clicking
376     the scroll wheel.
377
378     { $see-also MouseButton }
379 } ;
380
381 HELP: MOUSE_BUTTON_SIDE
382 { $class-description
383     Represents a side button on mice that have additional buttons.
384
385     { $see-also MouseButton }
386 } ;
387
388 HELP: MOUSE_BUTTON_EXTRA
389 { $class-description
390     Represents an extra button on mice that have additional buttons.
391
392     { $see-also MouseButton }
393 } ;
394
395 HELP: MOUSE_BUTTON_FORWARD
396 { $class-description
397     Represents the " \"forward\" " button on mice that have additional buttons.
398
399     { $see-also MouseButton }
400 } ;
401
402 HELP: MOUSE_BUTTON_BACK
403 { $class-description
404     Represents the " \"back\" " button on mice that have additional buttons.
405
406     { $see-also MouseButton }
407 } ;
408
409
410 ! Mouse cursor enum
411 HELP: MouseCursor
412 { $var-description
413     An enum representing the various states the cursor can be in.
414     This is used to change the cursor icon " / " shape.
415
416
417     { $enum-members MouseCursor }
418 } ;
419
420 HELP: MOUSE_CURSOR_DEFAULT
421 { $var-description
422     Default pointer shape.
423
424     { $see-also MouseCursor }
425 } ;
426
427 HELP: MOUSE_CURSOR_ARROW
428 { $var-description
429     Arrow shape.
430
431     { $see-also MouseCursor }
432 } ;
433
434 HELP: MOUSE_CURSOR_IBEAM
435 { $var-description
436     Text writing cursor shape.
437
438     { $see-also MouseCursor }
439 } ;
440
441 HELP: MOUSE_CURSOR_CROSSHAIR
442 { $var-description
443     Cross shape.
444
445     { $see-also MouseCursor }
446 } ;
447
448 HELP: MOUSE_CURSOR_POINTING_HAND
449 { $var-description
450     Pointing hand cursor.
451
452     { $see-also MouseCursor }
453 } ;
454
455 HELP: MOUSE_CURSOR_RESIZE_EW
456 { $var-description
457     Horizontal resize/move arrow shape.
458
459     { $see-also MouseCursor }
460 } ;
461
462 HELP: MOUSE_CURSOR_RESIZE_NS
463 { $var-description
464     Vertical resize/move arrow shape.
465
466     { $see-also MouseCursor }
467 } ;
468
469 HELP: MOUSE_CURSOR_RESIZE_NWSE
470 { $var-description
471     Top-left to bottom-right diagonal resize/move arrow shape.
472
473     { $see-also MouseCursor }
474 } ;
475
476 HELP: MOUSE_CURSOR_RESIZE_NESW
477 { $var-description
478     The top-right to bottom-left diagonal resize/move arrow shape.
479
480     { $see-also MouseCursor }
481 } ;
482
483 HELP: MOUSE_CURSOR_RESIZE_ALL
484 { $var-description
485     The omni-directional resize/move cursor shape.
486
487     { $see-also MouseCursor }
488 } ;
489
490 HELP: MOUSE_CURSOR_NOT_ALLOWED
491 { $var-description
492     The operation-not-allowed shape.
493
494     { $see-also MouseCursor }
495 } ;
496
497
498 ! Gamepad button enum
499 HELP: GamepadButton
500 { $var-description
501     This enum represents the various buttons a gamepad might have.
502
503     It's important to keep in mind different controllers may have
504     different button orderings. Each enum member notes the
505     differences in their respective documentation sections.
506
507     { $see-also GamepadAxis }
508
509     { $enum-members GamepadButton }
510 } ;
511
512 HELP: GAMEPAD_BUTTON_UNKNOWN
513 { $class-description
514      Unknown button, just for error checking
515
516      { $see-also GamepadButton }
517 } ;
518
519 HELP: GAMEPAD_BUTTON_LEFT_FACE_UP
520 { $class-description
521      Gamepad left DPAD up button
522
523      { $see-also GamepadButton }
524 } ;
525
526 HELP: GAMEPAD_BUTTON_LEFT_FACE_RIGHT
527 { $class-description
528      Gamepad left DPAD right button
529
530      { $see-also GamepadButton }
531 } ;
532
533 HELP: GAMEPAD_BUTTON_LEFT_FACE_DOWN
534 { $class-description
535      Gamepad left DPAD down button
536
537      { $see-also GamepadButton }
538 } ;
539
540 HELP: GAMEPAD_BUTTON_LEFT_FACE_LEFT
541 { $class-description
542      Gamepad left DPAD left button
543
544      { $see-also GamepadButton }
545 } ;
546
547 HELP: GAMEPAD_BUTTON_RIGHT_FACE_UP
548 { $class-description
549      Gamepad right button up (i.e. PS3: Triangle, Xbox: Y)
550
551      { $see-also GamepadButton }
552 } ;
553
554 HELP: GAMEPAD_BUTTON_RIGHT_FACE_RIGHT
555 { $class-description
556      Gamepad right button right (i.e. PS3: Square, Xbox: X)
557
558      { $see-also GamepadButton }
559 } ;
560
561 HELP: GAMEPAD_BUTTON_RIGHT_FACE_DOWN
562 { $class-description
563      Gamepad right button down (i.e. PS3: Cross, Xbox: A)
564
565      { $see-also GamepadButton }
566 } ;
567
568 HELP: GAMEPAD_BUTTON_RIGHT_FACE_LEFT
569 { $class-description
570      Gamepad right button left (i.e. PS3: Circle, Xbox: B)
571
572      { $see-also GamepadButton }
573 } ;
574
575 HELP: GAMEPAD_BUTTON_LEFT_TRIGGER_1
576 { $class-description
577      Gamepad top/back trigger left (first), it could be a trailing button
578
579      { $see-also GamepadButton }
580 } ;
581
582 HELP: GAMEPAD_BUTTON_LEFT_TRIGGER_2
583 { $class-description
584      Gamepad top/back trigger left (second), it could be a trailing button
585
586      { $see-also GamepadButton }
587 } ;
588
589 HELP: GAMEPAD_BUTTON_RIGHT_TRIGGER_1
590 { $class-description
591      Gamepad top/back trigger right (one), it could be a trailing button
592
593      { $see-also GamepadButton }
594 } ;
595
596 HELP: GAMEPAD_BUTTON_RIGHT_TRIGGER_2
597 { $class-description
598      Gamepad top/back trigger right (second), it could be a trailing button
599
600      { $see-also GamepadButton }
601 } ;
602
603 HELP: GAMEPAD_BUTTON_MIDDLE_LEFT
604 { $class-description
605      Gamepad center buttons, left one (i.e. PS3: Select)
606
607      { $see-also GamepadButton }
608 } ;
609
610 HELP: GAMEPAD_BUTTON_MIDDLE
611 { $class-description
612      Gamepad center buttons, middle one (i.e. PS3: PS, Xbox: XBOX)
613
614      { $see-also GamepadButton }
615 } ;
616
617 HELP: GAMEPAD_BUTTON_MIDDLE_RIGHT
618 { $class-description
619      Gamepad center buttons, right one (i.e. PS3: Start)
620
621      { $see-also GamepadButton }
622 } ;
623
624 HELP: GAMEPAD_BUTTON_LEFT_THUMB
625 { $class-description
626      Gamepad joystick pressed button left
627
628      { $see-also GamepadButton }
629 } ;
630
631 HELP: GAMEPAD_BUTTON_RIGHT_THUMB
632 { $class-description
633      Gamepad joystick pressed button right
634
635      { $see-also GamepadButton }
636 } ;
637
638
639 ! Gamepad axis enum
640 HELP: GamepadAxis
641 { $var-description
642     Contains a set of flags for each axis a gamepad may have. Raylib
643     supports controllers with two triggers and two joysticks.
644
645     { $enum-members GamepadAxis }
646 } ;
647
648 HELP: GAMEPAD_AXIS_LEFT_X
649 { $class-description
650     Represents the left gamepad stick and its tilt on the X axis (left/right).
651     { $see-also GamepadAxis }
652 } ;
653
654 HELP: GAMEPAD_AXIS_LEFT_Y
655 { $class-description
656     Represents the left gamepad stick and its tilt on the Y axis (up/down).
657     { $see-also GamepadAxis }
658 } ;
659
660 HELP: GAMEPAD_AXIS_RIGHT_X
661 { $class-description
662     Represents the right gamepad stick and its tilt on the X axis (left/right).
663     { $see-also GamepadAxis }
664 } ;
665
666 HELP: GAMEPAD_AXIS_RIGHT_Y
667 { $class-description
668     Represents the right gamepad stick and its tilt on the Y axis (up/down).
669     { $see-also GamepadAxis }
670 } ;
671
672 HELP: GAMEPAD_AXIS_LEFT_TRIGGER
673 { $class-description
674     Represents the left gamepad trigger. Trigger has the value
675     range [1..-1].
676     { $see-also GamepadAxis }
677 } ;
678
679 HELP: GAMEPAD_AXIS_RIGHT_TRIGGER
680 { $class-description
681     Represents the left gamepad trigger. Trigger has the value
682     range [1..-1].
683     { $see-also GamepadAxis }
684 } ;
685
686
687 ! Material map index enum
688 HELP: MaterialMapIndex
689 { $var-description
690     Provides convient names for each index into a texture's various
691     material maps.
692
693     { $enum-members MaterialMapIndex }
694 } ;
695 HELP: MATERIAL_MAP_ALBEDO
696 { $class-description
697     Represents the index for a texture's albedo material (same as: \ MATERIAL_MAP_DIFFUSE ).
698
699     { $see-also MaterialMapIndex }
700 } ;
701
702 HELP: MATERIAL_MAP_METALNESS
703 { $class-description
704     Represents the index for a texture's metalness material (same as: \ MATERIAL_MAP_SPECULAR ).
705
706     { $see-also MaterialMapIndex }
707 } ;
708
709 HELP: MATERIAL_MAP_NORMAL
710 { $class-description
711     Represents the index for a texture's normal material.
712
713     { $see-also MaterialMapIndex }
714 } ;
715
716 HELP: MATERIAL_MAP_ROUGHNESS
717 { $class-description
718     Represents the index for a texture's roughness material.
719
720     { $see-also MaterialMapIndex }
721 } ;
722
723 HELP: MATERIAL_MAP_OCCLUSION
724 { $class-description
725     Represents the index for a texture's ambient occlusion material.
726
727     { $see-also MaterialMapIndex }
728 } ;
729
730 HELP: MATERIAL_MAP_EMISSION
731 { $class-description
732     Represents the index for a texture's emission material.
733
734     { $see-also MaterialMapIndex }
735 } ;
736
737 HELP: MATERIAL_MAP_HEIGHT
738 { $class-description
739     Represents the index for a texture's heightmap material.
740
741     { $see-also MaterialMapIndex }
742 } ;
743
744 HELP: MATERIAL_MAP_CUBEMAP
745 { $class-description
746     Represents the index for a texture's Cubemap material (NOTE: Uses GL_TEXTURE_CUBE_MAP).
747
748     { $see-also MaterialMapIndex }
749 } ;
750
751 HELP: MATERIAL_MAP_IRRADIANCE
752 { $class-description
753     Represents the index for a texture's irradiance material (NOTE: Uses GL_TEXTURE_CUBE_MAP).
754
755     { $see-also MaterialMapIndex }
756 } ;
757
758 HELP: MATERIAL_MAP_PREFILTER
759 { $class-description
760     Represents the index for a texture's prefilter material (NOTE: Uses GL_TEXTURE_CUBE_MAP).
761
762     { $see-also MaterialMapIndex }
763 } ;
764
765 HELP: MATERIAL_MAP_BRDF
766 { $class-description
767     Represents the index for a texture's brdf material.
768
769     { $see-also MaterialMapIndex }
770 } ;
771
772 ! Shader Location Index
773 ! TODO: make a better description of these. They are kinda bad...
774 HELP: ShaderLocationIndex
775 { $var-description
776     Shader location index enum.
777
778     { $enum-members ShaderLocationIndex }
779 } ;
780
781 HELP: SHADER_LOC_VERTEX_POSITION
782 { $class-description
783     Shader location: vertex attribute: position
784
785     { $see-also ShaderLocationIndex }
786 } ;
787
788 HELP: SHADER_LOC_VERTEX_TEXCOORD01
789 { $class-description
790     Shader location: vertex attribute: texcoord01
791
792     { $see-also ShaderLocationIndex }
793 } ;
794
795 HELP: SHADER_LOC_VERTEX_TEXCOORD02
796 { $class-description
797     Shader location: vertex attribute: texcoord02
798
799     { $see-also ShaderLocationIndex }
800 } ;
801
802 HELP: SHADER_LOC_VERTEX_NORMAL
803 { $class-description
804     Shader location: vertex attribute: normal
805
806     { $see-also ShaderLocationIndex }
807 } ;
808
809 HELP: SHADER_LOC_VERTEX_TANGENT
810 { $class-description
811     Shader location: vertex attribute: tangent
812
813     { $see-also ShaderLocationIndex }
814 } ;
815
816 HELP: SHADER_LOC_VERTEX_COLOR
817 { $class-description
818     Shader location: vertex attribute: color
819
820     { $see-also ShaderLocationIndex }
821 } ;
822
823 HELP: SHADER_LOC_MATRIX_MVP
824 { $class-description
825     Shader location: matrix uniform: model-view-projection
826
827     { $see-also ShaderLocationIndex }
828 } ;
829
830 HELP: SHADER_LOC_MATRIX_VIEW
831 { $class-description
832     Shader location: matrix uniform: view (camera transform)
833
834     { $see-also ShaderLocationIndex }
835 } ;
836
837 HELP: SHADER_LOC_MATRIX_PROJECTION
838 { $class-description
839     Shader location: matrix uniform: projection
840
841     { $see-also ShaderLocationIndex }
842 } ;
843
844 HELP: SHADER_LOC_MATRIX_MODEL
845 { $class-description
846     Shader location: matrix uniform: model (transform)
847
848     { $see-also ShaderLocationIndex }
849 } ;
850
851 HELP: SHADER_LOC_MATRIX_NORMAL
852 { $class-description
853     Shader location: matrix uniform: normal
854
855     { $see-also ShaderLocationIndex }
856 } ;
857
858 HELP: SHADER_LOC_VECTOR_VIEW
859 { $class-description
860     Shader location: vector uniform: view
861
862     { $see-also ShaderLocationIndex }
863 } ;
864
865 HELP: SHADER_LOC_COLOR_DIFFUSE
866 { $class-description
867     Shader location: vector uniform: diffuse color
868
869     { $see-also ShaderLocationIndex }
870 } ;
871
872 HELP: SHADER_LOC_COLOR_SPECULAR
873 { $class-description
874     Shader location: vector uniform: specular color
875
876     { $see-also ShaderLocationIndex }
877 } ;
878
879 HELP: SHADER_LOC_COLOR_AMBIENT
880 { $class-description
881     Shader location: vector uniform: ambient color
882
883     { $see-also ShaderLocationIndex }
884 } ;
885
886 HELP: SHADER_LOC_MAP_ALBEDO
887 { $class-description
888     Shader location: sampler2d texture: albedo (same as: SHADER_LOC_MAP_DIFFUSE)
889
890     { $see-also ShaderLocationIndex }
891 } ;
892
893 HELP: SHADER_LOC_MAP_METALNESS
894 { $class-description
895     Shader location: sampler2d texture: metalness (same as: SHADER_LOC_MAP_SPECULAR)
896
897     { $see-also ShaderLocationIndex }
898 } ;
899
900 HELP: SHADER_LOC_MAP_NORMAL
901 { $class-description
902     Shader location: sampler2d texture: normal
903
904     { $see-also ShaderLocationIndex }
905 } ;
906
907 HELP: SHADER_LOC_MAP_ROUGHNESS
908 { $class-description
909     Shader location: sampler2d texture: roughness
910
911     { $see-also ShaderLocationIndex }
912 } ;
913
914 HELP: SHADER_LOC_MAP_OCCLUSION
915 { $class-description
916     Shader location: sampler2d texture: occlusion
917
918     { $see-also ShaderLocationIndex }
919 } ;
920
921 HELP: SHADER_LOC_MAP_EMISSION
922 { $class-description
923     Shader location: sampler2d texture: emission
924
925     { $see-also ShaderLocationIndex }
926 } ;
927
928 HELP: SHADER_LOC_MAP_HEIGHT
929 { $class-description
930     Shader location: sampler2d texture: height
931
932     { $see-also ShaderLocationIndex }
933 } ;
934
935 HELP: SHADER_LOC_MAP_CUBEMAP
936 { $class-description
937     Shader location: samplerCube texture: cubemap
938
939     { $see-also ShaderLocationIndex }
940 } ;
941
942 HELP: SHADER_LOC_MAP_IRRADIANCE
943 { $class-description
944     Shader location: samplerCube texture: irradiance
945
946     { $see-also ShaderLocationIndex }
947 } ;
948
949 HELP: SHADER_LOC_MAP_PREFILTER
950 { $class-description
951     Shader location: samplerCube texture: prefilter
952
953     { $see-also ShaderLocationIndex }
954 } ;
955
956 HELP: SHADER_LOC_MAP_BRDF
957 { $class-description
958     Shader location: sampler2d texture: brdf
959
960     { $see-also ShaderLocationIndex }
961 } ;
962
963
964
965 ! Shader uniform data type
966 ! TODO: Better descriptions for these...
967 HELP: ShaderUniformDataType
968 { $var-description
969     Represents the various types a uniform shader can be.
970
971     { $enum-members MaterialMapIndex }
972 } ;
973
974 HELP: SHADER_UNIFORM_FLOAT
975 { $class-description
976     Shader uniform type: float
977     { $see-also ShaderUniformDataType }
978 } ;
979
980 HELP: SHADER_UNIFORM_VEC2
981 { $class-description
982     Shader uniform type: vec2 (2 float)
983     { $see-also ShaderUniformDataType }
984 } ;
985
986 HELP: SHADER_UNIFORM_VEC3
987 { $class-description
988     Shader uniform type: vec3 (3 float)
989     { $see-also ShaderUniformDataType }
990 } ;
991
992 HELP: SHADER_UNIFORM_VEC4
993 { $class-description
994     Shader uniform type: vec4 (4 float)
995     { $see-also ShaderUniformDataType }
996 } ;
997
998 HELP: SHADER_UNIFORM_INT
999 { $class-description
1000     Shader uniform type: int
1001     { $see-also ShaderUniformDataType }
1002 } ;
1003
1004 HELP: SHADER_UNIFORM_IVEC2
1005 { $class-description
1006     Shader uniform type: ivec2 (2 int)
1007     { $see-also ShaderUniformDataType }
1008 } ;
1009
1010 HELP: SHADER_UNIFORM_IVEC3
1011 { $class-description
1012     Shader uniform type: ivec3 (3 int)
1013     { $see-also ShaderUniformDataType }
1014 } ;
1015
1016 HELP: SHADER_UNIFORM_IVEC4
1017 { $class-description
1018     Shader uniform type: ivec4 (4 int)
1019     { $see-also ShaderUniformDataType }
1020 } ;
1021
1022 HELP: SHADER_UNIFORM_SAMPLER2D
1023 { $class-description
1024     Shader uniform type: sampler2d
1025     { $see-also ShaderUniformDataType }
1026 } ;
1027
1028
1029 ! Shader attribute data type enum
1030 HELP: ShaderAttributeDataType
1031 { $var-description
1032     Shader attribute data types
1033
1034     { $enum-members ShaderAttributeDataType }
1035 } ;
1036
1037 HELP: SHADER_ATTRIB_FLOAT
1038 { $class-description
1039     Shader attribute type: float
1040     
1041     { $see-also ShaderAttributeDataType }
1042 } ;
1043
1044 HELP: SHADER_ATTRIB_VEC2
1045 { $class-description
1046     Shader attribute type: vec2 (2 float)
1047     
1048     { $see-also ShaderAttributeDataType }
1049 } ;
1050
1051 HELP: SHADER_ATTRIB_VEC3
1052 { $class-description
1053     Shader attribute type: vec3 (3 float)
1054     
1055     { $see-also ShaderAttributeDataType }
1056 } ;
1057
1058 HELP: SHADER_ATTRIB_VEC4
1059 { $class-description
1060     Shader attribute type: vec4 (4 float)
1061     
1062     { $see-also ShaderAttributeDataType }
1063 } ;
1064
1065
1066 ! Pixel format enum.
1067 HELP: PixelFormat
1068 { $var-description
1069     The various pixel formats that can be used by Raylib.
1070     This enum's values start from { $snippet 1 } .
1071
1072     { $warning Support depends on OpenGL version and platform. }
1073     { $enum-members PixelFormat }
1074 } ;
1075
1076 HELP: PIXELFORMAT_UNCOMPRESSED_GRAYSCALE
1077 { $class-description
1078     8 bit per pixel (no alpha).
1079
1080     { $see-also PixelFormat }
1081 } ;
1082
1083 HELP: PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA
1084 { $class-description
1085     8*2 bits per pixel (2 channels).
1086
1087     { $see-also PixelFormat }
1088 } ;
1089
1090 HELP: PIXELFORMAT_UNCOMPRESSED_R5G6B5
1091 { $class-description
1092     16 bits per pixel.
1093
1094     { $see-also PixelFormat }
1095 } ;
1096
1097 HELP: PIXELFORMAT_UNCOMPRESSED_R8G8B8
1098 { $class-description
1099     24 bits per pixel.
1100
1101     { $see-also PixelFormat }
1102 } ;
1103
1104 HELP: PIXELFORMAT_UNCOMPRESSED_R5G5B5A1
1105 { $class-description
1106     16 bits per pixel (1 bit alpha).
1107
1108     { $see-also PixelFormat }
1109 } ;
1110
1111 HELP: PIXELFORMAT_UNCOMPRESSED_R4G4B4A4
1112 { $class-description
1113     16 bits per pixel (4 bit alpha).
1114
1115     { $see-also PixelFormat }
1116 } ;
1117
1118 HELP: PIXELFORMAT_UNCOMPRESSED_R8G8B8A8
1119 { $class-description
1120     32 bits per pixel.
1121
1122     { $see-also PixelFormat }
1123 } ;
1124
1125 HELP: PIXELFORMAT_UNCOMPRESSED_R32
1126 { $class-description
1127     32 bits per pixel (1 channel - float).
1128
1129     { $see-also PixelFormat }
1130 } ;
1131
1132 HELP: PIXELFORMAT_UNCOMPRESSED_R32G32B32
1133 { $class-description
1134     32*3 bits per pixel (3 channels - float).
1135
1136     { $see-also PixelFormat }
1137 } ;
1138
1139 HELP: PIXELFORMAT_UNCOMPRESSED_R32G32B32A32
1140 { $class-description
1141     32*4 bits per pixel (4 channels - float).
1142
1143     { $see-also PixelFormat }
1144 } ;
1145
1146 HELP: PIXELFORMAT_COMPRESSED_DXT1_RGB
1147 { $class-description
1148     4 bits per pixel (no alpha).
1149
1150     { $see-also PixelFormat }
1151 } ;
1152
1153 HELP: PIXELFORMAT_COMPRESSED_DXT1_RGBA
1154 { $class-description
1155     4 bits per pixel (1 bit alpha).
1156
1157     { $see-also PixelFormat }
1158 } ;
1159
1160 HELP: PIXELFORMAT_COMPRESSED_DXT3_RGBA
1161 { $class-description
1162     8 bits per pixel.
1163
1164     { $see-also PixelFormat }
1165 } ;
1166
1167 HELP: PIXELFORMAT_COMPRESSED_DXT5_RGBA
1168 { $class-description
1169     8 bits per pixel.
1170
1171     { $see-also PixelFormat }
1172 } ;
1173
1174 HELP: PIXELFORMAT_COMPRESSED_ETC1_RGB
1175 { $class-description
1176     4 bits per pixel.
1177
1178     { $see-also PixelFormat }
1179 } ;
1180
1181 HELP: PIXELFORMAT_COMPRESSED_ETC2_RGB
1182 { $class-description
1183     4 bits per pixel.
1184
1185     { $see-also PixelFormat }
1186 } ;
1187
1188 HELP: PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA
1189 { $class-description
1190     8 bits per pixel.
1191
1192     { $see-also PixelFormat }
1193 } ;
1194
1195 HELP: PIXELFORMAT_COMPRESSED_PVRT_RGB
1196 { $class-description
1197     4 bits per pixel.
1198
1199     { $see-also PixelFormat }
1200 } ;
1201
1202 HELP: PIXELFORMAT_COMPRESSED_PVRT_RGBA
1203 { $class-description
1204     4 bits per pixel.
1205
1206     { $see-also PixelFormat }
1207 } ;
1208
1209 HELP: PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA
1210 { $class-description
1211     8 bits per pixel.
1212
1213     { $see-also PixelFormat }
1214 } ;
1215
1216 HELP: PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA
1217 { $class-description
1218     2 bits per pixel.
1219
1220     { $see-also PixelFormat }
1221 } ;
1222
1223
1224 ! Texture filter mode enum
1225 HELP: TextureFilterMode
1226 { $var-description
1227     Controls the filter mode of the texture. In Raylib, filtering will
1228     consider mipmaps if available in the current texture. Additionally,
1229     filter is accordingly set for minification and magnification.
1230
1231     { $enum-members TextureFilterMode }
1232 } ;
1233
1234 HELP: TEXTURE_FILTER_POINT
1235 { $class-description
1236     No filter just pixel aproximation.
1237
1238     { $see-also TextureFilterMode }
1239 } ;
1240
1241 HELP: TEXTURE_FILTER_BILINEAR
1242 { $class-description
1243     Linear filtering.
1244
1245     { $see-also TextureFilterMode }
1246 } ;
1247
1248 HELP: TEXTURE_FILTER_TRILINEAR
1249 { $class-description
1250     Trilinear filtering (linear with mipmaps).
1251
1252     { $see-also TextureFilterMode }
1253 } ;
1254
1255 HELP: TEXTURE_FILTER_ANISOTROPIC_4X
1256 { $class-description
1257     Anisotropic filtering 4x.
1258
1259     { $see-also TextureFilterMode }
1260 } ;
1261
1262 HELP: TEXTURE_FILTER_ANISOTROPIC_8X
1263 { $class-description
1264     Anisotropic filtering 8x.
1265
1266     { $see-also TextureFilterMode }
1267 } ;
1268
1269 HELP: TEXTURE_FILTER_ANISOTROPIC_16X
1270 { $class-description
1271     Anisotropic filtering 16x.
1272
1273     { $see-also TextureFilterMode }
1274 } ;
1275
1276
1277 ! Texture wrap mode enume
1278 HELP: TextureWrapMode
1279 { $var-description
1280     Represents the way a texture will repeate when reading
1281     past the image bounds.
1282
1283     { $enum-members TextureWrapMode }
1284 } ;
1285
1286 HELP: TEXTURE_WRAP_REPEAT
1287 { $class-description
1288     Using this mode, a texture will repeate infinitely in all directions.
1289
1290     { $see-also TextureWrapMode }
1291 } ;
1292
1293 HELP: TEXTURE_WRAP_CLAMP
1294 { $class-description
1295     Using this mode, the edge pixels in a texture will
1296     be stretched out into infinity.
1297
1298     { $see-also TextureWrapMode }
1299 } ;
1300
1301 HELP:
1302 TEXTURE_WRAP_MIRROR_REPEAT
1303 { $class-description
1304     Using this mode, the texture will repeat infinitely in all directions.
1305     However, each tiling will be mirrored compared to the previous tiling.
1306
1307
1308     { $see-also TextureWrapMode }
1309 } ;
1310
1311 HELP: TEXTURE_WRAP_MIRROR_CLAMP
1312 { $class-description
1313     This mode combines mirrored with clamped. The texture will infinitely
1314     tile the last pixel from the oppisite side.
1315
1316     { $see-also TextureWrapMode }
1317 } ;
1318
1319
1320 ! Cubemap layout enum
1321 HELP: CubemapLayout
1322 { $var-description
1323     Represents the layout a cube map is using.
1324
1325     { $enum-members CubemapLayout }
1326 } ;
1327
1328 HELP: CUBEMAP_LAYOUT_AUTO_DETECT
1329 { $class-description
1330     Raylib will attempt to automatically detect the cubemap's layout type.
1331
1332     { $see-also CubemapLayout }
1333 } ;
1334
1335 HELP: CUBEMAP_LAYOUT_LINE_VERTICAL
1336 { $class-description
1337     A cubemap who's layout is defined by a horizontal line with faces.
1338
1339     { $see-also CubemapLayout }
1340 } ;
1341
1342 HELP: CUBEMAP_LAYOUT_LINE_HORIZONTAL
1343 { $class-description
1344     A cubemap who's layout is defined by a vertical line with faces.
1345
1346     { $see-also CubemapLayout }
1347 } ;
1348
1349 HELP: CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR
1350 { $class-description
1351     A cubemap who's layout is defined by a 3x4 cross with cubemap faces.
1352
1353     { $see-also CubemapLayout }
1354 } ;
1355
1356 HELP: CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE
1357 { $class-description
1358     A cubemap who's layout is defined by a 4x3 cross with cubemap faces.
1359
1360     { $see-also CubemapLayout }
1361 } ;
1362
1363 HELP: CUBEMAP_LAYOUT_PANORAMA
1364 { $class-description
1365     A cubemap who's layout is defined by a panoramic image (equirectangular map).
1366
1367     { $see-also CubemapLayout }
1368 } ;
1369
1370
1371 ! font type enum
1372 HELP: FontType
1373 { $var-description
1374     A C-enum defining the various font generation methods in Raylib.
1375
1376     { $enum-members FontType }
1377 } ;
1378
1379 HELP: FONT_DEFAULT
1380 { $class-description
1381     Default font generation with anti-aliasing.
1382
1383     { $see-also FontType }
1384 } ;
1385
1386 HELP: FONT_BITMAP
1387 { $class-description
1388     Bitmap font generation without anti-aliasing.
1389
1390     { $see-also FontType }
1391 } ;
1392
1393 HELP: FONT_SDF
1394 { $class-description
1395     SDF font generation. Requires an external shader.
1396
1397     { $see-also FontType }
1398 } ;
1399
1400
1401 ! Blend mode enum
1402 HELP: BlendMode
1403 { $var-description
1404     A C-enum holding the OpenGL texture blend modes.
1405
1406
1407     { $enum-members BlendMode }
1408 } ;
1409
1410 HELP: BLEND_ALPHA
1411 { $class-description
1412     Blend mode for blending texturing while considering the alpha channel.
1413     This is the default mode.
1414     { $see-also BlendMode }
1415 } ;
1416
1417 HELP: BLEND_ADDITIVE
1418 { $class-description
1419     Blend mode for blending textures while adding colors
1420     { $see-also BlendMode }
1421 } ;
1422
1423 HELP: BLEND_MULTIPLIED
1424 { $class-description
1425     Blend mode for blending textures while multiplying colors.
1426     { $see-also BlendMode }
1427 } ;
1428
1429 HELP: BLEND_ADD_COLORS
1430 { $class-description
1431     Alternative blend mode to \ BLEND_ADDITIVE
1432     { $see-also BlendMode }
1433 } ;
1434
1435 HELP: BLEND_SUBTRACT_COLORS
1436 { $class-description
1437     Blend mode for blending textures while subtracting colors.
1438     { $see-also BlendMode }
1439 } ;
1440
1441 HELP: BLEND_ALPHA_PREMULTIPLY
1442 { $class-description
1443     Blend mode for blending premultipled textures while considering the alpha channel
1444     { $see-also BlendMode }
1445 } ;
1446
1447 HELP: BLEND_CUSTOM
1448 { $class-description
1449     Blend mode for using custom src/dst factors. This is intended for use with
1450     { $snippet rl-set-blend-factors } from { $vocab-link "rlgl" } .
1451     { $see-also BlendMode }
1452 } ;
1453
1454 HELP: BLEND_CUSTOM_SEPARATE
1455 { $class-description
1456     Blend mode for using custom rgb/alpha seperate src/dst
1457     factors. This is intended for use with { $snippet rl-set-blend-factors-seperate }
1458     from { $vocab-link "rlgl" } .
1459     { $see-also BlendMode }
1460 } ;
1461
1462
1463 ! Gestures enum
1464 HELP: Gestures
1465 { $var-description
1466     Represents the various touch gestures Raylib supports.
1467     This enum is a set of bitflags to enable desired
1468     gestures individually.
1469
1470     { $enum-members Gestures }
1471 } ;
1472
1473 HELP: GESTURE_NONE
1474 { $class-description
1475     Used as the empty set of gestures.
1476
1477     Has the value: { $snippet 0 }
1478     { $see-also Gestures }
1479 } ;
1480
1481 HELP: GESTURE_TAP
1482 { $class-description
1483     Represents a tap gesture.
1484
1485     Has the value: { $snippet 1 }
1486     { $see-also Gestures }
1487 } ;
1488
1489 HELP: GESTURE_DOUBLETAP
1490 { $class-description
1491     Represents a double tap gesture.
1492
1493     Has the value: { $snippet 2 }
1494     { $see-also Gestures }
1495 } ;
1496
1497 HELP: GESTURE_HOLD
1498 { $class-description
1499     Represents a hold gesture.
1500
1501     Has the value: { $snippet 4 }
1502     { $see-also Gestures }
1503 } ;
1504
1505 HELP: GESTURE_DRAG
1506 { $class-description
1507     Represents a drag gesture.
1508
1509     Has the value: { $snippet 8 }
1510     { $see-also Gestures }
1511 } ;
1512 HELP: GESTURE_SWIPE_RIGHT
1513 { $class-description
1514     Represents a swipe to the right.
1515
1516     Has the value: { $snippet 16 }
1517     { $see-also Gestures }
1518 } ;
1519
1520 HELP: GESTURE_SWIPE_LEFT
1521 { $class-description
1522     Represents a swipe to the left
1523
1524     Has the value: { $snippet 32 }
1525     { $see-also Gestures }
1526 } ;
1527
1528 HELP: GESTURE_SWIPE_UP
1529 { $class-description
1530     Represents a swap upwards.
1531
1532     Has the value: { $snippet 64 }
1533     { $see-also Gestures }
1534 } ;
1535
1536 HELP: GESTURE_SWIPE_DOWN
1537 { $class-description
1538     Represents a swap downwards.
1539
1540     Has the value: { $snippet 128 }
1541     { $see-also Gestures }
1542 } ;
1543
1544 HELP: GESTURE_PINCH_IN
1545 { $class-description
1546     Represents a inwards pinch.
1547
1548     Has the value: { $snippet 256 }
1549     { $see-also Gestures }
1550 } ;
1551
1552 HELP: GESTURE_PINCH_OUT
1553 { $class-description
1554     Represents a outwards pinch.
1555
1556     Has the value: { $snippet 512 }
1557     { $see-also Gestures }
1558 } ;
1559
1560
1561 ! Camera mode enum
1562 HELP: CameraMode
1563 { $var-description
1564     The various modes a camera can behave in Raylib.
1565
1566     { $enum-members CameraMode }
1567 } ;
1568
1569 HELP: CAMERA_CUSTOM
1570 { $class-description
1571     A 3D camera with custom behavior.
1572
1573     { $see-also CameraMode }
1574 } ;
1575
1576 HELP: CAMERA_FREE
1577 { $class-description
1578     A \ Camera3D with unrestricted movement.
1579
1580     { $see-also CameraMode }
1581 } ;
1582
1583 HELP: CAMERA_ORBITAL
1584 { $class-description
1585     A \ Camera3D that will orbit a fixed point in 3D space.
1586
1587     { $see-also CameraMode }
1588 } ;
1589
1590 HELP: CAMERA_FIRST_PERSON
1591 { $class-description
1592     A \ Camera3D that cannot roll and looked on the up-axis.
1593
1594     { $see-also CameraMode }
1595 } ;
1596
1597 HELP: CAMERA_THIRD_PERSON
1598 { $class-description
1599     Similiar to \ CAMERA_FIRST_PERSON , however the camera is focused
1600     to a target point.
1601
1602     { $see-also CameraMode }
1603 } ;
1604
1605
1606 ! Camera projection enum
1607 HELP: CameraProjection
1608 { $var-description
1609     Represents the projects a camera can use.
1610
1611     { $enum-members CameraProjection }
1612 } ;
1613
1614 HELP: CAMERA_PERSPECTIVE
1615 { $class-description
1616     Sets a \ Camera3D to use a perspective projection.
1617
1618     { $see-also CameraProjection }
1619 } ;
1620
1621 HELP: CAMERA_ORTHOGRAPHIC
1622 { $class-description
1623     Sets a \ Camera3D to use an orthographic projection. Parallel lines
1624     will stay parallel in this projection.
1625
1626     { $see-also CameraProjection }
1627 } ;
1628
1629
1630 ! N-patch layout enum
1631 HELP: NPatchLayout
1632 { $var-description
1633     Raylib features support for " \"n-patch\" " tiles. N-patches allow
1634     for texture to be automatically repeated and stretched. Raylib
1635     has support for the follow n-patch styles:
1636     { $list
1637         { "3x3 (" { $link NPATCH_NINE_PATCH } ")"           }
1638         { "1x3 (" { $link NPATCH_THREE_PATCH_VERTICAL } ")" }
1639         { "3x1 (" { $link NPATCH_THREE_PATCH_HORIZONTAL } ")" }
1640     }
1641     $nl
1642     See the following page for an example:
1643     $nl
1644     { $url "https://www.raylib.com/examples/textures/loader.html?name=textures_npatch_drawing" }
1645     { $enum-members NPatchLayout }
1646 } ;
1647
1648 HELP: NPATCH_NINE_PATCH
1649 { $class-description
1650     Represents a 3x3 n-patch tile. This tile type can expand both horizontally
1651     and vertically. It has the following sections:
1652     { $list
1653         { "4 corners that are neither stretched nor scaled." }
1654         { "4 edge tiles (top, bottom, left, right) that will be repeated
1655             vertically and horizontally." }
1656         { "1 center tile that will be stretched to fill the space between
1657             the edge tiles and corner tiles." }
1658     }
1659
1660     { $see-also NPatchLayout }
1661 } ;
1662
1663 HELP: NPATCH_THREE_PATCH_VERTICAL
1664 { $class-description
1665     Represents a 1x3 tiling that can be stretched vertically.
1666
1667     { $see-also NPatchLayout }
1668 } ;
1669
1670 HELP: NPATCH_THREE_PATCH_HORIZONTAL
1671 { $class-description
1672     Represents a 3x1 tiling that can be streched vertically.
1673
1674     { $see-also NPatchLayout }
1675 } ;
1676
1677
1678
1679 HELP: AudioCallback
1680 { $values
1681     { "quot" quotation }
1682     { "alien" object }
1683 }
1684 { $description "" } ;
1685
1686 HELP: AudioStream
1687 { $class-description
1688     Represents a stream of audio data in Raylib.
1689     { $table
1690         { { $snippet buffer }     " a pointer to the internal data used by the audio system." }
1691         { { $snippet processor }  " a pointer to the interanl data processor, useful for audio effects." }
1692         { { $snippet sampleRate } " the frequence of the samples." }
1693         { { $snippet sampleSize } " the bit depth of the samples: spport values are 8, 16, and 32." }
1694         { { $snippet channels }   " the number of channels: 1 for mono, 2 for stereo." }
1695     }
1696 } ;
1697
1698
1699 HELP: Color
1700 { $class-description
1701     Represents a RGBA color with 8-bit unsigned components.
1702     Raylibe comes with 25 default colors.
1703
1704     { $heading Builtin colors }
1705     { $subsections
1706         LIGHTGRAY
1707         GRAY
1708         DARKGRAY
1709         YELLOW
1710         GOLD
1711         ORANGE
1712         PINK
1713         RED
1714         MAROON
1715         GREEN
1716         LIME
1717         DARKGREEN
1718         SKYBLUE
1719         BLUE
1720         DARKBLUE
1721         PURPLE
1722         VIOLET
1723         DARKPURPLE
1724         BEIGE
1725         BROWN
1726         DARKBROWN
1727         WHITE
1728         BLACK
1729         MAGENTA
1730         RAYWHITE }
1731 } ;
1732
1733
1734
1735 HELP: Camera3D
1736 { $class-description
1737     Represents a camera in 3D space. The fields are defined as followed:
1738     { $table
1739         { { $snippet position   } " is the camera position in 3D space." }
1740         { { $snippet target     } " is the target the camera is looking at." }
1741         { { $snippet up         } " is the direction that faces up relative to the camera." }
1742         { { $snippet fovy       } " is the camera's field of view aperature in degrees. Used as the near-plane for orthogrphic projections." }
1743         { { $snippet projection } " is the camera's projection:" { $link CAMERA_PERSPECTIVE } " or " { $link CAMERA_ORTHOGRAPHIC } }
1744     }
1745 } ;
1746
1747 HELP: Camera2D
1748 { $class-description
1749     Represents a camera in 2D space. The fields are defined
1750     as followed:
1751     { $table
1752         { { $snippet offset   } " is the camera offset (dispacement from target)" }
1753         { { $snippet target   } " is the camera target (rotation and zoom origin)." }
1754         { { $snippet rotation } " is the camera rotation in degrees." }
1755         { { $snippet zoom     } " is the camera zoom/scalling, should be 1.0f by default." }
1756     }
1757 } ;
1758
1759 HELP: Camera
1760 { $var-description
1761     A c-typedef alias for \ Camera3D .
1762 } ;
1763
1764
1765
1766
1767 HELP: BoneInfo
1768 { $class-description
1769     A skeletal animation bone.
1770     { $table
1771         { { $snippet name }     " is the name of the bone. Max 32 characters." }
1772         { { $snippet processor }  " the parent index." }
1773     }
1774 } ;
1775
1776 HELP: BoundingBox
1777 { $class-description
1778     Represents a 3D bounding box defined by two points:
1779     { $table
1780         { { $snippet min }  " The minimum vertex box-corner." }
1781         { { $snippet max }  " The maxium vertex box-corner." }
1782     } } ;
1783
1784
1785
1786
1787
1788 HELP: FilePathList
1789 { $class-description
1790     A list of file paths returned from \ load-directory-files ,
1791     \ load-directory-files-ex . Must be freed with
1792     \ unload-directory-files .
1793
1794     The fields are defined as followed:
1795     { $table
1796         { { $snippet capacity } " the max number of entries." }
1797         { { $snippet count } " the number of entries found." }
1798         { { $snippet paths } " array of string where each member is a file path." }
1799     }
1800
1801     { $see-also
1802         load-directory-files
1803         load-directory-files-ex
1804         unload-directory-files
1805     }
1806 } ;
1807
1808 HELP: Font
1809 { $class-description
1810     Represents a collections of glyphs that can be drawn to the screen.
1811     The fields are defined as followed:
1812
1813     { $table
1814         { { $snippet baseSize     } { " the base size of the characters. This is how tall a glyph is." } }
1815         { { $snippet glyphCount   } { " the number of glyph characters." } }
1816         { { $snippet glyphPadding } { " the padding around each glyph." } }
1817         { { $snippet texture      } { " the texture atlas continaing the glyphs." } }
1818         { { $snippet recs         } { " an array of rectangles used to find each glyph in " { $snippet texture } "." } }
1819         { { $snippet glyphs       } { " metadata about each glyph." } }
1820     }
1821
1822 } ;
1823
1824
1825
1826
1827 HELP: LIGHTGRAY  { $raylib-color "200, 200, 200, 255" } ;
1828 HELP: GRAY       { $raylib-color "130, 130, 130, 255" } ;
1829 HELP: DARKGRAY   { $raylib-color "80, 80, 80, 255" } ;
1830 HELP: YELLOW     { $raylib-color "253, 249, 0, 255" } ;
1831 HELP: GOLD       { $raylib-color "255, 203, 0, 255" } ;
1832 HELP: ORANGE     { $raylib-color "255, 161, 0, 255" } ;
1833 HELP: PINK       { $raylib-color "255, 109, 194, 255" } ;
1834 HELP: RED        { $raylib-color "230, 41, 55, 255" } ;
1835 HELP: MAROON     { $raylib-color "190, 33, 55, 255" } ;
1836 HELP: GREEN      { $raylib-color "0, 228, 48, 255" } ;
1837 HELP: LIME       { $raylib-color "0, 158, 47, 255" } ;
1838 HELP: DARKGREEN  { $raylib-color "0, 117, 44, 255" } ;
1839 HELP: SKYBLUE    { $raylib-color "102,  191, 255, 255" } ;
1840 HELP: BLUE       { $raylib-color "0, 121, 241, 255" } ;
1841 HELP: DARKBLUE   { $raylib-color "0, 82, 172, 255" } ;
1842 HELP: PURPLE     { $raylib-color "200, 122, 255, 255" } ;
1843 HELP: VIOLET     { $raylib-color "135, 60, 190, 255 " } ;
1844 HELP: DARKPURPLE { $raylib-color "112, 31, 126, 255 " } ;
1845 HELP: BEIGE      { $raylib-color "211, 176, 131, 255" } ;
1846 HELP: BROWN      { $raylib-color "127, 106, 79, 255 " } ;
1847 HELP: DARKBROWN  { $raylib-color "76, 63, 47, 255" } ;
1848
1849 HELP: WHITE      { $raylib-color "255, 255, 255, 255" } ;
1850 HELP: BLACK      { $raylib-color "0, 0, 0, 255" } ;
1851 HELP: BLANK      { $raylib-color "0, 0, 0, 0" } ;
1852 HELP: MAGENTA    { $raylib-color "255, 0, 255, 255" } ;
1853 HELP: RAYWHITE   { $raylib-color "245, 245, 245, 255" } ;
1854
1855 ARTICLE: "raylib" "Raylib"
1856     { $heading About Raylib  }
1857         Raylib attempts to be a simple and easy-to-use library for writing
1858         graphical applications.
1859
1860     { $subheading Main Website }
1861         { $url "https://www.raylib.com/index.html" }
1862
1863     { $subheading Raylib Cheat Sheet }
1864         { $url "https://www.raylib.com/cheatsheet/cheatsheet.html" }
1865
1866     { $heading About These Bindings }
1867         The { $vocab-link "raylib" } vocabulary provides bindings to
1868         Raylib 4.5. The vocab is fully documented using Factor's help
1869         system. So, you can reliably use the browser to find information about
1870         the various functions in raylib.
1871
1872     { $warning
1873         Use caution when attempting to leverage concurrency features.
1874         Raylib and the UI tools can interact in nasty ways: { $link "raylib-and-threads" } .
1875     }
1876 ;
1877
1878 ARTICLE: "raylib-and-threads" "Raylib and Threads"
1879     Factor features a powerful UI tool kit. However, Raylibe is designed
1880     under a single threaded model. Running a Raylib program will lock up
1881     the UI until the program finishes. However, attempting to use
1882     concurrency and threading features can corrupt the UI if done wrong.
1883 ;
1884
1885 ABOUT: "raylib"