jfjoch_viewer: Use multiple threads to color images
All checks were successful
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 11m12s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 12m19s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 12m29s
Build Packages / Generate python client (push) Successful in 13s
Build Packages / build:rpm (rocky8) (push) Successful in 12m50s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 12m57s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 13m10s
Build Packages / Build documentation (push) Successful in 37s
Build Packages / build:rpm (rocky9) (push) Successful in 13m50s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 10m39s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 9m46s
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Successful in 10m53s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Successful in 11m49s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Successful in 11m54s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Successful in 12m9s
Build Packages / Generate python client (pull_request) Successful in 11s
Build Packages / Build documentation (pull_request) Successful in 35s
Build Packages / build:rpm (rocky8_sls9) (pull_request) Successful in 9m58s
Build Packages / Create release (pull_request) Has been skipped
Build Packages / build:rpm (rocky8) (pull_request) Successful in 10m9s
Build Packages / build:rpm (ubuntu2404) (pull_request) Successful in 9m21s
Build Packages / build:rpm (ubuntu2204) (pull_request) Successful in 9m58s
Build Packages / build:rpm (rocky9) (pull_request) Successful in 11m7s
Build Packages / Unit tests (push) Successful in 1h2m15s
Build Packages / Unit tests (pull_request) Successful in 54m8s

This commit is contained in:
2026-02-01 11:53:56 +01:00
parent 6191640ccf
commit 5e17a8f61c
2 changed files with 10 additions and 4 deletions

View File

@@ -5,7 +5,7 @@ SET(CMAKE_AUTOMOC ON)
SET(CMAKE_AUTORCC ON)
SET(CMAKE_AUTOUIC ON)
FIND_PACKAGE(Qt6 COMPONENTS Core Gui Widgets Charts DBus REQUIRED)
FIND_PACKAGE(Qt6 COMPONENTS Core Gui Widgets Charts DBus Concurrent REQUIRED)
QT_ADD_RESOURCES(APP_RESOURCES resources/resources.qrc)
@@ -86,7 +86,7 @@ ADD_EXECUTABLE(jfjoch_viewer jfjoch_viewer.cpp JFJochViewerWindow.cpp JFJochView
${APP_RESOURCES}
)
TARGET_LINK_LIBRARIES(jfjoch_viewer Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Charts Qt6::DBus
TARGET_LINK_LIBRARIES(jfjoch_viewer Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Charts Qt6::DBus Qt6::Concurrent
JFJochReader JFJochLogger JFJochCommon JFJochWriter JFJochImageAnalysis)
INSTALL(TARGETS jfjoch_viewer RUNTIME COMPONENT viewer)

View File

@@ -16,6 +16,7 @@
#include <QBuffer>
#include <QElapsedTimer>
#include <QPainter>
#include <QtConcurrent/QtConcurrent>
JFJochImage::JFJochImage(QWidget *parent) : QGraphicsView(parent) {
setDragMode(QGraphicsView::NoDrag); // Disable default drag mode
@@ -614,7 +615,12 @@ void JFJochImage::GeneratePixmap() {
const float invRangeLog = (range > 0) ? (lutScale / std::log1p(range)) : 0.0f;
rgb gap_color = color_scale.Apply(ColorScaleSpecial::Gap);
for (int y = 0; y < H; ++y) {
QVector<int> rows;
rows.reserve(H);
for (int y = 0; y < H; ++y) rows.push_back(y);
QtConcurrent::blockingMap(rows, [&](int y) {
QRgb *scanLine = reinterpret_cast<QRgb*>(qimg.scanLine(y));
const float *row = &image_fp[y * W];
rgb *out = &image_rgb[y * W];
@@ -654,7 +660,7 @@ void JFJochImage::GeneratePixmap() {
out[x] = c;
scanLine[x] = qRgb(c.r, c.g, c.b);
}
}
});
pixmap = QPixmap::fromImage(qimg);
pixmap.setDevicePixelRatio(1.0);