1 /*
2 SPDX-FileCopyrightText: 2011 Graeme Gott <graeme@gottcode.org>
3
4 SPDX-License-Identifier: GPL-3.0-or-later
5 */
6
7 #include "beveled_rect.h"
8
9 #include <QPainter>
10
11 //-----------------------------------------------------------------------------
12
BeveledRect(int size,QGraphicsItem * parent)13 BeveledRect::BeveledRect(int size, QGraphicsItem* parent)
14 : QGraphicsItem(parent)
15 , m_size(size)
16 , m_steps(5)
17 {
18 }
19
20 //-----------------------------------------------------------------------------
21
boundingRect() const22 QRectF BeveledRect::boundingRect() const
23 {
24 return QRectF(0, 0, m_size, m_size);
25 }
26
27 //-----------------------------------------------------------------------------
28
paint(QPainter * painter,const QStyleOptionGraphicsItem * option,QWidget * widget)29 void BeveledRect::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
30 {
31 Q_UNUSED(option);
32 Q_UNUSED(widget);
33
34 painter->save();
35
36 painter->setPen(Qt::NoPen);
37
38 for (int i = 0; i < m_steps; ++i) {
39 painter->setBrush(m_colors[i]);
40 painter->drawRoundedRect(m_rects[i], 5, 5);
41 }
42
43 painter->restore();
44 }
45
46 //-----------------------------------------------------------------------------
47
setColor(const QColor & color,bool bevel)48 void BeveledRect::setColor(const QColor& color, bool bevel)
49 {
50 if (bevel) {
51 m_steps = 5;
52
53 m_rects[0] = QRectF(0, 0, m_size, m_size);
54 m_colors[0] = color.darker();
55
56 m_rects[1] = QRectF(0.5, 0.5, m_size - 1, m_size - 1);
57 m_colors[1] = color.darker(168);
58
59 m_rects[2] = QRectF(1, 1, m_size - 2, m_size - 2);
60 m_colors[2] = color.darker(127);
61
62 m_rects[3] = QRectF(1.5, 1.5, m_size - 3, m_size - 3);
63 m_colors[3] = color.darker(106);
64
65 m_rects[4] = QRectF(2, 2, m_size - 4, m_size - 4);
66 m_colors[4] = color;
67 } else {
68 m_steps = 1;
69
70 m_rects[0] = QRectF(0, 0, m_size, m_size);
71 m_colors[0] = color;
72 }
73
74 update();
75 }
76
77 //-----------------------------------------------------------------------------
78