X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/b7db12d1360aaf34f69ce856cc2bab385f68080e..83596eca2ea1782932a4af42727ece9af8067f13:/Shiar_Sheet/Colour.pm diff --git a/Shiar_Sheet/Colour.pm b/Shiar_Sheet/Colour.pm new file mode 100644 index 0000000..1812789 --- /dev/null +++ b/Shiar_Sheet/Colour.pm @@ -0,0 +1,34 @@ +package Shiar_Sheet::Colour; + +use strict; +use warnings; +use List::Util 'min'; + +our $VERSION = '1.00'; + +sub new { + my $class = shift; + my @rgb = @_ >= 3 ? @_ : (map {hex} $_[0] =~ /(..)/g); + bless \@rgb, $class; +} + +sub luminance { + # perceived brightness (using ITU-R recommendation 601 luma co-efficients) + my ($r, $g, $b) = @{ $_[0] }; + return $r*.299 + $g*.587 + $b*.114; +} + +sub rgb24 { + my $str = ''; + $str .= sprintf '%X', min($_ / 17 + .5, 15) for @{ $_[0] }; + return $str; +} + +sub rgb48 { + my $str = ''; + $str .= sprintf '%02X', $_ for @{ $_[0] }; + return $str; +} + +1; +