|
|
|
@ -15,20 +15,24 @@ |
|
|
|
|
#include "selfdrive/ui/qt/util.h" |
|
|
|
|
|
|
|
|
|
TrackWidget::TrackWidget(QWidget *parent) : QWidget(parent) { |
|
|
|
|
setAttribute(Qt::WA_OpaquePaintEvent); |
|
|
|
|
setFixedSize(spinner_size); |
|
|
|
|
setAutoFillBackground(true); |
|
|
|
|
setPalette(Qt::black); |
|
|
|
|
|
|
|
|
|
// pre-compute all the track imgs. make this a gif instead?
|
|
|
|
|
QPixmap comma_img = QPixmap("../assets/img_spinner_comma.png").scaled(spinner_size, Qt::KeepAspectRatio, Qt::SmoothTransformation); |
|
|
|
|
QTransform transform(1, 0, 0, 1, width() / 2, height() / 2); |
|
|
|
|
QPixmap track_img = QPixmap("../assets/img_spinner_track.png").scaled(spinner_size, Qt::KeepAspectRatio, Qt::SmoothTransformation); |
|
|
|
|
for (QPixmap &img : track_imgs) { |
|
|
|
|
img = comma_img; |
|
|
|
|
QPainter p(&img); |
|
|
|
|
|
|
|
|
|
QTransform transform(1, 0, 0, 1, width() / 2, height() / 2); |
|
|
|
|
QPixmap pm(spinner_size); |
|
|
|
|
QPainter p(&pm); |
|
|
|
|
p.setRenderHint(QPainter::SmoothPixmapTransform); |
|
|
|
|
for (int i = 0; i < track_imgs.size(); ++i) { |
|
|
|
|
p.resetTransform(); |
|
|
|
|
p.fillRect(0, 0, spinner_size.width(), spinner_size.height(), Qt::black); |
|
|
|
|
p.drawPixmap(0, 0, comma_img); |
|
|
|
|
p.setTransform(transform.rotate(360 / spinner_fps)); |
|
|
|
|
p.drawPixmap(-width() / 2, -height() / 2, track_img); |
|
|
|
|
track_imgs[i] = pm.copy(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
m_anim.setDuration(1000); |
|
|
|
|