import json
from enum import Enum
from os.path import dirname, join


class WeatherMode(Enum):
    Norm = 0
    Wint = 20
    Night = 40


class AnnotationClass:
    def __init__(self, id, name, color):
        self.id = id
        self.name = name
        self.color = color

    @staticmethod
    def read_json():
        classes_path = join(dirname(dirname(__file__)), 'classes.json')
        with open(classes_path, 'r', encoding='utf-8') as f:
            j = json.loads(f.read())
            annotations_dict = {}
            for mode in WeatherMode:
                for cl in j:
                    id = mode.value + cl['Id']
                    name = cl['Name'] if mode.value == 0 else f'{cl["Name"]}({mode.name})'
                    annotations_dict[id] = AnnotationClass(id, name, cl['Color'])
            return annotations_dict

    @property
    def color_tuple(self):
        color = self.color[3:]
        lv = len(color)
        xx = range(0, lv, lv // 3)
        return tuple(int(color[i:i + lv // 3], 16) for i in xx)