fix color prefs saving to use alpha

This didn't matter much before but now that
paren colors have interesting alpha components,
things look bad when it is ignored!

original commit: f5efc0313435c922914ccd924d876ffe8b740e80
This commit is contained in:
Robby Findler 2012-12-01 13:46:08 -06:00
parent 8fb47dd305
commit 915918282f

View File

@ -1,7 +1,8 @@
#lang scheme/unit
#lang racket/unit
(require mzlib/class
mred
string-constants
racket/match
"../preferences.rkt"
"sig.rkt")
@ -510,12 +511,16 @@
(preferences:set-default pref-sym bw-c (λ (x) (is-a? x color%)))
(preferences:set-un/marshall
pref-sym
(λ (clr) (list (send clr red) (send clr green) (send clr blue)))
(λ (lst) (and (pair? lst)
(pair? (cdr lst))
(pair? (cddr lst))
(null? (cdddr lst))
(make-object color% (car lst) (cadr lst) (caddr lst)))))
(λ (clr) (list (send clr red) (send clr green) (send clr blue) (send clr alpha)))
(λ (lst)
(match lst
[(list (? byte? red) (? byte? green) (? byte? blue))
;; old prefs-- before there were no alpha components to color% objects
;; and so only r/g/b was saved.
(make-object color% red green blue)]
[(list (? byte? red) (? byte? green) (? byte? blue) (? (λ (x) (and (real? x) (<= 0 x 1))) α))
(make-object color% red green blue α)]
[else #f])))
(void)))
(define (to-color c)