scope checkpoint

This commit is contained in:
2026-06-13 16:36:33 -05:00
parent fcc24c5e3e
commit dbc1db37e1
4 changed files with 99 additions and 7 deletions

View File

@@ -0,0 +1,47 @@
#include "Scope.hpp"
#include <iostream>
ScopeBuffer::ScopeBuffer(size_t size) : buffer_(size) {
}
void ScopeBuffer::push(float sample) {
size_t w = writeIndex_.fetch_add(1, std::memory_order_relaxed);
buffer_[w % buffer_.size()] = sample;
}
void ScopeBuffer::read(std::vector<float>& out) {
size_t w = writeIndex_.load(std::memory_order_relaxed);
for(size_t i = 0; i < buffer_.size(); i++) {
size_t idx = (w + trigger_ + i * wavelength_ / out.size()) % buffer_.size();
out[i] = buffer_[idx];
}
}
Scope::Scope(QQuickItem *parent) : QQuickPaintedItem(parent) {
setAntialiasing(true);
}
void Scope::paint(QPainter *painter) {
//std::cout << "onPaint" << std::endl;
static float phase = 0.0f;
phase += 0.1f;
float sample = sin(phase);
QPen pen(Qt::blue, 4);
painter->setPen(pen);
painter->setRenderHint(QPainter::Antialiasing);
painter->drawRect(10, 10, width() - 20*sample, height() - 20*sample);
painter->setPen(QPen(Qt::red, 2));
painter->drawLine(0, 0, width(), height());
}