mirror of
https://gitlab.com/eql/EQL5.git
synced 2025-12-13 22:00:32 -08:00
99 lines
3 KiB
Common Lisp
99 lines
3 KiB
Common Lisp
(provide :definitions)
|
|
|
|
(defparameter *duration* 3000) ; (change-duration 1000)
|
|
(defparameter *pause* 50) ; (change-pause 0)
|
|
(defparameter *easing-curve* |QEasingCurve.InOutSine|) ; (change-easing-curve "OutBounce")
|
|
|
|
(defparameter *window-width* nil) ; INTEGER command line argument
|
|
(defparameter *window-opacity* 10/10) ; FLOAT/RATIONAL command line argument
|
|
|
|
;;; colors
|
|
|
|
(defparameter *background* "black")
|
|
(defparameter *color-1* (|lighter| (qnew "QColor(QString)" "gray") 190))
|
|
(defparameter *color-2* (|lighter| (qnew "QColor(QString)" "blue") 170))
|
|
(defparameter *color-3* (|lighter| (qnew "QColor(QString)" "red") 170))
|
|
(defparameter *color-4* (|lighter| (qnew "QColor(QString)" "yellow") 170))
|
|
(defparameter *color-pause* *color-2*)
|
|
|
|
(defparameter *items*
|
|
(list (list "P" *color-2* '(g s))
|
|
(list "A" *color-4* '(d j p v))
|
|
(list "T" *color-3* '(c k o w))
|
|
(list "E" *color-1* '(h l n r))
|
|
(list "R" *color-2* '(a i q y))
|
|
(list "N" *color-3* '(m))
|
|
(list "O" *color-4* '(b f t x))
|
|
(list "S" *color-2* '(e u))))
|
|
|
|
(defparameter *state-1*
|
|
'("..............."
|
|
"..............."
|
|
"..............."
|
|
"..............."
|
|
"..............."
|
|
".....abcde....."
|
|
".....fghij....."
|
|
".....klmno....."
|
|
".....pqrst....."
|
|
".....uvwxy....."
|
|
"..............."
|
|
"..............."
|
|
"..............."
|
|
"..............."
|
|
"..............."))
|
|
|
|
(defparameter *state-2*
|
|
'(".......d......."
|
|
"..............."
|
|
".......g......."
|
|
".......j......."
|
|
".......c......."
|
|
".......h......."
|
|
".......a......."
|
|
"p.svklqmbeoni.t"
|
|
".......f......."
|
|
".......u......."
|
|
".......w......."
|
|
".......r......."
|
|
".......y......."
|
|
"..............."
|
|
".......x......."))
|
|
|
|
(defun custom-easing-function (x) ; |QEasingCurve.Custom|
|
|
(flet ((ease (s)
|
|
(- (* (expt x 3) (1+ s))
|
|
(* (expt x 2) s))))
|
|
(ease (- (* 15 x) 7))))
|
|
|
|
(let (ex)
|
|
(defun rotated (&optional (state ex))
|
|
(let* ((width (length (first state)))
|
|
(height (length state))
|
|
(array (make-array (list width height))))
|
|
(loop :for string :in state
|
|
:for y :upfrom 0
|
|
:do (loop :for ch :across string
|
|
:for x :upfrom 0
|
|
:do (setf (aref array x (- (1- width) y)) ; rotate
|
|
ch)))
|
|
(setf ex (loop :for y :below height
|
|
:collect (coerce (loop :for x :below width
|
|
:collect (aref array y x))
|
|
'string)))))
|
|
(defun ex-rotated ()
|
|
ex))
|
|
|
|
(defparameter *states*
|
|
(list *state-1* ; 1
|
|
*state-2*
|
|
*state-1*
|
|
(rotated *state-1*) ; 2
|
|
*state-2*
|
|
(ex-rotated)
|
|
(rotated) ; 3
|
|
*state-2*
|
|
(ex-rotated)
|
|
(rotated) ; 4
|
|
*state-2*
|
|
(ex-rotated)))
|