def parse_value(rawvalue, cname, version): """Parses a setting value, for a given setting name and brushfile version.""" if cname in string_value_settings: string = brushinfo_unquote(rawvalue) return [(cname, string)] elif version <= 1 and cname == "color": rgb = [int(c) / 255.0 for c in rawvalue.split(" ")] h, s, v = helpers.rgb_to_hsv(*rgb) return [("color_h", [h, {}]), ("color_s", [s, {}]), ("color_v", [v, {}])] elif version <= 1 and cname == "change_radius": if rawvalue == "0.0": return [] raise Obsolete, "change_radius is not supported any more" elif version <= 2 and cname == "adapt_color_from_image": if rawvalue == "0.0": return [] raise Obsolete, "adapt_color_from_image is obsolete, ignored;" + " use smudge and smudge_length instead" elif version <= 1 and cname == "painting_time": return [] if version <= 1 and cname == "speed": cname = "speed1" parts = rawvalue.split("|") basevalue = float(parts[0]) input_points = {} for part in parts[1:]: inputname, rawpoints = part.strip().split(" ", 1) if version <= 1: points = parse_points_v1(rawpoints) else: points = parse_points_v2(rawpoints) assert len(points) >= 2 input_points[inputname] = points return [(cname, [float(basevalue), input_points])]
def parse_value(rawvalue, cname, version): """Parses a setting value, for a given setting name and brushfile version.""" if cname in string_value_settings: string = brushinfo_unquote(rawvalue) return [(cname, string)] elif version <= 1 and cname == 'color': rgb = [int(c)/255.0 for c in rawvalue.split(" ")] h, s, v = helpers.rgb_to_hsv(*rgb) return [('color_h', [h, {}]), ('color_s', [s, {}]), ('color_v', [v, {}])] elif version <= 1 and cname == 'change_radius': if rawvalue == '0.0': return [] raise Obsolete, 'change_radius is not supported any more' elif version <= 2 and cname == 'adapt_color_from_image': if rawvalue == '0.0': return [] raise Obsolete, 'adapt_color_from_image is obsolete, ignored;' + \ ' use smudge and smudge_length instead' elif version <= 1 and cname == 'painting_time': return [] if version <= 1 and cname == 'speed': cname = 'speed1' parts = rawvalue.split('|') basevalue = float(parts[0]) input_points = {} for part in parts[1:]: inputname, rawpoints = part.strip().split(' ', 1) if version <= 1: points = parse_points_v1(rawpoints) else: points = parse_points_v2(rawpoints) assert len(points) >= 2 input_points[inputname] = points return [(cname, [float(basevalue), input_points])]
def parse_value(rawvalue, cname, version): """Parses a setting value, for a given setting name and brushfile version.""" if cname in STRING_VALUE_SETTINGS: string = brushinfo_unquote(rawvalue) return [(cname, string)] elif version <= 1 and cname == 'color': rgb = [int(c)/255.0 for c in rawvalue.split(" ")] h, s, v = helpers.rgb_to_hsv(*rgb) return [('color_h', [h, {}]), ('color_s', [s, {}]), ('color_v', [v, {}])] elif version <= 1 and cname == 'change_radius': if rawvalue == '0.0': return [] raise Obsolete('change_radius is not supported any more') elif version <= 2 and cname == 'adapt_color_from_image': if rawvalue == '0.0': return [] raise Obsolete('adapt_color_from_image is obsolete, ignored;' + ' use smudge and smudge_length instead') elif version <= 1 and cname == 'painting_time': return [] if version <= 1 and cname == 'speed': cname = 'speed1' parts = rawvalue.split('|') basevalue = float(parts[0]) input_points = {} for part in parts[1:]: inputname, rawpoints = part.strip().split(' ', 1) if version <= 1: points = parse_points_v1(rawpoints) else: points = parse_points_v2(rawpoints) assert len(points) >= 2 input_points[inputname] = points return [(cname, [float(basevalue), input_points])]
def apply_brightness(self, colorArray, brightness=None): """Apply brightness modification to the colors Args: colorArray (ndarray): input array Returns: ndarray: output array with colors modified with brightness """ hsv = rgb_to_hsv(colorArray) hsv[:, 2] *= brightness if brightness is not None else self.brightness rgb = hsv_to_rgb(hsv) return rgb.astype(np.int32)
def set_color_rgb(self, rgb): self.set_color_hsv(helpers.rgb_to_hsv(*rgb))
def append_hue_spectrum(self, rgbbase): h,s,v = rgb_to_hsv(*rgbbase) for hue_idx in xrange(20): hue = (hue_idx*0.05) self.append_hsv(hue, s,v)
def hsv(self, index): if index < 0 or index > (len(self)-1): return None # should be Exception perhaps? else: return rgb_to_hsv(*map(lambda x: x / 255.0, self[index]))