from colormath.color_objects import HSVColor, sRGBColor from colormath.color_conversions import convert_color import time import math def hsv_to_target(hsv, target): rgb = [ x for x in convert_color(hsv, sRGBColor).get_upscaled_value_tuple() ] target[0] = rgb[0] target[1] = rgb[1] target[2] = rgb[2] def rainbow_whole(framecount, index, target): current_degree = framecount % 360 hsv = HSVColor(current_degree, 1, 1) hsv_to_target(hsv, target) def rainbow_whole_offset_stat(framecount, index, target): offset = index*90 current_degree = (framecount + offset) % 360 hsv = HSVColor(current_degree, 1, 1) hsv_to_target(hsv, target) def rainbow_whole_offset_dyn(framecount, index, target): offset_hue_pixel = math.sin(framecount / 10000)*90*(index+1) saturation_pixel = math.fabs(math.cos(framecount / 5000))*70 current_hue_degree = (framecount / 1000 + offset_hue_pixel) % 360 current_sat = (30+saturation_pixel) / 100 hsv = HSVColor(current_hue_degree, current_sat, 1) hsv_to_target(hsv, target) def two_colors(framecount, index, target, hue1, hue2): saturation_pixel = 1 hue_min = min(hue1, hue2) hue_max = max(hue1, hue2) current_hue_degree = hue_min + (hue_max - hue_min) / 2 + math.sin(framecount / 400 + index*100)*(hue_max - hue_min)/2 current_sat = 1 hsv = HSVColor(current_hue_degree, current_sat, 1) hsv_to_target(hsv, target) def two_colors_red_blue(framecount, index, target): two_colors(framecount, index, target, 210, 359) def two_colors_red_red(framecount, index, target): two_colors(framecount, index, target, 0, 30) def two_colors_cyan_blue(framecount, index, target): two_colors(framecount, index, target, 180, 240) def two_colors_cyan_orange(framecount, index, target): two_colors(framecount, index, target, 25, 180) def black(framecount, index, target): target[0] = 0 target[1] = 0 target[2] = 0 def adjust_saturation(framecount, index, target, params): factor = params['factor'] rgb = sRGBColor(target[0], target[1], target[2], True) hsv = convert_color(rgb, HSVColor) hsv.hsv_s = min(hsv.hsv_s*factor,1) print(params) print(hsv) hsv_to_target(hsv, target) def rgb(framecount, index, target, params): r = params["red"] g = params["green"] b = params["blue"] p_index = params["index"] if index == p_index or p_index == -1: target[0] = r target[1] = g target[2] = b