mirror of
https://github.com/reanimate/reanimate.git
synced 2026-09-14 09:32:22 +00:00
Deploying to gh-pages from @ 0e58fc66e6 🚀
This commit is contained in:
parent
cc458ddc7e
commit
b21e0c74a9
4 changed files with 85 additions and 46 deletions
|
|
@ -18,7 +18,7 @@
|
|||
99% (155 /156) in 'Reanimate'
|
||||
91% ( 10 / 11) in 'Reanimate.Ease'
|
||||
88% ( 7 / 8) in 'Reanimate.Transition'
|
||||
81% ( 92 /114) in 'Reanimate.Scene'
|
||||
86% ( 98 /114) in 'Reanimate.Scene'
|
||||
75% ( 3 / 4) in 'Reanimate.Svg.Unuse'
|
||||
62% ( 23 / 37) in 'Reanimate.Internal.CubicBezier'
|
||||
56% ( 10 / 18) in 'Reanimate.Svg'
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
{ "schemaVersion": 1, "label": "api docs", "message": "70%", "color": "success" }
|
||||
{ "schemaVersion": 1, "label": "api docs", "message": "71%", "color": "success" }
|
||||
|
|
|
|||
|
|
@ -9,4 +9,4 @@ const snippets = [{"title": "Hello World","url": "https://reanimate.clozecards.c
|
|||
,{"title": "Object Positions","url": "https://reanimate.clozecards.com/IAQhjO0Ke7h/195.svg","code": "env =\n addStatic (mkBackground \"white\") .\n mapA (withStrokeColor \"black\")\n\nanimation :: Animation\nanimation = env $\n sceneAnimation $ do\n -- Configure objects\n txt <- newText \"Center\"\n top <- newText \"Top\"\n oModifyS top $ \n oTopY .= screenTop\n topR <- newText \"Top right\"\n oModifyS topR $ do\n oTopY .= screenTop\n oRightX .= screenRight\n botR <- newText \"Bottom right\"\n oModifyS botR $ do\n oBottomY .= screenBottom\n oRightX .= screenRight\n botL <- newText \"Bottom left\"\n oModifyS botL $ do\n oBottomY .= screenBottom\n oLeftX .= screenLeft\n topL <- newText \"Top left\"\n oModifyS topL $ do\n oTopY .= screenTop\n oLeftX .= screenLeft\n -- Show objects\n oShow txt\n wait 1\n switchTo txt top\n switchTo top topR\n switchTo topR botR\n switchTo botR botL\n switchTo botL topL\n switchTo topL txt\n\nswitchTo src dst = do\n fork $ oFadeOut src 1\n oModify dst $ oOpacity .~ 1\n oFadeIn dst 1\n wait 1\n\nnewText txt =\n newObject $ scale 1.5 $ center $ latex txt\n"}
|
||||
,{"title": "Camera","url": "https://reanimate.clozecards.com/CD5Bg7AwVkF/150.svg","code": "animation :: Animation\nanimation = docEnv $ mapA (withFillOpacity 1) $ sceneAnimation $ do\n cam <- newObject Camera\n\n txt <- newObject $ center $ latex \"Fixed (non-cam)\"\n oModifyS txt $ do\n oTopY .= screenTop \n oZIndex .= 2\n\n circle <- newObject $ Circle 1\n cameraAttach cam circle\n oModify circle $ oContext .~ withFillColor \"blue\"\n circleRight <- oRead circle oRightX\n\n box <- newObject $ Rectangle 2 2\n cameraAttach cam box\n oModify box $ oContext .~ withFillColor \"green\"\n oModify box $ oLeftX .~ circleRight\n boxCenter <- oRead box oCenterXY\n\n small <- newObject $ center $ latex \"This text is very small\"\n cameraAttach cam small\n oModifyS small $ do\n oCenterXY .= boxCenter\n oScale .= 0.1\n \n oShow txt\n oShow small\n oShow circle\n oShow box\n\n wait 1\n\n cameraFocus cam boxCenter\n waitOn $ do\n fork $ cameraPan cam 3 boxCenter\n fork $ cameraZoom cam 3 15\n \n wait 2\n cameraZoom cam 3 1\n cameraPan cam 1 (0,0)\n"}
|
||||
];
|
||||
const playgroundVersion = "2020-08-25 (6ffc8)";
|
||||
const playgroundVersion = "2020-08-25 (0e58f)";
|
||||
|
|
|
|||
|
|
@ -1097,49 +1097,88 @@ span.spaces { background: white }
|
|||
<span class="lineno"> 1078 </span>instance Renderable Camera where
|
||||
<span class="lineno"> 1079 </span> <span class="decl"><span class="nottickedoff">toSVG Camera = None</span></span>
|
||||
<span class="lineno"> 1080 </span>
|
||||
<span class="lineno"> 1081 </span>cameraAttach :: Object s Camera -> Object s a -> Scene s ()
|
||||
<span class="lineno"> 1082 </span><span class="decl"><span class="nottickedoff">cameraAttach cam obj =</span>
|
||||
<span class="lineno"> 1083 </span><span class="spaces"> </span><span class="nottickedoff">spriteModify (objectSprite obj) $ do</span>
|
||||
<span class="lineno"> 1084 </span><span class="spaces"> </span><span class="nottickedoff">camData <- unVar (objectData cam)</span>
|
||||
<span class="lineno"> 1085 </span><span class="spaces"> </span><span class="nottickedoff">return $ \(svg,zindex) -></span>
|
||||
<span class="lineno"> 1086 </span><span class="spaces"> </span><span class="nottickedoff">let (x,y) = camData^.oTranslate</span>
|
||||
<span class="lineno"> 1087 </span><span class="spaces"> </span><span class="nottickedoff">ctx =</span>
|
||||
<span class="lineno"> 1088 </span><span class="spaces"> </span><span class="nottickedoff">translate (-x) (-y) .</span>
|
||||
<span class="lineno"> 1089 </span><span class="spaces"> </span><span class="nottickedoff">uncurry translate (camData^.oScaleOrigin) .</span>
|
||||
<span class="lineno"> 1090 </span><span class="spaces"> </span><span class="nottickedoff">scale (camData^.oScale) .</span>
|
||||
<span class="lineno"> 1091 </span><span class="spaces"> </span><span class="nottickedoff">uncurry translate (camData^.oScaleOrigin & both %~ negate)</span>
|
||||
<span class="lineno"> 1092 </span><span class="spaces"> </span><span class="nottickedoff">in (ctx svg, zindex)</span></span>
|
||||
<span class="lineno"> 1093 </span>
|
||||
<span class="lineno"> 1094 </span>cameraFocus :: Object s Camera -> (Double, Double) -> Scene s ()
|
||||
<span class="lineno"> 1095 </span><span class="decl"><span class="nottickedoff">cameraFocus cam (x,y) = do</span>
|
||||
<span class="lineno"> 1096 </span><span class="spaces"> </span><span class="nottickedoff">(ox, oy) <- oRead cam oScaleOrigin</span>
|
||||
<span class="lineno"> 1097 </span><span class="spaces"> </span><span class="nottickedoff">(tx, ty) <- oRead cam oTranslate</span>
|
||||
<span class="lineno"> 1098 </span><span class="spaces"> </span><span class="nottickedoff">s <- oRead cam oScale</span>
|
||||
<span class="lineno"> 1099 </span><span class="spaces"> </span><span class="nottickedoff">let newLocation = (x-((x-ox)*s+ox-tx), y-((y-oy)*s+oy-ty))</span>
|
||||
<span class="lineno"> 1100 </span><span class="spaces"> </span><span class="nottickedoff">oModifyS cam $ do</span>
|
||||
<span class="lineno"> 1101 </span><span class="spaces"> </span><span class="nottickedoff">oTranslate .= newLocation</span>
|
||||
<span class="lineno"> 1102 </span><span class="spaces"> </span><span class="nottickedoff">oScaleOrigin .= (x,y)</span></span>
|
||||
<span class="lineno"> 1103 </span>
|
||||
<span class="lineno"> 1104 </span>cameraSetZoom :: Object s Camera -> Double -> Scene s ()
|
||||
<span class="lineno"> 1105 </span><span class="decl"><span class="nottickedoff">cameraSetZoom cam s =</span>
|
||||
<span class="lineno"> 1106 </span><span class="spaces"> </span><span class="nottickedoff">oModifyS cam $</span>
|
||||
<span class="lineno"> 1107 </span><span class="spaces"> </span><span class="nottickedoff">oScale .= s</span></span>
|
||||
<span class="lineno"> 1108 </span>
|
||||
<span class="lineno"> 1109 </span>cameraZoom :: Object s Camera -> Duration -> Double -> Scene s ()
|
||||
<span class="lineno"> 1110 </span><span class="decl"><span class="nottickedoff">cameraZoom cam d s =</span>
|
||||
<span class="lineno"> 1111 </span><span class="spaces"> </span><span class="nottickedoff">oTweenS cam d $ \t -></span>
|
||||
<span class="lineno"> 1112 </span><span class="spaces"> </span><span class="nottickedoff">oScale %= \v -> fromToS v s t</span></span>
|
||||
<span class="lineno"> 1113 </span>
|
||||
<span class="lineno"> 1114 </span>cameraSetPan :: Object s Camera -> (Double, Double) -> Scene s ()
|
||||
<span class="lineno"> 1115 </span><span class="decl"><span class="nottickedoff">cameraSetPan cam location =</span>
|
||||
<span class="lineno"> 1116 </span><span class="spaces"> </span><span class="nottickedoff">oModifyS cam $ do</span>
|
||||
<span class="lineno"> 1117 </span><span class="spaces"> </span><span class="nottickedoff">oTranslate .= location</span></span>
|
||||
<span class="lineno"> 1118 </span>
|
||||
<span class="lineno"> 1119 </span>cameraPan :: Object s Camera -> Duration -> (Double, Double) -> Scene s ()
|
||||
<span class="lineno"> 1120 </span><span class="decl"><span class="nottickedoff">cameraPan cam d (x,y) =</span>
|
||||
<span class="lineno"> 1121 </span><span class="spaces"> </span><span class="nottickedoff">oTweenS cam d $ \t -> do</span>
|
||||
<span class="lineno"> 1122 </span><span class="spaces"> </span><span class="nottickedoff">oTranslate._1 %= \v -> fromToS v x t</span>
|
||||
<span class="lineno"> 1123 </span><span class="spaces"> </span><span class="nottickedoff">oTranslate._2 %= \v -> fromToS v y t</span></span>
|
||||
<span class="lineno"> 1081 </span>-- | Connect an object to a camera such that
|
||||
<span class="lineno"> 1082 </span>-- camera settings (position, zoom, and rotation) is
|
||||
<span class="lineno"> 1083 </span>-- applied to the object.
|
||||
<span class="lineno"> 1084 </span>--
|
||||
<span class="lineno"> 1085 </span>-- Example
|
||||
<span class="lineno"> 1086 </span>--
|
||||
<span class="lineno"> 1087 </span>-- > do cam <- newObject Camera
|
||||
<span class="lineno"> 1088 </span>-- > circ <- newObject $ Circle 2
|
||||
<span class="lineno"> 1089 </span>-- > oModifyS circ $
|
||||
<span class="lineno"> 1090 </span>-- > oContext .= withFillOpacity 1 . withFillColor "blue"
|
||||
<span class="lineno"> 1091 </span>-- > oShow circ
|
||||
<span class="lineno"> 1092 </span>-- > cameraAttach cam circ
|
||||
<span class="lineno"> 1093 </span>-- > cameraZoom cam 1 2
|
||||
<span class="lineno"> 1094 </span>-- > cameraZoom cam 1 1
|
||||
<span class="lineno"> 1095 </span>--
|
||||
<span class="lineno"> 1096 </span>-- <<docs/gifs/doc_cameraAttach.gif>>
|
||||
<span class="lineno"> 1097 </span>cameraAttach :: Object s Camera -> Object s a -> Scene s ()
|
||||
<span class="lineno"> 1098 </span><span class="decl"><span class="nottickedoff">cameraAttach cam obj =</span>
|
||||
<span class="lineno"> 1099 </span><span class="spaces"> </span><span class="nottickedoff">spriteModify (objectSprite obj) $ do</span>
|
||||
<span class="lineno"> 1100 </span><span class="spaces"> </span><span class="nottickedoff">camData <- unVar (objectData cam)</span>
|
||||
<span class="lineno"> 1101 </span><span class="spaces"> </span><span class="nottickedoff">return $ \(svg,zindex) -></span>
|
||||
<span class="lineno"> 1102 </span><span class="spaces"> </span><span class="nottickedoff">let (x,y) = camData^.oTranslate</span>
|
||||
<span class="lineno"> 1103 </span><span class="spaces"> </span><span class="nottickedoff">ctx =</span>
|
||||
<span class="lineno"> 1104 </span><span class="spaces"> </span><span class="nottickedoff">translate (-x) (-y) .</span>
|
||||
<span class="lineno"> 1105 </span><span class="spaces"> </span><span class="nottickedoff">uncurry translate (camData^.oScaleOrigin) .</span>
|
||||
<span class="lineno"> 1106 </span><span class="spaces"> </span><span class="nottickedoff">scale (camData^.oScale) .</span>
|
||||
<span class="lineno"> 1107 </span><span class="spaces"> </span><span class="nottickedoff">uncurry translate (camData^.oScaleOrigin & both %~ negate)</span>
|
||||
<span class="lineno"> 1108 </span><span class="spaces"> </span><span class="nottickedoff">in (ctx svg, zindex)</span></span>
|
||||
<span class="lineno"> 1109 </span>
|
||||
<span class="lineno"> 1110 </span>-- |
|
||||
<span class="lineno"> 1111 </span>--
|
||||
<span class="lineno"> 1112 </span>-- Example
|
||||
<span class="lineno"> 1113 </span>--
|
||||
<span class="lineno"> 1114 </span>-- > do cam <- newObject Camera
|
||||
<span class="lineno"> 1115 </span>-- > circ <- newObject $ Circle 2; oShow circ
|
||||
<span class="lineno"> 1116 </span>-- > oModify circ $ oTranslate .~ (-3,0)
|
||||
<span class="lineno"> 1117 </span>-- > box <- newObject $ Rectangle 4 4; oShow box
|
||||
<span class="lineno"> 1118 </span>-- > oModify box $ oTranslate .~ (3,0)
|
||||
<span class="lineno"> 1119 </span>-- > cameraAttach cam circ
|
||||
<span class="lineno"> 1120 </span>-- > cameraAttach cam box
|
||||
<span class="lineno"> 1121 </span>-- > cameraFocus cam (-3,0)
|
||||
<span class="lineno"> 1122 </span>-- > cameraZoom cam 2 2 -- Zoom in
|
||||
<span class="lineno"> 1123 </span>-- > cameraZoom cam 2 1 -- Zoom out
|
||||
<span class="lineno"> 1124 </span>-- > cameraFocus cam (3,0)
|
||||
<span class="lineno"> 1125 </span>-- > cameraZoom cam 2 2 -- Zoom in
|
||||
<span class="lineno"> 1126 </span>-- > cameraZoom cam 2 1 -- Zoom out
|
||||
<span class="lineno"> 1127 </span>--
|
||||
<span class="lineno"> 1128 </span>-- <<docs/gifs/doc_cameraFocus.gif>>
|
||||
<span class="lineno"> 1129 </span>cameraFocus :: Object s Camera -> (Double, Double) -> Scene s ()
|
||||
<span class="lineno"> 1130 </span><span class="decl"><span class="nottickedoff">cameraFocus cam (x,y) = do</span>
|
||||
<span class="lineno"> 1131 </span><span class="spaces"> </span><span class="nottickedoff">(ox, oy) <- oRead cam oScaleOrigin</span>
|
||||
<span class="lineno"> 1132 </span><span class="spaces"> </span><span class="nottickedoff">(tx, ty) <- oRead cam oTranslate</span>
|
||||
<span class="lineno"> 1133 </span><span class="spaces"> </span><span class="nottickedoff">s <- oRead cam oScale</span>
|
||||
<span class="lineno"> 1134 </span><span class="spaces"> </span><span class="nottickedoff">let newLocation = (x-((x-ox)*s+ox-tx), y-((y-oy)*s+oy-ty))</span>
|
||||
<span class="lineno"> 1135 </span><span class="spaces"> </span><span class="nottickedoff">oModifyS cam $ do</span>
|
||||
<span class="lineno"> 1136 </span><span class="spaces"> </span><span class="nottickedoff">oTranslate .= newLocation</span>
|
||||
<span class="lineno"> 1137 </span><span class="spaces"> </span><span class="nottickedoff">oScaleOrigin .= (x,y)</span></span>
|
||||
<span class="lineno"> 1138 </span>
|
||||
<span class="lineno"> 1139 </span>-- | Instantaneously set camera zoom level.
|
||||
<span class="lineno"> 1140 </span>cameraSetZoom :: Object s Camera -> Double -> Scene s ()
|
||||
<span class="lineno"> 1141 </span><span class="decl"><span class="nottickedoff">cameraSetZoom cam s =</span>
|
||||
<span class="lineno"> 1142 </span><span class="spaces"> </span><span class="nottickedoff">oModifyS cam $</span>
|
||||
<span class="lineno"> 1143 </span><span class="spaces"> </span><span class="nottickedoff">oScale .= s</span></span>
|
||||
<span class="lineno"> 1144 </span>
|
||||
<span class="lineno"> 1145 </span>-- | Change camera zoom level over a set duration.
|
||||
<span class="lineno"> 1146 </span>cameraZoom :: Object s Camera -> Duration -> Double -> Scene s ()
|
||||
<span class="lineno"> 1147 </span><span class="decl"><span class="nottickedoff">cameraZoom cam d s =</span>
|
||||
<span class="lineno"> 1148 </span><span class="spaces"> </span><span class="nottickedoff">oTweenS cam d $ \t -></span>
|
||||
<span class="lineno"> 1149 </span><span class="spaces"> </span><span class="nottickedoff">oScale %= \v -> fromToS v s t</span></span>
|
||||
<span class="lineno"> 1150 </span>
|
||||
<span class="lineno"> 1151 </span>-- | Instantaneously set camera location.
|
||||
<span class="lineno"> 1152 </span>cameraSetPan :: Object s Camera -> (Double, Double) -> Scene s ()
|
||||
<span class="lineno"> 1153 </span><span class="decl"><span class="nottickedoff">cameraSetPan cam location =</span>
|
||||
<span class="lineno"> 1154 </span><span class="spaces"> </span><span class="nottickedoff">oModifyS cam $ do</span>
|
||||
<span class="lineno"> 1155 </span><span class="spaces"> </span><span class="nottickedoff">oTranslate .= location</span></span>
|
||||
<span class="lineno"> 1156 </span>
|
||||
<span class="lineno"> 1157 </span>-- | Change camera location over a set duration.
|
||||
<span class="lineno"> 1158 </span>cameraPan :: Object s Camera -> Duration -> (Double, Double) -> Scene s ()
|
||||
<span class="lineno"> 1159 </span><span class="decl"><span class="nottickedoff">cameraPan cam d (x,y) =</span>
|
||||
<span class="lineno"> 1160 </span><span class="spaces"> </span><span class="nottickedoff">oTweenS cam d $ \t -> do</span>
|
||||
<span class="lineno"> 1161 </span><span class="spaces"> </span><span class="nottickedoff">oTranslate._1 %= \v -> fromToS v x t</span>
|
||||
<span class="lineno"> 1162 </span><span class="spaces"> </span><span class="nottickedoff">oTranslate._2 %= \v -> fromToS v y t</span></span>
|
||||
|
||||
</pre>
|
||||
</body>
|
||||
|
|
|
|||
Loading…
Reference in a new issue