feat(lyric): 批5 封面双色渐变取色 — SDK meow_img_color纯整数分桶主色+次色(副采样≤3.6k零分配)+launcher播放页/歌词页set_colors注入渐变主题+无封面回退全局主题+meow_lyric_view灰阶随覆盖cur修正;宿主C1-C7全过,0warning,未并入meow_ui.a
This commit is contained in:
1 parent
a3679e3688
commit
1f6d390e1c
6 files changed
+541
-22
No files matched your search
@@ -84,20 +84,24 @@ static void lv_resolve_colors(const meow_lyric_view *lv, const meow_theme *th,
|
||||
/* 内建默认(theme 驱动) */
|
||||
uint32_t scrim = th->scrim;
|
||||
if (scrim == 0) scrim = th->surfaceDim; /* scrim 缺省为黑:用 surfaceDim 兜底(非纯黑) */
|
||||
uint32_t cur = th->onSurface; /* dark=0xFFFFFF 纯白(活动行高亮) */
|
||||
out->scrim = scrim;
|
||||
out->cur = cur;
|
||||
out->cur = th->onSurface; /* dark=0xFFFFFF 纯白(活动行高亮) */
|
||||
out->scrim_alpha = 176;
|
||||
out->gray[0] = cur;
|
||||
for (int i = 1; i < 6; i++) out->gray[i] = lv_scale_col(cur, lv_gray_fac[i]);
|
||||
|
||||
if (!lv->has_colors) return;
|
||||
/* 用户覆盖(0 字段=沿用上面内建默认;scrim_alpha<0=沿用默认 176) */
|
||||
if (!lv->has_colors) {
|
||||
out->gray[0] = out->cur;
|
||||
for (int i = 1; i < 6; i++) out->gray[i] = lv_scale_col(out->cur, lv_gray_fac[i]);
|
||||
return;
|
||||
}
|
||||
/* 用户覆盖(0 字段=沿用内建默认;scrim_alpha<0=沿用默认 176)。
|
||||
* gray 显式字段优先;未给字段以「解析后 cur」为基准自动递减(对齐头文档
|
||||
* "gray[1..5]=对 cur 逐级缩灰"——覆盖 cur 后灰阶也应随 cur,而非随主题默认 onSurface)。 */
|
||||
if (lv->colors.scrim != 0) out->scrim = lv->colors.scrim;
|
||||
if (lv->colors.cur != 0) { out->cur = lv->colors.cur; out->gray[0] = lv->colors.cur; }
|
||||
if (lv->colors.cur != 0) out->cur = lv->colors.cur;
|
||||
if (lv->colors.scrim_alpha >= 0) out->scrim_alpha = lv->colors.scrim_alpha;
|
||||
for (int i = 0; i < 6; i++)
|
||||
if (lv->colors.gray[i] != 0) out->gray[i] = lv->colors.gray[i];
|
||||
out->gray[0] = (lv->colors.gray[0] != 0) ? lv->colors.gray[0] : out->cur;
|
||||
for (int i = 1; i < 6; i++)
|
||||
out->gray[i] = (lv->colors.gray[i] != 0) ? lv->colors.gray[i]
|
||||
: lv_scale_col(out->cur, lv_gray_fac[i]);
|
||||
}
|
||||
|
||||
/* 距活动行 dist 的生效行色(dist 越界 clamp 0..5)。 */
|
||||
|
||||
Reference in new issue
Block a user