Let's write β

プログラミング中にできたことか、思ったこととか

Vectoをつかってマークを自動生成

ちょっとしたマークやフラグを大量生成するならVectoをつかってみるのも手かもしれません。

(ql:quickload :vecto)
(defpackage :vecto-user
  (:use :cl :vecto))

(in-package :vecto-user)

(defun radiant-lambda (num file)
  (with-canvas (:width 90 :height 90)
               (let ((font (get-font "/usr/share/fonts/truetype/msttcorefonts/times.ttf"))
                     (flag-str (format nil "~A" num)))
                 (set-rgb-fill 1.0 0.65 0.3)
                 (centered-circle-path 45 45 35)
                 (fill-path)
                 (set-rgba-fill 1 1 1 0.3)
                 (centered-circle-path 45 45 30)
                 (fill-path)
                 (set-font font 40)
                 (set-rgb-fill 1 1 1)
                 (let* ((str-bound 
                          (string-bounding-box flag-str 40 font))
                        (height (- (aref str-bound 3) (aref str-bound 1)))
                        (width  (- (aref str-bound 2) (aref str-bound 0))))
                 (draw-centered-string 
                   (- 45 (aref str-bound 0))
                   (- 45 (/ height 2))
                   (format nil "~A" num))
                 (stroke))
                 (save-png file))))

(loop for num from 1 upto 31 
      do
      (radiant-lambda num (format nil "day_flag_~A.png" num)))

f:id:Pocket7878_dev:20120902175552p:image