aboutsummaryrefslogblamecommitdiff
path: root/functions/colors.zsh
blob: 8d75e670dfaa577a676a95ffb8e1051d7a4b4a0a (plain) (tree)























                                                                

































































































































































































































































                                                                                           






















                                                                       
# vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
################################################################
# Color functions
# This file holds some color-functions for
# the powerlevel9k-ZSH-theme
# https://github.com/bhilburn/powerlevel9k
################################################################

# Get numerical color codes. That way we translate ANSI codes
# into ZSH-Style color codes.
function getColorCode() {
  # Check if given value is already numerical
  if [[ "$1" = <-> ]]; then
    # ANSI color codes distinguish between "foreground"
    # and "background" colors. We don't need to do that,
    # as ZSH uses a 256 color space anyway.
    if [[ "$1" = <8-15> ]]; then
      echo $(($1 - 8))
    else
      echo "$1"
    fi
  else
    typeset -A codes
    codes=(
    # https://jonasjacek.github.io/colors/
    # use color names by default to allow dark/light themes to adjust colors based on names
        'black'             '000'
        'maroon'            '001'
        'green'             '002'
        'olive'             '003'
        'navy'              '004'
        'purple'            '005'
        'teal'              '006'
        'silver'            '007'
        'grey'              '008'
        'red'               '009'
        'lime'              '010'
        'yellow'            '011'
        'blue'              '012'
        'fuchsia'           '013'
        'aqua'              '014'
        'white'             '015'
        'grey0'             '016'
        'navyblue'          '017'
        'darkblue'          '018'
        'blue3'             '019'
        'blue3'             '020'
        'blue1'             '021'
        'darkgreen'         '022'
        'deepskyblue4'      '023'
        'deepskyblue4'      '024'
        'deepskyblue4'      '025'
        'dodgerblue3'       '026'
        'dodgerblue2'       '027'
        'green4'            '028'
        'springgreen4'      '029'
        'turquoise4'        '030'
        'deepskyblue3'      '031'
        'deepskyblue3'      '032'
        'dodgerblue1'       '033'
        'green3'            '034'
        'springgreen3'      '035'
        'darkcyan'          '036'
        'lightseagreen'     '037'
        'deepskyblue2'      '038'
        'deepskyblue1'      '039'
        'green3'            '040'
        'springgreen3'      '041'
        'springgreen2'      '042'
        'cyan3'             '043'
        'darkturquoise'     '044'
        'turquoise2'        '045'
        'green1'            '046'
        'springgreen2'      '047'
        'springgreen1'      '048'
        'mediumspringgreen' '049'
        'cyan2'             '050'
        'cyan1'             '051'
        'darkred'           '052'
        'deeppink4'         '053'
        'purple4'           '054'
        'purple4'           '055'
        'purple3'           '056'
        'blueviolet'        '057'
        'orange4'           '058'
        'grey37'            '059'
        'mediumpurple4'     '060'
        'slateblue3'        '061'
        'slateblue3'        '062'
        'royalblue1'        '063'
        'chartreuse4'       '064'
        'darkseagreen4'     '065'
        'paleturquoise4'    '066'
        'steelblue'         '067'
        'steelblue3'        '068'
        'cornflowerblue'    '069'
        'chartreuse3'       '070'
        'darkseagreen4'     '071'
        'cadetblue'         '072'
        'cadetblue'         '073'
        'skyblue3'          '074'
        'steelblue1'        '075'
        'chartreuse3'       '076'
        'palegreen3'        '077'
        'seagreen3'         '078'
        'aquamarine3'       '079'
        'mediumturquoise'   '080'
        'steelblue1'        '081'
        'chartreuse2'       '082'
        'seagreen2'         '083'
        'seagreen1'         '084'
        'seagreen1'         '085'
        'aquamarine1'       '086'
        'darkslategray2'    '087'
        'darkred'           '088'
        'deeppink4'         '089'
        'darkmagenta'       '090'
        'darkmagenta'       '091'
        'darkviolet'        '092'
        'purple'            '093'
        'orange4'           '094'
        'lightpink4'        '095'
        'plum4'             '096'
        'mediumpurple3'     '097'
        'mediumpurple3'     '098'
        'slateblue1'        '099'
        'yellow4'           '100'
        'wheat4'            '101'
        'grey53'            '102'
        'lightslategrey'    '103'
        'mediumpurple'      '104'
        'lightslateblue'    '105'
        'yellow4'           '106'
        'darkolivegreen3'   '107'
        'darkseagreen'      '108'
        'lightskyblue3'     '109'
        'lightskyblue3'     '110'
        'skyblue2'          '111'
        'chartreuse2'       '112'
        'darkolivegreen3'   '113'
        'palegreen3'        '114'
        'darkseagreen3'     '115'
        'darkslategray3'    '116'
        'skyblue1'          '117'
        'chartreuse1'       '118'
        'lightgreen'        '119'
        'lightgreen'        '120'
        'palegreen1'        '121'
        'aquamarine1'       '122'
        'darkslategray1'    '123'
        'red3'              '124'
        'deeppink4'         '125'
        'mediumvioletred'   '126'
        'magenta3'          '127'
        'darkviolet'        '128'
        'purple'            '129'
        'darkorange3'       '130'
        'indianred'         '131'
        'hotpink3'          '132'
        'mediumorchid3'     '133'
        'mediumorchid'      '134'
        'mediumpurple2'     '135'
        'darkgoldenrod'     '136'
        'lightsalmon3'      '137'
        'rosybrown'         '138'
        'grey63'            '139'
        'mediumpurple2'     '140'
        'mediumpurple1'     '141'
        'gold3'             '142'
        'darkkhaki'         '143'
        'navajowhite3'      '144'
        'grey69'            '145'
        'lightsteelblue3'   '146'
        'lightsteelblue'    '147'
        'yellow3'           '148'
        'darkolivegreen3'   '149'
        'darkseagreen3'     '150'
        'darkseagreen2'     '151'
        'lightcyan3'        '152'
        'lightskyblue1'     '153'
        'greenyellow'       '154'
        'darkolivegreen2'   '155'
        'palegreen1'        '156'
        'darkseagreen2'     '157'
        'darkseagreen1'     '158'
        'paleturquoise1'    '159'
        'red3'              '160'
        'deeppink3'         '161'
        'deeppink3'         '162'
        'magenta3'          '163'
        'magenta3'          '164'
        'magenta2'          '165'
        'darkorange3'       '166'
        'indianred'         '167'
        'hotpink3'          '168'
        'hotpink2'          '169'
        'orchid'            '170'
        'mediumorchid1'     '171'
        'orange3'           '172'
        'lightsalmon3'      '173'
        'lightpink3'        '174'
        'pink3'             '175'
        'plum3'             '176'
        'violet'            '177'
        'gold3'             '178'
        'lightgoldenrod3'   '179'
        'tan'               '180'
        'mistyrose3'        '181'
        'thistle3'          '182'
        'plum2'             '183'
        'yellow3'           '184'
        'khaki3'            '185'
        'lightgoldenrod2'   '186'
        'lightyellow3'      '187'
        'grey84'            '188'
        'lightsteelblue1'   '189'
        'yellow2'           '190'
        'darkolivegreen1'   '191'
        'darkolivegreen1'   '192'
        'darkseagreen1'     '193'
        'honeydew2'         '194'
        'lightcyan1'        '195'
        'red1'              '196'
        'deeppink2'         '197'
        'deeppink1'         '198'
        'deeppink1'         '199'
        'magenta2'          '200'
        'magenta1'          '201'
        'orangered1'        '202'
        'indianred1'        '203'
        'indianred1'        '204'
        'hotpink'           '205'
        'hotpink'           '206'
        'mediumorchid1'     '207'
        'darkorange'        '208'
        'salmon1'           '209'
        'lightcoral'        '210'
        'palevioletred1'    '211'
        'orchid2'           '212'
        'orchid1'           '213'
        'orange1'           '214'
        'sandybrown'        '215'
        'lightsalmon1'      '216'
        'lightpink1'        '217'
        'pink1'             '218'
        'plum1'             '219'
        'gold1'             '220'
        'lightgoldenrod2'   '221'
        'lightgoldenrod2'   '222'
        'navajowhite1'      '223'
        'mistyrose1'        '224'
        'thistle1'          '225'
        'yellow1'           '226'
        'lightgoldenrod1'   '227'
        'khaki1'            '228'
        'wheat1'            '229'
        'cornsilk1'         '230'
        'grey100'           '231'
        'grey3'             '232'
        'grey7'             '233'
        'grey11'            '234'
        'grey15'            '235'
        'grey19'            '236'
        'grey23'            '237'
        'grey27'            '238'
        'grey30'            '239'
        'grey35'            '240'
        'grey39'            '241'
        'grey42'            '242'
        'grey46'            '243'
        'grey50'            '244'
        'grey54'            '245'
        'grey58'            '246'
        'grey62'            '247'
        'grey66'            '248'
        'grey70'            '249'
        'grey74'            '250'
        'grey78'            '251'
        'grey82'            '252'
        'grey85'            '253'
        'grey89'            '254'
        'grey93'            '255'
    )

    # Strip eventual "bg-" prefixes
    1=${1#bg-}
    # Strip eventual "fg-" prefixes
    1=${1#fg-}
    # Strip eventual "br" prefixes ("bright" colors)
    1=${1#br}
    echo $codes[$1]
  fi
}

# Check if two colors are equal, even if one is specified as ANSI code.
function isSameColor() {
  if [[ "$1" == "NONE" || "$2" == "NONE" ]]; then
    return 1
  fi

  local color1=$(getColorCode "$1")
  local color2=$(getColorCode "$2")

  return $(( color1 != color2 ))
}