From 04c31aa64e27126dc4da0fb6bc740aa5b4b1d8fc Mon Sep 17 00:00:00 2001 From: Martin Falk Date: Wed, 22 Apr 2026 09:21:08 +0200 Subject: [PATCH 01/16] C3D: warn fix --- misc/c3d/src/processors/c3daveragedpositions.cpp | 2 +- misc/c3d/src/processors/c3dtomesh.cpp | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/misc/c3d/src/processors/c3daveragedpositions.cpp b/misc/c3d/src/processors/c3daveragedpositions.cpp index 5ddca3f57..0b160bc78 100644 --- a/misc/c3d/src/processors/c3daveragedpositions.cpp +++ b/misc/c3d/src/processors/c3daveragedpositions.cpp @@ -172,7 +172,7 @@ void C3DAveragedPositions::process() { radii.emplace_back(markerRadius_.get()); index.emplace_back(static_cast(pointIdx)); - pickIds.emplace_back(picking_.getPickingId(pointIdx)); + pickIds.emplace_back(static_cast(picking_.getPickingId(pointIdx))); } for (size_t frameIdx = startFrame; frameIdx <= endFrame; ++frameIdx) { diff --git a/misc/c3d/src/processors/c3dtomesh.cpp b/misc/c3d/src/processors/c3dtomesh.cpp index f4276abbc..1ce04691b 100644 --- a/misc/c3d/src/processors/c3dtomesh.cpp +++ b/misc/c3d/src/processors/c3dtomesh.cpp @@ -146,7 +146,8 @@ void C3DToMesh::process() { radii.emplace_back(markerRadius_.get()); // Unique ID for each point - pickIds.emplace_back(picking_.getPickingId(frameIdx * nbPoints + pointIdx)); + pickIds.emplace_back( + static_cast(picking_.getPickingId(frameIdx * nbPoints + pointIdx))); index.emplace_back(static_cast(frameIdx)); } From 4b3a8cced9715533030efa32249613f39495f83b Mon Sep 17 00:00:00 2001 From: Martin Falk Date: Mon, 27 Apr 2026 11:31:44 +0200 Subject: [PATCH 02/16] C3D: typo --- misc/c3d/src/processors/c3dtransformpoints.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/misc/c3d/src/processors/c3dtransformpoints.cpp b/misc/c3d/src/processors/c3dtransformpoints.cpp index e4baa8066..800460e09 100644 --- a/misc/c3d/src/processors/c3dtransformpoints.cpp +++ b/misc/c3d/src/processors/c3dtransformpoints.cpp @@ -56,10 +56,10 @@ C3DTransformPoints::C3DTransformPoints() : Processor{} , inport_{"inport", ""_help} , outport_{"outport", ""_help} - , refs_{{{"ref1", "Referece 1", "phantom:skull1"}, - {"ref2", "Referece 2", "phantom:skull3"}, - {"ref3", "Referece 3", "phantom:skull2"}, - {"ref4", "Referece 4", "phantom:skull4"}}} + , refs_{{{"ref1", "Reference 1", "phantom:skull1"}, + {"ref2", "Reference 2", "phantom:skull3"}, + {"ref3", "Reference 3", "phantom:skull2"}, + {"ref4", "Reference 4", "phantom:skull4"}}} , refGroup_{"refGroup", "Reference Markers"} , transforms_("transformations", "Transformation Stack") { From 9115bd19e32f7410a780cb5e9c9897f788c6f679 Mon Sep 17 00:00:00 2001 From: Martin Falk Date: Fri, 8 May 2026 13:33:27 +0200 Subject: [PATCH 03/16] MedVis,VectorVis,Misc: remove IVW_CONTEXT_CUSTOM, remove old logging macro --- .../src/datastructures/dicomdirtypes.cpp | 38 ++- medvis/dicom/src/errorlogging.cpp | 16 +- medvis/dicom/src/io/gdcmvolumereader.cpp | 225 ++++++++---------- medvis/dicom/src/io/mevisvolumereader.cpp | 19 +- .../src/processors/dataframeclustering.cpp | 4 +- .../openmesh/utils/openmeshconverters.h | 3 +- misc/openmesh/src/openmeshmodule.cpp | 2 +- misc/openmesh/src/openmeshreader.cpp | 2 +- .../algorithm/uniformspherepartitioning.h | 2 +- .../processors/integrallinestodataframe.cpp | 6 +- 10 files changed, 140 insertions(+), 177 deletions(-) diff --git a/medvis/dicom/src/datastructures/dicomdirtypes.cpp b/medvis/dicom/src/datastructures/dicomdirtypes.cpp index 082f52945..94841318c 100644 --- a/medvis/dicom/src/datastructures/dicomdirtypes.cpp +++ b/medvis/dicom/src/datastructures/dicomdirtypes.cpp @@ -185,20 +185,19 @@ void Series::updateImageInformation(const std::filesystem::path& dicompath) { auto sanityCheck = [&](const ImageMetaData& ref, const ImageMetaData& img) { if (ref.dims != img.dims) { throw DataReaderException( - fmt::format( - "image sizes differ in DICOM series '{}', expected {} but found {} ('{}')", - desc, toString(ref.dims), toString(img.dims), dicompath), - IVW_CONTEXT); + SourceContext{}, + "image sizes differ in DICOM series '{}', expected {} but found {} ('{}')", desc, + toString(ref.dims), toString(img.dims), dicompath); } if (ref.pixelformat != img.pixelformat) { - throw DataReaderException( - fmt::format("pixel formats differ in DICOM series '{}' ('{}')", desc, dicompath), - IVW_CONTEXT); + throw DataReaderException(SourceContext{}, + "pixel formats differ in DICOM series '{}' ('{}')", desc, + dicompath); } if (!ref.photometric.IsSameColorSpace(img.photometric)) { - throw DataReaderException( - fmt::format("photometric info differ in DICOM series '{}' ('{}')", desc, dicompath), - IVW_CONTEXT); + throw DataReaderException(SourceContext{}, + "photometric info differ in DICOM series '{}' ('{}')", desc, + dicompath); } const double dicomDelta = 1.0e-4; if (std::abs(ref.slope - img.slope) > dicomDelta || @@ -232,10 +231,9 @@ void Series::updateImageInformation(const std::filesystem::path& dicompath) { continue; } if (!imageReader.Read()) { - throw DataReaderException( - fmt::format("could not read image '{}' in DICOM series '{}' ('{}')", imgInfo.path, - desc, dicompath), - IVW_CONTEXT); + throw DataReaderException(SourceContext{}, + "could not read image '{}' in DICOM series '{}' ('{}')", + imgInfo.path, desc, dicompath); } imgInfo.updateInfo(imageReader); @@ -249,19 +247,17 @@ void Series::updateImageInformation(const std::filesystem::path& dicompath) { } if (warnSlopeIntercept) { - LogWarn( - fmt::format("varying slopes/intercepts in DICOM series '{}' ('{}')", desc, dicompath)); + log::warn("varying slopes/intercepts in DICOM series '{}' ('{}')", desc, dicompath); } if (warnPixelSpacing) { - LogWarn(fmt::format("pixel spacings differ in DICOM series '{}', expected {} ('{}')", desc, - toString(refImage.pixelSpacing), dicompath)); + log::warn("pixel spacings differ in DICOM series '{}', expected {} ('{}')", desc, + toString(refImage.pixelSpacing), dicompath); } if (warnOrientation) { - LogWarn( - fmt::format("image orientations differ in DICOM series '{}' ('{}')", desc, dicompath)); + log::warn("image orientations differ in DICOM series '{}' ('{}')", desc, dicompath); } if (warnOrigin) { - LogWarn(fmt::format("origins differ in DICOM series '{}' ('{}')", desc, dicompath)); + log::warn("origins differ in DICOM series '{}' ('{}')", desc, dicompath); } util::erase_remove_if(images, [](dicomdir::Image& image) { return image.empty(); }); diff --git a/medvis/dicom/src/errorlogging.cpp b/medvis/dicom/src/errorlogging.cpp index e5c5db1d9..be2db938f 100644 --- a/medvis/dicom/src/errorlogging.cpp +++ b/medvis/dicom/src/errorlogging.cpp @@ -32,7 +32,6 @@ #include #include -#include #include #include #include @@ -78,21 +77,20 @@ class StreambufLineout : public std::streambuf { if (ch == '\n') { if (!buffer.empty()) { // at the end of a line we want to pass the message to Inviwo's logging system - inviwo::LogCentral::getPtr()->log("Gdcm Volume Importer", loglevel, - LogAudience::User, "", "", 0, - buffer); + LogCentral::getPtr()->log("Gdcm Volume Importer", loglevel, LogAudience::User, + "", "", 0, buffer); } buffer.clear(); } else if (!Traits::eq_int_type(ch, Traits::eof())) { buffer.push_back(static_cast(ch)); } - } catch (std::exception& ex) { + } catch (const std::exception& ex) { // error while logging, print what we've got so far - inviwo::LogCentral::getPtr()->log("Gdcm Volume Importer", loglevel, LogAudience::User, - "", "", 0, buffer); + LogCentral::getPtr()->log("Gdcm Volume Importer", loglevel, LogAudience::User, + "", "", 0, buffer); buffer.clear(); - // and tell the user what hargspened - LogError("Exception while logging Gdcm: " << ex.what()); + // and tell the user what happened + log::error("Exception while logging Gdcm: {}", ex.what()); // return traits::eof on failure return Traits::eof(); } diff --git a/medvis/dicom/src/io/gdcmvolumereader.cpp b/medvis/dicom/src/io/gdcmvolumereader.cpp index 086f95ac5..6610583b6 100644 --- a/medvis/dicom/src/io/gdcmvolumereader.cpp +++ b/medvis/dicom/src/io/gdcmvolumereader.cpp @@ -74,7 +74,7 @@ GdcmVolumeReader::GdcmVolumeReader() , format_{DataUInt8::get()} , dimension_{0, 0, 0} { - addExtension(FileExtension("dcm", "DICOM Volume file format")); + addExtension({.extension = LCString{"dcm"}, .description = "DICOM Volume file format"}); enableGdcmLogging(LogVerbosity::Error); } @@ -90,9 +90,9 @@ std::shared_ptr GdcmVolumeReader::getVolumeDescription(dicomdir::Series& series.updateImageInformation(path); if (series.empty()) { - throw DataReaderException( - fmt::format("DICOM series '{}' does not contain any images ({})", series.desc, path), - IVW_CONTEXT_CUSTOM("GdcmVolumeReader::getVolumeDescription")); + throw DataReaderException(SourceContext{}, + "DICOM series '{}' does not contain any images ({})", series.desc, + path); } // sort images by slice position (z) in patient coords @@ -104,10 +104,9 @@ std::shared_ptr GdcmVolumeReader::getVolumeDescription(dicomdir::Series& // create an Inviwo Volume const DataFormatBase* format = gdcmutil::getDataFormatBase(series.pixelformat); if (!format) { - throw DataReaderException( - fmt::format("unsupported image format in DICOM series '{}': {} ({})", series.desc, - series.pixelformat.GetScalarTypeAsString(), path), - IVW_CONTEXT_CUSTOM("GdcmVolumeReader::getVolumeDescription")); + throw DataReaderException(SourceContext{}, + "unsupported image format in DICOM series '{}': {} ({})", + series.desc, series.pixelformat.GetScalarTypeAsString(), path); } auto volume = std::make_shared(series.dims, format); @@ -139,10 +138,10 @@ std::shared_ptr GdcmVolumeReader::getVolumeDescription(dicomdir::Series& dvec3 spacing{series.pixelSpacing}; if (series.pixelSpacing.z == 0.0) { if (dicomImg.sliceThickness == 0.0) { - LogWarnCustom("GdcmVolumeReader::getVolumeDescription", - fmt::format("DICOM series '{}' does not define pixel spacing in z or " - "slice thickness, using 1.0 for z ({})", - series.desc, path)); + log::warn( + "DICOM series '{}' does not define pixel spacing in z or " + "slice thickness, using 1.0 for z ({})", + series.desc, path); spacing.z = 1.0; } else { spacing.z = dicomImg.sliceThickness; @@ -189,7 +188,7 @@ std::shared_ptr GdcmVolumeReader::tryReadDICOMsequenceRecursive( std::shared_ptr GdcmVolumeReader::tryReadDICOMsequence( const std::filesystem::path& sequenceDirectory) { const auto files = filesystem::getDirectoryContents(sequenceDirectory); - std::shared_ptr outputVolumes = std::make_shared(); + auto outputVolumes = std::make_shared(); std::map seriesByUID; for (const auto& f : files) { @@ -199,15 +198,13 @@ std::shared_ptr GdcmVolumeReader::tryReadDICOMsequence( // add sequences to "outputVolumes" std::filesystem::path file = sequenceDirectory / f; if (!std::filesystem::is_regular_file(file)) { - throw DataReaderException(fmt::format("file does not exist ({})", file), - IVW_CONTEXT_CUSTOM("GdcmVolumeReader::tryReadDICOMsequence")); + throw DataReaderException(SourceContext{}, "file does not exist ({})", file); } gdcm::ImageReader imageReader; std::ifstream imageInputStream(file, std::ios::binary); if (!imageInputStream.is_open()) { - throw DataReaderException(fmt::format("file cannot be opened ({})", file), - IVW_CONTEXT_CUSTOM("GdcmVolumeReader::tryReadDICOMsequence")); + throw DataReaderException(SourceContext{}, "file cannot be opened ({})", file); } /*if (!imageReader.CanRead()) { // call this on file BrainSample 11.7T\4\pdata\1\2dseq @@ -231,17 +228,15 @@ std::shared_ptr GdcmVolumeReader::tryReadDICOMsequence( } seriesByUID[suid].images.push_back(dicomdir::Image{file.string()}); } else { - throw DataReaderException( - fmt::format("could not find DICOM series UID ({})", file), - IVW_CONTEXT_CUSTOM("GdcmVolumeReader::tryReadDICOMsequence")); + throw DataReaderException(SourceContext{}, "could not find DICOM series UID ({})", + file); } } else { continue; // skip non-dicom files } } - for (const auto& pair : seriesByUID) { - dicomdir::Series series = pair.second; + for (auto&& [uid, series] : seriesByUID) { if (series.images.empty()) { continue; } @@ -266,8 +261,7 @@ std::shared_ptr GdcmVolumeReader::tryReadDICOMDIR( std::ifstream dicomdirInputStream(dicomdirPath, std::ios::binary); if (!dicomdirInputStream.is_open()) { - throw DataReaderException(fmt::format("could not open DICOM file ({})", dicomdirPath), - IVW_CONTEXT_CUSTOM("GdcmVolumeReader::tryReadDICOMDIR")); + throw DataReaderException(SourceContext{}, "could not open DICOM file ({})", dicomdirPath); } // Analog to gdcm example "ReadAndDumpdicomdir::" @@ -275,7 +269,7 @@ std::shared_ptr GdcmVolumeReader::tryReadDICOMDIR( reader.SetStream(dicomdirInputStream); if (!reader.Read()) { // LogInfo(dicomdirPath + " is no DICOM file"); - return 0; + return nullptr; } gdcm::File& file = reader.GetFile(); @@ -285,7 +279,7 @@ std::shared_ptr GdcmVolumeReader::tryReadDICOMDIR( gdcm::MediaStorage dicomMediaStorage; dicomMediaStorage.SetFromFile(file); if (dicomMediaStorage != gdcm::MediaStorage::MediaStorageDirectoryStorage) { - return 0; + return nullptr; } std::stringstream storageUID; @@ -294,7 +288,7 @@ std::shared_ptr GdcmVolumeReader::tryReadDICOMDIR( metainfo.GetDataElement(gdcm::Tag(0x0002, 0x0002)).GetValue().Print(storageUID); } else { // Media Storage Sop Class UID not present - return 0; + return nullptr; } // Trim string because DICOM allows padding with spaces @@ -302,7 +296,7 @@ std::shared_ptr GdcmVolumeReader::tryReadDICOMDIR( if ("1.2.840.10008.1.3.10" != storageUIDstr) { // This file is not a dicomdir:: - return 0; + return nullptr; } // Now read actual dataset @@ -346,7 +340,8 @@ std::shared_ptr GdcmVolumeReader::tryReadDICOMDIR( auto recordSequence = dataElement.GetValueAsSQ(); // This loop also iterates all the nested records sequences (like depth-first tree // traversal) - for (int recIndex = 1; recIndex <= recordSequence->GetNumberOfItems(); recIndex++) { + for (gdcm::SequenceOfItems::SizeType recIndex = 1; + recIndex <= recordSequence->GetNumberOfItems(); recIndex++) { // Records contain data about either a patient, study, series or image // image records reference image files gdcm::Item& record = recordSequence->GetItem(recIndex); @@ -390,7 +385,7 @@ std::shared_ptr GdcmVolumeReader::tryReadDICOMDIR( auto& study = dataPerPatient.back().studies.back(); auto& series = study.series.back(); - series.images.push_back(dicomdir::Image{imagePath.string()}); + series.images.emplace_back(imagePath.string()); } imageCount++; @@ -398,19 +393,20 @@ std::shared_ptr GdcmVolumeReader::tryReadDICOMDIR( } } - LogInfoCustom("GdcmVolumeReader", "Scanned dicomdir:: ('" - << dicomdirPath << "'):\n PatientCount = " - << patientCount << "\n StudyCount = " << studyCount - << "\n ImageCount = " << imageCount); + log::info( + "Scanned dicomdir:: ('{}'):\n" + " PatientCount = {}\n" + " StudyCount = {}\n" + " ImageCount = {}", + dicomdirPath, patientCount, studyCount, imageCount); if (patientCount == 0 || studyCount == 0 || seriesCount == 0 || imageCount == 0) { - LogWarnCustom("GdcmVolumeReader", - "No volumes found in dicomdir:: ('" << dicomdirPath << "')"); - return 0; + log::warn("No volumes found in dicomdir:: ('{}')", dicomdirPath); + return nullptr; } // Build volumes from images - std::shared_ptr outputVolumes = std::make_shared(); + auto outputVolumes = std::make_shared(); for (dicomdir::Patient& patient : dataPerPatient) { // push everything in one sequence for (dicomdir::Study& study : patient.studies) { for (dicomdir::Series& series : study.series) { @@ -440,67 +436,55 @@ std::shared_ptr GdcmVolumeReader::tryReadDICOMDIR( } // print a summary of all collected volumes - auto createLine = [](const std::string& tag, auto text, int indent) { + auto createLine = [](std::string_view tag, auto text, int indent) { return fmt::format("{0:<{1}}{2:<12}{3}\n", "", indent, tag, text); }; size_t volindex = 0; auto printSeries = [createLine, &volindex](const dicomdir::Series& series, int indent) { - std::ostringstream ss; - - ss << createLine("[ DICOM Series", "", indent); + StrBuffer buf; if (glm::compMul(series.dims) > 0) { ++volindex; - ss << createLine("Volume Idx:", volindex, indent + 2) - << createLine("Dimensions:", toString(series.dims), indent + 2); + buf.append("{}", createLine("Volume Idx:", volindex, indent + 2)); + buf.append("{}", createLine("Dimensions:", toString(series.dims), indent + 2)); } if (!series.desc.empty()) { - ss << createLine("Desc.:", series.desc, indent + 2); + buf.append("{}", createLine("Desc.:", series.desc, indent + 2)); } if (!series.modality.empty()) { - ss << createLine("Modality:", series.modality, indent + 2); + buf.append("{}", createLine("Modality:", series.modality, indent + 2)); } - ss << createLine("No. Images:", series.images.size(), indent + 2) - << createLine("]", "", indent); + buf.append("{}", createLine("No. Images:", series.images.size(), indent + 2)); - return ss.str(); + return fmt::format("{0:<{1}}[ DICOM Series\n{2}{0:<{1}}]", "", indent, buf.view()); }; auto printStudy = [createLine, printSeries](const dicomdir::Study& study, int indent) { - std::ostringstream ss; - - ss << createLine("[ DICOM Study", "", indent); + StrBuffer buf; if (!study.desc.empty()) { - ss << createLine("Desc.:", study.desc, indent + 2); + buf.append("{}", createLine("Desc.:", study.desc, indent + 2)); } if (!study.date.empty()) { - ss << createLine("Date:", study.date, indent + 2); + buf.append("{}", createLine("Date:", study.date, indent + 2)); } - ss << createLine("No. Series:", study.series.size(), indent + 2); + buf.append("{}", createLine("No. Series:", study.series.size(), indent + 2)); for (const auto& s : study.series) { - ss << printSeries(s, indent + 2); + buf.append("{}", printSeries(s, indent + 2)); } - ss << createLine("]", "", indent); - return ss.str(); + return fmt::format("{0:<{1}}[ DICOM Study\n{2}{0:<{1}}]", "", indent, buf.view()); }; - auto printPatient = [createLine, printStudy](const dicomdir::Patient& p) { - std::ostringstream ss; - - ss << "[ DICOM Patient\n" - << createLine("Name:", p.patientName, 2) << createLine("ID", p.patientId, 2) - << createLine("No. Studies:", p.studies.size(), 2); + for (const auto& p : dataPerPatient) { + StrBuffer buf; + buf.append("{}{}{}", createLine("Name:", p.patientName, 2), + createLine("ID", p.patientId, 2), + createLine("No. Studies:", p.studies.size(), 2)); for (const auto& s : p.studies) { - ss << printStudy(s, 2); + buf.append("{}", printStudy(s, 2)); } - ss << "]"; - - return ss.str(); - }; - for (const auto& p : dataPerPatient) { - LogInfoCustom("GdcmVolumeReader", printPatient(p)); + log::info("[ DICOM Patient\n{}]", buf.view()); } return outputVolumes; @@ -516,8 +500,7 @@ std::shared_ptr GdcmVolumeReader::readData(const std::filesystem if (std::filesystem::is_regular_file(newPath)) { path = newPath; } else { - throw DataReaderException(fmt::format("could not read input file ({})", path), - IVW_CONTEXT); + throw DataReaderException(SourceContext{}, "could not read input file ({})", path); } } @@ -543,19 +526,21 @@ std::shared_ptr GdcmVolumeReader::readData(const std::filesystem // Otherwise keep trying file_ = path; - std::shared_ptr outputVolumes = std::make_shared(); + auto outputVolumes = std::make_shared(); gdcm::ImageReader reader; reader.SetFileName(file_.string().c_str()); if (!reader.Read()) { MevisVolumeReader mvreader; if (mvreader.setFilenames(file_)) { - LogInfo("This seems to be a MevisLab dcm/tif file - calling the appropriate reader..."); + log::info( + "This seems to be a MevisLab dcm/tif file - calling the appropriate reader..."); + gdcm::Trace::WarningOff(); std::shared_ptr v = mvreader.readData(file_); + gdcm::Trace::WarningOn(); outputVolumes->push_back(v); return outputVolumes; } else { - throw DataReaderException(fmt::format("could not read input file ({})", path), - IVW_CONTEXT); + throw DataReaderException(SourceContext{}, "could not read input file ({})", path); } } @@ -563,7 +548,7 @@ std::shared_ptr GdcmVolumeReader::readData(const std::filesystem const gdcm::File& file = reader.GetFile(); std::shared_ptr v = generateVolume(image, file); if (!v) { - throw DataReaderException(fmt::format("could not read input file ({})", path), IVW_CONTEXT); + throw DataReaderException(SourceContext{}, "could not read input file ({})", path); } outputVolumes->push_back(v); @@ -616,67 +601,51 @@ std::shared_ptr GdcmVolumeReader::generateVolume(const gdcm::Image& imag // create an Inviwo Volume const DataFormatBase* format = gdcmutil::getDataFormatBase(image); if (!format) { - throw DataReaderException(fmt::format("unsupported image format in DICOM image: {} ({})", - image.GetPixelFormat().GetScalarTypeAsString(), - file.GetHeader().GetMediaStorageAsString()), - IVW_CONTEXT); + throw DataReaderException(SourceContext{}, + "unsupported image format in DICOM image: {} ({})", + image.GetPixelFormat().GetScalarTypeAsString(), + file.GetHeader().GetMediaStorageAsString()); } std::size_t voxelsz = (format->getSizeInBytes()) * (format->getComponents()); std::size_t size = glm::compMul(dimension) * voxelsz; // sanity check - std::size_t len = image.GetBufferLength(); - // if gdcm says the volume size is LARGER than we compute - inviwo may crash because // the allocated buffer can be too small for image.GetBuffer(destination) - if (size != len) { + if (std::size_t len = image.GetBufferLength(); size != len) { throw DataReaderException( - fmt::format( - "inconsistent format size information: {} byte (Inviwo), {} byte (gdcm) ({})", size, - len, file.GetHeader().GetMediaStorageAsString()), - IVW_CONTEXT); + SourceContext{}, + "inconsistent format size information: {} byte (Inviwo), {} byte (gdcm) ({})", size, + len, file.GetHeader().GetMediaStorageAsString()); } - gdcm::MediaStorage ms = gdcm::MediaStorage(); - // add some info in debug mode + gdcm::MediaStorage ms{}; + ms.SetFromFile(file); #if defined(IVW_DEBUG) - LogInfo("========================================================================"); - LogInfo(file_ << " - Volume Information:"); - std::string dimstr = std::to_string(dims[0]); - std::string oristr = std::to_string(origin[0]); - std::string spacestr = std::to_string(spacings[0]); - for (std::size_t i = 1; i < dims.size(); ++i) { - dimstr += "x" + std::to_string(dims[i]); - oristr += "x" + std::to_string(origin[i]); - spacestr += "x" + std::to_string(spacings[i]); - } - - ms.SetFromFile(file); - gdcm::MediaStorage::MSType typ = ms.GetMSType(ms.GetString()); - - LogInfo("media storage type: " << ms.GetMSString(typ)); - LogInfo("volume is " << dims.size() << "D"); - LogInfo("size: " << dimstr); - LogInfo("offset: " << oristr); - LogInfo("spacing: " << spacestr); - LogInfo("volume size: " << size); - LogInfo("voxel size: " << voxelsz << "(components: " << (format->getComponents()) - << ", component size: " << (format->getSizeInBytes()) << ")"); - LogInfo("sample value range is [" << pixelformat.GetMin() << ", " << pixelformat.GetMax() - << "]."); + StrBuffer buf; + const char* msStorageType = + gdcm::MediaStorage::GetMSString(gdcm::MediaStorage::GetMSType(ms.GetString())); + log::warn("{0:=<80}", ""); + log::warn("{} - Volume Information:", file_); + log::warn("{}", msStorageType); + log::warn("volume is {}D\nsize: {}\noffset: {}\nspacing: {}\nvolume size (byte): {}", + dims.size(), fmt::join(dims, "x"), fmt::join(origin, "x"), fmt::join(spacings, "x"), + size); + log::warn("voxel size: {} (components: {}, component size: {})", voxelsz, + format->getComponents(), format->getSizeInBytes()); + + log::warn("sample value range is [{}, {}]", pixelformat.GetMin(), pixelformat.GetMax()); pixelformat.Print(gdcm::Trace::GetDebugStream()); - LogInfo("corresponding inviwo format: " << format->getString()); - LogInfo("format: " << format->getString() << "[" << format->getMin() << ", " << format->getMax() - << "]"); - LogInfo("========================================================================"); + log::warn("corresponding inviwo format: ", format->getString()); + log::warn("{0:=<80}", ""); #endif dimension_ = dimension; format_ = format; - std::shared_ptr volume = std::make_shared(dimension, format); + auto volume = std::make_shared(dimension, format); volume->setBasis(basis); volume->setOffset(offset); volume->setWorldMatrix(wtm); @@ -687,10 +656,9 @@ std::shared_ptr GdcmVolumeReader::generateVolume(const gdcm::Image& imag std::vector is = gdcm::ImageHelper::GetRescaleInterceptSlopeValue(file); auto intercept = is[0]; auto slope = is[1]; - const std::string modality(ms.GetModality()); - // TODO: check this heuristics!!! - if (modality == "CT") { + // TODO: check this heuristic!!! + if (std::string{ms.GetModality()} == "CT") { // Computed Tomography volume->dataMap.valueAxis = Axis{"Hounsfield", units::unit_from_string("HU")}; if (format->getPrecision() == 16) { @@ -729,7 +697,7 @@ std::shared_ptr GCDMVolumeRAMLoader::createRepresentation( gdcm::ImageReader reader; reader.SetFileName(file_.string().c_str()); if (!reader.Read()) { - throw DataReaderException(fmt::format("could not read file ({})", file_), IVW_CONTEXT); + throw DataReaderException(SourceContext{}, "could not read file ({})", file_); } const gdcm::Image& image = reader.GetImage(); image.GetBuffer(data.get()); @@ -755,8 +723,7 @@ void GCDMVolumeRAMLoader::getVolumeData(const dicomdir::Series& series, void* ou std::ifstream imageInputStream(imgInfo.path, std::ios::binary); if (!imageInputStream.is_open()) { - throw DataReaderException(fmt::format("file cannot be opened ({})", imgInfo.path), - IVW_CONTEXT); + throw DataReaderException(SourceContext{}, "file cannot be opened ({})", imgInfo.path); } imageReader.SetStream(imageInputStream); @@ -769,8 +736,8 @@ void GCDMVolumeRAMLoader::getVolumeData(const dicomdir::Series& series, void* ou gdcm::Image image = imageReader.GetImage(); // Get RAW image (gdcm does the decoding for us) if (!image.GetBuffer(reinterpret_cast(outData) + totalByteCount)) { - throw DataReaderException( - fmt::format("could not read image data ({})", imgInfo.path), IVW_CONTEXT); + throw DataReaderException(SourceContext{}, "could not read image data ({})", + imgInfo.path); } totalByteCount += image.GetBufferLength(); @@ -784,7 +751,7 @@ void GCDMVolumeRAMLoader::updateRepresentation(std::shared_ptr MevisVolumeReader::readData(const std::filesystem::path& gdcm::ImageReader reader; reader.SetFileName(dcm_file_.string().c_str()); if (reader.Read()) { - LogWarn("dcm file " << dcm_file_ << " contains an image/volume - maybe the data in " - << tif_file_ << " does not belong to this dcm file?") + log::warn( + "dcm file '{}' contains an image/volume - maybe the data in '{}' does not belong to " + "this dcm file?", + dcm_file_, tif_file_); } else { - LogInfo("You can savely ignore the last \"no pixel data found!\" warning from gdcm."); + log::info("You can savely ignore the last \"no pixel data found!\" warning from gdcm."); // as a alternative call gdcm::Trace::WarningOff(); before reader.Read() } @@ -215,8 +217,9 @@ std::shared_ptr MevisVolumeRAMLoader::createRepresentation auto data = std::make_unique(size); if (!data) { throw DataReaderException( - IVW_CONTEXT, - "Error: Could not allocate memory for loading mevis volume data: ", tif_file_); + SourceContext{}, + "Error: Could not allocate memory for loading mevis volume data: {}", + tif_file_); } readDataInto(reinterpret_cast(data.get())); @@ -292,9 +295,9 @@ void MevisVolumeRAMLoader::readDataInto(void* destination) const { #if defined(IVW_DEBUG) unsigned int number_of_tiles = TIFFNumberOfTiles(tiffimage); - LogInfo("number of tiles: " << number_of_tiles); - LogInfo(fmt::format("tilesize: {} ({}x{}x{})", tilesz, tilesize.x, tilesize.y, tilesize.z)); - LogInfo(fmt::format("rowbyte: {}, bytespersample: {}", tilerowbytes, bytespersample)); + log::info("number of tiles: {}", number_of_tiles); + log::info("tilesize: {} ({}x{}x{})", tilesz, tilesize.x, tilesize.y, tilesize.z); + log::info("rowbyte: {}, bytespersample: {}", tilerowbytes, bytespersample); #endif IVW_ASSERT(tilerowbytes == tilesize.x * bytespersample, diff --git a/misc/dataframeclustering/src/processors/dataframeclustering.cpp b/misc/dataframeclustering/src/processors/dataframeclustering.cpp index ff921a19a..87cd9ae2c 100644 --- a/misc/dataframeclustering/src/processors/dataframeclustering.cpp +++ b/misc/dataframeclustering/src/processors/dataframeclustering.cpp @@ -32,7 +32,7 @@ #include #include -#include +#include namespace inviwo { @@ -159,7 +159,7 @@ void DataFrameClustering::onDataFrameChange() { if (auto pp = dynamic_cast(p)) { return pp; } - throw inviwo::Exception("Property not a BoolProperty", IVW_CONTEXT); + throw inviwo::Exception("Property not a BoolProperty"); } else { auto cp = std::make_unique(id, header, columns_.size() < 2); cp->setSerializationMode(PropertySerializationMode::All); diff --git a/misc/openmesh/include/inviwo/openmesh/utils/openmeshconverters.h b/misc/openmesh/include/inviwo/openmesh/utils/openmeshconverters.h index 640598c93..41e49a4c9 100644 --- a/misc/openmesh/include/inviwo/openmesh/utils/openmeshconverters.h +++ b/misc/openmesh/include/inviwo/openmesh/utils/openmeshconverters.h @@ -154,8 +154,7 @@ std::shared_ptr toInviwo(const OM_Mesh& mesh) { } } if (skipped) { - LogWarnCustom("openmeshutil::toInviwo", - "Skipped " << skipped << " faces since they weren't triangles"); + log::warn("Skipped {} faces since they weren't triangles", skipped); } return newmesh; } diff --git a/misc/openmesh/src/openmeshmodule.cpp b/misc/openmesh/src/openmeshmodule.cpp index 98937dce8..247a6ac52 100644 --- a/misc/openmesh/src/openmeshmodule.cpp +++ b/misc/openmesh/src/openmeshmodule.cpp @@ -61,7 +61,7 @@ OpenMeshModule::OpenMeshModule(InviwoApplication* app) : InviwoModule(app, "Open registerDataReader(std::make_unique()); registerDataWriter(std::make_unique()); - LogInfo("OpenMesh version: " << OM_GET_VER << "." << OM_GET_MAJ << "." << OM_GET_MIN); + log::info("OpenMesh version: {}.{}.{}", OM_GET_VER, OM_GET_MAJ, OM_GET_MIN); } } // namespace inviwo diff --git a/misc/openmesh/src/openmeshreader.cpp b/misc/openmesh/src/openmeshreader.cpp index 7ccef915f..552a42346 100644 --- a/misc/openmesh/src/openmeshreader.cpp +++ b/misc/openmesh/src/openmeshreader.cpp @@ -67,7 +67,7 @@ std::shared_ptr OpenMeshReader::readData(const std::filesystem::path& file TriMesh mesh; if (!OpenMesh::IO::read_mesh(mesh, filePath.string())) { - throw Exception(IVW_CONTEXT, "Failed reading mesh from disk {}", filePath); + throw Exception(SourceContext{}, "Failed reading mesh from disk {}", filePath); } mesh.request_vertex_normals(); mesh.request_face_normals(); diff --git a/vectorvis/integrallinefiltering/include/inviwo/integrallinefiltering/algorithm/uniformspherepartitioning.h b/vectorvis/integrallinefiltering/include/inviwo/integrallinefiltering/algorithm/uniformspherepartitioning.h index bf70e4715..22443774d 100644 --- a/vectorvis/integrallinefiltering/include/inviwo/integrallinefiltering/algorithm/uniformspherepartitioning.h +++ b/vectorvis/integrallinefiltering/include/inviwo/integrallinefiltering/algorithm/uniformspherepartitioning.h @@ -103,7 +103,7 @@ class UniformSpherePartitioning { */ UniformSpherePartitioning(const size_t segments = 20) { if (segments == 0) { - throw Exception("Zero segments not allowed", IVW_CONTEXT); + throw Exception("Zero segments not allowed"); } else if (segments == 1) { collars_.emplace_back(glm::pi(), 1); return; diff --git a/vectorvis/integrallinefiltering/src/processors/integrallinestodataframe.cpp b/vectorvis/integrallinefiltering/src/processors/integrallinestodataframe.cpp index d552552b2..efcbb11d4 100644 --- a/vectorvis/integrallinefiltering/src/processors/integrallinestodataframe.cpp +++ b/vectorvis/integrallinefiltering/src/processors/integrallinestodataframe.cpp @@ -108,12 +108,12 @@ void IntegralLinesToDataFrame::MetaDataSettings::initFunctions( double d; while (iss >> d) { if (d < 0) { - throw Exception(fmt::format("Percentile cant be negative (got: {})", d), IVW_CONTEXT); + throw Exception(SourceContext{}, "Percentile cant be negative (got: {})", d); } if (d > 100) { - throw Exception(fmt::format("Percentile cant needs to be less than 100 (got: {})", d), - IVW_CONTEXT); + throw Exception(SourceContext{}, "Percentile cant needs to be less than 100 (got: {})", + d); } if (d > 1) d /= 100; // from percent to ratio percentiles.push_back(d); From 85ba903626553266eadf341d39e53d0b3549f634 Mon Sep 17 00:00:00 2001 From: Martin Falk Date: Fri, 8 May 2026 13:33:44 +0200 Subject: [PATCH 04/16] MedVis: enable DICOM module by default --- medvis/dicom/depends.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/medvis/dicom/depends.cmake b/medvis/dicom/depends.cmake index 08bf20c19..edc8da3d2 100644 --- a/medvis/dicom/depends.cmake +++ b/medvis/dicom/depends.cmake @@ -2,3 +2,4 @@ # Dependencies for current module set(dependencies ) +set(EnableByDefault ON) \ No newline at end of file From 6161178247d1bd3d900a2abe6a19bf18431b38c1 Mon Sep 17 00:00:00 2001 From: Martin Falk Date: Fri, 8 May 2026 14:17:10 +0200 Subject: [PATCH 05/16] gha: add dicom --- .github/presets/common.json | 2 +- .github/presets/linux.json | 2 +- .github/presets/macos.json | 2 +- .github/presets/windows.json | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/presets/common.json b/.github/presets/common.json index aa96e6c5a..eef62c9d1 100644 --- a/.github/presets/common.json +++ b/.github/presets/common.json @@ -6,7 +6,7 @@ "name": "common", "displayName": "Modules GHA", "cacheVariables": { - "VCPKG_MANIFEST_FEATURES" : "python;qt;graphviz;openmesh;nanovg;vtk;ttk;ezc3d", + "VCPKG_MANIFEST_FEATURES" : "python;qt;graphviz;openmesh;nanovg;vtk;ttk;ezc3d;dicom", "VCPKG_INSTALL_OPTIONS": "--clean-after-build;--x-abi-tools-use-exact-versions", "CMAKE_CXX_SCAN_FOR_MODULES": "OFF", diff --git a/.github/presets/linux.json b/.github/presets/linux.json index 83abd6826..4f473ce96 100644 --- a/.github/presets/linux.json +++ b/.github/presets/linux.json @@ -30,7 +30,7 @@ "IVW_TEST_UNIT_TESTS": { "type": "BOOL", "value": "OFF"}, "$comment": "The vcpkg graphvis package file in static mode", - "VCPKG_MANIFEST_FEATURES" : "python;qt;openmesh;nanovg;vtk;ttk;ezc3d", + "VCPKG_MANIFEST_FEATURES" : "python;qt;openmesh;nanovg;vtk;ttk;ezc3d;dicom", "IVW_MODULE_GRAPHVIZ": { "type": "BOOL", "value": "OFF"}, "IVW_MODULE_PYTHONTOOLS": { "type": "BOOL", "value": "OFF"} } diff --git a/.github/presets/macos.json b/.github/presets/macos.json index 77ef43727..de95d5867 100644 --- a/.github/presets/macos.json +++ b/.github/presets/macos.json @@ -24,7 +24,7 @@ "IVW_TEST_UNIT_TESTS": { "type": "BOOL", "value": "OFF"}, "$comment1": "The vcpkg graphvis package file in static mode", - "VCPKG_MANIFEST_FEATURES" : "python;qt;openmesh;nanovg;vtk;ttk;ezc3d", + "VCPKG_MANIFEST_FEATURES" : "python;qt;openmesh;nanovg;vtk;ttk;ezc3d;dicom", "IVW_MODULE_GRAPHVIZ": { "type": "BOOL", "value": "OFF"}, "$comment2": " Assimp and nanovg both implement stb_image in their static libs causing linker issues", diff --git a/.github/presets/windows.json b/.github/presets/windows.json index fc2145f75..ea5fc5efe 100644 --- a/.github/presets/windows.json +++ b/.github/presets/windows.json @@ -12,7 +12,7 @@ "IVW_CFG_USE_CCACHE_MSVC": "ON", "IVW_MODULE_SGCT": "ON", "IVW_APP_INVIWO_DOME": "ON", - "VCPKG_MANIFEST_FEATURES": "python;qt;sgct;graphviz;openmesh;nanovg;vtk;ttk;ezc3d" + "VCPKG_MANIFEST_FEATURES": "python;qt;sgct;graphviz;openmesh;nanovg;vtk;ttk;ezc3d;dicom" } }, { @@ -27,7 +27,7 @@ "IVW_TEST_UNIT_TESTS": { "type": "BOOL", "value": "OFF"}, "$comment1": "The vcpkg graphvis package file in static mode", - "VCPKG_MANIFEST_FEATURES" : "python;qt;sgct;openmesh;nanovg;vtk;ttk;ezc3d", + "VCPKG_MANIFEST_FEATURES" : "python;qt;sgct;openmesh;nanovg;vtk;ttk;ezc3d;dicom", "IVW_MODULE_GRAPHVIZ": { "type": "BOOL", "value": "OFF"}, "$comment": "Linker issues with STB being defined in both nanovgutils and sgct", From cd97046c52f89a1278a11c408a05093fece19364 Mon Sep 17 00:00:00 2001 From: Martin Falk Date: Tue, 12 May 2026 10:53:29 +0200 Subject: [PATCH 06/16] DICOM: linux fix --- medvis/dicom/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/medvis/dicom/CMakeLists.txt b/medvis/dicom/CMakeLists.txt index baa64f01d..0d44a13d1 100644 --- a/medvis/dicom/CMakeLists.txt +++ b/medvis/dicom/CMakeLists.txt @@ -31,7 +31,7 @@ ivw_group("Source Files" ${SOURCE_FILES}) ivw_create_module(${SOURCE_FILES} ${HEADER_FILES}) find_package(TIFF REQUIRED) -find_package(gdcm CONFIG REQUIRED) +find_package(GDCM CONFIG REQUIRED) target_link_libraries(inviwo-module-dicom PUBLIC @@ -48,8 +48,8 @@ target_link_libraries(inviwo-module-dicom PRIVATE TIFF::TIFF ) -target_include_directories(inviwo-module-dicom PUBLIC gdcm) -ivw_vcpkg_install(gdcm MODULE DICOM) +target_include_directories(inviwo-module-dicom PUBLIC GDCM) +ivw_vcpkg_install(GDCM MODULE DICOM) #-------------------------------------------------------------------- ivw_make_package(InviwoDICOMModule inviwo-module-dicom) From a86203c13785b287facfaca32f17c00670ae28c6 Mon Sep 17 00:00:00 2001 From: Martin Falk Date: Fri, 8 May 2026 13:35:23 +0200 Subject: [PATCH 07/16] ComputeShaderExamples: remove old logging macro --- .../src/processors/computeshaderminmax.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/misc/computeshaderexamples/src/processors/computeshaderminmax.cpp b/misc/computeshaderexamples/src/processors/computeshaderminmax.cpp index a2e8b177a..b200934ad 100644 --- a/misc/computeshaderexamples/src/processors/computeshaderminmax.cpp +++ b/misc/computeshaderexamples/src/processors/computeshaderminmax.cpp @@ -242,12 +242,10 @@ void ComputeShaderMinMax::process() { const auto loglevel = diffDetected ? inviwo::LogLevel::Warn : inviwo::LogLevel::Info; if (!logErrorOnly_ || diffDetected) { - LogSpecial(inviwo::LogCentral::getPtr(), loglevel, - fmt::format("{} min/max: {:.8} / {:.8}", name, minTest.x, maxTest.x)); - LogSpecial(inviwo::LogCentral::getPtr(), loglevel, - fmt::format("ref min/max: {:.8} / {:.8}", refMin.x, refMax.x)); + log::message(loglevel, "{} min/max: {:.8} / {:.8}", name, minTest.x, maxTest.x); + log::message(loglevel, "ref min/max: {:.8} / {:.8}", refMin.x, refMax.x); if (diffDetected) { - LogInfo(fmt::format("delta min/max: {:.8} / {:.8}", deltaMin, deltaMax)); + log::info("delta min/max: {:.8} / {:.8}", deltaMin, deltaMax); } } }; From a1958a0df76e484dd24a18add8066fc40a7de36a Mon Sep 17 00:00:00 2001 From: Martin Falk Date: Tue, 12 May 2026 13:32:15 +0200 Subject: [PATCH 08/16] VTK,VectorVis,TensorVis: core changes - getIdentifier now returns a string_view not a const string& --- misc/vtk/src/processors/volumetovtk.cpp | 3 ++- .../datastructures/invariantspace.h | 4 +-- .../processors/integrallinestodataframe.h | 10 +++---- .../processors/integrallinestodataframe.cpp | 26 +++++++++---------- 4 files changed, 22 insertions(+), 21 deletions(-) diff --git a/misc/vtk/src/processors/volumetovtk.cpp b/misc/vtk/src/processors/volumetovtk.cpp index 28ce8ef5f..34006b692 100644 --- a/misc/vtk/src/processors/volumetovtk.cpp +++ b/misc/vtk/src/processors/volumetovtk.cpp @@ -212,7 +212,8 @@ void VolumeToVTK::process() { auto scalars = vtkSmartPointer( vtkDataArray::CreateDataArray(vtkType(dataFormat->getId()))); scalars->SetNumberOfComponents(static_cast(dataFormat->getComponents())); - scalars->SetName(outport->getProcessor()->getIdentifier().c_str()); + const std::string identifier{outport->getProcessor()->getIdentifier()}; + scalars->SetName(identifier.c_str()); scalars->SetNumberOfTuples(glm::compMul(dim)); void* dstData = scalars->GetVoidPointer(0); diff --git a/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/invariantspace.h b/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/invariantspace.h index 1d4ab0558..c3e854cb7 100644 --- a/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/invariantspace.h +++ b/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/invariantspace.h @@ -63,8 +63,8 @@ struct IVW_MODULE_TENSORVISBASE_API InvariantSpace { } template - void addAxis(const tensor::MetaDataType* metaData, const std::string& name = "") { - identifiers_.push_back(name.empty() ? metaData->getDisplayName() : name); + void addAxis(const tensor::MetaDataType* metaData, std::string_view name = "") { + identifiers_.push_back(name.empty() ? metaData->getDisplayName() : std::string{name}); metaDataTypes_.push_back(metaData->type_); minmax_.push_back({{metaData->getMinMax().first, metaData->getMinMax().second}}); diff --git a/vectorvis/integrallinefiltering/include/inviwo/integrallinefiltering/processors/integrallinestodataframe.h b/vectorvis/integrallinefiltering/include/inviwo/integrallinefiltering/processors/integrallinestodataframe.h index d58cfbcad..833b19e1f 100644 --- a/vectorvis/integrallinefiltering/include/inviwo/integrallinefiltering/processors/integrallinestodataframe.h +++ b/vectorvis/integrallinefiltering/include/inviwo/integrallinefiltering/processors/integrallinestodataframe.h @@ -111,17 +111,17 @@ class IVW_MODULE_INTEGRALLINEFILTERING_API IntegralLinesToDataFrame : public Pro template void createFunction(std::vector& funcs, DataFrame& dataFrame, - std::vector percentiles, std::string name, C toFloat) { + std::vector percentiles, std::string_view name, C toFloat) { std::vector* avg = nullptr; std::vector* sds = nullptr; if (avg_.get()) { - avg = &dataFrame.addColumn(name + " μ") + avg = &dataFrame.addColumn(fmt::format("{} μ", name)) ->getTypedBuffer() ->getEditableRAMRepresentation() ->getDataContainer(); } if (sd_.get()) { - sds = &dataFrame.addColumn(name + " σ") + sds = &dataFrame.addColumn(fmt::format("{} σ", name)) ->getTypedBuffer() ->getEditableRAMRepresentation() ->getDataContainer(); @@ -129,13 +129,13 @@ class IVW_MODULE_INTEGRALLINEFILTERING_API IntegralLinesToDataFrame : public Pro std::vector*> percentilesColumns; for (auto p : percentiles) { percentilesColumns.push_back( - &dataFrame.addColumn(name + " (p:" + std::to_string(p) + ")") + &dataFrame.addColumn(fmt::format("{} (p:{})", name, p)) ->getTypedBuffer() ->getEditableRAMRepresentation() ->getDataContainer()); } funcs.push_back([&](const IntegralLine& line) { - auto& vec = line.getMetaData(Property::getDisplayName()); + auto& vec = line.getMetaData(std::string{Property::getDisplayName()}); std::vector values; std::transform(vec.begin() + 1, vec.end() - 1, std::back_inserter(values), [&](const auto& v) { diff --git a/vectorvis/integrallinefiltering/src/processors/integrallinestodataframe.cpp b/vectorvis/integrallinefiltering/src/processors/integrallinestodataframe.cpp index efcbb11d4..31bcab949 100644 --- a/vectorvis/integrallinefiltering/src/processors/integrallinestodataframe.cpp +++ b/vectorvis/integrallinefiltering/src/processors/integrallinestodataframe.cpp @@ -136,7 +136,7 @@ void IntegralLinesToDataFrame::MetaDataSettings::initFunctions( df = &dataFrame](auto ramT) { using T = typename util::PrecisionValueType; if (useMagnitude_.get()) { - createFunction(funcs, *df, percentiles, name + "", [c](const T& v) -> float { + createFunction(funcs, *df, percentiles, name, [c](const T& v) -> float { float l = 0; for (size_t i = 0; i < c; i++) { l += static_cast(util::glmcomp(v, i) * util::glmcomp(v, i)); @@ -145,24 +145,24 @@ void IntegralLinesToDataFrame::MetaDataSettings::initFunctions( }); } if (x_.get()) { - createFunction(funcs, *df, percentiles, name + "-x", [](const T& v) -> float { - return static_cast(util::glmcomp(v, 0)); - }); + createFunction( + funcs, *df, percentiles, fmt::format("{}-x", name), + [](const T& v) -> float { return static_cast(util::glmcomp(v, 0)); }); } if (y_.get()) { - createFunction(funcs, *df, percentiles, name + "-y", [](const T& v) -> float { - return static_cast(util::glmcomp(v, 1)); - }); + createFunction( + funcs, *df, percentiles, fmt::format("{}-y", name), + [](const T& v) -> float { return static_cast(util::glmcomp(v, 1)); }); } if (z_.get()) { - createFunction(funcs, *df, percentiles, name + "-w", [](const T& v) -> float { - return static_cast(util::glmcomp(v, 2)); - }); + createFunction( + funcs, *df, percentiles, fmt::format("{}-w", name), + [](const T& v) -> float { return static_cast(util::glmcomp(v, 2)); }); } if (w_.get()) { - createFunction(funcs, *df, percentiles, name + "-z", [](const T& v) -> float { - return static_cast(util::glmcomp(v, 3)); - }); + createFunction( + funcs, *df, percentiles, fmt::format("{}-z", name), + [](const T& v) -> float { return static_cast(util::glmcomp(v, 3)); }); } }); } From 11bb58e33f99f23c4af9d17e8688a2e5546a610e Mon Sep 17 00:00:00 2001 From: Martin Falk Date: Wed, 13 May 2026 12:59:53 +0200 Subject: [PATCH 09/16] GraphViz: core changes - getIdentifier now returns a string_view not a const string& --- misc/graphviz/src/graphvizsettings.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/misc/graphviz/src/graphvizsettings.cpp b/misc/graphviz/src/graphvizsettings.cpp index 4ae773baf..4d5e2ebe1 100644 --- a/misc/graphviz/src/graphvizsettings.cpp +++ b/misc/graphviz/src/graphvizsettings.cpp @@ -158,7 +158,8 @@ void calculateLayout(StrBuffer& buff, ProcessorNetwork* net, const Func& func) { ivec2 center{0}; int count = 0; net->forEachProcessor([&](Processor* p) { - if (auto* n = agnode(G, const_cast(p->getIdentifier().c_str()), 0)) { + const std::string identifier{p->getIdentifier()}; + if (auto* n = agnode(G, const_cast(identifier.c_str()), 0)) { const auto& coord = ND_coord(n); center += ivec2{coord.x, -coord.y}; ++count; @@ -173,7 +174,8 @@ void calculateLayout(StrBuffer& buff, ProcessorNetwork* net, const Func& func) { const dvec2 offset = oldCenter - newCenter; net->forEachProcessor([&](Processor* p) { - if (auto* n = agnode(G, const_cast(p->getIdentifier().c_str()), 0)) { + const std::string identifier{p->getIdentifier()}; + if (auto* n = agnode(G, const_cast(identifier.c_str()), 0)) { const auto& coord = ND_coord(n); func(p, dvec2{coord.x, -coord.y} + offset); } From 023c76f639497ef414629f798b1ca0850c571595 Mon Sep 17 00:00:00 2001 From: Peter Steneteg Date: Tue, 16 Jun 2026 07:57:33 +0200 Subject: [PATCH 10/16] GHA: clang-tidy fix Add 'dicom' feature to VCPKG manifest --- .github/workflows/modules.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/modules.yml b/.github/workflows/modules.yml index c50798507..ef099d4d2 100644 --- a/.github/workflows/modules.yml +++ b/.github/workflows/modules.yml @@ -510,7 +510,7 @@ jobs: -DIVW_MODULE_WEBBROWSER=ON -DIVW_MODULE_SGCT=ON -DIVW_APP_INVIWO_DOME=ON - -DVCPKG_MANIFEST_FEATURES="python;qt;sgct;graphviz;openmesh;nanovg;vtk;ttk;ezc3d" + -DVCPKG_MANIFEST_FEATURES="python;qt;sgct;graphviz;openmesh;nanovg;vtk;ttk;ezc3d;dicom" - name: "Run clang-tidy" uses: cpp-linter/cpp-linter-action@v2.16.7 From a193d9cdaa5d10cd8b46099488ae1c6af26b9437 Mon Sep 17 00:00:00 2001 From: Martin Falk Date: Wed, 17 Jun 2026 09:18:36 +0200 Subject: [PATCH 11/16] Testing: updated reference images --- .../regression/camera_trajectory/Canvas.png | Bin 92162 -> 94773 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/misc/pythontools/tests/regression/camera_trajectory/Canvas.png b/misc/pythontools/tests/regression/camera_trajectory/Canvas.png index ebd2f7860423b53e6f67ec43a762c5ce3c76da47..f94ed7a8209effb012e8bc905fa6ada9be76c7ef 100644 GIT binary patch literal 94773 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 nF+IepbSD@09?u1f*V1Yv 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 Date: Thu, 18 Jun 2026 13:34:14 +0200 Subject: [PATCH 12/16] Misc: disable PythonTools module by default --- misc/pythontools/depends.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/pythontools/depends.cmake b/misc/pythontools/depends.cmake index 343c242bb..2e137fc52 100644 --- a/misc/pythontools/depends.cmake +++ b/misc/pythontools/depends.cmake @@ -10,4 +10,4 @@ set(dependencies # By calling set(EnableByDefault ON) the module will be set to enabled # when initially being added to CMake. Default OFF. -set(EnableByDefault ON) \ No newline at end of file +set(EnableByDefault OFF) \ No newline at end of file From 3101e2aba39107b92cee62b3c903168620b1b79c Mon Sep 17 00:00:00 2001 From: Martin Falk Date: Tue, 23 Jun 2026 09:43:04 +0200 Subject: [PATCH 13/16] GHA: update ubuntu runners to 26-04 --- .github/workflows/modules.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/modules.yml b/.github/workflows/modules.yml index ef099d4d2..2bdcacfe8 100644 --- a/.github/workflows/modules.yml +++ b/.github/workflows/modules.yml @@ -63,7 +63,7 @@ jobs: artifact: 'build/inviwo-v*.dmg' - system: linux - os: 'ubuntu-24.04' + os: 'ubuntu-26.04' targets: 'all' installer: 'inviwo-installer-linux' artifact: 'build/inviwo-v*.AppImage' @@ -446,7 +446,7 @@ jobs: pull-requests: write env: LLVM_VERSION: 19 - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 timeout-minutes: 320 steps: @@ -627,7 +627,7 @@ jobs: name: "Test Installer Linux" needs: build - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 steps: - name: "Download artifact" uses: actions/download-artifact@v7 @@ -668,7 +668,7 @@ jobs: create-changelog: name: "Create Changelog" - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 steps: - name: "Generate Changelog" id: changelog @@ -696,7 +696,7 @@ jobs: if: github.ref == 'refs/heads/master' needs: [build, test-installer-windows, test-installer-macos, test-installer-linux, regression] - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 steps: - name: "Clone Inviwo" uses: actions/checkout@v6 @@ -739,7 +739,7 @@ jobs: name: "Update latest release" if: github.ref == 'refs/heads/master' needs: [build, test-installer-windows, test-installer-macos, test-installer-linux, regression, create-changelog] - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 steps: - name: "Download installer" From 679743d6bccfe35db500316a7e48259d62d7b20f Mon Sep 17 00:00:00 2001 From: Martin Falk Date: Wed, 17 Jun 2026 14:18:09 +0200 Subject: [PATCH 14/16] GraphViz: warn fix --- misc/graphviz/src/processors/layoutmergetree.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/misc/graphviz/src/processors/layoutmergetree.cpp b/misc/graphviz/src/processors/layoutmergetree.cpp index caf306595..b3a33e68b 100644 --- a/misc/graphviz/src/processors/layoutmergetree.cpp +++ b/misc/graphviz/src/processors/layoutmergetree.cpp @@ -128,12 +128,12 @@ void LayoutMergeTree::process() { mesh->reserveSizeInVertexBuffer(downsTyped->getSize()); pm_.resize(downsTyped->getSize()); - size_t startPickId = pm_.getPickingId(0); + const auto startPickId = static_cast(pm_.getPickingId(0)); const auto colorRange = colors->getRange(); std::unordered_map nodeToVertex; - for (auto&& [index, node] : util::enumerate(*downsTyped)) { + for (auto&& [index, node] : util::enumerate(*downsTyped)) { Agnode_t* n = agnode(G, const_cast(buff.replace("{}", node).c_str()), 0); if (n != nullptr) { auto& coord = ND_coord(n); From b3d0802662a53560939d52162d4506fa5fa8a4e4 Mon Sep 17 00:00:00 2001 From: Martin Falk Date: Thu, 18 Jun 2026 13:06:30 +0200 Subject: [PATCH 15/16] Dicom: out-of-bounds fix --- medvis/dicom/src/datastructures/dicomdirtypes.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/medvis/dicom/src/datastructures/dicomdirtypes.cpp b/medvis/dicom/src/datastructures/dicomdirtypes.cpp index 94841318c..7399e090e 100644 --- a/medvis/dicom/src/datastructures/dicomdirtypes.cpp +++ b/medvis/dicom/src/datastructures/dicomdirtypes.cpp @@ -83,7 +83,7 @@ void Image::updateInfo(const gdcm::DataSet& dataset) { // Pixel Spacing https://dicom.innolitics.com/ciods/ct-image/image-plane/00280030 gdcm::Attribute<0x0028, 0x0030> pixelSpacingAttr{{1.0, 1.0}}; pixelSpacingAttr.Set(dataset); - pixelSpacing = gdcmutil::toGlmVec<3>(pixelSpacingAttr.GetValues()); + pixelSpacing = dvec3{gdcmutil::toGlmVec<2>(pixelSpacingAttr.GetValues()), 0.0}; updateZpos(); } From 2eac1babb01418d9e18177e096386bd79f05d8dd Mon Sep 17 00:00:00 2001 From: Martin Falk Date: Mon, 29 Jun 2026 10:01:55 +0200 Subject: [PATCH 16/16] GHA: disable dicom module *test* --- .github/presets/common.json | 2 +- .github/presets/linux.json | 2 +- .github/presets/macos.json | 2 +- .github/presets/windows.json | 4 ++-- .github/workflows/modules.yml | 2 +- medvis/dicom/depends.cmake | 1 - 6 files changed, 6 insertions(+), 7 deletions(-) diff --git a/.github/presets/common.json b/.github/presets/common.json index eef62c9d1..aa96e6c5a 100644 --- a/.github/presets/common.json +++ b/.github/presets/common.json @@ -6,7 +6,7 @@ "name": "common", "displayName": "Modules GHA", "cacheVariables": { - "VCPKG_MANIFEST_FEATURES" : "python;qt;graphviz;openmesh;nanovg;vtk;ttk;ezc3d;dicom", + "VCPKG_MANIFEST_FEATURES" : "python;qt;graphviz;openmesh;nanovg;vtk;ttk;ezc3d", "VCPKG_INSTALL_OPTIONS": "--clean-after-build;--x-abi-tools-use-exact-versions", "CMAKE_CXX_SCAN_FOR_MODULES": "OFF", diff --git a/.github/presets/linux.json b/.github/presets/linux.json index 4f473ce96..83abd6826 100644 --- a/.github/presets/linux.json +++ b/.github/presets/linux.json @@ -30,7 +30,7 @@ "IVW_TEST_UNIT_TESTS": { "type": "BOOL", "value": "OFF"}, "$comment": "The vcpkg graphvis package file in static mode", - "VCPKG_MANIFEST_FEATURES" : "python;qt;openmesh;nanovg;vtk;ttk;ezc3d;dicom", + "VCPKG_MANIFEST_FEATURES" : "python;qt;openmesh;nanovg;vtk;ttk;ezc3d", "IVW_MODULE_GRAPHVIZ": { "type": "BOOL", "value": "OFF"}, "IVW_MODULE_PYTHONTOOLS": { "type": "BOOL", "value": "OFF"} } diff --git a/.github/presets/macos.json b/.github/presets/macos.json index de95d5867..77ef43727 100644 --- a/.github/presets/macos.json +++ b/.github/presets/macos.json @@ -24,7 +24,7 @@ "IVW_TEST_UNIT_TESTS": { "type": "BOOL", "value": "OFF"}, "$comment1": "The vcpkg graphvis package file in static mode", - "VCPKG_MANIFEST_FEATURES" : "python;qt;openmesh;nanovg;vtk;ttk;ezc3d;dicom", + "VCPKG_MANIFEST_FEATURES" : "python;qt;openmesh;nanovg;vtk;ttk;ezc3d", "IVW_MODULE_GRAPHVIZ": { "type": "BOOL", "value": "OFF"}, "$comment2": " Assimp and nanovg both implement stb_image in their static libs causing linker issues", diff --git a/.github/presets/windows.json b/.github/presets/windows.json index ea5fc5efe..fc2145f75 100644 --- a/.github/presets/windows.json +++ b/.github/presets/windows.json @@ -12,7 +12,7 @@ "IVW_CFG_USE_CCACHE_MSVC": "ON", "IVW_MODULE_SGCT": "ON", "IVW_APP_INVIWO_DOME": "ON", - "VCPKG_MANIFEST_FEATURES": "python;qt;sgct;graphviz;openmesh;nanovg;vtk;ttk;ezc3d;dicom" + "VCPKG_MANIFEST_FEATURES": "python;qt;sgct;graphviz;openmesh;nanovg;vtk;ttk;ezc3d" } }, { @@ -27,7 +27,7 @@ "IVW_TEST_UNIT_TESTS": { "type": "BOOL", "value": "OFF"}, "$comment1": "The vcpkg graphvis package file in static mode", - "VCPKG_MANIFEST_FEATURES" : "python;qt;sgct;openmesh;nanovg;vtk;ttk;ezc3d;dicom", + "VCPKG_MANIFEST_FEATURES" : "python;qt;sgct;openmesh;nanovg;vtk;ttk;ezc3d", "IVW_MODULE_GRAPHVIZ": { "type": "BOOL", "value": "OFF"}, "$comment": "Linker issues with STB being defined in both nanovgutils and sgct", diff --git a/.github/workflows/modules.yml b/.github/workflows/modules.yml index 2bdcacfe8..79e426d95 100644 --- a/.github/workflows/modules.yml +++ b/.github/workflows/modules.yml @@ -510,7 +510,7 @@ jobs: -DIVW_MODULE_WEBBROWSER=ON -DIVW_MODULE_SGCT=ON -DIVW_APP_INVIWO_DOME=ON - -DVCPKG_MANIFEST_FEATURES="python;qt;sgct;graphviz;openmesh;nanovg;vtk;ttk;ezc3d;dicom" + -DVCPKG_MANIFEST_FEATURES="python;qt;sgct;graphviz;openmesh;nanovg;vtk;ttk;ezc3d" - name: "Run clang-tidy" uses: cpp-linter/cpp-linter-action@v2.16.7 diff --git a/medvis/dicom/depends.cmake b/medvis/dicom/depends.cmake index edc8da3d2..08bf20c19 100644 --- a/medvis/dicom/depends.cmake +++ b/medvis/dicom/depends.cmake @@ -2,4 +2,3 @@ # Dependencies for current module set(dependencies ) -set(EnableByDefault ON) \ No newline at end of file