{-# LANGUAGE OverloadedStrings #-}
module Main where
import System.Directory
import Text.Blaze.Svg11 ((!))
import Text.Blaze.Svg11 as S
import Text.Blaze.Svg11.Attributes as A
import SvgIcons.Core.Geometry
import SvgIcons.Core.Render
import SvgIcons.Core.Style
import SvgIcons.Core.Utils
import SvgIcons.Icons (exampleIcons)
import SvgIcons.Icons.Arrows (svgArrows)
import SvgIcons.Icons.Business (svgBusiness)
import SvgIcons.Icons.Coding (svgCoding)
import SvgIcons.Icons.Computer (svgComputer)
import SvgIcons.Icons.Cosmos (svgCosmos)
import SvgIcons.Icons.Human (svgHuman)
import SvgIcons.Icons.Math (svgMath)
import SvgIcons.Icons.Office (svgOffice)
import SvgIcons.Icons.Outdoors (svgOutdoors)
import SvgIcons.Icons.Religion (svgReligion)
import SvgIcons.Icons.Textarea (svgTextarea)
import SvgIcons.Icons.Tools (svgTools)
import SvgIcons.Images.CountryFlags (countryFlags)
import SvgIcons.Images.Mosaics (mosaicSample)
main :: IO ()
IO ()
main = [Char] -> IO ()
renderAll [Char]
"./svg"
renderAll :: FilePath -> IO ()
renderAll :: [Char] -> IO ()
renderAll [Char]
svgFolder = do
Bool -> [Char] -> IO ()
createDirectoryIfMissing Bool
False [Char]
svgFolder
[Char] -> IO ()
removeDirectoryRecursive [Char]
svgFolder
[Char] -> IO ()
createDirectory [Char]
svgFolder
[Char] -> IO ()
renderExamples ([Char]
svgFolder forall a. [a] -> [a] -> [a]
++ [Char]
"/examples/")
[Char] -> IO ()
renderIcons ([Char]
svgFolder forall a. [a] -> [a] -> [a]
++ [Char]
"/icons/")
[Char] -> IO ()
renderImages ([Char]
svgFolder forall a. [a] -> [a] -> [a]
++ [Char]
"/images/")
[Char] -> Svg -> IO ()
renderTest ([Char]
svgFolder forall a. [a] -> [a] -> [a]
++ [Char]
"/test/") (Int -> Float -> Float -> (Float, Float) -> Svg
starPolygonOverlap Int
7 Float
900 Float
50 (Float
0,Float
0))
[Char] -> IO ()
putStrLn [Char]
"Svg files compiled correctly"
renderExamples :: FilePath -> IO ()
renderExamples :: [Char] -> IO ()
renderExamples [Char]
path = do
[Char] -> IO ()
createDirectory [Char]
path
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
path [([Char], Svg)]
exampleIcons
[Char] -> IO ()
renderGeometryExamples [Char]
path
renderGeometryExamples :: FilePath -> IO ()
renderGeometryExamples :: [Char] -> IO ()
renderGeometryExamples [Char]
path = do
[Char] -> IO ()
createDirectory [Char]
p
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
p [([Char]
"anglesHelp", Svg
anglesHelp)]
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
p (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fillIcons [([Char], Svg)]
geometryExamples)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
p (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fullIcons [([Char], Svg)]
geometryExamples)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
p (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
strkIcons [([Char], Svg)]
geometryExamples)
where
p :: [Char]
p = [Char]
path forall a. [a] -> [a] -> [a]
++ [Char]
"/geometry/"
fillIcons :: ([Char], Svg) -> ([Char], Svg)
fillIcons ([Char]
a,Svg
b) = ([Char]
a forall a. [a] -> [a] -> [a]
++ [Char]
"_fill" , Svg -> Svg
stdDims forall a b. (a -> b) -> a -> b
$ Svg -> Svg
fillStyle Svg
b)
fullIcons :: ([Char], Svg) -> ([Char], Svg)
fullIcons ([Char]
a,Svg
b) = ([Char]
a forall a. [a] -> [a] -> [a]
++ [Char]
"_full" , Svg -> Svg
stdDims forall a b. (a -> b) -> a -> b
$ Svg -> Svg
fullStyle Svg
b)
strkIcons :: ([Char], Svg) -> ([Char], Svg)
strkIcons ([Char]
a,Svg
b) = ([Char]
a forall a. [a] -> [a] -> [a]
++ [Char]
"_strk" , Svg -> Svg
stdDims forall a b. (a -> b) -> a -> b
$ Svg -> Svg
strkStyle Svg
b)
renderIcons :: FilePath -> IO ()
renderIcons :: [Char] -> IO ()
renderIcons [Char]
path =
do
[Char] -> IO ()
createDirectory [Char]
path
[Char] -> IO ()
createDirectory [Char]
arrowsPath
[Char] -> IO ()
createDirectory [Char]
businessPath
[Char] -> IO ()
createDirectory [Char]
codingPath
[Char] -> IO ()
createDirectory [Char]
computerPath
[Char] -> IO ()
createDirectory [Char]
cosmosPath
[Char] -> IO ()
createDirectory [Char]
humanPath
[Char] -> IO ()
createDirectory [Char]
mathPath
[Char] -> IO ()
createDirectory [Char]
officePath
[Char] -> IO ()
createDirectory [Char]
outdoorsPath
[Char] -> IO ()
createDirectory [Char]
religionPath
[Char] -> IO ()
createDirectory [Char]
textareaPath
[Char] -> IO ()
createDirectory [Char]
toolsPath
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
arrowsPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fillIcons [([Char], Svg)]
svgArrows)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
arrowsPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fullIcons [([Char], Svg)]
svgArrows)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
arrowsPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
strkIcons [([Char], Svg)]
svgArrows)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
businessPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fillIcons [([Char], Svg)]
svgBusiness)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
businessPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fullIcons [([Char], Svg)]
svgBusiness)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
businessPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
strkIcons [([Char], Svg)]
svgBusiness)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
codingPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fillIcons [([Char], Svg)]
svgCoding)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
codingPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fullIcons [([Char], Svg)]
svgCoding)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
codingPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
strkIcons [([Char], Svg)]
svgCoding)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
computerPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fillIcons [([Char], Svg)]
svgComputer)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
computerPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fullIcons [([Char], Svg)]
svgComputer)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
computerPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
strkIcons [([Char], Svg)]
svgComputer)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
cosmosPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fillIcons [([Char], Svg)]
svgCosmos)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
cosmosPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fullIcons [([Char], Svg)]
svgCosmos)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
cosmosPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
strkIcons [([Char], Svg)]
svgCosmos)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
humanPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fillIcons [([Char], Svg)]
svgHuman)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
humanPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fullIcons [([Char], Svg)]
svgHuman)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
humanPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
strkIcons [([Char], Svg)]
svgHuman)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
mathPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fillIcons [([Char], Svg)]
svgMath)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
mathPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fullIcons [([Char], Svg)]
svgMath)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
mathPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
strkIcons [([Char], Svg)]
svgMath)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
officePath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fillIcons [([Char], Svg)]
svgOffice)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
officePath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fullIcons [([Char], Svg)]
svgOffice)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
officePath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
strkIcons [([Char], Svg)]
svgOffice)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
outdoorsPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fillIcons [([Char], Svg)]
svgOutdoors)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
outdoorsPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fullIcons [([Char], Svg)]
svgOutdoors)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
outdoorsPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
strkIcons [([Char], Svg)]
svgOutdoors)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
religionPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fillIcons [([Char], Svg)]
svgReligion)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
religionPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fullIcons [([Char], Svg)]
svgReligion)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
religionPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
strkIcons [([Char], Svg)]
svgReligion)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
textareaPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fillIcons [([Char], Svg)]
svgTextarea)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
textareaPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fullIcons [([Char], Svg)]
svgTextarea)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
textareaPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
strkIcons [([Char], Svg)]
svgTextarea)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
toolsPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fillIcons [([Char], Svg)]
svgTools)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
toolsPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
fullIcons [([Char], Svg)]
svgTools)
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
toolsPath (forall a b. (a -> b) -> [a] -> [b]
map ([Char], Svg) -> ([Char], Svg)
strkIcons [([Char], Svg)]
svgTools)
where
fillIcons :: ([Char], Svg) -> ([Char], Svg)
fillIcons ([Char]
a,Svg
b) = ([Char]
a forall a. [a] -> [a] -> [a]
++ [Char]
"_fill" , Svg -> Svg
stdDims forall a b. (a -> b) -> a -> b
$ Svg -> Svg
fillStyle Svg
b)
fullIcons :: ([Char], Svg) -> ([Char], Svg)
fullIcons ([Char]
a,Svg
b) = ([Char]
a forall a. [a] -> [a] -> [a]
++ [Char]
"_full" , Svg -> Svg
stdDims forall a b. (a -> b) -> a -> b
$ Svg -> Svg
fullStyle Svg
b)
strkIcons :: ([Char], Svg) -> ([Char], Svg)
strkIcons ([Char]
a,Svg
b) = ([Char]
a forall a. [a] -> [a] -> [a]
++ [Char]
"_strk" , Svg -> Svg
stdDims forall a b. (a -> b) -> a -> b
$ Svg -> Svg
strkStyle Svg
b)
arrowsPath :: [Char]
arrowsPath = [Char]
path forall a. [a] -> [a] -> [a]
++ [Char]
"arrows/"
businessPath :: [Char]
businessPath = [Char]
path forall a. [a] -> [a] -> [a]
++ [Char]
"business/"
codingPath :: [Char]
codingPath = [Char]
path forall a. [a] -> [a] -> [a]
++ [Char]
"coding/"
computerPath :: [Char]
computerPath = [Char]
path forall a. [a] -> [a] -> [a]
++ [Char]
"computer/"
cosmosPath :: [Char]
cosmosPath = [Char]
path forall a. [a] -> [a] -> [a]
++ [Char]
"cosmos/"
humanPath :: [Char]
humanPath = [Char]
path forall a. [a] -> [a] -> [a]
++ [Char]
"human/"
mathPath :: [Char]
mathPath = [Char]
path forall a. [a] -> [a] -> [a]
++ [Char]
"math/"
officePath :: [Char]
officePath = [Char]
path forall a. [a] -> [a] -> [a]
++ [Char]
"office/"
outdoorsPath :: [Char]
outdoorsPath = [Char]
path forall a. [a] -> [a] -> [a]
++ [Char]
"outdoors/"
religionPath :: [Char]
religionPath = [Char]
path forall a. [a] -> [a] -> [a]
++ [Char]
"religion/"
textareaPath :: [Char]
textareaPath = [Char]
path forall a. [a] -> [a] -> [a]
++ [Char]
"textarea/"
toolsPath :: [Char]
toolsPath = [Char]
path forall a. [a] -> [a] -> [a]
++ [Char]
"tools/"
renderImages :: FilePath -> IO ()
renderImages :: [Char] -> IO ()
renderImages [Char]
path = do
[Char] -> IO ()
createDirectory [Char]
path
[Char] -> IO ()
createDirectory [Char]
countryFlagsPath
[Char] -> IO ()
createDirectory [Char]
mosaicsPath
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
countryFlagsPath [([Char], Svg)]
countryFlags
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
mosaicsPath [([Char], Svg)]
mosaicSample
where
countryFlagsPath :: [Char]
countryFlagsPath = [Char]
path forall a. [a] -> [a] -> [a]
++ [Char]
"countryFlags/"
mosaicsPath :: [Char]
mosaicsPath = [Char]
path forall a. [a] -> [a] -> [a]
++ [Char]
"mosaics/"
renderTest :: FilePath -> Svg -> IO ()
renderTest :: [Char] -> Svg -> IO ()
renderTest [Char]
path Svg
svgTest = do
[Char] -> IO ()
createDirectory [Char]
path
[Char] -> [([Char], Svg)] -> IO ()
renderSvgFiles [Char]
path [([Char], Svg)]
test
where
test :: [([Char], Svg)]
test =
[ ([Char]
"test", Svg
svgFramed)]
svgFramed :: Svg
svgFramed =
Svg -> Svg
S.svg
forall h. Attributable h => h -> Attribute -> h
! AttributeValue -> Attribute
A.viewbox AttributeValue
"-1000 -1000 2000 2000"
forall a b. (a -> b) -> a -> b
$ do
Svg -> Svg
S.g (Svg
svgTest forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Float -> [Char] -> Float -> Float -> Float -> Float -> Svg
frame Float
0.1 [Char]
"black" (-Float
1) (-Float
1) Float
2 Float
2)
forall h. Attributable h => h -> Attribute -> h
! AttributeValue -> Attribute
A.stroke AttributeValue
"black"
forall h. Attributable h => h -> Attribute -> h
! AttributeValue -> Attribute
A.strokeWidth AttributeValue
"10"
forall h. Attributable h => h -> Attribute -> h
! AttributeValue -> Attribute
A.fill AttributeValue
"white"