22 def __init__(self, docker, left_color=default_color, right_color=default_color, parent=None):
23 super(ColorSlider, self).
__init__(parent)
45 Update the slider to a gradient between the two colors.
47 The painting of the slider comes from the program Krita. The original code can be accessed
49 https://github.com/KDE/krita/blob/master/plugins/dockers/advancedcolorselector/kis_shade_selector_line.cpp
52 patch_count = self.width()
53 base_hsva = list(self.
docker.managedcolor_to_qcolor(self.
left_color).getHsvF())
55 diff_hsva = [(dest_hsva[i] - base_hsva[i])
for i
in range(4)]
56 if dest_hsva[0] == -1.0:
58 elif base_hsva[0] == -1.0:
60 base_hsva[0] = dest_hsva[0]
61 elif diff_hsva[0] > 0.5:
62 diff_hsva[0] = diff_hsva[0] - 1.0
63 elif diff_hsva[0] < -0.5:
64 diff_hsva[0] = diff_hsva[0] + 1.0
66 step_hsva = [x / patch_count
for x
in diff_hsva]
71 for i
in range(patch_count):
72 hue = base_hsva[0] + i * step_hsva[0]
79 saturation = base_hsva[1] + i * step_hsva[1]
80 value = base_hsva[2] + i * step_hsva[2]
81 cur_color = QColor.fromHsvF(hue, saturation, value)
82 painter.fillRect(i, 0, 1, self.height(), cur_color)
88 widget_painter = QPainter(self)
94 start_y = int(self.height() / 2)
95 delta_x = int(self.height() / 3)
96 delta_y = int(self.height() / 3)
97 points = [QPoint(start_x, start_y),
98 QPoint(start_x - delta_x, start_y + delta_y),
99 QPoint(start_x + delta_x, start_y + delta_y)]
102 widget_painter.drawPolygon(QPolygon(points))