summaryrefslogtreecommitdiffhomepage
path: root/src/Xmobar/Draw/Types.hs
blob: 219a64b20f931ed7503c11147444088e7b6864dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
------------------------------------------------------------------------------
-- |
-- Module: Xmobar.Draw.Types
-- Copyright: (c) 2022 jao
-- License: BSD3-style (see LICENSE)
--
-- Maintainer: mail@jao.io
-- Stability: unstable
-- Portability: portable
-- Created: Tue Sep 20, 2022 04:49
--
--
-- Type definitions for describing drawing operations
--
------------------------------------------------------------------------------


module Xmobar.Draw.Types where

import GHC.Word (Word32, Word64)

import Data.Map (Map)

import Xmobar.Config.Types (Config)
import Xmobar.Run.Actions (Action)
import Xmobar.Run.Parsers (Segment)

type Position = Double
type ActionPos = ([Action], Position, Position)
type Actions = [ActionPos]

type BitmapDrawer = Double -> Double -> String -> IO ()

data BitmapType = Mono Word64 | Poly

data Bitmap = Bitmap { bWidth  :: Word32
                     , bHeight :: Word32
                     , bPixmap :: Word64
                     , bShapepixmap :: Maybe Word64
                     , bBitmaptype :: BitmapType
                     }

type BitmapCache = Map FilePath Bitmap


data DrawContext = DC { dcBitmapDrawer :: BitmapDrawer
                      , dcBitmapLookup :: String -> Maybe Bitmap
                      , dcConfig :: Config
                      , dcWidth :: Double
                      , dcHeight :: Double
                      , dcSegments :: [[Segment]]
                      }