diff --git a/FranzCross/assets/icon-xmas/icon-00.png b/FranzCross/assets/icon-xmas/icon-00.png new file mode 100644 index 0000000..56188dc Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-00.png differ diff --git a/FranzCross/assets/icon-xmas/icon-00@2x.png b/FranzCross/assets/icon-xmas/icon-00@2x.png new file mode 100644 index 0000000..09a5dcd Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-00@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-01.png b/FranzCross/assets/icon-xmas/icon-01.png new file mode 100644 index 0000000..965683c Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-01.png differ diff --git a/FranzCross/assets/icon-xmas/icon-01@2x.png b/FranzCross/assets/icon-xmas/icon-01@2x.png new file mode 100644 index 0000000..a62b5ff Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-01@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-02.png b/FranzCross/assets/icon-xmas/icon-02.png new file mode 100644 index 0000000..f6e332e Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-02.png differ diff --git a/FranzCross/assets/icon-xmas/icon-02@2x.png b/FranzCross/assets/icon-xmas/icon-02@2x.png new file mode 100644 index 0000000..4a32d8b Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-02@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-03.png b/FranzCross/assets/icon-xmas/icon-03.png new file mode 100644 index 0000000..8ec4f33 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-03.png differ diff --git a/FranzCross/assets/icon-xmas/icon-03@2x.png b/FranzCross/assets/icon-xmas/icon-03@2x.png new file mode 100644 index 0000000..c4fdc18 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-03@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-04.png b/FranzCross/assets/icon-xmas/icon-04.png new file mode 100644 index 0000000..31c2459 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-04.png differ diff --git a/FranzCross/assets/icon-xmas/icon-04@2x.png b/FranzCross/assets/icon-xmas/icon-04@2x.png new file mode 100644 index 0000000..ea4ed02 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-04@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-05.png b/FranzCross/assets/icon-xmas/icon-05.png new file mode 100644 index 0000000..7df5f88 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-05.png differ diff --git a/FranzCross/assets/icon-xmas/icon-05@2x.png b/FranzCross/assets/icon-xmas/icon-05@2x.png new file mode 100644 index 0000000..013855a Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-05@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-06.png b/FranzCross/assets/icon-xmas/icon-06.png new file mode 100644 index 0000000..6a08814 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-06.png differ diff --git a/FranzCross/assets/icon-xmas/icon-06@2x.png b/FranzCross/assets/icon-xmas/icon-06@2x.png new file mode 100644 index 0000000..d2600b3 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-06@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-07.png b/FranzCross/assets/icon-xmas/icon-07.png new file mode 100644 index 0000000..6aaba16 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-07.png differ diff --git a/FranzCross/assets/icon-xmas/icon-07@2x.png b/FranzCross/assets/icon-xmas/icon-07@2x.png new file mode 100644 index 0000000..ee376d3 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-07@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-08.png b/FranzCross/assets/icon-xmas/icon-08.png new file mode 100644 index 0000000..ac55dee Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-08.png differ diff --git a/FranzCross/assets/icon-xmas/icon-08@2x.png b/FranzCross/assets/icon-xmas/icon-08@2x.png new file mode 100644 index 0000000..3c4d474 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-08@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-09.png b/FranzCross/assets/icon-xmas/icon-09.png new file mode 100644 index 0000000..7d4d5b6 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-09.png differ diff --git a/FranzCross/assets/icon-xmas/icon-09@2x.png b/FranzCross/assets/icon-xmas/icon-09@2x.png new file mode 100644 index 0000000..f844e2a Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-09@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-10.png b/FranzCross/assets/icon-xmas/icon-10.png new file mode 100644 index 0000000..61cb39f Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-10.png differ diff --git a/FranzCross/assets/icon-xmas/icon-10@2x.png b/FranzCross/assets/icon-xmas/icon-10@2x.png new file mode 100644 index 0000000..73ee363 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-10@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-11.png b/FranzCross/assets/icon-xmas/icon-11.png new file mode 100644 index 0000000..4004968 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-11.png differ diff --git a/FranzCross/assets/icon-xmas/icon-11@2x.png b/FranzCross/assets/icon-xmas/icon-11@2x.png new file mode 100644 index 0000000..c4fd223 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-11@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-12.png b/FranzCross/assets/icon-xmas/icon-12.png new file mode 100644 index 0000000..20de4bc Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-12.png differ diff --git a/FranzCross/assets/icon-xmas/icon-12@2x.png b/FranzCross/assets/icon-xmas/icon-12@2x.png new file mode 100644 index 0000000..823b48b Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-12@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-13.png b/FranzCross/assets/icon-xmas/icon-13.png new file mode 100644 index 0000000..2034545 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-13.png differ diff --git a/FranzCross/assets/icon-xmas/icon-13@2x.png b/FranzCross/assets/icon-xmas/icon-13@2x.png new file mode 100644 index 0000000..8d39fe9 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-13@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-14.png b/FranzCross/assets/icon-xmas/icon-14.png new file mode 100644 index 0000000..baeb508 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-14.png differ diff --git a/FranzCross/assets/icon-xmas/icon-14@2x.png b/FranzCross/assets/icon-xmas/icon-14@2x.png new file mode 100644 index 0000000..ba81f49 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-14@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-15.png b/FranzCross/assets/icon-xmas/icon-15.png new file mode 100644 index 0000000..eac0a08 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-15.png differ diff --git a/FranzCross/assets/icon-xmas/icon-15@2x.png b/FranzCross/assets/icon-xmas/icon-15@2x.png new file mode 100644 index 0000000..16b7fcb Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-15@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-16.png b/FranzCross/assets/icon-xmas/icon-16.png new file mode 100644 index 0000000..508649c Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-16.png differ diff --git a/FranzCross/assets/icon-xmas/icon-16@2x.png b/FranzCross/assets/icon-xmas/icon-16@2x.png new file mode 100644 index 0000000..0876422 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-16@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-17.png b/FranzCross/assets/icon-xmas/icon-17.png new file mode 100644 index 0000000..e1c4047 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-17.png differ diff --git a/FranzCross/assets/icon-xmas/icon-17@2x.png b/FranzCross/assets/icon-xmas/icon-17@2x.png new file mode 100644 index 0000000..60f98b2 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-17@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-18.png b/FranzCross/assets/icon-xmas/icon-18.png new file mode 100644 index 0000000..921bde4 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-18.png differ diff --git a/FranzCross/assets/icon-xmas/icon-18@2x.png b/FranzCross/assets/icon-xmas/icon-18@2x.png new file mode 100644 index 0000000..d918942 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-18@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-19.png b/FranzCross/assets/icon-xmas/icon-19.png new file mode 100644 index 0000000..2c4d3e8 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-19.png differ diff --git a/FranzCross/assets/icon-xmas/icon-19@2x.png b/FranzCross/assets/icon-xmas/icon-19@2x.png new file mode 100644 index 0000000..236b5a4 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-19@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-20.png b/FranzCross/assets/icon-xmas/icon-20.png new file mode 100644 index 0000000..2b70c56 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-20.png differ diff --git a/FranzCross/assets/icon-xmas/icon-20@2x.png b/FranzCross/assets/icon-xmas/icon-20@2x.png new file mode 100644 index 0000000..725af48 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-20@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-21.png b/FranzCross/assets/icon-xmas/icon-21.png new file mode 100644 index 0000000..5479744 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-21.png differ diff --git a/FranzCross/assets/icon-xmas/icon-21@2x.png b/FranzCross/assets/icon-xmas/icon-21@2x.png new file mode 100644 index 0000000..e27c4b4 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-21@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-22.png b/FranzCross/assets/icon-xmas/icon-22.png new file mode 100644 index 0000000..747f38a Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-22.png differ diff --git a/FranzCross/assets/icon-xmas/icon-22@2x.png b/FranzCross/assets/icon-xmas/icon-22@2x.png new file mode 100644 index 0000000..cfa20f8 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-22@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-23.png b/FranzCross/assets/icon-xmas/icon-23.png new file mode 100644 index 0000000..fc7a8e0 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-23.png differ diff --git a/FranzCross/assets/icon-xmas/icon-23@2x.png b/FranzCross/assets/icon-xmas/icon-23@2x.png new file mode 100644 index 0000000..c5bd291 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-23@2x.png differ diff --git a/FranzCross/assets/icon-xmas/icon-24.png b/FranzCross/assets/icon-xmas/icon-24.png new file mode 100644 index 0000000..0540550 Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-24.png differ diff --git a/FranzCross/assets/icon-xmas/icon-24@2x.png b/FranzCross/assets/icon-xmas/icon-24@2x.png new file mode 100644 index 0000000..f9171da Binary files /dev/null and b/FranzCross/assets/icon-xmas/icon-24@2x.png differ diff --git a/FranzCross/common.rkt b/FranzCross/common.rkt index 3d69f46..6776381 100644 --- a/FranzCross/common.rkt +++ b/FranzCross/common.rkt @@ -1,6 +1,7 @@ #lang racket/base -(require (prefix-in gui: racket/gui) +(require racket/format + (prefix-in gui: racket/gui) racket/gui/easy/color racket/gui/easy/font racket/runtime-path) @@ -93,6 +94,7 @@ code.png gear.png icon_512x512.png + icon-xmas pause.png play.png plus.png @@ -114,3 +116,12 @@ [play-bmp play.png] [plus-bmp plus.png] [viewfinder-ellipsis-bmp viewfinder-ellipsis.png]) + +(provide + xmas-icon-bmps) + +(define xmas-icon-bmps + (for/vector ([i (in-range 25)]) + (define path + (build-path icon-xmas (format "icon-~a.png" (~r i #:min-width 2 #:pad-string "0")))) + (gui:read-bitmap #:try-@2x? #t path))) diff --git a/FranzCross/welcome-window.rkt b/FranzCross/welcome-window.rkt index 70d80ec..7ba8c5d 100644 --- a/FranzCross/welcome-window.rkt +++ b/FranzCross/welcome-window.rkt @@ -6,10 +6,13 @@ (prefix-in p: pict) racket/gui/easy racket/gui/easy/operator + racket/math (prefix-in ~ threading) "canvas-list.rkt" "common.rkt" - "mixin.rkt") + "mixin.rkt" + "observable.rkt" + "xmas-icon.rkt") (provide welcome-window) @@ -25,9 +28,11 @@ (hpanel (vpanel #:alignment '(center center) - (image - #:size '(128 128) - icon_512x512.png) + (if xmas? + (xmas-icon) + (image + #:size '(128 128) + icon_512x512.png)) (text #:font system-font-xl "Welcome to Franz") diff --git a/FranzCross/xmas-icon.rkt b/FranzCross/xmas-icon.rkt new file mode 100644 index 0000000..963002b --- /dev/null +++ b/FranzCross/xmas-icon.rkt @@ -0,0 +1,51 @@ +#lang racket/gui/easy + +(require racket/class + racket/math + "common.rkt" + "observable.rkt") + +(provide + xmas? + xmas-icon) + +(define xmas? + (let ([d (seconds->date (current-seconds))]) + (define c (+ (* (date-month d) 100) (date-day d))) + (or (<= c 115) + (>= c 1115)))) + +(define (xmas-icon) + (define-observables + [@xmas-tick 0]) + (define tick-thd + (void + (thread + (lambda () + (define r (* 2 (/ 1 25.0))) + (define t (current-inexact-monotonic-milliseconds)) + (let loop () + (@xmas-tick:= + (exact-round + (/ (- (current-inexact-monotonic-milliseconds) t) + (* 1000 r)))) + (sleep r) + (loop)))))) + (add-hooks + #:on-destroy + (lambda () + (kill-thread tick-thd)) + (canvas + @xmas-tick + #:style '(transparent) + #:stretch '(#f #f) + #:min-size '(128 128) + (lambda (dc tick) + (define idx (modulo tick (vector-length xmas-icon-bmps))) + (define bmp (vector-ref xmas-icon-bmps idx)) + (send dc draw-bitmap bmp 0 0))))) + +(module+ main + (render + (window + (xmas-icon))))