(defvar #:sys-package:bitmap '#:bitmap:virtty)
(defvar #:sys-package:colon '#:bitmap:virtty)
(defstruct window
left top width height title hilited visible
screen)
(de :make-window (w)
(#:window:screen w (:make-framed-screen wi he (string ti) hi))
(:redisplay w (sub1 le) (sub1 to) (add 2 wi) (add 2 he)))
(de :make-framed-screen (w h ti hi)
(let ((s (makestring (mul (add w 2) (add h 2)) #/.)))
(bltscreen s :blankscreen
(add w 2) (add h 2)
(add1 (bitxmax)) (add1 (bitymax))
1 1
0 0
w h)
(unless (= hi 0)
(fillstring s 0 #/= (add 2 w)))
(bltstring s 1 ti 0 (slength ti))
s))
(dmd :normalizeq (var mini maxi)
`(progn
(setq ,var (min ,var ,maxi))
(setq ,var (max ,var ,mini))))
; Les fonctions sur les bitmap
(defvar #:bitmap:name #:sys-package:tty)
(defvar #:bitmap:xmax (sub1 (tyxmax)))
(defvar #:bitmap:ymax (tyymax))
(de bitxmax ()
#:bitmap:xmax)
(de bitymax ()
#:bitmap:ymax)
; Les globales
(defvar :screen ; la me'moire d'e'cran
(makestring (mul (add1 (bitxmax)) (add1 (bitymax))) #\sp))
(defvar :oscreen ; pour le redisplayscreen
(copy :screen))
(defvar :blankscreen ; un bel e'cran tout blanc
(copy :screen)) ; pour effacer facilement