mapViewLegendConst.py (5250B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\mapView\controls\mapViewLegendConst.py 2 import math 3 from carbonui.util.color import Color 4 from localization import GetByLabel 5 6 class _LegendDefinition(object): 7 8 def __init__(self, label = None, has_settings = False): 9 self.label = label 10 self.has_settings = has_settings 11 12 13 class AbsoluteLegendDefinition(_LegendDefinition): 14 15 def __init__(self, label = None, has_settings = False, value_color_pairs = None): 16 super(AbsoluteLegendDefinition, self).__init__(label, has_settings) 17 self.value_color_pairs = value_color_pairs if value_color_pairs else [] 18 19 def add_entry(self, label, color): 20 self.value_color_pairs.append((label, color)) 21 22 def add_gradient_entry(self, label, color_list): 23 self.value_color_pairs.append((label, color_list)) 24 25 26 class HeatmapLegendDefinition(_LegendDefinition): 27 28 def __init__(self, label = None, has_settings = False, abs_min_value = 0, abs_max_value = 100, min_value = 0, max_value = 100, color_range_id = 1): 29 super(HeatmapLegendDefinition, self).__init__(label, has_settings) 30 self.abs_min_value = abs_min_value 31 self.abs_max_value = abs_max_value 32 self.min_value = min_value 33 self.max_value = max_value 34 self.color_range_id = color_range_id 35 self.color_range = get_heatmap_color_range_by_id(color_range_id) 36 37 38 class HeatmapColorRange(object): 39 40 def __init__(self, range, min_color = None, max_color = None): 41 if min_color: 42 self.min_color = min_color 43 else: 44 self.min_color = range[0][:3] + (0.3,) 45 if max_color: 46 self.max_color = max_color 47 else: 48 self.max_color = range[-1][:3] + (0.3,) 49 self.range = range 50 51 52 COLOR_RANGE_SUNSET = 1 53 COLOR_RANGE_NEON = 2 54 COLOR_RANGE_JOKER = 3 55 COLOR_RANGE_DEUTER = 4 56 COLOR_RANGE_PHOTON = 5 57 COLOR_RANGE_VIRIDIS = 6 58 HEATMAP_RANGE_BY_ID = {COLOR_RANGE_SUNSET: HeatmapColorRange([Color.HextoRGBA('#FFFFB837'), Color.HextoRGBA('#FFFF0000')], min_color=Color.HextoRGBA('#FF755419'), max_color=Color.HextoRGBA('#FF5C1112')), 59 COLOR_RANGE_NEON: HeatmapColorRange([Color.HextoRGBA('#FFFF4BED'), Color.HextoRGBA('#FF7CA3F4'), Color.HextoRGBA('#FF0DFFEB')], min_color=Color.HextoRGBA('#FF5E2E70'), max_color=Color.HextoRGBA('#FF28605B')), 60 COLOR_RANGE_JOKER: HeatmapColorRange([Color.HextoRGBA('#FF8A37FF'), Color.HextoRGBA('#FF27B982'), Color.HextoRGBA('#FF2EE960')], min_color=Color.HextoRGBA('#FF4f2787'), max_color=Color.HextoRGBA('#FF104C1F')), 61 COLOR_RANGE_DEUTER: HeatmapColorRange([Color.HextoRGBA('#FF00B2FF'), Color.HextoRGBA('#FFFF0026')], min_color=Color.HextoRGBA('#FF0F3C4F'), max_color=Color.HextoRGBA('#FF5D0714')), 62 COLOR_RANGE_PHOTON: HeatmapColorRange([Color.HextoRGBA('#1D3C50'), Color.HextoRGBA('#FF58A7BF'), Color.HextoRGBA('#FFFFFFFF')], min_color=Color.HextoRGBA('#FF7C7C7C'), max_color=Color.HextoRGBA('#FF1E343D')), 63 COLOR_RANGE_VIRIDIS: HeatmapColorRange([Color.HextoRGBA('#FF006245'), Color.HextoRGBA('#FF6FB80D'), Color.HextoRGBA('#FFF8E41C')], min_color=Color.HextoRGBA('#FF15332A'), max_color=Color.HextoRGBA('#FF635E29'))} 64 HEATMAP_NAMES_BY_ID = {COLOR_RANGE_SUNSET: 'UI/Map/MapPallet/settingColorRangeSunset', 65 COLOR_RANGE_NEON: 'UI/Map/MapPallet/settingColorRangeNeon', 66 COLOR_RANGE_JOKER: 'UI/Map/MapPallet/settingColorRangeJester', 67 COLOR_RANGE_DEUTER: 'UI/Map/MapPallet/settingColorRangeDeuter', 68 COLOR_RANGE_PHOTON: 'UI/Map/MapPallet/settingColorRangePhoton', 69 COLOR_RANGE_VIRIDIS: 'UI/Map/MapPallet/settingColorRangeViridis'} 70 71 def scaling_linear(value): 72 return value 73 74 75 def scaling_quad(value): 76 return value * (2 - value) 77 78 79 def scaling_sine(value): 80 return math.sin(value * math.pi / 2) 81 82 83 def scaling_logarithmic(value): 84 if value == 1: 85 return 1 86 return 1 - 2 ** (-10 * value) 87 88 89 def scaling_ease_in_exponential(value, base = 2): 90 return (base ** value - 1) / (base - 1) 91 92 93 SCALING_TYPE_LINEAR = 1 94 SCALING_TYPE_LOGARITHMIC = 2 95 SCALING_TYPE_EXPONENTIAL = 3 96 SCALING_METHOD_BY_TYPE = {SCALING_TYPE_LINEAR: scaling_linear, 97 SCALING_TYPE_LOGARITHMIC: scaling_logarithmic, 98 SCALING_TYPE_EXPONENTIAL: scaling_ease_in_exponential} 99 100 def get_scaling_method_by_type(scaling_type): 101 return SCALING_METHOD_BY_TYPE.get(scaling_type, scaling_linear) 102 103 104 def get_color_ranges(): 105 return HEATMAP_RANGE_BY_ID.keys() 106 107 108 def get_heatmap_color_range_by_id(range_id): 109 return HEATMAP_RANGE_BY_ID.get(range_id, HEATMAP_RANGE_BY_ID[COLOR_RANGE_SUNSET]) 110 111 112 def get_heatmap_color_range_name_by_id(range_id): 113 return GetByLabel(HEATMAP_NAMES_BY_ID.get(range_id, HEATMAP_NAMES_BY_ID[COLOR_RANGE_SUNSET])) 114 115 116 def get_filter_heatmap_color_range(filter_id, item_id, default = COLOR_RANGE_SUNSET): 117 from eve.client.script.ui.shared.mapView.filters.mapFilterSettings import get_filter_setting 118 color_range_id = get_filter_setting(filter_id, item_id, 'colorRange', default) 119 return get_heatmap_color_range_by_id(color_range_id) 120 121 122 def set_filter_heatmap_color_range(filter_id, item_id, range_id): 123 from eve.client.script.ui.shared.mapView.filters.mapFilterSettings import set_filter_setting 124 set_filter_setting(filter_id, item_id, 'colorRange', range_id)