(module (s9fes char-canvas shape box) (;export ; draw-box shape-box ; plot-box virtual-shape-box) (import scheme utf8) (import (chicken base)) (import (chicken fixnum)) (import (chicken type)) (import (s9fes char-canvas) (s9fes char-canvas rect)) (include-relative "s9fes.char-canvas.types") (: draw-box (canvas rect #!optional box-frame-chars -> void)) (: plot-box (canvas rect #!optional box-frame-chars -> void)) (: shape-box (fixnum fixnum #!optional box-frame-chars -> shape-plotter)) (: virtual-shape-box (integer integer #!optional box-frame-chars -> virtual-shape-plotter)) ;; (define (*canvas-draw-box cv rgn frm) (canvas-draw cv (*rect-x rgn) (*rect-y rgn) (frame-bl frm)) (canvas-draw cv (*rect-x-max rgn) (*rect-y rgn) (frame-br frm)) (canvas-draw cv (*rect-x rgn) (*rect-y-max rgn) (frame-tl frm)) (canvas-draw cv (*rect-x-max rgn) (*rect-y-max rgn) (frame-tr frm)) (canvas-draw-line cv (fx+ (*rect-x rgn) 1) (*rect-y rgn) (fx- (*rect-x-max rgn) 1) (*rect-y rgn) (frame-bh frm)) (canvas-draw-line cv (fx+ (*rect-x rgn) 1) (*rect-y-max rgn) (fx- (*rect-x-max rgn) 1) (*rect-y-max rgn) (frame-th frm)) (canvas-draw-line cv (*rect-x rgn) (fx+ (*rect-y rgn) 1) (*rect-x rgn) (fx- (*rect-y-max rgn) 1) (frame-lv frm)) (canvas-draw-line cv (*rect-x-max rgn) (fx+ (*rect-y rgn) 1) (*rect-x-max rgn) (fx- (*rect-y-max rgn) 1) (frame-rv frm)) ) (define (draw-box cv rgn #!optional (frm ASCII-FRAME-CHARS)) (*canvas-draw-box cv rgn frm) ) (define ((shape-box w h #!optional (frm ASCII-FRAME-CHARS)) #!optional cv (x 0) (y 0)) (if cv (begin (*canvas-draw-box cv (*rect x y w h) frm) cv) (list w h frm) ) ) ;; (define (plot-box cv rgn #!optional (frm ASCII-FRAME-CHARS)) (*canvas-draw-box cv (physical-rect cv rgn) frm) ) (define ((virtual-shape-box w h #!optional (frm ASCII-FRAME-CHARS)) #!optional cv (x 0) (y 0)) (if cv (begin (plot-box cv (*rect x y w h) frm) cv) (list w h frm) ) ) ) ;module (s9fes char-canvas shape box)