SvgIcons-0.1.0.0: src/Icons/Office.hs
{-# LANGUAGE OverloadedStrings #-}
module Icons.Office where
import Text.Blaze.Svg11 ((!))
import Text.Blaze.Svg11 as S
import Text.Blaze.Svg11.Attributes as A
import Core.Utils
{- |
A list with all the icons of this module,
together with appropriate names.
>svgOffice :: [ (String , S.Svg) ]
>svgOffice =
> [ (,) "envelope" envelope
> , (,) "pencil" pencil
> , (,) "document" document
> , (,) "archive" archive
> , (,) "pin" pin
> , (,) "clip" paperclip
> , (,) "clipboard" clipboard
> , (,) "printer" printer
> , (,) "lupe" lupe
> , (,) "briefcase" briefcase
> ]
-}
svgOffice :: [ (String , S.Svg) ]
svgOffice =
[ (,) "envelope" envelope
, (,) "pencil" pencil
, (,) "document" document
, (,) "archive" archive
, (,) "pin" pin
, (,) "paperclip" paperclip
, (,) "clipboard" clipboard
, (,) "printer" printer
, (,) "lupe" lupe
, (,) "briefcase" briefcase
]
--------------------------------------------------------------------------------
{- |



-}
envelope :: Svg
envelope =
S.path
! d dirs
! strokeLinejoin "round"
where
kx = 0.94
ky = 0.618 * kx
mx = 0
my = 0
s = 0.03
dirs = mkPath $ do
m (-kx) (-ky)
l ( mx) ( my)
l ( kx) (-ky)
S.z
m (-kx) (-ky + s)
l (-kx) ( ky)
l ( kx) ( ky)
l ( kx) (-ky + s)
l ( mx) ( my + s)
S.z
{- |



-}
pencil :: Svg
pencil =
S.path
! d pencilPath
! strokeLinejoin "round"
where
w = 0.6 -- width of the pencil
x1 = -w/2
x2 = w/2
y1 = -0.9
y2 = -0.76
y3 = -0.6
y4 = 0.4
y5 = y6 - 0.15
y6 = 0.94
pencilPath = mkPath $ do
m 0 y5
l 0 y6
l x1 y4
l x2 y4
l 0 y6
m x1 y4
l x1 y3
l x2 y3
l x2 y4
m 0 y4
l 0 y3
m x1 y3
l x1 y2
l x2 y2
l x2 y3
m x1 y2
l x1 y1
aa (w/2) 0.03 0 True True x2 y1
l x2 y2
{- |



-}
document :: Svg
document =
S.g $ do
paperBorder
S.path
! strokeLinecap "round"
! d lines
S.path
! A.d xMark
! fill "none"
! strokeLinecap "round"
! transform (translate (-0.25) 0.55 <> rotateAround 45 0 0)
pencil
! transform (translate 0.55 0.35 <> rotateAround 45 0 0 <> S.scale 0.4 0.4)
where
py = 0.95
px = 0.618 * py
paperBorder =
S.path
! strokeLinejoin "round"
! strokeLinecap "round"
! fill "none"
! d paperPath
paperPath = mkPath $ do
m ( px) (-0.16)
l ( px) (-py)
l (-px) (-py)
l (-px) ( py)
l ( px) ( py)
l ( px) ( 0.7)
--------------------------------------------------
xl = 0.4
y1 = -0.65
y2 = -0.35
y3 = -0.05
lines = mkPath $ do
m (-xl) y1 >> l xl y1
m (-xl) y2 >> l xl y2
m (-xl) y3 >> l xl y3
--------------------------------------------------
m1 = 0.15
xMark = mkPath $ do
m (-m1) 0
l ( m1) 0
m 0 (-m1)
l 0 ( m1)
{- |



-}
archive :: S.Svg
archive =
S.g $ do
S.path
! A.strokeLinejoin "round"
! A.d archiveBody
archiveHandle (-ky * 2/3)
archiveHandle 0
archiveHandle ( ky * 2/3)
where
ky = 0.96
kx = 0.75
archiveBody = mkPath $ do
m (-kx) (-ky)
l (-kx) ( ky)
l ( kx) ( ky)
l ( kx) (-ky)
S.z
m (-kx) (-1/3 * ky)
l ( kx) (-1/3 * ky)
m (-kx) ( 1/3 * ky)
l ( kx) ( 1/3 * ky)
archiveHandle h =
S.path
! A.fill "none"
! A.strokeLinecap "round"
! A.transform (translate 0 (hr/2))
! A.d (handleDirs h)
hx = 0.25
hr = 0.07
handleDirs h = mkPath $ do
m (-hx) (h - hr)
aa hr hr 0 False False (-hx + hr) (h)
l ( hx - hr) (h)
aa hr hr 0 False False ( hx) (h - hr)
{- |



-}
pin :: Svg
pin =
S.g $
S.path
! A.strokeLinejoin "arcs"
! A.strokeMiterlimit "8"
! A.d (mkPath $ topPath >> bodyPath >> needlePath)
! A.transform (S.rotateAround 45 0 0)
where
w1 = 0.26
w2 = 0.08
y1 = -0.95
y2 = -0.7
y3 = -0.1
y4 = 0.16
y5 = 0.6
y6 = 1.03
r1 = (y2 - y1) / 2
r2 = (y4 - y3)
topPath = do
m (-w1) y1
aa r1 r1 0 True False (-w1) y2
l ( w1) y2
aa r1 r1 0 True False ( w1) y1
l (-w1) y1
bodyPath = do
m (-w1) y2
l (-w1) y3
aa r2 r2 0 False False (-w1 - r2) y4
l ( w1 + r2) y4
aa r2 r2 0 False False ( w1) y3
l ( w1) y2
needlePath = do
m (-w2) y4
l (-w2) y5
l 0 y6
l ( w2) y5
l ( w2) y4
{- |



-}
paperclip :: Svg
paperclip =
S.g $
S.path
! A.d clipDirs
! A.transform (rotateAround 45 0 0)
where
w = 0.07
x1 = 0.2
x2 = 0.44
r1 = x1
r2 = (x1 + x2) / 2
r3 = x2
y1 = 0.5
y2 = -0.48
y3 = 0.68
y4 = -0.66
clipDirs = mkPath $ do
m (-x1 - w) y1
l (-x1 - w) y2
aa ( r1 + w) ( r1 + w) 0 True True ( x1 + w) y2
l ( x1 + w) y3
aa ( r2 + w) ( r2 + w) 0 True True (-x2 - w) y3
l (-x2 - w) y4
aa ( r3 + w) ( r3 + w) 0 True True ( x2 + w) y4
l ( x2 + w) y1
aa ( w) ( w) 0 True True ( x2 - w) y1
l ( x2 - w) y4
aa ( r3 - w) ( r3 - w) 0 True False (-x2 + w) y4
l (-x2 + w) y3
aa ( r2 - w) ( r2 - w) 0 True False ( x1 - w) y3
l ( x1 - w) y2
aa ( r1 - w) ( r1 - w) 0 True False (-x1 + w) y2
l (-x1 + w) y1
aa ( w) ( w) 0 True True (-x1 - w) y1
S.z
{- |



-}
clipboard :: Svg
clipboard =
S.g $ do
S.path
! d boardDirs
S.path
! d clipDirs
where
dx1 = 0.3
dx2 = 0.7
y1 = -0.9
y2 = -0.7
y3 = -0.5
y4 = 0.9
r1 = 0.2
r2 = 0.24
boardDirs = mkPath $ do
m (-dx1 ) (y2 )
l (-dx2 + r2) (y2 )
aa r2 r2 0 False False (-dx2 ) (y2 + r2)
l (-dx2 ) (y4 - r2)
aa r2 r2 0 False False (-dx2 + r2) (y4 )
l ( dx2 - r2) (y4 )
aa r2 r2 0 False False ( dx2 ) (y4 - r2)
l ( dx2 ) (y2 + r2)
aa r2 r2 0 False False ( dx2 - r2) (y2 )
l ( dx1 ) (y2 )
clipDirs = mkPath $ do
m (-dx1 ) (y2 )
l (-dx1 ) (y3 )
l ( dx1 ) (y3 )
l ( dx1 ) (y1 + r1)
aa r1 r1 0 False False ( dx1 - r1) (y1 )
l (-dx1 + r1) (y1 )
aa r1 r1 0 False False (-dx1 ) (y1 + r1)
S.z
{- |



-}
printer :: Svg
printer =
S.g $ do
S.path
! A.d topDirs
S.path
! A.d midDirs
S.path
! A.strokeLinecap "round"
! A.d botDirs
dots
where
x0 = 0.5
x1 = 0.9
x2 = x0 - 0.1
y0 = 0.4
y1 = 0.8
y2 = 0.2
y3 = 0.94
ky = (y3 - y2)/4
r0 = 0.1
dx = 0.3
dy = -0.1
dr = 0.09
topDirs = mkPath $ do
m (-x0) (-y0)
l (-x0) (-y1)
l ( x0) (-y1)
l ( x0) (-y0)
midDirs = mkPath $ do
m (-x0) ( y0)
l (-x1 + r0) ( y0)
aa r0 r0 0 False True (-x1) ( y0 - r0)
l (-x1) (-y0 + r0)
aa r0 r0 0 False True (-x1 + r0) (-y0)
l ( x1 - r0) (-y0)
aa r0 r0 0 False True ( x1) (-y0 + r0)
l ( x1) ( y0 - r0)
aa r0 r0 0 False True ( x1 - r0) ( y0)
l ( x0) ( y0)
botDirs = mkPath $ do
m (-x0) y2
l ( x0) y2
l ( x0) y3
l (-x0) y3
S.z
m (-x2) (y2 + ky)
l ( x2) (y2 + ky)
m (-x2) (y2 + 2*ky)
l ( x2) (y2 + 2*ky)
m (-x2) (y2 + 3*ky)
l ( x2) (y2 + 3*ky)
dots =
do
S.circle
! A.stroke "none"
! (A.cx .: (-dx))
! (A.cy .: dy)
! (A.r .: dr)
! A.fill "hotpink"
S.circle
! A.stroke "none"
! (A.cx .: 0 )
! (A.cy .: dy)
! (A.r .: dr)
! A.fill "lime"
S.circle
! A.stroke "none"
! (A.cx .: dx)
! (A.cy .: dy)
! (A.r .: dr)
! A.fill "deepskyblue"
{- |



-}
lupe :: S.Svg
lupe =
S.g $ do
S.path
! A.d dirs
! A.fillRule "evenodd"
! A.transform (rotateAround 45 0 0)
where
w1 = 0.08
w2 = 0.12
r1 = 0.54
r2 = r1 + 2*w1
x1 = 0.07
x2 = w2
y1 = 0.3
y2 = 0.6
y3 = 1.12
dirs = mkPath $ do
m 0 (y1 - w1)
aa r1 r1 0 True False (-0.01) ( y1 - w1)
S.z
m (-x1) (y1 + w1)
aa r2 r2 0 True True ( x1) ( y1 + w1)
q x2 (y2 - 0.18) x2 y2
l x2 y3
aa w2 w2 0 True True (-x2) ( y3)
l (-x2) y2
q (-x2) (y2 - 0.18) (-x1) (y1 + w1)
S.z
{- |



-}
briefcase :: Svg
briefcase =
S.g $ do
S.path
! A.strokeLinejoin "round"
! A.d top
S.path
! A.strokeLinejoin "round"
! A.d bot
button
where
r1 = 0.2
r2 = 0.07
x1 = 0.94
x2 = 0.46
x3 = 0.3
y1 = -0.86
y2 = -0.7
y3 = -0.54
y4 = 0
y5 = 0.06
y6 = 0.8
rx1 = 0.12
ry1 = 0.18
rx2 = 0.07
ry2 = 0.135
top = mkPath $ do
m x3 y3
l x3 y2
l (-x3) y2
l (-x3) y3
S.z
m (-x1) y4
l (-x1) (y3 + r1)
aa r1 r1 0 False True (-x1 + r1) y3
l (-x2) y3
l (-x2) (y1 + r2)
aa r2 r2 0 False True (-x2 + r2) y1
l ( x2 - r2) y1
aa r2 r2 0 False True ( x2) (y1 + r2)
l x2 y3
l ( x1 - r1) y3
aa r1 r1 0 False True ( x1) (y3 + r1)
l x1 y4
l rx1 y4
aa rx1 ry1 0 False False (-rx1) y4
S.z
bot = mkPath $ do
m (-x1) y5
l (-x1) (y6 - r1)
aa r1 r1 0 False False (-x1 + r1) y6
l ( x1 - r1) y6
aa r1 r1 0 False False x1 (y6 - r1)
l x1 y5
l rx1 y5
aa rx1 ry1 0 False True (-rx1) y5
S.z
button =
S.ellipse
! (A.cx .: 0)
! (A.cy .: (y5 + y4)/2)
! (A.rx .: rx2)
! (A.ry .: ry2)