B1: modern-backend now inherits from backend (was standalone class)
B2: draw-rect y-position bug — loop now tracks row offset
B3: Layout module added to ASDF system definition
I1: 6 smoke tests replaced with behavioral tests (captured output)
I3: 6 edge case tests: empty, single-child, zero-size, deep
nesting, large padding, negative grow
Also fixed:
- Added missing make-simple-backend constructor to simple.lisp
- Added in-package to classes.lisp and simple.lisp (SBCL's load
restores *package* after each load, breaking batch-mode loading)
63 lines
1.6 KiB
Common Lisp
63 lines
1.6 KiB
Common Lisp
(in-package :cl-tui.backend)
|
|
|
|
(defclass backend () ())
|
|
|
|
(defgeneric initialize-backend (backend)
|
|
(:method ((b backend)) b))
|
|
|
|
(defgeneric shutdown-backend (backend)
|
|
(:method ((b backend)) (values)))
|
|
|
|
(defgeneric backend-size (backend)
|
|
(:method ((b backend))
|
|
(values 80 24)))
|
|
|
|
(defgeneric backend-write (backend string))
|
|
|
|
(defgeneric backend-clear (backend)
|
|
(:method ((b backend))
|
|
(backend-write b (format nil "~C[2J~C[H" #\Esc #\Esc))))
|
|
|
|
(defgeneric draw-text (backend x y string fg bg &key
|
|
bold italic underline reverse dim blink))
|
|
|
|
(defgeneric draw-border (backend x y width height
|
|
&key style fg bg title title-align))
|
|
|
|
(defgeneric draw-rect (backend x y width height &key bg))
|
|
|
|
(defgeneric draw-link (backend x y string url &key fg bg))
|
|
|
|
(defgeneric draw-ellipsis (backend x y width &key fg bg))
|
|
|
|
(defgeneric cursor-move (backend x y))
|
|
|
|
(defgeneric cursor-hide (backend)
|
|
(:method ((b backend)) (values)))
|
|
|
|
(defgeneric cursor-show (backend)
|
|
(:method ((b backend)) (values)))
|
|
|
|
(defgeneric cursor-style (backend shape &key blink)
|
|
(:method ((b backend) shape &key blink) (values)))
|
|
|
|
(defgeneric begin-sync (backend)
|
|
(:method ((b backend)) (values)))
|
|
|
|
(defgeneric end-sync (backend)
|
|
(:method ((b backend)) (values)))
|
|
|
|
(defgeneric read-event (backend &key timeout)
|
|
(:method ((b backend) &key timeout) (values nil nil)))
|
|
|
|
(defgeneric enable-mouse (backend)
|
|
(:method ((b backend)) (values)))
|
|
|
|
(defgeneric enable-bracketed-paste (backend)
|
|
(:method ((b backend)) (values)))
|
|
|
|
(defgeneric capable-p (backend feature)
|
|
(:method ((b backend) feature)
|
|
(declare (ignore feature))
|
|
nil))
|