Deploying to gh-pages from @ d37e71ca94 🚀

This commit is contained in:
Lemmih 2020-09-19 14:48:26 +00:00
commit d7ec80e9b5
8 changed files with 121 additions and 125 deletions

View file

@ -36,4 +36,4 @@
100% ( 3 / 3) in 'Reanimate.Math.Balloon'
100% ( 3 / 3) in 'Reanimate.Blender'
100% ( 2 / 2) in 'Reanimate.Builtin.CirclePlot'
89% (111 /125) in 'Reanimate.Scene'
89% (114 /128) in 'Reanimate.Scene'

View file

@ -101,7 +101,7 @@ table.dashboard { border-collapse: collapse ; border: solid 1px black }
<td align="right">5%</td><td>1/19</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="5%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">0%</td><td>0/53</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="100%"><tr><td height=12 class="invbar"></td></tr></table></td></tr></table></td><td align="right">4%</td><td>39/852</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="4%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.5.0.1-inplace/Reanimate.Scene.Core.hs.html">reanimate-0.5.0.1-inplace/Reanimate.Scene.Core</a></tt></td>
<td align="right">63%</td><td>12/19</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="63%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">-&nbsp;</td><td>0/0</td><td width=100>&nbsp;</td><td align="right">72%</td><td>172/237</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="72%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<td align="right">66%</td><td>12/18</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="66%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">-&nbsp;</td><td>0/0</td><td width=100>&nbsp;</td><td align="right">72%</td><td>172/236</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="72%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.5.0.1-inplace/Reanimate.Scene.Sprite.hs.html">reanimate-0.5.0.1-inplace/Reanimate.Scene.Sprite</a></tt></td>
<td align="right">85%</td><td>23/27</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="85%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">57%</td><td>11/19</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="57%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">78%</td><td>314/400</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="78%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
@ -131,5 +131,5 @@ table.dashboard { border-collapse: collapse ; border: solid 1px black }
<td align="right">100%</td><td>6/6</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="100%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">50%</td><td>1/2</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="50%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">95%</td><td>43/45</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="95%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr></tr><tr style="background: #e0e0e0">
<th align=left>&nbsp;&nbsp;Program Coverage Total</tt></th>
<td align="right">35%</td><td>261/740</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="35%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">17%</td><td>144/846</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="17%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">32%</td><td>4843/14993</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="32%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<td align="right">35%</td><td>261/739</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="35%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">17%</td><td>144/846</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="17%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">32%</td><td>4843/14992</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="32%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
</table></body></html>

View file

@ -128,8 +128,8 @@ table.dashboard { border-collapse: collapse ; border: solid 1px black }
<td align="right">15%</td><td>3/20</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="15%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">-&nbsp;</td><td>0/0</td><td width=100>&nbsp;</td><td align="right">14%</td><td>7/49</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="14%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.5.0.1-inplace/Reanimate.Scene.Core.hs.html">reanimate-0.5.0.1-inplace/Reanimate.Scene.Core</a></tt></td>
<td align="right">63%</td><td>12/19</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="63%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">-&nbsp;</td><td>0/0</td><td width=100>&nbsp;</td><td align="right">72%</td><td>172/237</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="72%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<td align="right">66%</td><td>12/18</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="66%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">-&nbsp;</td><td>0/0</td><td width=100>&nbsp;</td><td align="right">72%</td><td>172/236</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="72%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr></tr><tr style="background: #e0e0e0">
<th align=left>&nbsp;&nbsp;Program Coverage Total</tt></th>
<td align="right">35%</td><td>261/740</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="35%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">17%</td><td>144/846</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="17%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">32%</td><td>4843/14993</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="32%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<td align="right">35%</td><td>261/739</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="35%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">17%</td><td>144/846</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="17%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">32%</td><td>4843/14992</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="32%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
</table></body></html>

View file

@ -32,7 +32,7 @@ table.dashboard { border-collapse: collapse ; border: solid 1px black }
<td align="right">85%</td><td>23/27</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="85%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">57%</td><td>11/19</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="57%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">78%</td><td>314/400</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="78%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.5.0.1-inplace/Reanimate.Scene.Core.hs.html">reanimate-0.5.0.1-inplace/Reanimate.Scene.Core</a></tt></td>
<td align="right">63%</td><td>12/19</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="63%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">-&nbsp;</td><td>0/0</td><td width=100>&nbsp;</td><td align="right">72%</td><td>172/237</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="72%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<td align="right">66%</td><td>12/18</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="66%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">-&nbsp;</td><td>0/0</td><td width=100>&nbsp;</td><td align="right">72%</td><td>172/236</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="72%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.5.0.1-inplace/Reanimate.Svg.LineCommand.hs.html">reanimate-0.5.0.1-inplace/Reanimate.Svg.LineCommand</a></tt></td>
<td align="right">80%</td><td>12/15</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="80%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">58%</td><td>43/74</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="58%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">70%</td><td>659/937</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="70%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
@ -131,5 +131,5 @@ table.dashboard { border-collapse: collapse ; border: solid 1px black }
<td align="right">0%</td><td>0/1</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="100%"><tr><td height=12 class="invbar"></td></tr></table></td></tr></table></td><td align="right">0%</td><td>0/4</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="100%"><tr><td height=12 class="invbar"></td></tr></table></td></tr></table></td><td align="right">0%</td><td>0/61</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="100%"><tr><td height=12 class="invbar"></td></tr></table></td></tr></table></td></tr>
<tr></tr><tr style="background: #e0e0e0">
<th align=left>&nbsp;&nbsp;Program Coverage Total</tt></th>
<td align="right">35%</td><td>261/740</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="35%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">17%</td><td>144/846</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="17%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">32%</td><td>4843/14993</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="32%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<td align="right">35%</td><td>261/739</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="35%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">17%</td><td>144/846</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="17%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">32%</td><td>4843/14992</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="32%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
</table></body></html>

View file

@ -44,7 +44,7 @@ table.dashboard { border-collapse: collapse ; border: solid 1px black }
<td align="right">67%</td><td>33/49</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="67%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">37%</td><td>3/8</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="37%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">65%</td><td>368/563</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="65%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.5.0.1-inplace/Reanimate.Scene.Core.hs.html">reanimate-0.5.0.1-inplace/Reanimate.Scene.Core</a></tt></td>
<td align="right">63%</td><td>12/19</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="63%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">-&nbsp;</td><td>0/0</td><td width=100>&nbsp;</td><td align="right">72%</td><td>172/237</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="72%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<td align="right">66%</td><td>12/18</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="66%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">-&nbsp;</td><td>0/0</td><td width=100>&nbsp;</td><td align="right">72%</td><td>172/236</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="72%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.5.0.1-inplace/Reanimate.Builtin.Images.hs.html">reanimate-0.5.0.1-inplace/Reanimate.Builtin.Images</a></tt></td>
<td align="right">57%</td><td>4/7</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="57%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">25%</td><td>1/4</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="25%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">48%</td><td>24/49</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="48%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
@ -131,5 +131,5 @@ table.dashboard { border-collapse: collapse ; border: solid 1px black }
<td align="right">0%</td><td>0/1</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="100%"><tr><td height=12 class="invbar"></td></tr></table></td></tr></table></td><td align="right">0%</td><td>0/4</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="100%"><tr><td height=12 class="invbar"></td></tr></table></td></tr></table></td><td align="right">0%</td><td>0/61</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="100%"><tr><td height=12 class="invbar"></td></tr></table></td></tr></table></td></tr>
<tr></tr><tr style="background: #e0e0e0">
<th align=left>&nbsp;&nbsp;Program Coverage Total</tt></th>
<td align="right">35%</td><td>261/740</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="35%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">17%</td><td>144/846</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="17%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">32%</td><td>4843/14993</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="32%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<td align="right">35%</td><td>261/739</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="35%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">17%</td><td>144/846</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="17%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">32%</td><td>4843/14992</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="32%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
</table></body></html>

View file

@ -1,12 +1,12 @@
const snippets = [{"title": "Hello World","url": "https://reanimate.clozecards.com/NIHR92zCsdg/298.svg","code": "-- This is the interactive Reanimate Playground\n\n-- Here you can write Haskell code and have it\n-- render directly to your browser.\n\n-- There are more examples available if you click\n-- on the 'collections' icon to the far right\n\nanimation :: Animation\nanimation = scene $ do\n newSpriteSVG_ $ mkBackground \"white\"\n logo <- oNew $ center $ latex \"Reanimate\"\n oModify logo $ oScale .~ 3\n\n oShowWith logo oFadeIn\n oTweenS logo 1 $ \\t -> do\n oScale %= \\prev -> fromToS prev 2 t\n oTopY %= \\prev -> fromToS prev screenTop t\n\n haskell <- oNew $ center $ withStrokeColor \"black\" $ latex \"Haskell\"\n oModify haskell $ oScale .~ 3\n oShowWith haskell oDraw\n oTweenS haskell 1 $ \\t -> do\n oScale %= \\prev -> fromToS prev 2 t\n oBottomY %= \\prev -> fromToS prev screenBottom t\n\n features <- mapM (oNew . scale 3 . center . latex)\n [\"SVG\", \"\\\\LaTeX\", \"Animation\", \"Windows\", \"Linux\", \"MacOS\", \"Browsers\"]\n oShowWith (head features) $ adjustDuration (*3) . oScaleIn\n featureChain features\n\n wait (-1)\n fork $ oHideWith logo oFadeOut\n fork $ oHideWith haskell oFadeOut\n\nreplace :: Object s a -> Object s b -> Scene s ()\nreplace a b = do\n fork $ oHideWith a $ adjustDuration (*3) . oScaleOut\n wait 0.2\n oShowWith b $ adjustDuration (*3) . oScaleIn\n\nfeatureChain :: [Object s a] -> Scene s ()\nfeatureChain (x:y:xs) = do\n replace x y\n featureChain (y:xs)\nfeatureChain [x] = do\n oHideWith x $ adjustDuration (*3) . oScaleOut\nfeatureChain [] = return ()\n"}
,{"title": "Composition","url": "https://reanimate.clozecards.com/ECv3cbsbuMV/150.svg","code": "animation :: Animation\nanimation = docEnv $ sceneAnimation $ do\n play $ drawBox `parA` drawCircle\n & label \"parA\"\n play $ drawBox `seqA` drawCircle\n & label \"seqA\"\n play $ drawBox `andThen` drawCircle\n & label \"andThen\"\n\nlabel txt = addStatic $\n withFillOpacity 1 $ withStrokeWidth 0 $\n withFillColor \"black\" $\n translate screenLeft (screenBottom+0.2) $\n latex txt\n"}
,{"title": "Color Maps","url": "https://reanimate.clozecards.com/Ezuf27J2YrF/60.svg","code": "animation :: Animation\nanimation = docEnv $ sceneAnimation $ do\n play $ staticFrame 1 (showColorMap parula)\n & label \"Parula\"\n play $ staticFrame 1 (showColorMap viridis)\n & label \"Viridis\"\n play $ staticFrame 1 (showColorMap turbo)\n & label \"Turbo\"\n play $ staticFrame 1 (showColorMap greyscale)\n & label \"Greyscale\"\n\nlabel txt = overlay $\n withFillOpacity 1 $ withStrokeWidth 0 $\n withFillColor \"white\" $\n translate screenLeft (screenBottom+0.2) $\n latex txt\n\noverlay svg ani = ani `parA` staticFrame (duration ani) svg\n"}
,{"title": "Composition","url": "https://reanimate.clozecards.com/CONglUu1SIK/150.svg","code": "animation :: Animation\nanimation = docEnv $ scene $ do\n play $ drawBox `parA` drawCircle\n & label \"parA\"\n play $ drawBox `seqA` drawCircle\n & label \"seqA\"\n play $ drawBox `andThen` drawCircle\n & label \"andThen\"\n\nlabel txt = addStatic $\n withFillOpacity 1 $ withStrokeWidth 0 $\n withFillColor \"black\" $\n translate screenLeft (screenBottom+0.2) $\n latex txt\n"}
,{"title": "Color Maps","url": "https://reanimate.clozecards.com/D2qhcmUMxQc/60.svg","code": "animation :: Animation\nanimation = docEnv $ scene $ do\n play $ staticFrame 1 (showColorMap parula)\n & label \"Parula\"\n play $ staticFrame 1 (showColorMap viridis)\n & label \"Viridis\"\n play $ staticFrame 1 (showColorMap turbo)\n & label \"Turbo\"\n play $ staticFrame 1 (showColorMap greyscale)\n & label \"Greyscale\"\n\nlabel txt = overlay $\n withFillOpacity 1 $ withStrokeWidth 0 $\n withFillColor \"white\" $\n translate screenLeft (screenBottom+0.2) $\n latex txt\n\noverlay svg ani = ani `parA` staticFrame (duration ani) svg\n"}
,{"title": "Try it live","url": "https://reanimate.clozecards.com/OwjMi4FCJ4Z/90.svg","code": "background = \"lightblue\"\n\nshape :: SVG\nshape = mkCircle 4\n--shape = mkRect 6 6\n--shape = mkLine (screenLeft, screenBottom) (screenRight, screenTop)\n\nanimation :: Animation\nanimation = docEnv $\n addStatic (mkBackground background) $\n playThenReverseA $\n signalA (curveS 2) $\n setDuration 3 $ animate $ \\t ->\n partialSvg t $ pathify shape\n"}
,{"title": "Basic Objects","url": "https://reanimate.clozecards.com/LvoPSTEzZlg/90.svg","code": "env =\n addStatic (mkBackground \"white\") .\n mapA (withStrokeColor \"black\")\n\nanimation :: Animation\nanimation = env $\n sceneAnimation $ do\n circ <- newObject $ Circle 3\n oModify circ $\n oContext .~ withFillColor \"pink\"\n box <- newObject $ Rectangle 5 5\n oModify box $\n oContext .~ withFillColor \"lightblue\"\n \n oShowWith circ oGrow; wait 1\n oTransform circ box 1; wait 1\n oHideWith box oFadeOut; wait 1\n"}
,{"title": "LaTeX","url": "https://reanimate.clozecards.com/PXPuugoHzrR/181.svg","code": "env =\n addStatic (mkBackground \"white\") .\n mapA (withStrokeColor \"black\")\n\nanimation :: Animation\nanimation = env $\n sceneAnimation $ do\n drawLatex \"e^{i\\\\pi}+1=0\"\n drawLatex \"\\\\sum_{k=1}^\\\\infty {1 \\\\over k^2} = {\\\\pi^2 \\\\over 6}\"\n drawLatex \"\\\\sum_{k=1}^\\\\infty\"\n wait 1\n\ndrawLatex txt = do\n -- Draw outline\n fork $ do\n play $ animate $ \\t ->\n withFillOpacity 0 $\n partialSvg t svg\n -- Fade outline\n play $ animate $ \\t ->\n withFillOpacity 0 $\n withStrokeWidth (defaultStrokeWidth*(1-t)) $\n svg\n wait 0.7\n -- Fill in letters\n play $ animate $ \\t ->\n withFillOpacity t $ withStrokeWidth 0 $\n svg\n -- Hold static image and then fade out\n play $ staticFrame 2 (withStrokeWidth 0 svg)\n & applyE (overEnding 0.3 fadeOutE)\n where\n svg = scale 2 $ center $ latexAlign txt\n"}
,{"title": "Easing Functions","url": "https://reanimate.clozecards.com/P4F3jzh2Mcj/45.svg","code": "animation :: Animation\nanimation = docEnv $ pauseAtEnd 1 $ sceneAnimation $ do\n showEasing 0 \"curveS\" (curveS 2)\n showEasing 1 \"bellS\" (bellS 2)\n showEasing 2 \"constantS\" (constantS 0.7)\n showEasing 3 \"oscillateS\" oscillateS\n showEasing 4 \"powerS\" (powerS 2)\n showEasing 5 \"reverseS\" reverseS\n showEasing 6 \"id\" id\n\nshowEasing nth txt fn = do\n let yOffset | even nth = 0\n | odd nth = -1\n xOffset = -6 + fromIntegral nth*2\n newSpriteSVG_ $\n \ttranslate xOffset yOffset $\n label txt\n fork $ play $ mapA (translate xOffset 0) $\n mapA (rotate 90) $\n mapA (scale (screenHeight/screenWidth * 0.6)) $\n signalA fn drawProgress\n\nlabel txt =\n translate 0 (-2.5) $\n scale 0.7 $\n center $\n withStrokeWidth 0 $\n withFillOpacity 1 $\n svg\n where\n svg = latex txt\n"}
,{"title": "Easing Graphs","url": "https://reanimate.clozecards.com/FEyCDsj0V82/255.svg","code": "colorPalette = parula -- try: viridis, sinebow, turbo, cividis\nfns =\n [(\"curveS\", curveS 2)\n ,(\"bellS\", bellS 2)\n ,(\"constantS\", constantS 0.7)\n ,(\"oscillateS\", oscillateS)\n ,(\"powerS\", powerS 2)\n ,(\"reverseS\", reverseS)\n ,(\"id\", id)\n ]\n\nanimation :: Animation\nanimation = docEnv $ pauseAtEnd 1 $ sceneAnimation $ do\n newSpriteSVG_ $ mkBackground \"white\"\n play $ signalA (curveS 2) $ animate $ \\t -> partialSvg t grid\n newSpriteSVG_ grid\n wait 1\n flip mapM_ (zip [0..] fns) $ \\(nth, (txt, fn)) -> do\n let color = promotePixel $ colorPalette (nth / fromIntegral (length fns-1))\n showEasing nth txt fn color\n {- showEasing 3 \"oscillateS\" oscillateS\n showEasing 4 \"powerS\" (powerS 2)\n showEasing 5 \"reverseS\" reverseS\n showEasing 6 \"id\" id -}\n\ngridOffset = -2\ngridHeight = 5\ngridWidth = 8\n\ngrid :: SVG\ngrid = translate gridOffset 0 $\n withStrokeWidth defaultStrokeWidth $\n withStrokeColor \"grey\" $ mkGroup\n [ mkPath $ concat\n [[ SVG.MoveTo SVG.OriginAbsolute [V2 (-gridWidth/2) (gridHeight/2-n)]\n ,SVG.HorizontalTo SVG.OriginRelative [gridWidth] ]\n | n <- [1..gridHeight-1]\n ]\n , mkPath \n [ SVG.MoveTo SVG.OriginAbsolute [V2 (-gridWidth/2) (gridHeight/2)]\n , SVG.VerticalTo SVG.OriginRelative [-gridHeight]\n , SVG.HorizontalTo SVG.OriginRelative [gridWidth]\n , SVG.VerticalTo SVG.OriginRelative [gridHeight]\n , SVG.EndPath\n ]\n ]\n\nshowEasing nth txt fn color = do\n let steps = 100\n slope = withStrokeColorPixel color $\n translate gridOffset 0 $ mkLinePath\n [ ((x/steps-0.5)*gridWidth, (y-0.5)*gridHeight)\n | x <- [0..steps]\n , let y = fn (x/steps) ]\n s <- newSpriteSVG $\n withFillColorPixel color $\n translate (gridWidth/2+gridOffset+0.5) (gridHeight/2-nth) $\n label txt\n spriteE s $ overBeginning 0.2 fadeInE\n play $ animate $ \\t -> partialSvg t slope\n newSpriteSVG_ slope\n wait 1\n \nlabel txt = withStrokeColor \"black\" $\n withStrokeWidth (defaultStrokeWidth*2) $\n withFillOpacity 1 $\n latex txt\n"}
,{"title": "Object Positions","url": "https://reanimate.clozecards.com/Mf4zcImo+I7/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 oTranslate .= (0, screenBottom+0.5)\n oRightX .= screenRight\n botL <- newText \"Bottom left\"\n oModifyS botL $ do\n oTranslate .= (0, screenBottom+0.5)\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 $ oHideWith src oFadeOut\n oShowWith dst oFadeIn\n wait 1\n\nnewText txt =\n newObject $ scale 1.5 $ centerX $ latex txt\n"}
,{"title": "Camera","url": "https://reanimate.clozecards.com/Hcx00P+aeph/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 $ withFillColor \"blue\" $ mkCircle 1\n cameraAttach cam circle\n circleRight <- oRead circle oRightX\n\n box <- newObject $ withFillColor \"green\" $ mkRect 2 2\n cameraAttach cam box\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"}
,{"title": "Basic Objects","url": "https://reanimate.clozecards.com/CjGaiUUQ1eT/90.svg","code": "env =\n addStatic (mkBackground \"white\") .\n mapA (withStrokeColor \"black\")\n\nanimation :: Animation\nanimation = env $\n scene $ do\n circ <- newObject $ Circle 3\n oModify circ $\n oContext .~ withFillColor \"pink\"\n box <- newObject $ Rectangle 5 5\n oModify box $\n oContext .~ withFillColor \"lightblue\"\n \n oShowWith circ oGrow; wait 1\n oTransform circ box 1; wait 1\n oHideWith box oFadeOut; wait 1\n"}
,{"title": "LaTeX","url": "https://reanimate.clozecards.com/BKHmgAI32CA/181.svg","code": "env =\n addStatic (mkBackground \"white\") .\n mapA (withStrokeColor \"black\")\n\nanimation :: Animation\nanimation = env $\n scene $ do\n drawLatex \"e^{i\\\\pi}+1=0\"\n drawLatex \"\\\\sum_{k=1}^\\\\infty {1 \\\\over k^2} = {\\\\pi^2 \\\\over 6}\"\n drawLatex \"\\\\sum_{k=1}^\\\\infty\"\n wait 1\n\ndrawLatex txt = do\n -- Draw outline\n fork $ do\n play $ animate $ \\t ->\n withFillOpacity 0 $\n partialSvg t svg\n -- Fade outline\n play $ animate $ \\t ->\n withFillOpacity 0 $\n withStrokeWidth (defaultStrokeWidth*(1-t)) $\n svg\n wait 0.7\n -- Fill in letters\n play $ animate $ \\t ->\n withFillOpacity t $ withStrokeWidth 0 $\n svg\n -- Hold static image and then fade out\n play $ staticFrame 2 (withStrokeWidth 0 svg)\n & applyE (overEnding 0.3 fadeOutE)\n where\n svg = scale 2 $ center $ latexAlign txt\n"}
,{"title": "Easing Functions","url": "https://reanimate.clozecards.com/J$Nxz3yvngq/45.svg","code": "animation :: Animation\nanimation = docEnv $ pauseAtEnd 1 $ scene $ do\n showEasing 0 \"curveS\" (curveS 2)\n showEasing 1 \"bellS\" (bellS 2)\n showEasing 2 \"constantS\" (constantS 0.7)\n showEasing 3 \"oscillateS\" oscillateS\n showEasing 4 \"powerS\" (powerS 2)\n showEasing 5 \"reverseS\" reverseS\n showEasing 6 \"id\" id\n\nshowEasing nth txt fn = do\n let yOffset | even nth = 0\n | odd nth = -1\n xOffset = -6 + fromIntegral nth*2\n newSpriteSVG_ $\n \ttranslate xOffset yOffset $\n label txt\n fork $ play $ mapA (translate xOffset 0) $\n mapA (rotate 90) $\n mapA (scale (screenHeight/screenWidth * 0.6)) $\n signalA fn drawProgress\n\nlabel txt =\n translate 0 (-2.5) $\n scale 0.7 $\n center $\n withStrokeWidth 0 $\n withFillOpacity 1 $\n svg\n where\n svg = latex txt\n"}
,{"title": "Easing Graphs","url": "https://reanimate.clozecards.com/PYgakFrzwyp/255.svg","code": "colorPalette = parula -- try: viridis, sinebow, turbo, cividis\nfns =\n [(\"curveS\", curveS 2)\n ,(\"bellS\", bellS 2)\n ,(\"constantS\", constantS 0.7)\n ,(\"oscillateS\", oscillateS)\n ,(\"powerS\", powerS 2)\n ,(\"reverseS\", reverseS)\n ,(\"id\", id)\n ]\n\nanimation :: Animation\nanimation = docEnv $ pauseAtEnd 1 $ scene $ do\n newSpriteSVG_ $ mkBackground \"white\"\n play $ signalA (curveS 2) $ animate $ \\t -> partialSvg t grid\n newSpriteSVG_ grid\n wait 1\n flip mapM_ (zip [0..] fns) $ \\(nth, (txt, fn)) -> do\n let color = promotePixel $ colorPalette (nth / fromIntegral (length fns-1))\n showEasing nth txt fn color\n {- showEasing 3 \"oscillateS\" oscillateS\n showEasing 4 \"powerS\" (powerS 2)\n showEasing 5 \"reverseS\" reverseS\n showEasing 6 \"id\" id -}\n\ngridOffset = -2\ngridHeight = 5\ngridWidth = 8\n\ngrid :: SVG\ngrid = translate gridOffset 0 $\n withStrokeWidth defaultStrokeWidth $\n withStrokeColor \"grey\" $ mkGroup\n [ mkPath $ concat\n [[ SVG.MoveTo SVG.OriginAbsolute [V2 (-gridWidth/2) (gridHeight/2-n)]\n ,SVG.HorizontalTo SVG.OriginRelative [gridWidth] ]\n | n <- [1..gridHeight-1]\n ]\n , mkPath \n [ SVG.MoveTo SVG.OriginAbsolute [V2 (-gridWidth/2) (gridHeight/2)]\n , SVG.VerticalTo SVG.OriginRelative [-gridHeight]\n , SVG.HorizontalTo SVG.OriginRelative [gridWidth]\n , SVG.VerticalTo SVG.OriginRelative [gridHeight]\n , SVG.EndPath\n ]\n ]\n\nshowEasing nth txt fn color = do\n let steps = 100\n slope = withStrokeColorPixel color $\n translate gridOffset 0 $ mkLinePath\n [ ((x/steps-0.5)*gridWidth, (y-0.5)*gridHeight)\n | x <- [0..steps]\n , let y = fn (x/steps) ]\n s <- newSpriteSVG $\n withFillColorPixel color $\n translate (gridWidth/2+gridOffset+0.5) (gridHeight/2-nth) $\n label txt\n spriteE s $ overBeginning 0.2 fadeInE\n play $ animate $ \\t -> partialSvg t slope\n newSpriteSVG_ slope\n wait 1\n \nlabel txt = withStrokeColor \"black\" $\n withStrokeWidth (defaultStrokeWidth*2) $\n withFillOpacity 1 $\n latex txt\n"}
,{"title": "Object Positions","url": "https://reanimate.clozecards.com/LRZe4V6frOI/195.svg","code": "env =\n addStatic (mkBackground \"white\") .\n mapA (withStrokeColor \"black\")\n\nanimation :: Animation\nanimation = env $\n scene $ 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 oTranslateY .= screenBottom+0.5\n oRightX .= screenRight\n botL <- newText \"Bottom left\"\n oModifyS botL $ do\n oTranslateY .= screenBottom+0.5\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 $ oHideWith src oFadeOut\n oShowWith dst oFadeIn\n wait 1\n\nnewText txt =\n newObject $ scale 1.5 $ centerX $ latex txt\n"}
,{"title": "Camera","url": "https://reanimate.clozecards.com/JlWlOpJvDds/150.svg","code": "animation :: Animation\nanimation = docEnv $ mapA (withFillOpacity 1) $ scene $ 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 $ withFillColor \"blue\" $ mkCircle 1\n cameraAttach cam circle\n circleRight <- oRead circle oRightX\n\n box <- newObject $ withFillColor \"green\" $ mkRect 2 2\n cameraAttach cam box\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 (V2 0 0)\n"}
];
const playgroundVersion = "2020-09-19 (ff880)";
const playgroundVersion = "2020-09-19 (d37e7)";

View file

@ -73,113 +73,109 @@ span.spaces { background: white }
<span class="lineno"> 54 </span>
<span class="lineno"> 55 </span>-- | Render a 'Scene' to an 'Animation'.
<span class="lineno"> 56 </span>scene :: (forall s. Scene s a) -&gt; Animation
<span class="lineno"> 57 </span><span class="decl"><span class="nottickedoff">scene = sceneAnimation</span></span>
<span class="lineno"> 58 </span>
<span class="lineno"> 59 </span>-- | Render a 'Scene' to an 'Animation'.
<span class="lineno"> 60 </span>sceneAnimation :: (forall s. Scene s a) -&gt; Animation
<span class="lineno"> 61 </span><span class="decl"><span class="istickedoff">sceneAnimation action =</span>
<span class="lineno"> 62 </span><span class="spaces"> </span><span class="istickedoff">runST</span>
<span class="lineno"> 63 </span><span class="spaces"> </span><span class="istickedoff">( do</span>
<span class="lineno"> 64 </span><span class="spaces"> </span><span class="istickedoff">(_, s, p, gens) &lt;- unM action 0</span>
<span class="lineno"> 65 </span><span class="spaces"> </span><span class="istickedoff">let dur = max s p</span>
<span class="lineno"> 66 </span><span class="spaces"> </span><span class="istickedoff">genFns &lt;- sequence gens</span>
<span class="lineno"> 67 </span><span class="spaces"> </span><span class="istickedoff">return $</span>
<span class="lineno"> 68 </span><span class="spaces"> </span><span class="istickedoff">mkAnimation</span>
<span class="lineno"> 69 </span><span class="spaces"> </span><span class="istickedoff">dur</span>
<span class="lineno"> 70 </span><span class="spaces"> </span><span class="istickedoff">( \t -&gt;</span>
<span class="lineno"> 71 </span><span class="spaces"> </span><span class="istickedoff">mkGroup $</span>
<span class="lineno"> 72 </span><span class="spaces"> </span><span class="istickedoff">map fst $</span>
<span class="lineno"> 73 </span><span class="spaces"> </span><span class="istickedoff">sortOn</span>
<span class="lineno"> 74 </span><span class="spaces"> </span><span class="istickedoff">snd</span>
<span class="lineno"> 75 </span><span class="spaces"> </span><span class="istickedoff">[spriteRender dur (t * dur) | spriteRender &lt;- genFns]</span>
<span class="lineno"> 76 </span><span class="spaces"> </span><span class="istickedoff">)</span>
<span class="lineno"> 77 </span><span class="spaces"> </span><span class="istickedoff">)</span></span>
<span class="lineno"> 78 </span>
<span class="lineno"> 79 </span>-- | Execute actions in a scene without advancing the clock. Note that scenes do not end before
<span class="lineno"> 80 </span>-- all forked actions have completed.
<span class="lineno"> 81 </span>--
<span class="lineno"> 82 </span>-- Example:
<span class="lineno"> 83 </span>--
<span class="lineno"> 84 </span>-- @
<span class="lineno"> 85 </span>-- do 'fork' $ 'play' 'Reanimate.Builtin.Documentation.drawBox'
<span class="lineno"> 86 </span>-- 'play' 'Reanimate.Builtin.Documentation.drawCircle'
<span class="lineno"> 87 </span>-- @
<span class="lineno"> 88 </span>--
<span class="lineno"> 89 </span>-- &lt;&lt;docs/gifs/doc_fork.gif&gt;&gt;
<span class="lineno"> 90 </span>fork :: Scene s a -&gt; Scene s a
<span class="lineno"> 91 </span><span class="decl"><span class="istickedoff">fork (M action) = M $ \t -&gt; do</span>
<span class="lineno"> 92 </span><span class="spaces"> </span><span class="istickedoff">(a, s, p, gens) &lt;- action t</span>
<span class="lineno"> 93 </span><span class="spaces"> </span><span class="istickedoff">return (a, 0, max s p, gens)</span></span>
<span class="lineno"> 94 </span>
<span class="lineno"> 95 </span>-- | Query the current clock timestamp.
<span class="lineno"> 96 </span>--
<span class="lineno"> 97 </span>-- Example:
<span class="lineno"> 98 </span>--
<span class="lineno"> 57 </span><span class="decl"><span class="istickedoff">scene action =</span>
<span class="lineno"> 58 </span><span class="spaces"> </span><span class="istickedoff">runST</span>
<span class="lineno"> 59 </span><span class="spaces"> </span><span class="istickedoff">( do</span>
<span class="lineno"> 60 </span><span class="spaces"> </span><span class="istickedoff">(_, s, p, gens) &lt;- unM action 0</span>
<span class="lineno"> 61 </span><span class="spaces"> </span><span class="istickedoff">let dur = max s p</span>
<span class="lineno"> 62 </span><span class="spaces"> </span><span class="istickedoff">genFns &lt;- sequence gens</span>
<span class="lineno"> 63 </span><span class="spaces"> </span><span class="istickedoff">return $</span>
<span class="lineno"> 64 </span><span class="spaces"> </span><span class="istickedoff">mkAnimation</span>
<span class="lineno"> 65 </span><span class="spaces"> </span><span class="istickedoff">dur</span>
<span class="lineno"> 66 </span><span class="spaces"> </span><span class="istickedoff">( \t -&gt;</span>
<span class="lineno"> 67 </span><span class="spaces"> </span><span class="istickedoff">mkGroup $</span>
<span class="lineno"> 68 </span><span class="spaces"> </span><span class="istickedoff">map fst $</span>
<span class="lineno"> 69 </span><span class="spaces"> </span><span class="istickedoff">sortOn</span>
<span class="lineno"> 70 </span><span class="spaces"> </span><span class="istickedoff">snd</span>
<span class="lineno"> 71 </span><span class="spaces"> </span><span class="istickedoff">[spriteRender dur (t * dur) | spriteRender &lt;- genFns]</span>
<span class="lineno"> 72 </span><span class="spaces"> </span><span class="istickedoff">)</span>
<span class="lineno"> 73 </span><span class="spaces"> </span><span class="istickedoff">)</span></span>
<span class="lineno"> 74 </span>
<span class="lineno"> 75 </span>-- | Execute actions in a scene without advancing the clock. Note that scenes do not end before
<span class="lineno"> 76 </span>-- all forked actions have completed.
<span class="lineno"> 77 </span>--
<span class="lineno"> 78 </span>-- Example:
<span class="lineno"> 79 </span>--
<span class="lineno"> 80 </span>-- @
<span class="lineno"> 81 </span>-- do 'fork' $ 'play' 'Reanimate.Builtin.Documentation.drawBox'
<span class="lineno"> 82 </span>-- 'play' 'Reanimate.Builtin.Documentation.drawCircle'
<span class="lineno"> 83 </span>-- @
<span class="lineno"> 84 </span>--
<span class="lineno"> 85 </span>-- &lt;&lt;docs/gifs/doc_fork.gif&gt;&gt;
<span class="lineno"> 86 </span>fork :: Scene s a -&gt; Scene s a
<span class="lineno"> 87 </span><span class="decl"><span class="istickedoff">fork (M action) = M $ \t -&gt; do</span>
<span class="lineno"> 88 </span><span class="spaces"> </span><span class="istickedoff">(a, s, p, gens) &lt;- action t</span>
<span class="lineno"> 89 </span><span class="spaces"> </span><span class="istickedoff">return (a, 0, max s p, gens)</span></span>
<span class="lineno"> 90 </span>
<span class="lineno"> 91 </span>-- | Query the current clock timestamp.
<span class="lineno"> 92 </span>--
<span class="lineno"> 93 </span>-- Example:
<span class="lineno"> 94 </span>--
<span class="lineno"> 95 </span>-- @
<span class="lineno"> 96 </span>-- do now \&lt;- 'play' 'Reanimate.Builtin.Documentation.drawCircle' *\&gt; 'queryNow'
<span class="lineno"> 97 </span>-- 'play' $ 'staticFrame' 1 $ 'scale' 2 $ 'withStrokeWidth' 0.05 $
<span class="lineno"> 98 </span>-- 'mkText' $ &quot;Now=&quot; &lt;&gt; T.pack (show now)
<span class="lineno"> 99 </span>-- @
<span class="lineno"> 100 </span>-- do now \&lt;- 'play' 'Reanimate.Builtin.Documentation.drawCircle' *\&gt; 'queryNow'
<span class="lineno"> 101 </span>-- 'play' $ 'staticFrame' 1 $ 'scale' 2 $ 'withStrokeWidth' 0.05 $
<span class="lineno"> 102 </span>-- 'mkText' $ &quot;Now=&quot; &lt;&gt; T.pack (show now)
<span class="lineno"> 103 </span>-- @
<span class="lineno"> 104 </span>--
<span class="lineno"> 105 </span>-- &lt;&lt;docs/gifs/doc_queryNow.gif&gt;&gt;
<span class="lineno"> 106 </span>queryNow :: Scene s Time
<span class="lineno"> 107 </span><span class="decl"><span class="istickedoff">queryNow = M $ \t -&gt; return (t, 0, 0, [])</span></span>
<span class="lineno"> 108 </span>
<span class="lineno"> 109 </span>-- | Advance the clock by a given number of seconds.
<span class="lineno"> 110 </span>--
<span class="lineno"> 111 </span>-- Example:
<span class="lineno"> 112 </span>--
<span class="lineno"> 100 </span>--
<span class="lineno"> 101 </span>-- &lt;&lt;docs/gifs/doc_queryNow.gif&gt;&gt;
<span class="lineno"> 102 </span>queryNow :: Scene s Time
<span class="lineno"> 103 </span><span class="decl"><span class="istickedoff">queryNow = M $ \t -&gt; return (t, 0, 0, [])</span></span>
<span class="lineno"> 104 </span>
<span class="lineno"> 105 </span>-- | Advance the clock by a given number of seconds.
<span class="lineno"> 106 </span>--
<span class="lineno"> 107 </span>-- Example:
<span class="lineno"> 108 </span>--
<span class="lineno"> 109 </span>-- @
<span class="lineno"> 110 </span>-- do 'fork' $ 'play' 'Reanimate.Builtin.Documentation.drawBox'
<span class="lineno"> 111 </span>-- 'wait' 1
<span class="lineno"> 112 </span>-- 'play' 'Reanimate.Builtin.Documentation.drawCircle'
<span class="lineno"> 113 </span>-- @
<span class="lineno"> 114 </span>-- do 'fork' $ 'play' 'Reanimate.Builtin.Documentation.drawBox'
<span class="lineno"> 115 </span>-- 'wait' 1
<span class="lineno"> 116 </span>-- 'play' 'Reanimate.Builtin.Documentation.drawCircle'
<span class="lineno"> 117 </span>-- @
<span class="lineno"> 118 </span>--
<span class="lineno"> 119 </span>-- &lt;&lt;docs/gifs/doc_wait.gif&gt;&gt;
<span class="lineno"> 120 </span>wait :: Duration -&gt; Scene s ()
<span class="lineno"> 121 </span><span class="decl"><span class="istickedoff">wait d = M $ \_ -&gt; return (<span class="nottickedoff">()</span>, d, 0, [])</span></span>
<span class="lineno"> 122 </span>
<span class="lineno"> 123 </span>-- | Wait until the clock is equal to the given timestamp.
<span class="lineno"> 124 </span>waitUntil :: Time -&gt; Scene s ()
<span class="lineno"> 125 </span><span class="decl"><span class="nottickedoff">waitUntil tNew = do</span>
<span class="lineno"> 126 </span><span class="spaces"> </span><span class="nottickedoff">now &lt;- queryNow</span>
<span class="lineno"> 127 </span><span class="spaces"> </span><span class="nottickedoff">wait (max 0 (tNew - now))</span></span>
<span class="lineno"> 128 </span>
<span class="lineno"> 129 </span>-- | Wait until all forked and sequential animations have finished.
<span class="lineno"> 130 </span>--
<span class="lineno"> 131 </span>-- Example:
<span class="lineno"> 132 </span>--
<span class="lineno"> 133 </span>-- @
<span class="lineno"> 134 </span>-- do 'waitOn' $ 'fork' $ 'play' 'Reanimate.Builtin.Documentation.drawBox'
<span class="lineno"> 135 </span>-- 'play' 'Reanimate.Builtin.Documentation.drawCircle'
<span class="lineno"> 136 </span>-- @
<span class="lineno"> 137 </span>--
<span class="lineno"> 138 </span>-- &lt;&lt;docs/gifs/doc_waitOn.gif&gt;&gt;
<span class="lineno"> 139 </span>waitOn :: Scene s a -&gt; Scene s a
<span class="lineno"> 140 </span><span class="decl"><span class="istickedoff">waitOn (M action) = M $ \t -&gt; do</span>
<span class="lineno"> 141 </span><span class="spaces"> </span><span class="istickedoff">(a, s, p, gens) &lt;- action t</span>
<span class="lineno"> 142 </span><span class="spaces"> </span><span class="istickedoff">return (<span class="nottickedoff">a</span>, max s p, 0, gens)</span></span>
<span class="lineno"> 143 </span>
<span class="lineno"> 144 </span>-- | Change the ZIndex of a scene.
<span class="lineno"> 145 </span>adjustZ :: (ZIndex -&gt; ZIndex) -&gt; Scene s a -&gt; Scene s a
<span class="lineno"> 146 </span><span class="decl"><span class="nottickedoff">adjustZ fn (M action) = M $ \t -&gt; do</span>
<span class="lineno"> 147 </span><span class="spaces"> </span><span class="nottickedoff">(a, s, p, gens) &lt;- action t</span>
<span class="lineno"> 148 </span><span class="spaces"> </span><span class="nottickedoff">return (a, s, p, map genFn gens)</span>
<span class="lineno"> 149 </span><span class="spaces"> </span><span class="nottickedoff">where</span>
<span class="lineno"> 150 </span><span class="spaces"> </span><span class="nottickedoff">genFn gen = do</span>
<span class="lineno"> 151 </span><span class="spaces"> </span><span class="nottickedoff">frameGen &lt;- gen</span>
<span class="lineno"> 152 </span><span class="spaces"> </span><span class="nottickedoff">return $ \d t -&gt; let (svg, z) = frameGen d t in (svg, fn z)</span></span>
<span class="lineno"> 153 </span>
<span class="lineno"> 154 </span>-- | Query the duration of a scene.
<span class="lineno"> 155 </span>withSceneDuration :: Scene s () -&gt; Scene s Duration
<span class="lineno"> 156 </span><span class="decl"><span class="nottickedoff">withSceneDuration s = do</span>
<span class="lineno"> 157 </span><span class="spaces"> </span><span class="nottickedoff">t1 &lt;- queryNow</span>
<span class="lineno"> 158 </span><span class="spaces"> </span><span class="nottickedoff">s</span>
<span class="lineno"> 159 </span><span class="spaces"> </span><span class="nottickedoff">t2 &lt;- queryNow</span>
<span class="lineno"> 160 </span><span class="spaces"> </span><span class="nottickedoff">return (t2 - t1)</span></span>
<span class="lineno"> 161 </span>
<span class="lineno"> 162 </span>addGen :: Gen s -&gt; Scene s ()
<span class="lineno"> 163 </span><span class="decl"><span class="istickedoff">addGen gen = M $ \_ -&gt; return (<span class="nottickedoff">()</span>, 0, 0, [gen])</span></span>
<span class="lineno"> 114 </span>--
<span class="lineno"> 115 </span>-- &lt;&lt;docs/gifs/doc_wait.gif&gt;&gt;
<span class="lineno"> 116 </span>wait :: Duration -&gt; Scene s ()
<span class="lineno"> 117 </span><span class="decl"><span class="istickedoff">wait d = M $ \_ -&gt; return (<span class="nottickedoff">()</span>, d, 0, [])</span></span>
<span class="lineno"> 118 </span>
<span class="lineno"> 119 </span>-- | Wait until the clock is equal to the given timestamp.
<span class="lineno"> 120 </span>waitUntil :: Time -&gt; Scene s ()
<span class="lineno"> 121 </span><span class="decl"><span class="nottickedoff">waitUntil tNew = do</span>
<span class="lineno"> 122 </span><span class="spaces"> </span><span class="nottickedoff">now &lt;- queryNow</span>
<span class="lineno"> 123 </span><span class="spaces"> </span><span class="nottickedoff">wait (max 0 (tNew - now))</span></span>
<span class="lineno"> 124 </span>
<span class="lineno"> 125 </span>-- | Wait until all forked and sequential animations have finished.
<span class="lineno"> 126 </span>--
<span class="lineno"> 127 </span>-- Example:
<span class="lineno"> 128 </span>--
<span class="lineno"> 129 </span>-- @
<span class="lineno"> 130 </span>-- do 'waitOn' $ 'fork' $ 'play' 'Reanimate.Builtin.Documentation.drawBox'
<span class="lineno"> 131 </span>-- 'play' 'Reanimate.Builtin.Documentation.drawCircle'
<span class="lineno"> 132 </span>-- @
<span class="lineno"> 133 </span>--
<span class="lineno"> 134 </span>-- &lt;&lt;docs/gifs/doc_waitOn.gif&gt;&gt;
<span class="lineno"> 135 </span>waitOn :: Scene s a -&gt; Scene s a
<span class="lineno"> 136 </span><span class="decl"><span class="istickedoff">waitOn (M action) = M $ \t -&gt; do</span>
<span class="lineno"> 137 </span><span class="spaces"> </span><span class="istickedoff">(a, s, p, gens) &lt;- action t</span>
<span class="lineno"> 138 </span><span class="spaces"> </span><span class="istickedoff">return (<span class="nottickedoff">a</span>, max s p, 0, gens)</span></span>
<span class="lineno"> 139 </span>
<span class="lineno"> 140 </span>-- | Change the ZIndex of a scene.
<span class="lineno"> 141 </span>adjustZ :: (ZIndex -&gt; ZIndex) -&gt; Scene s a -&gt; Scene s a
<span class="lineno"> 142 </span><span class="decl"><span class="nottickedoff">adjustZ fn (M action) = M $ \t -&gt; do</span>
<span class="lineno"> 143 </span><span class="spaces"> </span><span class="nottickedoff">(a, s, p, gens) &lt;- action t</span>
<span class="lineno"> 144 </span><span class="spaces"> </span><span class="nottickedoff">return (a, s, p, map genFn gens)</span>
<span class="lineno"> 145 </span><span class="spaces"> </span><span class="nottickedoff">where</span>
<span class="lineno"> 146 </span><span class="spaces"> </span><span class="nottickedoff">genFn gen = do</span>
<span class="lineno"> 147 </span><span class="spaces"> </span><span class="nottickedoff">frameGen &lt;- gen</span>
<span class="lineno"> 148 </span><span class="spaces"> </span><span class="nottickedoff">return $ \d t -&gt; let (svg, z) = frameGen d t in (svg, fn z)</span></span>
<span class="lineno"> 149 </span>
<span class="lineno"> 150 </span>-- | Query the duration of a scene.
<span class="lineno"> 151 </span>withSceneDuration :: Scene s () -&gt; Scene s Duration
<span class="lineno"> 152 </span><span class="decl"><span class="nottickedoff">withSceneDuration s = do</span>
<span class="lineno"> 153 </span><span class="spaces"> </span><span class="nottickedoff">t1 &lt;- queryNow</span>
<span class="lineno"> 154 </span><span class="spaces"> </span><span class="nottickedoff">s</span>
<span class="lineno"> 155 </span><span class="spaces"> </span><span class="nottickedoff">t2 &lt;- queryNow</span>
<span class="lineno"> 156 </span><span class="spaces"> </span><span class="nottickedoff">return (t2 - t1)</span></span>
<span class="lineno"> 157 </span>
<span class="lineno"> 158 </span>addGen :: Gen s -&gt; Scene s ()
<span class="lineno"> 159 </span><span class="decl"><span class="istickedoff">addGen gen = M $ \_ -&gt; return (<span class="nottickedoff">()</span>, 0, 0, [gen])</span></span>
</pre>
</body>

View file

@ -48,7 +48,7 @@ span.spaces { background: white }
<span class="lineno"> 29 </span> fork,
<span class="lineno"> 30 </span> liftST,
<span class="lineno"> 31 </span> queryNow,
<span class="lineno"> 32 </span> sceneAnimation,
<span class="lineno"> 32 </span> scene,
<span class="lineno"> 33 </span> wait,
<span class="lineno"> 34 </span> )
<span class="lineno"> 35 </span>import Reanimate.Scene.Var (unpackVar, Var (..), newVar, readVar)
@ -421,7 +421,7 @@ span.spaces { background: white }
<span class="lineno"> 402 </span>asAnimation :: (forall s'. Scene s' a) -&gt; Scene s Animation
<span class="lineno"> 403 </span><span class="decl"><span class="nottickedoff">asAnimation s = do</span>
<span class="lineno"> 404 </span><span class="spaces"> </span><span class="nottickedoff">now &lt;- queryNow</span>
<span class="lineno"> 405 </span><span class="spaces"> </span><span class="nottickedoff">return $ dropA now (sceneAnimation (wait now &gt;&gt; s))</span></span>
<span class="lineno"> 405 </span><span class="spaces"> </span><span class="nottickedoff">return $ dropA now (scene (wait now &gt;&gt; s))</span></span>
<span class="lineno"> 406 </span>
<span class="lineno"> 407 </span>-- | Apply a transformation with a given overlap. This makes sure
<span class="lineno"> 408 </span>-- to keep timestamps intact such that events can still be timed