diff options
Diffstat (limited to 'chickadee/graphics/color.scm')
-rw-r--r-- | chickadee/graphics/color.scm | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/chickadee/graphics/color.scm b/chickadee/graphics/color.scm index 497ecd3..2e1bf43 100644 --- a/chickadee/graphics/color.scm +++ b/chickadee/graphics/color.scm @@ -22,10 +22,11 @@ ;;; Code: (define-module (chickadee graphics color) + #:use-module (chickadee graphics gl) + #:use-module (chickadee math) #:use-module (ice-9 match) #:use-module (srfi srfi-9) #:use-module (srfi srfi-1) - #:use-module (chickadee math) #:export (make-color color? color-r color-g color-b color-a @@ -41,7 +42,17 @@ tango-light-plum tango-plum tango-dark-plum tango-light-scarlet-red tango-scarlet-red tango-dark-scarlet-red tango-aluminium-1 tango-aluminium-2 tango-aluminium-3 - tango-aluminium-4 tango-aluminium-5 tango-aluminium-6)) + tango-aluminium-4 tango-aluminium-5 tango-aluminium-6 + + make-color-mask + default-color-mask + null-color-mask + color-mask? + color-mask-red? + color-mask-green? + color-mask-blue? + color-mask-alpha? + apply-color-mask)) (define-record-type <color> (wrap-color bv) @@ -171,6 +182,7 @@ a color object." (color+ (color* start (- 1.0 alpha)) (color* end alpha))) + ;;; ;;; Pre-defined Colors ;;; @@ -215,3 +227,25 @@ a color object." (define tango-aluminium-4 (rgb #x888a85)) (define tango-aluminium-5 (rgb #x555753)) (define tango-aluminium-6 (rgb #x2e3436)) + + +;;; +;;; Color Masks +;;; + +(define-record-type <color-mask> + (make-color-mask red? green? blue? alpha?) + color-mask? + (red? color-mask-red?) + (green? color-mask-green?) + (blue? color-mask-blue?) + (alpha? color-mask-alpha?)) + +(define default-color-mask (make-color-mask #t #t #t #t)) +(define null-color-mask (make-color-mask #f #f #f #f)) + +(define (apply-color-mask mask) + (gl-color-mask (color-mask-red? mask) + (color-mask-green? mask) + (color-mask-blue? mask) + (color-mask-alpha? mask))) |