(in-package :cl-tty.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))