Fixed item pen width in big images.

This commit is contained in:
23rd 2021-03-21 20:37:45 +03:00
parent 1504f92a64
commit d9a29b6f15
2 changed files with 33 additions and 20 deletions

View file

@ -27,11 +27,6 @@ auto Normalized(float64 angle) {
+ ((std::abs(angle) < 360) ? 0 : (-360 * (angle < 0 ? -1 : 1)));
}
QPen PenStyled(QPen pen, Qt::PenStyle style) {
pen.setStyle(style);
return pen;
}
} // namespace
int NumberedItem::number() const {
@ -49,13 +44,6 @@ ItemBase::ItemBase(
int x,
int y)
: _lastZ(zPtr)
, _selectPen(QBrush(Qt::white), 1, Qt::DashLine, Qt::SquareCap, Qt::RoundJoin)
, _selectPenInactive(
QBrush(Qt::gray),
1,
Qt::DashLine,
Qt::SquareCap,
Qt::RoundJoin)
, _horizontalSize(size)
, _zoom(std::move(zoomValue)) {
setFlags(QGraphicsItem::ItemIsMovable
@ -78,6 +66,13 @@ ItemBase::ItemBase(
.min = int(st::photoEditorItemMinSize / zoom),
.max = int(st::photoEditorItemMaxSize / zoom),
};
updatePens(QPen(
QBrush(),
1 / zoom,
Qt::DashLine,
Qt::SquareCap,
Qt::RoundJoin));
}, _lifetime);
}
@ -103,13 +98,11 @@ void ItemBase::paint(
return;
}
PainterHighQualityEnabler hq(*p);
const auto &pen = (option->state & QStyle::State_HasFocus)
? _selectPen
: _selectPenInactive;
p->setPen(pen);
const auto hasFocus = (option->state & QStyle::State_HasFocus);
p->setPen(hasFocus ? _pens.select : _pens.selectInactive);
p->drawRect(innerRect());
p->setPen(PenStyled(pen, Qt::SolidLine));
p->setPen(hasFocus ? _pens.handle : _pens.handleInactive);
p->setBrush(st::photoEditorItemBaseHandleFg);
p->drawEllipse(rightHandleRect());
p->drawEllipse(leftHandleRect());
@ -270,4 +263,19 @@ void ItemBase::setFlip(bool value) {
void ItemBase::performFlip() {
}
void ItemBase::updatePens(QPen pen) {
_pens = {
.select = pen,
.selectInactive = pen,
.handle = pen,
.handleInactive = pen,
};
_pens.select.setColor(Qt::white);
_pens.selectInactive.setColor(Qt::gray);
_pens.handle.setColor(Qt::white);
_pens.handleInactive.setColor(Qt::gray);
_pens.handle.setStyle(Qt::SolidLine);
_pens.handleInactive.setStyle(Qt::SolidLine);
}
} // namespace Editor

View file

@ -82,11 +82,16 @@ private:
QRectF leftHandleRect() const;
bool isHandling() const;
void updateVerticalSize();
void updatePens(QPen pen);
const std::shared_ptr<float64> _lastZ;
const QPen _selectPen;
const QPen _selectPenInactive;
const QPen _handlePen;
struct {
QPen select;
QPen selectInactive;
QPen handle;
QPen handleInactive;
} _pens;
base::unique_qptr<Ui::PopupMenu> _menu;