From 5f4ee4f9f83e2a2db9a9c7cc5f38318f4228e018 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 7 Jan 2011 14:15:35 -0700 Subject: [PATCH] cocoa: erasing a non-transparent canvas uses white --- collects/mred/private/wx/cocoa/bitmap.rkt | 14 +++++++++++--- collects/mred/private/wx/cocoa/dc.rkt | 4 +++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/collects/mred/private/wx/cocoa/bitmap.rkt b/collects/mred/private/wx/cocoa/bitmap.rkt index a017149e8a..2cafb775d4 100644 --- a/collects/mred/private/wx/cocoa/bitmap.rkt +++ b/collects/mred/private/wx/cocoa/bitmap.rkt @@ -14,11 +14,13 @@ (define quartz-bitmap% (class bitmap% - (init w h) + (init w h [with-alpha? #t]) (super-make-object (make-alternate-bitmap-kind w h)) (define s - (let ([s (cairo_quartz_surface_create CAIRO_FORMAT_ARGB32 + (let ([s (cairo_quartz_surface_create (if with-alpha? + CAIRO_FORMAT_ARGB32 + CAIRO_FORMAT_RGB24) w h)]) ;; initialize bitmap to empty - needed? @@ -34,8 +36,14 @@ (define/override (is-color?) #t) + (define has-alpha? with-alpha?) + (define/override (has-alpha-channel?) has-alpha?) + (define/override (get-cairo-surface) s) - (define/override (get-cairo-alpha-surface) s) + (define/override (get-cairo-alpha-surface) + (if has-alpha? + s + (super get-cairo-alpha-surface))) (define/override (release-bitmap-storage) (atomically diff --git a/collects/mred/private/wx/cocoa/dc.rkt b/collects/mred/private/wx/cocoa/dc.rkt index 0b821447d9..cb81eb3e8f 100644 --- a/collects/mred/private/wx/cocoa/dc.rkt +++ b/collects/mred/private/wx/cocoa/dc.rkt @@ -48,7 +48,9 @@ g))))) ;; Use a quartz bitmap so that text looks good: - (define/override (make-backing-bitmap w h) (make-object quartz-bitmap% w h)) + (define trans? transparent?) + (define/override (make-backing-bitmap w h) + (make-object quartz-bitmap% w h trans?)) (define/override (can-combine-text? sz) #t) (define/override (get-backing-size xb yb)