summaryrefslogtreecommitdiff
path: root/lisp/ouat/tile-graphics.lisp
blob: f4158f1b73aa51485068d727320bf91758fa70c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
(in-package :ouat)

(defun tile-image (file letter subscr
                   &key (size 100) (hoffset 0))
  (let* ((radius (* 0.05 size))
         (normal-letter-height (* 0.76 size))
         (letter-height normal-letter-height)
         (letter-voffset (* 0.5 (- normal-letter-height
                                   letter-height)))
         (normal-subscr-height (* 0.2 size))
         (subscr-height normal-subscr-height)
         (subscr-voffset (* 0.5 (- normal-subscr-height
                                   subscr-height))))
  (with-canvas (:width size :height size)
    (set-gradient-fill 0 0 
                       0.33 0.33 0.33 1
                       size size
                       0.53 0.53 0.53 1)
    (rounded-rectangle 0 0 size size radius radius)
    (fill-path)
    (set-rgb-fill 0.97 0.97 1.0)
    (set-font (get-font "/home/john/fonts/VeraBd.ttf") letter-height)
    (draw-centered-string (* (+ 0.44 hoffset) size)
                          (+ (* 0.28 size) letter-voffset)
                          letter)
    (set-font (get-font "/home/john/fonts/VeraBd.ttf") subscr-height)
    (set-rgba-fill 0.97 0.97 1.0 0.6)
    (draw-centered-string (* 0.83 size)
                          (+ (* 0.1 size) subscr-voffset) 
                          subscr)
    (save-png file))))

(defun tile-distribution-images (tile-distribution
                                 &key prefix (size 100))
  (loop
     for tile across tile-distribution
     when tile do
       (let ((file (format nil "~a~a.png"
                           (or prefix "") (tile-name tile)))
             (letter (or (tile-text tile) "?"))
             (subscr (format nil "~a" (tile-score tile))))
         (tile-image file letter subscr :size size))))