openclonk/docs/sdk/script/fn/HSL2RGB.xml

50 lines
2.0 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE funcs
SYSTEM '../../../clonk.dtd'>
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>HSL2RGB</title>
<category>Arithmetics</category>
<version>5.1 OC</version>
<syntax>
<rtype>int</rtype>
<params>
<param>
<type>int</type>
<name>Val</name>
<desc>24 bit HSL value</desc>
</param>
</params>
</syntax>
<desc>Converts a 24 bit HSL value into the better known 32 bit RGB format.<br/>The 24 bit HSL value can be created using <funclink>RGB</funclink>(hue, saturation, lightness).</desc>
<remark>Since there is no floating point data type in Clonk, these values may contain slight rounding errors (usually not greater than +1 to +1).</remark>
<examples>
<example>
<code>#appendto Clonk
func Initialize() {
<funclink>AddEffect</funclink>(&quot;VariateHue&quot;,<funclink>this</funclink>,200,1,<funclink>this</funclink>);
<funclink>return</funclink> <funclink>_inherited</funclink>();
}
func FxVariateHueTimer() {
var hsl = <funclink>RGB2HSL</funclink>(<funclink>GetColor</funclink>());
var hsla_array = <funclink>SplitRGBaValue</funclink>(hsl);
hsla_array[0] += 2;
if(hsla_array[0] &gt; 255) hue = 0;
var rgb = HSL2RGB(<funclink>RGB</funclink>(hsla_array[0],hsla_array[1],hsla_array[2]));
<funclink>SetColor</funclink>(rgb);
}</code>
<text>Creates an effect which will colorize every clonk in the game, running through the colors of the rainbow.<br/>To test this effects, best copy this function into a script contained in a scenario local System.ocg group.<br/>The hue value is deliberately increased by 2 in this sample, else rounding errors might cause nothing to happen.</text>
</example>
</examples>
<related>
<funclink>RGB2HSL</funclink>
<funclink>SetRGBaValue</funclink>
<funclink>RGB</funclink>
</related>
</func>
<author>Tyron</author><date>2004-09</date>
</funcs>