yesod-media-simple 0.1.0.0 → 0.1.0.1
raw patch · 4 files changed
+51/−1 lines, 4 filessetup-changed
Files
- Setup.hs +2/−0
- examples/plasma.hs +30/−0
- examples/sierpinski.hs +15/−0
- yesod-media-simple.cabal +4/−1
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ examples/plasma.hs view
@@ -0,0 +1,30 @@+{-# LANGUAGE ViewPatterns #-}+import Codec.Picture+import Data.Time+import Data.Word+import Yesod+import Yesod.Media.Simple++main = serve $ do+ now <- getCurrentTime+ return $ PixelList 640 480+ [ [ pixel now x y+ | x <- [1..640]+ ]+ | y <- [1..480]+ ]++-- See the glsl at http://www.bidouille.org/prog/plasma+pixel :: UTCTime -> Int -> Int -> (Word8, Word8, Word8)+pixel (realToFrac . utctDayTime -> t) ((/ 100) . fromIntegral -> x) ((/ 100) . fromIntegral -> y) =+ (round $ 255 * r, round $ 255 * g, round $ 255 * b)+ where+ r = 1+ g = sin (pi * v) :: Float+ b = cos (pi * v)+ v = sin (x + t)+ + sin ((y + t) / 2)+ + sin ((x + y + t) / 2)+ + sin (sqrt (x' * x' + y' * y' + 1) + t)+ x' = x + sin (t / 2)+ y' = y + cos (t / 2)
+ examples/sierpinski.hs view
@@ -0,0 +1,15 @@+import Diagrams.Prelude+import Diagrams.Backend.Cairo (Cairo)+import Yesod.Media.Simple++-- | The main entry point.+main :: IO ()+main = serveDiagram $ sierpinski 3++sierpinski :: Int -> Diagram Cairo R2+sierpinski 1 = eqTriangle 1+sierpinski n = s+ ===+ (s ||| s) # centerX+ where+ s = sierpinski (n-1)
yesod-media-simple.cabal view
@@ -1,5 +1,5 @@ name: yesod-media-simple-version: 0.1.0.0+version: 0.1.0.1 synopsis: Simple display of media types, served by yesod homepage: https://github.com/mgsloan/yesod-media-simple license: MIT@@ -10,6 +10,9 @@ category: Graphics build-type: Simple extra-source-files: README.md+ Setup.hs+ examples/plasma.hs+ examples/sierpinski.hs cabal-version: >=1.8 library