packages feed

animate-preview-0.0.0: library/Animate/Preview/Animation.hs

module Animate.Preview.Animation where

import qualified Animate
import Text.Printf (printf)

import Data.Aeson (FromJSON, ToJSON)

type Animations key = Animate.Animations key (Animate.SpriteClip key) Seconds

newtype Seconds = Seconds Float
  deriving (Eq, Num, ToJSON, FromJSON, Fractional, Ord)

instance Show Seconds where
  show (Seconds s) = printf "%.3f" s ++ "s"

clamp :: (Fractional a, Ord a) => a -> a -> a -> a
clamp cur min' max' = if cur > max' then max' else (if cur < min' then min' else cur)