diff options
Diffstat (limited to 'chickadee/graphics/polygon.scm')
-rw-r--r-- | chickadee/graphics/polygon.scm | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/chickadee/graphics/polygon.scm b/chickadee/graphics/polygon.scm index b84cc63..1b6a5a7 100644 --- a/chickadee/graphics/polygon.scm +++ b/chickadee/graphics/polygon.scm @@ -1,5 +1,5 @@ ;;; Chickadee Game Toolkit -;;; Copyright © 2020 David Thompson <davet@gnu.org> +;;; Copyright © 2020, 2021 David Thompson <davet@gnu.org> ;;; ;;; Chickadee is free software: you can redistribute it and/or modify ;;; it under the terms of the GNU General Public License as published @@ -22,6 +22,7 @@ ;;; Code: (define-module (chickadee graphics polygon) + #:use-module (chickadee graphics engine) #:use-module (chickadee graphics gl) #:use-module (gl) #:use-module (ice-9 match) @@ -33,7 +34,7 @@ fill-polygon-mode line-polygon-mode point-polygon-mode - apply-polygon-mode + current-polygon-mode make-cull-face-mode cull-face-mode? @@ -43,7 +44,7 @@ back-cull-face-mode front-cull-face-mode front-and-back-cull-face-mode - apply-cull-face-mode)) + current-cull-face-mode)) (define-record-type <polygon-mode> (make-polygon-mode front back) @@ -55,7 +56,7 @@ (define line-polygon-mode (make-polygon-mode 'line 'line)) (define point-polygon-mode (make-polygon-mode 'point 'point)) -(define (apply-polygon-mode mode) +(define (bind-polygon-mode mode) (define (glmode sym) (match sym ('fill (polygon-mode fill)) @@ -69,6 +70,11 @@ (gl-polygon-mode (cull-face-mode front) (glmode front)) (gl-polygon-mode (cull-face-mode back) (glmode back)))))) +(define-graphics-state polygon-mode + current-polygon-mode + #:default fill-polygon-mode + #:bind bind-polygon-mode) + (define-record-type <cull-face-mode> (make-cull-face-mode front? back?) cull-face-mode? @@ -80,7 +86,7 @@ (define front-cull-face-mode (make-cull-face-mode #t #f)) (define front-and-back-cull-face-mode (make-cull-face-mode #t #t)) -(define (apply-cull-face-mode mode) +(define (bind-cull-face-mode mode) (let ((front? (cull-face-mode-front? mode)) (back? (cull-face-mode-back? mode))) (cond @@ -95,3 +101,8 @@ (gl-cull-face (cull-face-mode back))) (else (gl-disable (enable-cap cull-face)))))) + +(define-graphics-state cull-face-mode + current-cull-face-mode + #:default back-cull-face-mode + #:bind bind-cull-face-mode) |