Krita Source Code Documentation
Loading...
Searching...
No Matches
mixer_slider_docker.color_slider.ColorSlider Class Reference
+ Inheritance diagram for mixer_slider_docker.color_slider.ColorSlider:

Public Member Functions

 __init__ (self, docker, left_color=default_color, right_color=default_color, parent=None)
 
 adjust_pos_x (self, x)
 
 mouseMoveEvent (self, event)
 
 mouseReleaseEvent (self, event)
 
 paintEvent (self, event)
 
 resizeEvent (self, event)
 
 set_color (self, pos, color)
 
 update_slider (self)
 

Public Attributes

 cursor_fill_color
 
 cursor_outline_color
 
 docker
 
 left_color
 
 need_redraw
 
 rendered_image
 
 right_color
 
 slider_pixmap
 
 value_x
 

Static Public Attributes

 default_color = ManagedColor("", "", "")
 

Detailed Description

Definition at line 19 of file color_slider.py.

Constructor & Destructor Documentation

◆ __init__()

mixer_slider_docker.color_slider.ColorSlider.__init__ ( self,
docker,
left_color = default_color,
right_color = default_color,
parent = None )

Definition at line 22 of file color_slider.py.

22 def __init__(self, docker, left_color=default_color, right_color=default_color, parent=None):
23 super(ColorSlider, self).__init__(parent)
24 self.docker = docker
25 self.left_color = left_color
26 self.right_color = right_color
27 self.slider_pixmap = None
28 self.value_x = None
29 self.cursor_fill_color = QColor.fromRgbF(1, 1, 1, 1)
30 self.cursor_outline_color = QColor.fromRgbF(0, 0, 0, 1)
31 self.need_redraw = True
32

References mixer_slider_docker.color_slider.ColorSlider.__init__().

Member Function Documentation

◆ adjust_pos_x()

◆ mouseMoveEvent()

◆ mouseReleaseEvent()

mixer_slider_docker.color_slider.ColorSlider.mouseReleaseEvent ( self,
event )

Definition at line 122 of file color_slider.py.

122 def mouseReleaseEvent(self, event):
123 pos = event.pos()
124 self.value_x = self.adjust_pos_x(pos.x())
125 y = int(self.height() / 2)
126 fixed_pos = QPoint(self.value_x, y)
127 color = self.rendered_image.pixelColor(fixed_pos)
128 mc = self.docker.qcolor_to_managedcolor(color)
129 if self.docker.canvas() is not None:
130 if self.docker.canvas().view() is not None:
131 self.docker.canvas().view().setForeGroundColor(mc)
132 self.update()

References mixer_slider_docker.color_slider.ColorSlider.adjust_pos_x(), mixer_slider_docker.color_slider.ColorSlider.docker, mixer_slider_docker.slider_line.SliderLine.docker, mixer_slider_docker.ui_mixer_slider_docker.UIMixerSliderDocker.docker, KisBrush::Private.height, KisBrush.height(), GimpBrushV1Header.height, GimpBrushHeader.height, KisMaskGenerator.height(), KisConvolutionKernel.height(), KisImage::KisImagePrivate.height, KisImage.height(), Document.height(), Selection.height(), GimpPatternHeader.height, KoPattern.height(), Header.height, PSDHeader.height, psd_pattern.height, KisAnimationRenderingOptions.height, KisBasicVideoInfo.height, DlgCanvasSize.height(), KisPNGReaderAbstract.height, KisApplicationArguments.height, KisGLTexturesInfo.height, KisColorSelectorComponent.height(), KisGLImageF16.height(), SpriterFile.height, Bone.height, TgaHeader.height, KisTiffBasicInfo.height, tileDimensions.height, xcfImage.height, KisDabCacheBase::SavedDabParameters.height, mixer_slider_docker.color_slider.ColorSlider.rendered_image, KoPathToolSelection.update(), QSBR.update(), KisImageCommand::UpdateTarget.update(), KisUpdateCommand.update(), KisGeneratorLayer.update(), KisBusyProgressIndicator.update(), Shape.update(), KisFilterSelectorWidget.update(), KisIntegerColorInput.update(), KisFloatColorInput.update(), KisHexColorInput.update(), KisHsvColorInput.update(), KoProgressUpdater.update(), KisColorSelectorComponent.update(), KisSpecificColorSelectorWidget.update(), KoShape.update(), KoShapeContainer.update(), KoShapeContainer.update(), KisTextureTile.update(), KoShapeManager.update(), KisStabilizerDelayedPaintHelper.update(), KisGradientChooser.update(), KisPatternChooser.update(), KisSeExprScriptChooser.update(), KoLoadingShapeUpdater.update(), krita.sceditor.widget.EditorSidebar.update, KisToolBasicBrushBase.update(), and mixer_slider_docker.color_slider.ColorSlider.value_x.

◆ paintEvent()

mixer_slider_docker.color_slider.ColorSlider.paintEvent ( self,
event )

Definition at line 104 of file color_slider.py.

104 def paintEvent(self, event):
105 self.update_slider()
106

References mixer_slider_docker.color_slider.ColorSlider.update_slider().

◆ resizeEvent()

mixer_slider_docker.color_slider.ColorSlider.resizeEvent ( self,
event )

Definition at line 107 of file color_slider.py.

107 def resizeEvent(self, event): # after resizing the widget, force-redraw the underlying slider
108 self.need_redraw = True
109

References mixer_slider_docker.color_slider.ColorSlider.need_redraw.

◆ set_color()

mixer_slider_docker.color_slider.ColorSlider.set_color ( self,
pos,
color )

Definition at line 33 of file color_slider.py.

33 def set_color(self, pos, color):
34 if pos == 'left':
35 if self.left_color is not color:
36 self.left_color = color
37 self.need_redraw = True
38 else:
39 if self.right_color is not color:
40 self.right_color = color
41 self.need_redraw = True
42

References mixer_slider_docker.color_slider.ColorSlider.left_color, mixer_slider_docker.color_slider.ColorSlider.need_redraw, and mixer_slider_docker.color_slider.ColorSlider.right_color.

◆ update_slider()

mixer_slider_docker.color_slider.ColorSlider.update_slider ( self)
Update the slider to a gradient between the two colors.

The painting of the slider comes from the program Krita. The original code can be accessed
at the following URL.
https://github.com/KDE/krita/blob/master/plugins/dockers/advancedcolorselector/kis_shade_selector_line.cpp

Definition at line 43 of file color_slider.py.

43 def update_slider(self):
44 '''
45 Update the slider to a gradient between the two colors.
46
47 The painting of the slider comes from the program Krita. The original code can be accessed
48 at the following URL.
49 https://github.com/KDE/krita/blob/master/plugins/dockers/advancedcolorselector/kis_shade_selector_line.cpp
50 '''
51 if self.need_redraw:
52 patch_count = self.width()
53 base_hsva = list(self.docker.managedcolor_to_qcolor(self.left_color).getHsvF())
54 dest_hsva = list(self.docker.managedcolor_to_qcolor(self.right_color).getHsvF())
55 diff_hsva = [(dest_hsva[i] - base_hsva[i]) for i in range(4)]
56 if dest_hsva[0] == -1.0:
57 diff_hsva[0] = 0
58 elif base_hsva[0] == -1.0:
59 diff_hsva[0] = 0
60 base_hsva[0] = dest_hsva[0]
61 elif diff_hsva[0] > 0.5: # make sure the sliding goes through a minor arc
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
65
66 step_hsva = [x / patch_count for x in diff_hsva]
67
68 self.slider_pixmap = QPixmap(self.width(), self.height())
69 painter = QPainter(self.slider_pixmap)
70
71 for i in range(patch_count):
72 hue = base_hsva[0] + i * step_hsva[0]
73 while hue < 0.0:
74 hue += 1.0
75
76 while hue > 1.0:
77 hue -= 1.0
78
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)
83
84 painter.end()
85
86 self.need_redraw = False
87
88 widget_painter = QPainter(self)
89 self.rendered_image = self.slider_pixmap.toImage()
90
91 widget_painter.drawImage(0, 0, self.rendered_image)
92 if self.value_x is not None:
93 start_x = int(self.value_x)
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)]
100 widget_painter.setBrush(QBrush(self.cursor_fill_color))
101 widget_painter.setPen(self.cursor_outline_color)
102 widget_painter.drawPolygon(QPolygon(points))
103

References mixer_slider_docker.color_slider.ColorSlider.docker, mixer_slider_docker.slider_line.SliderLine.docker, mixer_slider_docker.ui_mixer_slider_docker.UIMixerSliderDocker.docker, KisBrush::Private.height, GimpBrushV1Header.height, GimpBrushHeader.height, KisImage::KisImagePrivate.height, GimpPatternHeader.height, PSDHeader.height, psd_pattern.height, KisAnimationRenderingOptions.height, KisBasicVideoInfo.height, DlgCanvasSize.height(), KisBrush.height(), KisMaskGenerator.height(), KisConvolutionKernel.height(), KisImage.height(), Document.height(), Selection.height(), KoPattern.height(), Header.height, KisPNGReaderAbstract.height, KisApplicationArguments.height, KisGLTexturesInfo.height, KisColorSelectorComponent.height(), KisGLImageF16.height(), SpriterFile.height, Bone.height, TgaHeader.height, KisTiffBasicInfo.height, tileDimensions.height, xcfImage.height, KisDabCacheBase::SavedDabParameters.height, mixer_slider_docker.color_slider.ColorSlider.left_color, mixer_slider_docker.color_slider.ColorSlider.need_redraw, mixer_slider_docker.color_slider.ColorSlider.right_color, mixer_slider_docker.color_slider.ColorSlider.slider_pixmap, KisBrush::Private.width, KisBrush.width(), GimpBrushV1Header.width, GimpBrushHeader.width, KoCSSFontInfo.width, KoSvgText::FontFeatureEastAsian.width, DlgCanvasSize.width(), KisFillInterval.width(), KisMaskGenerator.width(), KisConvolutionKernel.width(), KisImage::KisImagePrivate.width, KisImage.width(), Document.width(), Selection.width(), GimpPatternHeader.width, KoPattern.width(), Header.width, PSDHeader.width, psd_pattern.width, KisAnimationRenderingOptions.width, KisBasicVideoInfo.width, KisPNGReaderAbstract.width, KisApplicationArguments.width, KisGLTexturesInfo.width, KisColorSelectorComponent.width(), KisGLImageF16.width(), SpriterFile.width, Bone.width, TgaHeader.width, KisBufferStreamContigBase.width(), KisBufferStreamInterleaveUpsample.width(), KisTiffBasicInfo.width, tileDimensions.width, xcfImage.width, KisDabCacheBase::SavedDabParameters.width, KarbonCalligraphicPoint.width(), KisBufferStreamBase.width(), KisBufferStreamSeparate.width(), and KarbonCalligraphyOptionWidget::Profile.width.

Member Data Documentation

◆ cursor_fill_color

mixer_slider_docker.color_slider.ColorSlider.cursor_fill_color

Definition at line 29 of file color_slider.py.

◆ cursor_outline_color

mixer_slider_docker.color_slider.ColorSlider.cursor_outline_color

Definition at line 30 of file color_slider.py.

◆ default_color

mixer_slider_docker.color_slider.ColorSlider.default_color = ManagedColor("", "", "")
static

Definition at line 20 of file color_slider.py.

◆ docker

mixer_slider_docker.color_slider.ColorSlider.docker

Definition at line 24 of file color_slider.py.

◆ left_color

mixer_slider_docker.color_slider.ColorSlider.left_color

Definition at line 25 of file color_slider.py.

◆ need_redraw

mixer_slider_docker.color_slider.ColorSlider.need_redraw

Definition at line 31 of file color_slider.py.

◆ rendered_image

mixer_slider_docker.color_slider.ColorSlider.rendered_image

Definition at line 89 of file color_slider.py.

◆ right_color

mixer_slider_docker.color_slider.ColorSlider.right_color

Definition at line 26 of file color_slider.py.

◆ slider_pixmap

mixer_slider_docker.color_slider.ColorSlider.slider_pixmap

Definition at line 27 of file color_slider.py.

◆ value_x

mixer_slider_docker.color_slider.ColorSlider.value_x

Definition at line 28 of file color_slider.py.


The documentation for this class was generated from the following file: