mirror of
https://github.com/reanimate/reanimate.git
synced 2026-09-10 15:42:21 +00:00
* Remove redundant brackets * Various hlint fixes * Remove unused language pragrams and other fixes * Use addStatic more consistently in examples * Rename remaining usages of sceneAnimation to scene
46 lines
1.2 KiB
Haskell
Executable file
46 lines
1.2 KiB
Haskell
Executable file
#!/usr/bin/env stack
|
|
-- stack runghc --package reanimate
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
module Main (main) where
|
|
|
|
import Graphics.SvgTree (Tree)
|
|
import Reanimate
|
|
|
|
main :: IO ()
|
|
main = reanimate bbox
|
|
|
|
bbox :: Animation
|
|
bbox = addStatic bg $
|
|
mapA (translate (-screenWidth/4) 0) bbox1 `parA`
|
|
mapA (translate (screenWidth/4) 0) bbox2
|
|
where
|
|
bg = mkBackground "black"
|
|
|
|
bbox1 :: Animation
|
|
bbox1 = mkAnimation 5 $ \t ->
|
|
mkGroup
|
|
[ mkBoundingBox $ rotate (360*t) svg
|
|
, withFillColor "white" $ rotate (360*t) svg ]
|
|
where
|
|
svg = scale 2 $ center $ latexAlign "\\sum_{k=1}^\\infty"
|
|
|
|
bbox2 :: Animation
|
|
bbox2 = playThenReverseA $ mkAnimation 2.5 $ \t ->
|
|
mkGroup
|
|
[ mkBoundingBox $ partialSvg t heartShape
|
|
, withStrokeColor "white" $ withFillOpacity 0 $
|
|
partialSvg t heartShape ]
|
|
|
|
mkBoundingBox :: Tree -> Tree
|
|
mkBoundingBox svg = withStrokeColor "red" $ withFillOpacity 0 $
|
|
translate (x+w/2) (y+h/2) $
|
|
mkRect w h
|
|
where
|
|
(x, y, w, h) = boundingBox svg
|
|
|
|
heartShape :: Tree
|
|
heartShape = lowerTransformations $ scaleXY 1 (-1) $ scale 0.1 $
|
|
center $ rotateAroundCenter 225 $ mkPathString
|
|
"M0.0,40.0 v-40.0 h40.0\
|
|
\a20.0 20.0 90.0 0 1 0.0,40.0\
|
|
\a20.0 20.0 90.0 0 1 -40.0,0.0 Z"
|