diff options
author | David Thompson <dthompson2@worcester.edu> | 2024-10-02 21:22:19 -0400 |
---|---|---|
committer | David Thompson <dthompson2@worcester.edu> | 2024-12-17 08:20:10 -0500 |
commit | 90f08d32e5ce7be8b5f3c272bcd9a2773cd134ae (patch) | |
tree | add34d119bea30e134ff36a208f3b6ab41264f41 /sdl3.scm |
First commit!main
Diffstat (limited to 'sdl3.scm')
-rw-r--r-- | sdl3.scm | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/sdl3.scm b/sdl3.scm new file mode 100644 index 0000000..1430116 --- /dev/null +++ b/sdl3.scm @@ -0,0 +1,67 @@ +;;; guile-sdl3 -- Scheme bindings for SDL3 +;;; Copyright © 2024 David Thompson <dthompson2@worcester.edu> +;;; +;;; Licensed under the Apache License, Version 2.0 (the "License"); +;;; you may not use this file except in compliance with the License. +;;; You may obtain a copy of the License at +;;; +;;; http://www.apache.org/licenses/LICENSE-2.0 +;;; +;;; Unless required by applicable law or agreed to in writing, software +;;; distributed under the License is distributed on an "AS IS" BASIS, +;;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +;;; See the License for the specific language governing permissions and +;;; limitations under the License. + +;;; Commentary: +;; +;; SDL3 initialization and shutdown. +;; +;;; Code: + +(define-module (sdl3) + #:use-module (ice-9 match) + #:use-module (sdl3 bindings init) + #:use-module (sdl3 errors) + #:use-module (srfi srfi-1) + #:use-module (system foreign) + #:export (sdl-init + sdl-quit)) + +(define (sdl-init subsystems) + "Initialize SDL @var{subsystems}, a list of symbols. By default, all +subsystems are initialized. + +Valid subsystem names are: + +@itemize +@item @code{audio} +@item @code{video} +@item @code{joystick} +@item @code{haptic} +@item @code{gamepad} +@item @code{events} +@item @code{sensor} +@item @code{camera} +@end itemize" + (sdl-assert 'sdl-init + (SDL_Init + (fold (lambda (name prev) + (logior (match name + ('audio SDL_INIT_AUDIO) + ('video SDL_INIT_VIDEO) + ('joystick SDL_INIT_JOYSTICK) + ('haptic SDL_INIT_HAPTIC) + ('gamepad SDL_INIT_GAMEPAD) + ('events SDL_INIT_EVENTS) + ('sensor SDL_INIT_SENSOR) + ('camera SDL_INIT_CAMERA) + (_ (raise (make-sdl-error 'sdl-init + #:message "invalid subsystem name" + #:irritants (list name))))) + prev)) + 0 subsystems)))) + +(define (sdl-quit) + "Clean up all initialized subsystems." + (SDL_Quit)) |