summaryrefslogtreecommitdiff
path: root/chickadee/graphics/color.scm
diff options
context:
space:
mode:
Diffstat (limited to 'chickadee/graphics/color.scm')
-rw-r--r--chickadee/graphics/color.scm38
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)))