degesch: pick colours based on relative luminance
Replaces the inaccurate Rec. 709 luma we used to use before. This is the first feature here that requires libm, which doesn't seem to be a particularly great sacrifice. Moreover, I've rectified that the input isn't linear in sRGB, and then was even normalized wrong for the luma formula.
This commit is contained in:
		
							
								
								
									
										23
									
								
								test-nick-colors
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										23
									
								
								test-nick-colors
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
# Check whether the terminal colours filtered by our algorithm are legible
 | 
			
		||||
export example=$(
 | 
			
		||||
	tcc "-run -lm" - <<-EOF
 | 
			
		||||
	#include <stddef.h>
 | 
			
		||||
	#include <stdio.h>
 | 
			
		||||
	#include <math.h>
 | 
			
		||||
 | 
			
		||||
	$(perl -0777 -ne 'print $& if /^.*?\nfilter_color(?s:.*?)^}$/m' degesch.c)
 | 
			
		||||
 | 
			
		||||
	void main () {
 | 
			
		||||
		size_t len = 0;
 | 
			
		||||
		int *table = filter_color_cube_for_acceptable_nick_colors (&len);
 | 
			
		||||
		for (size_t i = 0; i < len; i++)
 | 
			
		||||
			printf ("<@\\x1b[38;5;%dmIRCuser\\x1b[m> I'm typing!\n", table[i]);
 | 
			
		||||
	}
 | 
			
		||||
	EOF
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Both should give acceptable results,
 | 
			
		||||
# which results in a bad compromise that the main author himself needs
 | 
			
		||||
xterm -bg black -fg white -e 'echo $example; cat' &
 | 
			
		||||
xterm -bg white -fg black -e 'echo $example; cat' &
 | 
			
		||||
		Reference in New Issue
	
	Block a user