(define-inline (%length-1 ls) (and (not (null? ls)) (null? (cdr ls)))) (define-inline (%length-1/kind? ls pred) (and (%length-1 ls) (pred (car ls)))) (define-inline (%bkgd-pad-chars) (let ((bkgd (current-plotter-bkgd-char))) (vector bkgd bkgd bkgd bkgd)) ) (define-inline (%make-dims t b l r) (vector t b l r)) (define-inline (%dims-top dims) (vector-ref dims 0)) (define-inline (%dims-bottom dims) (vector-ref dims 1)) (define-inline (%dims-left dims) (vector-ref dims 2)) (define-inline (%dims-right dims) (vector-ref dims 3)) (define-inline (%pad-dims? obj) (and (vector? obj) (= 4 (vector-length obj)) (exact-integer? (%dims-top obj)) (exact-integer? (%dims-bottom obj)) (exact-integer? (%dims-left obj)) (exact-integer? (%dims-right obj))) ) (define-inline (%make-chars t b l r) (vector t b l r)) (define-inline (%chars-top chars) (vector-ref chars 0)) (define-inline (%chars-bottom chars) (vector-ref chars 1)) (define-inline (%chars-left chars) (vector-ref chars 2)) (define-inline (%chars-right chars) (vector-ref chars 3)) (define-inline (%pad-chars? obj) (and (vector? obj) (= 4 (vector-length obj)) (or (not (%chars-top obj)) (char? (%chars-top obj))) (or (not (%chars-bottom obj)) (char? (%chars-bottom obj))) (or (not (%chars-left obj)) (char? (%chars-left obj))) (or (not (%chars-left obj)) (char? (%chars-right obj)))) ) (define-inline (%shape? obj) (procedure? obj)) (define-inline (%shapes? obj) (foldl (lambda (a obj) (and a (%shape? obj))) #t obj))