mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 10:56:10 +01:00 
			
		
		
		
	Actually compute proper foreground color for labels (#16729)
This commit is contained in:
		| @@ -24,6 +24,22 @@ import {SvgIcon} from '../svg.js'; | ||||
|  | ||||
| const {AppSubUrl} = window.config; | ||||
|  | ||||
| // NOTE: see models/issue_label.go for similar implementation | ||||
| const srgbToLinear = (color) => { | ||||
|   color /= 255; | ||||
|   if (color <= 0.04045) { | ||||
|     return color / 12.92; | ||||
|   } | ||||
|   return ((color + 0.055) / 1.055) ** 2.4; | ||||
| }; | ||||
| const luminance = (colorString) => { | ||||
|   const r = srgbToLinear(parseInt(colorString.substring(0, 2), 16)); | ||||
|   const g = srgbToLinear(parseInt(colorString.substring(2, 4), 16)); | ||||
|   const b = srgbToLinear(parseInt(colorString.substring(4, 6), 16)); | ||||
|   return 0.2126 * r + 0.7152 * g + 0.0722 * b; | ||||
| }; | ||||
| const luminanceThreshold = 0.179; | ||||
|  | ||||
| export default { | ||||
|   name: 'ContextPopup', | ||||
|  | ||||
| @@ -74,14 +90,13 @@ export default { | ||||
|  | ||||
|     labels() { | ||||
|       return this.issue.labels.map((label) => { | ||||
|         const red = parseInt(label.color.substring(0, 2), 16); | ||||
|         const green = parseInt(label.color.substring(2, 4), 16); | ||||
|         const blue = parseInt(label.color.substring(4, 6), 16); | ||||
|         let color = '#ffffff'; | ||||
|         if ((red * 0.299 + green * 0.587 + blue * 0.114) > 125) { | ||||
|           color = '#000000'; | ||||
|         let textColor; | ||||
|         if (luminance(label.color) < luminanceThreshold) { | ||||
|           textColor = '#ffffff'; | ||||
|         } else { | ||||
|           textColor = '#000000'; | ||||
|         } | ||||
|         return {name: label.name, color: `#${label.color}`, textColor: color}; | ||||
|         return {name: label.name, color: `#${label.color}`, textColor}; | ||||
|       }); | ||||
|     } | ||||
|   }, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user