Plan 9 from Bell Labs’s /usr/web/sources/contrib/fernan/nhc98/tests/nofib/real/reptile/Mgrfuns.hs

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


-- LML original: Sandra Foubister, 1990
-- Haskell translation: Colin Runciman, May 1991

module Mgrfuns(
       aligntext, bitcopy, circle, clear, clearevent,
       clearmode, destroywin, dragcircle, dragline,
       dragrect, font, func, go, highlight,
       line, mapevent, newwin, rcircle, 
       selectwin, setevent, setmode, shapewindow, standend, 
       stringto, standout, textregion, textreset) where

import Diff

--CR should try to generalise this to cope with more (all?) commands
escom :: [Char] -> [Int] -> [Char]
escom str ns = '\ESC' : foldr f "" ns
               where
               f n "" = show n ++ str
               f n s = show n ++ "," ++ s

aligntext = '\ESC' : "l"

bitcopy = escom "b"  -- xd yd w h xs ys

circle = escom "o"   -- x y r

clear = "\FF"

clearevent event = escom "e" [mapevent event]

clearmode mode = escom "s" [mode]

destroywin n = escom ",OZ" [n]

dragcircle [x1,y1,x2,y2] =
	circle [x1,y1,r]
        where
	r = bcroot (square (diff x1 x2) + square (diff y1 y2))

dragline = "%l\n"

dragrect = "%r\n"

font x = escom "F" [x]

func mode = escom "b" [mode]

go = escom "g" -- x y

highlight = escom "H" -- x y w h

line = escom "l"      -- x0 y0 x1 y1

--CR explanation or abstraction needed for numeric literals here
mapevent event = if event == 3 || event == 4 then 2-event else event

newwin = escom "Z"    -- x y w h

rcircle r = escom "o" [r]

selectwin n = escom "Z" [n]

setevent event str = escom ("e"++str) [mapevent event, length str]

setmode mode = escom "S" [mode]

shapewindow = escom "W" -- x y w h

standend = '\ESC':",n"

standout = '\ESC':"i" -- OK

stringto win x y str = escom ("."++str) [win,x,y,length str]

textregion = escom "t" -- x y wide high

textreset = '\ESC':"t"  -- OK




Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to webmaster@9p.io.