You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							48 lines
						
					
					
						
							1.6 KiB
						
					
					
				
			
		
		
	
	
							48 lines
						
					
					
						
							1.6 KiB
						
					
					
				| class Color: | |
|  | |
|     def __init__(self, red, green, blue): | |
|         if not (Color.check_color_value(red) or Color.check_color_value(green) or Color.check_color_value(blue)): | |
|             print(f"Color is out of range") | |
|             return | |
|         self.red = red | |
|         self.green = green | |
|         self.blue = blue | |
|  | |
|     @classmethod | |
|     def from_hex(cls, hexstring): | |
|         "Initialize Color from hexstring (e.g. #ffffff)" | |
|         if isinstance(hexstring, str): | |
|             if hexstring[0] == '#': | |
|                 hexstring = hexstring[1:] | |
|             if len(hexstring) == 6: | |
|                 color = tuple(int(hexstring[i:i+2], 16) for i in (0, 2, 4)) | |
|         return cls(color[0], color[1], color[2]) | |
|  | |
|     @classmethod | |
|     def from_name(cls, color_name): | |
|         "Initialize Color from name (e.g. 'white')" | |
|         color_name = str.lower(color_name) | |
|  | |
|         if color_name == 'white': | |
|             return cls(255,255,255) | |
|         elif color_name == 'black': | |
|             return cls(0, 0, 0) | |
|         elif color_name == 'red': | |
|             return cls(255, 0, 0) | |
|         elif color_name == 'green': | |
|             return cls(0, 255, 0) | |
|         elif color_name == 'blue': | |
|             return cls(0, 0, 255) | |
|         else: | |
|             raise ValueError(f'Colorname {color_name} was not recognised') | |
|          | |
|  | |
|     @staticmethod | |
|     def check_color_value(value): | |
|         if not isinstance(value, int): | |
|             print(f"Colorvalue '{value}' is not a number") | |
|             return False | |
|         if value < 0 or value > 255: | |
|             print(f"Color value '{value}' is out of bounds (0-255)") | |
|             return False | |
|         return True
 | |
| 
 |