diff --git a/support/touchproxystyle.cpp b/support/touchproxystyle.cpp index 56390c234..76fd8cd3c 100644 --- a/support/touchproxystyle.cpp +++ b/support/touchproxystyle.cpp @@ -43,19 +43,6 @@ static bool isOnCombo(const QWidget *w) return w && (qobject_cast(w) || isOnCombo(w->parentWidget())); } -static QPainterPath buildPath(const QRectF &r, double radius) -{ - QPainterPath path; - double diameter(radius*2); - - path.moveTo(r.x()+r.width(), r.y()+r.height()-radius); - path.arcTo(r.x()+r.width()-diameter, r.y(), diameter, diameter, 0, 90); - path.arcTo(r.x(), r.y(), diameter, diameter, 90, 90); - path.arcTo(r.x(), r.y()+r.height()-diameter, diameter, diameter, 180, 90); - path.arcTo(r.x()+r.width()-diameter, r.y()+r.height()-diameter, diameter, diameter, 270, 90); - return path; -} - static void drawSpinButton(QPainter *painter, const QRect &r, const QColor &col, bool isPlus) { int length=r.height()*0.5; @@ -392,8 +379,8 @@ void TouchProxyStyle::drawComplexControl(ComplexControl control, const QStyleOpt slider.adjust(adjust, 1, -adjust, -1); } int dimension=(Qt::Horizontal==sb->orientation ? slider.height() : slider.width()); - QPainterPath path=buildPath(QRectF(slider.x()+0.5, slider.y()+0.5, slider.width()-1, slider.height()-1), - dimension>6 ? (dimension/4.0) : (dimension/8.0)); + QPainterPath path=Utils::buildPath(QRectF(slider.x()+0.5, slider.y()+0.5, slider.width()-1, slider.height()-1), + dimension>6 ? (dimension/4.0) : (dimension/8.0)); QColor col(option->palette.highlight().color()); if (!(option->state&State_Active)) { col=col.darker(115); diff --git a/support/utils.cpp b/support/utils.cpp index 8ab256bc9..6af6589a3 100644 --- a/support/utils.cpp +++ b/support/utils.cpp @@ -891,3 +891,16 @@ bool Utils::touchFriendly() { return isTouchFriendly; } + +QPainterPath Utils::buildPath(const QRectF &r, double radius) +{ + QPainterPath path; + double diameter(radius*2); + + path.moveTo(r.x()+r.width(), r.y()+r.height()-radius); + path.arcTo(r.x()+r.width()-diameter, r.y(), diameter, diameter, 0, 90); + path.arcTo(r.x(), r.y(), diameter, diameter, 90, 90); + path.arcTo(r.x(), r.y()+r.height()-diameter, diameter, diameter, 180, 90); + path.arcTo(r.x()+r.width()-diameter, r.y()+r.height()-diameter, diameter, diameter, 270, 90); + return path; +} diff --git a/support/utils.h b/support/utils.h index 96f331604..dd51e3764 100644 --- a/support/utils.h +++ b/support/utils.h @@ -31,6 +31,7 @@ #include #include #include +#include #ifdef ENABLE_KDE_SUPPORT #include #include @@ -45,6 +46,7 @@ class QString; class QWidget; class QUrl; +class QRectF; namespace Utils { @@ -120,6 +122,7 @@ namespace Utils extern Desktop currentDe(); extern void setTouchFriendly(bool t); extern bool touchFriendly(); + extern QPainterPath buildPath(const QRectF &r, double radius); } #endif diff --git a/widgets/coverwidget.cpp b/widgets/coverwidget.cpp index 091213447..0875f8d55 100644 --- a/widgets/coverwidget.cpp +++ b/widgets/coverwidget.cpp @@ -28,27 +28,15 @@ #include "context/view.h" #include "support/localize.h" #include "support/gtkstyle.h" -#include +#include "support/utils.h" #include #include #include #include +#include static const int constBorder=1; -static QPainterPath buildPath(const QRectF &r, double radius) -{ - QPainterPath path; - double diameter(radius*2); - - path.moveTo(r.x()+r.width(), r.y()+r.height()-radius); - path.arcTo(r.x()+r.width()-diameter, r.y(), diameter, diameter, 0, 90); - path.arcTo(r.x(), r.y(), diameter, diameter, 90, 90); - path.arcTo(r.x(), r.y()+r.height()-diameter, diameter, diameter, 180, 90); - path.arcTo(r.x()+r.width()-diameter, r.y()+r.height()-diameter, diameter, diameter, 270, 90); - return path; -} - CoverWidget::CoverWidget(QWidget *parent) : QLabel(parent) , pressed(false) @@ -145,10 +133,10 @@ void CoverWidget::paintEvent(QPaintEvent *) p.setRenderHint(QPainter::Antialiasing); col.setAlphaF(0.75); p.setPen(col); - p.drawPath(buildPath(rf, radius)); + p.drawPath(Utils::buildPath(rf, radius)); col.setAlphaF(0.35); p.setPen(col); - p.drawPath(buildPath(rf.adjusted(-1, -1, 1, 1), radius+2)); + p.drawPath(Utils::buildPath(rf.adjusted(-1, -1, 1, 1), radius+2)); } } @@ -170,7 +158,7 @@ void CoverWidget::coverImage(const QImage &) pix->fill(Qt::transparent); QPainter painter(pix); painter.setRenderHint(QPainter::Antialiasing); - QPainterPath path=buildPath(QRectF(0.5, 0.5, img.width()-1, img.height()-1), img.width()>128 ? 6.0 : 4.0); + QPainterPath path=Utils::buildPath(QRectF(0.5, 0.5, img.width()-1, img.height()-1), img.width()>128 ? 6.0 : 4.0); painter.fillPath(path, img); // QPainterPath glassPath; diff --git a/widgets/groupedview.cpp b/widgets/groupedview.cpp index 8ba3175a2..c37a15c0a 100644 --- a/widgets/groupedview.cpp +++ b/widgets/groupedview.cpp @@ -215,19 +215,6 @@ public: return QStyledItemDelegate::sizeHint(option, index); } - static QPainterPath buildPath(const QRectF &r, double radius) - { - QPainterPath path; - double diameter(radius*2); - - path.moveTo(r.x()+r.width(), r.y()+r.height()-radius); - path.arcTo(r.x()+r.width()-diameter, r.y(), diameter, diameter, 0, 90); - path.arcTo(r.x(), r.y(), diameter, diameter, 90, 90); - path.arcTo(r.x(), r.y()+r.height()-diameter, diameter, diameter, 180, 90); - path.arcTo(r.x()+r.width()-diameter, r.y()+r.height()-diameter, diameter, diameter, 270, 90); - return path; - } - void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { if (!index.isValid()) { @@ -352,11 +339,11 @@ public: g.setColorAt(0, gradCol.dark(165)); g.setColorAt(1, gradCol.light(165)); painter->setRenderHint(QPainter::Antialiasing, true); - painter->fillPath(buildPath(border, 3), g); + painter->fillPath(Utils::buildPath(border, 3), g); painter->setPen(QPen(gradCol, 1)); - painter->drawPath(buildPath(border.adjusted(-1, -1, 1, 1), 3.5)); + painter->drawPath(Utils::buildPath(border.adjusted(-1, -1, 1, 1), 3.5)); painter->setPen(QPen(QApplication::palette().color(QPalette::HighlightedText), 1)); - painter->drawPath(buildPath(border, 3)); + painter->drawPath(Utils::buildPath(border, 3)); painter->setRenderHint(QPainter::Antialiasing, false); } diff --git a/widgets/icons.cpp b/widgets/icons.cpp index 29b02d810..b5168c322 100644 --- a/widgets/icons.cpp +++ b/widgets/icons.cpp @@ -25,6 +25,7 @@ #include "config.h" #include "gui/settings.h" #include "support/globalstatic.h" +#include "support/utils.cpp" #include #include #include @@ -121,19 +122,6 @@ static QPixmap createConsumeIconPixmap(int size, const QColor &col, double opaci } #ifndef USE_SYSTEM_MENU_ICON -static QPainterPath buildPath(const QRectF &r, double radius) -{ - QPainterPath path; - double diameter(radius*2); - - path.moveTo(r.x()+r.width(), r.y()+r.height()-radius); - path.arcTo(r.x()+r.width()-diameter, r.y(), diameter, diameter, 0, 90); - path.arcTo(r.x(), r.y(), diameter, diameter, 90, 90); - path.arcTo(r.x(), r.y()+r.height()-diameter, diameter, diameter, 180, 90); - path.arcTo(r.x()+r.width()-diameter, r.y()+r.height()-diameter, diameter, diameter, 270, 90); - return path; -} - static QPixmap createMenuIconPixmap(int size, QColor col, double opacity=1.0) { static const int constShadeFactor=75; @@ -176,7 +164,7 @@ static QPixmap createMenuIconPixmap(int size, QColor col, double opacity=1.0) grad.setColorAt(0, col); col.setAlphaF(light ? 1.0 : 0.5); grad.setColorAt(1, col); - p.fillPath(buildPath(rect, lineWidth/2.0), grad); + p.fillPath(Utils::buildPath(rect, lineWidth/2.0), grad); } p.end(); return pix; diff --git a/widgets/messageoverlay.cpp b/widgets/messageoverlay.cpp index 0e8ce1c20..63001c8ff 100644 --- a/widgets/messageoverlay.cpp +++ b/widgets/messageoverlay.cpp @@ -25,6 +25,7 @@ #include "toolbutton.h" #include "icons.h" #include "support/localize.h" +#include "support/utils.h" #include #include #include @@ -80,19 +81,6 @@ void MessageOverlay::setText(const QString &txt, int timeout, bool allowCancel) } } -static QPainterPath buildPath(const QRectF &r, double radius) -{ - QPainterPath path; - double diameter(radius*2); - - path.moveTo(r.x()+r.width(), r.y()+r.height()-radius); - path.arcTo(r.x()+r.width()-diameter, r.y(), diameter, diameter, 0, 90); - path.arcTo(r.x(), r.y(), diameter, diameter, 90, 90); - path.arcTo(r.x(), r.y()+r.height()-diameter, diameter, diameter, 180, 90); - path.arcTo(r.x()+r.width()-diameter, r.y()+r.height()-diameter, diameter, diameter, 270, 90); - return path; -} - void MessageOverlay::paintEvent(QPaintEvent *) { QPainter p(this); @@ -100,7 +88,7 @@ void MessageOverlay::paintEvent(QPaintEvent *) QRectF rf(r.x()+0.5, r.y()+0.5, r.width()-1, r.height()-1); QColor borderCol=palette().color(QPalette::Highlight).darker(120); QColor col=palette().color(QPalette::Window); - QPainterPath path=buildPath(rf, r.height()/4.0); + QPainterPath path=Utils::buildPath(rf, r.height()/4.0); col.setAlphaF(0.8); p.setRenderHint(QPainter::Antialiasing, true); p.fillPath(path, col); diff --git a/widgets/toolbutton.cpp b/widgets/toolbutton.cpp index 633ff74a6..9cfa529a4 100644 --- a/widgets/toolbutton.cpp +++ b/widgets/toolbutton.cpp @@ -32,22 +32,6 @@ #include #include #include -#include - -#ifdef Q_OS_MAC -static QPainterPath buildPath(const QRectF &r, double radius) -{ - QPainterPath path; - double diameter(radius*2); - - path.moveTo(r.x()+r.width(), r.y()+r.height()-radius); - path.arcTo(r.x()+r.width()-diameter, r.y(), diameter, diameter, 0, 90); - path.arcTo(r.x(), r.y(), diameter, diameter, 90, 90); - path.arcTo(r.x(), r.y()+r.height()-diameter, diameter, diameter, 180, 90); - path.arcTo(r.x()+r.width()-diameter, r.y()+r.height()-diameter, diameter, diameter, 270, 90); - return path; -} -#endif ToolButton::ToolButton(QWidget *parent) : QToolButton(parent) @@ -71,7 +55,7 @@ void ToolButton::paintEvent(QPaintEvent *e) QPainter p(this); QColor col(palette().color(QPalette::WindowText)); QRect r(rect()); - QPainterPath path=buildPath(QRectF(r.x()+1.5, r.y()+0.5, r.width()-2, r.height()-1), 2.5); + QPainterPath path=Utils::buildPath(QRectF(r.x()+1.5, r.y()+0.5, r.width()-2, r.height()-1), 2.5); p.setRenderHint(QPainter::Antialiasing, true); p.setPen(col); p.drawPath(path);