Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //////////////////////////////////////////////////////////////////////////////////
- // Expressions
- //////////////////////////////////////////////////////////////////////////////////
- int clamp(int val,int min,int max)
- {
- if (val<min) {return min;}
- if (val>max) {return max;}
- return val;
- }
- int mod(int val,int max)
- {
- return (val%max < 0)? max-(val%max) : val%max ;
- }
- long ExtObject::eHSBtoRGB(LPVAL params, ExpReturn& ret)
- {
- float H = mod(params[0].GetInt(),360);
- float S = clamp(params[1].GetInt(),0,100);
- float V = clamp(params[2].GetInt(),0,100);
- H /= 60.0;
- S /= 100.0;
- V /= 100.0;
- float m,n,f;
- float R,G,B;
- int i;
- i = floor(H);
- f = H - i;
- if ( !(i&1) ) f = 1 - f; // if i is even
- m = V * (1 - S);
- n = V * (1 - S * f);
- switch (i) {
- case 6:
- case 0: { R=V; G=n; B=m; break; }
- case 1: { R=n; G=V; B=m; break;}
- case 2: { R=m; G=V; B=n; break;}
- case 3: { R=m; G=n; B=V; break;}
- case 4: { R=n; G=m; B=V; break;}
- case 5: { R=V; G=m; B=n; break;}
- }
- COLORREF c3 = RGB(R*255,G*255,B*255);
- return ret = (int)c3;
- }
Add Comment
Please, Sign In to add comment