Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/rendergraph/opengl/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
add_library(
rendergraph_gl
STATIC
${COMMON_RENDERGRAPH_FILES}
attributeset.cpp
backend/baseattributeset.cpp
Expand Down
3 changes: 3 additions & 0 deletions src/rendergraph/opengl/backend/basegeometry.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ class rendergraph::BaseGeometry {
return m_sizeOfVertex;
}
void allocate(int vertexCount) {
if (m_vertexCount == vertexCount) {
return;
}
m_vertexCount = vertexCount;
m_vertexData.resize(m_vertexCount * sizeOfVertex() / sizeof(float));
}
Expand Down
1 change: 1 addition & 0 deletions src/rendergraph/scenegraph/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
add_library(
rendergraph_sg
STATIC
${COMMON_RENDERGRAPH_FILES}
attributeset.cpp
backend/baseattributeset.cpp
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,9 @@ bool WaveformRendererFiltered::preprocessInner() {

DEBUG_ASSERT(reserved ==
vertexUpdater[0].index() + vertexUpdater[1].index() +
vertexUpdater[2].index());
vertexUpdater[2].index() +
numVerticesPerLine); // all lines on the three channels and
// the axis

markDirtyMaterial();

Expand Down
36 changes: 28 additions & 8 deletions src/waveform/renderers/allshader/waveformrendermark.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,12 @@ allshader::WaveformRenderMark::WaveformRenderMark(
m_pTimeRemainingControl(nullptr),
m_isSlipRenderer(type == ::WaveformRendererAbstract::Slip),
m_playPosHeight(0.f),
m_playPosDevicePixelRatio(0.f) {
m_playPosDevicePixelRatio(0.f),
m_untilMarkShowBeats{false},
m_untilMarkShowTime(false),
m_untilMarkAlign(Qt::AlignVCenter),
m_untilMarkTextSize(0),
m_untilMarkTextHeightLimit(0.0) {
{
auto pNode = std::make_unique<Node>();
m_pRangeNodesParent = pNode.get();
Expand All @@ -171,14 +176,7 @@ allshader::WaveformRenderMark::WaveformRenderMark(
m_pPlayPosNode->initForRectangles<TextureMaterial>(1);
appendChildNode(std::move(pNode));
}
}

void allshader::WaveformRenderMark::draw(QPainter*, QPaintEvent*) {
DEBUG_ASSERT(false);
}

void allshader::WaveformRenderMark::setup(const QDomNode& node, const SkinContext& context) {
::WaveformRenderMarkBase::setup(node, context);
auto* pWaveformWidgetFactory = WaveformWidgetFactory::instance();
connect(pWaveformWidgetFactory,
&WaveformWidgetFactory::untilMarkShowBeatsChanged,
Expand All @@ -200,6 +198,26 @@ void allshader::WaveformRenderMark::setup(const QDomNode& node, const SkinContex
&WaveformWidgetFactory::untilMarkTextHeightLimitChanged,
this,
&WaveformRenderMark::setUntilMarkTextHeightLimit);
}

void allshader::WaveformRenderMark::draw(QPainter*, QPaintEvent*) {
DEBUG_ASSERT(false);
}

void allshader::WaveformRenderMark::setup(const QDomNode& node, const SkinContext& context) {
::WaveformRenderMarkBase::setup(node, context);
auto* pWaveformWidgetFactory = WaveformWidgetFactory::instance();

m_untilMarkShowBeats = pWaveformWidgetFactory->getUntilMarkShowBeats();
m_untilMarkShowTime = pWaveformWidgetFactory->getUntilMarkShowTime();
m_untilMarkAlign = pWaveformWidgetFactory->getUntilMarkAlign();

m_untilMarkTextSize =
pWaveformWidgetFactory->getUntilMarkTextPointSize();
m_untilMarkTextHeightLimit =
pWaveformWidgetFactory
->getUntilMarkTextHeightLimit(); // proportion of waveform
// height

m_playMarkerForegroundColor = m_waveformRenderer->getWaveformSignalColors()->getPlayPosColor();
m_playMarkerBackgroundColor = m_waveformRenderer->getWaveformSignalColors()->getBgColor();
Expand Down Expand Up @@ -397,6 +415,8 @@ void allshader::WaveformRenderMark::update() {
if (m_untilMarkShowBeats || m_untilMarkShowTime) {
updateUntilMark(playPosition, nextMarkPosition);
updateDigitsNodeForUntilMark(roundToPixel(playMarkerPos + 20.f));
} else {
m_pDigitsRenderNode->clear();
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/waveform/renderers/waveformmark.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ WaveformMark::WaveformMark(const QString& group,

if (!color.isValid()) {
// As a fallback, grab the color from the parent's AxesColor
// color = signalColors.getAxesColor();
color = signalColors.getAxesColor();
qDebug() << "Didn't get mark <Color>:" << color;
} else {
color = WSkinColor::getCorrectColor(color);
Expand Down
37 changes: 19 additions & 18 deletions src/waveform/renderers/waveformmarkset.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,24 +22,17 @@ void WaveformMarkSet::setup(const QString& group, const QDomNode& node,
bool hasDefaultMark = false;

QDomNode child = node.firstChild();
DefaultMarkerStyle defaultModel;
QDomNode defaultChild;
int priority = 0;
while (!child.isNull()) {
if (child.nodeName() == "DefaultMark") {
defaultModel = DefaultMarkerStyle{
context.selectString(node, "Control"),
context.selectString(node, "VisibilityControl"),
context.selectString(node, "TextColor"),
context.selectString(node, "Align"),
context.selectString(node, "Text"),
context.selectString(node, "Pixmap"),
context.selectString(node, "Icon"),
context.selectString(node, "Color"),
};
m_pDefaultMark = WaveformMarkPointer::create(
group, child, context, --priority, signalColors);
hasDefaultMark = true;
defaultChild = child;
} else if (child.nodeName() == "Mark") {
WaveformMarkPointer pMark(new WaveformMark(
group, child, context, --priority, signalColors));
auto pMark = WaveformMarkPointer::create(
group, child, context, --priority, signalColors);
if (pMark->isValid()) {
// guarantee uniqueness even if there is a misdesigned skin
QString item = pMark->getItem();
Expand All @@ -59,14 +52,22 @@ void WaveformMarkSet::setup(const QString& group, const QDomNode& node,
// check if there is a default mark and compare declared
// and to create all missing hot_cues
if (hasDefaultMark) {
setDefault(group, defaultModel, signalColors);
for (int i = 0; i < NUM_HOT_CUES; ++i) {
if (m_hotCueMarks.value(i).isNull()) {
// qDebug() << "WaveformRenderMark::setup - Automatic mark" << hotCueControlItem;
auto pMark = WaveformMarkPointer::create(
group, defaultChild, context, i, signalColors, i);
m_marks.push_front(pMark);
m_hotCueMarks.insert(pMark->getHotCue(), pMark);
}
}
}
}

void WaveformMarkSet::setDefault(const QString& group,
const DefaultMarkerStyle& model,
const WaveformSignalColors& signalColors) {
m_pDefaultMark = WaveformMarkPointer(new WaveformMark(
m_pDefaultMark = WaveformMarkPointer::create(

group,
model.positionControl,
Expand All @@ -79,10 +80,10 @@ void WaveformMarkSet::setDefault(const QString& group,
model.color,
0,
Cue::kNoHotCue,
signalColors));
signalColors);
for (int i = 0; i < NUM_HOT_CUES; ++i) {
if (m_hotCueMarks.value(i).isNull()) {
WaveformMarkPointer pMark(new WaveformMark(
auto pMark = WaveformMarkPointer::create(

group,
model.positionControl,
Expand All @@ -95,7 +96,7 @@ void WaveformMarkSet::setDefault(const QString& group,
model.color,
i,
i,
signalColors));
signalColors);
m_marks.push_front(pMark);
m_hotCueMarks.insert(pMark->getHotCue(), pMark);
}
Expand Down