xturtle 0.1.13 → 0.1.23
raw patch · 4 files changed
+26/−5 lines, 4 files
Files
- src/Graphics/X11/Turtle.hs +1/−0
- src/Graphics/X11/Turtle/Move.hs +1/−1
- src/Graphics/X11/Turtle/XTools.hs +23/−3
- xturtle.cabal +1/−1
src/Graphics/X11/Turtle.hs view
@@ -34,6 +34,7 @@ inputs, runInputs, getSVG,+ field, -- ** move turtle forward,
src/Graphics/X11/Turtle/Move.hs view
@@ -60,7 +60,7 @@ unlessM (undoLayer l) $ clearLayer l >> redraw when (visible t1) $ drawTtl (direction t0) $ position t0 case silentundo t1 of- Just n -> replicateM_ n (undoLayer l) >> clearLayer l >> redraw+ Just n -> fl $ replicateM_ n (undoLayer l) >> clearLayer l >> redraw _ -> return () when (visible t1 && isNothing (silentundo t1)) $ do forM_ (directions t0 t1) $ \dir -> fl $
src/Graphics/X11/Turtle/XTools.hs view
@@ -86,13 +86,13 @@ import Control.Concurrent(ThreadId, forkIO, threadWaitRead) import System.Locale.SetLocale(Category(..), setLocale) import System.Posix.Types(Fd(..))-import Data.Word(Word32)-import Data.Bits((.|.), shift)+import Data.Bits((.&.), (.|.), shift) import Data.IORef(newIORef, readIORef, modifyIORef) import Foreign.Ptr(Ptr) import Foreign.Storable(peek) import Foreign.Marshal.Array(advancePtr) import Control.Exception(catch, SomeException)+import Data.Word(Word32, Word64) -------------------------------------------------------------------------------- @@ -137,6 +137,26 @@ (_, _, _, width, height, _, _) <- getGeometry dpy win return (width, height) +class ConvertPixel p where+ convertPixel :: Word32 -> p++instance ConvertPixel Word32 where+ convertPixel = id++instance ConvertPixel Word64 where+ convertPixel = fromIntegral++convertW64 :: Word64 -> Word64+convertW64 p = foldr1 (.|.) $ zipWith shift (getColors p) [8, 16, 24, 32]++getColors :: Word64 -> [Word64]+getColors p = [+ p .&. 0xffff,+ p .&. (0xffff `shift` 8),+ p .&. (0xffff `shift` 16),+ p .&. (0xffff `shift` 24)+ ]+ -------------------------------------------------------------------------------- setForegroundXT :: Display -> GC -> Color -> IO ()@@ -206,7 +226,7 @@ Dimension -> Dimension -> Ptr Word32 -> IO () drawBitmap dpy win gc x y w_ h_ dat = newIORef dat >>= \ptr -> forM_ [0 .. w * h - 1] $ \i -> do- readIORef ptr >>= peek >>= setForeground dpy gc+ readIORef ptr >>= peek >>= setForeground dpy gc . convertPixel drawPoint dpy win gc (x + i `mod` w) (y + i `div` w) modifyIORef ptr $ flip advancePtr 1 where [w, h] = map fromIntegral [w_, h_]
xturtle.cabal view
@@ -2,7 +2,7 @@ cabal-version: >= 1.6 name: xturtle-version: 0.1.13+version: 0.1.23 stability: experimental author: Yoshikuni Jujo <PAF01143@nifty.ne.jp> maintainer: Yoshikuni Jujo <PAF01143@nifty.ne.jp>