diff options
-rw-r--r-- | Makefile.am | 1 | ||||
-rw-r--r-- | sdl2/bindings.scm | 14 | ||||
-rw-r--r-- | sdl2/clipboard.scm | 48 |
3 files changed, 63 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am index d884ffc..7325bee 100644 --- a/Makefile.am +++ b/Makefile.am @@ -44,6 +44,7 @@ SOURCES = \ sdl2.scm \ sdl2/config.scm \ sdl2/bindings.scm \ + sdl2/clipboard.scm \ sdl2/surface.scm \ sdl2/render.scm \ sdl2/video.scm \ diff --git a/sdl2/bindings.scm b/sdl2/bindings.scm index 180f887..4644f1e 100644 --- a/sdl2/bindings.scm +++ b/sdl2/bindings.scm @@ -1130,3 +1130,17 @@ RETURN-TYPE and accept arguments of ARG-TYPES." (define-foreign sdl-is-game-controller sdl-bool "SDL_IsGameController" (list int)) + + +;;; +;;; Clipboard +;;; + +(define-foreign sdl-get-clipboard-text + '* "SDL_GetClipboardText" '()) + +(define-foreign sdl-set-clipboard-text + int "SDL_SetClipboardText" '(*)) + +(define-foreign sdl-has-clipboard-text + int "SDL_HasClipboardText" '()) diff --git a/sdl2/clipboard.scm b/sdl2/clipboard.scm new file mode 100644 index 0000000..5595abf --- /dev/null +++ b/sdl2/clipboard.scm @@ -0,0 +1,48 @@ +;;; guile-sdl2 --- FFI bindings for SDL2 +;;; Copyright © 2017 David Thompson <davet@gnu.org> +;;; +;;; This file is part of guile-sdl2. +;;; +;;; Guile-sdl2 is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU Lesser General Public License as +;;; published by the Free Software Foundation; either version 3 of the +;;; License, or (at your option) any later version. +;;; +;;; Guile-sdl2 is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;; General Public License for more details. +;;; +;;; You should have received a copy of the GNU Lesser General Public +;;; License along with guile-sdl2. If not, see +;;; <http://www.gnu.org/licenses/>. + +;;; Commentary: +;; +;; OS clipboard manipulation. +;; +;;; Code: + +(define-module (sdl2 clipboard) + #:use-module (sdl2) + #:use-module ((sdl2 bindings) #:prefix ffi:) + #:use-module (system foreign) + #:export (clipboard-text? + clipboard-text + set-clipboard-text!)) + +(define (clipboard-text?) + "Return #t if there is text in the OS clipboard." + (= 1 (ffi:sdl-has-clipboard-text))) + +(define (clipboard-text) + "Return a string containing the text in the OS clipboard." + (let ((ret (ffi:sdl-get-clipboard-text))) + (if (null-pointer? ret) + (sdl-error "clipboard-text" "failed to get clipboard text") + (pointer->string ret)))) + +(define (set-clipboard-text! str) + "Put the text in STR into the OS clipboard." + (unless (zero? (ffi:sdl-set-clipboard-text (string->pointer str))) + (sdl-error "set-clipboard-text!" "failed to set clipboard text"))) |