diff options
author | David Thompson <dthompson2@worcester.edu> | 2024-10-02 21:22:19 -0400 |
---|---|---|
committer | David Thompson <dthompson2@worcester.edu> | 2024-10-19 21:49:01 -0400 |
commit | 9b1d91b4c68477145434021ea7392c16d849ebaa (patch) | |
tree | 3e6c3934c530d4cc79a85adc95729f8da2af61c3 /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)) |