优化代码
This commit is contained in:
1 parent
3553790475
commit
eda7e8bc96
23 files changed
+3113
-342
No files matched your search
+31
-4
@@ -23,19 +23,46 @@ func withAlpha(c color.Color, a uint8) color.Color {
|
||||
return n
|
||||
}
|
||||
|
||||
// mix 按比例把 b 混进 a,用来按前景/背景派生灰度层级。
|
||||
// 这样气泡底色永远跟着主题走,文字与底色对比也始终够。
|
||||
func mix(a, b color.Color, t float32) color.Color {
|
||||
an := color.NRGBAModel.Convert(a).(color.NRGBA)
|
||||
bn := color.NRGBAModel.Convert(b).(color.NRGBA)
|
||||
blend := func(x, y uint8) uint8 {
|
||||
return uint8(float32(x) + (float32(y)-float32(x))*t)
|
||||
}
|
||||
return color.NRGBA{
|
||||
R: blend(an.R, bn.R),
|
||||
G: blend(an.G, bn.G),
|
||||
B: blend(an.B, bn.B),
|
||||
A: 0xFF,
|
||||
}
|
||||
}
|
||||
|
||||
// 界面配色集中在这里,方便统一调整。
|
||||
// 所有颜色都从当前主题派生,因此黑白主题下自动变成纯灰度。
|
||||
|
||||
// colorUserBubble 是用户气泡:比助手气泡略深一层,文字仍是前景色。
|
||||
func colorUserBubble() color.Color {
|
||||
return withAlpha(lookupColor(theme.ColorNamePrimary), 0x3A)
|
||||
return mix(lookupColor(theme.ColorNameBackground), lookupColor(theme.ColorNameForeground), 0.18)
|
||||
}
|
||||
|
||||
// colorBotBubble 是助手气泡:贴着画布底色,只比背景亮一点点。
|
||||
func colorBotBubble() color.Color {
|
||||
return withAlpha(lookupColor(theme.ColorNameInputBackground), 0xF2)
|
||||
return mix(lookupColor(theme.ColorNameBackground), lookupColor(theme.ColorNameForeground), 0.06)
|
||||
}
|
||||
|
||||
// colorErrBubble 是提示/错误气泡:中等灰度,靠边框区分。
|
||||
func colorErrBubble() color.Color {
|
||||
return withAlpha(lookupColor(theme.ColorNameError), 0x28)
|
||||
return mix(lookupColor(theme.ColorNameBackground), lookupColor(theme.ColorNameForeground), 0.10)
|
||||
}
|
||||
|
||||
// colorBorder 是气泡描边。
|
||||
func colorBorder() color.Color {
|
||||
return withAlpha(lookupColor(theme.ColorNameInputBorder), 0xB0)
|
||||
return mix(lookupColor(theme.ColorNameBackground), lookupColor(theme.ColorNameForeground), 0.45)
|
||||
}
|
||||
|
||||
// colorStrongBorder 是需要格外醒目的描边(错误提示用)。
|
||||
func colorStrongBorder() color.Color {
|
||||
return lookupColor(theme.ColorNameForeground)
|
||||
}
|
||||
Reference in new issue
Block a user