first commit

This commit is contained in:
Tomas Dvorak
2026-02-22 10:42:17 +01:00
commit 55885a0e8f
239 changed files with 103690 additions and 0 deletions
+136
View File
@@ -0,0 +1,136 @@
package scorecard
import "image/color"
// Scale for retina/high-DPI rendering
const Scale = 2
// Theme colors for the scorecard badge - warm earth-tone palette
var (
// BG is the main background (warm cream)
BG = color.RGBA{R: 247, G: 240, B: 228, A: 255}
// BGScore is the score panel background
BGScore = color.RGBA{R: 240, G: 232, B: 217, A: 255}
// BGTable is the table background
BGTable = color.RGBA{R: 240, G: 233, B: 220, A: 255}
// BGRowAlt is the alternate row background
BGRowAlt = color.RGBA{R: 234, G: 226, B: 212, A: 255}
// TEXT is the main text color (dark brown)
TEXT = color.RGBA{R: 58, G: 48, B: 38, A: 255}
// DIM is the dimmed text color (warm gray)
DIM = color.RGBA{R: 138, G: 122, B: 102, A: 255}
// BORDER is the inner border color (warm tan)
BORDER = color.RGBA{R: 192, G: 176, B: 152, A: 255}
// ACCENT is the accent color (warm brown)
ACCENT = color.RGBA{R: 148, G: 112, B: 82, A: 255}
// FRAME is the outer frame color (warm tan)
FRAME = color.RGBA{R: 172, G: 152, B: 126, A: 255}
)
// Score grade colors - gradient from sage to rose
var (
// GradeA is for scores 90-100% (deep sage green)
GradeA = color.RGBA{R: 68, G: 120, B: 68, A: 255}
// GradeB is for scores 70-89% (olive green)
GradeB = color.RGBA{R: 120, G: 140, B: 72, A: 255}
// GradeC is for scores 50-69% (yellow-green)
GradeC = color.RGBA{R: 145, G: 155, B: 80, A: 255}
// GradeD is for scores 30-49% (mustard)
GradeD = color.RGBA{R: 180, G: 150, B: 70, A: 255}
// GradeF is for scores 0-29% (dusty rose)
GradeF = color.RGBA{R: 170, G: 110, B: 90, A: 255}
)
// Muted score colors for strict column (pastel orange/peach shades)
var (
// GradeAMuted is muted version of GradeA
GradeAMuted = color.RGBA{R: 195, G: 160, B: 115, A: 255} // light sandy peach
// GradeBMuted is muted version of GradeB
GradeBMuted = color.RGBA{R: 200, G: 148, B: 100, A: 255} // warm apricot
// GradeCMuted is muted version of GradeC
GradeCMuted = color.RGBA{R: 195, G: 125, B: 95, A: 255} // soft coral
// GradeDMuted is muted version of GradeD
GradeDMuted = color.RGBA{R: 190, G: 130, B: 100, A: 255}
// GradeFMuted is muted version of GradeF
GradeFMuted = color.RGBA{R: 185, G: 120, B: 100, A: 255}
)
// Severity colors for findings
var (
SeverityT1Color = color.RGBA{R: 100, G: 180, B: 255, A: 255}
SeverityT2Color = color.RGBA{R: 255, G: 200, B: 100, A: 255}
SeverityT3Color = color.RGBA{R: 255, G: 140, B: 80, A: 255}
SeverityT4Color = color.RGBA{R: 255, G: 80, B: 80, A: 255}
)
func GetGradeColor(grade string) color.RGBA {
switch grade {
case "A":
return GradeA
case "B":
return GradeB
case "C":
return GradeC
case "D":
return GradeD
default:
return GradeF
}
}
func GetGradeColorMuted(grade string) color.RGBA {
switch grade {
case "A":
return GradeAMuted
case "B":
return GradeBMuted
case "C":
return GradeCMuted
case "D":
return GradeDMuted
default:
return GradeFMuted
}
}
func GetScoreGrade(score int) string {
switch {
case score >= 90:
return "A"
case score >= 70:
return "B"
case score >= 50:
return "C"
case score >= 30:
return "D"
default:
return "F"
}
}
func GetScoreColor(score int) color.RGBA {
return GetGradeColor(GetScoreGrade(score))
}
func GetScoreColorMuted(score int) color.RGBA {
return GetGradeColorMuted(GetScoreGrade(score))
}
func GetSeverityColor(severity int) color.RGBA {
switch severity {
case 1:
return SeverityT1Color
case 2:
return SeverityT2Color
case 3:
return SeverityT3Color
case 4:
return SeverityT4Color
default:
return DIM
}
}
func ScaleValue(v int) int {
return v * Scale
}