From 55f1012fafec86e96c6f2a1b92acf8f2b8efaf38 Mon Sep 17 00:00:00 2001 From: David Date: Sun, 3 Mar 2019 16:17:30 +0100 Subject: [PATCH] Switch from svg-tree to reanimate-svg. --- reanimate.cabal | 2 +- src/Reanimate/Diagrams.hs | 22 +++++++++++----------- src/Reanimate/Examples.hs | 37 +++++++++++++++++++------------------ src/Reanimate/LaTeX.hs | 2 +- src/Reanimate/Monad.hs | 7 ++++--- src/Reanimate/Render.hs | 4 ++-- src/Reanimate/Svg.hs | 28 ++++++++++++++-------------- src/Reanimate/Transform.hs | 6 +++--- stack.yaml | 2 +- 9 files changed, 56 insertions(+), 54 deletions(-) diff --git a/reanimate.cabal b/reanimate.cabal index a3df5cc..d4cb528 100644 --- a/reanimate.cabal +++ b/reanimate.cabal @@ -29,7 +29,7 @@ library Reanimate.Svg.NamedColors build-depends: base >=4.10 && <4.13, 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, diagrams-core, diagrams-lib, diagrams-contrib, svg-builder, matrices, cubicbezier, palette diff --git a/src/Reanimate/Diagrams.hs b/src/Reanimate/Diagrams.hs index 9af8889..be25695 100644 --- a/src/Reanimate/Diagrams.hs +++ b/src/Reanimate/Diagrams.hs @@ -8,20 +8,20 @@ module Reanimate.Diagrams , SvgDiagram ) where -import qualified Data.ByteString.Lazy as BL -import qualified Diagrams.Backend.SVG as D -import qualified Diagrams.Core.Compile as D -import qualified Diagrams.Core.Types as D -import qualified Diagrams.Size as D -import "svg-tree" Graphics.Svg (Document (..), Tree (..), defaultSvg, - elements, loadSvgFile, parseSvgFile, - xmlOfDocument) -import qualified Graphics.Svg.Core as Svg +import qualified Data.ByteString.Lazy as BL +import qualified Diagrams.Backend.SVG as D +import qualified Diagrams.Core.Compile as D +import qualified Diagrams.Core.Types as D +import qualified Diagrams.Size as D +import Graphics.SvgTree (Document (..), Tree (..), defaultSvg, + elements, loadSvgFile, parseSvgFile, + xmlOfDocument) +import qualified Graphics.Svg.Core as Svg import Linear.V2 -import Reanimate.Svg (unbox) +import Reanimate.Svg (unbox) import Diagrams.Prelude -import qualified Diagrams.Prelude as D +import qualified Diagrams.Prelude as D renderDiagram :: SvgDiagram -> Tree renderDiagram d = diff --git a/src/Reanimate/Examples.hs b/src/Reanimate/Examples.hs index f0a4b8f..f3056af 100644 --- a/src/Reanimate/Examples.hs +++ b/src/Reanimate/Examples.hs @@ -1,35 +1,36 @@ -{-# LANGUAGE Arrows #-} -{-# LANGUAGE PartialTypeSignatures #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PackageImports #-} -{-# LANGUAGE ParallelListComp #-} -{-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE Arrows #-} +{-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE PackageImports #-} +{-# LANGUAGE ParallelListComp #-} +{-# LANGUAGE PartialTypeSignatures #-} +{-# LANGUAGE TypeFamilies #-} module Reanimate.Examples where -import qualified Data.Map as M import Codec.Picture.Types -import Control.Lens () +import Control.Lens () import Control.Monad -import Data.Text (Text, pack) -import "svg-tree" Graphics.Svg as S +import qualified Data.Map as M +import Data.Text (Text, pack) +import Graphics.SvgTree as S import Linear.V2 import Numeric import Text.Printf import Reanimate.Combinators +import Reanimate.Diagrams import Reanimate.LaTeX import Reanimate.Monad 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 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 diff --git a/src/Reanimate/LaTeX.hs b/src/Reanimate/LaTeX.hs index 835d42d..aed8c6c 100644 --- a/src/Reanimate/LaTeX.hs +++ b/src/Reanimate/LaTeX.hs @@ -13,7 +13,7 @@ import System.FilePath (replaceExtension, takeFileName, ()) import System.IO.Unsafe (unsafePerformIO) import Control.Lens (over, set, (%~), (&), (.~), (^.)) -import "svg-tree" Graphics.Svg (Document (..), Tree (..), defaultSvg, +import Graphics.SvgTree (Document (..), Tree (..), defaultSvg, elements, loadSvgFile, parseSvgFile, xmlOfDocument) import Text.XML.Light (elContent) diff --git a/src/Reanimate/Monad.hs b/src/Reanimate/Monad.hs index ddae705..6eab8d6 100644 --- a/src/Reanimate/Monad.hs +++ b/src/Reanimate/Monad.hs @@ -1,6 +1,6 @@ module Reanimate.Monad where -import Control.Arrow () +import Control.Arrow () import qualified Control.Category as C import Control.Monad.State import Data.Fixed @@ -8,8 +8,9 @@ import Data.Fixed (mod') import qualified Data.Map as M import Data.Monoid ((<>)) import Data.Text (Text, pack) -import "svg-tree" Graphics.Svg (Document (..), Number (..), Tree, - xmlOfDocument, Tree(..), Text(..), TextSpan(..), TextSpanContent(..)) +import Graphics.SvgTree (Document (..), Number (..), Text (..), + TextSpan (..), TextSpanContent (..), + Tree, Tree (..), xmlOfDocument) import Reanimate.LaTeX import Reanimate.Svg import Text.XML.Light (elContent) diff --git a/src/Reanimate/Render.hs b/src/Reanimate/Render.hs index 1760662..bea28be 100644 --- a/src/Reanimate/Render.hs +++ b/src/Reanimate/Render.hs @@ -8,11 +8,11 @@ import Control.Parallel.Strategies import qualified Data.ByteString.Lazy.Char8 as BS import qualified Data.Text 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.Misc import Reanimate.Monad -import Reanimate.Diagrams import System.Directory (renameFile) import System.FilePath (takeExtension, takeFileName, ()) diff --git a/src/Reanimate/Svg.hs b/src/Reanimate/Svg.hs index 0d8c3cb..4728c33 100644 --- a/src/Reanimate/Svg.hs +++ b/src/Reanimate/Svg.hs @@ -1,24 +1,24 @@ module Reanimate.Svg where -import Codec.Picture (PixelRGBA8 (..)) +import Codec.Picture (PixelRGBA8 (..)) import Codec.Picture.Types import Control.Arrow -import Control.Lens (over, set, (%~), (&), (.~), (^.)) +import Control.Lens (over, set, (%~), (&), (.~), (^.)) import Control.Monad.Fix import Control.Monad.State -import Data.Attoparsec.Text (parseOnly) +import Data.Attoparsec.Text (parseOnly) import Data.List -import qualified Data.Map as Map +import qualified Data.Map as Map import Data.Maybe -import qualified Data.Text as T -import qualified Geom2D.CubicBezier as Bezier -import "svg-tree" Graphics.Svg -import "svg-tree" Graphics.Svg.PathParser +import qualified Data.Text as T +import qualified Geom2D.CubicBezier as Bezier +import Graphics.SvgTree +import Graphics.SvgTree.PathParser import Linear.Metric import Linear.V2 import Linear.Vector import Reanimate.Svg.NamedColors -import qualified Reanimate.Transform as Transform +import qualified Reanimate.Transform as Transform import Debug.Trace @@ -44,7 +44,7 @@ replaceUses doc = doc & elements %~ map (mapTree replace) _ -> TransformUnknown docTree = GroupTree $ set groupChildren (doc^.elements) defaultSvg idMap = foldTree updMap Map.empty docTree `Map.union` - Map.mapMaybe elementToTree (doc^.definitions) + (doc^.definitions) updMap m tree = case tree^.drawAttr.attrId of Nothing -> m @@ -330,8 +330,8 @@ svgBoundingPoints t = map (Transform.transformPoint m) $ RectangleTree rect -> case mapTuple (toUserUnit defaultDPI) (rect^.rectUpperLeftCorner) of (Num x, Num y) -> [V2 x y] ++ - case mapTuple (toUserUnit defaultDPI) (rect^.rectWidth, rect^.rectHeight) of - (Num w, Num h) -> [V2 (x+w) (y+h)] + case mapTuple (fmap $ toUserUnit defaultDPI) (rect^.rectWidth, rect^.rectHeight) of + (Just (Num w), Just (Num h)) -> [V2 (x+w) (y+h)] _ -> [] _ -> [] TextTree{} -> [] @@ -427,8 +427,8 @@ withClipPathRef ref = drawAttr %~ clipPathRef .~ pure ref mkRect :: Point -> Number -> Number -> Tree mkRect corner width height = RectangleTree $ defaultSvg & rectUpperLeftCorner .~ corner - & rectWidth .~ width - & rectHeight .~ height + & rectWidth .~ Just width + & rectHeight .~ Just height mkBoundingRect :: Tree -> Double -> Tree mkBoundingRect src margin = diff --git a/src/Reanimate/Transform.hs b/src/Reanimate/Transform.hs index b5bbdc2..6ba3ba3 100644 --- a/src/Reanimate/Transform.hs +++ b/src/Reanimate/Transform.hs @@ -7,10 +7,10 @@ module Reanimate.Transform -- XXX: Use Linear.Matrix instead of Data.Matrix to drop the 'matrix' dependency. import Data.List -import "matrix" Data.Matrix (Matrix) -import qualified "matrix" Data.Matrix as M +import "matrix" Data.Matrix (Matrix) +import qualified "matrix" Data.Matrix as M import Data.Maybe -import "svg-tree" Graphics.Svg +import Graphics.SvgTree import Linear.V2 type TMatrix = Matrix Coord diff --git a/stack.yaml b/stack.yaml index 163ada5..5b51b1c 100644 --- a/stack.yaml +++ b/stack.yaml @@ -3,7 +3,7 @@ resolver: lts-11.22 allow-newer: false extra-deps: -- svg-tree-0.6.2.3 +- reanimate-svg-0.7.0.0 - diagrams-1.4@sha256:3e36369e84115b900fd9dcb570672a188339a470eb19ca62170775cd835cf8ca - diagrams-contrib-1.4.3@sha256:bcfa6c85f8c33b8c48c3a61b7216afdebd51cd793c50da3a2dd358827d25fc76 - diagrams-core-1.4.1.1@sha256:6ef6b17785d77997c481eb085570e21b6a00cc91d086fbf49490504130ebc7d1