add brightness controls (#888)

Closes #860
This commit is contained in:
Stefan Breunig
2022-06-12 19:01:41 +02:00
committed by GitHub
parent 861fbe9a2b
commit e2d758f540
11 changed files with 350 additions and 4 deletions
+14 -2
View File
@@ -23,6 +23,7 @@ CURSOR_GRAB = Qt.OpenHandCursor
class Canvas(QWidget):
zoomRequest = pyqtSignal(int)
lightRequest = pyqtSignal(int)
scrollRequest = pyqtSignal(int, int)
newShape = pyqtSignal()
selectionChanged = pyqtSignal(bool)
@@ -47,6 +48,7 @@ class Canvas(QWidget):
self.prev_point = QPointF()
self.offsets = QPointF(), QPointF()
self.scale = 1.0
self.overlay_color = None
self.label_font_size = 8
self.pixmap = QPixmap()
self.visible = {}
@@ -503,7 +505,15 @@ class Canvas(QWidget):
p.scale(self.scale, self.scale)
p.translate(self.offset_to_center())
p.drawPixmap(0, 0, self.pixmap)
temp = self.pixmap
if self.overlay_color:
temp = QPixmap(self.pixmap)
painter = QPainter(temp)
painter.setCompositionMode(painter.CompositionMode_Overlay)
painter.fillRect(temp.rect(), self.overlay_color)
painter.end()
p.drawPixmap(0, 0, temp)
Shape.scale = self.scale
Shape.label_font_size = self.label_font_size
for shape in self.shapes:
@@ -607,7 +617,9 @@ class Canvas(QWidget):
v_delta = delta.y()
mods = ev.modifiers()
if Qt.ControlModifier == int(mods) and v_delta:
if int(Qt.ControlModifier) | int(Qt.ShiftModifier) == int(mods) and v_delta:
self.lightRequest.emit(v_delta)
elif Qt.ControlModifier == int(mods) and v_delta:
self.zoomRequest.emit(v_delta)
else:
v_delta and self.scrollRequest.emit(v_delta, Qt.Vertical)
+33
View File
@@ -0,0 +1,33 @@
try:
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
except ImportError:
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class LightWidget(QSpinBox):
def __init__(self, title, value=50):
super(LightWidget, self).__init__()
self.setButtonSymbols(QAbstractSpinBox.NoButtons)
self.setRange(0, 100)
self.setSuffix(' %')
self.setValue(value)
self.setToolTip(title)
self.setStatusTip(self.toolTip())
self.setAlignment(Qt.AlignCenter)
def minimumSizeHint(self):
height = super(LightWidget, self).minimumSizeHint().height()
fm = QFontMetrics(self.font())
width = fm.width(str(self.maximum()))
return QSize(width, height)
def color(self):
if self.value() == 50:
return None
strength = int(self.value()/100 * 255 + 0.5)
return QColor(strength, strength, strength)