From d0b686b4f48621c6a5adc5a0e115de77a0ba3724 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 8 Nov 2014 08:42:56 -0500 Subject: input: Move mouse module to sly/input directory. * sly/mouse.scm: Delete. * sly/input/mouse.scm: New file. * Makefile.am (SOURCES): Add new file. Delete old one. * examples/font.scm: Use (sly input mouse). --- Makefile.am | 2 +- examples/font.scm | 2 +- sly/input/mouse.scm | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++ sly/mouse.scm | 98 ----------------------------------------------------- 4 files changed, 100 insertions(+), 100 deletions(-) create mode 100644 sly/input/mouse.scm delete mode 100644 sly/mouse.scm diff --git a/Makefile.am b/Makefile.am index e3e28d2..ee859a5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -33,13 +33,13 @@ SOURCES = \ sly/fps.scm \ sly/game.scm \ sly/input/keyboard.scm \ + sly/input/mouse.scm \ sly/live-reload.scm \ sly/math.scm \ sly/math/quaternion.scm \ sly/math/rect.scm \ sly/math/transform.scm \ sly/math/vector.scm \ - sly/mouse.scm \ sly/repl.scm \ sly/signal.scm \ sly/transition.scm \ diff --git a/examples/font.scm b/examples/font.scm index 233ffda..d011899 100644 --- a/examples/font.scm +++ b/examples/font.scm @@ -20,7 +20,7 @@ (sly color) (sly font) (sly game) - (sly mouse) + (sly input mouse) (sly signal) (sly vector) (sly window)) diff --git a/sly/input/mouse.scm b/sly/input/mouse.scm new file mode 100644 index 0000000..22c6d8c --- /dev/null +++ b/sly/input/mouse.scm @@ -0,0 +1,98 @@ +;;; Sly +;;; Copyright (C) 2013, 2014 David Thompson +;;; +;;; This program is free software: you can redistribute it and/or +;;; modify it under the terms of the GNU General Public License as +;;; published by the Free Software Foundation, either version 3 of the +;;; License, or (at your option) any later version. +;;; +;;; This program 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 General Public License +;;; along with this program. If not, see +;;; . + +;;; Commentary: +;; +;; Keyboard signals. +;; +;;; Code: + +(define-module (sly input mouse) + #:use-module ((sdl sdl) #:prefix SDL:) + #:use-module (sly event) + #:use-module (sly signal) + #:use-module (sly math vector) + #:export (mouse-move-hook + mouse-press-hook + mouse-click-hook + mouse-x + mouse-y + mouse-position + mouse-last-down + mouse-last-up + mouse-down?)) + +(define mouse-move-hook (make-hook 2)) + +(register-event-handler + 'mouse-motion + (lambda (e) + (run-hook mouse-move-hook + (SDL:event:motion:x e) + (SDL:event:motion:y e)))) + +(define-signal mouse-position + (hook->signal mouse-move-hook + (vector2 0 0) + vector2)) + +(define-signal mouse-x (signal-map vx mouse-position)) +(define-signal mouse-y (signal-map vy mouse-position)) + +(define mouse-press-hook (make-hook 3)) + +(register-event-handler + 'mouse-button-down + (lambda (e) + (run-hook mouse-press-hook + (SDL:event:button:button e) + (SDL:event:button:x e) + (SDL:event:button:y e)))) + +(define-signal mouse-last-down + (hook->signal mouse-press-hook + 'none + (lambda (button x y) + button))) + +(define mouse-click-hook (make-hook 3)) + +(register-event-handler + 'mouse-button-up + (lambda (e) + (run-hook mouse-click-hook + (SDL:event:button:button e) + (SDL:event:button:x e) + (SDL:event:button:y e)))) + +(define-signal mouse-last-up + (hook->signal mouse-click-hook + 'none + (lambda (button x y) + button))) + +(define (mouse-down? button) + "Create a signal for the state of BUTTON. Value is #t when mouse +button is pressed or #f otherwise." + (define (same-button? other-button) + (eq? button other-button)) + + (define (button-filter value signal) + (signal-constant value (signal-filter #f same-button? signal))) + + (signal-merge (button-filter #f mouse-last-up) + (button-filter #t mouse-last-down))) diff --git a/sly/mouse.scm b/sly/mouse.scm deleted file mode 100644 index 1b4885a..0000000 --- a/sly/mouse.scm +++ /dev/null @@ -1,98 +0,0 @@ -;;; Sly -;;; Copyright (C) 2013, 2014 David Thompson -;;; -;;; This program is free software: you can redistribute it and/or -;;; modify it under the terms of the GNU General Public License as -;;; published by the Free Software Foundation, either version 3 of the -;;; License, or (at your option) any later version. -;;; -;;; This program 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 General Public License -;;; along with this program. If not, see -;;; . - -;;; Commentary: -;; -;; Keyboard signals. -;; -;;; Code: - -(define-module (sly mouse) - #:use-module ((sdl sdl) #:prefix SDL:) - #:use-module (sly event) - #:use-module (sly signal) - #:use-module (sly math vector) - #:export (mouse-move-hook - mouse-press-hook - mouse-click-hook - mouse-x - mouse-y - mouse-position - mouse-last-down - mouse-last-up - mouse-down?)) - -(define mouse-move-hook (make-hook 2)) - -(register-event-handler - 'mouse-motion - (lambda (e) - (run-hook mouse-move-hook - (SDL:event:motion:x e) - (SDL:event:motion:y e)))) - -(define-signal mouse-position - (hook->signal mouse-move-hook - (vector2 0 0) - vector2)) - -(define-signal mouse-x (signal-map vx mouse-position)) -(define-signal mouse-y (signal-map vy mouse-position)) - -(define mouse-press-hook (make-hook 3)) - -(register-event-handler - 'mouse-button-down - (lambda (e) - (run-hook mouse-press-hook - (SDL:event:button:button e) - (SDL:event:button:x e) - (SDL:event:button:y e)))) - -(define-signal mouse-last-down - (hook->signal mouse-press-hook - 'none - (lambda (button x y) - button))) - -(define mouse-click-hook (make-hook 3)) - -(register-event-handler - 'mouse-button-up - (lambda (e) - (run-hook mouse-click-hook - (SDL:event:button:button e) - (SDL:event:button:x e) - (SDL:event:button:y e)))) - -(define-signal mouse-last-up - (hook->signal mouse-click-hook - 'none - (lambda (button x y) - button))) - -(define (mouse-down? button) - "Create a signal for the state of BUTTON. Value is #t when mouse -button is pressed or #f otherwise." - (define (same-button? other-button) - (eq? button other-button)) - - (define (button-filter value signal) - (signal-constant value (signal-filter #f same-button? signal))) - - (signal-merge (button-filter #f mouse-last-up) - (button-filter #t mouse-last-down))) -- cgit v1.2.3