Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package tenmon for openSUSE:Factory checked in at 2026-10-28 17:48:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/tenmon (Old) and /work/SRC/openSUSE:Factory/.tenmon.new.2252680 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tenmon" Wed Oct 28 17:48:55 2026 rev:16 rq:1393369 version:20261023 Changes: -------- --- /work/SRC/openSUSE:Factory/tenmon/tenmon.changes 2026-10-05 16:18:41.829450996 +0200 +++ /work/SRC/openSUSE:Factory/.tenmon.new.2252680/tenmon.changes 2026-10-28 17:49:02.775336104 +0100 @@ -1,0 +2,13 @@ +Wed Oct 28 08:04:44 UTC 2026 - Paolo Stivanin <[email protected]> + +- Require libXISF >= 0.2.14+git1.fa35ae2 (XISFModify::removeProperty + is needed since 20261023) + +------------------------------------------------------------------- +Wed Oct 28 07:32:44 UTC 2026 - Paolo Stivanin <[email protected]> + +- Update to 20261023: + * LibXISF fix to support files from upcoming PixInsight + * Support for XISF formalized AstrometricSolution + +------------------------------------------------------------------- Old: ---- tenmon-20260913.tar.gz New: ---- tenmon-20261023.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ tenmon.spec ++++++ --- /var/tmp/diff_new_pack.4vIpcW/_old 2026-10-28 17:49:03.492366101 +0100 +++ /var/tmp/diff_new_pack.4vIpcW/_new 2026-10-28 17:49:03.493366142 +0100 @@ -21,7 +21,7 @@ %endif Name: tenmon -Version: 20260913 +Version: 20261023 Release: 0 Summary: FITS and XISF image viewer, converter and indexer License: GPL-3.0-or-later @@ -32,7 +32,7 @@ # PATCH-FIX-UPSTREAM Patch1: fix-libxisf-include.patch BuildRequires: gcc%{?force_gcc_version}-c++ >= 12 -BuildRequires: libXISF-devel >= 0.2.13+git5.7b70b6a +BuildRequires: libXISF-devel >= 0.2.14+git1.fa35ae2 BuildRequires: libzstd-devel BuildRequires: pkgconfig BuildRequires: qt6-base-devel >= 6.2.0 ++++++ tenmon-20260913.tar.gz -> tenmon-20261023.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tenmon/space.nouspiro.tenmon.metainfo.xml new/tenmon/space.nouspiro.tenmon.metainfo.xml --- old/tenmon/space.nouspiro.tenmon.metainfo.xml 2026-09-13 15:55:12.000000000 +0200 +++ new/tenmon/space.nouspiro.tenmon.metainfo.xml 2026-10-23 20:01:12.000000000 +0200 @@ -60,6 +60,14 @@ </screenshots> <content_rating type="oars-1.1"/> <releases> + <release version="20261023" date="2026-10-23"> + <description> + <ul> + <li>LibXISF fix to support files from upcoming PixInsight</li> + <li>Support for XISF formalized AstrometricSolution</li> + </ul> + </description> + </release> <release version="20260913" date="2026-09-13"> <description> <ul> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tenmon/src/loadimage.cpp new/tenmon/src/loadimage.cpp --- old/tenmon/src/loadimage.cpp 2026-09-13 15:55:12.000000000 +0200 +++ new/tenmon/src/loadimage.cpp 2026-10-23 20:01:12.000000000 +0200 @@ -248,41 +248,44 @@ for(auto prop : imageproperties) { info.fitsHeader.append(prop); - if(prop.id == "PCL:AstrometricSolution:ReferenceCelestialCoordinates" && prop.value.type() == LibXISF::Variant::Type::F64Vector) + if((prop.id == "PCL:AstrometricSolution:ReferenceCelestialCoordinates" || prop.id == "AstrometricSolution:ReferenceCelestialCoordinates") + && prop.value.type() == LibXISF::Variant::Type::F64Vector) { auto val = prop.value.value<LibXISF::F64Vector>(); if(val.size() >= 2) { - xisfWCS.append({"CRVAL1", val[0], "value from PCL:AstrometricSolution"}); - xisfWCS.append({"CRVAL2", val[1], "value from PCL:AstrometricSolution"}); + xisfWCS.append({"CRVAL1", val[0], "value from AstrometricSolution"}); + xisfWCS.append({"CRVAL2", val[1], "value from AstrometricSolution"}); } } - else if(prop.id == "PCL:AstrometricSolution:ReferenceImageCoordinates" && prop.value.type() == LibXISF::Variant::Type::F64Vector) + else if((prop.id == "PCL:AstrometricSolution:ReferenceImageCoordinates" || prop.id == "AstrometricSolution:ReferenceImageCoordinates") + && prop.value.type() == LibXISF::Variant::Type::F64Vector) { auto val = prop.value.value<LibXISF::F64Vector>(); if(val.size() >= 2) { - xisfWCS.append({"CRPIX1", val[0], "value from PCL:AstrometricSolution"}); - xisfWCS.append({"CRPIX2", val[1], "value from PCL:AstrometricSolution"}); + xisfWCS.append({"CRPIX1", val[0], "value from AstrometricSolution"}); + xisfWCS.append({"CRPIX2", val[1], "value from AstrometricSolution"}); } } - else if(prop.id == "PCL:AstrometricSolution:LinearTransformationMatrix" && prop.value.type() == LibXISF::Variant::Type::F64Matrix) + else if((prop.id == "PCL:AstrometricSolution:LinearTransformationMatrix" || prop.id == "AstrometricSolution:LinearTransformationMatrix") + && prop.value.type() == LibXISF::Variant::Type::F64Matrix) { auto val = prop.value.value<LibXISF::F64Matrix>(); if(val.cols() >= 2 && val.rows() >= 2) { - xisfWCS.append({"CD1_1", val(0, 0), "value from PCL:AstrometricSolution"}); - xisfWCS.append({"CD1_2", val(0, 1), "value from PCL:AstrometricSolution"}); - xisfWCS.append({"CD2_1", val(1, 0), "value from PCL:AstrometricSolution"}); - xisfWCS.append({"CD2_2", val(1, 1), "value from PCL:AstrometricSolution"}); + xisfWCS.append({"CD1_1", val(0, 0), "value from AstrometricSolution"}); + xisfWCS.append({"CD1_2", val(0, 1), "value from AstrometricSolution"}); + xisfWCS.append({"CD2_1", val(1, 0), "value from AstrometricSolution"}); + xisfWCS.append({"CD2_2", val(1, 1), "value from AstrometricSolution"}); } } - else if(prop.id == "PCL:AstrometricSolution:ProjectionSystem") + else if(prop.id == "PCL:AstrometricSolution:ProjectionSystem" || prop.id == "AstrometricSolution:ProjectionSystem") { if(prop.value.toString() == "Gnomonic") { - xisfWCS.append({"CTYPE1", "RA---TAN", "value from PCL:AstrometricSolution"}); - xisfWCS.append({"CTYPE", "DEC--TAN", "value from PCL:AstrometricSolution"}); + xisfWCS.append({"CTYPE1", "RA---TAN", "value from AstrometricSolution"}); + xisfWCS.append({"CTYPE2", "DEC--TAN", "value from AstrometricSolution"}); } } } @@ -292,9 +295,13 @@ info.info.append({QObject::tr("Width"), QString::number(xisfImage.width())}); info.info.append({QObject::tr("Height"), QString::number(xisfImage.height())}); - auto wcs = std::make_shared<WCSDataT>(xisfImage.width(), xisfImage.height(), info.fitsHeader); - if(!wcs->valid() && xisfWCS.size())wcs = std::make_shared<WCSDataT>(xisfImage.width(), xisfImage.height(), xisfWCS); - if(wcs->valid())info.wcs = wcs; + std::shared_ptr<WCSDataT> wcs; + if(xisfWCS.size())wcs = std::make_shared<WCSDataT>(xisfImage.width(), xisfImage.height(), xisfWCS); + + if(!wcs || !wcs->valid()) + wcs = std::make_shared<WCSDataT>(xisfImage.width(), xisfImage.height(), info.fitsHeader); + + if(wcs && wcs->valid())info.wcs = wcs; RawImage::DataType type; switch(xisfImage.sampleFormat()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tenmon/src/scriptengine.cpp new/tenmon/src/scriptengine.cpp --- old/tenmon/src/scriptengine.cpp 2026-09-13 15:55:12.000000000 +0200 +++ new/tenmon/src/scriptengine.cpp 2026-10-23 20:01:12.000000000 +0200 @@ -819,6 +819,9 @@ for(auto &record : modify->_add) modifyXISF.addFITSKeyword(modify->_imageIdx, {record.key.toStdString(), record.value.toString().toStdString(), record.comment.toStdString()}); + for(auto &remove : modify->_propertyRemove) + modifyXISF.removeProperty(modify->_imageIdx, remove.toStdString()); + for(auto &property : modify->_property) modifyXISF.updateProperty(modify->_imageIdx, property); @@ -1004,6 +1007,11 @@ _property.append(LibXISF::Property(id.toStdString(), value)); } +void FITSRecordModify::removeProperty(const QString &id) +{ + _propertyRemove.append(id); +} + uint32_t FITSRecordModify::imageIndex() const { return _imageIdx; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tenmon/src/scriptengine.h new/tenmon/src/scriptengine.h --- old/tenmon/src/scriptengine.h 2026-09-13 15:55:12.000000000 +0200 +++ new/tenmon/src/scriptengine.h 2026-10-23 20:01:12.000000000 +0200 @@ -145,6 +145,7 @@ QVector<FITSRecord> _update; QVector<FITSRecord> _add; QVector<LibXISF::Property> _property; + QVector<QString> _propertyRemove; uint32_t _imageIdx = 0; friend class File; @@ -155,6 +156,7 @@ Q_INVOKABLE void addKeyword(const QString &key, const QVariant &value, const QString &comment = QString()); Q_PROPERTY(uint32_t imageIndex READ imageIndex WRITE setImageIndex); void updateProperty(const QString &id, const LibXISF::Variant &value); + void removeProperty(const QString &id); uint32_t imageIndex() const; void setImageIndex(uint32_t idx); }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tenmon/src/solver.cpp new/tenmon/src/solver.cpp --- old/tenmon/src/solver.cpp 2026-09-13 15:55:12.000000000 +0200 +++ new/tenmon/src/solver.cpp 2026-10-23 20:01:12.000000000 +0200 @@ -193,11 +193,21 @@ matrix(1, 0) = std::sin(rotationRad) * cdeltx; matrix(1, 1) = std::cos(rotationRad) * cdelty; - modify.updateProperty("PCL:AstrometricSolution:ReferenceCelestialCoordinates", LibXISF::F64Vector({solution.ra, solution.dec})); - modify.updateProperty("PCL:AstrometricSolution:ReferenceImageCoordinates", LibXISF::F64Vector({_stats.width / 2.0, _stats.height / 2.0})); - modify.updateProperty("PCL:AstrometricSolution:LinearTransformationMatrix", LibXISF::F64Matrix(matrix)); - modify.updateProperty("PCL:AstrometricSolution:ProjectionSystem", LibXISF::String("Gnomonic")); - modify.updateProperty("PCL:AstrometricSolution:ReferenceNativeCoordinates", LibXISF::F64Vector({0, 90})); + modify.updateProperty("AstrometricSolution:Version", LibXISF::String("1.0")); + modify.updateProperty("AstrometricSolution:ProjectionSystem", LibXISF::String("Gnomonic")); + modify.updateProperty("AstrometricSolution:ReferenceCelestialCoordinates", LibXISF::F64Vector({solution.ra, solution.dec})); + modify.updateProperty("AstrometricSolution:ReferenceImageCoordinates", LibXISF::F64Vector({_stats.width / 2.0, _stats.height / 2.0})); + modify.updateProperty("AstrometricSolution:LinearTransformationMatrix", LibXISF::F64Matrix(matrix)); + modify.updateProperty("AstrometricSolution:ReferenceNativeCoordinates", LibXISF::F64Vector({0, 90})); + + modify.removeProperty("PCL:AstrometricSolution:Version"); + modify.removeProperty("PCL:AstrometricSolution:ProjectionSystem"); + modify.removeProperty("PCL:AstrometricSolution:ReferenceCelestialCoordinates"); + modify.removeProperty("PCL:AstrometricSolution:ReferenceImageCoordinates"); + modify.removeProperty("PCL:AstrometricSolution:LinearTransformationMatrix"); + modify.removeProperty("PCL:AstrometricSolution:ReferenceNativeCoordinates"); + modify.removeProperty("PCL:AstrometricSolution:CelestialPoleNativeCoordinates"); + modify.removeProperty("PCL:AstrometricSolution:CelestialReferenceSystem"); bool ret = file.modifyFITSRecords(&modify); if(!ret)error = tr("Failed to update file header");
