Switch from svg-tree to reanimate-svg.

This commit is contained in:
David 2019-03-03 16:17:30 +01:00
commit 55f1012faf
9 changed files with 56 additions and 54 deletions

View file

@ -29,7 +29,7 @@ library
Reanimate.Svg.NamedColors Reanimate.Svg.NamedColors
build-depends: base >=4.10 && <4.13, build-depends: base >=4.10 && <4.13,
time, text, unix, lucid, filepath, process, directory, time, text, unix, lucid, filepath, process, directory,
containers, svg-tree >= 0.6.2.3, xml, bytestring, lens, linear, mtl, matrix, containers, reanimate-svg >= 0.7.0.0, xml, bytestring, lens, linear, mtl, matrix,
JuicyPixels, attoparsec, parallel, diagrams, diagrams-svg, JuicyPixels, attoparsec, parallel, diagrams, diagrams-svg,
diagrams-core, diagrams-lib, diagrams-contrib, diagrams-core, diagrams-lib, diagrams-contrib,
svg-builder, matrices, cubicbezier, palette svg-builder, matrices, cubicbezier, palette

View file

@ -8,20 +8,20 @@ module Reanimate.Diagrams
, SvgDiagram , SvgDiagram
) where ) where
import qualified Data.ByteString.Lazy as BL import qualified Data.ByteString.Lazy as BL
import qualified Diagrams.Backend.SVG as D import qualified Diagrams.Backend.SVG as D
import qualified Diagrams.Core.Compile as D import qualified Diagrams.Core.Compile as D
import qualified Diagrams.Core.Types as D import qualified Diagrams.Core.Types as D
import qualified Diagrams.Size as D import qualified Diagrams.Size as D
import "svg-tree" Graphics.Svg (Document (..), Tree (..), defaultSvg, import Graphics.SvgTree (Document (..), Tree (..), defaultSvg,
elements, loadSvgFile, parseSvgFile, elements, loadSvgFile, parseSvgFile,
xmlOfDocument) xmlOfDocument)
import qualified Graphics.Svg.Core as Svg import qualified Graphics.Svg.Core as Svg
import Linear.V2 import Linear.V2
import Reanimate.Svg (unbox) import Reanimate.Svg (unbox)
import Diagrams.Prelude import Diagrams.Prelude
import qualified Diagrams.Prelude as D import qualified Diagrams.Prelude as D
renderDiagram :: SvgDiagram -> Tree renderDiagram :: SvgDiagram -> Tree
renderDiagram d = renderDiagram d =

View file

@ -1,35 +1,36 @@
{-# LANGUAGE Arrows #-} {-# LANGUAGE Arrows #-}
{-# LANGUAGE PartialTypeSignatures #-} {-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PackageImports #-}
{-# LANGUAGE PackageImports #-} {-# LANGUAGE ParallelListComp #-}
{-# LANGUAGE ParallelListComp #-} {-# LANGUAGE PartialTypeSignatures #-}
{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeFamilies #-}
module Reanimate.Examples where module Reanimate.Examples where
import qualified Data.Map as M
import Codec.Picture.Types import Codec.Picture.Types
import Control.Lens () import Control.Lens ()
import Control.Monad import Control.Monad
import Data.Text (Text, pack) import qualified Data.Map as M
import "svg-tree" Graphics.Svg as S import Data.Text (Text, pack)
import Graphics.SvgTree as S
import Linear.V2 import Linear.V2
import Numeric import Numeric
import Text.Printf import Text.Printf
import Reanimate.Combinators import Reanimate.Combinators
import Reanimate.Diagrams
import Reanimate.LaTeX import Reanimate.LaTeX
import Reanimate.Monad import Reanimate.Monad
import Reanimate.Svg import Reanimate.Svg
import Reanimate.Diagrams
import qualified Diagrams.Backend.SVG as D
import Diagrams.Prelude hiding (Animation, boundingBox, center,
duration, fontSize, rotate, scale,
translate, circle)
import qualified Diagrams.Prelude as D
import qualified Diagrams.TwoD.Path.LSystem as D
import qualified Data.Colour.Palette.BrewerSet as D import qualified Data.Colour.Palette.BrewerSet as D
import qualified Diagrams.Backend.SVG as D
import Diagrams.Prelude hiding (Animation, boundingBox,
center, circle, duration,
fontSize, rotate, scale,
translate)
import qualified Diagrams.Prelude as D
import qualified Diagrams.TwoD.Path.LSystem as D
import Debug.Trace import Debug.Trace

View file

@ -13,7 +13,7 @@ import System.FilePath (replaceExtension, takeFileName, (</>))
import System.IO.Unsafe (unsafePerformIO) import System.IO.Unsafe (unsafePerformIO)
import Control.Lens (over, set, (%~), (&), (.~), (^.)) import Control.Lens (over, set, (%~), (&), (.~), (^.))
import "svg-tree" Graphics.Svg (Document (..), Tree (..), defaultSvg, import Graphics.SvgTree (Document (..), Tree (..), defaultSvg,
elements, loadSvgFile, parseSvgFile, elements, loadSvgFile, parseSvgFile,
xmlOfDocument) xmlOfDocument)
import Text.XML.Light (elContent) import Text.XML.Light (elContent)

View file

@ -1,6 +1,6 @@
module Reanimate.Monad where module Reanimate.Monad where
import Control.Arrow () import Control.Arrow ()
import qualified Control.Category as C import qualified Control.Category as C
import Control.Monad.State import Control.Monad.State
import Data.Fixed import Data.Fixed
@ -8,8 +8,9 @@ import Data.Fixed (mod')
import qualified Data.Map as M import qualified Data.Map as M
import Data.Monoid ((<>)) import Data.Monoid ((<>))
import Data.Text (Text, pack) import Data.Text (Text, pack)
import "svg-tree" Graphics.Svg (Document (..), Number (..), Tree, import Graphics.SvgTree (Document (..), Number (..), Text (..),
xmlOfDocument, Tree(..), Text(..), TextSpan(..), TextSpanContent(..)) TextSpan (..), TextSpanContent (..),
Tree, Tree (..), xmlOfDocument)
import Reanimate.LaTeX import Reanimate.LaTeX
import Reanimate.Svg import Reanimate.Svg
import Text.XML.Light (elContent) import Text.XML.Light (elContent)

View file

@ -8,11 +8,11 @@ import Control.Parallel.Strategies
import qualified Data.ByteString.Lazy.Char8 as BS import qualified Data.ByteString.Lazy.Char8 as BS
import qualified Data.Text as T import qualified Data.Text as T
import qualified Data.Text.IO as T import qualified Data.Text.IO as T
import "svg-tree" Graphics.Svg (Number (..)) import Graphics.SvgTree (Number (..))
import Reanimate.Diagrams
import Reanimate.Examples import Reanimate.Examples
import Reanimate.Misc import Reanimate.Misc
import Reanimate.Monad import Reanimate.Monad
import Reanimate.Diagrams
import System.Directory (renameFile) import System.Directory (renameFile)
import System.FilePath (takeExtension, takeFileName, import System.FilePath (takeExtension, takeFileName,
(</>)) (</>))

View file

@ -1,24 +1,24 @@
module Reanimate.Svg where module Reanimate.Svg where
import Codec.Picture (PixelRGBA8 (..)) import Codec.Picture (PixelRGBA8 (..))
import Codec.Picture.Types import Codec.Picture.Types
import Control.Arrow import Control.Arrow
import Control.Lens (over, set, (%~), (&), (.~), (^.)) import Control.Lens (over, set, (%~), (&), (.~), (^.))
import Control.Monad.Fix import Control.Monad.Fix
import Control.Monad.State import Control.Monad.State
import Data.Attoparsec.Text (parseOnly) import Data.Attoparsec.Text (parseOnly)
import Data.List import Data.List
import qualified Data.Map as Map import qualified Data.Map as Map
import Data.Maybe import Data.Maybe
import qualified Data.Text as T import qualified Data.Text as T
import qualified Geom2D.CubicBezier as Bezier import qualified Geom2D.CubicBezier as Bezier
import "svg-tree" Graphics.Svg import Graphics.SvgTree
import "svg-tree" Graphics.Svg.PathParser import Graphics.SvgTree.PathParser
import Linear.Metric import Linear.Metric
import Linear.V2 import Linear.V2
import Linear.Vector import Linear.Vector
import Reanimate.Svg.NamedColors import Reanimate.Svg.NamedColors
import qualified Reanimate.Transform as Transform import qualified Reanimate.Transform as Transform
import Debug.Trace import Debug.Trace
@ -44,7 +44,7 @@ replaceUses doc = doc & elements %~ map (mapTree replace)
_ -> TransformUnknown _ -> TransformUnknown
docTree = GroupTree $ set groupChildren (doc^.elements) defaultSvg docTree = GroupTree $ set groupChildren (doc^.elements) defaultSvg
idMap = foldTree updMap Map.empty docTree `Map.union` idMap = foldTree updMap Map.empty docTree `Map.union`
Map.mapMaybe elementToTree (doc^.definitions) (doc^.definitions)
updMap m tree = updMap m tree =
case tree^.drawAttr.attrId of case tree^.drawAttr.attrId of
Nothing -> m Nothing -> m
@ -330,8 +330,8 @@ svgBoundingPoints t = map (Transform.transformPoint m) $
RectangleTree rect -> RectangleTree rect ->
case mapTuple (toUserUnit defaultDPI) (rect^.rectUpperLeftCorner) of case mapTuple (toUserUnit defaultDPI) (rect^.rectUpperLeftCorner) of
(Num x, Num y) -> [V2 x y] ++ (Num x, Num y) -> [V2 x y] ++
case mapTuple (toUserUnit defaultDPI) (rect^.rectWidth, rect^.rectHeight) of case mapTuple (fmap $ toUserUnit defaultDPI) (rect^.rectWidth, rect^.rectHeight) of
(Num w, Num h) -> [V2 (x+w) (y+h)] (Just (Num w), Just (Num h)) -> [V2 (x+w) (y+h)]
_ -> [] _ -> []
_ -> [] _ -> []
TextTree{} -> [] TextTree{} -> []
@ -427,8 +427,8 @@ withClipPathRef ref = drawAttr %~ clipPathRef .~ pure ref
mkRect :: Point -> Number -> Number -> Tree mkRect :: Point -> Number -> Number -> Tree
mkRect corner width height = RectangleTree $ defaultSvg mkRect corner width height = RectangleTree $ defaultSvg
& rectUpperLeftCorner .~ corner & rectUpperLeftCorner .~ corner
& rectWidth .~ width & rectWidth .~ Just width
& rectHeight .~ height & rectHeight .~ Just height
mkBoundingRect :: Tree -> Double -> Tree mkBoundingRect :: Tree -> Double -> Tree
mkBoundingRect src margin = mkBoundingRect src margin =

View file

@ -7,10 +7,10 @@ module Reanimate.Transform
-- XXX: Use Linear.Matrix instead of Data.Matrix to drop the 'matrix' dependency. -- XXX: Use Linear.Matrix instead of Data.Matrix to drop the 'matrix' dependency.
import Data.List import Data.List
import "matrix" Data.Matrix (Matrix) import "matrix" Data.Matrix (Matrix)
import qualified "matrix" Data.Matrix as M import qualified "matrix" Data.Matrix as M
import Data.Maybe import Data.Maybe
import "svg-tree" Graphics.Svg import Graphics.SvgTree
import Linear.V2 import Linear.V2
type TMatrix = Matrix Coord type TMatrix = Matrix Coord

View file

@ -3,7 +3,7 @@ resolver: lts-11.22
allow-newer: false allow-newer: false
extra-deps: extra-deps:
- svg-tree-0.6.2.3 - reanimate-svg-0.7.0.0
- diagrams-1.4@sha256:3e36369e84115b900fd9dcb570672a188339a470eb19ca62170775cd835cf8ca - diagrams-1.4@sha256:3e36369e84115b900fd9dcb570672a188339a470eb19ca62170775cd835cf8ca
- diagrams-contrib-1.4.3@sha256:bcfa6c85f8c33b8c48c3a61b7216afdebd51cd793c50da3a2dd358827d25fc76 - diagrams-contrib-1.4.3@sha256:bcfa6c85f8c33b8c48c3a61b7216afdebd51cd793c50da3a2dd358827d25fc76
- diagrams-core-1.4.1.1@sha256:6ef6b17785d77997c481eb085570e21b6a00cc91d086fbf49490504130ebc7d1 - diagrams-core-1.4.1.1@sha256:6ef6b17785d77997c481eb085570e21b6a00cc91d086fbf49490504130ebc7d1