import text.jrt 1 boxstyle! array shoutout-text t", DIRTY RECTANGLES" array colors yellow b, lcyan b, lmagenta b, lgreen b, brown b, array xborders 17 b, 32 b, 47 b, 62 b, 81 b, : xregion 0 begin dup xborders + b@ textx <= while 1+ repeat ; : xborder xborders + b@ ; : choosecolor xregion colors + b@ fg! ; : hline-to ( x -- ) textx - hline ; : line-to-region xregion xborder hline-to ; 3 const logo-top 1 const logo-edge 13 const rect-height 2 const vgap 3 const hgap : left-corner textpos @ tl line-to-region textpos ! texty 1+ texty! rect-height vline ; : bl-corner bl line-to-region ; : left-region choosecolor logo-edge logo-top textxy! left-corner bl-corner logo-edge hgap + logo-top vgap + textxy! left-corner bl-corner logo-edge hgap 2* + logo-top vgap 2* + textxy! left-corner ; : texty++ texty vgap + texty! ; : bot-rect logo-top rect-height 1+ + ; : midline textx line-to-region textx! texty++ ; : mid-region ( i -- ) xborder logo-top textxy! choosecolor midline midline midline bot-rect texty! midline midline ; : right-edge pagew 1- logo-edge - ; : rlineedge ( gapcount -- ) hgap * right-edge swap - 1- ; : rline ( gapcount -- ) rlineedge textx swap hline-to textx! texty++ ; : redge textx tr textx! texty 1+ texty! rect-height vgap - vline br ; : right-region 3 xborder logo-top textxy! choosecolor 2 rline 1 rline 0 rline bot-rect texty! 1 rline 0 rline 1 rlineedge logo-top vgap + textxy! redge 0 rlineedge logo-top vgap 2* + textxy! redge ; : emptych? ( ch -- f ) dup 32 = swap 0 = or ; : drawdot? ( st -- f ) dup b@ emptych? swap 1+ b@ emptych? or not ; : .c choosecolor draw-char ; : dot 7 .c ; : sp 32 .c ; : spacer ( st -- ) sp drawdot? if dot else sp then sp ; : shoutout shoutout-text begin dup b@ dup while .c dup spacer 1+ repeat drop drop ; : logo textmode left-region 0 mid-region 1 mid-region 2 mid-region right-region 12 20 textxy! shoutout ; ' logo ' main redefine { s" dirtrect.com" writecom }