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;
|
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
|
sub
|
||||||
rgb2hsv($$$) {
|
rgb2hsv($$$) {
|
||||||
my( $r, $g, $b ) = @_;
|
my( $r, $g, $b ) = @_;
|
||||||
@ -239,4 +245,110 @@ hsv2rgb($$$) {
|
|||||||
return( $r,$g,$b );
|
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;
|
1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user