Skip to content

Instantly share code, notes, and snippets.

@Jonathan-Rosewood
Forked from brbsh/rgba_argb.pwn
Created October 7, 2015 03:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Jonathan-Rosewood/66579345f8e263dfd425 to your computer and use it in GitHub Desktop.
Save Jonathan-Rosewood/66579345f8e263dfd425 to your computer and use it in GitHub Desktop.
Functions to operate RGBA & ARGB hex colors in PAWN
cutAlphaRGBA(rgbacolor) return (rgbacolor >>> 8); // вернет цвет с вырезанной прозрачностью
cutAlphaARGB(argbcolor) return (argbcolor & 0xFFFFFF);
setAlphaRGBA(rgbacolor, alpha = 0xFF) return (cutAlphaRGBA(rgbacolor) | alpha); // вернет цвет с установленной прозрачностью
setAlphaARGB(argbcolor, alpha = 0xFF) return (cutAlphaARGB(argbcolor) | (alpha << 24));
getAlphaRGBA(rgbacolor) return (rgbacolor & 0xFF); // вернет альфу
getAlphaARGB(argbcolor) return (argbcolor >>> 24);
bool:hasAlphaRGBA(rgbacolor) return (getAlphaRGBA(rgbacolor) != 0 && ((rgbacolor >>> 24) != 0));
bool:hasAlphaARGB(argbcolor) return (getAlphaARGB(argbcolor) != 0 && ((argbcolor >>> 8) != 0));
torgba(rgbacolor, &r, &g, &b, &a) // разобьет цвет на состовляющие (red, green, blue, alpha)
{
r = (rgbacolor >>> 24),
g = ((rgbacolor >>> 16) & 0xFF),
b = (rgbacolor >>> 8) & 0xFF),
a = getAlphaRGBA(rgbacolor);
}
toargb(argbcolor, &a, &r, &g, &b)
{
torgba(argbcolor, a, r, g, b);
}
torgbacolor(r, g, b, a) return ((r << 24) | (g << 16) | (b << 8) | a); // соберет цвет из его отдельных каналов
toargbcolor(a, r, g, b) return ((a << 24) | (r << 16) | (g << 8) | b);
rgbatoargb(rgbacolor) // вернет ARGB цвет
{
new r, g, b, a;
torgba(rgbacolor, r, g, b, a);
return toargbcolor(a, r, g, b);
}
argbtorgba(argbcolor) // вернет RGBA цвет
{
new a, r, g, b;
torgba(argbcolor, a, r, g, b);
return torgbacolor(r, g, b, a);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment