mirror of
https://github.com/reanimate/reanimate.git
synced 2026-09-15 10:02:45 +00:00
Deploying to gh-pages from @ 298f931b28d494d12cff0af7768d559879c7c3ed 🚀
This commit is contained in:
parent
819a2d1563
commit
cc0c9094cc
6 changed files with 808 additions and 728 deletions
12
haddock.txt
12
haddock.txt
|
|
@ -1,7 +1,10 @@
|
|||
100% ( 22 / 22) in 'Reanimate.Effect'
|
||||
92% ( 12 / 13) in 'Reanimate.ColorMap'
|
||||
100% ( 17 / 17) in 'Reanimate.Parameters'
|
||||
100% ( 13 / 13) in 'Reanimate.ColorMap'
|
||||
100% ( 12 / 12) in 'Reanimate.ColorComponents'
|
||||
100% ( 9 / 9) in 'Reanimate.Constants'
|
||||
94% (145 /155) in 'Reanimate'
|
||||
88% ( 7 / 8) in 'Reanimate.Transition'
|
||||
86% (134 /155) in 'Reanimate'
|
||||
85% ( 47 / 55) in 'Reanimate.Svg.Constructors'
|
||||
77% ( 33 / 43) in 'Reanimate.Animation'
|
||||
73% ( 8 / 11) in 'Reanimate.Ease'
|
||||
|
|
@ -11,9 +14,9 @@
|
|||
50% ( 1 / 2) in 'Reanimate.Builtin.CirclePlot'
|
||||
44% ( 4 / 9) in 'Reanimate.LaTeX'
|
||||
42% ( 17 / 40) in 'Reanimate.GeoProjection'
|
||||
42% ( 5 / 12) in 'Reanimate.ColorComponents'
|
||||
41% ( 45 /111) in 'Reanimate.Scene'
|
||||
38% ( 3 / 8) in 'Reanimate.Builtin.Documentation'
|
||||
33% ( 4 / 12) in 'Reanimate.Render'
|
||||
28% ( 5 / 18) in 'Reanimate.Svg'
|
||||
25% ( 1 / 4) in 'Reanimate.Builtin.Slide'
|
||||
17% ( 1 / 6) in 'Reanimate.Svg.BoundingBox'
|
||||
|
|
@ -26,16 +29,13 @@
|
|||
0% ( 0 / 37) in 'Reanimate.Internal.CubicBezier'
|
||||
0% ( 0 / 20) in 'Reanimate.Math.Compatible'
|
||||
0% ( 0 / 19) in 'Reanimate.Morph.Rigid'
|
||||
0% ( 0 / 17) in 'Reanimate.Parameters'
|
||||
0% ( 0 / 13) in 'Reanimate.Morph.LeastWork'
|
||||
0% ( 0 / 13) in 'Reanimate.Morph.Common'
|
||||
0% ( 0 / 12) in 'Reanimate.Render'
|
||||
0% ( 0 / 10) in 'Reanimate.Math.Render'
|
||||
0% ( 0 / 10) in 'Reanimate.ColorSpace'
|
||||
0% ( 0 / 10) in 'Reanimate.Builtin.TernaryPlot'
|
||||
0% ( 0 / 9) in 'Reanimate.Povray'
|
||||
0% ( 0 / 9) in 'Reanimate.Math.Smooth'
|
||||
0% ( 0 / 9) in 'Reanimate.Constants'
|
||||
0% ( 0 / 8) in 'Reanimate.Misc'
|
||||
0% ( 0 / 8) in 'Reanimate.Math.Balloon'
|
||||
0% ( 0 / 8) in 'Reanimate.Chiphunk'
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
{ "schemaVersion": 1, "label": "api docs", "message": "30%", "color": "success" }
|
||||
{ "schemaVersion": 1, "label": "api docs", "message": "34%", "color": "success" }
|
||||
|
|
|
|||
|
|
@ -18,104 +18,134 @@ span.spaces { background: white }
|
|||
</pre>
|
||||
<pre>
|
||||
<span class="lineno"> 1 </span>{-# LANGUAGE RecordWildCards #-}
|
||||
<span class="lineno"> 2 </span>module Reanimate.ColorComponents where
|
||||
<span class="lineno"> 3 </span>
|
||||
<span class="lineno"> 4 </span>import Codec.Picture
|
||||
<span class="lineno"> 5 </span>import Codec.Picture.Types
|
||||
<span class="lineno"> 6 </span>import Data.Colour
|
||||
<span class="lineno"> 7 </span>import Data.Colour.CIE
|
||||
<span class="lineno"> 8 </span>import Data.Colour.CIE.Illuminant (d65)
|
||||
<span class="lineno"> 9 </span>import Data.Colour.RGBSpace
|
||||
<span class="lineno"> 10 </span>import Data.Colour.RGBSpace.HSV
|
||||
<span class="lineno"> 11 </span>import Data.Colour.SRGB
|
||||
<span class="lineno"> 12 </span>import Data.Fixed
|
||||
<span class="lineno"> 13 </span>import Reanimate.Ease
|
||||
<span class="lineno"> 14 </span>
|
||||
<span class="lineno"> 15 </span>data ColorComponents = ColorComponents
|
||||
<span class="lineno"> 16 </span> { <span class="nottickedoff"><span class="decl"><span class="nottickedoff">colorUnpack</span></span></span> :: Colour Double -> (Double, Double, Double)
|
||||
<span class="lineno"> 17 </span> , <span class="nottickedoff"><span class="decl"><span class="nottickedoff">colorPack</span></span></span> :: Double -> Double -> Double -> Colour Double }
|
||||
<span class="lineno"> 18 </span>
|
||||
<span class="lineno"> 19 </span>-- | > interpolate rgbComponents yellow blue
|
||||
<span class="lineno"> 20 </span>--
|
||||
<span class="lineno"> 21 </span>-- <<docs/gifs/doc_rgbComponents.gif>>
|
||||
<span class="lineno"> 22 </span>rgbComponents :: ColorComponents
|
||||
<span class="lineno"> 23 </span><span class="decl"><span class="istickedoff">rgbComponents = ColorComponents rgbUnpack sRGB</span>
|
||||
<span class="lineno"> 24 </span><span class="spaces"> </span><span class="istickedoff">where</span>
|
||||
<span class="lineno"> 25 </span><span class="spaces"> </span><span class="istickedoff">rgbUnpack :: Colour Double -> (Double, Double, Double)</span>
|
||||
<span class="lineno"> 26 </span><span class="spaces"> </span><span class="istickedoff">rgbUnpack c =</span>
|
||||
<span class="lineno"> 27 </span><span class="spaces"> </span><span class="istickedoff">case toSRGB c of</span>
|
||||
<span class="lineno"> 28 </span><span class="spaces"> </span><span class="istickedoff">RGB r g b -> (r,g,b)</span></span>
|
||||
<span class="lineno"> 29 </span>
|
||||
<span class="lineno"> 30 </span>-- | > interpolate hsvComponents yellow blue
|
||||
<span class="lineno"> 31 </span>--
|
||||
<span class="lineno"> 32 </span>-- <<docs/gifs/doc_hsvComponents.gif>>
|
||||
<span class="lineno"> 33 </span>hsvComponents :: ColorComponents
|
||||
<span class="lineno"> 34 </span><span class="decl"><span class="istickedoff">hsvComponents = ColorComponents unpack pack</span>
|
||||
<span class="lineno"> 35 </span><span class="spaces"> </span><span class="istickedoff">where</span>
|
||||
<span class="lineno"> 36 </span><span class="spaces"> </span><span class="istickedoff">unpack = hsvView.toSRGB</span>
|
||||
<span class="lineno"> 37 </span><span class="spaces"> </span><span class="istickedoff">pack a b c = uncurryRGB sRGB $ hsv a b c</span></span>
|
||||
<span class="lineno"> 38 </span>
|
||||
<span class="lineno"> 39 </span>-- | > interpolate labComponents yellow blue
|
||||
<span class="lineno"> 40 </span>--
|
||||
<span class="lineno"> 41 </span>-- <<docs/gifs/doc_labComponents.gif>>
|
||||
<span class="lineno"> 42 </span>labComponents :: ColorComponents
|
||||
<span class="lineno"> 43 </span><span class="decl"><span class="istickedoff">labComponents = ColorComponents unpack pack</span>
|
||||
<span class="lineno"> 44 </span><span class="spaces"> </span><span class="istickedoff">where</span>
|
||||
<span class="lineno"> 45 </span><span class="spaces"> </span><span class="istickedoff">unpack = cieLABView d65</span>
|
||||
<span class="lineno"> 46 </span><span class="spaces"> </span><span class="istickedoff">pack = cieLAB d65</span></span>
|
||||
<span class="lineno"> 47 </span>
|
||||
<span class="lineno"> 48 </span>-- | > interpolate xyzComponents yellow blue
|
||||
<span class="lineno"> 49 </span>--
|
||||
<span class="lineno"> 50 </span>-- <<docs/gifs/doc_xyzComponents.gif>>
|
||||
<span class="lineno"> 51 </span>xyzComponents :: ColorComponents
|
||||
<span class="lineno"> 52 </span><span class="decl"><span class="istickedoff">xyzComponents = ColorComponents cieXYZView cieXYZ</span></span>
|
||||
<span class="lineno"> 53 </span>
|
||||
<span class="lineno"> 54 </span>-- | > interpolate lchComponents yellow blue
|
||||
<span class="lineno"> 55 </span>--
|
||||
<span class="lineno"> 56 </span>-- <<docs/gifs/doc_lchComponents.gif>>
|
||||
<span class="lineno"> 57 </span>lchComponents :: ColorComponents
|
||||
<span class="lineno"> 58 </span><span class="decl"><span class="istickedoff">lchComponents = ColorComponents unpack pack</span>
|
||||
<span class="lineno"> 59 </span><span class="spaces"> </span><span class="istickedoff">where</span>
|
||||
<span class="lineno"> 60 </span><span class="spaces"> </span><span class="istickedoff">toDeg,toRad :: Double -> Double</span>
|
||||
<span class="lineno"> 61 </span><span class="spaces"> </span><span class="istickedoff">toRad deg = deg/180 * pi</span>
|
||||
<span class="lineno"> 62 </span><span class="spaces"> </span><span class="istickedoff">toDeg rad = rad/pi * 180</span>
|
||||
<span class="lineno"> 63 </span><span class="spaces"> </span><span class="istickedoff">unpack :: Colour Double -> (Double, Double, Double)</span>
|
||||
<span class="lineno"> 64 </span><span class="spaces"> </span><span class="istickedoff">unpack color =</span>
|
||||
<span class="lineno"> 65 </span><span class="spaces"> </span><span class="istickedoff">let (l,a,b) = cieLABView d65 color</span>
|
||||
<span class="lineno"> 66 </span><span class="spaces"> </span><span class="istickedoff">c = sqrt (a*a + b*b)</span>
|
||||
<span class="lineno"> 67 </span><span class="spaces"> </span><span class="istickedoff">h :: Double</span>
|
||||
<span class="lineno"> 68 </span><span class="spaces"> </span><span class="istickedoff">h = (toDeg(atan2 b a) + 360) `mod'` 360</span>
|
||||
<span class="lineno"> 69 </span><span class="spaces"> </span><span class="istickedoff">isZero = round (c*10000) == (0::Integer)</span>
|
||||
<span class="lineno"> 70 </span><span class="spaces"> </span><span class="istickedoff">in (l, c, if <span class="tickonlyfalse">isZero</span> then <span class="nottickedoff">0/0</span> else h)</span>
|
||||
<span class="lineno"> 71 </span><span class="spaces"> </span><span class="istickedoff">pack l c h =</span>
|
||||
<span class="lineno"> 72 </span><span class="spaces"> </span><span class="istickedoff">cieLAB d65 l (cos (toRad h) * c) (sin (toRad h) * c)</span></span>
|
||||
<span class="lineno"> 73 </span>
|
||||
<span class="lineno"> 74 </span>interpolate :: ColorComponents -> Colour Double -> Colour Double -> (Double -> Colour Double)
|
||||
<span class="lineno"> 75 </span><span class="decl"><span class="istickedoff">interpolate ColorComponents{..} from to = \d -></span>
|
||||
<span class="lineno"> 76 </span><span class="spaces"> </span><span class="istickedoff">colorPack (a1 + (a2-a1)*d) (b1 + (b2-b1)*d) (c1 + (c2-c1)*d)</span>
|
||||
<span class="lineno"> 77 </span><span class="spaces"> </span><span class="istickedoff">where</span>
|
||||
<span class="lineno"> 78 </span><span class="spaces"> </span><span class="istickedoff">(a1,b1,c1) = colorUnpack from</span>
|
||||
<span class="lineno"> 79 </span><span class="spaces"> </span><span class="istickedoff">(a2,b2,c2) = colorUnpack to</span></span>
|
||||
<span class="lineno"> 80 </span>
|
||||
<span class="lineno"> 81 </span>interpolateRGB8 :: ColorComponents -> PixelRGB8 -> PixelRGB8 -> (Double -> PixelRGB8)
|
||||
<span class="lineno"> 82 </span><span class="decl"><span class="istickedoff">interpolateRGB8 comps from to = toRGB8 . interpolate comps (fromRGB8 from) (fromRGB8 to)</span></span>
|
||||
<span class="lineno"> 83 </span>
|
||||
<span class="lineno"> 84 </span>interpolateRGBA8 :: ColorComponents -> PixelRGBA8 -> PixelRGBA8 -> (Double -> PixelRGBA8)
|
||||
<span class="lineno"> 85 </span><span class="decl"><span class="nottickedoff">interpolateRGBA8 comps from to = \t -></span>
|
||||
<span class="lineno"> 86 </span><span class="spaces"> </span><span class="nottickedoff">case interp t of</span>
|
||||
<span class="lineno"> 87 </span><span class="spaces"> </span><span class="nottickedoff">PixelRGB8 r g b -></span>
|
||||
<span class="lineno"> 88 </span><span class="spaces"> </span><span class="nottickedoff">let alpha = fromToS (fromIntegral $ pixelOpacity from) (fromIntegral $ pixelOpacity to) t</span>
|
||||
<span class="lineno"> 89 </span><span class="spaces"> </span><span class="nottickedoff">in PixelRGBA8 r g b (round alpha)</span>
|
||||
<span class="lineno"> 90 </span><span class="spaces"> </span><span class="nottickedoff">where</span>
|
||||
<span class="lineno"> 91 </span><span class="spaces"> </span><span class="nottickedoff">interp = interpolateRGB8 comps (dropTransparency from) (dropTransparency to)</span></span>
|
||||
<span class="lineno"> 92 </span>
|
||||
<span class="lineno"> 93 </span>toRGB8 :: Colour Double -> PixelRGB8
|
||||
<span class="lineno"> 94 </span><span class="decl"><span class="istickedoff">toRGB8 c = PixelRGB8 r g b</span>
|
||||
<span class="lineno"> 95 </span><span class="spaces"> </span><span class="istickedoff">where</span>
|
||||
<span class="lineno"> 96 </span><span class="spaces"> </span><span class="istickedoff">RGB r g b = toSRGBBounded c</span></span>
|
||||
<span class="lineno"> 97 </span>
|
||||
<span class="lineno"> 98 </span>fromRGB8 :: PixelRGB8 -> Colour Double
|
||||
<span class="lineno"> 99 </span><span class="decl"><span class="istickedoff">fromRGB8 (PixelRGB8 r g b) = sRGB24 r g b</span></span>
|
||||
<span class="lineno"> 2 </span>{- |
|
||||
<span class="lineno"> 3 </span> Colors are three dimensional and can be projected into many color spaces
|
||||
<span class="lineno"> 4 </span> with different properties.
|
||||
<span class="lineno"> 5 </span>
|
||||
<span class="lineno"> 6 </span> Interpolating directly in the RGB color space is unintuitive and rarely useful.
|
||||
<span class="lineno"> 7 </span> If you want to transition through color, you most likely want either the XYZ space
|
||||
<span class="lineno"> 8 </span> (for physically accurate color transitions) or the LAB space (for esthetically
|
||||
<span class="lineno"> 9 </span> pleasing colors).
|
||||
<span class="lineno"> 10 </span>-}
|
||||
<span class="lineno"> 11 </span>module Reanimate.ColorComponents
|
||||
<span class="lineno"> 12 </span> ( ColorComponents(..)
|
||||
<span class="lineno"> 13 </span> , rgbComponents
|
||||
<span class="lineno"> 14 </span> , hsvComponents
|
||||
<span class="lineno"> 15 </span> , labComponents
|
||||
<span class="lineno"> 16 </span> , xyzComponents
|
||||
<span class="lineno"> 17 </span> , lchComponents
|
||||
<span class="lineno"> 18 </span> , interpolate
|
||||
<span class="lineno"> 19 </span> , interpolateRGB8
|
||||
<span class="lineno"> 20 </span> , interpolateRGBA8
|
||||
<span class="lineno"> 21 </span> , toRGB8
|
||||
<span class="lineno"> 22 </span> , fromRGB8
|
||||
<span class="lineno"> 23 </span> ) where
|
||||
<span class="lineno"> 24 </span>
|
||||
<span class="lineno"> 25 </span>import Codec.Picture
|
||||
<span class="lineno"> 26 </span>import Codec.Picture.Types
|
||||
<span class="lineno"> 27 </span>import Data.Colour
|
||||
<span class="lineno"> 28 </span>import Data.Colour.CIE
|
||||
<span class="lineno"> 29 </span>import Data.Colour.CIE.Illuminant (d65)
|
||||
<span class="lineno"> 30 </span>import Data.Colour.RGBSpace
|
||||
<span class="lineno"> 31 </span>import Data.Colour.RGBSpace.HSV
|
||||
<span class="lineno"> 32 </span>import Data.Colour.SRGB
|
||||
<span class="lineno"> 33 </span>import Data.Fixed
|
||||
<span class="lineno"> 34 </span>import Reanimate.Ease
|
||||
<span class="lineno"> 35 </span>
|
||||
<span class="lineno"> 36 </span>-- | Constructor and destructor for color's three components.
|
||||
<span class="lineno"> 37 </span>data ColorComponents = ColorComponents
|
||||
<span class="lineno"> 38 </span> { <span class="nottickedoff"><span class="decl"><span class="nottickedoff">colorUnpack</span></span></span> :: Colour Double -> (Double, Double, Double)
|
||||
<span class="lineno"> 39 </span> -- ^ Unpack a color into its three components.
|
||||
<span class="lineno"> 40 </span> , <span class="nottickedoff"><span class="decl"><span class="nottickedoff">colorPack</span></span></span> :: Double -> Double -> Double -> Colour Double
|
||||
<span class="lineno"> 41 </span> -- ^ Restore a color from three coordinates.
|
||||
<span class="lineno"> 42 </span> }
|
||||
<span class="lineno"> 43 </span>
|
||||
<span class="lineno"> 44 </span>-- | > interpolate rgbComponents yellow blue
|
||||
<span class="lineno"> 45 </span>--
|
||||
<span class="lineno"> 46 </span>-- <<docs/gifs/doc_rgbComponents.gif>>
|
||||
<span class="lineno"> 47 </span>rgbComponents :: ColorComponents
|
||||
<span class="lineno"> 48 </span><span class="decl"><span class="istickedoff">rgbComponents = ColorComponents rgbUnpack sRGB</span>
|
||||
<span class="lineno"> 49 </span><span class="spaces"> </span><span class="istickedoff">where</span>
|
||||
<span class="lineno"> 50 </span><span class="spaces"> </span><span class="istickedoff">rgbUnpack :: Colour Double -> (Double, Double, Double)</span>
|
||||
<span class="lineno"> 51 </span><span class="spaces"> </span><span class="istickedoff">rgbUnpack c =</span>
|
||||
<span class="lineno"> 52 </span><span class="spaces"> </span><span class="istickedoff">case toSRGB c of</span>
|
||||
<span class="lineno"> 53 </span><span class="spaces"> </span><span class="istickedoff">RGB r g b -> (r,g,b)</span></span>
|
||||
<span class="lineno"> 54 </span>
|
||||
<span class="lineno"> 55 </span>-- | > interpolate hsvComponents yellow blue
|
||||
<span class="lineno"> 56 </span>--
|
||||
<span class="lineno"> 57 </span>-- <<docs/gifs/doc_hsvComponents.gif>>
|
||||
<span class="lineno"> 58 </span>hsvComponents :: ColorComponents
|
||||
<span class="lineno"> 59 </span><span class="decl"><span class="istickedoff">hsvComponents = ColorComponents unpack pack</span>
|
||||
<span class="lineno"> 60 </span><span class="spaces"> </span><span class="istickedoff">where</span>
|
||||
<span class="lineno"> 61 </span><span class="spaces"> </span><span class="istickedoff">unpack = hsvView.toSRGB</span>
|
||||
<span class="lineno"> 62 </span><span class="spaces"> </span><span class="istickedoff">pack a b c = uncurryRGB sRGB $ hsv a b c</span></span>
|
||||
<span class="lineno"> 63 </span>
|
||||
<span class="lineno"> 64 </span>-- | > interpolate labComponents yellow blue
|
||||
<span class="lineno"> 65 </span>--
|
||||
<span class="lineno"> 66 </span>-- <<docs/gifs/doc_labComponents.gif>>
|
||||
<span class="lineno"> 67 </span>labComponents :: ColorComponents
|
||||
<span class="lineno"> 68 </span><span class="decl"><span class="istickedoff">labComponents = ColorComponents unpack pack</span>
|
||||
<span class="lineno"> 69 </span><span class="spaces"> </span><span class="istickedoff">where</span>
|
||||
<span class="lineno"> 70 </span><span class="spaces"> </span><span class="istickedoff">unpack = cieLABView d65</span>
|
||||
<span class="lineno"> 71 </span><span class="spaces"> </span><span class="istickedoff">pack = cieLAB d65</span></span>
|
||||
<span class="lineno"> 72 </span>
|
||||
<span class="lineno"> 73 </span>-- | > interpolate xyzComponents yellow blue
|
||||
<span class="lineno"> 74 </span>--
|
||||
<span class="lineno"> 75 </span>-- <<docs/gifs/doc_xyzComponents.gif>>
|
||||
<span class="lineno"> 76 </span>xyzComponents :: ColorComponents
|
||||
<span class="lineno"> 77 </span><span class="decl"><span class="istickedoff">xyzComponents = ColorComponents cieXYZView cieXYZ</span></span>
|
||||
<span class="lineno"> 78 </span>
|
||||
<span class="lineno"> 79 </span>-- | > interpolate lchComponents yellow blue
|
||||
<span class="lineno"> 80 </span>--
|
||||
<span class="lineno"> 81 </span>-- <<docs/gifs/doc_lchComponents.gif>>
|
||||
<span class="lineno"> 82 </span>lchComponents :: ColorComponents
|
||||
<span class="lineno"> 83 </span><span class="decl"><span class="istickedoff">lchComponents = ColorComponents unpack pack</span>
|
||||
<span class="lineno"> 84 </span><span class="spaces"> </span><span class="istickedoff">where</span>
|
||||
<span class="lineno"> 85 </span><span class="spaces"> </span><span class="istickedoff">toDeg,toRad :: Double -> Double</span>
|
||||
<span class="lineno"> 86 </span><span class="spaces"> </span><span class="istickedoff">toRad deg = deg/180 * pi</span>
|
||||
<span class="lineno"> 87 </span><span class="spaces"> </span><span class="istickedoff">toDeg rad = rad/pi * 180</span>
|
||||
<span class="lineno"> 88 </span><span class="spaces"> </span><span class="istickedoff">unpack :: Colour Double -> (Double, Double, Double)</span>
|
||||
<span class="lineno"> 89 </span><span class="spaces"> </span><span class="istickedoff">unpack color =</span>
|
||||
<span class="lineno"> 90 </span><span class="spaces"> </span><span class="istickedoff">let (l,a,b) = cieLABView d65 color</span>
|
||||
<span class="lineno"> 91 </span><span class="spaces"> </span><span class="istickedoff">c = sqrt (a*a + b*b)</span>
|
||||
<span class="lineno"> 92 </span><span class="spaces"> </span><span class="istickedoff">h :: Double</span>
|
||||
<span class="lineno"> 93 </span><span class="spaces"> </span><span class="istickedoff">h = (toDeg(atan2 b a) + 360) `mod'` 360</span>
|
||||
<span class="lineno"> 94 </span><span class="spaces"> </span><span class="istickedoff">isZero = round (c*10000) == (0::Integer)</span>
|
||||
<span class="lineno"> 95 </span><span class="spaces"> </span><span class="istickedoff">in (l, c, if <span class="tickonlyfalse">isZero</span> then <span class="nottickedoff">0/0</span> else h)</span>
|
||||
<span class="lineno"> 96 </span><span class="spaces"> </span><span class="istickedoff">pack l c h =</span>
|
||||
<span class="lineno"> 97 </span><span class="spaces"> </span><span class="istickedoff">cieLAB d65 l (cos (toRad h) * c) (sin (toRad h) * c)</span></span>
|
||||
<span class="lineno"> 98 </span>
|
||||
<span class="lineno"> 99 </span>-- | Smoothly interpolate between two colors using the given color components.
|
||||
<span class="lineno"> 100 </span>interpolate :: ColorComponents -> Colour Double -> Colour Double -> (Double -> Colour Double)
|
||||
<span class="lineno"> 101 </span><span class="decl"><span class="istickedoff">interpolate ColorComponents{..} from to = \d -></span>
|
||||
<span class="lineno"> 102 </span><span class="spaces"> </span><span class="istickedoff">colorPack (a1 + (a2-a1)*d) (b1 + (b2-b1)*d) (c1 + (c2-c1)*d)</span>
|
||||
<span class="lineno"> 103 </span><span class="spaces"> </span><span class="istickedoff">where</span>
|
||||
<span class="lineno"> 104 </span><span class="spaces"> </span><span class="istickedoff">(a1,b1,c1) = colorUnpack from</span>
|
||||
<span class="lineno"> 105 </span><span class="spaces"> </span><span class="istickedoff">(a2,b2,c2) = colorUnpack to</span></span>
|
||||
<span class="lineno"> 106 </span>
|
||||
<span class="lineno"> 107 </span>-- | Convenience interpolation function for RGB8 values.
|
||||
<span class="lineno"> 108 </span>interpolateRGB8 :: ColorComponents -> PixelRGB8 -> PixelRGB8 -> (Double -> PixelRGB8)
|
||||
<span class="lineno"> 109 </span><span class="decl"><span class="istickedoff">interpolateRGB8 comps from to = toRGB8 . interpolate comps (fromRGB8 from) (fromRGB8 to)</span></span>
|
||||
<span class="lineno"> 110 </span>
|
||||
<span class="lineno"> 111 </span>-- | Convenience interpolation function for RGBA8 values.
|
||||
<span class="lineno"> 112 </span>interpolateRGBA8 :: ColorComponents -> PixelRGBA8 -> PixelRGBA8 -> (Double -> PixelRGBA8)
|
||||
<span class="lineno"> 113 </span><span class="decl"><span class="nottickedoff">interpolateRGBA8 comps from to = \t -></span>
|
||||
<span class="lineno"> 114 </span><span class="spaces"> </span><span class="nottickedoff">case interp t of</span>
|
||||
<span class="lineno"> 115 </span><span class="spaces"> </span><span class="nottickedoff">PixelRGB8 r g b -></span>
|
||||
<span class="lineno"> 116 </span><span class="spaces"> </span><span class="nottickedoff">let alpha = fromToS (fromIntegral $ pixelOpacity from) (fromIntegral $ pixelOpacity to) t</span>
|
||||
<span class="lineno"> 117 </span><span class="spaces"> </span><span class="nottickedoff">in PixelRGBA8 r g b (round alpha)</span>
|
||||
<span class="lineno"> 118 </span><span class="spaces"> </span><span class="nottickedoff">where</span>
|
||||
<span class="lineno"> 119 </span><span class="spaces"> </span><span class="nottickedoff">interp = interpolateRGB8 comps (dropTransparency from) (dropTransparency to)</span></span>
|
||||
<span class="lineno"> 120 </span>
|
||||
<span class="lineno"> 121 </span>-- | Convenience function for expressing a color as an RGB8 value.
|
||||
<span class="lineno"> 122 </span>toRGB8 :: Colour Double -> PixelRGB8
|
||||
<span class="lineno"> 123 </span><span class="decl"><span class="istickedoff">toRGB8 c = PixelRGB8 r g b</span>
|
||||
<span class="lineno"> 124 </span><span class="spaces"> </span><span class="istickedoff">where</span>
|
||||
<span class="lineno"> 125 </span><span class="spaces"> </span><span class="istickedoff">RGB r g b = toSRGBBounded c</span></span>
|
||||
<span class="lineno"> 126 </span>
|
||||
<span class="lineno"> 127 </span>-- | Convenience function for expressing an RGB8 value as a color.
|
||||
<span class="lineno"> 128 </span>fromRGB8 :: PixelRGB8 -> Colour Double
|
||||
<span class="lineno"> 129 </span><span class="decl"><span class="istickedoff">fromRGB8 (PixelRGB8 r g b) = sRGB24 r g b</span></span>
|
||||
|
||||
</pre>
|
||||
</body>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -17,34 +17,57 @@ span.spaces { background: white }
|
|||
<span class="decl"><span class="nottickedoff">never executed</span> <span class="tickonlytrue">always true</span> <span class="tickonlyfalse">always false</span></span>
|
||||
</pre>
|
||||
<pre>
|
||||
<span class="lineno"> 1 </span>module Reanimate.Constants
|
||||
<span class="lineno"> 2 </span> ( screenWidth
|
||||
<span class="lineno"> 3 </span> , screenHeight
|
||||
<span class="lineno"> 4 </span> , screenTop
|
||||
<span class="lineno"> 5 </span> , screenBottom
|
||||
<span class="lineno"> 6 </span> , screenLeft
|
||||
<span class="lineno"> 7 </span> , screenRight
|
||||
<span class="lineno"> 8 </span> , defaultDPI
|
||||
<span class="lineno"> 9 </span> , defaultStrokeWidth
|
||||
<span class="lineno"> 10 </span> ) where
|
||||
<span class="lineno"> 11 </span>
|
||||
<span class="lineno"> 12 </span>import Graphics.SvgTree
|
||||
<span class="lineno"> 13 </span>
|
||||
<span class="lineno"> 14 </span>screenWidth, screenHeight, screenTop :: Fractional a => a
|
||||
<span class="lineno"> 15 </span>screenBottom, screenLeft, screenRight :: Fractional a => a
|
||||
<span class="lineno"> 1 </span>{- |
|
||||
<span class="lineno"> 2 </span> Reanimate configures a consistent, default canvas. The values of this default
|
||||
<span class="lineno"> 3 </span> can be observed via the constants in this module. Keep in mind, these values
|
||||
<span class="lineno"> 4 </span> describe the /default/ canvas and will not apply to custom viewports.
|
||||
<span class="lineno"> 5 </span>-}
|
||||
<span class="lineno"> 6 </span>module Reanimate.Constants
|
||||
<span class="lineno"> 7 </span> ( screenWidth
|
||||
<span class="lineno"> 8 </span> , screenHeight
|
||||
<span class="lineno"> 9 </span> , screenTop
|
||||
<span class="lineno"> 10 </span> , screenBottom
|
||||
<span class="lineno"> 11 </span> , screenLeft
|
||||
<span class="lineno"> 12 </span> , screenRight
|
||||
<span class="lineno"> 13 </span> , defaultDPI
|
||||
<span class="lineno"> 14 </span> , defaultStrokeWidth
|
||||
<span class="lineno"> 15 </span> ) where
|
||||
<span class="lineno"> 16 </span>
|
||||
<span class="lineno"> 17 </span><span class="decl"><span class="istickedoff">screenWidth = 16</span></span>
|
||||
<span class="lineno"> 18 </span><span class="decl"><span class="istickedoff">screenHeight = 9</span></span>
|
||||
<span class="lineno"> 19 </span><span class="decl"><span class="nottickedoff">screenTop = screenHeight/2</span></span>
|
||||
<span class="lineno"> 20 </span><span class="decl"><span class="nottickedoff">screenBottom = -screenHeight/2</span></span>
|
||||
<span class="lineno"> 21 </span><span class="decl"><span class="nottickedoff">screenLeft = -screenWidth/2</span></span>
|
||||
<span class="lineno"> 22 </span><span class="decl"><span class="nottickedoff">screenRight = screenWidth/2</span></span>
|
||||
<span class="lineno"> 23 </span>
|
||||
<span class="lineno"> 24 </span>defaultDPI :: Dpi
|
||||
<span class="lineno"> 25 </span><span class="decl"><span class="nottickedoff">defaultDPI = 96</span></span>
|
||||
<span class="lineno"> 26 </span>
|
||||
<span class="lineno"> 27 </span>defaultStrokeWidth :: Double
|
||||
<span class="lineno"> 28 </span><span class="decl"><span class="istickedoff">defaultStrokeWidth = 0.05</span></span>
|
||||
<span class="lineno"> 17 </span>import Graphics.SvgTree
|
||||
<span class="lineno"> 18 </span>
|
||||
<span class="lineno"> 19 </span>-- | Number of units from the left-most point to the right-most point on the screen.
|
||||
<span class="lineno"> 20 </span>screenWidth :: Fractional a => a
|
||||
<span class="lineno"> 21 </span>
|
||||
<span class="lineno"> 22 </span>-- | Number of units from the bottom to the top of the screen.
|
||||
<span class="lineno"> 23 </span>screenHeight :: Fractional a => a
|
||||
<span class="lineno"> 24 </span>
|
||||
<span class="lineno"> 25 </span>-- | Position of the top of the screen.
|
||||
<span class="lineno"> 26 </span>screenTop :: Fractional a => a
|
||||
<span class="lineno"> 27 </span>
|
||||
<span class="lineno"> 28 </span>-- | Position of the bottom of the screen.
|
||||
<span class="lineno"> 29 </span>screenBottom :: Fractional a => a
|
||||
<span class="lineno"> 30 </span>
|
||||
<span class="lineno"> 31 </span>-- | Position of the left side of the screen.
|
||||
<span class="lineno"> 32 </span>screenLeft :: Fractional a => a
|
||||
<span class="lineno"> 33 </span>
|
||||
<span class="lineno"> 34 </span>-- | Position of the right side of the screen.
|
||||
<span class="lineno"> 35 </span>screenRight :: Fractional a => a
|
||||
<span class="lineno"> 36 </span>
|
||||
<span class="lineno"> 37 </span><span class="decl"><span class="istickedoff">screenWidth = 16</span></span>
|
||||
<span class="lineno"> 38 </span><span class="decl"><span class="istickedoff">screenHeight = 9</span></span>
|
||||
<span class="lineno"> 39 </span><span class="decl"><span class="nottickedoff">screenTop = screenHeight/2</span></span>
|
||||
<span class="lineno"> 40 </span><span class="decl"><span class="nottickedoff">screenBottom = -screenHeight/2</span></span>
|
||||
<span class="lineno"> 41 </span><span class="decl"><span class="nottickedoff">screenLeft = -screenWidth/2</span></span>
|
||||
<span class="lineno"> 42 </span><span class="decl"><span class="nottickedoff">screenRight = screenWidth/2</span></span>
|
||||
<span class="lineno"> 43 </span>
|
||||
<span class="lineno"> 44 </span>-- | SVG allows measurements in inches which have to be converted to local units.
|
||||
<span class="lineno"> 45 </span>-- This value describes how many local units there are in an inch.
|
||||
<span class="lineno"> 46 </span>defaultDPI :: Dpi
|
||||
<span class="lineno"> 47 </span><span class="decl"><span class="nottickedoff">defaultDPI = 96</span></span>
|
||||
<span class="lineno"> 48 </span>
|
||||
<span class="lineno"> 49 </span>-- | Default thickness of lines.
|
||||
<span class="lineno"> 50 </span>defaultStrokeWidth :: Double
|
||||
<span class="lineno"> 51 </span><span class="decl"><span class="istickedoff">defaultStrokeWidth = 0.05</span></span>
|
||||
|
||||
</pre>
|
||||
</body>
|
||||
|
|
|
|||
|
|
@ -17,106 +17,128 @@ span.spaces { background: white }
|
|||
<span class="decl"><span class="nottickedoff">never executed</span> <span class="tickonlytrue">always true</span> <span class="tickonlyfalse">always false</span></span>
|
||||
</pre>
|
||||
<pre>
|
||||
<span class="lineno"> 1 </span>module Reanimate.Parameters
|
||||
<span class="lineno"> 2 </span> ( Raster(..)
|
||||
<span class="lineno"> 3 </span> , Width
|
||||
<span class="lineno"> 4 </span> , Height
|
||||
<span class="lineno"> 5 </span> , FPS
|
||||
<span class="lineno"> 6 </span> , pRaster
|
||||
<span class="lineno"> 7 </span> , pFPS
|
||||
<span class="lineno"> 8 </span> , pWidth
|
||||
<span class="lineno"> 9 </span> , pHeight
|
||||
<span class="lineno"> 10 </span> , pNoExternals
|
||||
<span class="lineno"> 11 </span> , pRootDirectory
|
||||
<span class="lineno"> 12 </span> , setRaster
|
||||
<span class="lineno"> 13 </span> , setFPS
|
||||
<span class="lineno"> 14 </span> , setWidth
|
||||
<span class="lineno"> 15 </span> , setHeight
|
||||
<span class="lineno"> 16 </span> , setNoExternals
|
||||
<span class="lineno"> 17 </span> , setRootDirectory
|
||||
<span class="lineno"> 18 </span> ) where
|
||||
<span class="lineno"> 19 </span>
|
||||
<span class="lineno"> 20 </span>import System.IO.Unsafe
|
||||
<span class="lineno"> 21 </span>import Data.IORef
|
||||
<span class="lineno"> 22 </span>
|
||||
<span class="lineno"> 23 </span>type Width = Int
|
||||
<span class="lineno"> 24 </span>type Height = Int
|
||||
<span class="lineno"> 25 </span>type FPS = Int
|
||||
<span class="lineno"> 1 </span>{- |
|
||||
<span class="lineno"> 2 </span> Parameters define the global context of an animation. They are set once
|
||||
<span class="lineno"> 3 </span> before an animation is rendered and may not change during rendering.
|
||||
<span class="lineno"> 4 </span>-}
|
||||
<span class="lineno"> 5 </span>module Reanimate.Parameters
|
||||
<span class="lineno"> 6 </span> ( Raster(..)
|
||||
<span class="lineno"> 7 </span> , Width
|
||||
<span class="lineno"> 8 </span> , Height
|
||||
<span class="lineno"> 9 </span> , FPS
|
||||
<span class="lineno"> 10 </span> , pRaster
|
||||
<span class="lineno"> 11 </span> , pFPS
|
||||
<span class="lineno"> 12 </span> , pWidth
|
||||
<span class="lineno"> 13 </span> , pHeight
|
||||
<span class="lineno"> 14 </span> , pNoExternals
|
||||
<span class="lineno"> 15 </span> , pRootDirectory
|
||||
<span class="lineno"> 16 </span> , setRaster
|
||||
<span class="lineno"> 17 </span> , setFPS
|
||||
<span class="lineno"> 18 </span> , setWidth
|
||||
<span class="lineno"> 19 </span> , setHeight
|
||||
<span class="lineno"> 20 </span> , setNoExternals
|
||||
<span class="lineno"> 21 </span> , setRootDirectory
|
||||
<span class="lineno"> 22 </span> ) where
|
||||
<span class="lineno"> 23 </span>
|
||||
<span class="lineno"> 24 </span>import System.IO.Unsafe
|
||||
<span class="lineno"> 25 </span>import Data.IORef
|
||||
<span class="lineno"> 26 </span>
|
||||
<span class="lineno"> 27 </span>data Raster
|
||||
<span class="lineno"> 28 </span> = RasterNone
|
||||
<span class="lineno"> 29 </span> | RasterAuto
|
||||
<span class="lineno"> 30 </span> | RasterInkscape
|
||||
<span class="lineno"> 31 </span> | RasterRSvg
|
||||
<span class="lineno"> 32 </span> | RasterMagick
|
||||
<span class="lineno"> 33 </span> deriving (<span class="decl"><span class="nottickedoff">Show</span></span>, <span class="decl"><span class="nottickedoff">Eq</span></span>)
|
||||
<span class="lineno"> 34 </span>
|
||||
<span class="lineno"> 35 </span>{-# NOINLINE pRasterRef #-}
|
||||
<span class="lineno"> 36 </span>pRasterRef :: IORef Raster
|
||||
<span class="lineno"> 37 </span><span class="decl"><span class="nottickedoff">pRasterRef = unsafePerformIO (newIORef RasterNone)</span></span>
|
||||
<span class="lineno"> 38 </span>
|
||||
<span class="lineno"> 39 </span>{-# NOINLINE pRaster #-}
|
||||
<span class="lineno"> 40 </span>pRaster :: Raster
|
||||
<span class="lineno"> 41 </span><span class="decl"><span class="nottickedoff">pRaster = unsafePerformIO (readIORef pRasterRef)</span></span>
|
||||
<span class="lineno"> 27 </span>-- | Width of animation in pixels.
|
||||
<span class="lineno"> 28 </span>type Width = Int
|
||||
<span class="lineno"> 29 </span>-- | Height of animation in pixels.
|
||||
<span class="lineno"> 30 </span>type Height = Int
|
||||
<span class="lineno"> 31 </span>-- | Framerate of animation in frames per second.
|
||||
<span class="lineno"> 32 </span>type FPS = Int
|
||||
<span class="lineno"> 33 </span>
|
||||
<span class="lineno"> 34 </span>-- | Raster engines turn SVG images into pixels.
|
||||
<span class="lineno"> 35 </span>data Raster
|
||||
<span class="lineno"> 36 </span> = RasterNone -- ^ Do not use any external raster engine. Rely on the browser or ffmpeg.
|
||||
<span class="lineno"> 37 </span> | RasterAuto -- ^ Scan for installed raster engines and pick the fastest one.
|
||||
<span class="lineno"> 38 </span> | RasterInkscape -- ^ Use Inkscape to raster SVG images.
|
||||
<span class="lineno"> 39 </span> | RasterRSvg -- ^ Use rsvg-convert to raster SVG images.
|
||||
<span class="lineno"> 40 </span> | RasterMagick -- ^ Use imagemagick to raster SVG images.
|
||||
<span class="lineno"> 41 </span> deriving (<span class="decl"><span class="nottickedoff">Show</span></span>, <span class="decl"><span class="nottickedoff">Eq</span></span>)
|
||||
<span class="lineno"> 42 </span>
|
||||
<span class="lineno"> 43 </span>setRaster :: Raster -> IO ()
|
||||
<span class="lineno"> 44 </span><span class="decl"><span class="nottickedoff">setRaster = writeIORef pRasterRef</span></span>
|
||||
<span class="lineno"> 45 </span>
|
||||
<span class="lineno"> 46 </span>{-# NOINLINE pFPSRef #-}
|
||||
<span class="lineno"> 47 </span>pFPSRef :: IORef FPS
|
||||
<span class="lineno"> 48 </span><span class="decl"><span class="nottickedoff">pFPSRef = unsafePerformIO (newIORef 0)</span></span>
|
||||
<span class="lineno"> 49 </span>
|
||||
<span class="lineno"> 50 </span>{-# NOINLINE pFPS #-}
|
||||
<span class="lineno"> 51 </span>pFPS :: FPS
|
||||
<span class="lineno"> 52 </span><span class="decl"><span class="nottickedoff">pFPS = unsafePerformIO (readIORef pFPSRef)</span></span>
|
||||
<span class="lineno"> 53 </span>
|
||||
<span class="lineno"> 54 </span>setFPS :: FPS -> IO ()
|
||||
<span class="lineno"> 55 </span><span class="decl"><span class="nottickedoff">setFPS = writeIORef pFPSRef</span></span>
|
||||
<span class="lineno"> 56 </span>
|
||||
<span class="lineno"> 57 </span>{-# NOINLINE pWidthRef #-}
|
||||
<span class="lineno"> 58 </span>pWidthRef :: IORef FPS
|
||||
<span class="lineno"> 59 </span><span class="decl"><span class="nottickedoff">pWidthRef = unsafePerformIO (newIORef 0)</span></span>
|
||||
<span class="lineno"> 60 </span>
|
||||
<span class="lineno"> 61 </span>{-# NOINLINE pWidth #-}
|
||||
<span class="lineno"> 62 </span>pWidth :: Width
|
||||
<span class="lineno"> 63 </span><span class="decl"><span class="nottickedoff">pWidth = unsafePerformIO (readIORef pWidthRef)</span></span>
|
||||
<span class="lineno"> 43 </span>{-# NOINLINE pRasterRef #-}
|
||||
<span class="lineno"> 44 </span>pRasterRef :: IORef Raster
|
||||
<span class="lineno"> 45 </span><span class="decl"><span class="nottickedoff">pRasterRef = unsafePerformIO (newIORef RasterNone)</span></span>
|
||||
<span class="lineno"> 46 </span>
|
||||
<span class="lineno"> 47 </span>{-# NOINLINE pRaster #-}
|
||||
<span class="lineno"> 48 </span>-- | Selected raster engine.
|
||||
<span class="lineno"> 49 </span>pRaster :: Raster
|
||||
<span class="lineno"> 50 </span><span class="decl"><span class="nottickedoff">pRaster = unsafePerformIO (readIORef pRasterRef)</span></span>
|
||||
<span class="lineno"> 51 </span>
|
||||
<span class="lineno"> 52 </span>-- | Set raster engine.
|
||||
<span class="lineno"> 53 </span>setRaster :: Raster -> IO ()
|
||||
<span class="lineno"> 54 </span><span class="decl"><span class="nottickedoff">setRaster = writeIORef pRasterRef</span></span>
|
||||
<span class="lineno"> 55 </span>
|
||||
<span class="lineno"> 56 </span>{-# NOINLINE pFPSRef #-}
|
||||
<span class="lineno"> 57 </span>pFPSRef :: IORef FPS
|
||||
<span class="lineno"> 58 </span><span class="decl"><span class="nottickedoff">pFPSRef = unsafePerformIO (newIORef 0)</span></span>
|
||||
<span class="lineno"> 59 </span>
|
||||
<span class="lineno"> 60 </span>{-# NOINLINE pFPS #-}
|
||||
<span class="lineno"> 61 </span>-- | Selected framerate.
|
||||
<span class="lineno"> 62 </span>pFPS :: FPS
|
||||
<span class="lineno"> 63 </span><span class="decl"><span class="nottickedoff">pFPS = unsafePerformIO (readIORef pFPSRef)</span></span>
|
||||
<span class="lineno"> 64 </span>
|
||||
<span class="lineno"> 65 </span>setWidth :: Width -> IO ()
|
||||
<span class="lineno"> 66 </span><span class="decl"><span class="nottickedoff">setWidth = writeIORef pWidthRef</span></span>
|
||||
<span class="lineno"> 67 </span>
|
||||
<span class="lineno"> 65 </span>-- | Set desired framerate.
|
||||
<span class="lineno"> 66 </span>setFPS :: FPS -> IO ()
|
||||
<span class="lineno"> 67 </span><span class="decl"><span class="nottickedoff">setFPS = writeIORef pFPSRef</span></span>
|
||||
<span class="lineno"> 68 </span>
|
||||
<span class="lineno"> 69 </span>{-# NOINLINE pHeightRef #-}
|
||||
<span class="lineno"> 70 </span>pHeightRef :: IORef FPS
|
||||
<span class="lineno"> 71 </span><span class="decl"><span class="nottickedoff">pHeightRef = unsafePerformIO (newIORef 0)</span></span>
|
||||
<span class="lineno"> 69 </span>{-# NOINLINE pWidthRef #-}
|
||||
<span class="lineno"> 70 </span>pWidthRef :: IORef FPS
|
||||
<span class="lineno"> 71 </span><span class="decl"><span class="nottickedoff">pWidthRef = unsafePerformIO (newIORef 0)</span></span>
|
||||
<span class="lineno"> 72 </span>
|
||||
<span class="lineno"> 73 </span>{-# NOINLINE pHeight #-}
|
||||
<span class="lineno"> 74 </span>pHeight :: Height
|
||||
<span class="lineno"> 75 </span><span class="decl"><span class="nottickedoff">pHeight = unsafePerformIO (readIORef pHeightRef)</span></span>
|
||||
<span class="lineno"> 76 </span>
|
||||
<span class="lineno"> 77 </span>setHeight :: Height -> IO ()
|
||||
<span class="lineno"> 78 </span><span class="decl"><span class="nottickedoff">setHeight = writeIORef pHeightRef</span></span>
|
||||
<span class="lineno"> 79 </span>
|
||||
<span class="lineno"> 80 </span>{-# NOINLINE pNoExternalsRef #-}
|
||||
<span class="lineno"> 81 </span>pNoExternalsRef :: IORef Bool
|
||||
<span class="lineno"> 82 </span><span class="decl"><span class="istickedoff">pNoExternalsRef = unsafePerformIO (newIORef <span class="nottickedoff">False</span>)</span></span>
|
||||
<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="istickedoff">pNoExternals = unsafePerformIO (readIORef pNoExternalsRef)</span></span>
|
||||
<span class="lineno"> 87 </span>
|
||||
<span class="lineno"> 88 </span>setNoExternals :: Bool -> IO ()
|
||||
<span class="lineno"> 89 </span><span class="decl"><span class="istickedoff">setNoExternals = writeIORef pNoExternalsRef</span></span>
|
||||
<span class="lineno"> 73 </span>{-# NOINLINE pWidth #-}
|
||||
<span class="lineno"> 74 </span>-- | Width of animation in pixel.
|
||||
<span class="lineno"> 75 </span>pWidth :: Width
|
||||
<span class="lineno"> 76 </span><span class="decl"><span class="nottickedoff">pWidth = unsafePerformIO (readIORef pWidthRef)</span></span>
|
||||
<span class="lineno"> 77 </span>
|
||||
<span class="lineno"> 78 </span>-- | Set desired width of animation in pixel.
|
||||
<span class="lineno"> 79 </span>setWidth :: Width -> IO ()
|
||||
<span class="lineno"> 80 </span><span class="decl"><span class="nottickedoff">setWidth = writeIORef pWidthRef</span></span>
|
||||
<span class="lineno"> 81 </span>
|
||||
<span class="lineno"> 82 </span>{-# NOINLINE pHeightRef #-}
|
||||
<span class="lineno"> 83 </span>pHeightRef :: IORef FPS
|
||||
<span class="lineno"> 84 </span><span class="decl"><span class="nottickedoff">pHeightRef = unsafePerformIO (newIORef 0)</span></span>
|
||||
<span class="lineno"> 85 </span>
|
||||
<span class="lineno"> 86 </span>{-# NOINLINE pHeight #-}
|
||||
<span class="lineno"> 87 </span>-- | Height of animation in pixel.
|
||||
<span class="lineno"> 88 </span>pHeight :: Height
|
||||
<span class="lineno"> 89 </span><span class="decl"><span class="nottickedoff">pHeight = unsafePerformIO (readIORef pHeightRef)</span></span>
|
||||
<span class="lineno"> 90 </span>
|
||||
<span class="lineno"> 91 </span>{-# NOINLINE pRootDirectoryRef #-}
|
||||
<span class="lineno"> 92 </span>pRootDirectoryRef :: IORef FilePath
|
||||
<span class="lineno"> 93 </span><span class="decl"><span class="nottickedoff">pRootDirectoryRef = unsafePerformIO (newIORef (error "root directory not set"))</span></span>
|
||||
<span class="lineno"> 91 </span>-- | Set desired height of animation in pixel.
|
||||
<span class="lineno"> 92 </span>setHeight :: Height -> IO ()
|
||||
<span class="lineno"> 93 </span><span class="decl"><span class="nottickedoff">setHeight = writeIORef pHeightRef</span></span>
|
||||
<span class="lineno"> 94 </span>
|
||||
<span class="lineno"> 95 </span>{-# NOINLINE pRootDirectory #-}
|
||||
<span class="lineno"> 96 </span>pRootDirectory :: FilePath
|
||||
<span class="lineno"> 97 </span><span class="decl"><span class="nottickedoff">pRootDirectory = unsafePerformIO (readIORef pRootDirectoryRef)</span></span>
|
||||
<span class="lineno"> 95 </span>{-# NOINLINE pNoExternalsRef #-}
|
||||
<span class="lineno"> 96 </span>pNoExternalsRef :: IORef Bool
|
||||
<span class="lineno"> 97 </span><span class="decl"><span class="istickedoff">pNoExternalsRef = unsafePerformIO (newIORef <span class="nottickedoff">False</span>)</span></span>
|
||||
<span class="lineno"> 98 </span>
|
||||
<span class="lineno"> 99 </span>setRootDirectory :: FilePath -> IO ()
|
||||
<span class="lineno"> 100 </span><span class="decl"><span class="nottickedoff">setRootDirectory = writeIORef pRootDirectoryRef</span></span>
|
||||
<span class="lineno"> 99 </span>{-# NOINLINE pNoExternals #-}
|
||||
<span class="lineno"> 100 </span>-- | This parameter determined whether or not external tools are allowed.
|
||||
<span class="lineno"> 101 </span>-- If this flag is True then tools such as 'latex' and 'blender' will not
|
||||
<span class="lineno"> 102 </span>-- be invoked.
|
||||
<span class="lineno"> 103 </span>pNoExternals :: Bool
|
||||
<span class="lineno"> 104 </span><span class="decl"><span class="istickedoff">pNoExternals = unsafePerformIO (readIORef pNoExternalsRef)</span></span>
|
||||
<span class="lineno"> 105 </span>
|
||||
<span class="lineno"> 106 </span>-- | Set whether external tools are allowed.
|
||||
<span class="lineno"> 107 </span>setNoExternals :: Bool -> IO ()
|
||||
<span class="lineno"> 108 </span><span class="decl"><span class="istickedoff">setNoExternals = writeIORef pNoExternalsRef</span></span>
|
||||
<span class="lineno"> 109 </span>
|
||||
<span class="lineno"> 110 </span>{-# NOINLINE pRootDirectoryRef #-}
|
||||
<span class="lineno"> 111 </span>pRootDirectoryRef :: IORef FilePath
|
||||
<span class="lineno"> 112 </span><span class="decl"><span class="nottickedoff">pRootDirectoryRef = unsafePerformIO (newIORef (error "root directory not set"))</span></span>
|
||||
<span class="lineno"> 113 </span>
|
||||
<span class="lineno"> 114 </span>{-# NOINLINE pRootDirectory #-}
|
||||
<span class="lineno"> 115 </span>-- | Root directory of animation. Images and other data has to be placed
|
||||
<span class="lineno"> 116 </span>-- here if they are referenced in an SVG image.
|
||||
<span class="lineno"> 117 </span>pRootDirectory :: FilePath
|
||||
<span class="lineno"> 118 </span><span class="decl"><span class="nottickedoff">pRootDirectory = unsafePerformIO (readIORef pRootDirectoryRef)</span></span>
|
||||
<span class="lineno"> 119 </span>
|
||||
<span class="lineno"> 120 </span>-- | Set the root animation directory.
|
||||
<span class="lineno"> 121 </span>setRootDirectory :: FilePath -> IO ()
|
||||
<span class="lineno"> 122 </span><span class="decl"><span class="nottickedoff">setRootDirectory = writeIORef pRootDirectoryRef</span></span>
|
||||
|
||||
</pre>
|
||||
</body>
|
||||
|
|
|
|||
Loading…
Reference in a new issue