mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-04 22:19:38 +00:00
add more Color space conversions and some description
git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@5466 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
9db7336b25
commit
fc4b3460e8
112
FHEM/Color.pm
112
FHEM/Color.pm
@ -160,6 +160,12 @@ BrightnessToChannels($) {
|
||||
return @channels;
|
||||
}
|
||||
|
||||
|
||||
# COLOR SPACE: HSV & RGB(dec)
|
||||
# HSV > h=float(0, 1), s=float(0, 1), v=float(0, 1)
|
||||
# RGB > r=int(0, 255), g=int(0, 255), b=int(0, 255)
|
||||
#
|
||||
|
||||
sub
|
||||
rgb2hsv($$$) {
|
||||
my( $r, $g, $b ) = @_;
|
||||
@ -239,4 +245,110 @@ hsv2rgb($$$) {
|
||||
return( $r,$g,$b );
|
||||
}
|
||||
|
||||
|
||||
# COLOR SPACE: HSB & RGB(dec)
|
||||
# HSB > h=int(0, 65535), s=int(0, 255), b=int(0, 255)
|
||||
# RGB > r=int(0, 255), g=int(0, 255), b=int(0, 255)
|
||||
#
|
||||
|
||||
sub
|
||||
hsb2rgb ($$$) {
|
||||
my ( $h, $s, $bri ) = @_;
|
||||
|
||||
my $h2 = $h / 65535.0;
|
||||
my $s2 = $s / 255.0;
|
||||
my $bri2 = $bri / 255.0;
|
||||
|
||||
my $rgb = Color::hsv2rgb( $h2, $s2, $bri2 );
|
||||
my $r = int( $rgb[0] * 255 );
|
||||
my $g = int( $rgb[1] * 255 );
|
||||
my $b = int( $rgb[2] * 255 );
|
||||
|
||||
return ( $h, $s, $bri );
|
||||
}
|
||||
|
||||
sub
|
||||
rgb2hsb ($$$) {
|
||||
my ( $r, $g, $b ) = @_;
|
||||
|
||||
my $r2 = $r / 255.0;
|
||||
my $g2 = $g / 255.0;
|
||||
my $b2 = $b / 255.0;
|
||||
|
||||
my $hsv = Color::rgb2hsv( $r2, $g2, $b2 );
|
||||
my $h = int( $hsv[0] * 65535 );
|
||||
my $s = int( $hsv[1] * 255 );
|
||||
my $bri = int( $hsv[2] * 255 );
|
||||
|
||||
return ( $h, $s, $bri );
|
||||
}
|
||||
|
||||
|
||||
# COLOR SPACE: RGB(hex) & HSV
|
||||
# RGB > r=hex(00, FF), g=hex(00, FF), b=hex(00, FF)
|
||||
# HSV > h=float(0, 1), s=float(0, 1), v=float(0, 1)
|
||||
#
|
||||
|
||||
sub
|
||||
hex2hsv($) {
|
||||
my ($hex) = @_;
|
||||
my $rgb = Color::hex2rgb($hex);
|
||||
|
||||
return Color::rgb2hsv( $rgb[0], $rgb[1], $rgb[2] );
|
||||
}
|
||||
|
||||
sub
|
||||
hsv2hex($$$) {
|
||||
my ( $h, $s, $v ) = @_;
|
||||
my $rgb = Color::hsv2rgb( $h, $s, $v );
|
||||
|
||||
return Color::rgb2hex( $rgb[0], $rgb[1], $rgb[2] );
|
||||
}
|
||||
|
||||
|
||||
# COLOR SPACE: RGB(hex) & HSB
|
||||
# RGB > r=hex(00, FF), g=hex(00, FF), b=hex(00, FF)
|
||||
# HSB > h=int(0, 65535), s=int(0, 255), b=int(0, 255)
|
||||
#
|
||||
|
||||
sub
|
||||
hex2hsb($) {
|
||||
my ($hex) = @_;
|
||||
my $rgb = Color::hex2rgb($hex);
|
||||
|
||||
return Color::rgb2hsb( $rgb[0], $rgb[1], $rgb[2] );
|
||||
}
|
||||
|
||||
sub
|
||||
hsb2hex($$$) {
|
||||
my ( $h, $s, $b ) = @_;
|
||||
my $rgb = Color::hsb2rgb( $h, $s, $b );
|
||||
|
||||
return Color::rgb2hex( $rgb[0], $rgb[1], $rgb[2] );
|
||||
}
|
||||
|
||||
|
||||
# COLOR SPACE: RGB(hex) & RGB(dec)
|
||||
# hex > r=hex(00, FF), s=hex(00, FF), v=hex(00, FF)
|
||||
# dec > r=int(0, 255), g=int(0, 255), b=int(0, 255)
|
||||
#
|
||||
|
||||
sub
|
||||
hex2rgb($) {
|
||||
my ($hex) = @_;
|
||||
if ( uc($hex) =~ /^(..)(..)(..)$/ ) {
|
||||
my ( $r, $g, $b ) = ( hex($1), hex($2), hex($3) );
|
||||
|
||||
return ( $r, $g, $b );
|
||||
}
|
||||
}
|
||||
|
||||
sub
|
||||
rgb2hex($$$) {
|
||||
my ( $r, $g, $b ) = @_;
|
||||
my $return = sprintf( "%2.2X%2.2X%2.2X", $r, $g, $b );
|
||||
|
||||
return uc($return);
|
||||
}
|
||||
|
||||
1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user