<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Color scripts</title><link>https://sourceforge.net/p/stipple-effect/wiki/Color%2520scripts/</link><description>Recent changes to Color scripts</description><atom:link href="https://sourceforge.net/p/stipple-effect/wiki/Color%20scripts/feed" rel="self"/><language>en</language><lastBuildDate>Tue, 13 Aug 2024 17:33:50 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/stipple-effect/wiki/Color%20scripts/feed" rel="self" type="application/rss+xml"/><item><title>Color scripts modified by Jordan Bunke</title><link>https://sourceforge.net/p/stipple-effect/wiki/Color%2520scripts/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -1,15 +1,18 @@
 [`&amp;lt; back`](Scripting)

 ### Overview
-TODO
+Color scripts are used to defined custom color action behaviour. Examples of color actions in _Stipple Effect_ are HSV level shifting and palettization. These target a scope of the project, whether it be a layer, the selection, a frame, the layer-frame, or the entire project, and then apply a transformation to the colors of the pixels in the targeted scope. Executing a color script is a more generalized framework of this behaviour, whereby users can programmatically specify the input to output color mapping.

 Example:

     :::js
     (~ color c -&amp;gt; color) {
-        // TODO - greyscale
+        ~ int total = c.r + c.g + c.b;
+        ~ int avg = total / 3;
+    
+        return rgb(avg, avg, avg, c.a);
     }
-Explanation: TODO
+This script takes the input color `c` and returns a shade of grey (or black or white in extreme cases) with the same lightness as `c`.

 ### Contract

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jordan Bunke</dc:creator><pubDate>Tue, 13 Aug 2024 17:33:50 -0000</pubDate><guid>https://sourceforge.netc83c95c4f6b36e5a07fadbbde001c8e49185519a</guid></item><item><title>Color scripts modified by Jordan Bunke</title><link>https://sourceforge.net/p/stipple-effect/wiki/Color%2520scripts/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;a class="" href="/p/stipple-effect/wiki/Scripting/"&gt;&lt;code&gt;&amp;lt; back&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="overview"&gt;Overview&lt;/h3&gt;
&lt;p&gt;TODO&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;// TODO - greyscale&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Explanation: TODO&lt;/p&gt;
&lt;h3 id="contract"&gt;Contract&lt;/h3&gt;
&lt;p&gt;Color scripts must have take a single &lt;code&gt;color&lt;/code&gt; parameter&lt;sup&gt;a, b&lt;/sup&gt; and return a &lt;code&gt;color&lt;/code&gt;. Thus, the head function of a color script should be of the following form&lt;sup&gt;c&lt;/sup&gt;:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;// contents here...&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;sup&gt;a&lt;/sup&gt; - The parameter name &lt;code&gt;c&lt;/code&gt; is just used as an example.&lt;/p&gt;
&lt;p&gt;&lt;sup&gt;b&lt;/sup&gt; - The parameter represented by &lt;code&gt;c&lt;/code&gt; can optionally be declared as immutable by prepending &lt;code&gt;final&lt;/code&gt; or &lt;code&gt;~&lt;/code&gt; to the declaration. For example:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cm"&gt;/* contents here... */&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;sup&gt;c&lt;/sup&gt; - Color scripts do not have to have complex function bodies &lt;code&gt;{ ... }&lt;/code&gt;. For example, the following preview script is valid:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;rgb&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id="more"&gt;More&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="" href="https://github.com/jbunke/se-script-examples/tree/main/scripts/color" rel="nofollow"&gt;Color script examples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jordan Bunke</dc:creator><pubDate>Tue, 13 Aug 2024 17:33:50 -0000</pubDate><guid>https://sourceforge.netf4042c658be1da20f64840f5f500e5ee18a70d03</guid></item></channel></rss>