Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package qt6-lottie for openSUSE:Factory 
checked in at 2026-05-28 17:26:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/qt6-lottie (Old)
 and      /work/SRC/openSUSE:Factory/.qt6-lottie.new.1937 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "qt6-lottie"

Thu May 28 17:26:05 2026 rev:41 rq:1355424 version:6.11.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/qt6-lottie/qt6-lottie.changes    2026-03-28 
20:15:25.226547297 +0100
+++ /work/SRC/openSUSE:Factory/.qt6-lottie.new.1937/qt6-lottie.changes  
2026-05-28 17:27:21.724769318 +0200
@@ -1,0 +2,6 @@
+Thu May 14 14:55:03 UTC 2026 - Christophe Marin <[email protected]>
+
+- Update to 6.11.1
+  https://www.qt.io/blog/qt-6.11.1-released
+
+-------------------------------------------------------------------

Old:
----
  qtlottie-everywhere-src-6.11.0.tar.xz

New:
----
  qtlottie-everywhere-src-6.11.1.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ qt6-lottie.spec ++++++
--- /var/tmp/diff_new_pack.8B6lQG/_old  2026-05-28 17:27:22.864816508 +0200
+++ /var/tmp/diff_new_pack.8B6lQG/_new  2026-05-28 17:27:22.868816674 +0200
@@ -16,7 +16,7 @@
 #
 
 
-%define real_version 6.11.0
+%define real_version 6.11.1
 %define short_version 6.11
 %define short_name qtlottie
 %define tar_name qtlottie-everywhere-src
@@ -28,7 +28,7 @@
 %endif
 #
 Name:           qt6-lottie%{?pkg_suffix}
-Version:        6.11.0
+Version:        6.11.1
 Release:        0
 Summary:        QML API for rendering graphics and animation
 # LICENSE.GPL3-EXCEPT only applies to the conan recipe which is not used

++++++ qtlottie-everywhere-src-6.11.0.tar.xz -> 
qtlottie-everywhere-src-6.11.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtlottie-everywhere-src-6.11.0/.cmake.conf 
new/qtlottie-everywhere-src-6.11.1/.cmake.conf
--- old/qtlottie-everywhere-src-6.11.0/.cmake.conf      2026-03-10 
06:07:49.000000000 +0100
+++ new/qtlottie-everywhere-src-6.11.1/.cmake.conf      2026-05-08 
03:18:53.000000000 +0200
@@ -1,4 +1,4 @@
-set(QT_REPO_MODULE_VERSION "6.11.0")
+set(QT_REPO_MODULE_VERSION "6.11.1")
 set(QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT "alpha1")
 set(QT_EXTRA_INTERNAL_TARGET_DEFINES
     "QT_NO_CONTEXTLESS_CONNECT=1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtlottie-everywhere-src-6.11.0/.tag 
new/qtlottie-everywhere-src-6.11.1/.tag
--- old/qtlottie-everywhere-src-6.11.0/.tag     2026-03-10 06:07:49.000000000 
+0100
+++ new/qtlottie-everywhere-src-6.11.1/.tag     2026-05-08 03:18:53.000000000 
+0200
@@ -1 +1 @@
-cb51162b42be1134961706a32942772a8cec61cf
+a22c96958c14843a456a787e108e67bb07947142
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtlottie-everywhere-src-6.11.0/dependencies.yaml 
new/qtlottie-everywhere-src-6.11.1/dependencies.yaml
--- old/qtlottie-everywhere-src-6.11.0/dependencies.yaml        2026-03-10 
06:07:49.000000000 +0100
+++ new/qtlottie-everywhere-src-6.11.1/dependencies.yaml        2026-05-08 
03:18:53.000000000 +0200
@@ -1,7 +1,7 @@
 dependencies:
   ../qtbase:
-    ref: 8ba7ea4b77a4b8f1948760221e264917ddc9e1c8
+    ref: 59c81a3c2247b821b9b84b4eb8d939b77e07e276
     required: true
   ../qtdeclarative:
-    ref: e602a097ca314e9610b1fd3b7dbfa467a868731a
+    ref: a02bed441965ee1f18f856352c7d5ee5ba35d795
     required: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtlottie-everywhere-src-6.11.0/src/lottie/qlottiebase.cpp 
new/qtlottie-everywhere-src-6.11.1/src/lottie/qlottiebase.cpp
--- old/qtlottie-everywhere-src-6.11.0/src/lottie/qlottiebase.cpp       
2026-03-10 06:07:49.000000000 +0100
+++ new/qtlottie-everywhere-src-6.11.1/src/lottie/qlottiebase.cpp       
2026-05-08 03:18:53.000000000 +0200
@@ -246,12 +246,12 @@
         else
             retVal = source->definition().value("v"_L1).toObject();
         if (source->children().size() > 1)
-            qCWarning(lcLottieQtLottieParser) << "Effect source points"
+            qCInfo(lcLottieQtLottieParser) << "Effect source points"
                                                 "to a group that has"
                                                 "many children. The"
                                                 "first is be picked";
     } else {
-        qCWarning(lcLottieQtLottieParser) << "Failed to find specified effect" 
<< effect;
+        qCInfo(lcLottieQtLottieParser) << "Failed to find specified effect" << 
effect;
     }
 
     // Let users of the json know that it is originated from expression,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtlottie-everywhere-src-6.11.0/src/lottie/qlottiegfill.cpp 
new/qtlottie-everywhere-src-6.11.1/src/lottie/qlottiegfill.cpp
--- old/qtlottie-everywhere-src-6.11.0/src/lottie/qlottiegfill.cpp      
2026-03-10 06:07:49.000000000 +0100
+++ new/qtlottie-everywhere-src-6.11.1/src/lottie/qlottiegfill.cpp      
2026-05-08 03:18:53.000000000 +0200
@@ -111,6 +111,7 @@
         return -1;
 
     if (!isAnimated) {
+        QMap<qreal, QVector4D> colorStops;
         QJsonArray colorArr = stops.value("k"_L1).toArray();
         for (int i = 0; i < (elementCount * 4); i += 4) {
             // p denotes the color stop percentage
@@ -118,59 +119,62 @@
             colorVec[0] = colorArr.at(i + 1).toVariant().toFloat();
             colorVec[1] = colorArr.at(i + 2).toVariant().toFloat();
             colorVec[2] = colorArr.at(i + 3).toVariant().toFloat();
-            // Set gradient stop position into w of the vector
             colorVec[3] = 1.0f;
             QLottieProperty4D<QVector4D> colorPos;
             colorPos.setValue(colorVec);
+            // The stop position is found in the first element of the vector
             qreal pos = colorArr.at(i + 0).toVariant().toFloat();
             m_colors[pos] = colorPos;
+            colorStops.insert(pos, colorVec);
         }
-        QList<qreal> keys = m_colors.keys();
-        std::sort(keys.begin(), keys.end());
-        int keyIndex = 0;
-        for (int i = (elementCount * 4); i < colorArr.size(); i+= 2) {
-            qreal pos = colorArr.at(i).toVariant().toFloat();
-            qreal opacity = colorArr.at(i + 1).toVariant().toFloat();
-            if (m_colors.contains(pos)) {
-                QLottieProperty4D<QVector4D> colorVec = m_colors.value(pos);
-                QVector4D color = colorVec.value();
-                color[3] = opacity;
-                colorVec.setValue(color);
-                m_colors[pos] = colorVec;
-                keyIndex++;
-            } else {
-                qreal pos0;
-                qreal pos1;
-                if (keyIndex == 0) {
-                    pos0 = keys.value(0);
-                    pos1 = keys.value(1);
+
+        if (colorArr.size() > (elementCount * 4)) {
+            // The gradient has opacity stops; handle them
+            QMap<qreal, qreal> opacityStops;
+            for (int i = (elementCount * 4); i < colorArr.size(); i += 2) {
+                qreal pos = colorArr.at(i).toVariant().toFloat();
+                qreal opacity = colorArr.at(i + 1).toVariant().toFloat();
+                opacityStops.insert(pos, opacity);
+            }
+            QMap<qreal, qreal> uniqueOpacityStops(opacityStops);
+
+            // First: add opacity to all existing color stops
+            for (auto [pos, color] : colorStops.asKeyValueRange()) {
+                qreal opacity = 1.0;
+                if (pos <= opacityStops.firstKey() || opacityStops.size() == 
1) {
+                    opacity = opacityStops.first();
+                } else if (pos >= opacityStops.lastKey()) {
+                    opacity = opacityStops.last();
                 } else {
-                    pos0 = keys.value(keyIndex-1);
-                    pos1 = keys.value(keyIndex);
+                    auto it2 = opacityStops.lowerBound(pos);
+                    Q_ASSERT(it2 != opacityStops.cbegin());
+                    auto it1(it2);
+                    it1--;
+                    qreal ratio = (pos - it1.key()) / (it2.key() - it1.key());
+                    opacity = it1.value() + ratio * (it2.value() - 
it1.value());
                 }
+                color[3] = opacity;
+                m_colors[pos].setValue(color);
+                uniqueOpacityStops.remove(pos); // will remove if position 
present, otherwise noop
+            }
 
-                if (pos1 > pos) {
-                    QVector4D col0 = m_colors[pos0].value();
-                    QVector4D col1 = m_colors[pos1].value();
-                    qreal ratio = (pos - pos0) / (pos1 - pos0);
-                    qreal r = col0[0] + ratio * (col1[0] - col0[0]);
-                    qreal g = col0[1] + ratio * (col1[1] - col0[1]);
-                    qreal b = col0[2] + ratio * (col1[2] - col0[2]);
-                    QVector4D color = QVector4D(r, g, b, opacity);
-                    QLottieProperty4D<QVector4D> colorPos;
-                    colorPos.setValue(color);
-                    m_colors[pos] = colorPos;
+            // Second: add new color stops for any unique opacity stop 
positions
+            for (auto [pos, opacity] : uniqueOpacityStops.asKeyValueRange()) {
+                QVector4D color;
+                if (pos <= colorStops.firstKey() || colorStops.size() == 1) {
+                    color = colorStops.first();
+                } else if (pos >= colorStops.lastKey()) {
+                    color = colorStops.last();
                 } else {
-                    QLottieProperty4D<QVector4D> colorVec = 
m_colors.value(pos1);
-                    QVector4D color = colorVec.value();
-                    qreal opa0 = m_colors[pos1].value()[3];
-                    qreal ratio = (pos1 - pos0) / (pos - pos0);
-                    qreal opa = opa0 + ratio * (opacity - opa0);
-                    color[3] = opa;
-                    colorVec.setValue(color);
-                    m_colors[pos1] = colorVec;
-                    keyIndex++;
+                    auto it2 = colorStops.lowerBound(pos);
+                    Q_ASSERT(it2 != colorStops.cbegin());
+                    auto it1(it2);
+                    it1--;
+                    qreal ratio = (pos - it1.key()) / (it2.key() - it1.key());
+                    color = it1.value() + ratio * (it2.value() - it1.value());
                 }
+                color[3] = opacity;
+                m_colors[pos].setValue(color);
             }
         }
     } else {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtlottie-everywhere-src-6.11.0/src/lottie/qlottielayer.cpp 
new/qtlottie-everywhere-src-6.11.1/src/lottie/qlottielayer.cpp
--- old/qtlottie-everywhere-src-6.11.0/src/lottie/qlottielayer.cpp      
2026-03-10 06:07:49.000000000 +0100
+++ new/qtlottie-everywhere-src-6.11.1/src/lottie/qlottielayer.cpp      
2026-05-08 03:18:53.000000000 +0200
@@ -352,9 +352,10 @@
     QJsonArray::const_iterator it = definition.constEnd();
     while (it != definition.constBegin()) {
         // Create effects container if at least one effect found
-        if (!m_effects) {
-            m_effects = new QLottieBase;
-            effectRoot = m_effects;
+        if (!effectRoot) {
+            Q_ASSERT(!m_effects);
+            effectRoot = new QLottieBase;
+            m_effects = effectRoot;
         }
         it--;
         QJsonObject effect = (*it).toObject();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtlottie-everywhere-src-6.11.0/src/qml/doc/qtlottieanimation.qdocconf 
new/qtlottie-everywhere-src-6.11.1/src/qml/doc/qtlottieanimation.qdocconf
--- old/qtlottie-everywhere-src-6.11.0/src/qml/doc/qtlottieanimation.qdocconf   
2026-03-10 06:07:49.000000000 +0100
+++ new/qtlottie-everywhere-src-6.11.1/src/qml/doc/qtlottieanimation.qdocconf   
2026-05-08 03:18:53.000000000 +0200
@@ -6,6 +6,9 @@
 description             = Lottie Player for Qt
 buildversion            = Qt Lottie Animation | Commercial or GPLv3
 
+# No C++ API do document, prevent QDoc from searching for a module header
+moduleheader            =
+
 headerdirs             += ../..
 
 sourcedirs             += ../..
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtlottie-everywhere-src-6.11.0/src/qml/doc/src/qt_target_qml_from_lottie.qdoc
 
new/qtlottie-everywhere-src-6.11.1/src/qml/doc/src/qt_target_qml_from_lottie.qdoc
--- 
old/qtlottie-everywhere-src-6.11.0/src/qml/doc/src/qt_target_qml_from_lottie.qdoc
   2026-03-10 06:07:49.000000000 +0100
+++ 
new/qtlottie-everywhere-src-6.11.1/src/qml/doc/src/qt_target_qml_from_lottie.qdoc
   2026-05-08 03:18:53.000000000 +0200
@@ -8,7 +8,7 @@
 \title qt_target_qml_from_lottie
 \keyword qt6_target_qml_from_lottie
 
-\summary {Generates QML code based on an Lottie file.}
+\summary {Generates QML code based on a Lottie file.}
 
 The command is defined in the \c LottieTools component of the \c Qt6 package, 
which can
 be loaded like this:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtlottie-everywhere-src-6.11.0/src/qml/doc/src/qtlottie.qdoc 
new/qtlottie-everywhere-src-6.11.1/src/qml/doc/src/qtlottie.qdoc
--- old/qtlottie-everywhere-src-6.11.0/src/qml/doc/src/qtlottie.qdoc    
2026-03-10 06:07:49.000000000 +0100
+++ new/qtlottie-everywhere-src-6.11.1/src/qml/doc/src/qtlottie.qdoc    
2026-05-08 03:18:53.000000000 +0200
@@ -15,11 +15,11 @@
     \l{lottietoqml} is included. This tool converts Lottie animations to QML. 
As a result,
     they can be rendered using the hardware-accelerated renderer in Qt Quick.
 
-    If the Lottie files are known at compile tome, you can also convert them 
to QML using the
+    If the Lottie files are known at compile time, you can also convert them 
to QML using the
     \l lottietoqml tool, or the \l{qt_target_qml_from_lottie} CMake command 
that wraps the tool.
 
     Finally, the \l{VectorImage} Qt Quick item can load Lottie format files 
directly. It converts
-    them to QML at runtime using the \ lottietoqml functionality in a plugin.
+    them to QML at runtime using the \l lottietoqml functionality in a plugin.
 
     \section1 Getting Started
 

Reply via email to