Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package art-ctlscripts for openSUSE:Factory 
checked in at 2024-10-21 16:25:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/art-ctlscripts (Old)
 and      /work/SRC/openSUSE:Factory/.art-ctlscripts.new.26871 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "art-ctlscripts"

Mon Oct 21 16:25:58 2024 rev:2 rq:1216507 version:1.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/art-ctlscripts/art-ctlscripts.changes    
2024-05-29 19:35:52.580541734 +0200
+++ /work/SRC/openSUSE:Factory/.art-ctlscripts.new.26871/art-ctlscripts.changes 
2024-10-21 16:26:06.900735134 +0200
@@ -1,0 +2,10 @@
+Mon Oct 21 06:47:04 UTC 2024 - [email protected]
+
+- Update to version 1.1:
+  * artlib: added helper function luteval
+  * added graphical equalizer by saturation
+  * improved tone curve
+  * added graphic luminance equalizer
+  * added tone curve and graphical hue equalizer
+
+-------------------------------------------------------------------

Old:
----
  art-ctlscripts-1.0.1.tar.xz

New:
----
  art-ctlscripts-1.1.tar.xz

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

Other differences:
------------------
++++++ art-ctlscripts.spec ++++++
--- /var/tmp/diff_new_pack.xEKOBr/_old  2024-10-21 16:26:07.540761983 +0200
+++ /var/tmp/diff_new_pack.xEKOBr/_new  2024-10-21 16:26:07.544762151 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           art-ctlscripts
-Version:        1.0.1
+Version:        1.1
 Release:        0
 Summary:        Custom CTL scripts for the ART raw processor.
 License:        GPL-3.0-only

++++++ _service ++++++
--- /var/tmp/diff_new_pack.xEKOBr/_old  2024-10-21 16:26:07.576763494 +0200
+++ /var/tmp/diff_new_pack.xEKOBr/_new  2024-10-21 16:26:07.580763662 +0200
@@ -2,8 +2,8 @@
   <service name="tar_scm" mode="disabled">
     <param 
name="url">https://bitbucket.org/agriggio/art-ctlscripts.git/</param>
     <param name="exclude">.git</param>
-    <param name="versionformat">1.0.1</param>
-    <param name="revision">1.0.1</param>
+    <param name="versionformat">1.1</param>
+    <param name="revision">1.1</param>
     <param name="changesgenerate">enable</param>
     <param name="scm">git</param>
     <param name="filename">art-ctlscripts</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.xEKOBr/_old  2024-10-21 16:26:07.600764501 +0200
+++ /var/tmp/diff_new_pack.xEKOBr/_new  2024-10-21 16:26:07.604764668 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://bitbucket.org/agriggio/art-ctlscripts.git/</param>
-              <param 
name="changesrevision">d2639c555e37d87958f2cc615fb5610ea4436637</param></service></servicedata>
+              <param 
name="changesrevision">300187dd8aa7041f247bf0e7b6e37b718f0f3685</param></service></servicedata>
 (No newline at EOF)
 

++++++ art-ctlscripts-1.0.1.tar.xz -> art-ctlscripts-1.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/art-ctlscripts-1.0.1/_artlib.ctl 
new/art-ctlscripts-1.1/_artlib.ctl
--- old/art-ctlscripts-1.0.1/_artlib.ctl        2024-05-28 14:42:37.000000000 
+0200
+++ new/art-ctlscripts-1.1/_artlib.ctl  2024-08-06 08:46:54.000000000 +0200
@@ -297,3 +297,41 @@
 
     return rgb;
 }
+
+
+const float pq_m1 = 2610.0 / 16384.0;
+const float pq_m2 = 2523.0 / 32.0;
+const float pq_c1 = 107.0 / 128.0;
+const float pq_c2 = 2413.0 / 128.0;
+const float pq_c3 = 2392.0 / 128.0;
+
+float pq_curve(float x, bool inv)
+{
+    if (!inv) {
+        float y = fmax(x / 100.0, 0.0);
+        float a = pow(y, pq_m1);
+        return pow((pq_c1 + pq_c2 * a) / (1.0 + pq_c3 * a), pq_m2);
+    } else {
+        float p = pow(x, 1.0/pq_m2);
+        float v = fmax(p - pq_c1, 0.0) / (pq_c2 - pq_c3 * p);
+        return pow(v, 1.0 / pq_m1) * 100.0;
+    }
+}
+
+
+float lin2log(float x, float base)
+{
+    return log(x * (base - 1) + 1) / log(base); 
+}
+
+
+float log2lin(float x, float base)
+{
+    return (pow(base, x) - 1) / (base - 1);
+}
+
+
+float luteval(float lut[], float x, float vmin=0, float vmax=1)
+{
+    return lookupCubic1D(lut, vmin, vmax, x);
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/art-ctlscripts-1.0.1/hueeqg.ctl 
new/art-ctlscripts-1.1/hueeqg.ctl
--- old/art-ctlscripts-1.0.1/hueeqg.ctl 1970-01-01 01:00:00.000000000 +0100
+++ new/art-ctlscripts-1.1/hueeqg.ctl   2024-08-06 08:46:54.000000000 +0200
@@ -0,0 +1,51 @@
+// @ART-label: "Graphical equalizer by hue"
+// @ART-colorspace: "rec2020"
+
+import "_artlib";
+
+float hue01(float h)
+{
+    float v = h / (2 * M_PI);
+    if (v < 0.0) {
+        return 1.0 + v;
+    } else if (v > 1.0) {
+        return v - 1.0;
+    } else {
+        return v;
+    }
+}
+
+
+float tolin(float y, float base)
+{
+    float v = (y - 0.5) * 2.0;
+    return sgn(v) * clamp(log2lin(fabs(v), base), 0, 1);
+}
+
+// @ART-param: ["hcurve", "H", 2, ["ControlPoints", 0.0, 0.5, 0.35, 0.35, 
0.16666666666666666, 0.5, 0.35, 0.35, 0.3333333333333333, 0.5, 0.35, 0.35, 0.5, 
0.5, 0.35, 0.35, 0.6666666666666666, 0.5, 0.35, 0.35, 0.8333333333333333, 0.5, 
0.35, 0.35], [[0.0, 0.6, 0.3, 0.48947368421052634], [0.16666666666666666, 0.6, 
0.4105263157894737, 0.3], [0.3333333333333333, 0.48947368421052634, 0.6, 0.3], 
[0.5, 0.3, 0.6, 0.41052631578947363], [0.6666666666666666, 0.3, 
0.48947368421052634, 0.6], [0.8333333333333333, 0.41052631578947363, 0.3, 0.6], 
[1.0, 0.6, 0.3, 0.48947368421052634]], 0, "Channel"]
+// @ART-param: ["scurve", "S", 2, ["ControlPoints", 0.0, 0.5, 0.35, 0.35, 
0.16666666666666666, 0.5, 0.35, 0.35, 0.3333333333333333, 0.5, 0.35, 0.35, 0.5, 
0.5, 0.35, 0.35, 0.6666666666666666, 0.5, 0.35, 0.35, 0.8333333333333333, 0.5, 
0.35, 0.35], [[0.0, 0.6, 0.3, 0.48947368421052634], [0.16666666666666666, 0.6, 
0.4105263157894737, 0.3], [0.3333333333333333, 0.48947368421052634, 0.6, 0.3], 
[0.5, 0.3, 0.6, 0.41052631578947363], [0.6666666666666666, 0.3, 
0.48947368421052634, 0.6], [0.8333333333333333, 0.41052631578947363, 0.3, 0.6], 
[1.0, 0.6, 0.3, 0.48947368421052634]], 0, "Channel"]
+// @ART-param: ["lcurve", "L", 2, ["ControlPoints", 0.0, 0.5, 0.35, 0.35, 
0.16666666666666666, 0.5, 0.35, 0.35, 0.3333333333333333, 0.5, 0.35, 0.35, 0.5, 
0.5, 0.35, 0.35, 0.6666666666666666, 0.5, 0.35, 0.35, 0.8333333333333333, 0.5, 
0.35, 0.35], [[0.0, 0.6, 0.3, 0.48947368421052634], [0.16666666666666666, 0.6, 
0.4105263157894737, 0.3], [0.3333333333333333, 0.48947368421052634, 0.6, 0.3], 
[0.5, 0.3, 0.6, 0.41052631578947363], [0.6666666666666666, 0.3, 
0.48947368421052634, 0.6], [0.8333333333333333, 0.41052631578947363, 0.3, 0.6], 
[1.0, 0.6, 0.3, 0.48947368421052634]], 0, "Channel"]
+void ART_main(varying float r, varying float g, varying float b,
+              output varying float rout,
+              output varying float gout,
+              output varying float bout,
+              float hcurve[256], float scurve[256], float lcurve[256])
+{
+    float hsl[3] = rgb2hsl(r, g, b);
+    float h = hue01(hsl[0]);
+    float v = luteval(hcurve, h);
+    float f = tolin(v, 50) * M_PI;
+    hsl[0] = hsl[0] + f;
+    v = luteval(scurve, h);
+    f = tolin(v, 2);
+    float s = fmax(1.0 + f, 0);
+    hsl[1] = hsl[1] * s;
+    v = luteval(lcurve, h);
+    s = fmin(hsl[1], 1);
+    f = tolin(v, 10);
+    hsl[2] = hsl[2] * pow(2, 10 * f * s);
+    float rgb[3] = hsl2rgb(hsl);
+    rout = rgb[0];
+    gout = rgb[1];
+    bout = rgb[2];
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/art-ctlscripts-1.0.1/lumeqg.ctl 
new/art-ctlscripts-1.1/lumeqg.ctl
--- old/art-ctlscripts-1.0.1/lumeqg.ctl 1970-01-01 01:00:00.000000000 +0100
+++ new/art-ctlscripts-1.1/lumeqg.ctl   2024-08-06 08:46:54.000000000 +0200
@@ -0,0 +1,37 @@
+// @ART-label: "Graphical equalizer by luminance"
+// @ART-colorspace: "rec2020"
+
+import "_artlib";
+
+float tolin(float y, float base)
+{
+    float v = (y - 0.5) * 2.0;
+    return sgn(v) * clamp(log2lin(fabs(v), base), 0, 1);
+}
+
+// @ART-param: ["hcurve", "H", 1, ["ControlPoints", 0.0, 0.5, 0.35, 0.35, 1, 
0.5, 0.35, 0.35], [[0.0, 0.0, 0.0, 0.0], [0.16666666666666666, 
0.01941186441032164, 0.01941186441032164, 0.01941186441032164], 
[0.3333333333333333, 0.08919350686224782, 0.08919350686224782, 
0.08919350686224782], [0.5, 0.217637640824031, 0.217637640824031, 
0.217637640824031], [0.6666666666666666, 0.40982573843632336, 
0.40982573843632336, 0.40982573843632336], [0.8333333333333334, 
0.6695781277796022, 0.6695781277796022, 0.6695781277796022], [1.0, 1.0, 1.0, 
1.0]], 0, "Channel"]
+// @ART-param: ["scurve", "S", 1, ["ControlPoints", 0.0, 0.5, 0.35, 0.35, 1, 
0.5, 0.35, 0.35], [[0.0, 0.0, 0.0, 0.0], [0.16666666666666666, 
0.01941186441032164, 0.01941186441032164, 0.01941186441032164], 
[0.3333333333333333, 0.08919350686224782, 0.08919350686224782, 
0.08919350686224782], [0.5, 0.217637640824031, 0.217637640824031, 
0.217637640824031], [0.6666666666666666, 0.40982573843632336, 
0.40982573843632336, 0.40982573843632336], [0.8333333333333334, 
0.6695781277796022, 0.6695781277796022, 0.6695781277796022], [1.0, 1.0, 1.0, 
1.0]], 0, "Channel"]
+// @ART-param: ["lcurve", "L", 1, ["ControlPoints", 0.0, 0.5, 0.35, 0.35, 1, 
0.5, 0.35, 0.35], [[0.0, 0.0, 0.0, 0.0], [0.16666666666666666, 
0.01941186441032164, 0.01941186441032164, 0.01941186441032164], 
[0.3333333333333333, 0.08919350686224782, 0.08919350686224782, 
0.08919350686224782], [0.5, 0.217637640824031, 0.217637640824031, 
0.217637640824031], [0.6666666666666666, 0.40982573843632336, 
0.40982573843632336, 0.40982573843632336], [0.8333333333333334, 
0.6695781277796022, 0.6695781277796022, 0.6695781277796022], [1.0, 1.0, 1.0, 
1.0]], 0, "Channel"]
+void ART_main(varying float r, varying float g, varying float b,
+              output varying float rout,
+              output varying float gout,
+              output varying float bout,
+              float hcurve[256], float scurve[256], float lcurve[256])
+{
+    float hsl[3] = rgb2hsl(r, g, b);
+    float y = pow(clamp(hsl[2], 0, 1), 1.0/2.2);
+    float v = luteval(hcurve, y);
+    float f = tolin(v, 50) * M_PI;
+    hsl[0] = hsl[0] + f;
+    v = luteval(scurve, y);
+    f = tolin(v, 2);
+    float s = fmax(1.0 + f, 0);
+    hsl[1] = hsl[1] * s;
+    v = luteval(lcurve, y) - 0.5;
+    f = 1 + sgn(v) * pow(v, 2) * 5;
+    hsl[2] = hsl[2] * f;
+    float rgb[3] = hsl2rgb(hsl);
+    rout = rgb[0];
+    gout = rgb[1];
+    bout = rgb[2];
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/art-ctlscripts-1.0.1/sateqg.ctl 
new/art-ctlscripts-1.1/sateqg.ctl
--- old/art-ctlscripts-1.0.1/sateqg.ctl 1970-01-01 01:00:00.000000000 +0100
+++ new/art-ctlscripts-1.1/sateqg.ctl   2024-08-06 08:46:54.000000000 +0200
@@ -0,0 +1,37 @@
+// @ART-label: "Graphical equalizer by saturation"
+// @ART-colorspace: "rec2020"
+
+import "_artlib";
+
+float tolin(float y, float base)
+{
+    float v = (y - 0.5) * 2.0;
+    return sgn(v) * clamp(log2lin(fabs(v), base), 0, 1);
+}
+
+// @ART-param: ["hcurve", "H", 1, ["ControlPoints", 0.0, 0.5, 0.35, 0.35, 1, 
0.5, 0.35, 0.35], [[0.0, 0.6247426875000001, 0.6247426875000001, 
0.6247426875000001], [0.16666666666666666, 0.6252545086395497, 
0.6246428485887556, 0.6240446952267805], [0.3333333333333333, 
0.6305332826764821, 0.6236131391613252, 0.6168458063862508], [0.5, 
0.6486781933883669, 0.6200736836951146, 0.5921008193263192], 
[0.6666666666666666, 0.6902557933623452, 0.6119633068607208, 
0.535399676527902], [0.8333333333333334, 0.767801045044281, 0.596836863457253, 
0.42964791616394454], [1.0, 0.8955420238967149, 0.5719189394708761, 
0.2554421061206866]], 0, "Channel"]
+// @ART-param: ["scurve", "S", 1, ["ControlPoints", 0.0, 0.5, 0.35, 0.35, 1, 
0.5, 0.35, 0.35], [[0.0, 0.6247426875000001, 0.6247426875000001, 
0.6247426875000001], [0.16666666666666666, 0.6252545086395497, 
0.6246428485887556, 0.6240446952267805], [0.3333333333333333, 
0.6305332826764821, 0.6236131391613252, 0.6168458063862508], [0.5, 
0.6486781933883669, 0.6200736836951146, 0.5921008193263192], 
[0.6666666666666666, 0.6902557933623452, 0.6119633068607208, 
0.535399676527902], [0.8333333333333334, 0.767801045044281, 0.596836863457253, 
0.42964791616394454], [1.0, 0.8955420238967149, 0.5719189394708761, 
0.2554421061206866]], 0, "Channel"]
+// @ART-param: ["lcurve", "L", 1, ["ControlPoints", 0.0, 0.5, 0.35, 0.35, 1, 
0.5, 0.35, 0.35], [[0.0, 0.6247426875000001, 0.6247426875000001, 
0.6247426875000001], [0.16666666666666666, 0.6252545086395497, 
0.6246428485887556, 0.6240446952267805], [0.3333333333333333, 
0.6305332826764821, 0.6236131391613252, 0.6168458063862508], [0.5, 
0.6486781933883669, 0.6200736836951146, 0.5921008193263192], 
[0.6666666666666666, 0.6902557933623452, 0.6119633068607208, 
0.535399676527902], [0.8333333333333334, 0.767801045044281, 0.596836863457253, 
0.42964791616394454], [1.0, 0.8955420238967149, 0.5719189394708761, 
0.2554421061206866]], 0, "Channel"]
+void ART_main(varying float r, varying float g, varying float b,
+              output varying float rout,
+              output varying float gout,
+              output varying float bout,
+              float hcurve[256], float scurve[256], float lcurve[256])
+{
+    float hsl[3] = rgb2hsl(r, g, b);
+    float y = pow(clamp(hsl[1], 0, 1), 1.0/3.5);
+    float v = luteval(hcurve, y);
+    float f = tolin(v, 50) * M_PI;
+    hsl[0] = hsl[0] + f;
+    v = luteval(scurve, y);
+    f = tolin(v, 2);
+    float s = fmax(1.0 + f, 0);
+    hsl[1] = hsl[1] * s;
+    v = luteval(lcurve, y) - 0.5;
+    f = 1 + sgn(v) * pow(v, 2) * 5;
+    hsl[2] = hsl[2] * f;
+    float rgb[3] = hsl2rgb(hsl);
+    rout = rgb[0];
+    gout = rgb[1];
+    bout = rgb[2];
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/art-ctlscripts-1.0.1/tonecurve.ctl 
new/art-ctlscripts-1.1/tonecurve.ctl
--- old/art-ctlscripts-1.0.1/tonecurve.ctl      1970-01-01 01:00:00.000000000 
+0100
+++ new/art-ctlscripts-1.1/tonecurve.ctl        2024-08-06 08:46:54.000000000 
+0200
@@ -0,0 +1,75 @@
+// @ART-label: "Tone curve"
+// @ART-colorspace: "rec2020"
+
+import "_artlib";
+
+const float c = 0;
+const float a = 1;
+const float m = 0.5;//0.18;
+const float b = (a / (m - c)) * (1.0 - ((m - c) / a)) * m;
+const float s = 1;
+const float g = s * pow(m + b, 2) / (a * b);
+
+float ro(float x)
+{
+    return a * (x / (x + b)) + c;
+}
+
+float iro(float y)
+{
+    return (-b * ((y - c) / a)) / (((y - c) / a) - 1);
+}
+
+float contr(float x)
+{
+    return m * pow(x / m, g);
+}
+
+float icontr(float y)
+{
+    return pow(y / m, 1.0/g) * m;
+}
+
+float gam(float x)
+{
+    return pow(x, 1.0/2.2);
+}
+
+
+float igam(float x)
+{
+    return pow(x, 2.2);
+}
+
+
+float enc(float x)
+{
+    float y = ite(x <= m, x, ro(contr(x)));
+    return gam(y);
+}
+
+
+float dec(float x)
+{
+    float y = igam(x);
+    return ite(y <= m, y, icontr(iro(y)));
+}
+
+
+// @ART-param: ["curve", "Curve", 0, ["CatmullRom", 0, 0, 1, 1]]
+void ART_main(varying float r, varying float g, varying float b,
+              output varying float rout,
+              output varying float gout,
+              output varying float bout,
+              float curve[256])
+{
+    float rgb[3] = { r, g, b };
+    for (int i = 0; i < 3; i = i+1) {
+        float x = enc(rgb[i]);
+        float y = luteval(curve, x);
+        rgb[i] = dec(y);
+    }
+    rout = rgb[0];
+    gout = rgb[1];
+    bout = rgb[2];
+}

Reply via email to