[racket-dev] bitmap-dc% ignores alpha on set-pixel
No matter what the input color's alpha is, set-pixel uses 100%
opacity. Similarly, get-pixel ignores the alpha in the image.
I think we should change this with the patch below, but I wonder if
there is some deeper reason it works this way and it shouldn't change.
Matthew?
Jay
diff --git a/collects/racket/draw/private/bitmap-dc.rkt
b/collects/racket/draw/private/bitmap-dc.rkt
index 08bb51c..5d9e241 100644
--- a/collects/racket/draw/private/bitmap-dc.rkt
+++ b/collects/racket/draw/private/bitmap-dc.rkt
@@ -119,14 +119,18 @@
(internal-get-bitmap))
(define/public (set-pixel x y c)
- (let ([s (bytes 255 (color-red c) (color-green c) (color-blue c))])
+ (let ([s (bytes (inexact->exact (round (* 255 (color-alpha c))))
+ (color-red c)
+ (color-green c)
+ (color-blue c))])
(set-argb-pixels x y 1 1 s)))
(define/public (get-pixel x y c)
(let-values ([(w h) (get-size)])
(let ([b (make-bytes 4)])
(get-argb-pixels x y 1 1 b)
- (send c set (bytes-ref b 1) (bytes-ref b 2) (bytes-ref b 3))
+ (send c set (bytes-ref b 1) (bytes-ref b 2) (bytes-ref b 3)
+ (/ (bytes-ref b 0) 255))
(and (<= 0 x w) (<= 0 y h)))))
(define/public (set-argb-pixels x y w h bstr
--
Jay McCarthy <jay at cs.byu.edu>
Assistant Professor / Brigham Young University
http://faculty.cs.byu.edu/~jay
"The glory of God is Intelligence" - D&C 93