Deploying to gh-pages from @ 1db90f3cdd0a15d1f3616cb1fdc3bc9933fcf5e8 🚀

This commit is contained in:
Lemmih 2020-08-06 07:07:37 +00:00
commit 5076bd7c6b
14 changed files with 368 additions and 428 deletions

View file

@ -8,22 +8,16 @@ table.dashboard { border-collapse: collapse ; border: solid 1px black }
</head><body><table class="dashboard" width="100%" border=1>
<tr><th rowspan=2><a href="hpc_index.html">module</a></th><th colspan=3><a href="hpc_index_fun.html">Top Level Definitions</a></th><th colspan=3><a href="hpc_index_alt.html">Alternatives</a></th><th colspan=3><a href="hpc_index_exp.html">Expressions</a></th></tr><tr><th>%</th><th colspan=2>covered / total</th><th>%</th><th colspan=2>covered / total</th><th>%</th><th colspan=2>covered / total</th></tr><tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Paths_reanimate.hs.html">reanimate-0.4.1.0-inplace/Paths_reanimate</a></tt></td>
<td align="right">0%</td><td>0/15</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">-&nbsp;</td><td>0/0</td><td width=100>&nbsp;</td><td align="right">0%</td><td>0/58</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>
<td align="right">20%</td><td>3/15</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="20%"><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">20%</td><td>12/58</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="20%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Animation.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Animation</a></tt></td>
<td align="right">21%</td><td>7/33</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="21%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">21%</td><td>3/14</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="21%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">24%</td><td>84/349</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="24%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Builtin.Documentation.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Builtin.Documentation</a></tt></td>
<td align="right">42%</td><td>3/7</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="42%"><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">35%</td><td>47/134</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></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Cache.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Cache</a></tt></td>
<td align="right">0%</td><td>0/8</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/12</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/160</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>
<td align="right">84%</td><td>28/33</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="84%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">57%</td><td>8/14</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">85%</td><td>298/349</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></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Constants.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Constants</a></tt></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">-&nbsp;</td><td>0/0</td><td width=100>&nbsp;</td><td align="right">16%</td><td>3/18</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="16%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver</a></tt></td>
<td align="right">8%</td><td>1/12</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">1%</td><td>1/55</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="1%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">3%</td><td>8/246</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="3%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<td align="right">8%</td><td>1/12</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">1%</td><td>1/55</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="1%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">3%</td><td>9/246</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="3%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.CLI.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver.CLI</a></tt></td>
<td align="right">14%</td><td>5/35</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><td align="right">0%</td><td>0/63</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">8%</td><td>31/376</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
@ -41,41 +35,32 @@ table.dashboard { border-collapse: collapse ; border: solid 1px black }
<td align="right">0%</td><td>0/16</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/30</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/634</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Ease.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Ease</a></tt></td>
<td align="right">0%</td><td>0/9</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/8</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/121</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>
<td align="right">77%</td><td>7/9</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="77%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">50%</td><td>4/8</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">70%</td><td>85/121</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>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Internal.CubicBezier.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Internal.CubicBezier</a></tt></td>
<td align="right">8%</td><td>7/86</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">0%</td><td>0/26</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">11%</td><td>39/337</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="11%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<td align="right">23%</td><td>20/86</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="23%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">7%</td><td>2/26</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="7%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">30%</td><td>102/337</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="30%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Misc.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Misc</a></tt></td>
<td align="right">0%</td><td>0/7</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/14</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/162</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Parameters.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Parameters</a></tt></td>
<td align="right">10%</td><td>2/20</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="10%"><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">8%</td><td>4/49</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Raster.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Raster</a></tt></td>
<td align="right">0%</td><td>0/13</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/17</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/443</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>
<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.4.1.0-inplace/Reanimate.Render.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Render</a></tt></td>
<td align="right">5%</td><td>1/18</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/44</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">5%</td><td>39/762</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></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Svg.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg</a></tt></td>
<td align="right">7%</td><td>1/13</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="7%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">5%</td><td>4/80</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">17%</td><td>137/777</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></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Svg.BoundingBox.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg.BoundingBox</a></tt></td>
<td align="right">0%</td><td>0/5</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/36</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/281</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>
<td align="right">40%</td><td>2/5</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="40%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">16%</td><td>6/36</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="16%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">27%</td><td>76/281</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="27%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Svg.Constructors.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg.Constructors</a></tt></td>
<td align="right">24%</td><td>12/49</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="24%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">12%</td><td>1/8</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="12%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">19%</td><td>110/565</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="19%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<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>369/565</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.4.1.0-inplace/Reanimate.Svg.LineCommand.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg.LineCommand</a></tt></td>
<td align="right">75%</td><td>12/16</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="75%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">51%</td><td>38/74</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="51%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">65%</td><td>620/943</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.4.1.0-inplace/Reanimate.Svg.Unuse.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg.Unuse</a></tt></td>
<td align="right">0%</td><td>0/3</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/14</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/128</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>
<td align="right">75%</td><td>12/16</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="75%"><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">69%</td><td>659/943</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="69%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Transform.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Transform</a></tt></td>
<td align="right">0%</td><td>0/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="invbar"></td></tr></table></td></tr></table></td><td align="right">0%</td><td>0/12</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/166</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>
<td align="right">83%</td><td>5/6</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="83%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">33%</td><td>4/12</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="33%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">45%</td><td>76/166</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="45%"><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">13%</td><td>54/403</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="13%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">8%</td><td>47/538</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">15%</td><td>1122/7181</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></tr>
<td align="right">34%</td><td>123/359</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="34%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">17%</td><td>71/415</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">31%</td><td>1766/5539</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="31%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
</table></body></html>

View file

@ -8,40 +8,28 @@ table.dashboard { border-collapse: collapse ; border: solid 1px black }
</head><body><table class="dashboard" width="100%" border=1>
<tr><th rowspan=2><a href="hpc_index.html">module</a></th><th colspan=3><a href="hpc_index_fun.html">Top Level Definitions</a></th><th colspan=3><a href="hpc_index_alt.html">Alternatives</a></th><th colspan=3><a href="hpc_index_exp.html">Expressions</a></th></tr><tr><th>%</th><th colspan=2>covered / total</th><th>%</th><th colspan=2>covered / total</th><th>%</th><th colspan=2>covered / total</th></tr><tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Svg.LineCommand.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg.LineCommand</a></tt></td>
<td align="right">75%</td><td>12/16</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="75%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">51%</td><td>38/74</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="51%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">65%</td><td>620/943</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>
<td align="right">75%</td><td>12/16</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="75%"><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">69%</td><td>659/943</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="69%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Animation.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Animation</a></tt></td>
<td align="right">21%</td><td>7/33</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="21%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">21%</td><td>3/14</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="21%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">24%</td><td>84/349</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="24%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<td align="right">84%</td><td>28/33</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="84%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">57%</td><td>8/14</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">85%</td><td>298/349</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></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Ease.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Ease</a></tt></td>
<td align="right">77%</td><td>7/9</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="77%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">50%</td><td>4/8</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">70%</td><td>85/121</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>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Svg.Constructors.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg.Constructors</a></tt></td>
<td align="right">24%</td><td>12/49</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="24%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">12%</td><td>1/8</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="12%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">19%</td><td>110/565</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="19%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<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>369/565</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.4.1.0-inplace/Reanimate.Svg.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg</a></tt></td>
<td align="right">7%</td><td>1/13</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="7%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">5%</td><td>4/80</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">17%</td><td>137/777</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></tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Transform.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Transform</a></tt></td>
<td align="right">83%</td><td>5/6</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="83%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">33%</td><td>4/12</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="33%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">45%</td><td>76/166</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="45%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Svg.BoundingBox.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg.BoundingBox</a></tt></td>
<td align="right">40%</td><td>2/5</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="40%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">16%</td><td>6/36</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="16%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">27%</td><td>76/281</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="27%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Internal.CubicBezier.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Internal.CubicBezier</a></tt></td>
<td align="right">23%</td><td>20/86</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="23%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">7%</td><td>2/26</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="7%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">30%</td><td>102/337</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="30%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver</a></tt></td>
<td align="right">8%</td><td>1/12</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">1%</td><td>1/55</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="1%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">3%</td><td>8/246</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="3%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Svg.Unuse.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg.Unuse</a></tt></td>
<td align="right">0%</td><td>0/3</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/14</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/128</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Cache.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Cache</a></tt></td>
<td align="right">0%</td><td>0/8</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/12</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/160</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Raster.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Raster</a></tt></td>
<td align="right">0%</td><td>0/13</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/17</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/443</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Misc.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Misc</a></tt></td>
<td align="right">0%</td><td>0/7</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/14</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/162</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Render.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Render</a></tt></td>
<td align="right">5%</td><td>1/18</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/44</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">5%</td><td>39/762</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></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.Compile.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver.Compile</a></tt></td>
<td align="right">0%</td><td>0/2</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/64</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.Server.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver.Server</a></tt></td>
<td align="right">0%</td><td>0/16</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/30</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/634</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>
<td align="right">8%</td><td>1/12</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">1%</td><td>1/55</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="1%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">3%</td><td>9/246</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="3%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.CLI.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver.CLI</a></tt></td>
<td align="right">14%</td><td>5/35</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><td align="right">0%</td><td>0/63</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">8%</td><td>31/376</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
@ -49,33 +37,30 @@ table.dashboard { border-collapse: collapse ; border: solid 1px black }
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.Check.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver.Check</a></tt></td>
<td align="right">0%</td><td>0/21</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/27</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/396</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Internal.CubicBezier.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Internal.CubicBezier</a></tt></td>
<td align="right">8%</td><td>7/86</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">0%</td><td>0/26</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">11%</td><td>39/337</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="11%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.Compile.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver.Compile</a></tt></td>
<td align="right">0%</td><td>0/2</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/64</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Transform.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Transform</a></tt></td>
<td align="right">0%</td><td>0/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="invbar"></td></tr></table></td></tr></table></td><td align="right">0%</td><td>0/12</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/166</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.Server.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver.Server</a></tt></td>
<td align="right">0%</td><td>0/16</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/30</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/634</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Svg.BoundingBox.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg.BoundingBox</a></tt></td>
<td align="right">0%</td><td>0/5</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/36</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/281</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Misc.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Misc</a></tt></td>
<td align="right">0%</td><td>0/7</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/14</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/162</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Ease.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Ease</a></tt></td>
<td align="right">0%</td><td>0/9</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/8</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/121</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Parameters.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Parameters</a></tt></td>
<td align="right">10%</td><td>2/20</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="10%"><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">8%</td><td>4/49</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Render.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Render</a></tt></td>
<td align="right">5%</td><td>1/18</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/44</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">5%</td><td>39/762</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></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Paths_reanimate.hs.html">reanimate-0.4.1.0-inplace/Paths_reanimate</a></tt></td>
<td align="right">0%</td><td>0/15</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">-&nbsp;</td><td>0/0</td><td width=100>&nbsp;</td><td align="right">0%</td><td>0/58</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>
<td align="right">20%</td><td>3/15</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="20%"><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">20%</td><td>12/58</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="20%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Constants.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Constants</a></tt></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">-&nbsp;</td><td>0/0</td><td width=100>&nbsp;</td><td align="right">16%</td><td>3/18</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="16%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.Magick.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver.Magick</a></tt></td>
<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">-&nbsp;</td><td>0/0</td><td width=100>&nbsp;</td><td align="right">0%</td><td>0/12</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Builtin.Documentation.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Builtin.Documentation</a></tt></td>
<td align="right">42%</td><td>3/7</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="42%"><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">35%</td><td>47/134</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></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Constants.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Constants</a></tt></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">-&nbsp;</td><td>0/0</td><td width=100>&nbsp;</td><td align="right">16%</td><td>3/18</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="16%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Parameters.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Parameters</a></tt></td>
<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></tr><tr style="background: #e0e0e0">
<th align=left>&nbsp;&nbsp;Program Coverage Total</tt></th>
<td align="right">13%</td><td>54/403</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="13%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">8%</td><td>47/538</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">15%</td><td>1122/7181</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></tr>
<td align="right">34%</td><td>123/359</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="34%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">17%</td><td>71/415</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">31%</td><td>1766/5539</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="31%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
</table></body></html>

View file

@ -7,29 +7,35 @@ table.dashboard { border-collapse: collapse ; border: solid 1px black }
</style>
</head><body><table class="dashboard" width="100%" border=1>
<tr><th rowspan=2><a href="hpc_index.html">module</a></th><th colspan=3><a href="hpc_index_fun.html">Top Level Definitions</a></th><th colspan=3><a href="hpc_index_alt.html">Alternatives</a></th><th colspan=3><a href="hpc_index_exp.html">Expressions</a></th></tr><tr><th>%</th><th colspan=2>covered / total</th><th>%</th><th colspan=2>covered / total</th><th>%</th><th colspan=2>covered / total</th></tr><tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Svg.LineCommand.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg.LineCommand</a></tt></td>
<td align="right">75%</td><td>12/16</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="75%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">51%</td><td>38/74</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="51%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">65%</td><td>620/943</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.4.1.0-inplace/Reanimate.Builtin.Documentation.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Builtin.Documentation</a></tt></td>
<td align="right">42%</td><td>3/7</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="42%"><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">35%</td><td>47/134</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></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Animation.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Animation</a></tt></td>
<td align="right">21%</td><td>7/33</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="21%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">21%</td><td>3/14</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="21%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">24%</td><td>84/349</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="24%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<td align="right">84%</td><td>28/33</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="84%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">57%</td><td>8/14</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">85%</td><td>298/349</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></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Ease.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Ease</a></tt></td>
<td align="right">77%</td><td>7/9</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="77%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">50%</td><td>4/8</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">70%</td><td>85/121</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>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Svg.LineCommand.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg.LineCommand</a></tt></td>
<td align="right">75%</td><td>12/16</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="75%"><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">69%</td><td>659/943</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="69%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Svg.Constructors.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg.Constructors</a></tt></td>
<td align="right">24%</td><td>12/49</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="24%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">12%</td><td>1/8</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="12%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">19%</td><td>110/565</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="19%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<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>369/565</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.4.1.0-inplace/Reanimate.Svg.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg</a></tt></td>
<td align="right">7%</td><td>1/13</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="7%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">5%</td><td>4/80</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">17%</td><td>137/777</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></tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Transform.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Transform</a></tt></td>
<td align="right">83%</td><td>5/6</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="83%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">33%</td><td>4/12</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="33%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">45%</td><td>76/166</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="45%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Internal.CubicBezier.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Internal.CubicBezier</a></tt></td>
<td align="right">23%</td><td>20/86</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="23%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">7%</td><td>2/26</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="7%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">30%</td><td>102/337</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="30%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Svg.BoundingBox.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg.BoundingBox</a></tt></td>
<td align="right">40%</td><td>2/5</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="40%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">16%</td><td>6/36</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="16%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">27%</td><td>76/281</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="27%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Paths_reanimate.hs.html">reanimate-0.4.1.0-inplace/Paths_reanimate</a></tt></td>
<td align="right">20%</td><td>3/15</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="20%"><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">20%</td><td>12/58</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="20%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Constants.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Constants</a></tt></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">-&nbsp;</td><td>0/0</td><td width=100>&nbsp;</td><td align="right">16%</td><td>3/18</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="16%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Internal.CubicBezier.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Internal.CubicBezier</a></tt></td>
<td align="right">8%</td><td>7/86</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">0%</td><td>0/26</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">11%</td><td>39/337</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="11%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Parameters.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Parameters</a></tt></td>
<td align="right">10%</td><td>2/20</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="10%"><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">8%</td><td>4/49</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<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.4.1.0-inplace/Reanimate.Driver.CLI.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver.CLI</a></tt></td>
<td align="right">14%</td><td>5/35</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><td align="right">0%</td><td>0/63</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">8%</td><td>31/376</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
@ -38,44 +44,23 @@ table.dashboard { border-collapse: collapse ; border: solid 1px black }
<td align="right">5%</td><td>1/18</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/44</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">5%</td><td>39/762</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></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver</a></tt></td>
<td align="right">8%</td><td>1/12</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">1%</td><td>1/55</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="1%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">3%</td><td>8/246</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="3%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Svg.Unuse.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg.Unuse</a></tt></td>
<td align="right">0%</td><td>0/3</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/14</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/128</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Cache.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Cache</a></tt></td>
<td align="right">0%</td><td>0/8</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/12</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/160</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Raster.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Raster</a></tt></td>
<td align="right">0%</td><td>0/13</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/17</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/443</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Misc.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Misc</a></tt></td>
<td align="right">0%</td><td>0/7</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/14</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/162</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Paths_reanimate.hs.html">reanimate-0.4.1.0-inplace/Paths_reanimate</a></tt></td>
<td align="right">0%</td><td>0/15</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">-&nbsp;</td><td>0/0</td><td width=100>&nbsp;</td><td align="right">0%</td><td>0/58</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.Compile.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver.Compile</a></tt></td>
<td align="right">0%</td><td>0/2</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/64</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.Server.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver.Server</a></tt></td>
<td align="right">0%</td><td>0/16</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/30</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/634</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.Magick.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver.Magick</a></tt></td>
<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">-&nbsp;</td><td>0/0</td><td width=100>&nbsp;</td><td align="right">0%</td><td>0/12</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>
<td align="right">8%</td><td>1/12</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">1%</td><td>1/55</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="1%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">3%</td><td>9/246</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="3%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.Check.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver.Check</a></tt></td>
<td align="right">0%</td><td>0/21</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/27</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/396</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Transform.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Transform</a></tt></td>
<td align="right">0%</td><td>0/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="invbar"></td></tr></table></td></tr></table></td><td align="right">0%</td><td>0/12</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/166</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.Compile.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver.Compile</a></tt></td>
<td align="right">0%</td><td>0/2</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/64</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Svg.BoundingBox.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg.BoundingBox</a></tt></td>
<td align="right">0%</td><td>0/5</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/36</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/281</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.Magick.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver.Magick</a></tt></td>
<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">-&nbsp;</td><td>0/0</td><td width=100>&nbsp;</td><td align="right">0%</td><td>0/12</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Ease.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Ease</a></tt></td>
<td align="right">0%</td><td>0/9</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/8</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/121</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.Server.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver.Server</a></tt></td>
<td align="right">0%</td><td>0/16</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/30</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/634</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Misc.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Misc</a></tt></td>
<td align="right">0%</td><td>0/7</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/14</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/162</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">13%</td><td>54/403</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="13%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">8%</td><td>47/538</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">15%</td><td>1122/7181</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></tr>
<td align="right">34%</td><td>123/359</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="34%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">17%</td><td>71/415</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">31%</td><td>1766/5539</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="31%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
</table></body></html>

View file

@ -7,75 +7,60 @@ table.dashboard { border-collapse: collapse ; border: solid 1px black }
</style>
</head><body><table class="dashboard" width="100%" border=1>
<tr><th rowspan=2><a href="hpc_index.html">module</a></th><th colspan=3><a href="hpc_index_fun.html">Top Level Definitions</a></th><th colspan=3><a href="hpc_index_alt.html">Alternatives</a></th><th colspan=3><a href="hpc_index_exp.html">Expressions</a></th></tr><tr><th>%</th><th colspan=2>covered / total</th><th>%</th><th colspan=2>covered / total</th><th>%</th><th colspan=2>covered / total</th></tr><tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Svg.LineCommand.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg.LineCommand</a></tt></td>
<td align="right">75%</td><td>12/16</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="75%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">51%</td><td>38/74</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="51%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">65%</td><td>620/943</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Animation.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Animation</a></tt></td>
<td align="right">84%</td><td>28/33</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="84%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">57%</td><td>8/14</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">85%</td><td>298/349</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></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Builtin.Documentation.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Builtin.Documentation</a></tt></td>
<td align="right">42%</td><td>3/7</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="42%"><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">35%</td><td>47/134</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></tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Transform.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Transform</a></tt></td>
<td align="right">83%</td><td>5/6</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="83%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">33%</td><td>4/12</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="33%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">45%</td><td>76/166</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="45%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Ease.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Ease</a></tt></td>
<td align="right">77%</td><td>7/9</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="77%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">50%</td><td>4/8</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">70%</td><td>85/121</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>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Svg.LineCommand.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg.LineCommand</a></tt></td>
<td align="right">75%</td><td>12/16</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="75%"><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">69%</td><td>659/943</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="69%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Svg.Constructors.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg.Constructors</a></tt></td>
<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>369/565</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.4.1.0-inplace/Reanimate.Svg.BoundingBox.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg.BoundingBox</a></tt></td>
<td align="right">40%</td><td>2/5</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="40%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">16%</td><td>6/36</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="16%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">27%</td><td>76/281</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="27%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Constants.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Constants</a></tt></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">-&nbsp;</td><td>0/0</td><td width=100>&nbsp;</td><td align="right">16%</td><td>3/18</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="16%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Svg.Constructors.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg.Constructors</a></tt></td>
<td align="right">24%</td><td>12/49</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="24%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">12%</td><td>1/8</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="12%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">19%</td><td>110/565</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="19%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Internal.CubicBezier.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Internal.CubicBezier</a></tt></td>
<td align="right">23%</td><td>20/86</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="23%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">7%</td><td>2/26</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="7%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">30%</td><td>102/337</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="30%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Animation.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Animation</a></tt></td>
<td align="right">21%</td><td>7/33</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="21%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">21%</td><td>3/14</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="21%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">24%</td><td>84/349</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="24%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Paths_reanimate.hs.html">reanimate-0.4.1.0-inplace/Paths_reanimate</a></tt></td>
<td align="right">20%</td><td>3/15</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="20%"><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">20%</td><td>12/58</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="20%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Parameters.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Parameters</a></tt></td>
<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.4.1.0-inplace/Reanimate.Driver.CLI.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver.CLI</a></tt></td>
<td align="right">14%</td><td>5/35</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><td align="right">0%</td><td>0/63</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">8%</td><td>31/376</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Parameters.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Parameters</a></tt></td>
<td align="right">10%</td><td>2/20</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="10%"><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">8%</td><td>4/49</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver</a></tt></td>
<td align="right">8%</td><td>1/12</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">1%</td><td>1/55</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="1%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">3%</td><td>8/246</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="3%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Internal.CubicBezier.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Internal.CubicBezier</a></tt></td>
<td align="right">8%</td><td>7/86</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">0%</td><td>0/26</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">11%</td><td>39/337</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="11%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Svg.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg</a></tt></td>
<td align="right">7%</td><td>1/13</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="7%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">5%</td><td>4/80</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">17%</td><td>137/777</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></tr>
<td align="right">8%</td><td>1/12</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">1%</td><td>1/55</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="1%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">3%</td><td>9/246</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="3%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Render.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Render</a></tt></td>
<td align="right">5%</td><td>1/18</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/44</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">5%</td><td>39/762</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></tr>
<tr>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Svg.Unuse.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg.Unuse</a></tt></td>
<td align="right">0%</td><td>0/3</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/14</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/128</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Cache.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Cache</a></tt></td>
<td align="right">0%</td><td>0/8</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/12</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/160</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Raster.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Raster</a></tt></td>
<td align="right">0%</td><td>0/13</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/17</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/443</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Misc.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Misc</a></tt></td>
<td align="right">0%</td><td>0/7</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/14</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/162</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Paths_reanimate.hs.html">reanimate-0.4.1.0-inplace/Paths_reanimate</a></tt></td>
<td align="right">0%</td><td>0/15</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">-&nbsp;</td><td>0/0</td><td width=100>&nbsp;</td><td align="right">0%</td><td>0/58</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.Check.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver.Check</a></tt></td>
<td align="right">0%</td><td>0/21</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/27</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/396</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.Compile.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver.Compile</a></tt></td>
<td align="right">0%</td><td>0/2</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/64</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.Server.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver.Server</a></tt></td>
<td align="right">0%</td><td>0/16</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/30</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/634</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.Magick.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver.Magick</a></tt></td>
<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">-&nbsp;</td><td>0/0</td><td width=100>&nbsp;</td><td align="right">0%</td><td>0/12</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.Check.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver.Check</a></tt></td>
<td align="right">0%</td><td>0/21</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/27</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/396</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Driver.Server.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Driver.Server</a></tt></td>
<td align="right">0%</td><td>0/16</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/30</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/634</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Transform.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Transform</a></tt></td>
<td align="right">0%</td><td>0/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="invbar"></td></tr></table></td></tr></table></td><td align="right">0%</td><td>0/12</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/166</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Svg.BoundingBox.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Svg.BoundingBox</a></tt></td>
<td align="right">0%</td><td>0/5</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/36</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/281</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Ease.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Ease</a></tt></td>
<td align="right">0%</td><td>0/9</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/8</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/121</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>
<td>&nbsp;&nbsp;<tt>module <a href="reanimate-0.4.1.0-inplace/Reanimate.Misc.hs.html">reanimate-0.4.1.0-inplace/Reanimate.Misc</a></tt></td>
<td align="right">0%</td><td>0/7</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/14</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/162</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">13%</td><td>54/403</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="13%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">8%</td><td>47/538</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="8%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">15%</td><td>1122/7181</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></tr>
<td align="right">34%</td><td>123/359</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="34%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td><td align="right">17%</td><td>71/415</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">31%</td><td>1766/5539</td><td width=100><table cellpadding=0 cellspacing=0 width="100" class="bar"><tr><td><table cellpadding=0 cellspacing=0 width="31%"><tr><td height=12 class="bar"></td></tr></table></td></tr></table></td></tr>
</table></body></html>

View file

@ -42,7 +42,7 @@ span.spaces { background: white }
<span class="lineno"> 23 </span>#else
<span class="lineno"> 24 </span>catchIO :: IO a -&gt; (Exception.IOException -&gt; IO a) -&gt; IO a
<span class="lineno"> 25 </span>#endif
<span class="lineno"> 26 </span><span class="decl"><span class="nottickedoff">catchIO = Exception.catch</span></span>
<span class="lineno"> 26 </span><span class="decl"><span class="istickedoff">catchIO = Exception.catch</span></span>
<span class="lineno"> 27 </span>
<span class="lineno"> 28 </span>version :: Version
<span class="lineno"> 29 </span><span class="decl"><span class="nottickedoff">version = Version [0,4,1,0] []</span></span>
@ -59,14 +59,14 @@ span.spaces { background: white }
<span class="lineno"> 40 </span><span class="decl"><span class="nottickedoff">getBinDir = catchIO (getEnv &quot;reanimate_bindir&quot;) (\_ -&gt; return bindir)</span></span>
<span class="lineno"> 41 </span><span class="decl"><span class="nottickedoff">getLibDir = catchIO (getEnv &quot;reanimate_libdir&quot;) (\_ -&gt; return libdir)</span></span>
<span class="lineno"> 42 </span><span class="decl"><span class="nottickedoff">getDynLibDir = catchIO (getEnv &quot;reanimate_dynlibdir&quot;) (\_ -&gt; return dynlibdir)</span></span>
<span class="lineno"> 43 </span><span class="decl"><span class="nottickedoff">getDataDir = catchIO (getEnv &quot;reanimate_datadir&quot;) (\_ -&gt; return datadir)</span></span>
<span class="lineno"> 43 </span><span class="decl"><span class="istickedoff">getDataDir = catchIO (getEnv &quot;reanimate_datadir&quot;) <span class="nottickedoff">(\_ -&gt; return datadir)</span></span></span>
<span class="lineno"> 44 </span><span class="decl"><span class="nottickedoff">getLibexecDir = catchIO (getEnv &quot;reanimate_libexecdir&quot;) (\_ -&gt; return libexecdir)</span></span>
<span class="lineno"> 45 </span><span class="decl"><span class="nottickedoff">getSysconfDir = catchIO (getEnv &quot;reanimate_sysconfdir&quot;) (\_ -&gt; return sysconfdir)</span></span>
<span class="lineno"> 46 </span>
<span class="lineno"> 47 </span>getDataFileName :: FilePath -&gt; IO FilePath
<span class="lineno"> 48 </span><span class="decl"><span class="nottickedoff">getDataFileName name = do</span>
<span class="lineno"> 49 </span><span class="spaces"> </span><span class="nottickedoff">dir &lt;- getDataDir</span>
<span class="lineno"> 50 </span><span class="spaces"> </span><span class="nottickedoff">return (dir ++ &quot;/&quot; ++ name)</span></span>
<span class="lineno"> 48 </span><span class="decl"><span class="istickedoff">getDataFileName name = do</span>
<span class="lineno"> 49 </span><span class="spaces"> </span><span class="istickedoff">dir &lt;- getDataDir</span>
<span class="lineno"> 50 </span><span class="spaces"> </span><span class="istickedoff">return (dir ++ &quot;/&quot; ++ name)</span></span>
</pre>
</body>

View file

@ -89,11 +89,11 @@ span.spaces { background: white }
<span class="lineno"> 70 </span>
<span class="lineno"> 71 </span>-- | Construct an animation with a duration of @1@.
<span class="lineno"> 72 </span>animate :: (Time -&gt; SVG) -&gt; Animation
<span class="lineno"> 73 </span><span class="decl"><span class="nottickedoff">animate = Animation 1</span></span>
<span class="lineno"> 73 </span><span class="decl"><span class="istickedoff">animate = Animation 1</span></span>
<span class="lineno"> 74 </span>
<span class="lineno"> 75 </span>-- | Create an animation with provided @duration@, which consists of stationary frame displayed for its entire duration.
<span class="lineno"> 76 </span>staticFrame :: Duration -&gt; SVG -&gt; Animation
<span class="lineno"> 77 </span><span class="decl"><span class="nottickedoff">staticFrame d svg = Animation d (const svg)</span></span>
<span class="lineno"> 77 </span><span class="decl"><span class="istickedoff">staticFrame d svg = Animation d (const svg)</span></span>
<span class="lineno"> 78 </span>
<span class="lineno"> 79 </span>-- | Query the duration of an animation.
<span class="lineno"> 80 </span>duration :: Animation -&gt; Duration
@ -125,15 +125,15 @@ span.spaces { background: white }
<span class="lineno"> 106 </span>--
<span class="lineno"> 107 </span>-- &lt;&lt;docs/gifs/doc_parA.gif&gt;&gt;
<span class="lineno"> 108 </span>parA :: Animation -&gt; Animation -&gt; Animation
<span class="lineno"> 109 </span><span class="decl"><span class="nottickedoff">parA (Animation d1 f1) (Animation d2 f2) =</span>
<span class="lineno"> 110 </span><span class="spaces"> </span><span class="nottickedoff">Animation (max d1 d2) $ \t -&gt;</span>
<span class="lineno"> 111 </span><span class="spaces"> </span><span class="nottickedoff">let t1 = t * totalD/d1</span>
<span class="lineno"> 112 </span><span class="spaces"> </span><span class="nottickedoff">t2 = t * totalD/d2 in</span>
<span class="lineno"> 113 </span><span class="spaces"> </span><span class="nottickedoff">mkGroup</span>
<span class="lineno"> 114 </span><span class="spaces"> </span><span class="nottickedoff">[ f1 (min 1 t1)</span>
<span class="lineno"> 115 </span><span class="spaces"> </span><span class="nottickedoff">, f2 (min 1 t2) ]</span>
<span class="lineno"> 116 </span><span class="spaces"> </span><span class="nottickedoff">where</span>
<span class="lineno"> 117 </span><span class="spaces"> </span><span class="nottickedoff">totalD = max d1 d2</span></span>
<span class="lineno"> 109 </span><span class="decl"><span class="istickedoff">parA (Animation d1 f1) (Animation d2 f2) =</span>
<span class="lineno"> 110 </span><span class="spaces"> </span><span class="istickedoff">Animation (max d1 d2) $ \t -&gt;</span>
<span class="lineno"> 111 </span><span class="spaces"> </span><span class="istickedoff">let t1 = t * totalD/d1</span>
<span class="lineno"> 112 </span><span class="spaces"> </span><span class="istickedoff">t2 = t * totalD/d2 in</span>
<span class="lineno"> 113 </span><span class="spaces"> </span><span class="istickedoff">mkGroup</span>
<span class="lineno"> 114 </span><span class="spaces"> </span><span class="istickedoff">[ f1 (min 1 t1)</span>
<span class="lineno"> 115 </span><span class="spaces"> </span><span class="istickedoff">, f2 (min 1 t2) ]</span>
<span class="lineno"> 116 </span><span class="spaces"> </span><span class="istickedoff">where</span>
<span class="lineno"> 117 </span><span class="spaces"> </span><span class="istickedoff">totalD = max d1 d2</span></span>
<span class="lineno"> 118 </span>
<span class="lineno"> 119 </span>-- | Play two animation concurrently. Shortest animation loops.
<span class="lineno"> 120 </span>-- New animation duration is '@max (duration lhs) (duration rhs)@'.
@ -144,15 +144,15 @@ span.spaces { background: white }
<span class="lineno"> 125 </span>--
<span class="lineno"> 126 </span>-- &lt;&lt;docs/gifs/doc_parLoopA.gif&gt;&gt;
<span class="lineno"> 127 </span>parLoopA :: Animation -&gt; Animation -&gt; Animation
<span class="lineno"> 128 </span><span class="decl"><span class="nottickedoff">parLoopA (Animation d1 f1) (Animation d2 f2) =</span>
<span class="lineno"> 129 </span><span class="spaces"> </span><span class="nottickedoff">Animation totalD $ \t -&gt;</span>
<span class="lineno"> 130 </span><span class="spaces"> </span><span class="nottickedoff">let t1 = t * totalD/d1</span>
<span class="lineno"> 131 </span><span class="spaces"> </span><span class="nottickedoff">t2 = t * totalD/d2 in</span>
<span class="lineno"> 132 </span><span class="spaces"> </span><span class="nottickedoff">mkGroup</span>
<span class="lineno"> 133 </span><span class="spaces"> </span><span class="nottickedoff">[ f1 (t1 `mod'` 1)</span>
<span class="lineno"> 134 </span><span class="spaces"> </span><span class="nottickedoff">, f2 (t2 `mod'` 1) ]</span>
<span class="lineno"> 135 </span><span class="spaces"> </span><span class="nottickedoff">where</span>
<span class="lineno"> 136 </span><span class="spaces"> </span><span class="nottickedoff">totalD = max d1 d2</span></span>
<span class="lineno"> 128 </span><span class="decl"><span class="istickedoff">parLoopA (Animation d1 f1) (Animation d2 f2) =</span>
<span class="lineno"> 129 </span><span class="spaces"> </span><span class="istickedoff">Animation totalD $ \t -&gt;</span>
<span class="lineno"> 130 </span><span class="spaces"> </span><span class="istickedoff">let t1 = t * totalD/d1</span>
<span class="lineno"> 131 </span><span class="spaces"> </span><span class="istickedoff">t2 = t * totalD/d2 in</span>
<span class="lineno"> 132 </span><span class="spaces"> </span><span class="istickedoff">mkGroup</span>
<span class="lineno"> 133 </span><span class="spaces"> </span><span class="istickedoff">[ f1 (t1 `mod'` 1)</span>
<span class="lineno"> 134 </span><span class="spaces"> </span><span class="istickedoff">, f2 (t2 `mod'` 1) ]</span>
<span class="lineno"> 135 </span><span class="spaces"> </span><span class="istickedoff">where</span>
<span class="lineno"> 136 </span><span class="spaces"> </span><span class="istickedoff">totalD = max d1 d2</span></span>
<span class="lineno"> 137 </span>
<span class="lineno"> 138 </span>-- | Play two animation concurrently. Animations disappear after playing once.
<span class="lineno"> 139 </span>-- New animation duration is '@max (duration lhs) (duration rhs)@'.
@ -163,15 +163,15 @@ span.spaces { background: white }
<span class="lineno"> 144 </span>--
<span class="lineno"> 145 </span>-- &lt;&lt;docs/gifs/doc_parDropA.gif&gt;&gt;
<span class="lineno"> 146 </span>parDropA :: Animation -&gt; Animation -&gt; Animation
<span class="lineno"> 147 </span><span class="decl"><span class="nottickedoff">parDropA (Animation d1 f1) (Animation d2 f2) =</span>
<span class="lineno"> 148 </span><span class="spaces"> </span><span class="nottickedoff">Animation totalD $ \t -&gt;</span>
<span class="lineno"> 149 </span><span class="spaces"> </span><span class="nottickedoff">let t1 = t * totalD/d1</span>
<span class="lineno"> 150 </span><span class="spaces"> </span><span class="nottickedoff">t2 = t * totalD/d2 in</span>
<span class="lineno"> 151 </span><span class="spaces"> </span><span class="nottickedoff">mkGroup</span>
<span class="lineno"> 152 </span><span class="spaces"> </span><span class="nottickedoff">[ if t1&gt;1 then None else f1 t1</span>
<span class="lineno"> 153 </span><span class="spaces"> </span><span class="nottickedoff">, if t2&gt;1 then None else f2 t2 ]</span>
<span class="lineno"> 154 </span><span class="spaces"> </span><span class="nottickedoff">where</span>
<span class="lineno"> 155 </span><span class="spaces"> </span><span class="nottickedoff">totalD = max d1 d2</span></span>
<span class="lineno"> 147 </span><span class="decl"><span class="istickedoff">parDropA (Animation d1 f1) (Animation d2 f2) =</span>
<span class="lineno"> 148 </span><span class="spaces"> </span><span class="istickedoff">Animation totalD $ \t -&gt;</span>
<span class="lineno"> 149 </span><span class="spaces"> </span><span class="istickedoff">let t1 = t * totalD/d1</span>
<span class="lineno"> 150 </span><span class="spaces"> </span><span class="istickedoff">t2 = t * totalD/d2 in</span>
<span class="lineno"> 151 </span><span class="spaces"> </span><span class="istickedoff">mkGroup</span>
<span class="lineno"> 152 </span><span class="spaces"> </span><span class="istickedoff">[ if t1&gt;1 then None else f1 t1</span>
<span class="lineno"> 153 </span><span class="spaces"> </span><span class="istickedoff">, if <span class="tickonlyfalse">t2&gt;1</span> then <span class="nottickedoff">None</span> else f2 t2 ]</span>
<span class="lineno"> 154 </span><span class="spaces"> </span><span class="istickedoff">where</span>
<span class="lineno"> 155 </span><span class="spaces"> </span><span class="istickedoff">totalD = max d1 d2</span></span>
<span class="lineno"> 156 </span>
<span class="lineno"> 157 </span>-- | Empty animation (no SVG output) with a fixed duration.
<span class="lineno"> 158 </span>--
@ -181,7 +181,7 @@ span.spaces { background: white }
<span class="lineno"> 162 </span>--
<span class="lineno"> 163 </span>-- &lt;&lt;docs/gifs/doc_pause.gif&gt;&gt;
<span class="lineno"> 164 </span>pause :: Duration -&gt; Animation
<span class="lineno"> 165 </span><span class="decl"><span class="nottickedoff">pause d = Animation d (const None)</span></span>
<span class="lineno"> 165 </span><span class="decl"><span class="istickedoff">pause d = Animation d (const None)</span></span>
<span class="lineno"> 166 </span>
<span class="lineno"> 167 </span>-- | Play left animation and freeze on the last frame, then play the right
<span class="lineno"> 168 </span>-- animation. New duration is '@duration lhs + duration rhs@'.
@ -192,7 +192,7 @@ span.spaces { background: white }
<span class="lineno"> 173 </span>--
<span class="lineno"> 174 </span>-- &lt;&lt;docs/gifs/doc_andThen.gif&gt;&gt;
<span class="lineno"> 175 </span>andThen :: Animation -&gt; Animation -&gt; Animation
<span class="lineno"> 176 </span><span class="decl"><span class="nottickedoff">andThen a b = a `parA` (pause (duration a) `seqA` b)</span></span>
<span class="lineno"> 176 </span><span class="decl"><span class="istickedoff">andThen a b = a `parA` (pause (duration a) `seqA` b)</span></span>
<span class="lineno"> 177 </span>
<span class="lineno"> 178 </span>-- | Calculate the frame that would be displayed at given point in @time@ of running @animation@.
<span class="lineno"> 179 </span>--
@ -243,7 +243,7 @@ span.spaces { background: white }
<span class="lineno"> 224 </span>--
<span class="lineno"> 225 </span>-- &lt;&lt;docs/gifs/doc_pauseAtEnd.gif&gt;&gt;
<span class="lineno"> 226 </span>pauseAtEnd :: Duration -&gt; Animation -&gt; Animation
<span class="lineno"> 227 </span><span class="decl"><span class="nottickedoff">pauseAtEnd t a = a `andThen` pause t</span></span>
<span class="lineno"> 227 </span><span class="decl"><span class="istickedoff">pauseAtEnd t a = a `andThen` pause t</span></span>
<span class="lineno"> 228 </span>
<span class="lineno"> 229 </span>-- | Freeze the first frame for @t@ seconds at the beginning of the animation.
<span class="lineno"> 230 </span>--
@ -253,8 +253,8 @@ span.spaces { background: white }
<span class="lineno"> 234 </span>--
<span class="lineno"> 235 </span>-- &lt;&lt;docs/gifs/doc_pauseAtBeginning.gif&gt;&gt;
<span class="lineno"> 236 </span>pauseAtBeginning :: Duration -&gt; Animation -&gt; Animation
<span class="lineno"> 237 </span><span class="decl"><span class="nottickedoff">pauseAtBeginning t a =</span>
<span class="lineno"> 238 </span><span class="spaces"> </span><span class="nottickedoff">Animation t (freezeFrame 0 a) `seqA` a</span></span>
<span class="lineno"> 237 </span><span class="decl"><span class="istickedoff">pauseAtBeginning t a =</span>
<span class="lineno"> 238 </span><span class="spaces"> </span><span class="istickedoff">Animation t (freezeFrame 0 a) `seqA` a</span></span>
<span class="lineno"> 239 </span>
<span class="lineno"> 240 </span>-- | Freeze the first and the last frame of the animation for a specified duration.
<span class="lineno"> 241 </span>--
@ -264,7 +264,7 @@ span.spaces { background: white }
<span class="lineno"> 245 </span>--
<span class="lineno"> 246 </span>-- &lt;&lt;docs/gifs/doc_pauseAround.gif&gt;&gt;
<span class="lineno"> 247 </span>pauseAround :: Duration -&gt; Duration -&gt; Animation -&gt; Animation
<span class="lineno"> 248 </span><span class="decl"><span class="nottickedoff">pauseAround start end = pauseAtEnd end . pauseAtBeginning start</span></span>
<span class="lineno"> 248 </span><span class="decl"><span class="istickedoff">pauseAround start end = pauseAtEnd end . pauseAtBeginning start</span></span>
<span class="lineno"> 249 </span>
<span class="lineno"> 250 </span>-- XXX: Rename to 'setDurationFreeze'. Add 'setDurationDrop' and
<span class="lineno"> 251 </span>-- 'setDurationLoop'.
@ -273,13 +273,13 @@ span.spaces { background: white }
<span class="lineno"> 254 </span>
<span class="lineno"> 255 </span>-- Freeze frame at time @t@.
<span class="lineno"> 256 </span>freezeFrame :: Time -&gt; Animation -&gt; (Time -&gt; SVG)
<span class="lineno"> 257 </span><span class="decl"><span class="nottickedoff">freezeFrame t (Animation d f) = const $ f (t/d)</span></span>
<span class="lineno"> 257 </span><span class="decl"><span class="istickedoff">freezeFrame t (Animation d f) = const $ f (t/d)</span></span>
<span class="lineno"> 258 </span>
<span class="lineno"> 259 </span>-- | Change the duration of an animation. Animates are stretched or squished
<span class="lineno"> 260 </span>-- (rather than truncated) to fit the new duration.
<span class="lineno"> 261 </span>adjustDuration :: (Duration -&gt; Duration) -&gt; Animation -&gt; Animation
<span class="lineno"> 262 </span><span class="decl"><span class="nottickedoff">adjustDuration fn (Animation d gen) =</span>
<span class="lineno"> 263 </span><span class="spaces"> </span><span class="nottickedoff">Animation (fn d) gen</span></span>
<span class="lineno"> 262 </span><span class="decl"><span class="istickedoff">adjustDuration fn (Animation d gen) =</span>
<span class="lineno"> 263 </span><span class="spaces"> </span><span class="istickedoff">Animation (fn d) gen</span></span>
<span class="lineno"> 264 </span>
<span class="lineno"> 265 </span>-- | Set the duration of an animation by adjusting its playback rate. The
<span class="lineno"> 266 </span>-- animation is still played from start to finish without being cropped.
@ -295,7 +295,7 @@ span.spaces { background: white }
<span class="lineno"> 276 </span>--
<span class="lineno"> 277 </span>-- &lt;&lt;docs/gifs/doc_reverseA.gif&gt;&gt;
<span class="lineno"> 278 </span>reverseA :: Animation -&gt; Animation
<span class="lineno"> 279 </span><span class="decl"><span class="nottickedoff">reverseA = signalA reverseS</span></span>
<span class="lineno"> 279 </span><span class="decl"><span class="istickedoff">reverseA = signalA reverseS</span></span>
<span class="lineno"> 280 </span>
<span class="lineno"> 281 </span>-- | Play animation before playing it again in reverse. Duration is twice
<span class="lineno"> 282 </span>-- the duration of the input.
@ -306,7 +306,7 @@ span.spaces { background: white }
<span class="lineno"> 287 </span>--
<span class="lineno"> 288 </span>-- &lt;&lt;docs/gifs/doc_playThenReverseA.gif&gt;&gt;
<span class="lineno"> 289 </span>playThenReverseA :: Animation -&gt; Animation
<span class="lineno"> 290 </span><span class="decl"><span class="nottickedoff">playThenReverseA a = a `seqA` reverseA a</span></span>
<span class="lineno"> 290 </span><span class="decl"><span class="istickedoff">playThenReverseA a = a `seqA` reverseA a</span></span>
<span class="lineno"> 291 </span>
<span class="lineno"> 292 </span>-- | Loop animation @n@ number of times. This number may be fractional and it
<span class="lineno"> 293 </span>-- may be less than 1. It must be greater than or equal to 0, though.
@ -318,8 +318,8 @@ span.spaces { background: white }
<span class="lineno"> 299 </span>--
<span class="lineno"> 300 </span>-- &lt;&lt;docs/gifs/doc_repeatA.gif&gt;&gt;
<span class="lineno"> 301 </span>repeatA :: Double -&gt; Animation -&gt; Animation
<span class="lineno"> 302 </span><span class="decl"><span class="nottickedoff">repeatA n (Animation d f) = Animation (d*n) $ \t -&gt;</span>
<span class="lineno"> 303 </span><span class="spaces"> </span><span class="nottickedoff">f ((t*n) `mod'` 1)</span></span>
<span class="lineno"> 302 </span><span class="decl"><span class="istickedoff">repeatA n (Animation d f) = Animation (d*n) $ \t -&gt;</span>
<span class="lineno"> 303 </span><span class="spaces"> </span><span class="istickedoff">f ((t*n) `mod'` 1)</span></span>
<span class="lineno"> 304 </span>
<span class="lineno"> 305 </span>
<span class="lineno"> 306 </span>-- | @freezeAtPercentage time animation@ creates an animation consisting of stationary frame,
@ -339,7 +339,7 @@ span.spaces { background: white }
<span class="lineno"> 320 </span>--
<span class="lineno"> 321 </span>-- &lt;&lt;docs/gifs/doc_addStatic.gif&gt;&gt;
<span class="lineno"> 322 </span>addStatic :: SVG -&gt; Animation -&gt; Animation
<span class="lineno"> 323 </span><span class="decl"><span class="nottickedoff">addStatic static = mapA (\frame -&gt; mkGroup [static, frame])</span></span>
<span class="lineno"> 323 </span><span class="decl"><span class="istickedoff">addStatic static = mapA (\frame -&gt; mkGroup [static, frame])</span></span>
<span class="lineno"> 324 </span>
<span class="lineno"> 325 </span>-- | Modify the time component of an animation. Animation duration is unchanged.
<span class="lineno"> 326 </span>--
@ -349,7 +349,7 @@ span.spaces { background: white }
<span class="lineno"> 330 </span>--
<span class="lineno"> 331 </span>-- &lt;&lt;docs/gifs/doc_signalA.gif&gt;&gt;
<span class="lineno"> 332 </span>signalA :: Signal -&gt; Animation -&gt; Animation
<span class="lineno"> 333 </span><span class="decl"><span class="nottickedoff">signalA fn (Animation d gen) = Animation d $ gen . fn</span></span>
<span class="lineno"> 333 </span><span class="decl"><span class="istickedoff">signalA fn (Animation d gen) = Animation d $ gen . fn</span></span>
<span class="lineno"> 334 </span>
<span class="lineno"> 335 </span>-- | @takeA duration animation@ creates a new animation consisting of initial segment of
<span class="lineno"> 336 </span>-- @animation@ of given @duration@, played at the same rate as the original animation.
@ -357,10 +357,10 @@ span.spaces { background: white }
<span class="lineno"> 338 </span>-- The @duration@ parameter is clamped to be between 0 and @animation@'s duration.
<span class="lineno"> 339 </span>-- New animation duration is equal to (eventually clamped) @duration@.
<span class="lineno"> 340 </span>takeA :: Duration -&gt; Animation -&gt; Animation
<span class="lineno"> 341 </span><span class="decl"><span class="nottickedoff">takeA len (Animation d gen) = Animation len' $ \t -&gt;</span>
<span class="lineno"> 342 </span><span class="spaces"> </span><span class="nottickedoff">gen (t * len'/d)</span>
<span class="lineno"> 343 </span><span class="spaces"> </span><span class="nottickedoff">where</span>
<span class="lineno"> 344 </span><span class="spaces"> </span><span class="nottickedoff">len' = clamp 0 d len</span></span>
<span class="lineno"> 341 </span><span class="decl"><span class="istickedoff">takeA len (Animation d gen) = Animation len' $ \t -&gt;</span>
<span class="lineno"> 342 </span><span class="spaces"> </span><span class="istickedoff">gen (t * len'/d)</span>
<span class="lineno"> 343 </span><span class="spaces"> </span><span class="istickedoff">where</span>
<span class="lineno"> 344 </span><span class="spaces"> </span><span class="istickedoff">len' = clamp 0 d len</span></span>
<span class="lineno"> 345 </span>
<span class="lineno"> 346 </span>-- | @dropA duration animation@ creates a new animation by dropping initial segment
<span class="lineno"> 347 </span>-- of length @duration@ from the provided @animation@, played at the same rate as the original animation.
@ -368,13 +368,13 @@ span.spaces { background: white }
<span class="lineno"> 349 </span>-- The @duration@ parameter is clamped to be between 0 and @animation@'s duration.
<span class="lineno"> 350 </span>-- The duration of the resulting animation is duration of provided @animation@ minus (eventually clamped) @duration@.
<span class="lineno"> 351 </span>dropA :: Duration -&gt; Animation -&gt; Animation
<span class="lineno"> 352 </span><span class="decl"><span class="nottickedoff">dropA len (Animation d gen) = Animation len' $ \t -&gt;</span>
<span class="lineno"> 353 </span><span class="spaces"> </span><span class="nottickedoff">gen (t * len'/d + len/d)</span>
<span class="lineno"> 354 </span><span class="spaces"> </span><span class="nottickedoff">where</span>
<span class="lineno"> 355 </span><span class="spaces"> </span><span class="nottickedoff">len' = d - clamp 0 d len</span></span>
<span class="lineno"> 352 </span><span class="decl"><span class="istickedoff">dropA len (Animation d gen) = Animation len' $ \t -&gt;</span>
<span class="lineno"> 353 </span><span class="spaces"> </span><span class="istickedoff">gen (t * len'/d + len/d)</span>
<span class="lineno"> 354 </span><span class="spaces"> </span><span class="istickedoff">where</span>
<span class="lineno"> 355 </span><span class="spaces"> </span><span class="istickedoff">len' = d - clamp 0 d len</span></span>
<span class="lineno"> 356 </span>
<span class="lineno"> 357 </span>lastA :: Duration -&gt; Animation -&gt; Animation
<span class="lineno"> 358 </span><span class="decl"><span class="nottickedoff">lastA len a = dropA (duration a - len) a</span></span>
<span class="lineno"> 358 </span><span class="decl"><span class="istickedoff">lastA len a = dropA (duration a - len) a</span></span>
<span class="lineno"> 359 </span>
<span class="lineno"> 360 </span>clamp :: Double -&gt; Double -&gt; Double -&gt; Double
<span class="lineno"> 361 </span><span class="decl"><span class="istickedoff">clamp a b number</span>
@ -385,14 +385,14 @@ span.spaces { background: white }
<span class="lineno"> 366 </span><span class="decl"><span class="nottickedoff">o # f = f o</span></span>
<span class="lineno"> 367 </span>
<span class="lineno"> 368 </span>getAnimationFrame :: Sync -&gt; Animation -&gt; Time -&gt; Duration -&gt; SVG
<span class="lineno"> 369 </span><span class="decl"><span class="nottickedoff">getAnimationFrame sync (Animation aDur aGen) t d =</span>
<span class="lineno"> 370 </span><span class="spaces"> </span><span class="nottickedoff">case sync of</span>
<span class="lineno"> 371 </span><span class="spaces"> </span><span class="nottickedoff">SyncStretch -&gt; aGen (t/d)</span>
<span class="lineno"> 372 </span><span class="spaces"> </span><span class="nottickedoff">SyncLoop -&gt; aGen (takeFrac $ t/aDur)</span>
<span class="lineno"> 373 </span><span class="spaces"> </span><span class="nottickedoff">SyncDrop -&gt; if t &gt; aDur then None else aGen (t/aDur)</span>
<span class="lineno"> 374 </span><span class="spaces"> </span><span class="nottickedoff">SyncFreeze -&gt; aGen (min 1 $ t/aDur)</span>
<span class="lineno"> 375 </span><span class="spaces"> </span><span class="nottickedoff">where</span>
<span class="lineno"> 376 </span><span class="spaces"> </span><span class="nottickedoff">takeFrac f = snd (properFraction f :: (Int, Double))</span></span>
<span class="lineno"> 369 </span><span class="decl"><span class="istickedoff">getAnimationFrame sync (Animation aDur aGen) t d =</span>
<span class="lineno"> 370 </span><span class="spaces"> </span><span class="istickedoff">case sync of</span>
<span class="lineno"> 371 </span><span class="spaces"> </span><span class="istickedoff">SyncStretch -&gt; aGen (t/d)</span>
<span class="lineno"> 372 </span><span class="spaces"> </span><span class="istickedoff">SyncLoop -&gt; <span class="nottickedoff">aGen (takeFrac $ t/aDur)</span></span>
<span class="lineno"> 373 </span><span class="spaces"> </span><span class="istickedoff">SyncDrop -&gt; <span class="nottickedoff">if t &gt; aDur then None else aGen (t/aDur)</span></span>
<span class="lineno"> 374 </span><span class="spaces"> </span><span class="istickedoff">SyncFreeze -&gt; aGen (min 1 $ t/aDur)</span>
<span class="lineno"> 375 </span><span class="spaces"> </span><span class="istickedoff">where</span>
<span class="lineno"> 376 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">takeFrac f = snd (properFraction f :: (Int, Double))</span></span></span>
<span class="lineno"> 377 </span>
<span class="lineno"> 378 </span>data Sync
<span class="lineno"> 379 </span> = SyncStretch

View file

@ -132,7 +132,7 @@ span.spaces { background: white }
<span class="lineno"> 113 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">setFPS 60</span></span>
<span class="lineno"> 114 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">renderSvgs rawOutputFolder rawFrameOffset rawPrettyPrint animation</span></span>
<span class="lineno"> 115 </span><span class="spaces"> </span><span class="istickedoff">Test -&gt; do</span>
<span class="lineno"> 116 </span><span class="spaces"> </span><span class="istickedoff">setNoExternals <span class="nottickedoff">True</span></span>
<span class="lineno"> 116 </span><span class="spaces"> </span><span class="istickedoff">setNoExternals True</span>
<span class="lineno"> 117 </span><span class="spaces"> </span><span class="istickedoff">-- hSetBinaryMode stdout True</span>
<span class="lineno"> 118 </span><span class="spaces"> </span><span class="istickedoff">renderSnippets animation</span>
<span class="lineno"> 119 </span><span class="spaces"> </span><span class="istickedoff">Check -&gt; <span class="nottickedoff">checkEnvironment</span></span>

View file

@ -51,7 +51,7 @@ span.spaces { background: white }
<span class="lineno"> 32 </span>--
<span class="lineno"> 33 </span>-- &lt;&lt;docs/gifs/doc_constantS.gif&gt;&gt;
<span class="lineno"> 34 </span>constantS :: Double -&gt; Signal
<span class="lineno"> 35 </span><span class="decl"><span class="nottickedoff">constantS = const</span></span>
<span class="lineno"> 35 </span><span class="decl"><span class="istickedoff">constantS = const</span></span>
<span class="lineno"> 36 </span>
<span class="lineno"> 37 </span>-- | Signal with new starting and end values.
<span class="lineno"> 38 </span>--
@ -61,7 +61,7 @@ span.spaces { background: white }
<span class="lineno"> 42 </span>--
<span class="lineno"> 43 </span>-- &lt;&lt;docs/gifs/doc_fromToS.gif&gt;&gt;
<span class="lineno"> 44 </span>fromToS :: Double -&gt; Double -&gt; Signal
<span class="lineno"> 45 </span><span class="decl"><span class="nottickedoff">fromToS from to t = from + (to-from)*t</span></span>
<span class="lineno"> 45 </span><span class="decl"><span class="istickedoff">fromToS from to t = from + (to-from)*t</span></span>
<span class="lineno"> 46 </span>
<span class="lineno"> 47 </span>-- | Reverse signal order.
<span class="lineno"> 48 </span>--
@ -71,7 +71,7 @@ span.spaces { background: white }
<span class="lineno"> 52 </span>--
<span class="lineno"> 53 </span>-- &lt;&lt;docs/gifs/doc_reverseS.gif&gt;&gt;
<span class="lineno"> 54 </span>reverseS :: Signal
<span class="lineno"> 55 </span><span class="decl"><span class="nottickedoff">reverseS t = 1-t</span></span>
<span class="lineno"> 55 </span><span class="decl"><span class="istickedoff">reverseS t = 1-t</span></span>
<span class="lineno"> 56 </span>
<span class="lineno"> 57 </span>-- | S-curve signal. Takes a steepness parameter. 2 is a good default.
<span class="lineno"> 58 </span>--
@ -81,10 +81,10 @@ span.spaces { background: white }
<span class="lineno"> 62 </span>--
<span class="lineno"> 63 </span>-- &lt;&lt;docs/gifs/doc_curveS.gif&gt;&gt;
<span class="lineno"> 64 </span>curveS :: Double -&gt; Signal
<span class="lineno"> 65 </span><span class="decl"><span class="nottickedoff">curveS steepness s =</span>
<span class="lineno"> 66 </span><span class="spaces"> </span><span class="nottickedoff">if s &lt; 0.5</span>
<span class="lineno"> 67 </span><span class="spaces"> </span><span class="nottickedoff">then 0.5 * (2*s)**steepness</span>
<span class="lineno"> 68 </span><span class="spaces"> </span><span class="nottickedoff">else 1-0.5 * (2 - 2*s)**steepness</span></span>
<span class="lineno"> 65 </span><span class="decl"><span class="istickedoff">curveS steepness s =</span>
<span class="lineno"> 66 </span><span class="spaces"> </span><span class="istickedoff">if s &lt; 0.5</span>
<span class="lineno"> 67 </span><span class="spaces"> </span><span class="istickedoff">then 0.5 * (2*s)**steepness</span>
<span class="lineno"> 68 </span><span class="spaces"> </span><span class="istickedoff">else 1-0.5 * (2 - 2*s)**steepness</span></span>
<span class="lineno"> 69 </span>
<span class="lineno"> 70 </span>powerS :: Double -&gt; Signal
<span class="lineno"> 71 </span><span class="decl"><span class="nottickedoff">powerS steepness s = s**steepness</span></span>
@ -97,10 +97,10 @@ span.spaces { background: white }
<span class="lineno"> 78 </span>--
<span class="lineno"> 79 </span>-- &lt;&lt;docs/gifs/doc_oscillateS.gif&gt;&gt;
<span class="lineno"> 80 </span>oscillateS :: Signal
<span class="lineno"> 81 </span><span class="decl"><span class="nottickedoff">oscillateS t =</span>
<span class="lineno"> 82 </span><span class="spaces"> </span><span class="nottickedoff">if t &lt; 1/2</span>
<span class="lineno"> 83 </span><span class="spaces"> </span><span class="nottickedoff">then t*2</span>
<span class="lineno"> 84 </span><span class="spaces"> </span><span class="nottickedoff">else 2-t*2</span></span>
<span class="lineno"> 81 </span><span class="decl"><span class="istickedoff">oscillateS t =</span>
<span class="lineno"> 82 </span><span class="spaces"> </span><span class="istickedoff">if t &lt; 1/2</span>
<span class="lineno"> 83 </span><span class="spaces"> </span><span class="istickedoff">then t*2</span>
<span class="lineno"> 84 </span><span class="spaces"> </span><span class="istickedoff">else 2-t*2</span></span>
<span class="lineno"> 85 </span>
<span class="lineno"> 86 </span>-- | Bell-curve signal. Takes a steepness parameter. 2 is a good default.
<span class="lineno"> 87 </span>--
@ -110,7 +110,7 @@ span.spaces { background: white }
<span class="lineno"> 91 </span>--
<span class="lineno"> 92 </span>-- &lt;&lt;docs/gifs/doc_bellS.gif&gt;&gt;
<span class="lineno"> 93 </span>bellS :: Double -&gt; Signal
<span class="lineno"> 94 </span><span class="decl"><span class="nottickedoff">bellS steepness = curveS steepness . oscillateS</span></span>
<span class="lineno"> 94 </span><span class="decl"><span class="istickedoff">bellS steepness = curveS steepness . oscillateS</span></span>
<span class="lineno"> 95 </span>
<span class="lineno"> 96 </span>-- | Cubic Bezier signal. Gives you a fair amount of control over how the
<span class="lineno"> 97 </span>-- signal will 'curve'.
@ -121,9 +121,9 @@ span.spaces { background: white }
<span class="lineno"> 102 </span>--
<span class="lineno"> 103 </span>-- &lt;&lt;docs/gifs/doc_cubicBezierS.gif&gt;&gt;
<span class="lineno"> 104 </span>cubicBezierS :: (Double, Double, Double, Double) -&gt; Signal
<span class="lineno"> 105 </span><span class="decl"><span class="nottickedoff">cubicBezierS (x1, x2, x3, x4) s = </span>
<span class="lineno"> 106 </span><span class="spaces"> </span><span class="nottickedoff">let ms = 1-s</span>
<span class="lineno"> 107 </span><span class="spaces"> </span><span class="nottickedoff">in x1*ms^(3::Int) + 3*x2*ms^(2::Int)*s + 3*x3*ms*s^(2::Int) + x4*s^(3::Int)</span></span>
<span class="lineno"> 105 </span><span class="decl"><span class="istickedoff">cubicBezierS (x1, x2, x3, x4) s = </span>
<span class="lineno"> 106 </span><span class="spaces"> </span><span class="istickedoff">let ms = 1-s</span>
<span class="lineno"> 107 </span><span class="spaces"> </span><span class="istickedoff">in x1*ms^(3::Int) + 3*x2*ms^(2::Int)*s + 3*x3*ms*s^(2::Int) + x4*s^(3::Int)</span></span>
</pre>
</body>

View file

@ -116,7 +116,7 @@ span.spaces { background: white }
<span class="lineno"> 97 </span>-- Methods
<span class="lineno"> 98 </span>
<span class="lineno"> 99 </span>quadToCubic :: Fractional a =&gt; QuadBezier a -&gt; CubicBezier a
<span class="lineno"> 100 </span><span class="decl"><span class="nottickedoff">quadToCubic = upCast . C.quadToCubic . downCast</span></span>
<span class="lineno"> 100 </span><span class="decl"><span class="istickedoff">quadToCubic = upCast . C.quadToCubic . downCast</span></span>
<span class="lineno"> 101 </span>
<span class="lineno"> 102 </span>arcLength :: CubicBezier Double -&gt; Double -&gt; Double -&gt; Double
<span class="lineno"> 103 </span><span class="decl"><span class="istickedoff">arcLength bezier t tol = C.arcLength (downCast bezier) t tol</span></span>
@ -125,10 +125,10 @@ span.spaces { background: white }
<span class="lineno"> 106 </span><span class="decl"><span class="nottickedoff">arcLengthParam bezier t tol = C.arcLengthParam (downCast bezier) t tol</span></span>
<span class="lineno"> 107 </span>
<span class="lineno"> 108 </span>colinear :: CubicBezier Double -&gt; Double -&gt; Bool
<span class="lineno"> 109 </span><span class="decl"><span class="nottickedoff">colinear bezier tol = C.colinear (downCast bezier) tol</span></span>
<span class="lineno"> 109 </span><span class="decl"><span class="istickedoff">colinear bezier tol = C.colinear (downCast bezier) tol</span></span>
<span class="lineno"> 110 </span>
<span class="lineno"> 111 </span>evalBezier :: (C.GenericBezier b, V.Unbox a, Fractional a) =&gt; b a -&gt; a -&gt; V2 a
<span class="lineno"> 112 </span><span class="decl"><span class="nottickedoff">evalBezier c p = upCast $ C.evalBezier c p</span></span>
<span class="lineno"> 112 </span><span class="decl"><span class="istickedoff">evalBezier c p = upCast $ C.evalBezier c p</span></span>
<span class="lineno"> 113 </span>
<span class="lineno"> 114 </span>evalBezierDeriv :: (V.Unbox a, Fractional a,C.GenericBezier b) =&gt; b a -&gt; a -&gt; (V2 a, V2 a)
<span class="lineno"> 115 </span><span class="decl"><span class="nottickedoff">evalBezierDeriv c p = upCast $ C.evalBezierDeriv c p</span></span>
@ -155,7 +155,7 @@ span.spaces { background: white }
<span class="lineno"> 136 </span><span class="decl"><span class="nottickedoff">closest c p t = C.closest (downCast c) (downCast p) t</span></span>
<span class="lineno"> 137 </span>
<span class="lineno"> 138 </span>closedPathCurves :: Fractional a =&gt; ClosedPath a -&gt; [CubicBezier a]
<span class="lineno"> 139 </span><span class="decl"><span class="nottickedoff">closedPathCurves = upCast . C.closedPathCurves . downCast</span></span>
<span class="lineno"> 139 </span><span class="decl"><span class="istickedoff">closedPathCurves = upCast . C.closedPathCurves . downCast</span></span>
<span class="lineno"> 140 </span>
<span class="lineno"> 141 </span>openPathCurves :: Fractional a =&gt; OpenPath a -&gt; [CubicBezier a]
<span class="lineno"> 142 </span><span class="decl"><span class="nottickedoff">openPathCurves = upCast . C.openPathCurves . downCast</span></span>
@ -180,13 +180,13 @@ span.spaces { background: white }
<span class="lineno"> 161 </span>
<span class="lineno"> 162 </span>instance C.GenericBezier QuadBezier where
<span class="lineno"> 163 </span> <span class="decl"><span class="nottickedoff">degree = C.degree . downCast</span></span>
<span class="lineno"> 164 </span> <span class="decl"><span class="nottickedoff">toVector = C.toVector . downCast</span></span>
<span class="lineno"> 164 </span> <span class="decl"><span class="istickedoff">toVector = C.toVector . downCast</span></span>
<span class="lineno"> 165 </span> <span class="decl"><span class="nottickedoff">unsafeFromVector = upCast . C.unsafeFromVector</span></span>
<span class="lineno"> 166 </span>
<span class="lineno"> 167 </span>instance C.GenericBezier CubicBezier where
<span class="lineno"> 168 </span> <span class="decl"><span class="nottickedoff">degree = C.degree . downCast</span></span>
<span class="lineno"> 169 </span> <span class="decl"><span class="nottickedoff">toVector = C.toVector . downCast</span></span>
<span class="lineno"> 170 </span> <span class="decl"><span class="nottickedoff">unsafeFromVector = upCast . C.unsafeFromVector</span></span>
<span class="lineno"> 169 </span> <span class="decl"><span class="istickedoff">toVector = C.toVector . downCast</span></span>
<span class="lineno"> 170 </span> <span class="decl"><span class="istickedoff">unsafeFromVector = upCast . C.unsafeFromVector</span></span>
<span class="lineno"> 171 </span>
<span class="lineno"> 172 </span>instance C.GenericBezier AnyBezier where
<span class="lineno"> 173 </span> <span class="decl"><span class="nottickedoff">degree = C.degree . downCast</span></span>
@ -202,7 +202,7 @@ span.spaces { background: white }
<span class="lineno"> 183 </span>
<span class="lineno"> 184 </span>instance Cast a b =&gt; Cast [a] [b] where
<span class="lineno"> 185 </span> <span class="decl"><span class="nottickedoff">downCast = map downCast</span></span>
<span class="lineno"> 186 </span> <span class="decl"><span class="nottickedoff">upCast = map upCast</span></span>
<span class="lineno"> 186 </span> <span class="decl"><span class="istickedoff">upCast = map upCast</span></span>
<span class="lineno"> 187 </span>
<span class="lineno"> 188 </span>instance (Cast a a', Cast b b') =&gt; Cast (a,b) (a',b') where
<span class="lineno"> 189 </span> <span class="decl"><span class="nottickedoff">downCast (a, b) = (downCast a, downCast b)</span></span>
@ -210,17 +210,17 @@ span.spaces { background: white }
<span class="lineno"> 191 </span>
<span class="lineno"> 192 </span>instance Cast (V2 a) (C.Point a) where
<span class="lineno"> 193 </span> <span class="decl"><span class="istickedoff">downCast (V2 a b) = C.Point a b</span></span>
<span class="lineno"> 194 </span> <span class="decl"><span class="nottickedoff">upCast (C.Point a b) = V2 a b</span></span>
<span class="lineno"> 194 </span> <span class="decl"><span class="istickedoff">upCast (C.Point a b) = V2 a b</span></span>
<span class="lineno"> 195 </span>
<span class="lineno"> 196 </span>instance Cast (CubicBezier a) (C.CubicBezier a) where
<span class="lineno"> 197 </span> <span class="decl"><span class="istickedoff">downCast (CubicBezier a b c d) = C.CubicBezier</span>
<span class="lineno"> 198 </span><span class="spaces"> </span><span class="istickedoff">(downCast a) (downCast b) (downCast c) (downCast d)</span></span>
<span class="lineno"> 199 </span> <span class="decl"><span class="nottickedoff">upCast (C.CubicBezier a b c d) = CubicBezier</span>
<span class="lineno"> 200 </span><span class="spaces"> </span><span class="nottickedoff">(upCast a) (upCast b) (upCast c) (upCast d)</span></span>
<span class="lineno"> 199 </span> <span class="decl"><span class="istickedoff">upCast (C.CubicBezier a b c d) = CubicBezier</span>
<span class="lineno"> 200 </span><span class="spaces"> </span><span class="istickedoff">(upCast a) (upCast b) (upCast c) (upCast d)</span></span>
<span class="lineno"> 201 </span>
<span class="lineno"> 202 </span>instance Cast (QuadBezier a) (C.QuadBezier a) where
<span class="lineno"> 203 </span> <span class="decl"><span class="nottickedoff">downCast (QuadBezier a b c) = C.QuadBezier</span>
<span class="lineno"> 204 </span><span class="spaces"> </span><span class="nottickedoff">(downCast a) (downCast b) (downCast c)</span></span>
<span class="lineno"> 203 </span> <span class="decl"><span class="istickedoff">downCast (QuadBezier a b c) = C.QuadBezier</span>
<span class="lineno"> 204 </span><span class="spaces"> </span><span class="istickedoff">(downCast a) (downCast b) (downCast c)</span></span>
<span class="lineno"> 205 </span> <span class="decl"><span class="nottickedoff">upCast (C.QuadBezier a b c)= QuadBezier</span>
<span class="lineno"> 206 </span><span class="spaces"> </span><span class="nottickedoff">(upCast a) (upCast b) (upCast c)</span></span>
<span class="lineno"> 207 </span>
@ -245,8 +245,8 @@ span.spaces { background: white }
<span class="lineno"> 226 </span><span class="spaces"> </span><span class="nottickedoff">upCast (C.Controls p1 p2) = Controls (upCast p1) (upCast p2)</span></span>
<span class="lineno"> 227 </span>
<span class="lineno"> 228 </span>instance Cast (PathJoin a) (C.PathJoin a) where
<span class="lineno"> 229 </span> <span class="decl"><span class="nottickedoff">downCast JoinLine = C.JoinLine</span>
<span class="lineno"> 230 </span><span class="spaces"> </span><span class="nottickedoff">downCast (JoinCurve a b) = C.JoinCurve (downCast a) (downCast b)</span></span>
<span class="lineno"> 229 </span> <span class="decl"><span class="istickedoff">downCast JoinLine = C.JoinLine</span>
<span class="lineno"> 230 </span><span class="spaces"> </span><span class="istickedoff">downCast (JoinCurve a b) = C.JoinCurve (downCast a) (downCast b)</span></span>
<span class="lineno"> 231 </span> <span class="decl"><span class="nottickedoff">upCast C.JoinLine = JoinLine</span>
<span class="lineno"> 232 </span><span class="spaces"> </span><span class="nottickedoff">upCast (C.JoinCurve a b) = JoinCurve (upCast a) (upCast b)</span></span>
<span class="lineno"> 233 </span>
@ -275,9 +275,9 @@ span.spaces { background: white }
<span class="lineno"> 256 </span><span class="spaces"> </span><span class="nottickedoff">| (p, j) &lt;- lst ] (upCast end)</span></span>
<span class="lineno"> 257 </span>
<span class="lineno"> 258 </span>instance Cast (ClosedPath a) (C.ClosedPath a) where
<span class="lineno"> 259 </span> <span class="decl"><span class="nottickedoff">downCast (ClosedPath lst) = C.ClosedPath</span>
<span class="lineno"> 260 </span><span class="spaces"> </span><span class="nottickedoff">[ (downCast p, downCast j)</span>
<span class="lineno"> 261 </span><span class="spaces"> </span><span class="nottickedoff">| (p, j) &lt;- lst ]</span></span>
<span class="lineno"> 259 </span> <span class="decl"><span class="istickedoff">downCast (ClosedPath lst) = C.ClosedPath</span>
<span class="lineno"> 260 </span><span class="spaces"> </span><span class="istickedoff">[ (downCast p, downCast j)</span>
<span class="lineno"> 261 </span><span class="spaces"> </span><span class="istickedoff">| (p, j) &lt;- lst ]</span></span>
<span class="lineno"> 262 </span> <span class="decl"><span class="nottickedoff">upCast (C.ClosedPath lst) = ClosedPath</span>
<span class="lineno"> 263 </span><span class="spaces"> </span><span class="nottickedoff">[ (upCast p, upCast j)</span>
<span class="lineno"> 264 </span><span class="spaces"> </span><span class="nottickedoff">| (p, j) &lt;- lst ]</span></span>

View file

@ -102,7 +102,7 @@ span.spaces { background: white }
<span class="lineno"> 83 </span>
<span class="lineno"> 84 </span>{-# NOINLINE pNoExternals #-}
<span class="lineno"> 85 </span>pNoExternals :: Bool
<span class="lineno"> 86 </span><span class="decl"><span class="nottickedoff">pNoExternals = unsafePerformIO (readIORef pNoExternalsRef)</span></span>
<span class="lineno"> 86 </span><span class="decl"><span class="istickedoff">pNoExternals = unsafePerformIO (readIORef pNoExternalsRef)</span></span>
<span class="lineno"> 87 </span>
<span class="lineno"> 88 </span>setNoExternals :: Bool -&gt; IO ()
<span class="lineno"> 89 </span><span class="decl"><span class="istickedoff">setNoExternals = writeIORef pNoExternalsRef</span></span>

View file

@ -39,15 +39,15 @@ span.spaces { background: white }
<span class="lineno"> 20 </span>-- in all cases. The only supported SVG nodes are: path, circle, polyline,
<span class="lineno"> 21 </span>-- ellipse, line, rectangle, image. All other nodes return (0,0,0,0).
<span class="lineno"> 22 </span>boundingBox :: Tree -&gt; (Double, Double, Double, Double)
<span class="lineno"> 23 </span><span class="decl"><span class="nottickedoff">boundingBox t =</span>
<span class="lineno"> 24 </span><span class="spaces"> </span><span class="nottickedoff">case svgBoundingPoints t of</span>
<span class="lineno"> 25 </span><span class="spaces"> </span><span class="nottickedoff">[] -&gt; (0,0,0,0)</span>
<span class="lineno"> 26 </span><span class="spaces"> </span><span class="nottickedoff">(V2 x y:rest) -&gt;</span>
<span class="lineno"> 27 </span><span class="spaces"> </span><span class="nottickedoff">let (minx, miny, maxx, maxy) = foldl' worker (x, y, x, y) rest</span>
<span class="lineno"> 28 </span><span class="spaces"> </span><span class="nottickedoff">in (minx, miny, maxx-minx, maxy-miny)</span>
<span class="lineno"> 29 </span><span class="spaces"> </span><span class="nottickedoff">where</span>
<span class="lineno"> 30 </span><span class="spaces"> </span><span class="nottickedoff">worker (minx, miny, maxx, maxy) (V2 x y) =</span>
<span class="lineno"> 31 </span><span class="spaces"> </span><span class="nottickedoff">(min minx x, min miny y, max maxx x, max maxy y)</span></span>
<span class="lineno"> 23 </span><span class="decl"><span class="istickedoff">boundingBox t =</span>
<span class="lineno"> 24 </span><span class="spaces"> </span><span class="istickedoff">case svgBoundingPoints t of</span>
<span class="lineno"> 25 </span><span class="spaces"> </span><span class="istickedoff">[] -&gt; (0,0,0,0)</span>
<span class="lineno"> 26 </span><span class="spaces"> </span><span class="istickedoff">(V2 x y:rest) -&gt;</span>
<span class="lineno"> 27 </span><span class="spaces"> </span><span class="istickedoff">let (minx, miny, maxx, maxy) = foldl' worker (x, y, x, y) rest</span>
<span class="lineno"> 28 </span><span class="spaces"> </span><span class="istickedoff">in (minx, miny, maxx-minx, maxy-miny)</span>
<span class="lineno"> 29 </span><span class="spaces"> </span><span class="istickedoff">where</span>
<span class="lineno"> 30 </span><span class="spaces"> </span><span class="istickedoff">worker (minx, miny, maxx, maxy) (V2 x y) =</span>
<span class="lineno"> 31 </span><span class="spaces"> </span><span class="istickedoff">(min minx x, min miny y, max maxx x, max maxy y)</span></span>
<span class="lineno"> 32 </span>
<span class="lineno"> 33 </span>svgHeight :: Tree -&gt; Double
<span class="lineno"> 34 </span><span class="decl"><span class="nottickedoff">svgHeight t = h</span>
@ -76,60 +76,60 @@ span.spaces { background: white }
<span class="lineno"> 57 </span><span class="spaces"> </span><span class="nottickedoff">chunks = 10</span></span>
<span class="lineno"> 58 </span>
<span class="lineno"> 59 </span>svgBoundingPoints :: Tree -&gt; [RPoint]
<span class="lineno"> 60 </span><span class="decl"><span class="nottickedoff">svgBoundingPoints t = map (Transform.transformPoint m) $</span>
<span class="lineno"> 61 </span><span class="spaces"> </span><span class="nottickedoff">case t of</span>
<span class="lineno"> 62 </span><span class="spaces"> </span><span class="nottickedoff">None -&gt; []</span>
<span class="lineno"> 63 </span><span class="spaces"> </span><span class="nottickedoff">UseTree{} -&gt; []</span>
<span class="lineno"> 64 </span><span class="spaces"> </span><span class="nottickedoff">GroupTree g -&gt; concatMap svgBoundingPoints (g^.groupChildren)</span>
<span class="lineno"> 65 </span><span class="spaces"> </span><span class="nottickedoff">SymbolTree (Symbol g) -&gt; concatMap svgBoundingPoints (g^.groupChildren)</span>
<span class="lineno"> 66 </span><span class="spaces"> </span><span class="nottickedoff">FilterTree{} -&gt; []</span>
<span class="lineno"> 67 </span><span class="spaces"> </span><span class="nottickedoff">DefinitionTree{} -&gt; []</span>
<span class="lineno"> 68 </span><span class="spaces"> </span><span class="nottickedoff">PathTree p -&gt; linePoints $ toLineCommands (p^.pathDefinition)</span>
<span class="lineno"> 69 </span><span class="spaces"> </span><span class="nottickedoff">CircleTree c -&gt; circleBoundingPoints c</span>
<span class="lineno"> 70 </span><span class="spaces"> </span><span class="nottickedoff">PolyLineTree pl -&gt; pl ^. polyLinePoints</span>
<span class="lineno"> 71 </span><span class="spaces"> </span><span class="nottickedoff">EllipseTree e -&gt; ellipseBoundingPoints e</span>
<span class="lineno"> 72 </span><span class="spaces"> </span><span class="nottickedoff">LineTree line -&gt; map pointToRPoint [line^.linePoint1, line^.linePoint2]</span>
<span class="lineno"> 73 </span><span class="spaces"> </span><span class="nottickedoff">RectangleTree rect -&gt;</span>
<span class="lineno"> 74 </span><span class="spaces"> </span><span class="nottickedoff">case pointToRPoint (rect^.rectUpperLeftCorner) of</span>
<span class="lineno"> 75 </span><span class="spaces"> </span><span class="nottickedoff">V2 x y -&gt; V2 x y :</span>
<span class="lineno"> 76 </span><span class="spaces"> </span><span class="nottickedoff">case mapTuple (fmap $ toUserUnit defaultDPI) (rect^.rectWidth, rect^.rectHeight) of</span>
<span class="lineno"> 77 </span><span class="spaces"> </span><span class="nottickedoff">(Just (Num w), Just (Num h)) -&gt; [V2 (x+w) (y+h)]</span>
<span class="lineno"> 78 </span><span class="spaces"> </span><span class="nottickedoff">_ -&gt; []</span>
<span class="lineno"> 79 </span><span class="spaces"> </span><span class="nottickedoff">TextTree{} -&gt; []</span>
<span class="lineno"> 80 </span><span class="spaces"> </span><span class="nottickedoff">ImageTree img -&gt;</span>
<span class="lineno"> 81 </span><span class="spaces"> </span><span class="nottickedoff">case (img^.imageCornerUpperLeft, img^.imageWidth, img^.imageHeight) of</span>
<span class="lineno"> 82 </span><span class="spaces"> </span><span class="nottickedoff">((Num x, Num y), Num w, Num h) -&gt;</span>
<span class="lineno"> 83 </span><span class="spaces"> </span><span class="nottickedoff">[V2 x y, V2 (x+w) (y+h)]</span>
<span class="lineno"> 84 </span><span class="spaces"> </span><span class="nottickedoff">_ -&gt; []</span>
<span class="lineno"> 85 </span><span class="spaces"> </span><span class="nottickedoff">MeshGradientTree{} -&gt; []</span>
<span class="lineno"> 86 </span><span class="spaces"> </span><span class="nottickedoff">_ -&gt; []</span>
<span class="lineno"> 87 </span><span class="spaces"> </span><span class="nottickedoff">where</span>
<span class="lineno"> 88 </span><span class="spaces"> </span><span class="nottickedoff">m = Transform.mkMatrix (t^.transform)</span>
<span class="lineno"> 89 </span><span class="spaces"> </span><span class="nottickedoff">mapTuple f = f *** f</span>
<span class="lineno"> 90 </span><span class="spaces"> </span><span class="nottickedoff">pointToRPoint p =</span>
<span class="lineno"> 91 </span><span class="spaces"> </span><span class="nottickedoff">case mapTuple (toUserUnit defaultDPI) p of</span>
<span class="lineno"> 92 </span><span class="spaces"> </span><span class="nottickedoff">(Num x, Num y) -&gt; V2 x y</span>
<span class="lineno"> 93 </span><span class="spaces"> </span><span class="nottickedoff">_ -&gt; error &quot;Reanimate.Svg.svgBoundingPoints: Unrecognized number format.&quot;</span>
<span class="lineno"> 94 </span><span class="spaces"></span><span class="nottickedoff"></span>
<span class="lineno"> 95 </span><span class="spaces"> </span><span class="nottickedoff">circleBoundingPoints circ =</span>
<span class="lineno"> 96 </span><span class="spaces"> </span><span class="nottickedoff">let (xnum, ynum) = circ ^. circleCenter</span>
<span class="lineno"> 97 </span><span class="spaces"> </span><span class="nottickedoff">rnum = circ ^. circleRadius</span>
<span class="lineno"> 98 </span><span class="spaces"> </span><span class="nottickedoff">in case mapMaybe unpackNumber [xnum, ynum, rnum] of</span>
<span class="lineno"> 99 </span><span class="spaces"> </span><span class="nottickedoff">[x, y, r] -&gt; [ V2 (x + r * cos angle) (y + r * sin angle) | angle &lt;- [0, pi/10 .. 2 * pi]]</span>
<span class="lineno"> 100 </span><span class="spaces"> </span><span class="nottickedoff">_ -&gt; []</span>
<span class="lineno"> 101 </span><span class="spaces"></span><span class="nottickedoff"></span>
<span class="lineno"> 102 </span><span class="spaces"> </span><span class="nottickedoff">ellipseBoundingPoints e =</span>
<span class="lineno"> 103 </span><span class="spaces"> </span><span class="nottickedoff">let (xnum,ynum) = e ^. ellipseCenter</span>
<span class="lineno"> 104 </span><span class="spaces"> </span><span class="nottickedoff">xrnum = e ^. ellipseXRadius</span>
<span class="lineno"> 105 </span><span class="spaces"> </span><span class="nottickedoff">yrnum = e ^. ellipseYRadius</span>
<span class="lineno"> 106 </span><span class="spaces"> </span><span class="nottickedoff">in case mapMaybe unpackNumber [xnum, ynum, xrnum, yrnum] of</span>
<span class="lineno"> 107 </span><span class="spaces"> </span><span class="nottickedoff">[x,y,xr,yr] -&gt; [V2 (x + xr * cos angle) (y + yr * sin angle) | angle &lt;- [0, pi/10 .. 2 * pi]]</span>
<span class="lineno"> 108 </span><span class="spaces"> </span><span class="nottickedoff">_ -&gt; []</span>
<span class="lineno"> 109 </span><span class="spaces"></span><span class="nottickedoff"></span>
<span class="lineno"> 110 </span><span class="spaces"> </span><span class="nottickedoff">unpackNumber n =</span>
<span class="lineno"> 111 </span><span class="spaces"> </span><span class="nottickedoff">case toUserUnit defaultDPI n of</span>
<span class="lineno"> 112 </span><span class="spaces"> </span><span class="nottickedoff">Num d -&gt; Just d</span>
<span class="lineno"> 113 </span><span class="spaces"> </span><span class="nottickedoff">_ -&gt; Nothing</span></span>
<span class="lineno"> 60 </span><span class="decl"><span class="istickedoff">svgBoundingPoints t = map (Transform.transformPoint m) $</span>
<span class="lineno"> 61 </span><span class="spaces"> </span><span class="istickedoff">case t of</span>
<span class="lineno"> 62 </span><span class="spaces"> </span><span class="istickedoff">None -&gt; <span class="nottickedoff">[]</span></span>
<span class="lineno"> 63 </span><span class="spaces"> </span><span class="istickedoff">UseTree{} -&gt; <span class="nottickedoff">[]</span></span>
<span class="lineno"> 64 </span><span class="spaces"> </span><span class="istickedoff">GroupTree g -&gt; concatMap svgBoundingPoints (g^.groupChildren)</span>
<span class="lineno"> 65 </span><span class="spaces"> </span><span class="istickedoff">SymbolTree (Symbol g) -&gt; <span class="nottickedoff">concatMap svgBoundingPoints (g^.groupChildren)</span></span>
<span class="lineno"> 66 </span><span class="spaces"> </span><span class="istickedoff">FilterTree{} -&gt; <span class="nottickedoff">[]</span></span>
<span class="lineno"> 67 </span><span class="spaces"> </span><span class="istickedoff">DefinitionTree{} -&gt; <span class="nottickedoff">[]</span></span>
<span class="lineno"> 68 </span><span class="spaces"> </span><span class="istickedoff">PathTree p -&gt; <span class="nottickedoff">linePoints $ toLineCommands (p^.pathDefinition)</span></span>
<span class="lineno"> 69 </span><span class="spaces"> </span><span class="istickedoff">CircleTree c -&gt; <span class="nottickedoff">circleBoundingPoints c</span></span>
<span class="lineno"> 70 </span><span class="spaces"> </span><span class="istickedoff">PolyLineTree pl -&gt; <span class="nottickedoff">pl ^. polyLinePoints</span></span>
<span class="lineno"> 71 </span><span class="spaces"> </span><span class="istickedoff">EllipseTree e -&gt; <span class="nottickedoff">ellipseBoundingPoints e</span></span>
<span class="lineno"> 72 </span><span class="spaces"> </span><span class="istickedoff">LineTree line -&gt; <span class="nottickedoff">map pointToRPoint [line^.linePoint1, line^.linePoint2]</span></span>
<span class="lineno"> 73 </span><span class="spaces"> </span><span class="istickedoff">RectangleTree rect -&gt;</span>
<span class="lineno"> 74 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">case pointToRPoint (rect^.rectUpperLeftCorner) of</span></span>
<span class="lineno"> 75 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">V2 x y -&gt; V2 x y :</span></span>
<span class="lineno"> 76 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">case mapTuple (fmap $ toUserUnit defaultDPI) (rect^.rectWidth, rect^.rectHeight) of</span></span>
<span class="lineno"> 77 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">(Just (Num w), Just (Num h)) -&gt; [V2 (x+w) (y+h)]</span></span>
<span class="lineno"> 78 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">_ -&gt; []</span></span>
<span class="lineno"> 79 </span><span class="spaces"> </span><span class="istickedoff">TextTree{} -&gt; []</span>
<span class="lineno"> 80 </span><span class="spaces"> </span><span class="istickedoff">ImageTree img -&gt;</span>
<span class="lineno"> 81 </span><span class="spaces"> </span><span class="istickedoff">case (img^.imageCornerUpperLeft, img^.imageWidth, img^.imageHeight) of</span>
<span class="lineno"> 82 </span><span class="spaces"> </span><span class="istickedoff">((Num x, Num y), Num w, Num h) -&gt;</span>
<span class="lineno"> 83 </span><span class="spaces"> </span><span class="istickedoff">[V2 x y, V2 (x+w) (y+h)]</span>
<span class="lineno"> 84 </span><span class="spaces"> </span><span class="istickedoff">_ -&gt; <span class="nottickedoff">[]</span></span>
<span class="lineno"> 85 </span><span class="spaces"> </span><span class="istickedoff">MeshGradientTree{} -&gt; <span class="nottickedoff">[]</span></span>
<span class="lineno"> 86 </span><span class="spaces"> </span><span class="istickedoff">_ -&gt; <span class="nottickedoff">[]</span></span>
<span class="lineno"> 87 </span><span class="spaces"> </span><span class="istickedoff">where</span>
<span class="lineno"> 88 </span><span class="spaces"> </span><span class="istickedoff">m = Transform.mkMatrix (t^.transform)</span>
<span class="lineno"> 89 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">mapTuple f = f *** f</span></span>
<span class="lineno"> 90 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">pointToRPoint p =</span></span>
<span class="lineno"> 91 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">case mapTuple (toUserUnit defaultDPI) p of</span></span>
<span class="lineno"> 92 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">(Num x, Num y) -&gt; V2 x y</span></span>
<span class="lineno"> 93 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">_ -&gt; error &quot;Reanimate.Svg.svgBoundingPoints: Unrecognized number format.&quot;</span></span>
<span class="lineno"> 94 </span><span class="spaces"></span><span class="istickedoff"></span>
<span class="lineno"> 95 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">circleBoundingPoints circ =</span></span>
<span class="lineno"> 96 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">let (xnum, ynum) = circ ^. circleCenter</span></span>
<span class="lineno"> 97 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">rnum = circ ^. circleRadius</span></span>
<span class="lineno"> 98 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">in case mapMaybe unpackNumber [xnum, ynum, rnum] of</span></span>
<span class="lineno"> 99 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">[x, y, r] -&gt; [ V2 (x + r * cos angle) (y + r * sin angle) | angle &lt;- [0, pi/10 .. 2 * pi]]</span></span>
<span class="lineno"> 100 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">_ -&gt; []</span></span>
<span class="lineno"> 101 </span><span class="spaces"></span><span class="istickedoff"></span>
<span class="lineno"> 102 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">ellipseBoundingPoints e =</span></span>
<span class="lineno"> 103 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">let (xnum,ynum) = e ^. ellipseCenter</span></span>
<span class="lineno"> 104 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">xrnum = e ^. ellipseXRadius</span></span>
<span class="lineno"> 105 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">yrnum = e ^. ellipseYRadius</span></span>
<span class="lineno"> 106 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">in case mapMaybe unpackNumber [xnum, ynum, xrnum, yrnum] of</span></span>
<span class="lineno"> 107 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">[x,y,xr,yr] -&gt; [V2 (x + xr * cos angle) (y + yr * sin angle) | angle &lt;- [0, pi/10 .. 2 * pi]]</span></span>
<span class="lineno"> 108 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">_ -&gt; []</span></span>
<span class="lineno"> 109 </span><span class="spaces"></span><span class="istickedoff"></span>
<span class="lineno"> 110 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">unpackNumber n =</span></span>
<span class="lineno"> 111 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">case toUserUnit defaultDPI n of</span></span>
<span class="lineno"> 112 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">Num d -&gt; Just d</span></span>
<span class="lineno"> 113 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">_ -&gt; Nothing</span></span></span>
</pre>
</body>

View file

@ -101,7 +101,7 @@ span.spaces { background: white }
<span class="lineno"> 82 </span>-- | @rotate angle image@ rotates the @image@ around origin @(0,0)@ counterclockwise by @angle@
<span class="lineno"> 83 </span>-- given in degrees.
<span class="lineno"> 84 </span>rotate :: Double -&gt; Tree -&gt; Tree
<span class="lineno"> 85 </span><span class="decl"><span class="nottickedoff">rotate a = withTransformations [Rotate a Nothing]</span></span>
<span class="lineno"> 85 </span><span class="decl"><span class="istickedoff">rotate a = withTransformations [Rotate a Nothing]</span></span>
<span class="lineno"> 86 </span>
<span class="lineno"> 87 </span>-- | @rotate angle point image@ rotates the @image@ around given @point@ counterclockwise by
<span class="lineno"> 88 </span>-- @angle@ given in degrees.
@ -146,23 +146,23 @@ span.spaces { background: white }
<span class="lineno"> 127 </span>-- half the original size. Negative values are also allowed, and lead to flipping the image along
<span class="lineno"> 128 </span>-- both X and Y axes.
<span class="lineno"> 129 </span>scale :: Double -&gt; Tree -&gt; Tree
<span class="lineno"> 130 </span><span class="decl"><span class="nottickedoff">scale a = withTransformations [Scale a Nothing]</span></span>
<span class="lineno"> 130 </span><span class="decl"><span class="istickedoff">scale a = withTransformations [Scale a Nothing]</span></span>
<span class="lineno"> 131 </span>
<span class="lineno"> 132 </span>-- | @scaleToSize width height@ resizes the image so that its bounding box has corresponding @width@
<span class="lineno"> 133 </span>-- and @height@.
<span class="lineno"> 134 </span>scaleToSize :: Double -&gt; Double -&gt; Tree -&gt; Tree
<span class="lineno"> 135 </span><span class="decl"><span class="nottickedoff">scaleToSize w h t =</span>
<span class="lineno"> 136 </span><span class="spaces"> </span><span class="nottickedoff">scaleXY (w/w') (h/h') t</span>
<span class="lineno"> 137 </span><span class="spaces"> </span><span class="nottickedoff">where</span>
<span class="lineno"> 138 </span><span class="spaces"> </span><span class="nottickedoff">(_x, _y, w', h') = boundingBox t</span></span>
<span class="lineno"> 135 </span><span class="decl"><span class="istickedoff">scaleToSize w h t =</span>
<span class="lineno"> 136 </span><span class="spaces"> </span><span class="istickedoff">scaleXY (w/w') (h/h') t</span>
<span class="lineno"> 137 </span><span class="spaces"> </span><span class="istickedoff">where</span>
<span class="lineno"> 138 </span><span class="spaces"> </span><span class="istickedoff">(_x, _y, w', h') = boundingBox t</span></span>
<span class="lineno"> 139 </span>
<span class="lineno"> 140 </span>-- | @scaleToWidth width@ scales the image so that the width of its bounding box ends up having
<span class="lineno"> 141 </span>-- given @width@.
<span class="lineno"> 142 </span>scaleToWidth :: Double -&gt; Tree -&gt; Tree
<span class="lineno"> 143 </span><span class="decl"><span class="nottickedoff">scaleToWidth w t =</span>
<span class="lineno"> 144 </span><span class="spaces"> </span><span class="nottickedoff">scale (w/w') t</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">(_x, _y, w', _h') = boundingBox t</span></span>
<span class="lineno"> 143 </span><span class="decl"><span class="istickedoff">scaleToWidth w t =</span>
<span class="lineno"> 144 </span><span class="spaces"> </span><span class="istickedoff">scale (w/w') t</span>
<span class="lineno"> 145 </span><span class="spaces"> </span><span class="istickedoff">where</span>
<span class="lineno"> 146 </span><span class="spaces"> </span><span class="istickedoff">(_x, _y, w', _h') = boundingBox t</span></span>
<span class="lineno"> 147 </span>
<span class="lineno"> 148 </span>-- | @scaleToHeight height@ scales the image so that the height of its bounding box ends up having
<span class="lineno"> 149 </span>-- given @height@.
@ -180,17 +180,17 @@ span.spaces { background: white }
<span class="lineno"> 161 </span>-- | Flip the image along vertical axis so that what was on the right will end up on left and vice
<span class="lineno"> 162 </span>-- versa.
<span class="lineno"> 163 </span>flipXAxis :: Tree -&gt; Tree
<span class="lineno"> 164 </span><span class="decl"><span class="nottickedoff">flipXAxis = scaleXY (-1) 1</span></span>
<span class="lineno"> 164 </span><span class="decl"><span class="istickedoff">flipXAxis = scaleXY (-1) 1</span></span>
<span class="lineno"> 165 </span>
<span class="lineno"> 166 </span>-- | Flip the image along horizontal so that what was on the top will end up in the bottom and vice
<span class="lineno"> 167 </span>-- versa.
<span class="lineno"> 168 </span>flipYAxis :: Tree -&gt; Tree
<span class="lineno"> 169 </span><span class="decl"><span class="nottickedoff">flipYAxis = scaleXY 1 (-1)</span></span>
<span class="lineno"> 169 </span><span class="decl"><span class="istickedoff">flipYAxis = scaleXY 1 (-1)</span></span>
<span class="lineno"> 170 </span>
<span class="lineno"> 171 </span>-- | Translate given image so that the center of its bouding box coincides with coordinates
<span class="lineno"> 172 </span>-- @(0, 0)@.
<span class="lineno"> 173 </span>center :: Tree -&gt; Tree
<span class="lineno"> 174 </span><span class="decl"><span class="nottickedoff">center t = centerUsing t t</span></span>
<span class="lineno"> 174 </span><span class="decl"><span class="istickedoff">center t = centerUsing t t</span></span>
<span class="lineno"> 175 </span>
<span class="lineno"> 176 </span>-- | Translate given image so that the X-coordinate of the center of its bouding box is 0.
<span class="lineno"> 177 </span>centerX :: Tree -&gt; Tree
@ -205,9 +205,9 @@ span.spaces { background: white }
<span class="lineno"> 186 </span><span class="spaces"> </span><span class="nottickedoff">(_x, y, _w, h) = boundingBox t</span></span>
<span class="lineno"> 187 </span>
<span class="lineno"> 188 </span>centerUsing :: Tree -&gt; Tree -&gt; Tree
<span class="lineno"> 189 </span><span class="decl"><span class="nottickedoff">centerUsing a = translate (-x-w/2) (-y-h/2)</span>
<span class="lineno"> 190 </span><span class="spaces"> </span><span class="nottickedoff">where</span>
<span class="lineno"> 191 </span><span class="spaces"> </span><span class="nottickedoff">(x, y, w, h) = boundingBox a</span></span>
<span class="lineno"> 189 </span><span class="decl"><span class="istickedoff">centerUsing a = translate (-x-w/2) (-y-h/2)</span>
<span class="lineno"> 190 </span><span class="spaces"> </span><span class="istickedoff">where</span>
<span class="lineno"> 191 </span><span class="spaces"> </span><span class="istickedoff">(x, y, w, h) = boundingBox a</span></span>
<span class="lineno"> 192 </span>
<span class="lineno"> 193 </span>-- | Create 'Texture' based on SVG color name.
<span class="lineno"> 194 </span>-- See &lt;https://en.wikipedia.org/wiki/Web_colors#X11_color_names&gt; for the list of available names.
@ -223,7 +223,7 @@ span.spaces { background: white }
<span class="lineno"> 204 </span><span class="decl"><span class="istickedoff">withStrokeColor color = strokeColor .~ pure (mkColor color)</span></span>
<span class="lineno"> 205 </span>
<span class="lineno"> 206 </span>withStrokeColorPixel :: PixelRGBA8 -&gt; Tree -&gt; Tree
<span class="lineno"> 207 </span><span class="decl"><span class="nottickedoff">withStrokeColorPixel color = strokeColor .~ pure (ColorRef color)</span></span>
<span class="lineno"> 207 </span><span class="decl"><span class="istickedoff">withStrokeColorPixel color = strokeColor .~ pure (ColorRef color)</span></span>
<span class="lineno"> 208 </span>
<span class="lineno"> 209 </span>withStrokeDashArray :: [Double] -&gt; Tree -&gt; Tree
<span class="lineno"> 210 </span><span class="decl"><span class="nottickedoff">withStrokeDashArray arr = strokeDashArray .~ pure (map Num arr)</span></span>
@ -237,14 +237,14 @@ span.spaces { background: white }
<span class="lineno"> 218 </span><span class="decl"><span class="istickedoff">withFillColor color = fillColor .~ pure (mkColor color)</span></span>
<span class="lineno"> 219 </span>
<span class="lineno"> 220 </span>withFillColorPixel :: PixelRGBA8 -&gt; Tree -&gt; Tree
<span class="lineno"> 221 </span><span class="decl"><span class="nottickedoff">withFillColorPixel color = fillColor .~ pure (ColorRef color)</span></span>
<span class="lineno"> 221 </span><span class="decl"><span class="istickedoff">withFillColorPixel color = fillColor .~ pure (ColorRef color)</span></span>
<span class="lineno"> 222 </span>
<span class="lineno"> 223 </span>-- | See &lt;https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-opacity&gt;
<span class="lineno"> 224 </span>withFillOpacity :: Double -&gt; Tree -&gt; Tree
<span class="lineno"> 225 </span><span class="decl"><span class="istickedoff">withFillOpacity opacity = fillOpacity ?~ realToFrac opacity</span></span>
<span class="lineno"> 226 </span>
<span class="lineno"> 227 </span>withGroupOpacity :: Double -&gt; Tree -&gt; Tree
<span class="lineno"> 228 </span><span class="decl"><span class="nottickedoff">withGroupOpacity opacity = groupOpacity ?~ realToFrac opacity</span></span>
<span class="lineno"> 228 </span><span class="decl"><span class="istickedoff">withGroupOpacity opacity = groupOpacity ?~ realToFrac opacity</span></span>
<span class="lineno"> 229 </span>
<span class="lineno"> 230 </span>-- | See &lt;https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-width&gt;
<span class="lineno"> 231 </span>withStrokeWidth :: Double -&gt; Tree -&gt; Tree
@ -278,17 +278,17 @@ span.spaces { background: white }
<span class="lineno"> 259 </span>-- | Create an ellipse given X-axis radius, and Y-axis radius, with center at @(0, 0)@.
<span class="lineno"> 260 </span>-- See &lt;https://developer.mozilla.org/en-US/docs/Web/SVG/Element/ellipse&gt;
<span class="lineno"> 261 </span>mkEllipse :: Double -&gt; Double -&gt; Tree
<span class="lineno"> 262 </span><span class="decl"><span class="nottickedoff">mkEllipse rx ry = EllipseTree $ defaultSvg</span>
<span class="lineno"> 263 </span><span class="spaces"> </span><span class="nottickedoff">&amp; ellipseCenter .~ (Num 0, Num 0)</span>
<span class="lineno"> 264 </span><span class="spaces"> </span><span class="nottickedoff">&amp; ellipseXRadius .~ Num rx</span>
<span class="lineno"> 265 </span><span class="spaces"> </span><span class="nottickedoff">&amp; ellipseYRadius .~ Num ry</span></span>
<span class="lineno"> 262 </span><span class="decl"><span class="istickedoff">mkEllipse rx ry = EllipseTree $ defaultSvg</span>
<span class="lineno"> 263 </span><span class="spaces"> </span><span class="istickedoff">&amp; ellipseCenter .~ (Num 0, Num 0)</span>
<span class="lineno"> 264 </span><span class="spaces"> </span><span class="istickedoff">&amp; ellipseXRadius .~ Num rx</span>
<span class="lineno"> 265 </span><span class="spaces"> </span><span class="istickedoff">&amp; ellipseYRadius .~ Num ry</span></span>
<span class="lineno"> 266 </span>
<span class="lineno"> 267 </span>-- | Create a line segment between two points given by their @(x, y)@ coordinates.
<span class="lineno"> 268 </span>-- See &lt;https://developer.mozilla.org/en-US/docs/Web/SVG/Element/line&gt;
<span class="lineno"> 269 </span>mkLine :: (Double,Double) -&gt; (Double, Double) -&gt; Tree
<span class="lineno"> 270 </span><span class="decl"><span class="nottickedoff">mkLine (x1,y1) (x2,y2) = LineTree $ defaultSvg</span>
<span class="lineno"> 271 </span><span class="spaces"> </span><span class="nottickedoff">&amp; linePoint1 .~ (Num x1, Num y1)</span>
<span class="lineno"> 272 </span><span class="spaces"> </span><span class="nottickedoff">&amp; linePoint2 .~ (Num x2, Num y2)</span></span>
<span class="lineno"> 270 </span><span class="decl"><span class="istickedoff">mkLine (x1,y1) (x2,y2) = LineTree $ defaultSvg</span>
<span class="lineno"> 271 </span><span class="spaces"> </span><span class="istickedoff">&amp; linePoint1 .~ (Num x1, Num y1)</span>
<span class="lineno"> 272 </span><span class="spaces"> </span><span class="istickedoff">&amp; linePoint2 .~ (Num x2, Num y2)</span></span>
<span class="lineno"> 273 </span>
<span class="lineno"> 274 </span>-- | Merges multiple images into one.
<span class="lineno"> 275 </span>-- See &lt;https://developer.mozilla.org/en-US/docs/Web/SVG/Element/g&gt;
@ -321,20 +321,20 @@ span.spaces { background: white }
<span class="lineno"> 302 </span>-- | Create a path from the list of path commands.
<span class="lineno"> 303 </span>-- See &lt;https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d#Path_commands&gt;
<span class="lineno"> 304 </span>mkPath :: [PathCommand] -&gt; Tree
<span class="lineno"> 305 </span><span class="decl"><span class="nottickedoff">mkPath cmds = PathTree $ defaultSvg &amp; pathDefinition .~ cmds</span></span>
<span class="lineno"> 305 </span><span class="decl"><span class="istickedoff">mkPath cmds = PathTree $ defaultSvg &amp; pathDefinition .~ cmds</span></span>
<span class="lineno"> 306 </span>
<span class="lineno"> 307 </span>-- | Similar to 'mkPathText', but taking SVG path command as a String.
<span class="lineno"> 308 </span>mkPathString :: String -&gt; Tree
<span class="lineno"> 309 </span><span class="decl"><span class="nottickedoff">mkPathString = mkPathText . T.pack</span></span>
<span class="lineno"> 309 </span><span class="decl"><span class="istickedoff">mkPathString = mkPathText . T.pack</span></span>
<span class="lineno"> 310 </span>
<span class="lineno"> 311 </span>-- | Create path from textual representation of SVG path command.
<span class="lineno"> 312 </span>-- If the text doesn't represent valid path command, this function fails with 'Prelude.error'.
<span class="lineno"> 313 </span>-- Use 'mkPath' for type safe way of creating paths.
<span class="lineno"> 314 </span>mkPathText :: T.Text -&gt; Tree
<span class="lineno"> 315 </span><span class="decl"><span class="nottickedoff">mkPathText str =</span>
<span class="lineno"> 316 </span><span class="spaces"> </span><span class="nottickedoff">case parseOnly pathParser str of</span>
<span class="lineno"> 317 </span><span class="spaces"> </span><span class="nottickedoff">Left err -&gt; error err</span>
<span class="lineno"> 318 </span><span class="spaces"> </span><span class="nottickedoff">Right cmds -&gt; mkPath cmds</span></span>
<span class="lineno"> 315 </span><span class="decl"><span class="istickedoff">mkPathText str =</span>
<span class="lineno"> 316 </span><span class="spaces"> </span><span class="istickedoff">case parseOnly pathParser str of</span>
<span class="lineno"> 317 </span><span class="spaces"> </span><span class="istickedoff">Left err -&gt; <span class="nottickedoff">error err</span></span>
<span class="lineno"> 318 </span><span class="spaces"> </span><span class="istickedoff">Right cmds -&gt; mkPath cmds</span></span>
<span class="lineno"> 319 </span>
<span class="lineno"> 320 </span>-- | Create a path from a list of @(x, y)@ coordinates of points along the path.
<span class="lineno"> 321 </span>mkLinePath :: [(Double, Double)] -&gt; Tree
@ -347,13 +347,13 @@ span.spaces { background: white }
<span class="lineno"> 328 </span>
<span class="lineno"> 329 </span>-- | Create a path from a list of @(x, y)@ coordinates of points along the path.
<span class="lineno"> 330 </span>mkLinePathClosed :: [(Double, Double)] -&gt; Tree
<span class="lineno"> 331 </span><span class="decl"><span class="nottickedoff">mkLinePathClosed [] = mkGroup []</span>
<span class="lineno"> 332 </span><span class="spaces"></span><span class="nottickedoff">mkLinePathClosed ((startX, startY):rest) =</span>
<span class="lineno"> 333 </span><span class="spaces"> </span><span class="nottickedoff">PathTree $ defaultSvg &amp; pathDefinition .~ cmds</span>
<span class="lineno"> 334 </span><span class="spaces"> </span><span class="nottickedoff">where</span>
<span class="lineno"> 335 </span><span class="spaces"> </span><span class="nottickedoff">cmds = [ MoveTo OriginAbsolute [V2 startX startY]</span>
<span class="lineno"> 336 </span><span class="spaces"> </span><span class="nottickedoff">, LineTo OriginAbsolute [ V2 x y | (x, y) &lt;- rest ]</span>
<span class="lineno"> 337 </span><span class="spaces"> </span><span class="nottickedoff">, EndPath ]</span></span>
<span class="lineno"> 331 </span><span class="decl"><span class="istickedoff">mkLinePathClosed [] = <span class="nottickedoff">mkGroup []</span></span>
<span class="lineno"> 332 </span><span class="spaces"></span><span class="istickedoff">mkLinePathClosed ((startX, startY):rest) =</span>
<span class="lineno"> 333 </span><span class="spaces"> </span><span class="istickedoff">PathTree $ defaultSvg &amp; pathDefinition .~ cmds</span>
<span class="lineno"> 334 </span><span class="spaces"> </span><span class="istickedoff">where</span>
<span class="lineno"> 335 </span><span class="spaces"> </span><span class="istickedoff">cmds = [ MoveTo OriginAbsolute [V2 startX startY]</span>
<span class="lineno"> 336 </span><span class="spaces"> </span><span class="istickedoff">, LineTo OriginAbsolute [ V2 x y | (x, y) &lt;- rest ]</span>
<span class="lineno"> 337 </span><span class="spaces"> </span><span class="istickedoff">, EndPath ]</span></span>
<span class="lineno"> 338 </span>
<span class="lineno"> 339 </span>-- | Rectangle with a uniform color and the same size as the screen.
<span class="lineno"> 340 </span>--
@ -367,9 +367,9 @@ span.spaces { background: white }
<span class="lineno"> 348 </span><span class="spaces"> </span><span class="istickedoff">withFillColor color $ mkRect screenWidth screenHeight</span></span>
<span class="lineno"> 349 </span>
<span class="lineno"> 350 </span>mkBackgroundPixel :: PixelRGBA8 -&gt; Tree
<span class="lineno"> 351 </span><span class="decl"><span class="nottickedoff">mkBackgroundPixel pixel =</span>
<span class="lineno"> 352 </span><span class="spaces"> </span><span class="nottickedoff">withFillOpacity 1 $ withStrokeWidth 0 $</span>
<span class="lineno"> 353 </span><span class="spaces"> </span><span class="nottickedoff">withFillColorPixel pixel $ mkRect screenWidth screenHeight</span></span>
<span class="lineno"> 351 </span><span class="decl"><span class="istickedoff">mkBackgroundPixel pixel =</span>
<span class="lineno"> 352 </span><span class="spaces"> </span><span class="istickedoff">withFillOpacity 1 $ withStrokeWidth 0 $</span>
<span class="lineno"> 353 </span><span class="spaces"> </span><span class="istickedoff">withFillColorPixel pixel $ mkRect screenWidth screenHeight</span></span>
<span class="lineno"> 354 </span>
<span class="lineno"> 355 </span>-- | Take list of rows, where each row consists of number of images and display them in regular
<span class="lineno"> 356 </span>-- grid structure.
@ -377,17 +377,17 @@ span.spaces { background: white }
<span class="lineno"> 358 </span>-- The images within each row will get equal amount of horizontal space, independent of the other
<span class="lineno"> 359 </span>-- rows. Each row can contain different number of cells.
<span class="lineno"> 360 </span>gridLayout :: [[Tree]] -&gt; Tree
<span class="lineno"> 361 </span><span class="decl"><span class="nottickedoff">gridLayout rows = mkGroup</span>
<span class="lineno"> 362 </span><span class="spaces"> </span><span class="nottickedoff">[ translate (-screenWidth/2+colSep*nCol + colSep*0.5)</span>
<span class="lineno"> 363 </span><span class="spaces"> </span><span class="nottickedoff">(screenHeight/2-rowSep*nRow - rowSep*0.5)</span>
<span class="lineno"> 364 </span><span class="spaces"> </span><span class="nottickedoff">elt</span>
<span class="lineno"> 365 </span><span class="spaces"> </span><span class="nottickedoff">| (nRow, row) &lt;- zip [0..] rows</span>
<span class="lineno"> 366 </span><span class="spaces"> </span><span class="nottickedoff">, let nCols = length row</span>
<span class="lineno"> 367 </span><span class="spaces"> </span><span class="nottickedoff">colSep = screenWidth / fromIntegral nCols</span>
<span class="lineno"> 368 </span><span class="spaces"> </span><span class="nottickedoff">, (nCol, elt) &lt;- zip [0..] row ]</span>
<span class="lineno"> 369 </span><span class="spaces"> </span><span class="nottickedoff">where</span>
<span class="lineno"> 370 </span><span class="spaces"> </span><span class="nottickedoff">rowSep = screenHeight / fromIntegral nRows</span>
<span class="lineno"> 371 </span><span class="spaces"> </span><span class="nottickedoff">nRows = length rows</span></span>
<span class="lineno"> 361 </span><span class="decl"><span class="istickedoff">gridLayout rows = mkGroup</span>
<span class="lineno"> 362 </span><span class="spaces"> </span><span class="istickedoff">[ translate (-screenWidth/2+colSep*nCol + colSep*0.5)</span>
<span class="lineno"> 363 </span><span class="spaces"> </span><span class="istickedoff">(screenHeight/2-rowSep*nRow - rowSep*0.5)</span>
<span class="lineno"> 364 </span><span class="spaces"> </span><span class="istickedoff">elt</span>
<span class="lineno"> 365 </span><span class="spaces"> </span><span class="istickedoff">| (nRow, row) &lt;- zip [0..] rows</span>
<span class="lineno"> 366 </span><span class="spaces"> </span><span class="istickedoff">, let nCols = length row</span>
<span class="lineno"> 367 </span><span class="spaces"> </span><span class="istickedoff">colSep = screenWidth / fromIntegral nCols</span>
<span class="lineno"> 368 </span><span class="spaces"> </span><span class="istickedoff">, (nCol, elt) &lt;- zip [0..] row ]</span>
<span class="lineno"> 369 </span><span class="spaces"> </span><span class="istickedoff">where</span>
<span class="lineno"> 370 </span><span class="spaces"> </span><span class="istickedoff">rowSep = screenHeight / fromIntegral nRows</span>
<span class="lineno"> 371 </span><span class="spaces"> </span><span class="istickedoff">nRows = length rows</span></span>
<span class="lineno"> 372 </span>
<span class="lineno"> 373 </span>-- | Insert a native text object anchored at the middle.
<span class="lineno"> 374 </span>--
@ -397,16 +397,16 @@ span.spaces { background: white }
<span class="lineno"> 378 </span>--
<span class="lineno"> 379 </span>-- &lt;&lt;docs/gifs/doc_mkText.gif&gt;&gt;
<span class="lineno"> 380 </span>mkText :: T.Text -&gt; Tree
<span class="lineno"> 381 </span><span class="decl"><span class="nottickedoff">mkText str =</span>
<span class="lineno"> 382 </span><span class="spaces"> </span><span class="nottickedoff">flipYAxis</span>
<span class="lineno"> 383 </span><span class="spaces"> </span><span class="nottickedoff">(TextTree Nothing $ defaultSvg</span>
<span class="lineno"> 384 </span><span class="spaces"> </span><span class="nottickedoff">&amp; textRoot .~ span_</span>
<span class="lineno"> 385 </span><span class="spaces"> </span><span class="nottickedoff">&amp; fontSize .~ pure (Num 2))</span>
<span class="lineno"> 386 </span><span class="spaces"> </span><span class="nottickedoff">&amp; textAnchor .~ pure TextAnchorMiddle</span>
<span class="lineno"> 387 </span><span class="spaces"> </span><span class="nottickedoff">-- Note: TextAnchorMiddle is placed on the 'flipYAxis' group such that it can easily</span>
<span class="lineno"> 388 </span><span class="spaces"> </span><span class="nottickedoff">-- be overwritten by the user.</span>
<span class="lineno"> 389 </span><span class="spaces"> </span><span class="nottickedoff">where</span>
<span class="lineno"> 390 </span><span class="spaces"> </span><span class="nottickedoff">span_ = defaultSvg &amp; spanContent .~ [SpanText str]</span></span>
<span class="lineno"> 381 </span><span class="decl"><span class="istickedoff">mkText str =</span>
<span class="lineno"> 382 </span><span class="spaces"> </span><span class="istickedoff">flipYAxis</span>
<span class="lineno"> 383 </span><span class="spaces"> </span><span class="istickedoff">(TextTree Nothing $ defaultSvg</span>
<span class="lineno"> 384 </span><span class="spaces"> </span><span class="istickedoff">&amp; textRoot .~ span_</span>
<span class="lineno"> 385 </span><span class="spaces"> </span><span class="istickedoff">&amp; fontSize .~ pure (Num 2))</span>
<span class="lineno"> 386 </span><span class="spaces"> </span><span class="istickedoff">&amp; textAnchor .~ pure TextAnchorMiddle</span>
<span class="lineno"> 387 </span><span class="spaces"> </span><span class="istickedoff">-- Note: TextAnchorMiddle is placed on the 'flipYAxis' group such that it can easily</span>
<span class="lineno"> 388 </span><span class="spaces"> </span><span class="istickedoff">-- be overwritten by the user.</span>
<span class="lineno"> 389 </span><span class="spaces"> </span><span class="istickedoff">where</span>
<span class="lineno"> 390 </span><span class="spaces"> </span><span class="istickedoff">span_ = defaultSvg &amp; spanContent .~ [SpanText str]</span></span>
<span class="lineno"> 391 </span>
<span class="lineno"> 392 </span>-- | Switch from the default viewbox to a custom viewbox. Nesting custom viewboxes is
<span class="lineno"> 393 </span>-- unlikely to give good results. If you need nested custom viewboxes, you will have
@ -420,16 +420,16 @@ span.spaces { background: white }
<span class="lineno"> 401 </span>--
<span class="lineno"> 402 </span>-- &lt;&lt;docs/gifs/doc_withViewBox.gif&gt;&gt;
<span class="lineno"> 403 </span>withViewBox :: (Double, Double, Double, Double) -&gt; Tree -&gt; Tree
<span class="lineno"> 404 </span><span class="decl"><span class="nottickedoff">withViewBox vbox child = translate (-screenWidth/2) (-screenHeight/2) $</span>
<span class="lineno"> 405 </span><span class="spaces"> </span><span class="nottickedoff">SvgTree $ Document</span>
<span class="lineno"> 406 </span><span class="spaces"> </span><span class="nottickedoff">{ _viewBox = Just vbox</span>
<span class="lineno"> 407 </span><span class="spaces"> </span><span class="nottickedoff">, _width = Just (Num screenWidth)</span>
<span class="lineno"> 408 </span><span class="spaces"> </span><span class="nottickedoff">, _height = Just (Num screenHeight)</span>
<span class="lineno"> 409 </span><span class="spaces"> </span><span class="nottickedoff">, _elements = [child]</span>
<span class="lineno"> 410 </span><span class="spaces"> </span><span class="nottickedoff">, _description = &quot;&quot;</span>
<span class="lineno"> 411 </span><span class="spaces"> </span><span class="nottickedoff">, _documentLocation = &quot;&quot;</span>
<span class="lineno"> 412 </span><span class="spaces"> </span><span class="nottickedoff">, _documentAspectRatio = PreserveAspectRatio False AlignNone Nothing</span>
<span class="lineno"> 413 </span><span class="spaces"> </span><span class="nottickedoff">}</span></span>
<span class="lineno"> 404 </span><span class="decl"><span class="istickedoff">withViewBox vbox child = translate (-screenWidth/2) (-screenHeight/2) $</span>
<span class="lineno"> 405 </span><span class="spaces"> </span><span class="istickedoff">SvgTree $ Document</span>
<span class="lineno"> 406 </span><span class="spaces"> </span><span class="istickedoff">{ _viewBox = Just vbox</span>
<span class="lineno"> 407 </span><span class="spaces"> </span><span class="istickedoff">, _width = Just (Num screenWidth)</span>
<span class="lineno"> 408 </span><span class="spaces"> </span><span class="istickedoff">, _height = Just (Num screenHeight)</span>
<span class="lineno"> 409 </span><span class="spaces"> </span><span class="istickedoff">, _elements = [child]</span>
<span class="lineno"> 410 </span><span class="spaces"> </span><span class="istickedoff">, _description = &quot;&quot;</span>
<span class="lineno"> 411 </span><span class="spaces"> </span><span class="istickedoff">, _documentLocation = <span class="nottickedoff">&quot;&quot;</span></span>
<span class="lineno"> 412 </span><span class="spaces"> </span><span class="istickedoff">, _documentAspectRatio = PreserveAspectRatio False AlignNone Nothing</span>
<span class="lineno"> 413 </span><span class="spaces"> </span><span class="istickedoff">}</span></span>
</pre>
</body>

View file

@ -45,10 +45,10 @@ span.spaces { background: white }
<span class="lineno"> 26 </span><span class="spaces"> </span><span class="istickedoff">worker (LineMove p) = MoveTo OriginAbsolute [p]</span>
<span class="lineno"> 27 </span><span class="spaces"> </span><span class="istickedoff">-- worker (LineDraw p) = LineTo OriginAbsolute [p]</span>
<span class="lineno"> 28 </span><span class="spaces"> </span><span class="istickedoff">worker (LineBezier [a,b,c]) = CurveTo OriginAbsolute [(a,b,c)]</span>
<span class="lineno"> 29 </span><span class="spaces"> </span><span class="istickedoff">worker (LineBezier [a,b]) = <span class="nottickedoff">QuadraticBezier OriginAbsolute [(a,b)]</span></span>
<span class="lineno"> 29 </span><span class="spaces"> </span><span class="istickedoff">worker (LineBezier [a,b]) = QuadraticBezier OriginAbsolute [(a,b)]</span>
<span class="lineno"> 30 </span><span class="spaces"> </span><span class="istickedoff">worker (LineBezier [a]) = LineTo OriginAbsolute [a]</span>
<span class="lineno"> 31 </span><span class="spaces"> </span><span class="istickedoff">worker LineBezier{} = <span class="nottickedoff">error &quot;Reanimate.Svg.lineToPath: invalid bezier curve&quot;</span></span>
<span class="lineno"> 32 </span><span class="spaces"> </span><span class="istickedoff">worker LineEnd{} = <span class="nottickedoff">EndPath</span></span></span>
<span class="lineno"> 32 </span><span class="spaces"> </span><span class="istickedoff">worker LineEnd{} = EndPath</span></span>
<span class="lineno"> 33 </span>
<span class="lineno"> 34 </span>lineToPoints :: Int -&gt; [LineCommand] -&gt; [RPoint]
<span class="lineno"> 35 </span><span class="decl"><span class="nottickedoff">lineToPoints nPoints cmds =</span>
@ -129,7 +129,7 @@ span.spaces { background: white }
<span class="lineno"> 110 </span><span class="spaces"> </span><span class="istickedoff">MoveTo OriginAbsolute [] -&gt; <span class="nottickedoff">pure []</span></span>
<span class="lineno"> 111 </span><span class="spaces"> </span><span class="istickedoff">MoveTo OriginAbsolute lst -&gt; put (last lst) *&gt; gets (pure.LineMove)</span>
<span class="lineno"> 112 </span><span class="spaces"> </span><span class="istickedoff">MoveTo OriginRelative lst -&gt; <span class="nottickedoff">modify (+ sum lst) *&gt; gets (pure.LineMove)</span></span>
<span class="lineno"> 113 </span><span class="spaces"> </span><span class="istickedoff">LineTo OriginAbsolute lst -&gt; <span class="nottickedoff">forM lst (\to -&gt; put to $&gt; mkStraightLine to)</span></span>
<span class="lineno"> 113 </span><span class="spaces"> </span><span class="istickedoff">LineTo OriginAbsolute lst -&gt; forM lst (\to -&gt; <span class="nottickedoff">put to</span> $&gt; mkStraightLine to)</span>
<span class="lineno"> 114 </span><span class="spaces"> </span><span class="istickedoff">LineTo OriginRelative lst -&gt; <span class="nottickedoff">forM lst (\to -&gt; modify (+to) *&gt; gets mkStraightLine)</span></span>
<span class="lineno"> 115 </span><span class="spaces"> </span><span class="istickedoff">HorizontalTo OriginAbsolute lst -&gt;</span>
<span class="lineno"> 116 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">forM lst $ \x -&gt; modify (_x .~ x) *&gt; gets mkStraightLine</span></span>
@ -152,11 +152,11 @@ span.spaces { background: white }
<span class="lineno"> 133 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">let c1 = maybe (makeAbsolute o from c2) (mirrorPoint from) mbControl</span></span>
<span class="lineno"> 134 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">pure $ LineBezier [c1,makeAbsolute o from c2,makeAbsolute o from to]</span></span>
<span class="lineno"> 135 </span><span class="spaces"> </span><span class="istickedoff">QuadraticBezier OriginAbsolute pairs -&gt;</span>
<span class="lineno"> 136 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">forM pairs $ \(a,b) -&gt; put b $&gt; LineBezier [a,b]</span></span>
<span class="lineno"> 136 </span><span class="spaces"> </span><span class="istickedoff">forM pairs $ \(a,b) -&gt; <span class="nottickedoff">put b</span> $&gt; LineBezier [a,b]</span>
<span class="lineno"> 137 </span><span class="spaces"> </span><span class="istickedoff">QuadraticBezier OriginRelative pairs -&gt;</span>
<span class="lineno"> 138 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">forM pairs $ \(a,b) -&gt; do</span></span>
<span class="lineno"> 139 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">from &lt;- get &lt;* modify (+b)</span></span>
<span class="lineno"> 140 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">pure $ LineBezier $ map (+from) [a,b]</span></span>
<span class="lineno"> 138 </span><span class="spaces"> </span><span class="istickedoff">forM pairs $ \(a,b) -&gt; do</span>
<span class="lineno"> 139 </span><span class="spaces"> </span><span class="istickedoff">from &lt;- get &lt;* <span class="nottickedoff">modify (+b)</span></span>
<span class="lineno"> 140 </span><span class="spaces"> </span><span class="istickedoff">pure $ LineBezier $ map (+from) [a,b]</span>
<span class="lineno"> 141 </span><span class="spaces"> </span><span class="istickedoff">SmoothQuadraticBezierCurveTo o lst -&gt; <span class="nottickedoff">mfix $ \result -&gt; do</span></span>
<span class="lineno"> 142 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">let ctrl = mbPrevControlPt : map cmdToControlPoint result</span></span>
<span class="lineno"> 143 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">forM (zip lst ctrl) $ \(to, mbControl) -&gt; do</span></span>

View file

@ -37,42 +37,42 @@ span.spaces { background: white }
<span class="lineno"> 18 </span>type TMatrix = Matrix Coord
<span class="lineno"> 19 </span>
<span class="lineno"> 20 </span>identity :: TMatrix
<span class="lineno"> 21 </span><span class="decl"><span class="nottickedoff">identity = M.identity 3</span></span>
<span class="lineno"> 21 </span><span class="decl"><span class="istickedoff">identity = M.identity 3</span></span>
<span class="lineno"> 22 </span>
<span class="lineno"> 23 </span>fromList :: [Coord] -&gt; TMatrix
<span class="lineno"> 24 </span><span class="decl"><span class="nottickedoff">fromList [a,b,c,d,e,f] = M.fromList 3 3 [a,c,e,b,d,f,0,0,1]</span>
<span class="lineno"> 25 </span><span class="spaces"></span><span class="nottickedoff">fromList _ = error &quot;Reanimate.Transform.fromList: bad input&quot;</span></span>
<span class="lineno"> 24 </span><span class="decl"><span class="istickedoff">fromList [a,b,c,d,e,f] = M.fromList 3 3 [a,c,e,b,d,f,0,0,1]</span>
<span class="lineno"> 25 </span><span class="spaces"></span><span class="istickedoff">fromList _ = <span class="nottickedoff">error &quot;Reanimate.Transform.fromList: bad input&quot;</span></span></span>
<span class="lineno"> 26 </span>
<span class="lineno"> 27 </span>transformPoint :: TMatrix -&gt; RPoint -&gt; RPoint
<span class="lineno"> 28 </span><span class="decl"><span class="nottickedoff">transformPoint m (V2 x y) = V2 (a*x +c*y + e) (b*x + d*y +f)</span>
<span class="lineno"> 29 </span><span class="spaces"> </span><span class="nottickedoff">where</span>
<span class="lineno"> 30 </span><span class="spaces"> </span><span class="nottickedoff">!a = M.unsafeGet 1 1 m</span>
<span class="lineno"> 31 </span><span class="spaces"> </span><span class="nottickedoff">!c = M.unsafeGet 1 2 m</span>
<span class="lineno"> 32 </span><span class="spaces"> </span><span class="nottickedoff">!e = M.unsafeGet 1 3 m</span>
<span class="lineno"> 33 </span><span class="spaces"> </span><span class="nottickedoff">!b = M.unsafeGet 2 1 m</span>
<span class="lineno"> 34 </span><span class="spaces"> </span><span class="nottickedoff">!d = M.unsafeGet 2 2 m</span>
<span class="lineno"> 35 </span><span class="spaces"> </span><span class="nottickedoff">!f = M.unsafeGet 2 3 m</span></span>
<span class="lineno"> 28 </span><span class="decl"><span class="istickedoff">transformPoint m (V2 x y) = V2 (a*x +c*y + e) (b*x + d*y +f)</span>
<span class="lineno"> 29 </span><span class="spaces"> </span><span class="istickedoff">where</span>
<span class="lineno"> 30 </span><span class="spaces"> </span><span class="istickedoff">!a = M.unsafeGet 1 1 m</span>
<span class="lineno"> 31 </span><span class="spaces"> </span><span class="istickedoff">!c = M.unsafeGet 1 2 m</span>
<span class="lineno"> 32 </span><span class="spaces"> </span><span class="istickedoff">!e = M.unsafeGet 1 3 m</span>
<span class="lineno"> 33 </span><span class="spaces"> </span><span class="istickedoff">!b = M.unsafeGet 2 1 m</span>
<span class="lineno"> 34 </span><span class="spaces"> </span><span class="istickedoff">!d = M.unsafeGet 2 2 m</span>
<span class="lineno"> 35 </span><span class="spaces"> </span><span class="istickedoff">!f = M.unsafeGet 2 3 m</span></span>
<span class="lineno"> 36 </span> -- (a:c:e:b:d:f:_) = M.toList m
<span class="lineno"> 37 </span>
<span class="lineno"> 38 </span>mkMatrix :: Maybe [Transformation] -&gt; TMatrix
<span class="lineno"> 39 </span><span class="decl"><span class="nottickedoff">mkMatrix Nothing = identity</span>
<span class="lineno"> 40 </span><span class="spaces"></span><span class="nottickedoff">mkMatrix (Just ts) = foldl' (*) identity (map transformationMatrix ts)</span></span>
<span class="lineno"> 39 </span><span class="decl"><span class="istickedoff">mkMatrix Nothing = identity</span>
<span class="lineno"> 40 </span><span class="spaces"></span><span class="istickedoff">mkMatrix (Just ts) = foldl' (*) identity (map transformationMatrix ts)</span></span>
<span class="lineno"> 41 </span>
<span class="lineno"> 42 </span>transformationMatrix :: Transformation -&gt; TMatrix
<span class="lineno"> 43 </span><span class="decl"><span class="nottickedoff">transformationMatrix transformation =</span>
<span class="lineno"> 44 </span><span class="spaces"> </span><span class="nottickedoff">case transformation of</span>
<span class="lineno"> 45 </span><span class="spaces"> </span><span class="nottickedoff">TransformMatrix a b c d e f -&gt; fromList [a,b,c,d,e,f]</span>
<span class="lineno"> 46 </span><span class="spaces"> </span><span class="nottickedoff">Translate x y -&gt; translate x y</span>
<span class="lineno"> 47 </span><span class="spaces"> </span><span class="nottickedoff">Scale sx mbSy -&gt; fromList [sx,0,0,fromMaybe sx mbSy,0,0]</span>
<span class="lineno"> 48 </span><span class="spaces"> </span><span class="nottickedoff">Rotate a Nothing -&gt; rotate a</span>
<span class="lineno"> 49 </span><span class="spaces"> </span><span class="nottickedoff">Rotate a (Just (x,y)) -&gt; translate x y * rotate a * translate (-x) (-y)</span>
<span class="lineno"> 50 </span><span class="spaces"> </span><span class="nottickedoff">SkewX a -&gt; fromList [1,0,tan (a*pi/180),1,0,0]</span>
<span class="lineno"> 51 </span><span class="spaces"> </span><span class="nottickedoff">SkewY a -&gt; fromList [1,tan (a*pi/180),0,1,0,0]</span>
<span class="lineno"> 52 </span><span class="spaces"> </span><span class="nottickedoff">TransformUnknown -&gt; identity</span>
<span class="lineno"> 53 </span><span class="spaces"> </span><span class="nottickedoff">where</span>
<span class="lineno"> 54 </span><span class="spaces"> </span><span class="nottickedoff">translate x y = fromList [1,0,0,1,x,y]</span>
<span class="lineno"> 55 </span><span class="spaces"> </span><span class="nottickedoff">rotate a = fromList [cos r,sin r,-sin r,cos r,0,0]</span>
<span class="lineno"> 56 </span><span class="spaces"> </span><span class="nottickedoff">where r = a * pi / 180</span></span>
<span class="lineno"> 43 </span><span class="decl"><span class="istickedoff">transformationMatrix transformation =</span>
<span class="lineno"> 44 </span><span class="spaces"> </span><span class="istickedoff">case transformation of</span>
<span class="lineno"> 45 </span><span class="spaces"> </span><span class="istickedoff">TransformMatrix a b c d e f -&gt; <span class="nottickedoff">fromList [a,b,c,d,e,f]</span></span>
<span class="lineno"> 46 </span><span class="spaces"> </span><span class="istickedoff">Translate x y -&gt; <span class="nottickedoff">translate x y</span></span>
<span class="lineno"> 47 </span><span class="spaces"> </span><span class="istickedoff">Scale sx mbSy -&gt; fromList [sx,0,0,fromMaybe <span class="nottickedoff">sx</span> mbSy,0,0]</span>
<span class="lineno"> 48 </span><span class="spaces"> </span><span class="istickedoff">Rotate a Nothing -&gt; <span class="nottickedoff">rotate a</span></span>
<span class="lineno"> 49 </span><span class="spaces"> </span><span class="istickedoff">Rotate a (Just (x,y)) -&gt; <span class="nottickedoff">translate x y * rotate a * translate (-x) (-y)</span></span>
<span class="lineno"> 50 </span><span class="spaces"> </span><span class="istickedoff">SkewX a -&gt; <span class="nottickedoff">fromList [1,0,tan (a*pi/180),1,0,0]</span></span>
<span class="lineno"> 51 </span><span class="spaces"> </span><span class="istickedoff">SkewY a -&gt; <span class="nottickedoff">fromList [1,tan (a*pi/180),0,1,0,0]</span></span>
<span class="lineno"> 52 </span><span class="spaces"> </span><span class="istickedoff">TransformUnknown -&gt; <span class="nottickedoff">identity</span></span>
<span class="lineno"> 53 </span><span class="spaces"> </span><span class="istickedoff">where</span>
<span class="lineno"> 54 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">translate x y = fromList [1,0,0,1,x,y]</span></span>
<span class="lineno"> 55 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">rotate a = fromList [cos r,sin r,-sin r,cos r,0,0]</span></span>
<span class="lineno"> 56 </span><span class="spaces"> </span><span class="istickedoff"><span class="nottickedoff">where r = a * pi / 180</span></span></span>
<span class="lineno"> 57 </span>
<span class="lineno"> 58 </span>toTransformation :: TMatrix -&gt; Transformation
<span class="lineno"> 59 </span><span class="decl"><span class="nottickedoff">toTransformation m = TransformMatrix a b c d e f</span>