Skip to content
Extraits de code Groupes Projets
Valider 7f060cb7 rédigé par Elliu's avatar Elliu
Parcourir les fichiers

TimingScene: move things away from constructor

parent e85387f1
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!29Improve timingView with display of the ASS lines
Pipeline #2661 réussi
...@@ -81,4 +81,6 @@ AudioVisualizer::printSpectrum(QImage pixmap, AudioContext::StreamPtr stream) no ...@@ -81,4 +81,6 @@ AudioVisualizer::printSpectrum(QImage pixmap, AudioContext::StreamPtr stream) no
connect(params->getZoomSlider(), &QSlider::valueChanged, timingScene->getAxis(), connect(params->getZoomSlider(), &QSlider::valueChanged, timingScene->getAxis(),
&TimingAxis::refreshTicks); &TimingAxis::refreshTicks);
connect(params->getRebuildSceneButton(), &QPushButton::released, timingScene,
&TimingScene::rebuildScene);
} }
...@@ -30,7 +30,7 @@ TimingAxis::TimingAxis(AudioContext::StreamPtr stream, int height_, int width_) ...@@ -30,7 +30,7 @@ TimingAxis::TimingAxis(AudioContext::StreamPtr stream, int height_, int width_)
QRectF QRectF
TimingAxis::boundingRect() const TimingAxis::boundingRect() const
{ {
return QRectF(0, penWidth, width + 2*penWidth, -height - penWidth); return QRectF(0, penWidth, width + 2 * penWidth, -height - penWidth);
} }
/* /*
...@@ -40,10 +40,10 @@ TimingAxis::boundingRect() const ...@@ -40,10 +40,10 @@ TimingAxis::boundingRect() const
void void
TimingAxis::refreshTicks() TimingAxis::refreshTicks()
{ {
int nbAvailableTicks = availableTicks.size(); int nbAvailableTicks = availableTicks.size();
int minorTicksIndex = 0; int minorTicksIndex = 0;
int length{ int(audioStream->getLength()) }; int length{ int(audioStream->getLength()) };
if (width != 0 && length != 0){ if (width != 0 && length != 0) {
for (minorTicksIndex = 0; minorTicksIndex < nbAvailableTicks; minorTicksIndex++) { for (minorTicksIndex = 0; minorTicksIndex < nbAvailableTicks; minorTicksIndex++) {
if (width * availableTicks[minorTicksIndex] / length >= minBetweenMinor) { if (width * availableTicks[minorTicksIndex] / length >= minBetweenMinor) {
break; break;
......
...@@ -5,7 +5,9 @@ using namespace Vivy; ...@@ -5,7 +5,9 @@ using namespace Vivy;
TimingParams::TimingParams(QWidget *parent) noexcept TimingParams::TimingParams(QWidget *parent) noexcept
: QWidget(parent) : QWidget(parent)
{ {
QHBoxLayout *layout = new QHBoxLayout; QVBoxLayout *vlayout = new QVBoxLayout;
QHBoxLayout *hlayout = new QHBoxLayout;
vlayout->addLayout(hlayout);
zoomSlider = std::make_unique<QSlider>(new QSlider(Qt::Vertical)); zoomSlider = std::make_unique<QSlider>(new QSlider(Qt::Vertical));
if (QSlider *slider = zoomSlider.get()) { if (QSlider *slider = zoomSlider.get()) {
...@@ -14,7 +16,7 @@ TimingParams::TimingParams(QWidget *parent) noexcept ...@@ -14,7 +16,7 @@ TimingParams::TimingParams(QWidget *parent) noexcept
slider->setSingleStep(0); slider->setSingleStep(0);
slider->setPageStep(0); slider->setPageStep(0);
slider->setValue(0); slider->setValue(0);
layout->addWidget(slider); hlayout->addWidget(slider);
} }
sensibilitySlider = std::make_unique<QSlider>(new QSlider(Qt::Vertical)); sensibilitySlider = std::make_unique<QSlider>(new QSlider(Qt::Vertical));
if (QSlider *slider = sensibilitySlider.get()) { if (QSlider *slider = sensibilitySlider.get()) {
...@@ -23,10 +25,15 @@ TimingParams::TimingParams(QWidget *parent) noexcept ...@@ -23,10 +25,15 @@ TimingParams::TimingParams(QWidget *parent) noexcept
slider->setSingleStep(0); slider->setSingleStep(0);
slider->setPageStep(0); slider->setPageStep(0);
slider->setValue(0); slider->setValue(0);
layout->addWidget(slider); hlayout->addWidget(slider);
} }
setLayout(layout); rebuildSceneButton = std::make_unique<QPushButton>(new QPushButton(QString("Rebuild scene")));
if (QPushButton *button = rebuildSceneButton.get()) {
vlayout->addWidget(button);
}
setLayout(vlayout);
} }
QSlider * QSlider *
...@@ -40,3 +47,9 @@ TimingParams::getSensibilitySlider() const noexcept ...@@ -40,3 +47,9 @@ TimingParams::getSensibilitySlider() const noexcept
{ {
return sensibilitySlider.get(); return sensibilitySlider.get();
} }
QPushButton *
TimingParams::getRebuildSceneButton() const noexcept
{
return rebuildSceneButton.get();
}
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include <QWidget> #include <QWidget>
#include <QSlider> #include <QSlider>
#include <QLayout> #include <QLayout>
#include <QPushButton>
namespace Vivy namespace Vivy
{ {
...@@ -22,10 +23,12 @@ public: ...@@ -22,10 +23,12 @@ public:
private: private:
std::unique_ptr<QSlider> zoomSlider; std::unique_ptr<QSlider> zoomSlider;
std::unique_ptr<QSlider> sensibilitySlider; std::unique_ptr<QSlider> sensibilitySlider;
std::unique_ptr<QPushButton> rebuildSceneButton;
public: public:
QSlider *getZoomSlider() const noexcept; QSlider *getZoomSlider() const noexcept;
QSlider *getSensibilitySlider() const noexcept; QSlider *getSensibilitySlider() const noexcept;
QPushButton *getRebuildSceneButton() const noexcept;
}; };
} }
......
...@@ -30,14 +30,33 @@ TimingScene::TimingScene(QImage img_, AudioContext::StreamPtr stream, QWidget *p ...@@ -30,14 +30,33 @@ TimingScene::TimingScene(QImage img_, AudioContext::StreamPtr stream, QWidget *p
, img(img_) , img(img_)
, audioStream(stream) , audioStream(stream)
{ {
int timingAxisHeight = 30; rebuildScene();
}
void
TimingScene::updateScene(QImage img_, AudioContext::StreamPtr stream_)
{
img = img_;
audioStream = stream_;
rebuildScene();
}
void
TimingScene::rebuildScene()
{
for (auto &item : items()) {
removeItem(item);
delete (item);
}
// We put a common origin for the items at the bottom of the axis // We put a common origin for the items at the bottom of the axis
int timingAxisHeight = 30;
QPixmap pixmap(QPixmap::fromImage(img)); QPixmap pixmap(QPixmap::fromImage(img));
backgroundImg = addPixmap(pixmap); backgroundImg = addPixmap(pixmap);
backgroundImg->setPos(0, timingAxisHeight); backgroundImg->setPos(0, timingAxisHeight);
ax = new TimingAxis(stream, timingAxisHeight, pixmap.width()); ax = new TimingAxis(audioStream, timingAxisHeight, pixmap.width());
addItem(ax); addItem(ax);
ax->setPos(0, timingAxisHeight); ax->setPos(0, timingAxisHeight);
......
...@@ -28,7 +28,7 @@ private: ...@@ -28,7 +28,7 @@ private:
AudioContext::StreamPtr audioStream; AudioContext::StreamPtr audioStream;
Ass::LineWeakPtr currentLine{}; Ass::LineWeakPtr currentLine{};
TimingMode timingMode{ TimingMode::Line }; TimingMode timingMode{ TimingMode::Line };
TimingAxis *ax; TimingAxis *ax{ nullptr };
public: public:
QGraphicsPixmapItem *bg() noexcept; QGraphicsPixmapItem *bg() noexcept;
...@@ -46,6 +46,8 @@ private: ...@@ -46,6 +46,8 @@ private:
inline int posFromTime(int t) const noexcept; inline int posFromTime(int t) const noexcept;
public slots: public slots:
void updateScene(QImage, AudioContext::StreamPtr);
void rebuildScene();
}; };
} }
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter