packages feed

xturtle 0.1.23 → 0.1.24

raw patch · 5 files changed

+26/−6 lines, 5 files

Files

src/Graphics/X11/Turtle.hs view
@@ -35,6 +35,7 @@ 	runInputs, 	getSVG, 	field,+	waitTurtle,  	-- ** move turtle 	forward,@@ -107,7 +108,8 @@ import Text.XML.YJSVG(SVG(..), Position(..), Color(..)) import qualified Text.XML.YJSVG as S(center, topleft) -import Control.Concurrent(killThread, newChan, writeChan, getChanContents)+import Control.Concurrent(+	killThread, newChan, writeChan, readChan, getChanContents) import Control.Monad(replicateM_, zipWithM_) import Control.Arrow((&&&)) import Data.IORef(IORef, newIORef, readIORef)@@ -221,6 +223,12 @@  flush :: Turtle -> IO () flush = (`input` Flush)++waitTurtle :: Turtle -> IO ()+waitTurtle t = do+	c <- newChan+	input t $ FinishSign c+	readChan c  -------------------------------------------------------------------------------- 
src/Graphics/X11/Turtle/Input.hs view
@@ -2,6 +2,7 @@  import Graphics.X11.Turtle.State(TurtleState(..), initTurtleState, makeShape) import Text.XML.YJSVG(SVG(..), Color(..), Position(..))+import Control.Concurrent.Chan (Chan)  -------------------------------------------------------------------------------- @@ -34,7 +35,7 @@ 	| PositionStep (Maybe Double) 	| DirectionStep (Maybe Double) 	| Degrees Double-	deriving (Show, Read)+	| FinishSign (Chan ())  turtleSeries :: [TurtleInput] -> [TurtleState] turtleSeries tis = let ts0 = initTurtleState in ts0 : ts0 : turtles [] ts0 tis@@ -65,7 +66,7 @@  reset :: TurtleState -> TurtleState reset t = t{draw = Nothing, clear = False, undo = False, silentundo = Nothing,-	undonum = 1, sleep = Nothing, flush = False}+	undonum = 1, sleep = Nothing, flush = False, finishSign = Nothing}  set :: TurtleState -> Maybe SVG -> TurtleState set t drw = t{draw = drw, drawed = maybe id (:) drw $ drawed t}@@ -105,4 +106,5 @@ nextTurtle t (PositionStep ps) = (reset t){positionStep = ps} nextTurtle t (DirectionStep ds) = (reset t){directionStep = ds} nextTurtle t (Degrees ds) = (reset t){degrees = ds}+nextTurtle t (FinishSign c) = (reset t){finishSign = Just c} nextTurtle _ _ = error "not defined"
src/Graphics/X11/Turtle/Move.hs view
@@ -47,9 +47,12 @@ import Control.Monad.Tools(unlessM) import Data.Maybe(isJust, isNothing) +import Control.Concurrent.Chan(writeChan)+ --------------------------------------------------------------------------------  moveTurtle :: Field -> Character -> Layer -> TurtleState -> TurtleState -> IO ()+moveTurtle _ _ _ _ TurtleState{finishSign = Just c} = writeChan c () moveTurtle _ _ _ _ TurtleState{sleep = Just t} = threadDelay $ 1000 * t moveTurtle f _ _ _ TurtleState{flush = True} = flushField f True $ return () moveTurtle f c l t0 t1 = do
src/Graphics/X11/Turtle/State.hs view
@@ -4,6 +4,7 @@ import Text.XML.YJSVG(Position(..), SVG(Fill), Color(RGB)) import Data.Tuple.Tools(rotate) import Control.Arrow((***))+import Control.Concurrent.Chan (Chan)  data TurtleState = TurtleState { 	position :: Position,@@ -32,8 +33,11 @@  	positionStep :: Maybe Double, 	directionStep :: Maybe Double,-	interval :: Int}+	interval :: Int, +	finishSign :: Maybe (Chan ())+ }+ initTurtleState :: TurtleState initTurtleState = TurtleState { 	position = Center 0 0,@@ -62,7 +66,10 @@  	positionStep = Just 10, 	directionStep = Just $ pi / 18,-	interval = 10000}+	interval = 10000,++	finishSign = Nothing+ }  makeShape :: TurtleState -> Double -> Position -> [Position] makeShape ts dir_ pos = (mkPos . move . rotate dir . resize) `map` shape ts
xturtle.cabal view
@@ -2,7 +2,7 @@ cabal-version:	>= 1.6  name:		xturtle-version:	0.1.23+version:	0.1.24 stability:	experimental author:		Yoshikuni Jujo <PAF01143@nifty.ne.jp> maintainer:	Yoshikuni Jujo <PAF01143@nifty.ne.jp>