module Penny.Cabin.Scheme.Schemes where
import qualified Penny.Cabin.Scheme as E
import qualified Penny.Steel.Chunk as C
import qualified Penny.Steel.Chunk.Switch as Sw
light :: E.Scheme
light = E.Scheme "light" "for light background terminals"
lightLabels
lightLabels :: E.Labels (E.EvenAndOdd C.TextSpec)
lightLabels = E.Labels
{ E.debit = E.EvenAndOdd { E.eoEven = lightDebit lightEvenTextSpec
, E.eoOdd = lightDebit lightOddTextSpec }
, E.credit = E.EvenAndOdd { E.eoEven = lightCredit lightEvenTextSpec
, E.eoOdd = lightCredit lightOddTextSpec }
, E.zero = E.EvenAndOdd { E.eoEven = lightZero lightEvenTextSpec
, E.eoOdd = lightZero lightOddTextSpec }
, E.other = E.EvenAndOdd { E.eoEven = lightEvenTextSpec
, E.eoOdd = lightOddTextSpec }
}
lightEvenTextSpec :: C.TextSpec
lightEvenTextSpec = C.defaultTextSpec
lightOddTextSpec :: C.TextSpec
lightOddTextSpec = Sw.switchBackground C.color8_b_default
C.color256_b_255 lightEvenTextSpec
lightDebit :: C.TextSpec -> C.TextSpec
lightDebit = Sw.switchForeground C.color8_f_magenta C.color256_f_52
lightCredit :: C.TextSpec -> C.TextSpec
lightCredit = Sw.switchForeground C.color8_f_cyan C.color256_f_21
lightZero :: C.TextSpec -> C.TextSpec
lightZero = Sw.switchForeground C.color8_f_black C.color256_f_0
dark :: E.Scheme
dark = E.Scheme "dark" "for dark background terminals"
darkLabels
darkLabels :: E.Labels (E.EvenAndOdd C.TextSpec)
darkLabels = E.Labels
{ E.debit = E.EvenAndOdd { E.eoEven = darkDebit darkEvenTextSpec
, E.eoOdd = darkDebit darkOddTextSpec }
, E.credit = E.EvenAndOdd { E.eoEven = darkCredit darkEvenTextSpec
, E.eoOdd = darkCredit darkOddTextSpec }
, E.zero = E.EvenAndOdd { E.eoEven = darkZero darkEvenTextSpec
, E.eoOdd = darkZero darkOddTextSpec }
, E.other = E.EvenAndOdd { E.eoEven = darkEvenTextSpec
, E.eoOdd = darkOddTextSpec }
}
darkEvenTextSpec :: C.TextSpec
darkEvenTextSpec = C.defaultTextSpec
darkOddTextSpec :: C.TextSpec
darkOddTextSpec = Sw.switchBackground C.color8_b_default
C.color256_b_235 darkEvenTextSpec
darkDebit :: C.TextSpec -> C.TextSpec
darkDebit = Sw.switchForeground C.color8_f_magenta C.color256_f_208
darkCredit :: C.TextSpec -> C.TextSpec
darkCredit = Sw.switchForeground C.color8_f_cyan C.color256_f_45
darkZero :: C.TextSpec -> C.TextSpec
darkZero = Sw.switchForeground C.color8_f_white C.color256_f_15
plain :: E.Scheme
plain = E.Scheme "plain" "uses default terminal colors"
plainLabels
plainLabels :: E.Labels (E.EvenAndOdd C.TextSpec)
plainLabels = E.Labels
{ E.debit = E.EvenAndOdd C.defaultTextSpec C.defaultTextSpec
, E.credit = E.EvenAndOdd C.defaultTextSpec C.defaultTextSpec
, E.zero = E.EvenAndOdd C.defaultTextSpec C.defaultTextSpec
, E.other = E.EvenAndOdd C.defaultTextSpec C.defaultTextSpec
}