NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

styling.py (25888B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\carbonui\button\styling.py
      2 from carbonui.button.const import ButtonStyle, ButtonVariant, HEIGHT_COMPACT, HEIGHT_EXPANDED, HEIGHT_NORMAL, InteractionState
      3 from carbonui.fontconst import EVE_LARGE_FONTSIZE, EVE_SMALL_FONTSIZE
      4 from carbonui.text.color import TextColor
      5 from carbonui.uiconst import Density
      6 from eve.client.script.ui import eveColor, eveThemeColor
      7 _FOREGROUND_COLOR_IDLE = {ButtonVariant.NORMAL: {ButtonStyle.NORMAL: TextColor.NORMAL,
      8                         ButtonStyle.WARNING: TextColor.NORMAL,
      9                         ButtonStyle.DANGER: TextColor.NORMAL,
     10                         ButtonStyle.MONETIZATION: TextColor.NORMAL,
     11                         ButtonStyle.SUCCESS: TextColor.NORMAL},
     12  ButtonVariant.PRIMARY: {ButtonStyle.NORMAL: TextColor.NORMAL,
     13                          ButtonStyle.WARNING: TextColor.NORMAL,
     14                          ButtonStyle.DANGER: TextColor.NORMAL,
     15                          ButtonStyle.MONETIZATION: eveColor.OMEGA_ACCENT,
     16                          ButtonStyle.SUCCESS: TextColor.NORMAL},
     17  ButtonVariant.GHOST: {ButtonStyle.NORMAL: TextColor.NORMAL,
     18                        ButtonStyle.WARNING: TextColor.NORMAL,
     19                        ButtonStyle.DANGER: TextColor.NORMAL,
     20                        ButtonStyle.MONETIZATION: TextColor.NORMAL,
     21                        ButtonStyle.SUCCESS: TextColor.NORMAL}}
     22 _FOREGROUND_COLOR_HOVERED = {ButtonVariant.NORMAL: {ButtonStyle.NORMAL: TextColor.NORMAL,
     23                         ButtonStyle.WARNING: TextColor.NORMAL,
     24                         ButtonStyle.DANGER: TextColor.NORMAL,
     25                         ButtonStyle.MONETIZATION: TextColor.HIGHLIGHT,
     26                         ButtonStyle.SUCCESS: TextColor.NORMAL},
     27  ButtonVariant.PRIMARY: {ButtonStyle.NORMAL: TextColor.NORMAL,
     28                          ButtonStyle.WARNING: TextColor.NORMAL,
     29                          ButtonStyle.DANGER: TextColor.NORMAL,
     30                          ButtonStyle.MONETIZATION: eveColor.OMEGA_ACCENT,
     31                          ButtonStyle.SUCCESS: TextColor.NORMAL},
     32  ButtonVariant.GHOST: {ButtonStyle.NORMAL: TextColor.NORMAL,
     33                        ButtonStyle.WARNING: TextColor.NORMAL,
     34                        ButtonStyle.DANGER: TextColor.NORMAL,
     35                        ButtonStyle.MONETIZATION: TextColor.HIGHLIGHT,
     36                        ButtonStyle.SUCCESS: TextColor.NORMAL}}
     37 _FOREGROUND_COLOR_PRESSED = eveColor.BLACK
     38 _FOREGROUND_COLOR_DISABLED = {ButtonStyle.NORMAL: TextColor.DISABLED,
     39  ButtonStyle.WARNING: TextColor.DISABLED,
     40  ButtonStyle.DANGER: TextColor.DISABLED,
     41  ButtonStyle.MONETIZATION: TextColor.SECONDARY,
     42  ButtonStyle.SUCCESS: TextColor.DISABLED}
     43 _ICON_COLOR_IDLE = TextColor.NORMAL
     44 _ICON_COLOR_HOVERED = TextColor.HIGHLIGHT
     45 _ICON_COLOR_PRESSED = eveColor.BLACK
     46 _ICON_COLOR_DISABLED = TextColor.DISABLED
     47 _BACKGROUND_COLOR_IDLE = {ButtonVariant.NORMAL: {ButtonStyle.NORMAL: lambda : eveThemeColor.THEME_FOCUSDARK.rgb + (0.2,),
     48                         ButtonStyle.WARNING: tuple(eveColor.DUSKY_ORANGE[:3]) + (0.2,),
     49                         ButtonStyle.DANGER: tuple(eveColor.CHERRY_RED[:3]) + (0.2,),
     50                         ButtonStyle.MONETIZATION: tuple(eveColor.OMEGA_ACCENT[:3]) + (0.1,),
     51                         ButtonStyle.SUCCESS: tuple(eveColor.COPPER_OXIDE_GREEN[:3]) + (0.2,)},
     52  ButtonVariant.PRIMARY: {ButtonStyle.NORMAL: lambda : eveThemeColor.THEME_FOCUSDARK.rgb + (0.6,),
     53                          ButtonStyle.WARNING: tuple(eveColor.DUSKY_ORANGE[:3]) + (0.6,),
     54                          ButtonStyle.DANGER: tuple(eveColor.CHERRY_RED[:3]) + (0.6,),
     55                          ButtonStyle.MONETIZATION: tuple(eveColor.OMEGA_ACCENT[:3]) + (0.2,),
     56                          ButtonStyle.SUCCESS: tuple(eveColor.COPPER_OXIDE_GREEN[:3]) + (0.6,)},
     57  ButtonVariant.GHOST: {ButtonStyle.NORMAL: lambda : eveThemeColor.THEME_FOCUSDARK.rgb + (0.0,),
     58                        ButtonStyle.WARNING: tuple(eveColor.DUSKY_ORANGE[:3]) + (0.0,),
     59                        ButtonStyle.DANGER: tuple(eveColor.CHERRY_RED[:3]) + (0.0,),
     60                        ButtonStyle.MONETIZATION: tuple(eveColor.BLACK[:3]) + (0.5,),
     61                        ButtonStyle.SUCCESS: tuple(eveColor.COPPER_OXIDE_GREEN[:3]) + (0.0,)}}
     62 _BACKGROUND_COLOR_HOVERED = {ButtonVariant.NORMAL: {ButtonStyle.NORMAL: lambda : eveThemeColor.THEME_FOCUSDARK.rgb + (0.6,),
     63                         ButtonStyle.WARNING: tuple(eveColor.DUSKY_ORANGE[:3]) + (0.6,),
     64                         ButtonStyle.DANGER: tuple(eveColor.CHERRY_RED[:3]) + (0.6,),
     65                         ButtonStyle.MONETIZATION: tuple(eveColor.OMEGA_ACCENT[:3]) + (0.2,),
     66                         ButtonStyle.SUCCESS: tuple(eveColor.COPPER_OXIDE_GREEN[:3]) + (0.6,)},
     67  ButtonVariant.PRIMARY: {ButtonStyle.NORMAL: lambda : eveThemeColor.THEME_FOCUSDARK.rgb + (0.6,),
     68                          ButtonStyle.WARNING: tuple(eveColor.DUSKY_ORANGE[:3]) + (0.6,),
     69                          ButtonStyle.DANGER: tuple(eveColor.CHERRY_RED[:3]) + (0.6,),
     70                          ButtonStyle.MONETIZATION: tuple(eveColor.OMEGA_ACCENT[:3]) + (0.2,),
     71                          ButtonStyle.SUCCESS: tuple(eveColor.COPPER_OXIDE_GREEN[:3]) + (0.6,)},
     72  ButtonVariant.GHOST: {ButtonStyle.NORMAL: lambda : eveThemeColor.THEME_FOCUSDARK.rgb + (0.6,),
     73                        ButtonStyle.WARNING: tuple(eveColor.DUSKY_ORANGE[:3]) + (0.6,),
     74                        ButtonStyle.DANGER: tuple(eveColor.CHERRY_RED[:3]) + (0.6,),
     75                        ButtonStyle.MONETIZATION: tuple(eveColor.BLACK[:3]) + (0.5,),
     76                        ButtonStyle.SUCCESS: tuple(eveColor.COPPER_OXIDE_GREEN[:3]) + (0.6,)}}
     77 _BACKGROUND_COLOR_PRESSED = {ButtonStyle.NORMAL: eveColor.TUNGSTEN_GREY,
     78  ButtonStyle.WARNING: eveColor.TUNGSTEN_GREY,
     79  ButtonStyle.DANGER: eveColor.TUNGSTEN_GREY,
     80  ButtonStyle.MONETIZATION: eveColor.OMEGA_ACCENT,
     81  ButtonStyle.SUCCESS: eveColor.TUNGSTEN_GREY}
     82 _BACKGROUND_COLOR_DISABLED = {ButtonVariant.NORMAL: {ButtonStyle.NORMAL: tuple(eveColor.MATTE_BLACK[:3]) + (0.2,),
     83                         ButtonStyle.WARNING: tuple(eveColor.MATTE_BLACK[:3]) + (0.2,),
     84                         ButtonStyle.DANGER: tuple(eveColor.MATTE_BLACK[:3]) + (0.2,),
     85                         ButtonStyle.MONETIZATION: tuple(eveColor.BLACK[:3]) + (0.5,),
     86                         ButtonStyle.SUCCESS: tuple(eveColor.MATTE_BLACK[:3]) + (0.2,)},
     87  ButtonVariant.PRIMARY: {ButtonStyle.NORMAL: tuple(eveColor.MATTE_BLACK[:3]) + (0.6,),
     88                          ButtonStyle.WARNING: tuple(eveColor.MATTE_BLACK[:3]) + (0.6,),
     89                          ButtonStyle.DANGER: tuple(eveColor.MATTE_BLACK[:3]) + (0.6,),
     90                          ButtonStyle.MONETIZATION: tuple(eveColor.BLACK[:3]) + (0.5,),
     91                          ButtonStyle.SUCCESS: tuple(eveColor.MATTE_BLACK[:3]) + (0.6,)},
     92  ButtonVariant.GHOST: {ButtonStyle.NORMAL: tuple(eveColor.MATTE_BLACK[:3]) + (0.0,),
     93                        ButtonStyle.WARNING: tuple(eveColor.MATTE_BLACK[:3]) + (0.0,),
     94                        ButtonStyle.DANGER: tuple(eveColor.MATTE_BLACK[:3]) + (0.0,),
     95                        ButtonStyle.MONETIZATION: tuple(eveColor.BLACK[:3]) + (0.5,),
     96                        ButtonStyle.SUCCESS: tuple(eveColor.MATTE_BLACK[:3]) + (0.0,)}}
     97 _STROKE_COLOR_IDLE = {ButtonVariant.NORMAL: {ButtonStyle.NORMAL: lambda : eveThemeColor.THEME_FOCUSDARK,
     98                         ButtonStyle.WARNING: eveColor.WARNING_ORANGE,
     99                         ButtonStyle.DANGER: eveColor.CHERRY_RED,
    100                         ButtonStyle.MONETIZATION: eveColor.OMEGA_TERTIARY,
    101                         ButtonStyle.SUCCESS: eveColor.SUCCESS_GREEN},
    102  ButtonVariant.PRIMARY: {ButtonStyle.NORMAL: lambda : eveThemeColor.THEME_FOCUS,
    103                          ButtonStyle.WARNING: eveColor.WARNING_ORANGE,
    104                          ButtonStyle.DANGER: eveColor.CHERRY_RED,
    105                          ButtonStyle.MONETIZATION: eveColor.OMEGA_ACCENT_STROKE,
    106                          ButtonStyle.SUCCESS: eveColor.SUCCESS_GREEN},
    107  ButtonVariant.GHOST: {ButtonStyle.NORMAL: lambda : eveThemeColor.THEME_FOCUSDARK.rgb + (0.6,),
    108                        ButtonStyle.WARNING: tuple(eveColor.DUSKY_ORANGE[:3]) + (0.6,),
    109                        ButtonStyle.DANGER: tuple(eveColor.CHERRY_RED[:3]) + (0.6,),
    110                        ButtonStyle.MONETIZATION: eveColor.OMEGA_TERTIARY,
    111                        ButtonStyle.SUCCESS: tuple(eveColor.COPPER_OXIDE_GREEN[:3]) + (0.6,)}}
    112 _STROKE_COLOR_HOVERED = {ButtonVariant.NORMAL: {ButtonStyle.NORMAL: lambda : eveThemeColor.THEME_FOCUS,
    113                         ButtonStyle.WARNING: eveColor.WARNING_ORANGE,
    114                         ButtonStyle.DANGER: eveColor.HOT_RED,
    115                         ButtonStyle.MONETIZATION: eveColor.OMEGA_ACCENT,
    116                         ButtonStyle.SUCCESS: eveColor.SUCCESS_GREEN},
    117  ButtonVariant.PRIMARY: {ButtonStyle.NORMAL: lambda : eveThemeColor.THEME_FOCUS,
    118                          ButtonStyle.WARNING: eveColor.WARNING_ORANGE,
    119                          ButtonStyle.DANGER: eveColor.HOT_RED,
    120                          ButtonStyle.MONETIZATION: eveColor.OMEGA_ACCENT,
    121                          ButtonStyle.SUCCESS: eveColor.SUCCESS_GREEN},
    122  ButtonVariant.GHOST: {ButtonStyle.NORMAL: lambda : eveThemeColor.THEME_FOCUS,
    123                        ButtonStyle.WARNING: eveColor.WARNING_ORANGE,
    124                        ButtonStyle.DANGER: eveColor.HOT_RED,
    125                        ButtonStyle.MONETIZATION: tuple(eveColor.OMEGA_ACCENT[:3]) + (0.4,),
    126                        ButtonStyle.SUCCESS: eveColor.SUCCESS_GREEN}}
    127 _STROKE_COLOR_PRESSED = {ButtonStyle.NORMAL: eveColor.TUNGSTEN_GREY,
    128  ButtonStyle.WARNING: eveColor.TUNGSTEN_GREY,
    129  ButtonStyle.DANGER: eveColor.TUNGSTEN_GREY,
    130  ButtonStyle.MONETIZATION: eveColor.OMEGA_ACCENT,
    131  ButtonStyle.SUCCESS: eveColor.TUNGSTEN_GREY}
    132 _STROKE_COLOR_DISABLED = {ButtonStyle.NORMAL: tuple(eveColor.MATTE_BLACK[:3]) + (0.6,),
    133  ButtonStyle.WARNING: tuple(eveColor.MATTE_BLACK[:3]) + (0.6,),
    134  ButtonStyle.DANGER: tuple(eveColor.MATTE_BLACK[:3]) + (0.6,),
    135  ButtonStyle.MONETIZATION: eveColor.OMEGA_SECONDARY,
    136  ButtonStyle.SUCCESS: tuple(eveColor.MATTE_BLACK[:3]) + (0.6,)}
    137 _GLOW_COLOR_IDLE = {ButtonVariant.NORMAL: {ButtonStyle.NORMAL: lambda : eveThemeColor.THEME_FOCUS.rgb + (0.0,),
    138                         ButtonStyle.WARNING: tuple(eveColor.WARNING_ORANGE[:3]) + (0.0,),
    139                         ButtonStyle.DANGER: tuple(eveColor.HOT_RED[:3]) + (0.0,),
    140                         ButtonStyle.MONETIZATION: tuple(eveColor.OMEGA_ACCENT[:3]) + (0.0,),
    141                         ButtonStyle.SUCCESS: tuple(eveColor.SUCCESS_GREEN[:3]) + (0.0,)},
    142  ButtonVariant.PRIMARY: {ButtonStyle.NORMAL: lambda : eveThemeColor.THEME_FOCUS.rgb + (0.0,),
    143                          ButtonStyle.WARNING: tuple(eveColor.WARNING_ORANGE[:3]) + (0.0,),
    144                          ButtonStyle.DANGER: tuple(eveColor.HOT_RED[:3]) + (0.0,),
    145                          ButtonStyle.MONETIZATION: tuple(eveColor.OMEGA_ACCENT[:3]) + (0.0,),
    146                          ButtonStyle.SUCCESS: tuple(eveColor.SUCCESS_GREEN[:3]) + (0.0,)},
    147  ButtonVariant.GHOST: {ButtonStyle.NORMAL: tuple(eveColor.BLACK[:3]) + (0.0,),
    148                        ButtonStyle.WARNING: tuple(eveColor.BLACK[:3]) + (0.0,),
    149                        ButtonStyle.DANGER: tuple(eveColor.BLACK[:3]) + (0.0,),
    150                        ButtonStyle.MONETIZATION: tuple(eveColor.BLACK[:3]) + (0.0,),
    151                        ButtonStyle.SUCCESS: tuple(eveColor.BLACK[:3]) + (0.0,)}}
    152 _GLOW_COLOR_HOVERED = {ButtonVariant.NORMAL: {ButtonStyle.NORMAL: lambda : tuple(eveThemeColor.THEME_FOCUS[:3]) + (0.6,),
    153                         ButtonStyle.WARNING: tuple(eveColor.WARNING_ORANGE[:3]) + (0.6,),
    154                         ButtonStyle.DANGER: tuple(eveColor.HOT_RED[:3]) + (0.6,),
    155                         ButtonStyle.MONETIZATION: tuple(eveColor.OMEGA_ACCENT[:3]) + (0.6,),
    156                         ButtonStyle.SUCCESS: tuple(eveColor.SUCCESS_GREEN[:3]) + (0.6,)},
    157  ButtonVariant.PRIMARY: {ButtonStyle.NORMAL: lambda : tuple(eveThemeColor.THEME_FOCUS[:3]) + (0.6,),
    158                          ButtonStyle.WARNING: tuple(eveColor.WARNING_ORANGE[:3]) + (0.6,),
    159                          ButtonStyle.DANGER: tuple(eveColor.HOT_RED[:3]) + (0.6,),
    160                          ButtonStyle.MONETIZATION: tuple(eveColor.OMEGA_ACCENT[:3]) + (0.6,),
    161                          ButtonStyle.SUCCESS: tuple(eveColor.SUCCESS_GREEN[:3]) + (0.6,)},
    162  ButtonVariant.GHOST: {ButtonStyle.NORMAL: lambda : tuple(eveThemeColor.THEME_FOCUS[:3]) + (0.6,),
    163                        ButtonStyle.WARNING: tuple(eveColor.WARNING_ORANGE[:3]) + (0.6,),
    164                        ButtonStyle.DANGER: tuple(eveColor.HOT_RED[:3]) + (0.6,),
    165                        ButtonStyle.MONETIZATION: tuple(eveColor.OMEGA_ACCENT[:3]) + (0.0,),
    166                        ButtonStyle.SUCCESS: tuple(eveColor.SUCCESS_GREEN[:3]) + (0.6,)}}
    167 _GLOW_COLOR_PRESSED = {ButtonVariant.NORMAL: {ButtonStyle.NORMAL: eveColor.TUNGSTEN_GREY,
    168                         ButtonStyle.WARNING: eveColor.TUNGSTEN_GREY,
    169                         ButtonStyle.DANGER: eveColor.TUNGSTEN_GREY,
    170                         ButtonStyle.MONETIZATION: eveColor.OMEGA_ACCENT,
    171                         ButtonStyle.SUCCESS: eveColor.TUNGSTEN_GREY},
    172  ButtonVariant.PRIMARY: {ButtonStyle.NORMAL: eveColor.TUNGSTEN_GREY,
    173                          ButtonStyle.WARNING: eveColor.TUNGSTEN_GREY,
    174                          ButtonStyle.DANGER: eveColor.TUNGSTEN_GREY,
    175                          ButtonStyle.MONETIZATION: eveColor.OMEGA_ACCENT,
    176                          ButtonStyle.SUCCESS: eveColor.TUNGSTEN_GREY},
    177  ButtonVariant.GHOST: {ButtonStyle.NORMAL: eveColor.TUNGSTEN_GREY,
    178                        ButtonStyle.WARNING: eveColor.TUNGSTEN_GREY,
    179                        ButtonStyle.DANGER: eveColor.TUNGSTEN_GREY,
    180                        ButtonStyle.MONETIZATION: tuple(eveColor.OMEGA_ACCENT[:3]) + (0.0,),
    181                        ButtonStyle.SUCCESS: eveColor.TUNGSTEN_GREY}}
    182 _GLOW_COLOR_DISABLED = tuple(eveColor.TUNGSTEN_GREY[:3]) + (0.0,)
    183 _DEFAULT_TOP_LINE_RGB_DATA = [(0.0, eveColor.WHITE[:3]), (1.0, eveColor.WHITE[:3])]
    184 _DEFAULT_TOP_LINE_ALPHA_DATA = [(0.0, 0.0), (1.0, 0.0)]
    185 _FRAME_TOP_LINE_RGB_DATA = {ButtonVariant.NORMAL: {ButtonStyle.NORMAL: _DEFAULT_TOP_LINE_RGB_DATA,
    186                         ButtonStyle.WARNING: _DEFAULT_TOP_LINE_RGB_DATA,
    187                         ButtonStyle.DANGER: _DEFAULT_TOP_LINE_RGB_DATA,
    188                         ButtonStyle.MONETIZATION: _DEFAULT_TOP_LINE_RGB_DATA,
    189                         ButtonStyle.SUCCESS: _DEFAULT_TOP_LINE_RGB_DATA},
    190  ButtonVariant.PRIMARY: {ButtonStyle.NORMAL: _DEFAULT_TOP_LINE_RGB_DATA,
    191                          ButtonStyle.WARNING: _DEFAULT_TOP_LINE_RGB_DATA,
    192                          ButtonStyle.DANGER: _DEFAULT_TOP_LINE_RGB_DATA,
    193                          ButtonStyle.MONETIZATION: eveColor.OMEGA_LINE_GRADIENT_RGB_DATA,
    194                          ButtonStyle.SUCCESS: _DEFAULT_TOP_LINE_RGB_DATA},
    195  ButtonVariant.GHOST: {ButtonStyle.NORMAL: _DEFAULT_TOP_LINE_RGB_DATA,
    196                        ButtonStyle.WARNING: _DEFAULT_TOP_LINE_RGB_DATA,
    197                        ButtonStyle.DANGER: _DEFAULT_TOP_LINE_RGB_DATA,
    198                        ButtonStyle.MONETIZATION: _DEFAULT_TOP_LINE_RGB_DATA,
    199                        ButtonStyle.SUCCESS: _DEFAULT_TOP_LINE_RGB_DATA}}
    200 _FRAME_TOP_LINE_ALPHA_DATA = {ButtonVariant.NORMAL: {ButtonStyle.NORMAL: _DEFAULT_TOP_LINE_ALPHA_DATA,
    201                         ButtonStyle.WARNING: _DEFAULT_TOP_LINE_ALPHA_DATA,
    202                         ButtonStyle.DANGER: _DEFAULT_TOP_LINE_ALPHA_DATA,
    203                         ButtonStyle.MONETIZATION: _DEFAULT_TOP_LINE_ALPHA_DATA,
    204                         ButtonStyle.SUCCESS: _DEFAULT_TOP_LINE_ALPHA_DATA},
    205  ButtonVariant.PRIMARY: {ButtonStyle.NORMAL: _DEFAULT_TOP_LINE_ALPHA_DATA,
    206                          ButtonStyle.WARNING: _DEFAULT_TOP_LINE_ALPHA_DATA,
    207                          ButtonStyle.DANGER: _DEFAULT_TOP_LINE_ALPHA_DATA,
    208                          ButtonStyle.MONETIZATION: eveColor.OMEGA_LINE_GRADIENT_ALPHA_DATA,
    209                          ButtonStyle.SUCCESS: _DEFAULT_TOP_LINE_ALPHA_DATA},
    210  ButtonVariant.GHOST: {ButtonStyle.NORMAL: _DEFAULT_TOP_LINE_ALPHA_DATA,
    211                        ButtonStyle.WARNING: _DEFAULT_TOP_LINE_ALPHA_DATA,
    212                        ButtonStyle.DANGER: _DEFAULT_TOP_LINE_ALPHA_DATA,
    213                        ButtonStyle.MONETIZATION: _DEFAULT_TOP_LINE_ALPHA_DATA,
    214                        ButtonStyle.SUCCESS: _DEFAULT_TOP_LINE_ALPHA_DATA}}
    215 _DEFAULT_TOP_EFEFCT_TEXTURE = None
    216 _DEFAULT_TOP_EFFECT_COLOR = eveColor.WHITE
    217 _DEFAULT_TOP_EFFECT_OPACITY = 0.0
    218 _DEFAULT_TOP_EFFECT_POS = (0, 0, 0, 0)
    219 _FRAME_TOP_EFFECT_TEXTURE = {ButtonVariant.NORMAL: {ButtonStyle.NORMAL: _DEFAULT_TOP_EFEFCT_TEXTURE,
    220                         ButtonStyle.WARNING: _DEFAULT_TOP_EFEFCT_TEXTURE,
    221                         ButtonStyle.DANGER: _DEFAULT_TOP_EFEFCT_TEXTURE,
    222                         ButtonStyle.MONETIZATION: _DEFAULT_TOP_EFEFCT_TEXTURE,
    223                         ButtonStyle.SUCCESS: _DEFAULT_TOP_EFEFCT_TEXTURE},
    224  ButtonVariant.PRIMARY: {ButtonStyle.NORMAL: _DEFAULT_TOP_EFEFCT_TEXTURE,
    225                          ButtonStyle.WARNING: _DEFAULT_TOP_EFEFCT_TEXTURE,
    226                          ButtonStyle.DANGER: _DEFAULT_TOP_EFEFCT_TEXTURE,
    227                          ButtonStyle.MONETIZATION: 'res:/UI/Texture/classes/Button/frame_top_effect.png',
    228                          ButtonStyle.SUCCESS: _DEFAULT_TOP_EFEFCT_TEXTURE},
    229  ButtonVariant.GHOST: {ButtonStyle.NORMAL: _DEFAULT_TOP_EFEFCT_TEXTURE,
    230                        ButtonStyle.WARNING: _DEFAULT_TOP_EFEFCT_TEXTURE,
    231                        ButtonStyle.DANGER: _DEFAULT_TOP_EFEFCT_TEXTURE,
    232                        ButtonStyle.MONETIZATION: _DEFAULT_TOP_EFEFCT_TEXTURE,
    233                        ButtonStyle.SUCCESS: _DEFAULT_TOP_EFEFCT_TEXTURE}}
    234 _FRAME_TOP_EFFECT_COLOR = {ButtonVariant.NORMAL: {ButtonStyle.NORMAL: _DEFAULT_TOP_EFFECT_COLOR,
    235                         ButtonStyle.WARNING: _DEFAULT_TOP_EFFECT_COLOR,
    236                         ButtonStyle.DANGER: _DEFAULT_TOP_EFFECT_COLOR,
    237                         ButtonStyle.MONETIZATION: _DEFAULT_TOP_EFFECT_COLOR,
    238                         ButtonStyle.SUCCESS: _DEFAULT_TOP_EFFECT_COLOR},
    239  ButtonVariant.PRIMARY: {ButtonStyle.NORMAL: _DEFAULT_TOP_EFFECT_COLOR,
    240                          ButtonStyle.WARNING: _DEFAULT_TOP_EFFECT_COLOR,
    241                          ButtonStyle.DANGER: _DEFAULT_TOP_EFFECT_COLOR,
    242                          ButtonStyle.MONETIZATION: eveColor.OMEGA_ACCENT,
    243                          ButtonStyle.SUCCESS: _DEFAULT_TOP_EFFECT_COLOR},
    244  ButtonVariant.GHOST: {ButtonStyle.NORMAL: _DEFAULT_TOP_EFFECT_COLOR,
    245                        ButtonStyle.WARNING: _DEFAULT_TOP_EFFECT_COLOR,
    246                        ButtonStyle.DANGER: _DEFAULT_TOP_EFFECT_COLOR,
    247                        ButtonStyle.MONETIZATION: _DEFAULT_TOP_EFFECT_COLOR,
    248                        ButtonStyle.SUCCESS: _DEFAULT_TOP_EFFECT_COLOR}}
    249 _FRAME_TOP_EFFECT_OPACITY = {ButtonVariant.NORMAL: {ButtonStyle.NORMAL: _DEFAULT_TOP_EFFECT_OPACITY,
    250                         ButtonStyle.WARNING: _DEFAULT_TOP_EFFECT_OPACITY,
    251                         ButtonStyle.DANGER: _DEFAULT_TOP_EFFECT_OPACITY,
    252                         ButtonStyle.MONETIZATION: _DEFAULT_TOP_EFFECT_OPACITY,
    253                         ButtonStyle.SUCCESS: _DEFAULT_TOP_EFFECT_OPACITY},
    254  ButtonVariant.PRIMARY: {ButtonStyle.NORMAL: _DEFAULT_TOP_EFFECT_OPACITY,
    255                          ButtonStyle.WARNING: _DEFAULT_TOP_EFFECT_OPACITY,
    256                          ButtonStyle.DANGER: _DEFAULT_TOP_EFFECT_OPACITY,
    257                          ButtonStyle.MONETIZATION: 0.2,
    258                          ButtonStyle.SUCCESS: _DEFAULT_TOP_EFFECT_OPACITY},
    259  ButtonVariant.GHOST: {ButtonStyle.NORMAL: _DEFAULT_TOP_EFFECT_OPACITY,
    260                        ButtonStyle.WARNING: _DEFAULT_TOP_EFFECT_OPACITY,
    261                        ButtonStyle.DANGER: _DEFAULT_TOP_EFFECT_OPACITY,
    262                        ButtonStyle.MONETIZATION: _DEFAULT_TOP_EFFECT_OPACITY,
    263                        ButtonStyle.SUCCESS: _DEFAULT_TOP_EFFECT_OPACITY}}
    264 _FRAME_TOP_EFFECT_POS = {ButtonVariant.NORMAL: {ButtonStyle.NORMAL: _DEFAULT_TOP_EFFECT_POS,
    265                         ButtonStyle.WARNING: _DEFAULT_TOP_EFFECT_POS,
    266                         ButtonStyle.DANGER: _DEFAULT_TOP_EFFECT_POS,
    267                         ButtonStyle.MONETIZATION: _DEFAULT_TOP_EFFECT_POS,
    268                         ButtonStyle.SUCCESS: _DEFAULT_TOP_EFFECT_POS},
    269  ButtonVariant.PRIMARY: {ButtonStyle.NORMAL: _DEFAULT_TOP_EFFECT_POS,
    270                          ButtonStyle.WARNING: _DEFAULT_TOP_EFFECT_POS,
    271                          ButtonStyle.DANGER: _DEFAULT_TOP_EFFECT_POS,
    272                          ButtonStyle.MONETIZATION: (0, -11, 78, 22),
    273                          ButtonStyle.SUCCESS: _DEFAULT_TOP_EFFECT_POS},
    274  ButtonVariant.GHOST: {ButtonStyle.NORMAL: _DEFAULT_TOP_EFFECT_POS,
    275                        ButtonStyle.WARNING: _DEFAULT_TOP_EFFECT_POS,
    276                        ButtonStyle.DANGER: _DEFAULT_TOP_EFFECT_POS,
    277                        ButtonStyle.MONETIZATION: _DEFAULT_TOP_EFFECT_POS,
    278                        ButtonStyle.SUCCESS: _DEFAULT_TOP_EFFECT_POS}}
    279 
    280 def resolve(color):
    281     if callable(color):
    282         color = color()
    283     if hasattr(color, 'rgba'):
    284         color = color.rgba
    285     return color
    286 
    287 
    288 def get_foreground_color(button_variant, button_style, interaction_states):
    289     if InteractionState.disabled in interaction_states:
    290         return resolve(_FOREGROUND_COLOR_DISABLED[button_style])
    291     elif InteractionState.pressed in interaction_states:
    292         return resolve(_FOREGROUND_COLOR_PRESSED)
    293     elif InteractionState.hovered in interaction_states:
    294         return resolve(_FOREGROUND_COLOR_HOVERED[button_variant][button_style])
    295     else:
    296         return resolve(_FOREGROUND_COLOR_IDLE[button_variant][button_style])
    297 
    298 
    299 def get_icon_color(button_variant, button_style, interaction_states):
    300     if InteractionState.disabled in interaction_states:
    301         return resolve(_ICON_COLOR_DISABLED)
    302     elif InteractionState.pressed in interaction_states:
    303         return resolve(_ICON_COLOR_PRESSED)
    304     elif InteractionState.hovered in interaction_states:
    305         return resolve(_ICON_COLOR_HOVERED)
    306     else:
    307         return resolve(_ICON_COLOR_IDLE)
    308 
    309 
    310 def get_background_color(button_variant, button_style, interaction_states):
    311     if InteractionState.disabled in interaction_states:
    312         return resolve(_BACKGROUND_COLOR_DISABLED[button_variant][button_style])
    313     elif InteractionState.pressed in interaction_states:
    314         return resolve(_BACKGROUND_COLOR_PRESSED[button_style])
    315     elif InteractionState.hovered in interaction_states:
    316         return resolve(_BACKGROUND_COLOR_HOVERED[button_variant][button_style])
    317     else:
    318         return resolve(_BACKGROUND_COLOR_IDLE[button_variant][button_style])
    319 
    320 
    321 def get_stroke_color(button_variant, button_style, interaction_states):
    322     if InteractionState.disabled in interaction_states:
    323         return resolve(_STROKE_COLOR_DISABLED[button_style])
    324     elif InteractionState.pressed in interaction_states:
    325         return resolve(_STROKE_COLOR_PRESSED[button_style])
    326     elif InteractionState.hovered in interaction_states:
    327         return resolve(_STROKE_COLOR_HOVERED[button_variant][button_style])
    328     else:
    329         return resolve(_STROKE_COLOR_IDLE[button_variant][button_style])
    330 
    331 
    332 def get_glow_color(button_variant, button_style, interaction_states):
    333     if InteractionState.disabled in interaction_states:
    334         return resolve(_GLOW_COLOR_DISABLED)
    335     elif InteractionState.pressed in interaction_states:
    336         return resolve(_GLOW_COLOR_PRESSED[button_variant][button_style])
    337     elif InteractionState.hovered in interaction_states:
    338         return resolve(_GLOW_COLOR_HOVERED[button_variant][button_style])
    339     else:
    340         return resolve(_GLOW_COLOR_IDLE[button_variant][button_style])
    341 
    342 
    343 def get_frame_top_line_rgb_data(button_variant, button_style, interaction_states):
    344     return resolve(_FRAME_TOP_LINE_RGB_DATA[button_variant][button_style])
    345 
    346 
    347 def get_frame_top_line_alpha_data(button_variant, button_style, interaction_states):
    348     return resolve(_FRAME_TOP_LINE_ALPHA_DATA[button_variant][button_style])
    349 
    350 
    351 def get_frame_top_effect_texture(button_variant, button_style, interaction_states):
    352     return resolve(_FRAME_TOP_EFFECT_TEXTURE[button_variant][button_style])
    353 
    354 
    355 def get_frame_top_effect_color(button_variant, button_style, interaction_states):
    356     return resolve(_FRAME_TOP_EFFECT_COLOR[button_variant][button_style])
    357 
    358 
    359 def get_frame_top_effect_opacity(button_variant, button_style, interaction_states):
    360     return resolve(_FRAME_TOP_EFFECT_OPACITY[button_variant][button_style])
    361 
    362 
    363 def get_frame_top_effect_pos(button_variant, button_style, interaction_states):
    364     return resolve(_FRAME_TOP_EFFECT_POS[button_variant][button_style])
    365 
    366 
    367 def get_height(density):
    368     if density == Density.NORMAL:
    369         return HEIGHT_NORMAL
    370     if density == Density.COMPACT:
    371         return HEIGHT_COMPACT
    372     if density == Density.EXPANDED:
    373         return HEIGHT_EXPANDED
    374 
    375 
    376 def get_min_width(density):
    377     return get_height(density)
    378 
    379 
    380 def get_icon_offset(density):
    381     if density in [Density.NORMAL, Density.EXPANDED]:
    382         return 4
    383     if density == Density.COMPACT:
    384         return 2
    385 
    386 
    387 def get_icon_gap(density):
    388     if density in [Density.NORMAL, Density.EXPANDED]:
    389         return 8
    390     if density == Density.COMPACT:
    391         return 6
    392 
    393 
    394 def get_side_padding(density):
    395     if density == Density.NORMAL:
    396         return 16
    397     if density == Density.COMPACT:
    398         return 8
    399     if density == Density.EXPANDED:
    400         return 40
    401 
    402 
    403 def get_fontsize(density):
    404     if density == Density.NORMAL:
    405         return EVE_SMALL_FONTSIZE
    406     if density == Density.COMPACT:
    407         return EVE_SMALL_FONTSIZE
    408     if density == Density.EXPANDED:
    409         return EVE_LARGE_FONTSIZE
    410 
    411 
    412 def get_default_min_width(density):
    413     if density == Density.EXPANDED:
    414         return 180
    415     return 32