Skip to content

Commit

Permalink
Waveform still not showing on legacy UI
Browse files Browse the repository at this point in the history
  • Loading branch information
acolombier committed Oct 20, 2024
1 parent 343f7b2 commit a65b3fc
Show file tree
Hide file tree
Showing 10 changed files with 46 additions and 52 deletions.
1 change: 1 addition & 0 deletions src/qml/qmlwaveformdisplay.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ QSGNode* QmlWaveformDisplay::updatePaintNode(QSGNode* node, UpdatePaintNodeData*

if (m_dirtyFlag.testFlag(DirtyFlag::Geometry)) {
m_dirtyFlag.setFlag(DirtyFlag::Geometry, false);
resizeRenderer(boundingRect().width(), boundingRect().height(), window()->devicePixelRatio());
bgNode->setRect(boundingRect());

auto rect = QRectF(boundingRect().x() +

Check warning on line 139 in src/qml/qmlwaveformdisplay.cpp

View workflow job for this annotation

GitHub Actions / clazy

unused QRectF [-Wclazy-unused-non-trivial-variable]
Expand Down
2 changes: 2 additions & 0 deletions src/rendergraph/opengl/engine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ Engine::Engine(std::unique_ptr<BaseNode> pRootNode)
}

Engine::~Engine() {
m_pInitializeNodes.clear();
m_pPreprocessNodes.clear();
}

void Engine::add(BaseNode* pNode) {
Expand Down
1 change: 1 addition & 0 deletions src/rendergraph/opengl/rendergraph/engine.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ class rendergraph::Engine {
void render();
void resize(int w, int h);
void preprocess();
// FIXME do we expected Engine to take ownership of this ptr?
void add(BaseNode* pNode);
void remove(BaseNode* pNode);
const QMatrix4x4& matrix() const {
Expand Down
25 changes: 18 additions & 7 deletions src/rendergraph/opengl/texture.cpp
Original file line number Diff line number Diff line change
@@ -1,20 +1,31 @@
#include "rendergraph/texture.h"
#include <qnamespace.h>
#include <qrgb.h>
#include "rendergraph/assert.h"

#include "rendergraph/context.h"

using namespace rendergraph;

namespace {
QImage premultiplyAlpha(const QImage& image) {
QImage texture(image.width(), image.height(), QImage::Format_RGBA8888);
if (image.format() == QImage::Format_RGBA8888_Premultiplied) {
return QImage(image.bits(), image.width(), image.height(), QImage::Format_RGBA8888);
VERIFY_OR_DEBUG_ASSERT(texture.sizeInBytes() == image.sizeInBytes()){
texture.fill(QColor(Qt::transparent).rgba());
return texture;
}
std::memcpy(texture.bits(), image.bits(), texture.sizeInBytes());
} else {
auto convertedImage = image.convertToFormat(QImage::Format_RGBA8888_Premultiplied);
VERIFY_OR_DEBUG_ASSERT(texture.sizeInBytes() == convertedImage.sizeInBytes()){
texture.fill(QColor(Qt::transparent).rgba());
return texture;
}
std::memcpy(texture.bits(), convertedImage.bits(), texture.sizeInBytes());

}
return QImage(
image.convertToFormat(QImage::Format_RGBA8888_Premultiplied)
.bits(),
image.width(),
image.height(),
QImage::Format_RGBA8888);
return texture;
}
} // namespace

Expand Down
4 changes: 2 additions & 2 deletions src/rendergraph/scenegraph/context.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

using namespace rendergraph;

Context::Context(QQuickWindow* pWindow)
Context::Context(gsl::not_null<QQuickWindow*> pWindow)
: m_pWindow(pWindow) {
}

QQuickWindow* Context::window() const {
gsl::not_null<QQuickWindow*> Context::window() const {
return m_pWindow;
}
5 changes: 3 additions & 2 deletions src/rendergraph/scenegraph/rendergraph/context.h
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
#pragma once

#include <QQuickWindow>
#include <gsl/pointers>

Check failure on line 4 in src/rendergraph/scenegraph/rendergraph/context.h

View workflow job for this annotation

GitHub Actions / macOS 12 arm64

'gsl/pointers' file not found

Check failure on line 4 in src/rendergraph/scenegraph/rendergraph/context.h

View workflow job for this annotation

GitHub Actions / macOS 12 arm64

'gsl/pointers' file not found

namespace rendergraph {
class Context;
}

class rendergraph::Context {
public:
Context(QQuickWindow* pWindow);
QQuickWindow* window() const;
Context(gsl::not_null<QQuickWindow*> pWindow);
gsl::not_null<QQuickWindow*> window() const;

private:
QQuickWindow* m_pWindow;
Expand Down
26 changes: 3 additions & 23 deletions src/waveform/renderers/allshader/waveformrendererendoftrack.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,36 +63,16 @@ void WaveformRendererEndOfTrack::preprocess() {
m_pTimeRemainingControl = std::make_unique<ControlProxy>(
m_waveformRenderer->getGroup(), "time_remaining");
}

static int offset = 0;
const int elapsedTotal = m_timer.elapsed().toIntegerMillis();
const int elapsed = (elapsedTotal + offset) % kBlinkingPeriodMillis;

// for testing
offset = (offset == 0) ? kBlinkingPeriodMillis / 4 : 0;

if (elapsedTotal >= m_lastFrameCountLogged + 1000) {
if (elapsedTotal >= m_lastFrameCountLogged + 2000) {
m_lastFrameCountLogged = elapsedTotal;
}
m_lastFrameCountLogged += 1000;
qDebug() << "FPS:" << m_frameCount;
m_frameCount = 0;
}
m_frameCount++;
const int elapsed = m_timer.elapsed().toIntegerMillis() % kBlinkingPeriodMillis;

const double blinkIntensity = (double)(2 * abs(elapsed - kBlinkingPeriodMillis / 2)) /
kBlinkingPeriodMillis;

const double remainingTime = m_pTimeRemainingControl->get();
const double remainingTimeTriggerSeconds =
WaveformWidgetFactory::instance()->getEndOfTrackWarningTime();
const double criticalIntensity = static_cast<double>(elapsed) /
static_cast<double>(
kBlinkingPeriodMillis); // TODO put back:
//(remainingTimeTriggerSeconds -
// remainingTime) /
// remainingTimeTriggerSeconds;
const double criticalIntensity = (remainingTimeTriggerSeconds - remainingTime) /
remainingTimeTriggerSeconds;

const double alpha = std::max(0.0, std::min(1.0, criticalIntensity * blinkIntensity));

Expand Down
4 changes: 0 additions & 4 deletions src/waveform/renderers/allshader/waveformrendererendoftrack.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,6 @@ class allshader::WaveformRendererEndOfTrack final
bool isSubtreeBlocked() const override;

private:
// TODO REMOVE
int m_lastFrameCountLogged{};
int m_frameCount{};

std::unique_ptr<ControlProxy> m_pEndOfTrackControl;
std::unique_ptr<ControlProxy> m_pTimeRemainingControl;

Expand Down
13 changes: 13 additions & 0 deletions src/waveform/renderers/allshader/waveformrendererrgb.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,24 @@ inline float math_pow2(float x) {
} // namespace

WaveformRendererRGB::WaveformRendererRGB(WaveformWidgetRenderer* waveformWidget,
#ifdef __RENDERGRAPH_IS_SCENEGRAPH
QColor axesColor,
QColor lowColor,
QColor midColor,
QColor highColor,
#endif
::WaveformRendererAbstract::PositionSource type,
WaveformRendererSignalBase::Options options)
: WaveformRendererSignalBase(waveformWidget),
m_isSlipRenderer(type == ::WaveformRendererAbstract::Slip),
m_options(options) {
#ifdef __RENDERGRAPH_IS_SCENEGRAPH
getRgbF(axesColor, &m_axesColor_r, &m_axesColor_g, &m_axesColor_b, &m_axesColor_a);

getRgbF(lowColor, &m_rgbLowColor_r, &m_rgbLowColor_g, &m_rgbLowColor_b);
getRgbF(midColor, &m_rgbMidColor_r, &m_rgbMidColor_g, &m_rgbMidColor_b);
getRgbF(highColor, &m_rgbHighColor_r, &m_rgbHighColor_g, &m_rgbHighColor_b);
#endif
initForRectangles<RGBMaterial>(0);
setUsePreprocess(true);
}
Expand Down
17 changes: 3 additions & 14 deletions src/waveform/renderers/allshader/waveformrendererrgb.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,26 +14,15 @@ class allshader::WaveformRendererRGB final
public rendergraph::GeometryNode {
public:
explicit WaveformRendererRGB(WaveformWidgetRenderer* waveformWidget,
::WaveformRendererAbstract::PositionSource type =
::WaveformRendererAbstract::Play,
WaveformRendererSignalBase::Options options = WaveformRendererSignalBase::Option::None);

explicit WaveformRendererRGB(
WaveformWidgetRenderer* waveformWidget,
#ifdef __RENDERGRAPH_IS_SCENEGRAPH
QColor axesColor,
QColor lowColor,
QColor midColor,
QColor highColor,
#endif
::WaveformRendererAbstract::PositionSource type =
::WaveformRendererAbstract::Play,
WaveformRendererSignalBase::Options options = WaveformRendererSignalBase::Option::None)
: WaveformRendererRGB(waveformWidget, type, options) {
getRgbF(axesColor, &m_axesColor_r, &m_axesColor_g, &m_axesColor_b, &m_axesColor_a);

getRgbF(lowColor, &m_rgbLowColor_r, &m_rgbLowColor_g, &m_rgbLowColor_b);
getRgbF(midColor, &m_rgbMidColor_r, &m_rgbMidColor_g, &m_rgbMidColor_b);
getRgbF(highColor, &m_rgbHighColor_r, &m_rgbHighColor_g, &m_rgbHighColor_b);
}
WaveformRendererSignalBase::Options options = WaveformRendererSignalBase::Option::None);

// Pure virtual from WaveformRendererSignalBase, not used
void onSetup(const QDomNode& node) override;
Expand Down

0 comments on commit a65b3fc

Please sign in to comment.