unicode: include harvey balls in symbols
[sheet.git] / Shiar_Sheet / Colour.pm
1 package Shiar_Sheet::Colour;
2
3 use strict;
4 use warnings;
5 use List::Util 'min';
6
7 our $VERSION = '1.00';
8
9 sub new {
10         my $class = shift;
11         my @rgb = @_ >= 3 ? @_ : (map {hex} $_[0] =~ /(..)/g);
12         bless \@rgb, $class;
13 }
14
15 sub luminance {
16         # perceived brightness (using ITU-R recommendation 601 luma co-efficients)
17         my ($r, $g, $b) = @{ $_[0] };
18         return $r*.299 + $g*.587 + $b*.114;
19 }
20
21 sub rgb24 {
22         my $str = '';
23         $str .= sprintf '%X', min($_ / 17 + .5, 15) for @{ $_[0] };
24         return $str;
25 }
26
27 sub rgb48 {
28         my $str = '';
29         $str .= sprintf '%02X', $_ for @{ $_[0] };
30         return $str;
31 }
32
33 1;
34