Ok,
So I am confused how to handle controlling color outputs from fastscripts.
It seems no matter what I try that the color outputs do not seem to match what I am intending.
Since the color outputs are read out in Hexadecimal, I cannot seem to get the intended hexadecimal to ColorChooser conversion
to match.
I've even tried to read in a ColorFader and push that value through to the output and cannot get the correct colors.
Anyone have any examples or success in managing colors through scripting?
-S
Scripting - Color Handling - ptColorChooser
Is it a problem with the converted values, or about the resulting colors?
In case of the latter, it might be something related to an interference with background colors (well, just an intuition : ) )
Q
In case of the latter, it might be something related to an interference with background colors (well, just an intuition : ) )
Q
Hi question!
No i do not think it is related to what you are thinking.
So if you reverse engineer it and take the hexadecimal color value for the color:
Trying to convert this back to a single to feed the color using a Tparameter of ColorChooser...or a specific color output for scripting.
It seems that no matter how I implement the output variation is unknown.
Possibly reverse engineering it and using a data parameter to capture the floating value and then pumping that back in might work.
Would be nice to solely work in hexadecimal for the color outputs to standardize, unfortunately in scripting it looks to not be that way.
-S
No i do not think it is related to what you are thinking.
So if you reverse engineer it and take the hexadecimal color value for the color:
Trying to convert this back to a single to feed the color using a Tparameter of ColorChooser...or a specific color output for scripting.
It seems that no matter how I implement the output variation is unknown.
Possibly reverse engineering it and using a data parameter to capture the floating value and then pumping that back in might work.
Would be nice to solely work in hexadecimal for the color outputs to standardize, unfortunately in scripting it looks to not be that way.
-S
"Every act of creation is first an act of destruction." -Picasso
hi sephilt, it's been a long time ive not scripted with the new engine, but at the time i didn't a lot of color manipulation stuff with 5.8. gonna find back some of the functions i had with the help of senso.yp output is a RGB 3x8 bytes type and need some conversion.
edit, found back this one my help, to add at the end of your scripts.
at that time needed to declare a new type on top header Tcolor.,
then during callback or process, u can call a needed fonction ,
like HSLtoRGB(0,0,0) will return black, then u can get all the colors via setting up hue, sat and lum with is the most handy way imo
edit, found back this one my help, to add at the end of your scripts.
at that time needed to declare a new type on top header Tcolor.,
then during callback or process, u can call a needed fonction ,
like HSLtoRGB(0,0,0) will return black, then u can get all the colors via setting up hue, sat and lum with is the most handy way imo
type TColor = -$7FFFFFFF-1..$7FFFFFFF;
///////////////////////////////////////////////////////////////////
function RGBtoBGR (rgb: integer): integer;
begin
Result := $10000*round(Byte(rgb)) + $100*round (Byte(rgb shr) + round (Byte(rgb shr 16));
end;
///////////////////////////////////////
function RGB(r, g, b: Byte): TColor;
begin
Result := (r or (g shlor (b shl 16));
end;
///////////////////////////////////////
function HSLtoRGB (H, S, L: single): TColor;
var
M1, M2: single;
function HueToColourValue (Hue: single) : byte;
var
V : double;
begin
if Hue < 0 then
Hue := Hue + 1
else
if Hue > 1 then
Hue := Hue - 1;
if 6 * Hue < 1 then
V := M1 + (M2 - M1) * Hue * 6
else
if 2 * Hue < 1 then
V := M2
else
if 3 * Hue < 2 then
V := M1 + (M2 - M1) * (2/3 - Hue) * 6
else
V := M1;
Result := round (255 * V)
end;
var
R, G, B: byte;
begin
if S = 0 then
begin
R := round (255 * L);
G := R;
B := R
end else begin
if L <= 0.5 then
M2 := L * (1 + S)
else
M2 := L + S - L * S;
M1 := 2 * L - M2;
R := HueToColourValue (H + 1/3);
G := HueToColourValue (H);
B := HueToColourValue (H - 1/3)
end;
Result := RGB (R, G, B)
end;
///////////////////////////////////////
procedure RGBtoHSL (RGB: TColor; var H, S, L : single);
var
R, G, B, D, Cmax, Cmin: single;
begin
R := GetRValue (RGB) / 255;
G := GetGValue (RGB) / 255;
B := GetBValue (RGB) / 255;
Cmax := MaxS (R, MaxS (G, B));
Cmin := MinS (R, MinS (G, B));
// calculate luminosity
L := (Cmax + Cmin) / 2;
if Cmax = Cmin then // it's grey
begin
H := 0; // it's actually undefined
S := 0
end else begin
D := Cmax - Cmin;
// calculate Saturation
if L < 0.5 then
S := D / (Cmax + Cmin)
else
S := D / (2 - Cmax - Cmin);
// calculate Hue
if R = Cmax then
H := (G - B) / D
else
if G = Cmax then
H := 2 + (B - R) /D
else
H := 4 + (R - G) / D;
H := H / 6;
if H < 0 then
H := H + 1
end
end;
///////////////////////////////////////
function GetRValue(rgb: DWORD): Byte;
begin
Result := Byte(rgb);
end;
///////////////////////////////////////
function GetGValue(rgb: DWORD): Byte;
begin
Result := Byte(rgb shr;
end;
///////////////////////////////////////
function GetBValue(rgb: DWORD): Byte;
begin
Result := Byte(rgb shr 16);
end;
////////////////////////////////////
Awesome thank you 23fx23!!
Yeah I was driving myself nuts trying to implement.
Thank you for your sharing, I will see what I can get going with this.
Definitely would be nice if we could get a basic string to hex output to match the colors hex values.
This definitely seems like a suggestion that probably needs implemented in the script.
Will see what can do maybe if I can get working and learn some more about how its handled...I can start looking into modifying this script.
Thanks!!
-S
Yeah I was driving myself nuts trying to implement.
Thank you for your sharing, I will see what I can get going with this.
Definitely would be nice if we could get a basic string to hex output to match the colors hex values.
This definitely seems like a suggestion that probably needs implemented in the script.
Will see what can do maybe if I can get working and learn some more about how its handled...I can start looking into modifying this script.
Thanks!!
-S
"Every act of creation is first an act of destruction." -Picasso
So the confusion I have, I looked at using the Type.
So this Type TColor is it the same Hexadecimal reading as a Color Selection?
Trying to use TColor and force the same Hexadecimal results does not output the intended value as in the script.
I am not for sure how it is done, whether it's the conversion from the Type to a Float/Single used on the output?
Maybe this conversion is what is confusing me in how this works.
-S
So this Type TColor is it the same Hexadecimal reading as a Color Selection?
Trying to use TColor and force the same Hexadecimal results does not output the intended value as in the script.
I am not for sure how it is done, whether it's the conversion from the Type to a Float/Single used on the output?
Maybe this conversion is what is confusing me in how this works.
-S
"Every act of creation is first an act of destruction." -Picasso
Who is online
Users browsing this forum: No registered users and 16 guests
