packages feed

xturtle 0.1.12 → 0.1.13

raw patch · 5 files changed

+21/−7 lines, 5 files

Files

src/Graphics/X11/Turtle.hs view
@@ -47,6 +47,7 @@ 	circle, 	home, 	undo,+	silentundo, 	sleep, 	flush, @@ -210,6 +211,9 @@  undo :: Turtle -> IO () undo t = info t undonum >>= flip replicateM_ (input t Undo)++silentundo :: Turtle -> Int -> IO ()+silentundo t n = input t $ SilentUndo n  sleep :: Turtle -> Int -> IO () sleep t = input t . Sleep
src/Graphics/X11/Turtle/Input.hs view
@@ -17,6 +17,7 @@ 	| PutImage FilePath Double Double 	| Undo 	| Undonum Int+	| SilentUndo Int 	| Clear 	| Sleep Int 	| Flush@@ -42,6 +43,9 @@ turtles [] ts0 (Undo : tis) = ts0 : turtles [] ts0 tis turtles (tsb : tsbs) _ (Undo : tis) = 	let ts1 = tsb{undo = True} in ts1 : turtles tsbs ts1 tis+turtles tsbs _ (SilentUndo n : tis) = let+	ts1_ : tsbs' = drop (n - 1) tsbs+	ts1 = ts1_{ silentundo = Just n } in ts1 : turtles tsbs' ts1 tis turtles tsbs ts0 (Forward len : tis) = case position ts0 of 	Center x0 y0 -> let 		x = x0 + len * cos (direction ts0)@@ -60,8 +64,8 @@ turtles _ _ [] = error "no more input"  reset :: TurtleState -> TurtleState-reset t = t{draw = Nothing, clear = False, undo = False, undonum = 1,-	sleep = Nothing, flush = False}+reset t = t{draw = Nothing, clear = False, undo = False, silentundo = Nothing,+	undonum = 1, sleep = Nothing, flush = False}  set :: TurtleState -> Maybe SVG -> TurtleState set t drw = t{draw = drw, drawed = maybe id (:) drw $ drawed t}
src/Graphics/X11/Turtle/Move.hs view
@@ -43,9 +43,9 @@ import qualified Text.XML.YJSVG as S(topleft)  import Control.Concurrent(threadDelay)-import Control.Monad(when, unless, forM_)+import Control.Monad(when, unless, forM_, replicateM_) import Control.Monad.Tools(unlessM)-import Data.Maybe(isJust)+import Data.Maybe(isJust, isNothing)  -------------------------------------------------------------------------------- @@ -59,7 +59,10 @@ 		when (isJust $ draw t0) $ do 			unlessM (undoLayer l) $ clearLayer l >> redraw 			when (visible t1) $ drawTtl (direction t0) $ position t0-	when (visible t1) $ do+	case silentundo t1 of+		Just n -> replicateM_ n (undoLayer l) >> clearLayer l >> redraw+		_ -> return ()+	when (visible t1 && isNothing (silentundo t1)) $ do 		forM_ (directions t0 t1) $ \dir -> fl $ 			drawTtl dir (position t0) >> threadDelay (interval t0) 		forM_ (positions w h t0 t1) $ \p -> fl $@@ -67,7 +70,8 @@ 		fl $ drawTtl (direction t1) $ position t1 	when (visible t0 && not (visible t1)) $ fl $ clearCharacter c 	when (clear t1) $ fl $ clearLayer l-	unless (undo t1) $ fl $ maybe (return ()) (drawSVG f l) (draw t1)+	unless (undo t1 || isJust (silentundo t1)) $+		fl $ maybe (return ()) (drawSVG f l) (draw t1) 	where 	fl = flushField f $ stepbystep t0 	redraw = mapM_ (drawSVG f l) $ reverse $ drawed t1
src/Graphics/X11/Turtle/State.hs view
@@ -22,6 +22,7 @@ 	clear :: Bool, 	undo :: Bool, 	undonum :: Int,+	silentundo :: Maybe Int, 	sleep :: Maybe Int, 	flush :: Bool, 	fill :: Bool,@@ -51,6 +52,7 @@ 	clear = False, 	undo = False, 	undonum = 0,+	silentundo = Nothing, 	sleep = Nothing, 	flush = False, 	fill = False,
xturtle.cabal view
@@ -2,7 +2,7 @@ cabal-version:	>= 1.6  name:		xturtle-version:	0.1.12+version:	0.1.13 stability:	experimental author:		Yoshikuni Jujo <PAF01143@nifty.ne.jp> maintainer:	Yoshikuni Jujo <PAF01143@nifty.ne.jp>