import os
import twc.embedded.imagecut.config

TWCPERSDIR = os.environ['TWCPERSDIR']
config = twc.embedded.imagecut.config.Config()

####################################################################
# WARNING: NONE of the values in this config can be changed or it will
# break 'imagecut' AND it will break 'imagesmooth'. So why are theese
# values in a config if you can't change them? It's so the colors
# and precip types are human readable for testing and verification
# purposes!
####################################################################
    
# maps a unique precip type number number to an RGB value
PRECIP_NONE    = 0
PRECIP_RAIN    = 1  
PRECIP_MIXED   = 2
PRECIP_SNOW    = 3
# maps an RGB color to a color weight/score
config.setSmoothedColorPalette(
        # Red   Grn  Blue  Type Score
        # RAIN
       [(  20,     20,     20,   PRECIP_NONE, 0),   # drop-shadow  (tv-safe black)
        (  64,    204,     85,   PRECIP_RAIN, 1),   # level  1: light green
        (  32,    178,     42,   PRECIP_RAIN, 2),   # level  2: lightish green
        (   0,    153,      0,   PRECIP_RAIN, 3),   # level  3: green
        (   0,    127,      0,   PRECIP_RAIN, 3),   # level  3: darkish green
        (   0,    102,      0,   PRECIP_RAIN, 4),   # level  4: dark green
        (   0,     90,      0,   PRECIP_RAIN, 4),   # level  4: very dark green
        ( 191,    204,     85,   PRECIP_RAIN, 5),   # level  5: pale green-yellow
        ( 191,    178,     42,   PRECIP_RAIN, 5),   # level  5: yellow
        ( 191,    153,      0,   PRECIP_RAIN, 6),   # level  6: yellow-orange
        ( 223,    102,      0,   PRECIP_RAIN, 6),   # level  6: reddish-orange
        ( 255,     51,      0,   PRECIP_RAIN, 7),   # level  6: red-orange
        ( 223,     51,      0,   PRECIP_RAIN, 7),   # level  6: orange
        ( 191,     51,      0,   PRECIP_RAIN, 8),   # level  8: red
        ( 159,     25,      0,   PRECIP_RAIN, 8),   # level  8: red 
        ( 128,      0,      0,   PRECIP_RAIN, 9),   # level  9: darkish red
        (  96,      0,      0,   PRECIP_RAIN, 9),   # level  9: darkish red
        (  64,      0,      0,   PRECIP_RAIN, 10),   # level 10: dark red
        # MIXED - mixed intensities only go to 7
        # (because frozen precip can't fall as fast as rain)
        # (i dont't know, go ask a meteorologist)
        ( 235,    230,    215,   PRECIP_MIXED, 1),   # level 1: light purple
        ( 221,    112,    195,   PRECIP_MIXED, 2),   # level 2: ..
        ( 208,     94,    176,   PRECIP_MIXED, 3),   # level 3: ..
        ( 199,     82,    163,   PRECIP_MIXED, 4),   # level 4: purple
        ( 190,     70,    150,   PRECIP_MIXED, 5),   # level 5: ..
        ( 180,     60,    140,   PRECIP_MIXED, 6),   # level 6: ..
        ( 170,     50,    130,   PRECIP_MIXED, 7),   # level 7: dark purple
        # SNOW - snow intensities only go to 7
        ( 150,    150,    150,   PRECIP_SNOW,  1),   # level 1: dark grey
        ( 165,    165,    165,   PRECIP_SNOW,  2),   # level 2: ..
        ( 180,    180,    180,   PRECIP_SNOW,  3),   # level 3: grey
        ( 195,    195,    195,   PRECIP_SNOW,  4),   # level 4: ..
        ( 210,    210,    210,   PRECIP_SNOW,  5),   # level 5: light grey
        ( 220,    220,    220,   PRECIP_SNOW,  6),   # level 6: ..
        ( 230,    230,    230,   PRECIP_SNOW,  7)]   # level 7: white (tv safe)
)

# maps a unique palette number/index number to an RGB value

# WARNING: DO NOT change these values!
NO_PRECIP = 0
RAIN      = 1  
MIXED     = 2
SNOW      = 3
# This table shows what colors are required to be in a radar image
# generated by WxPro.  This is a finite list. Not all these colors
# need to be in the image, but any colors present in the image that
# are not in this table will be removed during image scaling!
# This table gives a unique RGB color to palette/intensity mapping.
config.setWxProColorPalette(
       # - Red,   Grn,  Blue, Palette, Intensity
       # - NO_PRECIP
       [(    0,    0,     0,   NO_PRECIP, 1, ), # transparency: true black
        (   20,   20,    20,   NO_PRECIP, 2, ), # drop shadow: tv-safe black
       # - RAIN
        (   64,  204,    85,   RAIN,     1),    # light green
        (    0,  153,     0,   RAIN,     2),    # med green
        (    0,  102,     0,   RAIN,     3),    # dark green
        (  191,  204,    85,   RAIN,     4),    # yellow
        (  191,  153,     0,   RAIN,     5),    # orange
        (  255,   51,     0,   RAIN,     6),    # ..
        (  191,   51,     0,   RAIN,     7),    # red
        (  128,    0,     0,   RAIN,     8),    # ..
        (   64,    0,     0,   RAIN,     9),    # dark red
       # - MIXED
        (  235,  130,   215,  MIXED,     1),    # light purple
        (  208,   94,   176,  MIXED,     2),    # ..
        (  190,   70,   150,  MIXED,     3),    # ..
        (  170,   50,   130,  MIXED,     4),    # dark purple
       # - SNOW
        (  150,  150,   150,   SNOW,     1),    # dark grey
        (  180,  180,   180,   SNOW,     2),    # light grey
        (  210,  210,   210,   SNOW,     3),    # grey
        (  230,  230,   230,   SNOW,     4)]    # white
)

# This table gives a unique palette/intensity mapping back to an RGB color.
# Once the scaling algorithm calculates the proper palette and intensity of
# a pixel, then we have to look up what color to make it.
config.setIntensityPalette(
       # - Palette #, Color #, Red,   Grn,  Blue
       # - NO_PRECIP
       [(  NO_PRECIP,      1,      0,     0,     0,  ),   # transparency: true black
        (  NO_PRECIP,      2,     20,    20,    20,  ),   # drop shadow: tv-safe black
        (  NO_PRECIP,      3,     20,    20,    20,  ),   # drop shadow: tv-safe black
        (  NO_PRECIP,      4,     20,    20,    20,  ),   # drop shadow: tv-safe black
        (  NO_PRECIP,      5,     20,    20,    20,  ),   # drop shadow: tv-safe black
        (  NO_PRECIP,      6,     20,    20,    20,  ),   # drop shadow: tv-safe black
        (  NO_PRECIP,      7,     20,    20,    20,  ),   # drop shadow: tv-safe black
        (  NO_PRECIP,      8,     20,    20,    20,  ),   # drop shadow: tv-safe black
        (  NO_PRECIP,      9,     20,    20,    20,  ),   # drop shadow: tv-safe black
       # - RAIN
        (    RAIN,      1,     64,   204,    85,  ),   # light green
        (    RAIN,      2,      0,   153,     0,  ),   # med green
        (    RAIN,      3,      0,   102,     0,  ),   # dark green
        (    RAIN,      4,    191,   204,    85,  ),   # yellow
        (    RAIN,      5,    191,   153,     0,  ),   # orange
        (    RAIN,      6,    255,    51,     0,  ),   # ..
        (    RAIN,      7,    191,    51,     0,  ),   # red
        (    RAIN,      8,    128,     0,     0,  ),   # ..
        (    RAIN,      9,     64,     0,     0,  ),   # dark red
       # - MIXED
        (   MIXED,      1,    235,   130,   215,  ),   # light purple
        (   MIXED,      2,    208,    94,   176,  ),   # ..
        (   MIXED,      3,    190,    70,   150,  ),   # ..
        (   MIXED,      4,    170,    50,   130,  ),   # dark purple
        (   MIXED,      5,    170,    50,   130,  ),   # dark purple
        (   MIXED,      6,    170,    50,   130,  ),   # dark purple
        (   MIXED,      7,    170,    50,   130,  ),   # dark purple
        (   MIXED,      8,    170,    50,   130,  ),   # dark purple
        (   MIXED,      9,    170,    50,   130,  ),   # dark purple
       # - SNOW
        (    SNOW,      1,    150,   150,   150,  ),   # dark grey
        (    SNOW,      2,    180,   180,   180,  ),   # light grey
        (    SNOW,      3,    210,   210,   210,  ),   # grey
        (    SNOW,      4,    230,   230,   230,  ),   # white
        (    SNOW,      5,    230,   230,   230,  ),   # white
        (    SNOW,      6,    230,   230,   230,  ),   # white
        (    SNOW,      7,    230,   230,   230,  ),   # white
        (    SNOW,      8,    230,   230,   230,  ),   # white
        (    SNOW,      9,    230,   230,   230,  )]   # white
)
