diff --git a/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/QCoreApplication.ECCDFCF413A58938.idx b/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/QCoreApplication.ECCDFCF413A58938.idx index 665d1dc..57b262d 100644 Binary files a/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/QCoreApplication.ECCDFCF413A58938.idx and b/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/QCoreApplication.ECCDFCF413A58938.idx differ diff --git a/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/QDir.09A8214E7C966888.idx b/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/QDir.09A8214E7C966888.idx index 0399ce6..065e749 100644 Binary files a/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/QDir.09A8214E7C966888.idx and b/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/QDir.09A8214E7C966888.idx differ diff --git a/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/albumSelector.cpp.DAE1486386103EB7.idx b/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/albumSelector.cpp.DAE1486386103EB7.idx index 2fcf496..0f5666c 100644 Binary files a/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/albumSelector.cpp.DAE1486386103EB7.idx and b/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/albumSelector.cpp.DAE1486386103EB7.idx differ diff --git a/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/nowPlaying.h.A602A6EE0E44972A.idx b/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/nowPlaying.h.A602A6EE0E44972A.idx index a0fdb09..cad6be6 100644 Binary files a/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/nowPlaying.h.A602A6EE0E44972A.idx and b/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/nowPlaying.h.A602A6EE0E44972A.idx differ diff --git a/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/spinningalbumart.cpp.EBFA9C9CA94A4F9C.idx b/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/spinningalbumart.cpp.EBFA9C9CA94A4F9C.idx index 6950f63..3e131f3 100644 Binary files a/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/spinningalbumart.cpp.EBFA9C9CA94A4F9C.idx and b/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/spinningalbumart.cpp.EBFA9C9CA94A4F9C.idx differ diff --git a/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/spinningalbumart.h.7F5BA4169BEC4646.idx b/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/spinningalbumart.h.7F5BA4169BEC4646.idx index 7832bea..7e8aa0d 100644 Binary files a/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/spinningalbumart.h.7F5BA4169BEC4646.idx and b/build/Desktop-Debug/.qtc_clangd/.cache/clangd/index/spinningalbumart.h.7F5BA4169BEC4646.idx differ diff --git a/build/Desktop-Debug/Makefile b/build/Desktop-Debug/Makefile index 42a6375..5f97f5c 100644 --- a/build/Desktop-Debug/Makefile +++ b/build/Desktop-Debug/Makefile @@ -1355,6 +1355,15 @@ moc_nowPlaying.cpp: ../../src/windows/nowPlaying/nowPlaying.h \ /opt/homebrew/lib/QtCore.framework/Headers/qstring.h \ /opt/homebrew/lib/QtCore.framework/Headers/QStringList \ /opt/homebrew/lib/QtCore.framework/Headers/qstringlist.h \ + ../../src/components/nowPlaying/spinningAlbumArt/spinningAlbumArt.h \ + /opt/homebrew/lib/QtGui.framework/Headers/QPixmap \ + /opt/homebrew/lib/QtGui.framework/Headers/qpixmap.h \ + ../../src/components/nowPlaying/tracklistWidget/tracklistWidget.h \ + /opt/homebrew/lib/QtWidgets.framework/Headers/QListWidget \ + /opt/homebrew/lib/QtWidgets.framework/Headers/qlistwidget.h \ + ../../src/components/nowPlaying/timePlayedWidget/timePlayedWidget.h \ + /opt/homebrew/lib/QtWidgets.framework/Headers/QVBoxLayout \ + /opt/homebrew/lib/QtWidgets.framework/Headers/qboxlayout.h \ moc_predefs.h \ /opt/homebrew/share/qt/libexec/moc /opt/homebrew/share/qt/libexec/moc $(DEFINES) --include /Users/lucas/Developer/FA25_Qt-Music-Player/build/Desktop-Debug/moc_predefs.h -I/opt/homebrew/share/qt/mkspecs/macx-clang -I/Users/lucas/Developer/FA25_Qt-Music-Player -I/opt/homebrew/lib/QtWidgets.framework/Headers -I/opt/homebrew/lib/QtMultimedia.framework/Headers -I/opt/homebrew/lib/QtGui.framework/Headers -I/opt/homebrew/lib/QtNetwork.framework/Headers -I/opt/homebrew/lib/QtCore.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1 -I/Library/Developer/CommandLineTools/usr/lib/clang/17/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -I/Library/Developer/CommandLineTools/usr/include -F/opt/homebrew/lib ../../src/windows/nowPlaying/nowPlaying.h -o moc_nowPlaying.cpp @@ -1386,8 +1395,6 @@ moc_spinningalbumart.cpp: ../../src/components/nowPlaying/spinningAlbumArt/spinn /opt/homebrew/lib/QtGui.framework/Headers/qpixmap.h \ /opt/homebrew/lib/QtCore.framework/Headers/QTimer \ /opt/homebrew/lib/QtCore.framework/Headers/qtimer.h \ - /opt/homebrew/lib/QtGui.framework/Headers/QMouseEvent \ - /opt/homebrew/lib/QtGui.framework/Headers/qevent.h \ moc_predefs.h \ /opt/homebrew/share/qt/libexec/moc /opt/homebrew/share/qt/libexec/moc $(DEFINES) --include /Users/lucas/Developer/FA25_Qt-Music-Player/build/Desktop-Debug/moc_predefs.h -I/opt/homebrew/share/qt/mkspecs/macx-clang -I/Users/lucas/Developer/FA25_Qt-Music-Player -I/opt/homebrew/lib/QtWidgets.framework/Headers -I/opt/homebrew/lib/QtMultimedia.framework/Headers -I/opt/homebrew/lib/QtGui.framework/Headers -I/opt/homebrew/lib/QtNetwork.framework/Headers -I/opt/homebrew/lib/QtCore.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1 -I/Library/Developer/CommandLineTools/usr/lib/clang/17/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -I/Library/Developer/CommandLineTools/usr/include -F/opt/homebrew/lib ../../src/components/nowPlaying/spinningAlbumArt/spinningalbumart.h -o moc_spinningalbumart.cpp @@ -1463,15 +1470,27 @@ albumSelector.o: ../../src/windows/albumSelector/albumSelector.cpp ../../src/win /opt/homebrew/lib/QtCore.framework/Headers/qstring.h \ /opt/homebrew/lib/QtCore.framework/Headers/QStringList \ /opt/homebrew/lib/QtCore.framework/Headers/qstringlist.h \ - ../../src/windows/nowPlaying/nowPlaying.h \ + ../../src/components/albumSelector/albumTile/albumTile.h \ /opt/homebrew/lib/QtWidgets.framework/Headers/QLabel \ /opt/homebrew/lib/QtWidgets.framework/Headers/qlabel.h \ + /opt/homebrew/lib/QtWidgets.framework/Headers/QVBoxLayout \ + /opt/homebrew/lib/QtWidgets.framework/Headers/qboxlayout.h \ + /opt/homebrew/lib/QtGui.framework/Headers/QMouseEvent \ + /opt/homebrew/lib/QtGui.framework/Headers/qevent.h \ + ../../src/windows/nowPlaying/nowPlaying.h \ /opt/homebrew/lib/QtMultimedia.framework/Headers/QMediaPlayer \ /opt/homebrew/lib/QtMultimedia.framework/Headers/qmediaplayer.h \ /opt/homebrew/lib/QtMultimedia.framework/Headers/QAudioOutput \ /opt/homebrew/lib/QtMultimedia.framework/Headers/qaudiooutput.h \ /opt/homebrew/lib/QtCore.framework/Headers/QTimer \ /opt/homebrew/lib/QtCore.framework/Headers/qtimer.h \ + ../../src/components/nowPlaying/spinningAlbumArt/spinningAlbumArt.h \ + /opt/homebrew/lib/QtGui.framework/Headers/QPixmap \ + /opt/homebrew/lib/QtGui.framework/Headers/qpixmap.h \ + ../../src/components/nowPlaying/tracklistWidget/tracklistWidget.h \ + /opt/homebrew/lib/QtWidgets.framework/Headers/QListWidget \ + /opt/homebrew/lib/QtWidgets.framework/Headers/qlistwidget.h \ + ../../src/components/nowPlaying/timePlayedWidget/timePlayedWidget.h \ ../../src/layout/flowlayout/flowLayout.h \ /opt/homebrew/lib/QtWidgets.framework/Headers/QLayout \ /opt/homebrew/lib/QtWidgets.framework/Headers/qlayout.h \ @@ -1503,6 +1522,13 @@ nowPlaying.o: ../../src/windows/nowPlaying/nowPlaying.cpp ../../src/windows/nowP /opt/homebrew/lib/QtCore.framework/Headers/qstring.h \ /opt/homebrew/lib/QtCore.framework/Headers/QStringList \ /opt/homebrew/lib/QtCore.framework/Headers/qstringlist.h \ + ../../src/components/nowPlaying/spinningAlbumArt/spinningAlbumArt.h \ + /opt/homebrew/lib/QtGui.framework/Headers/QPixmap \ + /opt/homebrew/lib/QtGui.framework/Headers/qpixmap.h \ + ../../src/components/nowPlaying/tracklistWidget/tracklistWidget.h \ + /opt/homebrew/lib/QtWidgets.framework/Headers/QListWidget \ + /opt/homebrew/lib/QtWidgets.framework/Headers/qlistwidget.h \ + ../../src/components/nowPlaying/timePlayedWidget/timePlayedWidget.h \ /opt/homebrew/lib/QtWidgets.framework/Headers/QVBoxLayout \ /opt/homebrew/lib/QtWidgets.framework/Headers/qboxlayout.h \ /opt/homebrew/lib/QtCore.framework/Headers/QFileInfo \ @@ -1671,12 +1697,12 @@ spinningalbumart.o: ../../src/components/nowPlaying/spinningAlbumArt/spinningalb /opt/homebrew/lib/QtGui.framework/Headers/qpixmap.h \ /opt/homebrew/lib/QtCore.framework/Headers/QTimer \ /opt/homebrew/lib/QtCore.framework/Headers/qtimer.h \ - /opt/homebrew/lib/QtGui.framework/Headers/QMouseEvent \ - /opt/homebrew/lib/QtGui.framework/Headers/qevent.h \ /opt/homebrew/lib/QtGui.framework/Headers/QPainter \ /opt/homebrew/lib/QtGui.framework/Headers/qpainter.h \ /opt/homebrew/lib/QtGui.framework/Headers/QPainterPath \ - /opt/homebrew/lib/QtGui.framework/Headers/qpainterpath.h + /opt/homebrew/lib/QtGui.framework/Headers/qpainterpath.h \ + /opt/homebrew/lib/QtGui.framework/Headers/QMouseEvent \ + /opt/homebrew/lib/QtGui.framework/Headers/qevent.h $(CXX) -c $(CXXFLAGS) $(INCPATH) -o spinningalbumart.o ../../src/components/nowPlaying/spinningAlbumArt/spinningalbumart.cpp timePlayedWidget.o: ../../src/components/nowPlaying/timePlayedWidget/timePlayedWidget.cpp ../../src/components/nowPlaying/timePlayedWidget/timePlayedWidget.h \ diff --git a/build/Desktop-Debug/Music-Player.app/Contents/MacOS/Music-Player b/build/Desktop-Debug/Music-Player.app/Contents/MacOS/Music-Player index 1083999..69f2052 100755 Binary files a/build/Desktop-Debug/Music-Player.app/Contents/MacOS/Music-Player and b/build/Desktop-Debug/Music-Player.app/Contents/MacOS/Music-Player differ diff --git a/build/Desktop-Debug/albumSelector.o b/build/Desktop-Debug/albumSelector.o index 728086f..cc9d1c3 100644 Binary files a/build/Desktop-Debug/albumSelector.o and b/build/Desktop-Debug/albumSelector.o differ diff --git a/build/Desktop-Debug/moc_nowPlaying.o b/build/Desktop-Debug/moc_nowPlaying.o index 5e753c0..4942245 100644 Binary files a/build/Desktop-Debug/moc_nowPlaying.o and b/build/Desktop-Debug/moc_nowPlaying.o differ diff --git a/build/Desktop-Debug/moc_spinningalbumart.o b/build/Desktop-Debug/moc_spinningalbumart.o index bc011b0..a6cdcc7 100644 Binary files a/build/Desktop-Debug/moc_spinningalbumart.o and b/build/Desktop-Debug/moc_spinningalbumart.o differ diff --git a/build/Desktop-Debug/nowPlaying.o b/build/Desktop-Debug/nowPlaying.o index c03d19a..c5f2018 100644 Binary files a/build/Desktop-Debug/nowPlaying.o and b/build/Desktop-Debug/nowPlaying.o differ diff --git a/build/Desktop-Debug/spinningalbumart.o b/build/Desktop-Debug/spinningalbumart.o index 94745c3..b16ded8 100644 Binary files a/build/Desktop-Debug/spinningalbumart.o and b/build/Desktop-Debug/spinningalbumart.o differ diff --git a/resources/media/Chicago/Chicago Transit Authority/01. Introduction.flac b/resources/media/Chicago/Chicago Transit Authority/01. Introduction.flac new file mode 100644 index 0000000..1530d8e Binary files /dev/null and b/resources/media/Chicago/Chicago Transit Authority/01. Introduction.flac differ diff --git a/resources/media/Chicago/Chicago Transit Authority/02. Does Anybody Really Know What Time It Is.flac b/resources/media/Chicago/Chicago Transit Authority/02. Does Anybody Really Know What Time It Is.flac new file mode 100644 index 0000000..d21da98 Binary files /dev/null and b/resources/media/Chicago/Chicago Transit Authority/02. Does Anybody Really Know What Time It Is.flac differ diff --git a/resources/media/Chicago/Chicago Transit Authority/03. Beginnings.flac b/resources/media/Chicago/Chicago Transit Authority/03. Beginnings.flac new file mode 100644 index 0000000..8611abf Binary files /dev/null and b/resources/media/Chicago/Chicago Transit Authority/03. Beginnings.flac differ diff --git a/resources/media/Chicago/Chicago Transit Authority/04. Questions 67 And 68.flac b/resources/media/Chicago/Chicago Transit Authority/04. Questions 67 And 68.flac new file mode 100644 index 0000000..2c1e4d1 Binary files /dev/null and b/resources/media/Chicago/Chicago Transit Authority/04. Questions 67 And 68.flac differ diff --git a/resources/media/Chicago/Chicago Transit Authority/05. Listen.flac b/resources/media/Chicago/Chicago Transit Authority/05. Listen.flac new file mode 100644 index 0000000..3a4896f Binary files /dev/null and b/resources/media/Chicago/Chicago Transit Authority/05. Listen.flac differ diff --git a/resources/media/Chicago/Chicago Transit Authority/06. Poem 58.flac b/resources/media/Chicago/Chicago Transit Authority/06. Poem 58.flac new file mode 100644 index 0000000..28a6a31 Binary files /dev/null and b/resources/media/Chicago/Chicago Transit Authority/06. Poem 58.flac differ diff --git a/resources/media/Chicago/Chicago Transit Authority/07. Free Form Guitar.flac b/resources/media/Chicago/Chicago Transit Authority/07. Free Form Guitar.flac new file mode 100644 index 0000000..f29d2b4 Binary files /dev/null and b/resources/media/Chicago/Chicago Transit Authority/07. Free Form Guitar.flac differ diff --git a/resources/media/Chicago/Chicago Transit Authority/08. South California Purples.flac b/resources/media/Chicago/Chicago Transit Authority/08. South California Purples.flac new file mode 100644 index 0000000..46ae59e Binary files /dev/null and b/resources/media/Chicago/Chicago Transit Authority/08. South California Purples.flac differ diff --git a/resources/media/Chicago/Chicago Transit Authority/09. I'm A Man.flac b/resources/media/Chicago/Chicago Transit Authority/09. I'm A Man.flac new file mode 100644 index 0000000..54d6f5e Binary files /dev/null and b/resources/media/Chicago/Chicago Transit Authority/09. I'm A Man.flac differ diff --git a/resources/media/Chicago/Chicago Transit Authority/10. Prologue, August 29, 1968.flac b/resources/media/Chicago/Chicago Transit Authority/10. Prologue, August 29, 1968.flac new file mode 100644 index 0000000..560ad6a Binary files /dev/null and b/resources/media/Chicago/Chicago Transit Authority/10. Prologue, August 29, 1968.flac differ diff --git a/resources/media/Chicago/Chicago Transit Authority/11. Someday (August 29, 1968).flac b/resources/media/Chicago/Chicago Transit Authority/11. Someday (August 29, 1968).flac new file mode 100644 index 0000000..9232647 Binary files /dev/null and b/resources/media/Chicago/Chicago Transit Authority/11. Someday (August 29, 1968).flac differ diff --git a/resources/media/Chicago/Chicago Transit Authority/12. Liberation.flac b/resources/media/Chicago/Chicago Transit Authority/12. Liberation.flac new file mode 100644 index 0000000..3a0457f Binary files /dev/null and b/resources/media/Chicago/Chicago Transit Authority/12. Liberation.flac differ diff --git a/resources/media/Chicago/Chicago Transit Authority/Artwork.jpg b/resources/media/Chicago/Chicago Transit Authority/Artwork.jpg new file mode 100644 index 0000000..04239e4 Binary files /dev/null and b/resources/media/Chicago/Chicago Transit Authority/Artwork.jpg differ diff --git a/src/components/nowPlaying/spinningAlbumArt/spinningalbumart.cpp b/src/components/nowPlaying/spinningAlbumArt/spinningalbumart.cpp index 80c9249..6edcf2b 100644 --- a/src/components/nowPlaying/spinningAlbumArt/spinningalbumart.cpp +++ b/src/components/nowPlaying/spinningAlbumArt/spinningalbumart.cpp @@ -1,16 +1,18 @@ #include "spinningalbumart.h" #include #include +#include +#include +#include SpinningAlbumArt::SpinningAlbumArt(const QString& imagePath, int size, QWidget* parent) : QWidget(parent), size_(size) { artLabel_ = new QLabel(this); artLabel_->setAlignment(Qt::AlignCenter); - setFixedSize(size, size); - // Load and crop square + // Load album art and square-crop it QPixmap pix(imagePath); QPixmap scaled = pix.scaled(size, size, Qt::KeepAspectRatioByExpanding, @@ -24,33 +26,121 @@ SpinningAlbumArt::SpinningAlbumArt(const QString& imagePath, int size, QWidget* side ); - // Mask into circle - discArt_ = createCircularDisc(square, size); - artLabel_->setPixmap(discArt_); + // Build full realistic vinyl disc with grooves + sheen + hole + label + disc_ = buildRecord(square, size); + + artLabel_->setPixmap(disc_); - // Setup spin timer timer_ = new QTimer(this); timer_->setInterval(16); connect(timer_, &QTimer::timeout, this, &SpinningAlbumArt::updateRotation); } -QPixmap SpinningAlbumArt::createCircularDisc(const QPixmap& src, int size) +QPixmap SpinningAlbumArt::buildRecord(const QPixmap& src, int size) { QPixmap disc(size, size); disc.fill(Qt::transparent); + QPointF center(size / 2.0, size / 2.0); + QPainter p(&disc); p.setRenderHint(QPainter::Antialiasing); + p.setRenderHint(QPainter::SmoothPixmapTransform); - QPainterPath path; - path.addEllipse(0, 0, size, size); - p.setClipPath(path); + // + // 1. Base vinyl gradient + // + QRadialGradient vinylGrad(center, size / 2); + vinylGrad.setColorAt(0.0, QColor(55, 55, 55)); + vinylGrad.setColorAt(1.0, QColor(10, 10, 10)); + p.setBrush(vinylGrad); + p.setPen(Qt::NoPen); + p.drawEllipse(0, 0, size, size); - p.drawPixmap(0, 0, src); + // + // 2. Grooves (2px spacing, soft alpha) + // + p.setPen(QPen(QColor(255, 255, 255, 22), 1)); + int labelRadius = size * 0.35; + for (int r = labelRadius; r < size / 2; r += 2) + p.drawEllipse(center, r, r); + + // + // 3. Directional sheen (angled elliptical gradient) + // + QPixmap sheen(size, size); + sheen.fill(Qt::transparent); + { + QPainter sp(&sheen); + sp.setRenderHint(QPainter::Antialiasing); + + QLinearGradient lg(0, size * 0.25, size, size * 0.75); + lg.setColorAt(0.0, QColor(255, 255, 255, 40)); + lg.setColorAt(0.5, QColor(255, 255, 255, 5)); + lg.setColorAt(1.0, QColor(0, 0, 0, 0)); + + sp.setBrush(lg); + sp.setPen(Qt::NoPen); + sp.drawEllipse(0, 0, size, size); + } + p.drawPixmap(0, 0, sheen); + + // + // 4. Recessed label shadow + // + QRadialGradient labelGrad(center, size * 0.36); + labelGrad.setColorAt(0.0, QColor(0, 0, 0, 80)); + labelGrad.setColorAt(1.0, Qt::transparent); + p.setBrush(labelGrad); + p.drawEllipse(center, size * 0.36, size * 0.36); + + // + // 5. Album art masked to label circle + // + QPixmap label = buildLabelMask(src, size); + p.drawPixmap(0, 0, label); + + // + // 6. Spindle hole (cutout) + // + int holeDiameter = size * 0.17; + QPainterPath hole; + hole.addEllipse( + (size - holeDiameter) / 2, + (size - holeDiameter) / 2, + holeDiameter, + holeDiameter + ); + p.setCompositionMode(QPainter::CompositionMode_Clear); + p.fillPath(hole, Qt::transparent); return disc; } +QPixmap SpinningAlbumArt::buildLabelMask(const QPixmap& src, int size) +{ + QPixmap label(size, size); + label.fill(Qt::transparent); + + QPainter p(&label); + p.setRenderHint(QPainter::Antialiasing); + + int labelDiameter = size * 0.70; + + QPainterPath mask; + mask.addEllipse( + (size - labelDiameter) / 2, + (size - labelDiameter) / 2, + labelDiameter, + labelDiameter + ); + + p.setClipPath(mask); + p.drawPixmap(0, 0, src); + + return label; +} + void SpinningAlbumArt::start() { timer_->start(); @@ -63,7 +153,7 @@ void SpinningAlbumArt::stop() void SpinningAlbumArt::updateRotation() { - rotationAngle_ += 0.6; + rotationAngle_ += 0.5; QPixmap frame(size_, size_); frame.fill(Qt::transparent); @@ -76,7 +166,7 @@ void SpinningAlbumArt::updateRotation() p.rotate(rotationAngle_); p.translate(-size_ / 2, -size_ / 2); - p.drawPixmap(0, 0, discArt_); + p.drawPixmap(0, 0, disc_); artLabel_->setPixmap(frame); } diff --git a/src/components/nowPlaying/spinningAlbumArt/spinningalbumart.h b/src/components/nowPlaying/spinningAlbumArt/spinningalbumart.h index 1e8ea24..12ad69a 100644 --- a/src/components/nowPlaying/spinningAlbumArt/spinningalbumart.h +++ b/src/components/nowPlaying/spinningAlbumArt/spinningalbumart.h @@ -4,14 +4,15 @@ #include #include #include -#include class SpinningAlbumArt : public QWidget { Q_OBJECT public: - explicit SpinningAlbumArt(const QString& imagePath, int size = 250, QWidget* parent = nullptr); + explicit SpinningAlbumArt(const QString& imagePath, + int size = 250, + QWidget* parent = nullptr); public slots: void start(); @@ -20,18 +21,20 @@ public slots: signals: void artClicked(); -private slots: - void updateRotation(); - protected: void mousePressEvent(QMouseEvent* event) override; -private: - QPixmap discArt_; // circular-masked album image - QLabel* artLabel_; // widget that displays the spinning frame - QTimer* timer_; // animation timer - qreal rotationAngle_ = 0; - int size_; // final diameter of the disc +private slots: + void updateRotation(); - QPixmap createCircularDisc(const QPixmap& src, int size); +private: + QPixmap buildRecord(const QPixmap& src, int size); + QPixmap buildLabelMask(const QPixmap& src, int size); + + QLabel* artLabel_; + QPixmap disc_; // final assembled vinyl-only disc (with grooves + sheen + hole + label) + QTimer* timer_; + + qreal rotationAngle_ = 0; + int size_; };