mirror of
https://github.com/reanimate/reanimate.git
synced 2026-09-12 00:23:08 +00:00
Add new constants: screenTop, screenBottom, screenLeft, screenRight.
This commit is contained in:
parent
76b2eb29f2
commit
4b513aea92
4 changed files with 158 additions and 4 deletions
|
|
@ -49,9 +49,6 @@ main = reanimate $ docEnv $ mapA (withFillOpacity 1) $ sceneAnimation $ do
|
||||||
|
|
||||||
wait 1
|
wait 1
|
||||||
|
|
||||||
screenTop :: Double
|
|
||||||
screenTop = screenHeight/2
|
|
||||||
|
|
||||||
oModifyMany :: [Object s a] -> (ObjectData a -> ObjectData a) -> Scene s ()
|
oModifyMany :: [Object s a] -> (ObjectData a -> ObjectData a) -> Scene s ()
|
||||||
oModifyMany os m = forM_ os $ \o -> oModify o m
|
oModifyMany os m = forM_ os $ \o -> oModify o m
|
||||||
|
|
||||||
|
|
|
||||||
144
examples/scene_camera.hs
Executable file
144
examples/scene_camera.hs
Executable file
|
|
@ -0,0 +1,144 @@
|
||||||
|
#!/usr/bin/env stack
|
||||||
|
-- stack runghc --package reanimate
|
||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
module Main(main) where
|
||||||
|
|
||||||
|
import Reanimate
|
||||||
|
import Reanimate.Builtin.Documentation
|
||||||
|
import Reanimate.Scene
|
||||||
|
import Control.Lens
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
{-
|
||||||
|
main = reanimate $ docEnv $ mapA (withFillOpacity 1) $ sceneAnimation $ do
|
||||||
|
cam <- newObject Camera
|
||||||
|
|
||||||
|
newSpriteSVG_ $ withStrokeWidth (defaultStrokeWidth*0.5) $ mkGroup
|
||||||
|
[ mkLine (0, screenBottom) (0, screenTop)
|
||||||
|
, mkLine (screenLeft, 0) (screenRight, 0)
|
||||||
|
]
|
||||||
|
|
||||||
|
box <- newObject $ Rectangle 1 1
|
||||||
|
cameraAttach cam box
|
||||||
|
oModify box $ oContext .~ withFillColor "green"
|
||||||
|
oModify box $ oMargin .~ (0,0,0,0)
|
||||||
|
oModify box $ oLeftX .~ 0
|
||||||
|
oModify box $ oBottomY .~ 0
|
||||||
|
oModify box $ oContext .~ withStrokeWidth 0
|
||||||
|
|
||||||
|
box2 <- newObject $ Rectangle 1 1
|
||||||
|
cameraAttach cam box2
|
||||||
|
oModify box2 $ oContext .~ withFillColor "blue"
|
||||||
|
oModify box2 $ oMargin .~ (0,0,0,0)
|
||||||
|
oModify box2 $ oCenterXY .~ (-2,2)
|
||||||
|
oModify box2 $ oContext .~ withStrokeWidth 0
|
||||||
|
|
||||||
|
dot <- newObject $ Circle 0.05
|
||||||
|
cameraAttach cam dot
|
||||||
|
oModify dot $ oContext .~ withFillColor "red"
|
||||||
|
oModify dot $ oMargin .~ (0,0,0,0)
|
||||||
|
oModify dot $ oCenterXY .~ (0.5,0.5)
|
||||||
|
oModify dot $ oContext .~ withStrokeWidth 0
|
||||||
|
|
||||||
|
dot2 <- newObject $ Circle 0.05
|
||||||
|
cameraAttach cam dot2
|
||||||
|
oModify dot2 $ oContext .~ withFillColor "red"
|
||||||
|
oModify dot2 $ oMargin .~ (0,0,0,0)
|
||||||
|
oModify dot2 $ oCenterXY .~ (-2,2)
|
||||||
|
oModify dot2 $ oContext .~ withStrokeWidth 0
|
||||||
|
|
||||||
|
oShow box
|
||||||
|
oShow box2
|
||||||
|
oShow dot
|
||||||
|
oShow dot2
|
||||||
|
|
||||||
|
wait 1
|
||||||
|
|
||||||
|
cameraSetFocus cam (0.5, 0.5)
|
||||||
|
waitOn $ do
|
||||||
|
fork $ cameraPan cam 1 (0.5, 0.5)
|
||||||
|
fork $ cameraZoom cam 1 2
|
||||||
|
wait 1
|
||||||
|
cameraSetFocus cam (-2,2)
|
||||||
|
cameraZoom cam 0.5 1.5
|
||||||
|
cameraZoom cam 0.5 2
|
||||||
|
wait 1
|
||||||
|
-- cameraSetFocus cam (-0.5,0.5)
|
||||||
|
waitOn $ do
|
||||||
|
fork $ cameraPan cam 1 (-2, 2)
|
||||||
|
fork $ cameraZoom cam 1 0.5
|
||||||
|
-- oTweenS cam 2 $ \t -> do
|
||||||
|
-- oScale %= \v -> fromToS v 3 t
|
||||||
|
|
||||||
|
-- cameraSetFocus cam (0.5,0.5)
|
||||||
|
|
||||||
|
-- oTweenS cam 1 $ \t -> do
|
||||||
|
-- oScale %= \v -> fromToS v 1 t
|
||||||
|
-- wait 4
|
||||||
|
-- oTweenS cam 2 $ \t -> do
|
||||||
|
-- oScaleOrigin .= (fromToS 0.5 (-2) t, fromToS 0.5 2 t)
|
||||||
|
-- oScale .= fromToS 2 1 t
|
||||||
|
-- oTranslate . _1 %= \v -> fromToS v (-2) t
|
||||||
|
-- oTranslate . _2 %= \v -> fromToS v 2 t
|
||||||
|
{-
|
||||||
|
Origin: (-2,2)
|
||||||
|
Translate: (3, -1)
|
||||||
|
New origin: (0.5, 0.5)
|
||||||
|
|
||||||
|
(0.5, 0.5)
|
||||||
|
(0.5+2, 0.5-2)
|
||||||
|
(2.5, -1.5) origin move
|
||||||
|
(2.5*3, -1.5*3)
|
||||||
|
(7.5, -4.5) scale
|
||||||
|
(7.5-2, -4.5+2)
|
||||||
|
(5.5, -2.5) origin move back
|
||||||
|
(5.5-3, -2.5+1)
|
||||||
|
(2.5, -1.5) translate
|
||||||
|
|
||||||
|
(0.5-2.5, 0.5-(-1.5))
|
||||||
|
(-2, 2)
|
||||||
|
-}
|
||||||
|
|
||||||
|
wait 1
|
||||||
|
-}
|
||||||
|
main = reanimate $ docEnv $ mapA (withFillOpacity 1) $ sceneAnimation $ do
|
||||||
|
cam <- newObject Camera
|
||||||
|
|
||||||
|
txt <- newObject $ center $ latex "Fixed (non-cam)"
|
||||||
|
oModify txt $
|
||||||
|
oTopY .~ screenTop
|
||||||
|
|
||||||
|
circle <- newObject $ Circle 1
|
||||||
|
cameraAttach cam circle
|
||||||
|
oModify circle $ oContext .~ withFillColor "blue"
|
||||||
|
circleRight <- oRead circle oRightX
|
||||||
|
|
||||||
|
box <- newObject $ Rectangle 2 2
|
||||||
|
cameraAttach cam box
|
||||||
|
oModify box $ oContext .~ withFillColor "green"
|
||||||
|
oModify box $ oLeftX .~ circleRight
|
||||||
|
boxCenter <- oRead box oCenterXY
|
||||||
|
|
||||||
|
small <- newObject $ center $ latex "This text is very small"
|
||||||
|
cameraAttach cam small
|
||||||
|
oModifyS small $ do
|
||||||
|
oCenterXY .= boxCenter
|
||||||
|
oScale .= 0.1
|
||||||
|
|
||||||
|
oShow txt
|
||||||
|
oShow small
|
||||||
|
oShow circle
|
||||||
|
oShow box
|
||||||
|
|
||||||
|
wait 1
|
||||||
|
|
||||||
|
cameraFocus cam boxCenter
|
||||||
|
waitOn $ do
|
||||||
|
fork $ cameraPan cam 3 boxCenter
|
||||||
|
fork $ cameraZoom cam 3 15
|
||||||
|
|
||||||
|
wait 2
|
||||||
|
waitOn $ do
|
||||||
|
fork $ cameraZoom cam 3 1
|
||||||
|
waitOn $ do
|
||||||
|
fork $ cameraPan cam 1 (0,0)
|
||||||
|
|
@ -179,6 +179,10 @@ module Reanimate
|
||||||
-- * Constants
|
-- * Constants
|
||||||
screenWidth,
|
screenWidth,
|
||||||
screenHeight,
|
screenHeight,
|
||||||
|
screenTop,
|
||||||
|
screenBottom,
|
||||||
|
screenLeft,
|
||||||
|
screenRight,
|
||||||
defaultDPI,
|
defaultDPI,
|
||||||
defaultStrokeWidth,
|
defaultStrokeWidth,
|
||||||
-- * Parameters
|
-- * Parameters
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,25 @@
|
||||||
module Reanimate.Constants
|
module Reanimate.Constants
|
||||||
( screenWidth
|
( screenWidth
|
||||||
, screenHeight
|
, screenHeight
|
||||||
|
, screenTop
|
||||||
|
, screenBottom
|
||||||
|
, screenLeft
|
||||||
|
, screenRight
|
||||||
, defaultDPI
|
, defaultDPI
|
||||||
, defaultStrokeWidth
|
, defaultStrokeWidth
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Graphics.SvgTree
|
import Graphics.SvgTree
|
||||||
|
|
||||||
screenWidth, screenHeight :: Num a => a
|
screenWidth, screenHeight, screenTop :: Fractional a => a
|
||||||
|
screenBottom, screenLeft, screenRight :: Fractional a => a
|
||||||
|
|
||||||
screenWidth = 16
|
screenWidth = 16
|
||||||
screenHeight = 9
|
screenHeight = 9
|
||||||
|
screenTop = screenHeight/2
|
||||||
|
screenBottom = -screenHeight/2
|
||||||
|
screenLeft = -screenWidth/2
|
||||||
|
screenRight = screenWidth/2
|
||||||
|
|
||||||
defaultDPI :: Dpi
|
defaultDPI :: Dpi
|
||||||
defaultDPI = 96
|
defaultDPI = 96
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue