open.mp forum
[Library] PAWN Colour Manipulation - Printable Version

+ open.mp forum (https://forum.open.mp)
-- Forum: SA-MP (https://forum.open.mp/forumdisplay.php?fid=3)
--- Forum: Releases (https://forum.open.mp/forumdisplay.php?fid=13)
---- Forum: Libraries (https://forum.open.mp/forumdisplay.php?fid=31)
---- Thread: [Library] PAWN Colour Manipulation (/showthread.php?tid=284)



PAWN Colour Manipulation - kristo - 2019-04-16

PAWN Colour Manipulation



[Image: sampctl-pawn--colour--manipulation-2f2f2...-the-badge]



This library provides a number of easy-to-use colour manipulation functions for PAWN.



Installation



Simply install to your project:



Code:
sampctl package install kristoisberg/pawn-colour-manipulation



Include in your code and begin using the library:



PHP Code:
#include <colour-manipulation> 



Testing



To test, simply run the package:



Code:
sampctl package run



There is also a separate test script (samp-grayscale-bitmap) that unfortunately doesn?t work yet due to a bug in samp-bitmapper.



Functions



PHP Code:
GetColourComponents(colour, &Float:r, &Float:g, &Float:b, &Float:1.0ColourMode:mode COLOUR_MODE_RGBA



Extracts the RGB(A) components from a colour code.



PHP Code:
Float:GetColourComponent(colourColourComponent:componentColourMode:mode COLOUR_MODE_RGBA



Extracts an individual colour component from a colour code and returns it.



PHP Code:
SetColourComponent(colourColourComponent:componentFloat:valueColourMode:mode COLOUR_MODE_RGBA



Modifies an individual component of an existing colour and returns the new colour.



PHP Code:
GetColourCode(Float:rFloat:gFloat:bFloat:1.0ColourMode:mode COLOUR_MODE_RGBA



Creates a colour code from RGB(A) components.



PHP Code:
ConvertColour(colourColourMode:fromColourMode:toFloat:alpha 1.0



Converts a colour from one colour mode to another. Alpha should be specified when converting from RGB, otherwise 0xFF (fully non-transparent) is used.



PHP Code:
InterpolateColours(colour1colour2Float:amountColourMode:mode COLOUR_MODE_RGBA



Interpolates two colours. amount must be in the range 0.0 - 1.0. The larger amount is, the closer the returned colour is to colour2.



PHP Code:
Float:GetColourBrightness(colourColourMode:mode COLOUR_MODE_RGBA



Returns the brightness of a colour.



PHP Code:
DarkenColour(colourFloat:amountColourMode:mode COLOUR_MODE_RGBA



Darkens a colour by interpolating it with the black colour.



PHP Code:
LightenColour(colourFloat:amountColourMode:mode COLOUR_MODE_RGBA



Lightens a colour by interpolating it with the white colour.



PHP Code:
GrayscaleColour(colourColourMode:mode COLOUR_MODE_RGBA



Returns the grayscale equivalent of a colour.



PHP Code:
Float:GetColourComponentFractValue(value



Converts a binary colour component value to a fractional value.



PHP Code:
GetColourComponentBinaryValue(Float:value



Converts a fractional colour component value to a binary value.



PHP Code:
Float:AddColourComponentGammaCor(Float:value



Adds sRGB gamma correction to a colour component.



PHP Code:
Float:RemoveColourComponentGammaCor(Float:value



Removes the sRGB gamma correction from a colour component.



Definitions



Colour modes



COLOUR_MODE_RGBA - The most common colour format in SA-MP: used by SendClientMessage, textdraws, etc.



COLOUR_MODE_ARGB- Colour format used by SetObjectMaterial, SetObjectMaterialText and SetPlayerAttachedObject.



COLOUR_MODE_RGB - Colour format used by embedded colours, probably the most common colour format outside of SA-MP, most notably in webpages.



Colour components



COLOUR_COMPONENT_R - Red



COLOUR_COMPONENT_G - Green



COLOUR_COMPONENT_B - Blue



COLOUR_COMPONENT_A - Alpha



Notes



Both British and American spellings (color/colour, gray/grey) are supported for everything noted above.


RE: PAWN Colour Manipulation - Y_Less - 2019-04-20

Do you remember the link to the original article on the improved interpolation algorithm?


RE: PAWN Colour Manipulation - kristo - 2019-04-20

(2019-04-20, 11:16 AM)Y_Less Wrote: Do you remember the link to the original article on the improved interpolation algorithm?

I presume you mean this one?
http://entropymine.com/imageworsener/srgbformula/

Also, if anyone's interested, here are the other resources I used for reference when?creating this library:
http://blog.johnnovak.net/2016/09/21/what-every-coder-should-know-about-gamma/
https://stackoverflow.com/questions/596216/formula-to-determine-brightness-of-rgb-color/13558570#13558570

And the person who wrote the first article has a few more interesting ones here:
http://entropymine.com/imageworsener/


RE: PAWN Colour Manipulation - Y_Less - 2019-04-20

Actually I meant this one:



http://blog.johnnovak.net/2016/09/21/what-every-coder-should-know-about-gamma/



But you linked it anyway, so thanks.