WIP raylib bindings for owl lisp
api.md imported (and tweaked a bit) from janet-lang/jaylib, it is probably a bit outdated.
Owl lisp supports C extensions via custom sys-prims - basically
syscalls, but to C functions, not the system. You define a
word prim_custom(int op, word a, word b, word c)
in a C
file, then call (sys-prim op a b c)
from the lisp side, and
then compile and link them together.
ol-rl
ol-rl
is the same thing as ol
, but with
compiled-in support for raylib sys-prim
s, so it will be
then used to interpret and/or compile Owl lisp programs that depend on
raylib.
$ make ol-rl
# make install
$ ol-rl -o test.c test.scm
$ cc test.c -lraylib -lm -o test
$ ./test
If you're on windows, you can download the pre-compiled
ol-rl.exe
binary here. If running it as a
REPL, remember to use --no-readline
.
$ git clone https://github.com/raysan5/raylib
$ cd raylib/src
$ make clean all PLATFORM=PLATFORM_WEB
$ ol-rl -o test.c test.scm
$ emcc -DPLATFORM_WEB -I/usr/local/include test.c /path/to/libraylib-web.a -o test.html -s USE_GLFW=3 -s ERROR_ON_UNDEFINED_SYMBOLS=0 -s ALLOW_MEMORY_GROWTH=1 -s ASYNCIFY -s ASSERTIONS=0
with-mainloop
macro,
and define Your own mainloop
function, that tail-recurses
into itself, and sets the "variables" as arguments.ol-rl
(raylib)
- the lisp sources - into
ol-rl
ovm.c
+ raylib.c
)
into ol-rl
implement api.md
fully
implement raymath-api.md
fully
##false Exported values:
draw
with-window
with-mainloop
vec
vec2
vec3
vec4
make-vector
rec
rectangle
rect
(exports (raylib window))
(exports (raylib io))
(exports (raylib draw))
(exports (raylib util))
(exports (raylib audio))
(exports (raylib const))
(exports (raylib raymath))
##false Exported values:
prim
##false Exported values:
init-window
window-should-close?
close-window
window-ready?
window-minimized?
window-resized?
window-state?
set-window-state!
clear-window-state!
toggle-fullscreen!
set-window-icon!
set-window-title!
set-window-position!
set-window-monitor!
set-window-min-size!
set-window-size!
window-handle
window-width
window-height
window-size
monitor-count
monitor-width
monitor-height
monitor-size
monitor-physical-width
monitor-physical-height
monitor-name
clipboard
set-clipboard!
show-cursor!
hide-cursor!
cursor-hidden?
enable-cursor!
disable-cursor!
cursor-on-screen?
clear-background
begin-drawing
end-drawing
make-camera2d
begin-mode2d
end-mode2d
set-target-fps!
fps
frame-time
time
color-normalize
color->hsv
color->number
fade
make-color
color
set-config-flags!
set-tracelog-level!
take-screenshot!
dropped-files
open-url
begin-camera2d-mode
end-camera2d-mode
with-camera2d
##false Exported values:
collision-rects?
collision-circles?
collision-circle-rect?
collision-rects
collision-point-rect?
collision-point-circle?
collision-point-triangle?
truncate-precision
##false Exported values:
clamp
lerp
normalize
remap
wrap
vec2zero
vec2one
vec2+
vec2+val
vec2-
vec2-val
vec2length
vec2lensqr
vec2dotprod
vec2dist
vec2distsqr
vec2angle
vec2lineangle
vec2scale
vec2*
vec2negate
vec2/
vec2normalize
vec2lerp
vec2reflect
vec2min
vec2max
vec2rotate
vec2move-towards
vec2invert
vec2clamp
vec2clampvalue
vec2eq?
vec2refract
##false Exported values:
colors
lightgray
gray
darkgray
yellow
gold
orange
pink
red
maroon
green
lime
darkgreen
skyblue
blue
darkblue
purple
violet
darkpurple
beige
brown
darkbrown
white
black
blank
magenta
raywhite
window-flags
flag-vsync-hint
flag-fullscreen-mode
flag-window-resizable
flag-window-undecorated
flag-window-hidden
flag-window-minimized
flag-window-maximized
flag-window-unfocused
flag-window-topmost
flag-window-always-run
flag-window-transparent
flag-window-highdpi
flag-window-mouse-passthrough
flag-borderless-windowed-mode
flag-msaa-4x-hint
flag-interlaced-hint
log-all
log-trace
log-debug
log-info
log-warning
log-error
log-fatal
log-none
key-null
key-apostrophe
key-comma
key-minus
key-period
key-slash
key-zero
key-one
key-two
key-three
key-four
key-five
key-six
key-seven
key-eight
key-nine
key-semicolon
key-equal
key-a
key-b
key-c
key-d
key-e
key-f
key-g
key-h
key-i
key-j
key-k
key-l
key-m
key-n
key-o
key-p
key-q
key-r
key-s
key-t
key-u
key-v
key-w
key-x
key-y
key-z
key-left-bracket
key-backslash
key-right-bracket
key-grave
key-space
key-escape
key-enter
key-tab
key-backspace
key-insert
key-delete
key-right
key-left
key-down
key-up
key-page-up
key-page-down
key-home
key-end
key-caps-lock
key-scroll-lock
key-num-lock
key-print-screen
key-pause
key-f1
key-f2
key-f3
key-f4
key-f5
key-f6
key-f7
key-f8
key-f9
key-f10
key-f11
key-f12
key-left-shift
key-left-control
key-left-alt
key-left-super
key-right-shift
key-right-control
key-right-alt
key-right-super
key-kb-menu
key-kp-0
key-kp-1
key-kp-2
key-kp-3
key-kp-4
key-kp-5
key-kp-6
key-kp-7
key-kp-8
key-kp-9
key-kp-decimal
key-kp-divide
key-kp-multiply
key-kp-subtract
key-kp-add
key-kp-enter
key-kp-equal
key-back
key-menu
key-volume-up
key-volume-down
mouse-button-left
mouse-button-right
mouse-button-middle
mouse-button-side
mouse-button-extra
mouse-button-forward
mouse-button-back
mouse-left-button
mouse-right-button
mouse-middle-button
mouse-cursor-default
mouse-cursor-arrow
mouse-cursor-ibeam
mouse-cursor-crosshair
mouse-cursor-pointing-hand
mouse-cursor-resize-ew
mouse-cursor-resize-ns
mouse-cursor-resize-nwse
mouse-cursor-resize-nesw
mouse-cursor-resize-all
mouse-cursor-not-allowed
gamepad-button-unknown
gamepad-button-left-face-up
gamepad-button-left-face-right
gamepad-button-left-face-down
gamepad-button-left-face-left
gamepad-button-right-face-up
gamepad-button-right-face-right
gamepad-button-right-face-down
gamepad-button-right-face-left
gamepad-button-left-trigger-1
gamepad-button-left-trigger-2
gamepad-button-right-trigger-1
gamepad-button-right-trigger-2
gamepad-button-middle-left
gamepad-button-middle
gamepad-button-middle-right
gamepad-button-left-thumb
gamepad-button-right-thumb
gamepad-axis-left-x
gamepad-axis-left-y
gamepad-axis-right-x
gamepad-axis-right-y
gamepad-axis-left-trigger
gamepad-axis-right-trigger
gesture-none
gesture-tap
gesture-doubletap
gesture-hold
gesture-drag
gesture-swipe-right
gesture-swipe-left
gesture-swipe-up
gesture-swipe-down
gesture-pinch-in
gesture-pinch-out
camera-custom
camera-free
camera-orbital
camera-first-person
camera-third-person
camera-perspective
camera-orthographic
##false Exported values:
init-audio-device
close-audio-device
audio-device-ready?
set-master-volume!
file->wave
load-wave
file->sound
load-sound
wave->sound
unload-wave
unload-sound
wave->file
play-sound
pause-sound
resume-sound
stop-sound
sound-playing?
set-sound-volume!
set-sound-pitch!
format-wave!
copy-wave
crop-wave
file->music-stream
load-music-stream
unload-music-stream
play-music-stream
update-music-stream
stop-music-stream
pause-music-stream
resume-music-stream
music-stream-playing?
set-music-volume!
set-music-pitch!
music-time-length
music-time-played
list->music-stream
list->wave
##false Exported values:
key-pressed?
key-down?
key-released?
key-up?
key-pressed
set-exit-key!
gamepad-available?
gamepad-name
gamepad-btn-pressed?
gamepad-btn-down?
gamepad-btn-released?
gamepad-btn-up?
gamepad-btn-pressed
gamepad-axis-count
gamepad-axis-movement
mouse-btn-pressed?
mouse-btn-down?
mouse-btn-released?
mouse-btn-up?
mouse-x
mouse-y
mouse-pos
set-mouse-pos!
set-mouse-offset!
set-mouse-scale!
mouse-wheel
touch-x
touch-y
touch-pos
set-gestures-enabled!
gesture-detected?
gesture-detected
touch-points-count
gesture-hold-duration
gesture-drag-vector
gesture-drag-angle
gesture-pinch-vector
gesture-pinch-angle
load-image
list->image
export-image
load-texture
image->texture
load-texture-cubemap
unload-image
unload-texture
unload-render-texture
screen->image
get-font-default
load-font
image->font
unload-font
list->font
mouse-delta
##false Exported values:
draw-pixel
draw-rectangle
draw-rectangle-lines
draw-line
draw-line-simple
draw-line-ex
draw-line-bezier
draw-line-strip
draw-circle-sector
draw-circle-sector-lines
draw-circle-gradient
draw-circle
draw-circle-lines
draw-ring
draw-ring-lines
draw-rectangle-simple
draw-rectangle-gradient-v
draw-rectangle-gradient-h
draw-rectangle-gradient-ex
draw-rectangle-rounded
draw-rectangle-rounded-lines
draw-triangle
draw-triangle-lines
draw-triangle-fan
draw-triangle-strip
draw-poly
draw-texture
draw-texture-pro
draw-texture-rec
draw-fps
draw-text
draw-text-simple
measure-text