#NEWLINE# def rgb_to_hsl( self , r , g , b , a = None ) : #NEWLINE# #INDENT# if ( not ( 0 <= r <= 255 ) ) : #NEWLINE# #INDENT# raise ValueError ( 'r (red) parameter must be between 0 and 255.' ) #NEWLINE# #UNINDENT# if ( not ( 0 <= g <= 255 ) ) : #NEWLINE# #INDENT# raise ValueError ( 'g (green) parameter must be between 0 and 255.' ) #NEWLINE# #UNINDENT# if ( not ( 0 <= b <= 255 ) ) : #NEWLINE# #INDENT# raise ValueError ( 'b (blue) parameter must be between 0 and 255.' ) #NEWLINE# #UNINDENT# var_R = ( r / 255.0 ) #NEWLINE# var_G = ( g / 255.0 ) #NEWLINE# var_B = ( b / 255.0 ) #NEWLINE# var_Min = min ( var_R , var_G , var_B ) #NEWLINE# var_Max = max ( var_R , var_G , var_B ) #NEWLINE# del_Max = ( var_Max - var_Min ) #NEWLINE# l = ( ( var_Max + var_Min ) / 2.0 ) #NEWLINE# h = 0.0 #NEWLINE# s = 0.0 #NEWLINE# if ( del_Max != 0.0 ) : #NEWLINE# #INDENT# if ( l < 0.5 ) : #NEWLINE# #INDENT# s = ( del_Max / ( var_Max + var_Min ) ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# s = ( del_Max / ( ( 2.0 - var_Max ) - var_Min ) ) #NEWLINE# #UNINDENT# del_R = ( ( ( ( var_Max - var_R ) / 6.0 ) + ( del_Max / 2.0 ) ) / del_Max ) #NEWLINE# del_G = ( ( ( ( var_Max - var_G ) / 6.0 ) + ( del_Max / 2.0 ) ) / del_Max ) #NEWLINE# del_B = ( ( ( ( var_Max - var_B ) / 6.0 ) + ( del_Max / 2.0 ) ) / del_Max ) #NEWLINE# if ( var_R == var_Max ) : #NEWLINE# #INDENT# h = ( del_B - del_G ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# if ( var_G == var_Max ) : #NEWLINE# #INDENT# h = ( ( ( 1.0 / 3.0 ) + del_R ) - del_B ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# if ( var_B == var_Max ) : #NEWLINE# #INDENT# h = ( ( ( 2.0 / 3.0 ) + del_G ) - del_R ) #NEWLINE# #UNINDENT# #UNINDENT# #UNINDENT# while ( h < 0.0 ) : #NEWLINE# #INDENT# h += 1.0 #NEWLINE# #UNINDENT# while ( h > 1.0 ) : #NEWLINE# #INDENT# h -= 1.0 #NEWLINE# #UNINDENT# #UNINDENT# if a : #NEWLINE# #INDENT# return ( h , s , l , a ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# return ( h , s , l )