diff --git a/pkgs/games/cards/card-class.rkt b/pkgs/games/cards/card-class.rkt index 5372d655b3..bfd4a65130 100644 --- a/pkgs/games/cards/card-class.rkt +++ b/pkgs/games/cards/card-class.rkt @@ -11,27 +11,10 @@ (define prev-regions #f) (define prev-region-dc #f) - (define (with-card-region dc x y width height thunk) - (let ([rs (if #f ; (eq? prev-region-dc dc) <- assumes the same xform matrix - prev-regions - (cons (make-object mred:region% dc) - (make-object mred:region% dc)))]) - (set! prev-regions rs) - (set! prev-region-dc dc) - (send (car rs) set-rectangle x (add1 y) width (- height 2)) - (send (cdr rs) set-rectangle (add1 x) y (- width 2) height) - (send (car rs) union (cdr rs)) - (let ([r (send dc get-clipping-region)]) - (when r - (send (car rs) intersect r)) - (send dc set-clipping-region (car rs)) - (thunk) - (send dc set-clipping-region r)))) - (define (rotate-bm bm cw?) (let ([w (send bm get-width)] [h (send bm get-height)]) - (let ([bm2 (make-object mred:bitmap% h w)] + (let ([bm2 (mred:make-bitmap h w)] [s (make-bytes (* w h 4))] [s2 (make-bytes (* h w 4))]) (send bm get-argb-pixels 0 0 w h s) @@ -197,15 +180,12 @@ (check-dim) (let ([do-draw (lambda (x y) - (with-card-region - dc x y width height - (lambda () - (send dc draw-bitmap - (let ([bm (if flipped? - (if is-dim? dim-back back) - (if is-dim? dim-front front))]) - (get-rotated bm rotated)) - x y))))]) + (send dc draw-bitmap + (let ([bm (if flipped? + (if is-dim? dim-back back) + (if is-dim? dim-front front))]) + (get-rotated bm rotated)) + x y))]) (if semi-flipped? (let-values ([(sx sy) (send dc get-scale)]) (case rotated diff --git a/pkgs/games/cards/generate.rkt b/pkgs/games/cards/generate.rkt new file mode 100644 index 0000000000..46a6bcf761 --- /dev/null +++ b/pkgs/games/cards/generate.rkt @@ -0,0 +1,301 @@ +#lang racket/base + +;; Code used to generate card images, just in case the cards +;; need to be regenarted in a similar way. This code relies +;; on fonts that were available on a Mac OS X 10.9 machine +;; at the time that the cards were generated. + +(module generate racket + (require racket/draw) + + (define W 71) + (define H 96) + + (define IW 41) + (define IH 73) + + ;; Numbers: Lucida Grande + ;; Letters: Helvetica + ;; Suits: Osaka + + (define (extract-color) + (define bm0 (read-bitmap "card-1-1.png")) + (define c (new color%)) + (send (send bm0 make-dc) get-pixel (sub1 (sub1 W)) 20 c) + (list + (send c red) + (send c green) + (send c blue))) + + ;; Extract the core of a face card so that it can be re-decorated. + ;; some by-hand editing may be needed to generate images + ;; in "faces-clean". Create initial cards by scaling up the originals + ;; such as ImageMagick's `-adaptive-resize` mode. + (define (extract-faces) + (define D 0) + (define dh 2) + (define tw (* 2 (+ D IW))) + (define th (- (* 2 (+ D IH)) (* 2 dh))) + (define T 200) + + (for* ([val (in-range 10 13)] + [suit 4]) + + (define (white-out bstr x y) + (define Zx (cond + [(and (= val 11) (= suit 3)) 26] + [(and (= val 12) (= suit 0)) 28] + [(and (= val 12) (= suit 2)) 28] + [else 32])) + (define Zy 40) + (when (or (and (< 0 x Zx) (< 0 y Zy)) + (and (< (- tw Zx) x tw) (< (- th Zy) y th))) + (define p (* 4 (+ x (* y tw)))) + (define r (bytes-ref bstr (+ p 1))) + (define g (bytes-ref bstr (+ p 2))) + (define b (bytes-ref bstr (+ p 3))) + (unless (and (r . > . T) + (g . > . T) + (b . > . T)) + (bytes-set! bstr (+ p 1) 255) + (bytes-set! bstr (+ p 2) 255) + (bytes-set! bstr (+ p 3) 255) + (white-out bstr (- x 1) y) + (white-out bstr (+ x 1) y) + (white-out bstr x (- y 1)) + (white-out bstr x (+ y 1))))) + + (define old-bm (read-bitmap + (collection-file-path (format "card-~a-~a@2x.png" val suit) "games/cards/hicolor"))) + (define bm2 (make-bitmap tw th)) + (define dc (send bm2 make-dc)) + (define dx (quotient (- W (+ D IW)) 2)) + (define dy (quotient (- H (+ D IH)) 2)) + (send dc draw-bitmap-section old-bm 0 0 (* 2 dx) (+ (* 2 dy) dh) tw th) + (define bstr (make-bytes (* tw th 4))) + (send bm2 get-argb-pixels 0 0 tw th bstr) + (define P 16) + (white-out bstr P P) + (white-out bstr (- tw P) (- th P)) + (send bm2 set-argb-pixels 0 0 tw th bstr) + (send bm2 save-file (format "faces/face-~a-~a.png" val suit) 'png))) + + (define (card suit val) + (define bm (make-bitmap W H #:backing-scale 2)) + (define dc (send bm make-dc)) + + (define clip-path (new dc-path%)) + (define R 4) + (send clip-path move-to R 0) + (send clip-path arc (- W R) 0 R R (* pi 1/2) 0 #f) + (send clip-path arc (- W R) (- H R) R R 0 (* pi -1/2) #f) + (send clip-path arc 0 (- H R) R R (* pi -1/2) (* pi -1) #f) + (send clip-path arc 0 0 R R (* pi -1) (* pi -3/2) #f) + (send clip-path close) + (define region (new region%)) + (send region set-path clip-path) + (send dc set-clipping-region region) + + (send dc set-pen "black" 1 'transparent) + (send dc set-brush (make-color 236 236 186) 'solid) + (send dc draw-rectangle 0 0 W H) + + (send dc set-smoothing 'smoothed) + (send dc set-brush "black" 'transparent) + (define tr (send dc get-transformation)) + (send dc translate -1.0 -1.0) + (send dc set-pen (make-color 200 200 180) 2 'solid) + (send dc draw-path clip-path 0 0) + (send dc set-transformation tr) + (send dc set-pen (make-color 150 150 100) 2 'solid) + (send dc draw-path clip-path 0 0) + (send dc set-smoothing 'aligned) + + (cond + [(and (not suit) (not val)) + (define dx 4) + (send dc set-pen "black" 1 'transparent) + (send dc set-brush (make-color 0 170 0) 'solid) + (send dc draw-rectangle dx dx (- W dx dx) (- H dx dx)) + (send dc set-clipping-rect dx dx (- W dx dx) (- H dx dx)) + (send dc set-text-foreground (make-color 0 240 0)) + (send dc set-font (make-font #:face "Athelas" #:size 16)) + (define-values (lw lh ld la) (send dc get-text-extent "\u3BB")) + (define d (/ (- W dx dx) 8)) + (for* ([j (in-range -4 5)] + [i (in-range 8)]) + (define x (+ dx (* i d))) + (define y (+ -2 (/ W 2) (* j (+ 1 (/ (- H dx dx) 8))))) + (define flip? (odd? (+ i j))) + (send dc draw-text "\u3BB" + (+ x (if flip? 0 lw)) + (+ y (if flip? 0 lh)) + #f 0 (if flip? 0 pi)))] + [else + (define pip + (case suit + [(0) "\u2663"] ; club + [(1) "\u2666"] ; diamond + [(2) "\u2665"] ; heart + [(3) "\u2660"])) ; spade + (define color + (case suit + [(0 3) "black"] + [(1 2) (make-color 240 0 0)])) + (define num + (case val + [(0) "A"] + [(9) "I0"] + [(10) "J"] + [(11) "Q"] + [(12) "K"] + [else (format "~a" (add1 val))])) + (define squish + (case val + [(9) #e0.9] + [(10) #e1.1] + [(11) #e0.8] + [else 1])) + + (send dc set-text-foreground color) + + (when (val . > . 9) + (define (get) + (read-bitmap (format "faces-clean/face-~a-~a.png" val suit))) + (define old-bm (get)) + (define old-bm2 (get)) + + (define odc (send old-bm make-dc)) + (send odc rotate pi) + (send odc translate (- (send old-bm get-width)) (- (send old-bm get-height))) + (send odc set-clipping-rect 0 0 (send old-bm get-width) (quotient (send old-bm get-height) 2)) + (send odc draw-bitmap old-bm2 0 0) + + (define tr (send dc get-transformation)) + (send dc scale 0.5 0.5) + (define D 0) + (define dh 2) + (define dx (quotient (- W (+ D IW)) 2)) + (define dy (quotient (- H (+ D IH)) 2)) + (send dc draw-bitmap old-bm (* 2 dx) (+ (* 2 dy) dh)) + (send dc set-transformation tr) + (send dc set-pen (make-color 150 150 100) 1 'solid) + (send dc draw-rectangle (- dx 1) (- dy 0) (+ IW 2) (+ IH 0))) + + (define number? (<= 1 val 8)) + + (define (half first?) + (send dc set-font (make-font #:face (if number? + "Lucida Grande" + "Helvetica") + #:weight 'bold #:size 18)) + + (define tr (send dc get-transformation)) + (send dc scale squish 1) + (send dc draw-text num (/ 1 squish) (if number? 0 4) #t) + (define-values (nw nh nd na) (send dc get-text-extent num)) + (send dc set-transformation tr) + + (send dc set-font (make-font #:face "Osaka" #:size 12)) + (define-values (spw sph spd spa) (send dc get-text-extent pip)) + (send dc draw-text pip (+ 1 (quotient (- (floor (* squish nw)) spw) 2)) 20) + + (send dc set-font (make-font #:face "Osaka" #:size 16)) + (define-values (pw ph pd pa) (send dc get-text-extent pip)) + + (define dx (quotient (- W IW) 2)) + (define dy (quotient (- H IH) 2)) + (define dy2 (+ dy ph (/ (- (/ IH 2) ph ph) 2))) + + (define (pips n) + (case n + [(1) + (when first? + (cond + [(and (= val 0) (= suit 3)) + (define S 6) + + (define plt (read-bitmap (collection-file-path "PLT-206.png" "icons"))) + (define w (send plt get-width)) + (define h (send plt get-height)) + + (define spade (make-bitmap w h)) + (define sdc (send spade make-dc)) + (define f (make-font #:face (send (send dc get-font) get-face) #:size (* 4 64))) + (define-values (pw ph pd pa) (send sdc get-text-extent pip f)) + (send sdc set-font f) + (send sdc draw-text pip (quotient (- w pw) 2) (quotient (- h ph) 2)) + + (define bstr (make-bytes (* w h 4))) + (send plt get-argb-pixels 0 0 w h bstr) + (define sbstr (make-bytes (* w h 4))) + (send spade get-argb-pixels 0 0 w h sbstr) + + (for ([i (in-range 0 (* w h 4) 4)]) + (define a (quotient (+ (bytes-ref bstr (+ i 1)) + (bytes-ref bstr (+ i 2)) + (bytes-ref bstr (+ i 3))) + 3)) + (bytes-set! bstr i (bytes-ref sbstr i)) + (bytes-set! bstr (+ i 1) a) + (bytes-set! bstr (+ i 2) a) + (bytes-set! bstr (+ i 3) a)) + (send plt set-argb-pixels 0 0 w h bstr) + (define tr (send dc get-transformation)) + (send dc scale (/ 1 S) (/ 1 S)) + (send dc draw-bitmap plt + (* S (/ (- W (quotient w S)) 2)) + (* S (/ (- H (quotient h S)) 2))) + (send dc set-transformation tr)] + [else + (send dc draw-text pip (quotient (- W pw) 2) (quotient (- H ph) 2))]))] + [(2) + (send dc draw-text pip (+ dx (quotient (- IW pw) 2)) dy)] + [(3) + (pips 1) + (pips 2)] + [(4) + (send dc draw-text pip dx dy) + (send dc draw-text pip (- W dx pw) dy)] + [(5) + (pips 4) + (pips 1)] + [(6) + (pips 4) + (when first? + (send dc draw-text pip dx (quotient (- H ph) 2)) + (send dc draw-text pip (- W dx pw) (quotient (- H ph) 2)))] + [(7) + (pips 6) + (when first? + (send dc draw-text pip (quotient (- W pw) 2) (+ dy (- (quotient IH 3) (quotient ph 2)))))] + [(8) + (pips 4) + (send dc draw-text pip dx dy2) + (send dc draw-text pip (- W dx pw) dy2)] + [(9) + (pips 8) + (pips 1)] + [(10) + (pips 8) + (send dc draw-text pip (quotient (- W pw) 2) (+ dy (- (quotient IH 4) (quotient ph 2))))] + [else + (send dc set-brush "white" 'solid) + (send dc set-pen "black" 1 'transparent) + (send dc draw-rectangle dx (+ dy 2) (- pw 2) (+ ph 3)) + (send dc draw-text pip (- dx 1) (+ dy 2))])) + + (pips (add1 val))) + + (half #t) + (send dc rotate pi) + (send dc translate (- W) (- H)) + (half #f)]) + + bm) + + (for* ([s 4] + [n 13]) + (send (card s n) save-file (format "/tmp/cards/card-~a-~a@2x.png" n s) 'png #:unscaled? #t)) + + (send (card #f #f) save-file "/tmp/cards/card-back@2x.png" 'png #:unscaled? #t)) diff --git a/pkgs/games/cards/hicolor/card-0-0.png b/pkgs/games/cards/hicolor/card-0-0.png index 170a0423b8..af1a4c0c1d 100644 Binary files a/pkgs/games/cards/hicolor/card-0-0.png and b/pkgs/games/cards/hicolor/card-0-0.png differ diff --git a/pkgs/games/cards/hicolor/card-0-0@2x.png b/pkgs/games/cards/hicolor/card-0-0@2x.png new file mode 100644 index 0000000000..a13c9b89dc Binary files /dev/null and b/pkgs/games/cards/hicolor/card-0-0@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-0-1.png b/pkgs/games/cards/hicolor/card-0-1.png index a9b584e70a..bf2471dc94 100644 Binary files a/pkgs/games/cards/hicolor/card-0-1.png and b/pkgs/games/cards/hicolor/card-0-1.png differ diff --git a/pkgs/games/cards/hicolor/card-0-1@2x.png b/pkgs/games/cards/hicolor/card-0-1@2x.png new file mode 100644 index 0000000000..1edfb86356 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-0-1@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-0-2.png b/pkgs/games/cards/hicolor/card-0-2.png index ed55dd1e88..81c1d25f0f 100644 Binary files a/pkgs/games/cards/hicolor/card-0-2.png and b/pkgs/games/cards/hicolor/card-0-2.png differ diff --git a/pkgs/games/cards/hicolor/card-0-2@2x.png b/pkgs/games/cards/hicolor/card-0-2@2x.png new file mode 100644 index 0000000000..6ac1e5f870 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-0-2@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-0-3.png b/pkgs/games/cards/hicolor/card-0-3.png index d035e708dc..08f8381d96 100644 Binary files a/pkgs/games/cards/hicolor/card-0-3.png and b/pkgs/games/cards/hicolor/card-0-3.png differ diff --git a/pkgs/games/cards/hicolor/card-0-3@2x.png b/pkgs/games/cards/hicolor/card-0-3@2x.png new file mode 100644 index 0000000000..1c654bbaf8 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-0-3@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-1-0.png b/pkgs/games/cards/hicolor/card-1-0.png index 103ac964d9..daf55b42ee 100644 Binary files a/pkgs/games/cards/hicolor/card-1-0.png and b/pkgs/games/cards/hicolor/card-1-0.png differ diff --git a/pkgs/games/cards/hicolor/card-1-0@2x.png b/pkgs/games/cards/hicolor/card-1-0@2x.png new file mode 100644 index 0000000000..80c0ecddf3 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-1-0@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-1-1.png b/pkgs/games/cards/hicolor/card-1-1.png index ca2ea27e65..47fa0e1ab7 100644 Binary files a/pkgs/games/cards/hicolor/card-1-1.png and b/pkgs/games/cards/hicolor/card-1-1.png differ diff --git a/pkgs/games/cards/hicolor/card-1-1@2x.png b/pkgs/games/cards/hicolor/card-1-1@2x.png new file mode 100644 index 0000000000..da67bef467 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-1-1@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-1-2.png b/pkgs/games/cards/hicolor/card-1-2.png index 2614893024..1b54b4eca0 100644 Binary files a/pkgs/games/cards/hicolor/card-1-2.png and b/pkgs/games/cards/hicolor/card-1-2.png differ diff --git a/pkgs/games/cards/hicolor/card-1-2@2x.png b/pkgs/games/cards/hicolor/card-1-2@2x.png new file mode 100644 index 0000000000..19bea47e47 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-1-2@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-1-3.png b/pkgs/games/cards/hicolor/card-1-3.png index b6a378d67f..59ec8cf3cf 100644 Binary files a/pkgs/games/cards/hicolor/card-1-3.png and b/pkgs/games/cards/hicolor/card-1-3.png differ diff --git a/pkgs/games/cards/hicolor/card-1-3@2x.png b/pkgs/games/cards/hicolor/card-1-3@2x.png new file mode 100644 index 0000000000..dda3d1574c Binary files /dev/null and b/pkgs/games/cards/hicolor/card-1-3@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-10-0.png b/pkgs/games/cards/hicolor/card-10-0.png index 63867322b3..ce837448e5 100644 Binary files a/pkgs/games/cards/hicolor/card-10-0.png and b/pkgs/games/cards/hicolor/card-10-0.png differ diff --git a/pkgs/games/cards/hicolor/card-10-0@2x.png b/pkgs/games/cards/hicolor/card-10-0@2x.png new file mode 100644 index 0000000000..2c2746ddfe Binary files /dev/null and b/pkgs/games/cards/hicolor/card-10-0@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-10-1.png b/pkgs/games/cards/hicolor/card-10-1.png index 23df7da92c..20abd29a9a 100644 Binary files a/pkgs/games/cards/hicolor/card-10-1.png and b/pkgs/games/cards/hicolor/card-10-1.png differ diff --git a/pkgs/games/cards/hicolor/card-10-1@2x.png b/pkgs/games/cards/hicolor/card-10-1@2x.png new file mode 100644 index 0000000000..f92d52cfcd Binary files /dev/null and b/pkgs/games/cards/hicolor/card-10-1@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-10-2.png b/pkgs/games/cards/hicolor/card-10-2.png index 03e2f63184..c6f03b0895 100644 Binary files a/pkgs/games/cards/hicolor/card-10-2.png and b/pkgs/games/cards/hicolor/card-10-2.png differ diff --git a/pkgs/games/cards/hicolor/card-10-2@2x.png b/pkgs/games/cards/hicolor/card-10-2@2x.png new file mode 100644 index 0000000000..a81ceb1074 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-10-2@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-10-3.png b/pkgs/games/cards/hicolor/card-10-3.png index 36a98e0d5b..b166377589 100644 Binary files a/pkgs/games/cards/hicolor/card-10-3.png and b/pkgs/games/cards/hicolor/card-10-3.png differ diff --git a/pkgs/games/cards/hicolor/card-10-3@2x.png b/pkgs/games/cards/hicolor/card-10-3@2x.png new file mode 100644 index 0000000000..f7c0795086 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-10-3@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-11-0.png b/pkgs/games/cards/hicolor/card-11-0.png index 3c6dc01833..d1b1865bc3 100644 Binary files a/pkgs/games/cards/hicolor/card-11-0.png and b/pkgs/games/cards/hicolor/card-11-0.png differ diff --git a/pkgs/games/cards/hicolor/card-11-0@2x.png b/pkgs/games/cards/hicolor/card-11-0@2x.png new file mode 100644 index 0000000000..8288c1834e Binary files /dev/null and b/pkgs/games/cards/hicolor/card-11-0@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-11-1.png b/pkgs/games/cards/hicolor/card-11-1.png index a7fc17e6eb..28251860c9 100644 Binary files a/pkgs/games/cards/hicolor/card-11-1.png and b/pkgs/games/cards/hicolor/card-11-1.png differ diff --git a/pkgs/games/cards/hicolor/card-11-1@2x.png b/pkgs/games/cards/hicolor/card-11-1@2x.png new file mode 100644 index 0000000000..cebdb2e94d Binary files /dev/null and b/pkgs/games/cards/hicolor/card-11-1@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-11-2.png b/pkgs/games/cards/hicolor/card-11-2.png index 1cf0f77a03..ac75fd15df 100644 Binary files a/pkgs/games/cards/hicolor/card-11-2.png and b/pkgs/games/cards/hicolor/card-11-2.png differ diff --git a/pkgs/games/cards/hicolor/card-11-2@2x.png b/pkgs/games/cards/hicolor/card-11-2@2x.png new file mode 100644 index 0000000000..e670bba3c2 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-11-2@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-11-3.png b/pkgs/games/cards/hicolor/card-11-3.png index 1963babd7f..12aa1f055b 100644 Binary files a/pkgs/games/cards/hicolor/card-11-3.png and b/pkgs/games/cards/hicolor/card-11-3.png differ diff --git a/pkgs/games/cards/hicolor/card-11-3@2x.png b/pkgs/games/cards/hicolor/card-11-3@2x.png new file mode 100644 index 0000000000..eeeb59e2e7 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-11-3@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-12-0.png b/pkgs/games/cards/hicolor/card-12-0.png index 772b8c68ab..7f78bad895 100644 Binary files a/pkgs/games/cards/hicolor/card-12-0.png and b/pkgs/games/cards/hicolor/card-12-0.png differ diff --git a/pkgs/games/cards/hicolor/card-12-0@2x.png b/pkgs/games/cards/hicolor/card-12-0@2x.png new file mode 100644 index 0000000000..a0eca7166e Binary files /dev/null and b/pkgs/games/cards/hicolor/card-12-0@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-12-1.png b/pkgs/games/cards/hicolor/card-12-1.png index 2eeb52f8f3..a553db5c73 100644 Binary files a/pkgs/games/cards/hicolor/card-12-1.png and b/pkgs/games/cards/hicolor/card-12-1.png differ diff --git a/pkgs/games/cards/hicolor/card-12-1@2x.png b/pkgs/games/cards/hicolor/card-12-1@2x.png new file mode 100644 index 0000000000..8ddf43abd7 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-12-1@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-12-2.png b/pkgs/games/cards/hicolor/card-12-2.png index 304676016a..d0cad81f7e 100644 Binary files a/pkgs/games/cards/hicolor/card-12-2.png and b/pkgs/games/cards/hicolor/card-12-2.png differ diff --git a/pkgs/games/cards/hicolor/card-12-2@2x.png b/pkgs/games/cards/hicolor/card-12-2@2x.png new file mode 100644 index 0000000000..dd2f4bdd31 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-12-2@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-12-3.png b/pkgs/games/cards/hicolor/card-12-3.png index 9390ec8b62..cb00c1616c 100644 Binary files a/pkgs/games/cards/hicolor/card-12-3.png and b/pkgs/games/cards/hicolor/card-12-3.png differ diff --git a/pkgs/games/cards/hicolor/card-12-3@2x.png b/pkgs/games/cards/hicolor/card-12-3@2x.png new file mode 100644 index 0000000000..2c3a9a8678 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-12-3@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-2-0.png b/pkgs/games/cards/hicolor/card-2-0.png index 950ead8f9a..86b83ac4ad 100644 Binary files a/pkgs/games/cards/hicolor/card-2-0.png and b/pkgs/games/cards/hicolor/card-2-0.png differ diff --git a/pkgs/games/cards/hicolor/card-2-0@2x.png b/pkgs/games/cards/hicolor/card-2-0@2x.png new file mode 100644 index 0000000000..65579d4257 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-2-0@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-2-1.png b/pkgs/games/cards/hicolor/card-2-1.png index f33b640b1f..80666a454a 100644 Binary files a/pkgs/games/cards/hicolor/card-2-1.png and b/pkgs/games/cards/hicolor/card-2-1.png differ diff --git a/pkgs/games/cards/hicolor/card-2-1@2x.png b/pkgs/games/cards/hicolor/card-2-1@2x.png new file mode 100644 index 0000000000..c49047cee9 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-2-1@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-2-2.png b/pkgs/games/cards/hicolor/card-2-2.png index 871b727f1a..18b609a437 100644 Binary files a/pkgs/games/cards/hicolor/card-2-2.png and b/pkgs/games/cards/hicolor/card-2-2.png differ diff --git a/pkgs/games/cards/hicolor/card-2-2@2x.png b/pkgs/games/cards/hicolor/card-2-2@2x.png new file mode 100644 index 0000000000..cdb8e73b56 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-2-2@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-2-3.png b/pkgs/games/cards/hicolor/card-2-3.png index 4d0147cc9a..84589886ee 100644 Binary files a/pkgs/games/cards/hicolor/card-2-3.png and b/pkgs/games/cards/hicolor/card-2-3.png differ diff --git a/pkgs/games/cards/hicolor/card-2-3@2x.png b/pkgs/games/cards/hicolor/card-2-3@2x.png new file mode 100644 index 0000000000..b496008a42 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-2-3@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-3-0.png b/pkgs/games/cards/hicolor/card-3-0.png index 6b73ba0628..70ef82ab01 100644 Binary files a/pkgs/games/cards/hicolor/card-3-0.png and b/pkgs/games/cards/hicolor/card-3-0.png differ diff --git a/pkgs/games/cards/hicolor/card-3-0@2x.png b/pkgs/games/cards/hicolor/card-3-0@2x.png new file mode 100644 index 0000000000..caff8018c6 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-3-0@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-3-1.png b/pkgs/games/cards/hicolor/card-3-1.png index de54131f6a..dfc293c429 100644 Binary files a/pkgs/games/cards/hicolor/card-3-1.png and b/pkgs/games/cards/hicolor/card-3-1.png differ diff --git a/pkgs/games/cards/hicolor/card-3-1@2x.png b/pkgs/games/cards/hicolor/card-3-1@2x.png new file mode 100644 index 0000000000..8fdfd4b7f2 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-3-1@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-3-2.png b/pkgs/games/cards/hicolor/card-3-2.png index 603c23d14a..8bc0fa30ab 100644 Binary files a/pkgs/games/cards/hicolor/card-3-2.png and b/pkgs/games/cards/hicolor/card-3-2.png differ diff --git a/pkgs/games/cards/hicolor/card-3-2@2x.png b/pkgs/games/cards/hicolor/card-3-2@2x.png new file mode 100644 index 0000000000..5aceb86033 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-3-2@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-3-3.png b/pkgs/games/cards/hicolor/card-3-3.png index 3ed48fbc4b..579318c741 100644 Binary files a/pkgs/games/cards/hicolor/card-3-3.png and b/pkgs/games/cards/hicolor/card-3-3.png differ diff --git a/pkgs/games/cards/hicolor/card-3-3@2x.png b/pkgs/games/cards/hicolor/card-3-3@2x.png new file mode 100644 index 0000000000..497f6258ab Binary files /dev/null and b/pkgs/games/cards/hicolor/card-3-3@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-4-0.png b/pkgs/games/cards/hicolor/card-4-0.png index c33c9e8a78..bb4c966641 100644 Binary files a/pkgs/games/cards/hicolor/card-4-0.png and b/pkgs/games/cards/hicolor/card-4-0.png differ diff --git a/pkgs/games/cards/hicolor/card-4-0@2x.png b/pkgs/games/cards/hicolor/card-4-0@2x.png new file mode 100644 index 0000000000..42ab3efe56 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-4-0@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-4-1.png b/pkgs/games/cards/hicolor/card-4-1.png index 45d2fca9b4..165d896c05 100644 Binary files a/pkgs/games/cards/hicolor/card-4-1.png and b/pkgs/games/cards/hicolor/card-4-1.png differ diff --git a/pkgs/games/cards/hicolor/card-4-1@2x.png b/pkgs/games/cards/hicolor/card-4-1@2x.png new file mode 100644 index 0000000000..6ec4b2ec9e Binary files /dev/null and b/pkgs/games/cards/hicolor/card-4-1@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-4-2.png b/pkgs/games/cards/hicolor/card-4-2.png index 8468ae525f..3006906646 100644 Binary files a/pkgs/games/cards/hicolor/card-4-2.png and b/pkgs/games/cards/hicolor/card-4-2.png differ diff --git a/pkgs/games/cards/hicolor/card-4-2@2x.png b/pkgs/games/cards/hicolor/card-4-2@2x.png new file mode 100644 index 0000000000..19fdbd4d3f Binary files /dev/null and b/pkgs/games/cards/hicolor/card-4-2@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-4-3.png b/pkgs/games/cards/hicolor/card-4-3.png index 2340a3fbd8..bc37ac5e67 100644 Binary files a/pkgs/games/cards/hicolor/card-4-3.png and b/pkgs/games/cards/hicolor/card-4-3.png differ diff --git a/pkgs/games/cards/hicolor/card-4-3@2x.png b/pkgs/games/cards/hicolor/card-4-3@2x.png new file mode 100644 index 0000000000..8728b316a9 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-4-3@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-5-0.png b/pkgs/games/cards/hicolor/card-5-0.png index fa42c9fc8c..e3acf4a8c8 100644 Binary files a/pkgs/games/cards/hicolor/card-5-0.png and b/pkgs/games/cards/hicolor/card-5-0.png differ diff --git a/pkgs/games/cards/hicolor/card-5-0@2x.png b/pkgs/games/cards/hicolor/card-5-0@2x.png new file mode 100644 index 0000000000..7e52b2c8cf Binary files /dev/null and b/pkgs/games/cards/hicolor/card-5-0@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-5-1.png b/pkgs/games/cards/hicolor/card-5-1.png index ca11f7657f..773b1ed5e0 100644 Binary files a/pkgs/games/cards/hicolor/card-5-1.png and b/pkgs/games/cards/hicolor/card-5-1.png differ diff --git a/pkgs/games/cards/hicolor/card-5-1@2x.png b/pkgs/games/cards/hicolor/card-5-1@2x.png new file mode 100644 index 0000000000..0901c9ee91 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-5-1@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-5-2.png b/pkgs/games/cards/hicolor/card-5-2.png index 2ebec82033..429aa1edb9 100644 Binary files a/pkgs/games/cards/hicolor/card-5-2.png and b/pkgs/games/cards/hicolor/card-5-2.png differ diff --git a/pkgs/games/cards/hicolor/card-5-2@2x.png b/pkgs/games/cards/hicolor/card-5-2@2x.png new file mode 100644 index 0000000000..75b75c8999 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-5-2@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-5-3.png b/pkgs/games/cards/hicolor/card-5-3.png index 388b33f391..e1433f85aa 100644 Binary files a/pkgs/games/cards/hicolor/card-5-3.png and b/pkgs/games/cards/hicolor/card-5-3.png differ diff --git a/pkgs/games/cards/hicolor/card-5-3@2x.png b/pkgs/games/cards/hicolor/card-5-3@2x.png new file mode 100644 index 0000000000..bd29e65f1b Binary files /dev/null and b/pkgs/games/cards/hicolor/card-5-3@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-6-0.png b/pkgs/games/cards/hicolor/card-6-0.png index 36aff252a0..96a61f7032 100644 Binary files a/pkgs/games/cards/hicolor/card-6-0.png and b/pkgs/games/cards/hicolor/card-6-0.png differ diff --git a/pkgs/games/cards/hicolor/card-6-0@2x.png b/pkgs/games/cards/hicolor/card-6-0@2x.png new file mode 100644 index 0000000000..c1de5d2e58 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-6-0@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-6-1.png b/pkgs/games/cards/hicolor/card-6-1.png index 0e34cc4e8f..c34fbdd522 100644 Binary files a/pkgs/games/cards/hicolor/card-6-1.png and b/pkgs/games/cards/hicolor/card-6-1.png differ diff --git a/pkgs/games/cards/hicolor/card-6-1@2x.png b/pkgs/games/cards/hicolor/card-6-1@2x.png new file mode 100644 index 0000000000..fdb2a29960 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-6-1@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-6-2.png b/pkgs/games/cards/hicolor/card-6-2.png index 0be31dd9fc..ef445ed409 100644 Binary files a/pkgs/games/cards/hicolor/card-6-2.png and b/pkgs/games/cards/hicolor/card-6-2.png differ diff --git a/pkgs/games/cards/hicolor/card-6-2@2x.png b/pkgs/games/cards/hicolor/card-6-2@2x.png new file mode 100644 index 0000000000..0e11954faf Binary files /dev/null and b/pkgs/games/cards/hicolor/card-6-2@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-6-3.png b/pkgs/games/cards/hicolor/card-6-3.png index cae981bf58..da0555d328 100644 Binary files a/pkgs/games/cards/hicolor/card-6-3.png and b/pkgs/games/cards/hicolor/card-6-3.png differ diff --git a/pkgs/games/cards/hicolor/card-6-3@2x.png b/pkgs/games/cards/hicolor/card-6-3@2x.png new file mode 100644 index 0000000000..3c97260028 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-6-3@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-7-0.png b/pkgs/games/cards/hicolor/card-7-0.png index cd31450107..79b4f5fc7b 100644 Binary files a/pkgs/games/cards/hicolor/card-7-0.png and b/pkgs/games/cards/hicolor/card-7-0.png differ diff --git a/pkgs/games/cards/hicolor/card-7-0@2x.png b/pkgs/games/cards/hicolor/card-7-0@2x.png new file mode 100644 index 0000000000..322ae5eb87 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-7-0@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-7-1.png b/pkgs/games/cards/hicolor/card-7-1.png index f6609e4cc3..4d85c9286d 100644 Binary files a/pkgs/games/cards/hicolor/card-7-1.png and b/pkgs/games/cards/hicolor/card-7-1.png differ diff --git a/pkgs/games/cards/hicolor/card-7-1@2x.png b/pkgs/games/cards/hicolor/card-7-1@2x.png new file mode 100644 index 0000000000..37a407e7ce Binary files /dev/null and b/pkgs/games/cards/hicolor/card-7-1@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-7-2.png b/pkgs/games/cards/hicolor/card-7-2.png index 2eba93f744..e05555b66b 100644 Binary files a/pkgs/games/cards/hicolor/card-7-2.png and b/pkgs/games/cards/hicolor/card-7-2.png differ diff --git a/pkgs/games/cards/hicolor/card-7-2@2x.png b/pkgs/games/cards/hicolor/card-7-2@2x.png new file mode 100644 index 0000000000..0c5164a209 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-7-2@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-7-3.png b/pkgs/games/cards/hicolor/card-7-3.png index 9cc34988f9..05977b378d 100644 Binary files a/pkgs/games/cards/hicolor/card-7-3.png and b/pkgs/games/cards/hicolor/card-7-3.png differ diff --git a/pkgs/games/cards/hicolor/card-7-3@2x.png b/pkgs/games/cards/hicolor/card-7-3@2x.png new file mode 100644 index 0000000000..eaa3e0320a Binary files /dev/null and b/pkgs/games/cards/hicolor/card-7-3@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-8-0.png b/pkgs/games/cards/hicolor/card-8-0.png index 635cc23c04..6726222163 100644 Binary files a/pkgs/games/cards/hicolor/card-8-0.png and b/pkgs/games/cards/hicolor/card-8-0.png differ diff --git a/pkgs/games/cards/hicolor/card-8-0@2x.png b/pkgs/games/cards/hicolor/card-8-0@2x.png new file mode 100644 index 0000000000..dcb28e26f0 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-8-0@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-8-1.png b/pkgs/games/cards/hicolor/card-8-1.png index 038cb00085..bc9685bd49 100644 Binary files a/pkgs/games/cards/hicolor/card-8-1.png and b/pkgs/games/cards/hicolor/card-8-1.png differ diff --git a/pkgs/games/cards/hicolor/card-8-1@2x.png b/pkgs/games/cards/hicolor/card-8-1@2x.png new file mode 100644 index 0000000000..8618db7a88 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-8-1@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-8-2.png b/pkgs/games/cards/hicolor/card-8-2.png index 43ee470c88..db0d24b00e 100644 Binary files a/pkgs/games/cards/hicolor/card-8-2.png and b/pkgs/games/cards/hicolor/card-8-2.png differ diff --git a/pkgs/games/cards/hicolor/card-8-2@2x.png b/pkgs/games/cards/hicolor/card-8-2@2x.png new file mode 100644 index 0000000000..bb7df8981e Binary files /dev/null and b/pkgs/games/cards/hicolor/card-8-2@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-8-3.png b/pkgs/games/cards/hicolor/card-8-3.png index 2b44fe0ee4..e53bd22ca5 100644 Binary files a/pkgs/games/cards/hicolor/card-8-3.png and b/pkgs/games/cards/hicolor/card-8-3.png differ diff --git a/pkgs/games/cards/hicolor/card-8-3@2x.png b/pkgs/games/cards/hicolor/card-8-3@2x.png new file mode 100644 index 0000000000..7cc250d439 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-8-3@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-9-0.png b/pkgs/games/cards/hicolor/card-9-0.png index 02b6143371..7a04a343dc 100644 Binary files a/pkgs/games/cards/hicolor/card-9-0.png and b/pkgs/games/cards/hicolor/card-9-0.png differ diff --git a/pkgs/games/cards/hicolor/card-9-0@2x.png b/pkgs/games/cards/hicolor/card-9-0@2x.png new file mode 100644 index 0000000000..2ab8c2ff94 Binary files /dev/null and b/pkgs/games/cards/hicolor/card-9-0@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-9-1.png b/pkgs/games/cards/hicolor/card-9-1.png index ea8c8eff8e..968505b8ff 100644 Binary files a/pkgs/games/cards/hicolor/card-9-1.png and b/pkgs/games/cards/hicolor/card-9-1.png differ diff --git a/pkgs/games/cards/hicolor/card-9-1@2x.png b/pkgs/games/cards/hicolor/card-9-1@2x.png new file mode 100644 index 0000000000..ef707df46c Binary files /dev/null and b/pkgs/games/cards/hicolor/card-9-1@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-9-2.png b/pkgs/games/cards/hicolor/card-9-2.png index 1185e15163..0f20d59200 100644 Binary files a/pkgs/games/cards/hicolor/card-9-2.png and b/pkgs/games/cards/hicolor/card-9-2.png differ diff --git a/pkgs/games/cards/hicolor/card-9-2@2x.png b/pkgs/games/cards/hicolor/card-9-2@2x.png new file mode 100644 index 0000000000..b8e0e7501f Binary files /dev/null and b/pkgs/games/cards/hicolor/card-9-2@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-9-3.png b/pkgs/games/cards/hicolor/card-9-3.png index 671d1ce613..0755ff3da4 100644 Binary files a/pkgs/games/cards/hicolor/card-9-3.png and b/pkgs/games/cards/hicolor/card-9-3.png differ diff --git a/pkgs/games/cards/hicolor/card-9-3@2x.png b/pkgs/games/cards/hicolor/card-9-3@2x.png new file mode 100644 index 0000000000..f54461ff0c Binary files /dev/null and b/pkgs/games/cards/hicolor/card-9-3@2x.png differ diff --git a/pkgs/games/cards/hicolor/card-back.png b/pkgs/games/cards/hicolor/card-back.png index af05e8ce6c..205f636350 100644 Binary files a/pkgs/games/cards/hicolor/card-back.png and b/pkgs/games/cards/hicolor/card-back.png differ diff --git a/pkgs/games/cards/hicolor/card-back@2x.png b/pkgs/games/cards/hicolor/card-back@2x.png new file mode 100644 index 0000000000..8d1eaa6e9b Binary files /dev/null and b/pkgs/games/cards/hicolor/card-back@2x.png differ diff --git a/pkgs/games/cards/make-cards.rkt b/pkgs/games/cards/make-cards.rkt index 7d5ac2976c..09954f96b1 100644 --- a/pkgs/games/cards/make-cards.rkt +++ b/pkgs/games/cards/make-cards.rkt @@ -6,22 +6,25 @@ (provide back deck-of-cards make-card) (define (get-bitmap file) - (make-object mred:bitmap% file)) + (mred:read-bitmap file + #:try-@2x? ((mred:get-display-backing-scale) . > . 1))) (define (make-dim bm-in) (let ([w (send bm-in get-width)] - [h (send bm-in get-height)]) - (let* ([bm (make-object mred:bitmap% w h)] + [h (send bm-in get-height)] + [s (inexact->exact (round (send bm-in get-backing-scale)))]) + (let* ([bm (mred:make-bitmap w h #:backing-scale s)] [mdc (make-object mred:bitmap-dc% bm)]) (send mdc draw-bitmap bm-in 0 0) - (let* ([len (* w h 4)] + (let* ([len (* w h 4 s s)] [b (make-bytes len)]) - (send mdc get-argb-pixels 0 0 w h b) + (send bm get-argb-pixels 0 0 (* w s) (* h s) b #:unscaled? #t) (let loop ([i 0]) (unless (= i len) - (bytes-set! b i (quotient (* 3 (bytes-ref b i)) 4)) + (when (positive? (modulo i 4)) + (bytes-set! b i (quotient (* 3 (bytes-ref b i)) 4))) (loop (add1 i)))) - (send mdc set-argb-pixels 0 0 w h b)) + (send bm set-argb-pixels 0 0 (* w s) (* h s) b #:unscaled? #t)) (send mdc set-bitmap #f) bm)))