aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Text/Pandoc/ImageSize.hs12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/Text/Pandoc/ImageSize.hs b/src/Text/Pandoc/ImageSize.hs
index b698535ce..5cede7083 100644
--- a/src/Text/Pandoc/ImageSize.hs
+++ b/src/Text/Pandoc/ImageSize.hs
@@ -38,6 +38,8 @@ module Text.Pandoc.ImageSize ( ImageType(..)
, Dimension(..)
, Direction(..)
, dimension
+ , lengthToDim
+ , scaleDimension
, inInch
, inPixel
, inPoints
@@ -78,6 +80,7 @@ data Dimension = Pixel Integer
| Centimeter Double
| Inch Double
| Percent Double
+
instance Show Dimension where
show (Pixel a) = show a ++ "px"
show (Centimeter a) = showFl a ++ "cm"
@@ -202,6 +205,15 @@ numUnit s =
Just n -> Just (n, unit)
Nothing -> Nothing
+-- | Scale a dimension by a factor.
+scaleDimension :: Double -> Dimension -> Dimension
+scaleDimension factor dim =
+ case dim of
+ Pixel x -> Pixel (round $ factor * fromIntegral x)
+ Centimeter x -> Centimeter (factor * x)
+ Inch x -> Inch (factor * x)
+ Percent x -> Percent (factor * x)
+
-- | Read a Dimension from an Attr attribute.
-- `dimension Width attr` might return `Just (Pixel 3)` or for example `Just (Centimeter 2.0)`, etc.
dimension :: Direction -> Attr -> Maybe Dimension