content: {-# LANGUAGE OverloadedStrings #-}
  module Rotating_Square where
  
  import Control.Concurrent
  import Graphics.Blank
  import Wiki -- (384,384)
  
  main :: IO ()
  main = blankCanvas 3000 $ flip loop 0
  
  loop :: DeviceContext -> Double -> IO ()
  loop context n = do
          send context $ do
                  clearRect (0,0,width context,height context)
                  beginPath()
                  save()
                  translate (width context / 2,height context / 2)
                  rotate (pi * n)
                  beginPath()
                  moveTo(-100,-100)
                  lineTo(-100,100)
                  lineTo(100,100)
                  lineTo(100,-100)
                  closePath()
                  lineWidth 10
                  strokeStyle "green"
                  stroke()
                  restore()
          threadDelay (20 * 1000)
          v <- wiki $ return (round (n*100) :: Int)
          wiki $ whenM (v `mod` 2 == 0) $ do
                  file <- wiki $ anim_png "Rotating_Square"
                  wiki $ snapShot context $ file
                  wiki $ whenM (v == 48) $ do { build_anim "Rotating_Square" 5; close context }
          loop context (n + 0.01)
  
  