module SwirledChecker where import Pan import GHC.Base import GHC.Int import GHC.Float swirledChecker :: Frac -> ImageC swirledChecker v = swirl v checker checker :: ImageC checker = condR checkerReg blueI redI checkerReg :: Region checkerReg (Pt x y) = even' (floor' x + floor' y) swirledCheckerAnim :: Frac -> ImageC swirledCheckerAnim v = swirledChecker v effect :: UI DisplayFun effect = do v <- makeSlider "Radius" (10,100) 30 imageToDisplayFun $ swirledCheckerAnim v floor' :: Float -> Int floor' (F# f) = case ltFloat# f 0.0# of True -> I# ((float2Int# f) -# 1#) _ -> I# (float2Int# f) even' :: Int -> Bool even' (I# n) = case modInt# n 2# of 0# -> True _ -> False