Add 'withViewBox'

Former-commit-id: 1a763b558770bd865ea229dee9ed0388b4bb7126
This commit is contained in:
David Himmelstrup 2020-05-12 20:17:39 +08:00
commit 0a67c8d5a3
2 changed files with 22 additions and 0 deletions

View file

@ -1,5 +1,9 @@
# Revision history for reanimate # Revision history for reanimate
## 0.3.2.0 -- unreleased
* Add helper for creating custom viewboxes.
## 0.3.1.0 -- 2020-05-12 ## 0.3.1.0 -- 2020-05-12
* Expose 'mkImage' * Expose 'mkImage'

View file

@ -45,6 +45,7 @@ module Reanimate.Svg.Constructors
, aroundCenterX , aroundCenterX
, aroundCenterY , aroundCenterY
, withTransformations , withTransformations
, withViewBox
-- * Other -- * Other
, mkColor , mkColor
, mkBackground , mkBackground
@ -368,3 +369,20 @@ mkText str =
-- be overwritten by the user. -- be overwritten by the user.
where where
span_ = defaultSvg & spanContent .~ [SpanText str] span_ = defaultSvg & spanContent .~ [SpanText str]
-- | Switch from the default viewbox to a custom viewbox. Nesting custom viewboxes is
-- unlikely to give good results. If you need nested custom viewboxes, you will have
-- to configure them by hand.
--
-- The viewbox argument is (min-x, min-y, width, height).
withViewBox :: (Double, Double, Double, Double) -> Tree -> Tree
withViewBox vbox child = translate (-screenWidth/2) (-screenHeight/2) $
SvgTree $ Document
{ _viewBox = Just vbox
, _width = Just (Num screenWidth)
, _height = Just (Num screenHeight)
, _elements = [child]
, _description = ""
, _documentLocation = ""
, _documentAspectRatio = PreserveAspectRatio False AlignNone Nothing
}