# HG changeset patch # User Hasan Yavuz Ă–ZDERYA # Date 2017-04-13 14:34:19 # Node ID 754420135f2244163fefe5fb5cfff69e32fb69c5 # Parent e3e70c85583663f108eba4facd88904fce38e1c3 fancy zoom rubberband background diff --git a/src/zoomer.cpp b/src/zoomer.cpp --- a/src/zoomer.cpp +++ b/src/zoomer.cpp @@ -73,3 +73,25 @@ QwtText Zoomer::trackerTextF(const QPoin return b; } + +void Zoomer::drawRubberBand(QPainter* painter) const +{ + const double FILL_ALPHA = 0.2; + + QColor color = painter->pen().color(); + color.setAlphaF(FILL_ALPHA); + painter->setBrush(color); + + ScrollZoomer::drawRubberBand(painter); +} + +QRegion Zoomer::rubberBandMask() const +{ + const QPolygon pa = selection(); + if (pa.count() < 2) + { + return QRegion(); + } + const QRect r = QRect(pa.first(), pa.last()).normalized().adjusted(0, 0, 1, 1); + return QRegion(r); +} diff --git a/src/zoomer.h b/src/zoomer.h --- a/src/zoomer.h +++ b/src/zoomer.h @@ -37,6 +37,10 @@ signals: protected: /// Re-implemented to display selection size in the tracker text. QwtText trackerTextF(const QPointF &pos) const; + /// Re-implemented for alpha background + void drawRubberBand(QPainter* painter) const; + /// Re-implemented for alpha background (masking is basically disabled) + QRegion rubberBandMask() const; }; #endif // ZOOMER_H