Subname: ContrastColor
Description:
If you have an app in which the user can change the background colour you need to be able to change the text colour of controls accordingly. I found a code snippet that returns black or white depending on the luminosity of a colour which seems to do the trick so I thought I'd share it. the code was found here
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
The Sub requires an Int which is fine for B4a, B4i and XUI, If you want to use it in B4j without XUI then you can convert a Paint object to an int using
Tags: Contrast, Color, B4j, B4a,B4i, XUI
			
			Description:
If you have an app in which the user can change the background colour you need to be able to change the text colour of controls accordingly. I found a code snippet that returns black or white depending on the luminosity of a colour which seems to do the trick so I thought I'd share it. the code was found here
			
				Contrast Color:
			
		
		
		Public Sub ContrastColor(Color As Int) As Int
    'From https://stackoverflow.com/a/41335343
    'Counting the perceptive luminance - human eye favors green color...
    '                                        Red                                           Green                                       Blue
    Dim A As Double = 1 - (0.299 * Bit.And(Bit.ShiftRight(Color,16),0xFF) + 0.587 * Bit.And(Bit.ShiftRight(Color,8),0XFF) + 0.114 * Bit.And(Color,0xFF)) / 255
    If A < 0.5 Then
        Return XUI.Color_Black
    Else
        Return XUI.Color_White
    End If
End Sub
	The Sub requires an Int which is fine for B4a, B4i and XUI, If you want to use it in B4j without XUI then you can convert a Paint object to an int using
fx.Colors.To32Bit and fx.Colors.From32Bit and change the Return Type and objects as necessary.Tags: Contrast, Color, B4j, B4a,B4i, XUI
			
				Last edited: