I converted the best I could for Python and I got something like this:
def UVD_Color(self, rgb_d):
# Measures
self.uvd_width = self.layout.panel_uvd_mask.width()
self.uvd_height = self.layout.panel_uvd_mask.height()
w2 = 0.5 * self.uvd_width
h2 = 0.5 * self.uvd_height
# Black Base Image
image = QImage(self.uvd_width, self.uvd_height, QImage.Format_ARGB32_Premultiplied)
image.fill(QColor(0,0,0))
# Painter
painter = QPainter(image)
painter.begin(image)
painter.setCompositionMode(QPainter.CompositionMode_Plus)
# Gradient Variables
diag = self.uvd_3 * 3
if diag <= 0:
# RED
gradient_red = QLinearGradient(self.P45[0],self.P45[1], self.P12[0],self.P12[1])
gradient_red.setColorAt(0.0, QColor(0,0,0,255))
gradient_red.setColorAt(1.0, QColor(0,0,0,0))
# GREEN
gradient_green = QLinearGradient(self.P23[0],self.P23[1], self.P56[0],self.P56[1])
gradient_green.setColorAt(0.0, QColor(0,0,0,255))
gradient_green.setColorAt(1.0, QColor(0,0,0,0))
# BLUE
gradient_blue = QLinearGradient(self.P61[0],self.P61[1], self.P34[0],self.P34[1])
gradient_blue.setColorAt(0.0, QColor(0,0,0,255))
gradient_blue.setColorAt(1.0, QColor(0,0,0,0))
if (diag > 0 and diag < 1):
v=diag*255
# RED
gradient_red = QLinearGradient(self.P45[0],self.P45[1], self.P12[0],self.P12[1])
gradient_red.setColorAt(0.0, QColor(v,0,0,255))
gradient_red.setColorAt(1.0, QColor(0,0,0,255))
# GREEN
gradient_green = QLinearGradient(self.P23[0],self.P23[1], self.P56[0],self.P56[1])
gradient_green.setColorAt(0.0, QColor(0,v,0,255))
gradient_green.setColorAt(1.0, QColor(0,0,0,255))
# BLUE
gradient_blue = QLinearGradient(self.P61[0],self.P61[1], self.P34[0],self.P34[1])
gradient_blue.setColorAt(0.0, QColor(0,0,v,255))
gradient_blue.setColorAt(1.0, QColor(0,0,0,255))
if (diag >= 1 and diag <= 2):
# RED
gradient_red = QLinearGradient(self.P45[0],self.P45[1], self.P12[0],self.P12[1])
gradient_red.setColorAt(0.0, QColor(255,0,0,255))
gradient_red.setColorAt(1.0, QColor(0,0,0,0))
# GREEN
gradient_green = QLinearGradient(self.P23[0],self.P23[1], self.P56[0],self.P56[1])
gradient_green.setColorAt(0.0, QColor(0,255,0,255))
gradient_green.setColorAt(1.0, QColor(0,0,0,0))
# BLUE
gradient_blue = QLinearGradient(self.P61[0],self.P61[1], self.P34[0],self.P34[1])
gradient_blue.setColorAt(0.0, QColor(0,0,255,255))
gradient_blue.setColorAt(1.0, QColor(0,0,0,0))
if (diag > 2 and diag < 3):
v=(diag-2)*255
# RED
gradient_red = QLinearGradient(self.P45[0],self.P45[1], self.P12[0],self.P12[1])
gradient_red.setColorAt(0.0, QColor(255,0,0,255))
gradient_red.setColorAt(1.0, QColor(v,0,0,255))
# GREEN
gradient_green = QLinearGradient(self.P23[0],self.P23[1], self.P56[0],self.P56[1])
gradient_green.setColorAt(0.0, QColor(0,255,0,255))
gradient_green.setColorAt(1.0, QColor(0,v,0,255))
# BLUE
gradient_blue = QLinearGradient(self.P61[0],self.P61[1], self.P34[0],self.P34[1])
gradient_blue.setColorAt(0.0, QColor(0,0,255,255))
gradient_blue.setColorAt(1.0, QColor(0,0,v,255))
if diag >= 3:
# RED
gradient_red = QLinearGradient(self.P45[0],self.P45[1], self.P12[0],self.P12[1])
gradient_red.setColorAt(0.0, QColor(255,255,255,255))
gradient_red.setColorAt(1.0, QColor(0,0,0,0))
# GREEN
gradient_green = QLinearGradient(self.P23[0],self.P23[1], self.P56[0],self.P56[1])
gradient_green.setColorAt(0.0, QColor(255,255,255,255))
gradient_green.setColorAt(1.0, QColor(0,0,0,0))
# BLUE
gradient_blue = QLinearGradient(self.P61[0],self.P61[1], self.P34[0],self.P34[1])
gradient_blue.setColorAt(0.0, QColor(255,255,255,255))
gradient_blue.setColorAt(1.0, QColor(0,0,0,0))
# Paint the Gradients
painter.setBrush(QBrush(gradient_red))
painter.drawRect(0,0, self.uvd_width,self.uvd_height)
painter.setBrush(QBrush(gradient_green))
painter.drawRect(0,0, self.uvd_width,self.uvd_height)
painter.setBrush(QBrush(gradient_blue))
painter.drawRect(0,0, self.uvd_width,self.uvd_height)
# End the Painter
painter.end()
# Place image on Widget
self.layout.panel_uvd_input.setPixmap(QPixmap(image))
And it is extremely fast. i am actually stunned.
I think I will be able to set it to update in real time with it so it works like the other panels.
Thank you for pointing me this method.