• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mcallegari / qlcplus / 7252848206

18 Dec 2023 07:26PM UTC coverage: 32.067% (+0.001%) from 32.066%
7252848206

push

github

mcallegari
Code style review #1427

199 of 628 new or added lines in 101 files covered. (31.69%)

8 existing lines in 2 files now uncovered.

15169 of 47304 relevant lines covered (32.07%)

23733.74 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

65.06
/ui/src/efxpreviewarea.cpp
1
/*
2
  Q Light Controller
3
  efxpreviewarea.cpp
4

5
  Copyright (c) Heikki Junnila
6

7
  Licensed under the Apache License, Version 2.0 (the "License");
8
  you may not use this file except in compliance with the License.
9
  You may obtain a copy of the License at
10

11
      http://www.apache.org/licenses/LICENSE-2.0.txt
12

13
  Unless required by applicable law or agreed to in writing, software
14
  distributed under the License is distributed on an "AS IS" BASIS,
15
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
  See the License for the specific language governing permissions and
17
  limitations under the License.
18
*/
19

20
#include <QPaintEvent>
21
#include <QPainter>
22
#include <QDebug>
23
#include <QPen>
24

25
#include "efxpreviewarea.h"
26
#include "qlcmacros.h"
27
#include "gradient.h"
28

29
EFXPreviewArea::EFXPreviewArea(QWidget* parent)
3✔
30
    : QWidget(parent)
31
    , m_timer(this)
32
    , m_iter(0)
33
    , m_gradientBg(false)
34
    , m_bgAlpha(255)
3✔
35
{
36
    QPalette p = palette();
3✔
37
    p.setColor(QPalette::Window, p.color(QPalette::Base));
3✔
38
    setPalette(p);
3✔
39

40
    connect(&m_timer, SIGNAL(timeout()), this, SLOT(slotTimeout()));
3✔
41
}
3✔
42

43
EFXPreviewArea::~EFXPreviewArea()
3✔
44
{
45
}
3✔
46

47
void EFXPreviewArea::setPolygon(const QPolygonF& polygon)
2✔
48
{
49
    m_original = polygon;
2✔
50
    m_scaled = scale(m_original, size());
2✔
51
}
2✔
52

53
int EFXPreviewArea::polygonsCount() const
×
54
{
55
    return m_original.size();
×
56
}
57

58
void EFXPreviewArea::setFixturePolygons(const QVector<QPolygonF> &fixturePoints)
×
59
{
60
    m_originalFixturePoints.resize(fixturePoints.size());
×
61
    m_fixturePoints.resize(fixturePoints.size());
×
62

NEW
63
    for (int i = 0; i < m_fixturePoints.size(); ++i)
×
64
    {
65
        m_originalFixturePoints[i] = QPolygonF(fixturePoints[i]);
×
66
        m_fixturePoints[i] = scale(m_originalFixturePoints[i], size());
×
67
    }
68
}
×
69

70
void EFXPreviewArea::draw(int timerInterval)
1✔
71
{
72
    m_timer.stop();
1✔
73

74
    m_iter = 0;
1✔
75
    m_timer.start(timerInterval);
1✔
76
}
1✔
77

78
void EFXPreviewArea::slotTimeout()
×
79
{
80
    if (m_iter < m_scaled.size())
×
81
        m_iter++;
×
82

83
    repaint();
×
84
}
×
85

86
QPolygonF EFXPreviewArea::scale(const QPolygonF& poly, const QSize& target)
5✔
87
{
88
    QPolygonF scaled;
5✔
89
    for (int i = 0; i < poly.size(); i++)
20✔
90
    {
91
        QPointF pt = poly.at(i);
15✔
92
        pt.setX((int) SCALE(qreal(pt.x()), qreal(0), qreal(255), qreal(0), qreal(target.width())));
15✔
93
        pt.setY((int) SCALE(qreal(pt.y()), qreal(0), qreal(255), qreal(0), qreal(target.height())));
15✔
94
        scaled << pt;
15✔
95
    }
96

97
    return scaled;
5✔
98
}
99

100
void EFXPreviewArea::resizeEvent(QResizeEvent* e)
3✔
101
{
102
    m_scaled = scale(m_original, e->size());
3✔
103

104
    for (int i = 0; i < m_fixturePoints.size(); ++i)
3✔
105
        m_fixturePoints[i] = scale(m_originalFixturePoints[i], e->size());
×
106

107
    QWidget::resizeEvent(e);
3✔
108
}
3✔
109

110
void EFXPreviewArea::paintEvent(QPaintEvent* e)
2✔
111
{
112
    QWidget::paintEvent(e);
2✔
113

114
    QPainter painter(this);
4✔
115
    QPen pen;
4✔
116
    QPointF point;
2✔
117
    QColor color = palette().color(QPalette::Base);
2✔
118
    if (m_gradientBg)
2✔
119
        painter.drawImage(painter.window(), Gradient::getRGBGradient(256, 256));
×
120
    else
121
    {
122
        color.setAlpha(m_bgAlpha);
2✔
123
        painter.fillRect(rect(), color);
2✔
124
    }
125

126
    /* Crosshairs */
127
    color = palette().color(QPalette::Mid);
2✔
128
    painter.setPen(color);
2✔
129
    // Do division by two instead with a bitshift to prevent rounding
130
    painter.drawLine(width() >> 1, 0, width() >> 1, height());
2✔
131
    painter.drawLine(0, height() >> 1, width(), height() >> 1);
2✔
132

133
    /* Plain points with text color */
134
    color = palette().color(QPalette::Text);
2✔
135
    pen.setColor(color);
2✔
136
    painter.setPen(pen);
2✔
137
    painter.drawPolygon(m_scaled);
2✔
138

139
    // Draw the points from the point array
140
    if (m_iter < m_scaled.size() && m_iter >= 0)
2✔
141
    {
142
        painter.setBrush(Qt::white);
×
143
        pen.setColor(Qt::black);
×
144

145
        // drawing fixture positions from the end,
146
        // so that lower numbers are on top
147
        for (int i = m_fixturePoints.size() - 1; i >= 0; --i)
×
148
        {
149
            point = m_fixturePoints.at(i).at(m_iter);
×
150
            painter.drawEllipse(point, 8, 8);
×
151
            painter.drawText(point.x() - 4, point.y() + 5, QString::number(i+1));
×
152
        }
153
    }
154
    else
155
    {
156
        //Change old behaviour from stop to restart
157
        restart();
2✔
158
    }
159
}
2✔
160

161
void EFXPreviewArea::restart()
2✔
162
{
163
    m_iter = 0;
2✔
164
}
2✔
165

166
void EFXPreviewArea::showGradientBackground(bool enable)
×
167
{
168
    m_gradientBg = enable;
×
169
    repaint();
×
170
}
×
171

172
void EFXPreviewArea::setBackgroundAlpha(int alpha)
×
173
{
174
    m_bgAlpha = alpha;
×
175
}
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc