From dce12c63a2149d78e25acddfe275977d3b0d0a8e Mon Sep 17 00:00:00 2001 From: AskaEth Date: Thu, 3 Sep 2026 17:56:27 +0800 Subject: [PATCH] =?UTF-8?q?feat(sdk):=20=E6=89=B92=20meow=5Flyric=5Fview?= =?UTF-8?q?=20=E6=AD=8C=E8=AF=8D=E9=A1=B5=E6=B8=B2=E6=9F=93=E6=8E=A7?= =?UTF-8?q?=E4=BB=B6=20=E2=80=94=20=E4=B8=8A=E6=94=B6ncm=E6=88=90=E7=86=9F?= =?UTF-8?q?=E5=B8=83=E5=B1=80(=E6=B4=BB=E5=8A=A8=E8=A1=8C=E7=BA=AF?= =?UTF-8?q?=E7=99=BD/=E7=81=B0=E9=98=B6/=E5=81=8F=E4=B8=8A=E9=94=9A?= =?UTF-8?q?=E5=AE=9A/=E7=BF=BB=E8=AF=91=E8=A1=8C=E4=B8=8D=E5=8F=A0?= =?UTF-8?q?=E8=A1=8C/=E6=8A=98=E8=A1=8C/=E7=82=B9=E8=A1=8Cseek),=E5=B8=83?= =?UTF-8?q?=E5=B1=80=E5=91=BD=E4=B8=AD=E7=BB=98=E5=88=B6=E5=90=8C=E6=BA=90?= =?UTF-8?q?,=E5=AE=BF=E4=B8=BBL1-L7=E5=85=A8=E8=BF=87,=E9=A2=84=E7=95=99?= =?UTF-8?q?=E6=89=B95=E5=8F=96=E8=89=B2set=5Fcolors,=E6=9A=82=E4=B8=8D?= =?UTF-8?q?=E5=B9=B6=E5=85=A5meow=5Fui.a?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- patch_v2/sdk/meow_lyric_view.c | 358 ++++++++++++++++++++++++++++ patch_v2/sdk/meow_lyric_view.h | 110 +++++++++ patch_v2/sdk/test_meow_lyric_view | Bin 0 -> 515640 bytes patch_v2/sdk/test_meow_lyric_view.c | 319 +++++++++++++++++++++++++ 4 files changed, 787 insertions(+) create mode 100644 patch_v2/sdk/meow_lyric_view.c create mode 100644 patch_v2/sdk/meow_lyric_view.h create mode 100755 patch_v2/sdk/test_meow_lyric_view create mode 100644 patch_v2/sdk/test_meow_lyric_view.c diff --git a/patch_v2/sdk/meow_lyric_view.c b/patch_v2/sdk/meow_lyric_view.c new file mode 100644 index 0000000..0bbb604 --- /dev/null +++ b/patch_v2/sdk/meow_lyric_view.c @@ -0,0 +1,358 @@ +/* + * meow_lyric_view.c — SDK 通用歌词页渲染控件实现(见 meow_lyric_view.h 的契约说明)。 + * + * 上收自 ncm_app/app/ui/player.c:lyr_layout(活动行块中心偏上锚定、上方 ≥LYR_ABOVE_MIN 行已过、 + * 下填满、总 ≤LYR_MAX_ROWS)+ plr_draw_lyrics(活动行纯白、上下行逐级灰阶、翻译紧跟随不叠行, + * 块高含翻译行是 agent-380 修好 s_lyr_bh 的关键)+ lyrics_line_tap(命中=布局逐块扫描)。折行复用 + * 批1 meow_lyric_wrap(=ncm lyr_wrap_lines 的通用化),宽度测量经注入的 meow_lyric_width_fn。 + * + * 控件形态:W_CUSTOM 自绘画布(meow_widget_custom_create),render_cb/hit_cb 由本 TU 实现。 + * 布局(lv_compute_layout)计算结果缓存在 lv->vis[0..vis_n),绘制/命中/公开查询共用,三者一致。 + * + * 内存纪律:per-instance struct(calloc);布局数组定长 [MEOW_LYRIC_VIEW_MAX_ROWS];折行复用缓冲 + * 一块 [MEOW_LYRIC_VIEW_MAX_ROWS][MEOW_LYRIC_SEG_SZ](逐条目复用,同 ncm s_lyr_seg 模式); + * 零临时堆分配(meow_lyric_wrap 静态缓冲)。 + */ +#include "meow_lyric_view.h" +#include "meow_ui_internal.h" /* meow_widget_rect:widget 为不透明类型,取几何用访问器 */ + +#include +#include + +/* 折行宽测量的兜底:字节数近似(仅当使用方未注入 width 时;非像素精确)。 + * 保证无渲染引擎下行为确定(maxw 作字节预算,仍按中西文断行)——同 meow_lyric_wrap 的 NULL 语义。 */ +static int lv_default_width(const char *u, int size, void *ctx) +{ + (void)size; (void)ctx; + return (int)strlen(u); +} + +/* 逐通道比例缩放(t=0..255,255=原色)。灰度递减用:对 cur 逐级缩灰(对纯白即复现 ncm 灰阶表)。 */ +static uint32_t lv_scale_col(uint32_t c, int t) +{ + int r = ((int)((c >> 16) & 255) * t) / 255; + int g = ((int)((c >> 8) & 255) * t) / 255; + int b = ((int)( c & 255) * t) / 255; + return ((uint32_t)r << 16) | ((uint32_t)g << 8) | (uint32_t)b; +} + +/* 灰阶比例(距活动行 0..5):0xFFFFFF→{FFFFFF,BBBBBB,929292,808080,6A6A6A,555555}(ncm lyr_gray_tbl)。 + * 对非纯白 cur 按同比例缩灰,仍单调变灰。 */ +static const int lv_gray_fac[6] = { 255, 187, 146, 128, 106, 85 }; + +/* 两色线性混合(t=0..255,0=纯 a、255=纯 b)。翻译行融入背景用(无 GPU,逐通道整数混)。 */ +static uint32_t lv_mix(uint32_t a, uint32_t b, int t) +{ + if (t < 0) t = 0; + if (t > 255) t = 255; + int ar = (a >> 16) & 255, ag = (a >> 8) & 255, ab = a & 255; + int br = (b >> 16) & 255, bg = (b >> 8) & 255, bb = b & 255; + int r = ar + ((br - ar) * t + 128) / 255; + int g = ag + ((bg - ag) * t + 128) / 255; + int bl = ab + ((bb - ab) * t + 128) / 255; + return ((uint32_t)r << 16) | ((uint32_t)g << 8) | (uint32_t)bl; +} + +struct meow_lyric_view { + meow_widget *w; + /* 宽度测量(复用批1 meow_lyric_wrap 的 width_fn 约定;NULL→字节近似兜底) */ + meow_lyric_width_fn width; + void *width_ctx; + int64_t pos_ms; /* 当前播放位置(UI 线程写) */ + meow_lyric_view_colors colors; /* 用户覆盖(has_colors=1 生效;否则主题默认) */ + int has_colors; + meow_lyric_view_layout l; /* 布局参数(内建默认/用户覆盖) */ + char empty[64]; /* 无歌词占位文案 */ + meow_lyric_seek_fn on_seek; + void *seek_ctx; + /* 布局暂存(每次 lv_compute_layout 重建;UI 线程串行,per-instance 复用) */ + meow_lyric_view_vis vis[MEOW_LYRIC_VIEW_MAX_ROWS]; + int vis_n; + char seg[MEOW_LYRIC_VIEW_MAX_ROWS][MEOW_LYRIC_SEG_SZ]; /* 折行复用缓冲(逐条目覆盖) */ +}; + +/* 内建默认布局(对齐 ncm LYR_PAD/SUB_LH/CUR_SZ/OTH_SZ/TL_SZ/MAX_ROWS/ABOVE_MIN/ABOVE_OFF)。 */ +static const meow_lyric_view_layout k_def_layout = { + 24, 44, 28, 24, 20, MEOW_LYRIC_VIEW_MAX_ROWS, 2, 50 +}; +static const char k_def_empty[] = "歌词加载中…"; + +/* 解析生效色:!has_colors 或字段 0/scrim_alpha<0 → 主题默认;否则用覆盖。out 必填。 */ +static void lv_resolve_colors(const meow_lyric_view *lv, const meow_theme *th, + meow_lyric_view_colors *out) +{ + /* 内建默认(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->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->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.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]; +} + +/* 距活动行 dist 的生效行色(dist 越界 clamp 0..5)。 */ +static uint32_t lv_line_color(const meow_lyric_view *lv, const meow_theme *th, int dist) +{ + meow_lyric_view_colors c; + lv_resolve_colors(lv, th, &c); + if (dist < 0) dist = 0; + if (dist > 5) dist = 5; + return c.gray[dist]; +} + +/* 折行封套(width 缺省兜底;越界 max_rows 内 clamp 到缓冲容量)。返回段数(≥1)。 */ +static int lv_wrap(const meow_lyric_view *lv, const char *txt, int size, int maxw, + char seg[][MEOW_LYRIC_SEG_SZ], int max_rows) +{ + meow_lyric_width_fn w = lv->width ? lv->width : lv_default_width; + if (max_rows > MEOW_LYRIC_VIEW_MAX_ROWS) max_rows = MEOW_LYRIC_VIEW_MAX_ROWS; + int rc = meow_lyric_wrap(txt, size, maxw, seg, max_rows, w, lv->width_ctx); + if (rc > max_rows) rc = max_rows; + return rc; +} + +/* 核心布局:按 pos_ms 计算可见条目(vis[0..n)。算法与 ncm lyr_layout 逐行为一致)—— + * 活动行块中心锚定在视图中线 - above_off(偏上);上方保底 ≥above_min 行已过;下填满;总 ≤max_rows; + * 块高 bh = 原文折行数 rw + 当前行翻译占 1(其余条目无翻译,bh=rw;翻译不叠行,点行命中一致)。 */ +static int lv_compute_layout(meow_lyric_view *lv, int64_t pos_ms, int maxw) +{ + int n = meow_lyric_count(); + int cur = (n > 0) ? meow_lyric_line_at(pos_ms) : -1; + memset(lv->vis, 0, sizeof(lv->vis)); + lv->vis_n = 0; + if (cur < 0 || cur >= n) return 0; + + int MAX = lv->l.max_rows; + if (MAX > MEOW_LYRIC_VIEW_MAX_ROWS) MAX = MEOW_LYRIC_VIEW_MAX_ROWS; + if (MAX < 1) MAX = 1; + + int rc = lv_wrap(lv, meow_lyric_line_text(cur), lv->l.cur_sz, maxw, lv->seg, MAX); + const char *tl = meow_lyric_line_tl(cur); + int has_tl = (tl && tl[0]) ? 1 : 0; + int rc_tot = rc + has_tl; /* 活动行块总子行数(原文折行 + 翻译行) */ + + int cap = MAX - rc_tot; /* 活动行之外可用的视觉行数 */ + if (cap < 0) cap = 0; + int above_want = (cap * 2) / 5; /* 偏上锚定:约 40% 行给上方 */ + if (above_want > cur) above_want = cur; /* 上方行数上限 = 已过行数 */ + if (above_want < lv->l.above_min) above_want = (cur >= lv->l.above_min) ? lv->l.above_min : cur; + if (above_want > cap) above_want = cap; /* 总行数 ≤ MAX */ + + /* 1) 上方(cur-1 向上)前插到头部,保持自顶向下 */ + int a_cnt = 0, usedA = 0; + for (int i = cur - 1; i >= 0 && usedA < above_want; i--) { + int rr = lv_wrap(lv, meow_lyric_line_text(i), lv->l.oth_sz, maxw, lv->seg, MAX); + if (usedA + rr > above_want) break; + for (int k = a_cnt; k > 0; k--) lv->vis[k] = lv->vis[k - 1]; + lv->vis[0].ent = i; lv->vis[0].rw = rr; lv->vis[0].bh = rr; lv->vis[0].sz = lv->l.oth_sz; + a_cnt++; usedA += rr; + } + /* 2) 当前行 */ + lv->vis[a_cnt].ent = cur; lv->vis[a_cnt].rw = rc; lv->vis[a_cnt].bh = rc_tot; lv->vis[a_cnt].sz = lv->l.cur_sz; + /* 3) 下方(cur+1 向下) */ + int below_want = cap - usedA; + if (below_want > (n - 1 - cur)) below_want = n - 1 - cur; + int b_cnt = 0, usedB = 0; + for (int i = cur + 1; i < n && usedB < below_want; i++) { + int rr = lv_wrap(lv, meow_lyric_line_text(i), lv->l.oth_sz, maxw, lv->seg, MAX); + if (usedB + rr > below_want) break; + int k = a_cnt + 1 + b_cnt; + lv->vis[k].ent = i; lv->vis[k].rw = rr; lv->vis[k].bh = rr; lv->vis[k].sz = lv->l.oth_sz; + b_cnt++; usedB += rr; + } + int cnt = a_cnt + 1 + b_cnt; + if (cnt == 0) return 0; + + /* 4) y 定位:活动行原文块中心 = 视图中线 - above_off(偏上);上方向上、下方向下(块间无缝隙) */ + int rect[4]; meow_widget_rect(lv->w, rect); + int anchor = rect[1] + rect[3] / 2 - lv->l.above_off; /* rect[1]=vy, rect[3]=vh */ + lv->vis[a_cnt].y = anchor - rc * lv->l.sub_lh / 2; + for (int k = a_cnt + 1; k < cnt; k++) + lv->vis[k].y = lv->vis[k - 1].y + lv->vis[k - 1].bh * lv->l.sub_lh; + for (int k = a_cnt - 1; k >= 0; k--) + lv->vis[k].y = lv->vis[k + 1].y - lv->vis[k].bh * lv->l.sub_lh; + lv->vis_n = cnt; + return cnt; +} + +/* 自绘回调:scrim 底 + 滚动歌词(活动行纯白偏上锚定 + 上下行逐级灰阶)+ 翻译行(不叠行)+ 空态占位。 */ +static void lv_render(meow_widget *w, const meow_theme *th, void *ctx) +{ + meow_lyric_view *lv = (meow_lyric_view *)ctx; + int rect[4]; meow_widget_rect(w, rect); + int x = rect[0], vy = rect[1], W = rect[2], H = rect[3]; + meow_lyric_view_colors col; + lv_resolve_colors(lv, th, &col); + + /* 背景 scrim(半透明叠在封面之上;scrim_alpha==0=不画,App 已自绘叠加层)。 */ + if (col.scrim_alpha > 0) meow_ui_fill_rect_alpha(x, vy, W, H, col.scrim, col.scrim_alpha); + + int n = meow_lyric_count(); + int cur = (n > 0) ? meow_lyric_line_at(lv->pos_ms) : -1; + int maxw = W - 2 * lv->l.pad; if (maxw < 1) maxw = 1; + int cnt = lv_compute_layout(lv, lv->pos_ms, maxw); + uint32_t bgcol = col.scrim; /* 翻译行融入背景(渐隐) */ + for (int k = 0; k < cnt; k++) { + int i = lv->vis[k].ent, rows = lv->vis[k].rw, sz = lv->vis[k].sz, vsy = lv->vis[k].y; + int is_cur = (i == cur); + int dist = is_cur ? 0 : ((i - cur) < 0 ? (cur - i) : (i - cur)); + uint32_t c = lv_line_color(lv, th, dist); + int rr = lv_wrap(lv, meow_lyric_line_text(i), sz, maxw, lv->seg, rows); + if (rr > rows) rr = rows; + for (int r = 0; r < rr; r++) + meow_ui_text(x + lv->l.pad, vsy + r * lv->l.sub_lh, lv->seg[r], sz, c); + if (is_cur) { + const char *tl = meow_lyric_line_tl(i); + if (tl && tl[0]) + meow_ui_text(x + lv->l.pad, vsy + rows * lv->l.sub_lh + 2, tl, + lv->l.tl_sz, lv_mix(0xFFFFFF, bgcol, 120)); + } + } + if (n == 0) + meow_ui_text(x + lv->l.pad, vy + H / 2 - 10, lv->empty, 20, col.cur); +} + +/* 命中回调:点行 seek(用与绘制一致的布局逐块扫描;块外就近取整)。 + * 命中某行 → 存 last 行 + 回调 on_seek(ms)(若有),返回 1=消费;否则 0。 */ +static int lv_hit_cb(meow_widget *w, int gx, int gy, void *ctx) +{ + meow_lyric_view *lv = (meow_lyric_view *)ctx; + int rect[4]; meow_widget_rect(w, rect); + int rx = rect[0], ry = rect[1], rw = rect[2], rh = rect[3]; + /* 视图矩形内含判定(含边缘;点必须在控件内)。 */ + if (gx < rx || gx >= rx + rw || gy < ry || gy >= ry + rh) return 0; + int n = meow_lyric_count(); + if (n <= 0) return 0; + int maxw = rw - 2 * lv->l.pad; if (maxw < 1) maxw = 1; + int cnt = lv_compute_layout(lv, lv->pos_ms, maxw); + if (cnt <= 0) return 0; + int line = -1; + for (int k = 0; k < cnt; k++) { + int yb = lv->vis[k].y; + int yh = lv->vis[k].bh * lv->l.sub_lh; /* 块高含当前行翻译,点翻译行归本行 */ + if (gy >= yb && gy < yb + yh) { line = lv->vis[k].ent; break; } + } + if (line < 0) /* 落在可见块之外 → 就近取整(顶部/底部可见行) */ + line = (gy < lv->vis[0].y) ? lv->vis[0].ent : lv->vis[cnt - 1].ent; + if (lv->on_seek) { + int64_t t = meow_lyric_line_time(line); + if (t >= 0) lv->on_seek(t, lv->seek_ctx); + } + return 1; +} + +/* ---- 生命周期 ---- */ +meow_lyric_view *meow_lyric_view_create(int x, int y, int w, int h, + meow_lyric_width_fn width, void *width_ctx) +{ + meow_lyric_view *lv = (meow_lyric_view *)calloc(1, sizeof *lv); + if (!lv) return NULL; + lv->w = meow_widget_custom_create(x, y, w, h, lv_render, lv_hit_cb, lv); + if (!lv->w) { free(lv); return NULL; } + lv->width = width; + lv->width_ctx = width_ctx; + lv->l = k_def_layout; + memcpy(lv->empty, k_def_empty, sizeof k_def_empty); + return lv; +} + +void meow_lyric_view_free(meow_lyric_view *lv) +{ + if (!lv) return; + if (lv->w) meow_widget_free(lv->w); + free(lv); +} + +meow_widget *meow_lyric_view_widget(const meow_lyric_view *lv) +{ + return lv ? lv->w : NULL; +} + +void meow_lyric_view_set_pos(meow_lyric_view *lv, int64_t pos_ms) +{ + if (lv) lv->pos_ms = pos_ms; +} + +void meow_lyric_view_set_colors(meow_lyric_view *lv, const meow_lyric_view_colors *c) +{ + if (!lv) return; + if (!c) { lv->has_colors = 0; return; } + lv->colors = *c; + lv->has_colors = 1; +} + +void meow_lyric_view_set_layout(meow_lyric_view *lv, const meow_lyric_view_layout *ls) +{ + if (!lv) return; + lv->l = ls ? *ls : k_def_layout; +} + +void meow_lyric_view_set_empty(meow_lyric_view *lv, const char *txt) +{ + if (!lv) return; + if (!txt || !txt[0]) { lv->empty[0] = 0; return; } + strncpy(lv->empty, txt, sizeof lv->empty - 1); + lv->empty[sizeof lv->empty - 1] = 0; +} + +void meow_lyric_view_set_on_seek(meow_lyric_view *lv, meow_lyric_seek_fn cb, void *ctx) +{ + if (!lv) return; + lv->on_seek = cb; + lv->seek_ctx = ctx; +} + +/* ---- 查询 ---- */ +uint32_t meow_lyric_view_cur_color(const meow_lyric_view *lv) +{ + if (!lv) return 0; + return lv_line_color(lv, meow_theme_get(), 0); +} + +uint32_t meow_lyric_view_line_color(const meow_lyric_view *lv, int dist) +{ + if (!lv) return 0; + return lv_line_color(lv, meow_theme_get(), dist); +} + +int meow_lyric_view_hit_line(meow_lyric_view *lv, int x, int y) +{ + if (!lv || !lv->w) return -1; + int rect[4]; meow_widget_rect(lv->w, rect); + int rx = rect[0], ry = rect[1], rw = rect[2], rh = rect[3]; + if (x < rx || x >= rx + rw || y < ry || y >= ry + rh) return -1; + int n = meow_lyric_count(); + if (n <= 0) return -1; + int maxw = rw - 2 * lv->l.pad; if (maxw < 1) maxw = 1; + int cnt = lv_compute_layout(lv, lv->pos_ms, maxw); + if (cnt <= 0) return -1; + for (int k = 0; k < cnt; k++) { + int yb = lv->vis[k].y, yh = lv->vis[k].bh * lv->l.sub_lh; + if (y >= yb && y < yb + yh) return lv->vis[k].ent; + } + return (y < lv->vis[0].y) ? lv->vis[0].ent : lv->vis[cnt - 1].ent; +} + +int meow_lyric_view_visible(meow_lyric_view *lv, int64_t pos_ms, + meow_lyric_view_vis *out, int cap) +{ + if (!lv || !lv->w) return 0; + int rect[4]; meow_widget_rect(lv->w, rect); + int maxw = rect[2] - 2 * lv->l.pad; if (maxw < 1) maxw = 1; + int cnt = lv_compute_layout(lv, pos_ms, maxw); + if (out && cnt > 0) { + int n = (cnt < cap) ? cnt : cap; + for (int i = 0; i < n; i++) out[i] = lv->vis[i]; + } + return cnt; +} diff --git a/patch_v2/sdk/meow_lyric_view.h b/patch_v2/sdk/meow_lyric_view.h new file mode 100644 index 0000000..ba34b4f --- /dev/null +++ b/patch_v2/sdk/meow_lyric_view.h @@ -0,0 +1,110 @@ +/* + * meow_lyric_view.h — MeowOS SDK 通用歌词页渲染控件(可复用,供 launcher Now Playing 与 ncm 共用)。 + * + * 定位:把 ncm_app/app/ui/player.c 已成熟(agent-380 修好 s_lyr_bh)的歌词页布局上收成 SDK 控件。 + * 能力对齐 ncm 歌词页:活动行纯白(居中偏上锚定)、上下行按行距逐级灰阶、翻译行紧跟原文行不叠行 + * (块高含翻译行)、超宽折行(中西文兼容)、上方保底 ≥above_min 行已过、总视觉行数 ≤max_rows、 + * 点行 seek 命中与绘制一致(同一布局函数)。 + * + * 数据来源:**绑定批1 meow_lyric**(解析/查询 API:meow_lyric_count/line_at/line_text/line_tl/line_time, + * 全局单例,线程安全)+ 播放位置(meow_lyric_view_set_pos)。宽度测量用回调注入 + * (`meow_lyric_width_fn`,包 meow_ui_text_width 的包装;宿主测试传自己的测量函数)。 + * + * 控件形态:内部持一个 `meow_widget`(W_CUSTOM 自定义画布),经 meow_lyric_view_widget() 取出供 + * meow_widget_draw/hit/注册;render_cb/hit_cb 都由本控件自绘/自判。App 也可只用纯查询接口 + * (meow_lyric_view_visible/hit_line)在自绘流程里复用布局逻辑。 + * + * 主题:用 SDK 全局 meow_theme 为默认(明暗背景 scrim、活动行 onSurface=dark 纯白、灰阶递减), + * 为批5「封面取色动态主题」预留 meow_lyric_view_set_colors 覆盖入口(字段 0=仍用主题默认)。 + * + * 依赖:纯 SDK(meow_ui.h + meow_lyric.h),不引任何 ncm 私有符号;可链 meow_ui.a 使用, + * 亦可宿主 gcc 单测(同 test_now_playing_widgets 链法)。本头为**独立公共头**(仿 meow_ui_view.h + * 模式,不随 meow_ui.h 伞头发布),App 显式 `#include "meow_lyric_view.h"`。 + * + * 命名:API 一律 `meow_lyric_view_*`(对齐 SDK 规范);控件内布局/绘制/命中共享同一 + * meow_lyric_view_visible 计算,保证「点行 seek 命中与绘制一致」。 + */ +#ifndef MEOW_LYRIC_VIEW_H +#define MEOW_LYRIC_VIEW_H + +#include "meow_ui.h" /* meow_widget / meow_theme / meow_ui_text 等 */ +#include "meow_lyric.h" /* meow_lyric_width_fn + 行查询 API(批1) */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct meow_lyric_view meow_lyric_view; + +/* 可见层数硬上限(对齐 ncm LYR_MAX_ROWS;数组按此定容,运行时 layout.max_rows 不得越此)。 */ +#define MEOW_LYRIC_VIEW_MAX_ROWS 9 + +/* ---- 可见条目(布局/命中/绘制共用,宿主可测)---- + * ent=歌词行下标;rw=原文折行段数;bh=块高(子行数)=rw + 当前行翻译占 1(其余条目 bh=rw); + * sz=该条目字号;y=块顶 y(绝对屏幕坐标)。 */ +typedef struct meow_lyric_view_vis { + int ent; + int rw; + int bh; + int sz; + int y; +} meow_lyric_view_vis; + +/* ---- 主题色覆盖(批5 封面取色动态主题预留)---- + * 全部字段:0(scrim_alpha<0)= 用 meow_theme 内建默认;显式值 = 覆盖。 + * 默认映射:scrim=th->scrim(黑叠加在封面之上,alpha 176);cur=th->onSurface(dark=0xFFFFFF 纯白); + * gray[0]=cur,gray[1..5]=对 cur 逐级缩灰(对纯白即 ncm 的 {BBBBBB,929292,808080,6A6A6A,555555})。 + * scrim_alpha==0 = 不画 scrim(App 已自绘封面/叠加层时用)。 */ +typedef struct meow_lyric_view_colors { + uint32_t scrim; /* 背景 scrim 色(半透明叠加在封面之上) */ + uint32_t cur; /* 活动行色(默认 th->onSurface;dark 下=纯白) */ + uint32_t gray[6]; /* 距活动行 0..5 灰阶;gray[0]=cur。字段 0=自动递减 */ + int scrim_alpha; /* scrim 透明度 0-255;<0=默认(176);0=不画 scrim */ +} meow_lyric_view_colors; + +/* ---- 布局参数(对齐 ncm;NULL=内建默认)---- */ +typedef struct meow_lyric_view_layout { + int pad; /* 左边距(默认 24) */ + int sub_lh; /* 子行高(默认 44) */ + int cur_sz; /* 活动行字号(默认 28) */ + int oth_sz; /* 上下行字号(默认 24) */ + int tl_sz; /* 当前行翻译字号(默认 20) */ + int max_rows; /* 可见视觉行数上限(默认 9;≤MEOW_LYRIC_VIEW_MAX_ROWS) */ + int above_min; /* 活动行上方保底已过行数(默认 2) */ + int above_off; /* 活动行块中心相对视图中线偏上 px(默认 50,需求3 偏上锚定) */ +} meow_lyric_view_layout; + +/* 点行 seek 回调:meow_lyric_view_set_on_seek 设置;命中某行后回调 line_time(ms)。 */ +typedef void (*meow_lyric_seek_fn)(int64_t ms, void *ctx); + +/* ---- 生命周期 ---- */ +meow_lyric_view *meow_lyric_view_create(int x, int y, int w, int h, + meow_lyric_width_fn width, void *width_ctx); +void meow_lyric_view_free(meow_lyric_view *lv); +/* 底层 W_CUSTOM meow_widget:App 用它做 draw/hit/注册(launcher 控件模型)。 */ +meow_widget *meow_lyric_view_widget(const meow_lyric_view *lv); + +/* ---- 数据绑定 ---- */ +void meow_lyric_view_set_pos(meow_lyric_view *lv, int64_t pos_ms); /* 播放器位置(ms) */ + +/* ---- 主题/布局/空态 ---- */ +void meow_lyric_view_set_colors(meow_lyric_view *lv, const meow_lyric_view_colors *c); /* NULL=回主题默认 */ +void meow_lyric_view_set_layout(meow_lyric_view *lv, const meow_lyric_view_layout *ls); /* NULL=回内建默认 */ +void meow_lyric_view_set_empty(meow_lyric_view *lv, const char *txt); /* 无歌词占位文案;NULL=默认 */ +/* 点行 seek(widget hit 命中时回调;App 也可只用 meow_lyric_view_hit_line 自行 seek)。 */ +void meow_lyric_view_set_on_seek(meow_lyric_view *lv, meow_lyric_seek_fn cb, void *ctx); + +/* ---- 查询 —— + * cur_color / line_color:取该视图生效(主题默认或覆盖)的活动行色 / 距活动行 dist(0..5) 行色。 + * visible:按 pos_ms 计算可见条目布局(与绘制/命中同一算法)写入 out[≤cap],返回条目数(≤0=空/无活动行)。 + * hit_line:点 (x,y) 命中某歌词行下标(与绘制一致的布局;块外就近取整);未命中返回 -1。 */ +uint32_t meow_lyric_view_cur_color(const meow_lyric_view *lv); +uint32_t meow_lyric_view_line_color(const meow_lyric_view *lv, int dist); +int meow_lyric_view_hit_line(meow_lyric_view *lv, int x, int y); +int meow_lyric_view_visible(meow_lyric_view *lv, int64_t pos_ms, + meow_lyric_view_vis *out, int cap); + +#ifdef __cplusplus +} +#endif +#endif /* MEOW_LYRIC_VIEW_H */ diff --git a/patch_v2/sdk/test_meow_lyric_view b/patch_v2/sdk/test_meow_lyric_view new file mode 100755 index 0000000000000000000000000000000000000000..6135fa59661f944a1c121f0de4c9e32c82f0e3ff GIT binary patch literal 515640 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%0D2x1HWfV9zq|( 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�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%0D5Wa18dq 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 QjvwgzFR_H;g@D)nFPYkTwg3PC literal 0 HcmV?d00001 diff --git a/patch_v2/sdk/test_meow_lyric_view.c b/patch_v2/sdk/test_meow_lyric_view.c new file mode 100644 index 0000000..5be898d --- /dev/null +++ b/patch_v2/sdk/test_meow_lyric_view.c @@ -0,0 +1,319 @@ +/* + * test_meow_lyric_view.c — meow_lyric_view(SDK 通用歌词页控件)宿主单测(2026-09-03,批2)。 + * + * 编译(宿主 gcc,链真实 gfx/sys/theme/vol/log/widget/input/activity/dialog/ime + 打桩 font/global; + * 另链批1 meow_lyric.c 提供歌词数据;meow_lyric_view.c 为被测控件): + * gcc -Wall -Wextra -o test_meow_lyric_view test_meow_lyric_view.c test_host_stub.c \ + * meow_lyric.c meow_lyric_view.c \ + * meow_ui_gfx.c meow_ui_sys.c meow_ui_theme.c meow_ui_vol.c meow_ui_log.c \ + * meow_ui_widget.c meow_ui_input.c meow_ui_activity.c meow_ui_dialog.c meow_ui_ime.c meow_ui_str.c \ + * meow_pinyin.c meow_ui_draw.c meow_ui_view.c meow_ui_box.c meow_ui_anim.c meow_ui_scroll.c \ + * meow_ui_img.c meow_ui_media.c meow_notify_ipc.c stb_image.c \ + * -I. -I../meow_launcherd -DMEOW_UI_HOST_TEST -pthread -lm + * 运行:./test_meow_lyric_view + * + * 覆盖矩阵(对齐任务批2:活动行纯白/灰阶、翻译行占位不叠行、偏上锚定、折行中西文、点行 seek 命中、 + * 主题换色、scrim 像素渲染): + * L1 活动行纯白 + 上下行逐级灰阶单调递减(dark 主题:onSurface=0xFFFFFF 纯白) + * L2 翻译行占位不叠行:3 行原文+翻译 → 活动行块高 bh=rw+1,下一块始于翻译行之后(块间无重叠) + * L3 偏上锚定:活动行原文块中心 = 视图中线 - above_off(严格偏上) + * L4 折行中西文:长行折成多段(rw>1),且块间按子行高排列 + * L5 点行 seek 命中:命中=布局一致(点块内/块外就近取整;点翻译行归本行不误触下一行) + * L6 主题换色:set_colors 覆盖活动行/灰阶/背景;NULL 恢复主题默认 + * L7 scrim 像素渲染:draw 后背底像素≈scrim 色(fill_rect_alpha 真实落地) + */ +#include "meow_ui.h" +#include "meow_ui_internal.h" /* meow_ui_back_buf/pitch/bpp:真实像素断言 */ +#include "meow_lyric_view.h" +#include +#include +#include +#include + +static int g_fail = 0; +#define CHECK(cond, name) do { \ + if (cond) printf(" PASS %s\n", name); \ + else { printf(" FAIL %s (%s:%d)\n", name, __FILE__, __LINE__); g_fail++; } } while (0) + +/* on_seek 回调收(验证 widget hit 路径回调接线)。 */ +static int64_t g_seek_ms = -1; +static void seek_cb(int64_t ms, void *ctx) { (void)ctx; g_seek_ms = ms; } + +/* ---- back_buf 像素读取(断言真实渲染) ---- */ +static void rd_px(int x, int y, int *r, int *g, int *b) +{ + unsigned char *bb = meow_ui_back_buf(); + int line = meow_ui_back_buf_pitch(), bpp = meow_ui_back_buf_bpp(); + if (!bb || x < 0 || y < 0) { *r = *g = *b = 0; return; } + if (bpp == 16) { + uint16_t px = *(uint16_t *)(bb + (size_t)y * line + (size_t)x * 2); + *r = (((px >> 11) & 0x1F) << 3) | ((px >> 11) & 0x1F) >> 2; + *g = (((px >> 5) & 0x3F) << 2) | ((px >> 5) & 0x3F) >> 4; + *b = ((px & 0x1F) << 3) | ((px & 0x1F) >> 2); + } else { + uint32_t px = *(uint32_t *)(bb + (size_t)y * line + (size_t)x * 4); + *r = (px >> 16) & 0xFF; *g = (px >> 8) & 0xFF; *b = px & 0xFF; + } +} +static int near2(int a, int b) { int d = a - b; if (d < 0) d = -d; return d <= 14; } +static int px_near(int x, int y, int r, int g, int b) +{ + int rr, gg, bb; rd_px(x, y, &rr, &gg, &bb); + return near2(rr, r) && near2(gg, g) && near2(bb, b); +} + +/* 折行宽测量(宿主):ASCII=1 单位,CJK 多字节=2 单位(中西文断行用)。 */ +static int lw(const char *u, int size, void *ctx) +{ + (void)size; (void)ctx; + int w = 0; + for (const char *p = u; *p; ) { + unsigned char c = (unsigned char)*p; + int ch = (c < 0x80) ? 1 : (c < 0xE0) ? 2 : (c < 0xF0) ? 3 : 4; + w += (c < 0x80) ? 1 : 2; + p += ch; + } + return w; +} + +/* 亮度(灰度单调性判断用)。 */ +static int lum(uint32_t c) +{ + return ((c >> 16) & 255) * 3 + ((c >> 8) & 255) * 6 + (c & 255); +} + +/* + * 测试歌词:7 行原创 + 两行翻译(与原文同戳合并)。下标: + * 0 First(1000) / 1 Second(2000,tl=第二句翻译) / 2 Third(3000) / 3 Fourth(4000) + * 4 Fifth(5000,tl=第五句翻译长文本折叠测试啊啊啊) / 5 Sixth(6000) / 6 Seventh(7000) + */ +static void load_lyric(void) +{ + const char *lrc = + "[00:01.00]First\n" + "[00:02.00]Second\n" + "[00:03.00]Third\n" + "[00:04.00]Fourth\n" + "[00:05.00]Fifth\n" + "[00:06.00]Sixth\n" + "[00:07.00]Seventh\n"; + const char *tlrc = + "[00:02.00]\u7b2c\u4e8c\u53e5\u7ffb\u8bd1\n" + "[00:05.00]\u7b2c\u4e94\u53e5\u7ffb\u8bd1\u957f\u6587\u672c\u6298\u53e0\u6d4b\u8bd5\u554a\u554a\u554a\n"; + int n = meow_lyric_parse(lrc, tlrc); + assert(n == 7); + /* 翻译合并校验(批1 语义,作前置保证) */ + assert(strcmp(meow_lyric_line_tl(1), "\u7b2c\u4e8c\u53e5\u7ffb\u8bd1") == 0); + assert(meow_lyric_line_tl(2)[0] == 0); +} + +static void l1_white_gray(void) +{ + printf("L1 活动行纯白 + 灰阶单调递减\n"); + meow_theme_set_mode(MEOW_THEME_DARK); + meow_lyric_view *lv = meow_lyric_view_create(0, 0, 480, 720, lw, NULL); + assert(lv); + const meow_theme *th = meow_theme_get(); + /* 活动行 = 主题 onSurface(dark=0xFFFFFF 纯白) */ + uint32_t cur = meow_lyric_view_cur_color(lv); + CHECK(cur == th->onSurface, "cur == th->onSurface (dark=0xFFFFFF 纯白)"); + CHECK((cur & 0xFFFFFF) == 0xFFFFFF, "cur 为纯白 0xFFFFFF"); + CHECK(meow_lyric_view_line_color(lv, 0) == cur, "line_color(0)==cur"); + /* 灰阶单调递减(距活动行越远越灰) */ + int mono = 1; + for (int d = 1; d <= 5; d++) + if (lum(meow_lyric_view_line_color(lv, d)) >= lum(meow_lyric_view_line_color(lv, d - 1))) mono = 0; + CHECK(mono, "gray dist 1..5 亮度单调递减"); + /* 最远灰阶(对齐 ncm 0x555555) */ + CHECK(meow_lyric_view_line_color(lv, 5) == 0x555555, "gray(5)==0x555555 (ncm lyr_gray_tbl)"); + meow_lyric_view_free(lv); +} + +static void l2_translation_block(void) +{ + printf("L2 翻译行占位不叠行(3 行原文 + 翻译)\n"); + meow_theme_set_mode(MEOW_THEME_DARK); + meow_lyric_view *lv = meow_lyric_view_create(0, 0, 480, 720, lw, NULL); + assert(lv); + meow_lyric_view_set_pos(lv, 2000); /* cur = idx1 Second(有翻译) */ + meow_lyric_view_vis vis[MEOW_LYRIC_VIEW_MAX_ROWS]; + int cnt = meow_lyric_view_visible(lv, 2000, vis, MEOW_LYRIC_VIEW_MAX_ROWS); + CHECK(cnt > 0, "可见条目数 > 0"); + /* 找出当前行(idx1)所在块与下一块 */ + int ci = -1, next = -1; + for (int k = 0; k < cnt; k++) { + if (vis[k].ent == 1) ci = k; + else if (ci >= 0 && next < 0) next = k; /* 当前块之后的第一块 */ + } + CHECK(ci >= 0, "当前行(Second)在可见块中"); + CHECK(vis[ci].bh == vis[ci].rw + 1, "当前行块高 bh=rw+1(原文折行 + 翻译行占 1 子行)"); + if (next >= 0) { + /* 下一块顶 = 当前块顶 + 当前块高×子行高(块间无重叠、翻译行不叠进下一行) */ + CHECK(vis[next].y == vis[ci].y + vis[ci].bh * 44, "下一块始于翻译行之后(无叠行)"); + } else { + /* 当前行是最后可视块:其块高应把翻译行算进去(翻译行占位,否则行会被截断) */ + CHECK(vis[ci].y + vis[ci].bh * 44 <= 720, "当前块含翻译行(占用垂直空间)"); + } + meow_lyric_view_free(lv); +} + +static void l3_above_anchor(void) +{ + printf("L3 偏上锚定(活动行块中心在视图中线上方)\n"); + meow_theme_set_mode(MEOW_THEME_DARK); + meow_lyric_view *lv = meow_lyric_view_create(0, 100, 480, 500, lw, NULL); /* 视图中线=350 */ + assert(lv); + meow_lyric_view_set_pos(lv, 5000); /* cur = idx4 Fifth(5 行之后,上方充足) */ + meow_lyric_view_vis vis[MEOW_LYRIC_VIEW_MAX_ROWS]; + int cnt = meow_lyric_view_visible(lv, 5000, vis, MEOW_LYRIC_VIEW_MAX_ROWS); + CHECK(cnt > 0, "可见条目数 > 0"); + int ci = -1; + for (int k = 0; k < cnt; k++) if (vis[k].ent == 4) { ci = k; break; } + CHECK(ci >= 0, "当前行(Fifth)在可见块中"); + /* 活动行原文块中心 = 块顶 + rw×子行高/2 = 视图中线 - above_off(严格偏上 50px) */ + int center = vis[ci].y + vis[ci].rw * 44 / 2; + CHECK(center == 350 - 50, "活动行块中心=350-50=300(偏上锚定 above_off=50)"); + CHECK(center < 350, "活动行块中心在视图中线(350)偏上"); + meow_lyric_view_free(lv); +} + +static void l4_wrap_cjk_west(void) +{ + printf("L4 折行中西文(长行折多段,块间按子行高排列)\n"); + meow_theme_set_mode(MEOW_THEME_DARK); + /* 窄视图强制折行:w=120 → maxw=120-48=72 单位 */ + meow_lyric_view *lv = meow_lyric_view_create(0, 0, 120, 720, lw, NULL); + assert(lv); + /* 用长英文+中文混排行,使当前行折成 >1 段 */ + meow_lyric_parse( + "[00:01.00]The quick brown fox jumps over the lazy dog and runs far away into the woods to find shelter from the cold rain today\n" + "[00:05.00]\u4e2d\u6587\u4e2d\u6587\u4e2d\u6587\u4e2d\u6587\u4e2d\u6587\u4e2d\u6587\u4e2d\u6587\u4e2d\u6587\u4e2d\u6587\u8bba\u6587\u6d4b\u8bd5\u554a\u554a\u554a\u554a\n", + NULL); + meow_lyric_view_set_pos(lv, 1000); + meow_lyric_view_vis vis[MEOW_LYRIC_VIEW_MAX_ROWS]; + int cnt = meow_lyric_view_visible(lv, 1000, vis, MEOW_LYRIC_VIEW_MAX_ROWS); + CHECK(cnt >= 2, "该行折成多段(可见条目含上下行)"); + /* 当前行(idx0,长文本)应从 1 段折成多段 */ + int ci = -1; + for (int k = 0; k < cnt; k++) if (vis[k].ent == 0) { ci = k; break; } + CHECK(ci >= 0, "当前行在可见块中"); + CHECK(vis[ci].rw > 1, "长行折成 rw>1 段(中西文按 词/字符 断行)"); + /* 块内子行间距为 sub_lh:子行间不重叠(块高=rw 子行) */ + CHECK(vis[ci].bh == vis[ci].rw, "无翻译当前行 bh=rw(子行数=折行段数)"); + /* 恢复 7 行歌词(供后续用例) */ + load_lyric(); + meow_lyric_view_free(lv); +} + +static void l5_hit_line(void) +{ + printf("L5 点行 seek 命中 = 布局一致\n"); + meow_theme_set_mode(MEOW_THEME_DARK); + meow_lyric_view *lv = meow_lyric_view_create(0, 100, 480, 500, lw, NULL); /* 视图中线=350 */ + assert(lv); + meow_lyric_view_set_pos(lv, 2000); /* cur = idx1 Second(有翻译) */ + meow_lyric_view_vis vis[MEOW_LYRIC_VIEW_MAX_ROWS]; + int cnt = meow_lyric_view_visible(lv, 2000, vis, MEOW_LYRIC_VIEW_MAX_ROWS); + CHECK(cnt > 0, "可见条目数 > 0"); + /* 命中必须与绘制布局一致:点每个可见块内子行,命中该块 ent */ + int consistent = 1; + for (int k = 0; k < cnt && consistent; k++) { + int yb = vis[k].y, yh = vis[k].bh * 44; + for (int dy = 0; dy < yh && consistent; dy += 4) { /* 块内等距采样 */ + int hit = meow_lyric_view_hit_line(lv, 240, yb + dy); + if (hit != vis[k].ent) consistent = 0; + } + } + CHECK(consistent, "命中=布局(块内逐点命中 ent 一致)"); + /* 点翻译行(当前行块内下一子行)归本行,不误触下一行 */ + int ci = -1; + for (int k = 0; k < cnt; k++) if (vis[k].ent == 1) { ci = k; break; } + CHECK(ci >= 0, "当前行在可见块中"); + if (ci >= 0 && vis[ci].bh > vis[ci].rw) { /* 有翻译行 */ + int ty = vis[ci].y + vis[ci].rw * 44 + 10; /* 翻译子行内 */ + CHECK(meow_lyric_view_hit_line(lv, 240, ty) == 1, "点翻译行归本行(Second)不误触下一行"); + } + /* 点可见块外(视图内)→ 就近取整(顶部/底部可见行) */ + CHECK(meow_lyric_view_hit_line(lv, 240, 101) == vis[0].ent, "视图内顶缝→就近取第一可见块"); + CHECK(meow_lyric_view_hit_line(lv, 240, 599) == vis[cnt - 1].ent, "视图内底缝→就近取最后可见块"); + /* 视图外 → 未命中 */ + CHECK(meow_lyric_view_hit_line(lv, 240, 50) == -1, "视图外(y=50)未命中"); + CHECK(meow_lyric_view_hit_line(lv, 490, 300) == -1, "视图外(x=490)未命中"); + /* widget 命中路径:命中当前行(有翻译)→ 触发 on_seek 回调 line_time(1)=2000 */ + g_seek_ms = -1; + meow_lyric_view_set_on_seek(lv, seek_cb, NULL); + if (ci >= 0) { + int cy = vis[ci].y + 2; /* 当前行原文块内 */ + CHECK(meow_widget_hit(meow_lyric_view_widget(lv), 240, cy) == 1, "widget hit 命中当前行"); + CHECK(g_seek_ms == 2000, "on_seek 回调 line_time(Second)=2000"); + } else { + CHECK(1, "on_seek 校验跳过(无当前行块)"); + } + meow_lyric_view_free(lv); +} + +static void l6_theme_switch(void) +{ + printf("L6 主题换色(set_colors 覆盖 / NULL 恢复默认)\n"); + meow_theme_set_mode(MEOW_THEME_DARK); + meow_lyric_view *lv = meow_lyric_view_create(0, 0, 480, 720, lw, NULL); + assert(lv); + uint32_t def_cur = meow_lyric_view_cur_color(lv); /* dark=0xFFFFFF */ + /* 覆盖:活动行红、灰阶自定义、scrim 自定义 */ + meow_lyric_view_colors c; memset(&c, 0, sizeof c); + c.scrim = 0x1E1E22; c.cur = 0xFF0000; c.scrim_alpha = 255; + c.gray[0] = 0xFF0000; c.gray[1] = 0xCC0000; c.gray[2] = 0x990000; + c.gray[3] = 0x660000; c.gray[4] = 0x440000; c.gray[5] = 0x220000; + meow_lyric_view_set_colors(lv, &c); + CHECK(meow_lyric_view_cur_color(lv) == 0xFF0000, "set_colors 覆盖活动行为红"); + CHECK(meow_lyric_view_line_color(lv, 3) == 0x660000, "set_colors 覆盖灰阶(3)=0x660000"); + CHECK(meow_lyric_view_line_color(lv, 5) == 0x220000, "set_colors 覆盖灰阶(5)=0x220000"); + /* 恢复默认:NULL → 回主题 onSurface 纯白 */ + meow_lyric_view_set_colors(lv, NULL); + CHECK(meow_lyric_view_cur_color(lv) == def_cur, "set_colors(NULL) 恢复主题默认"); + meow_lyric_view_free(lv); +} + +static void l7_scrim_pixel(void) +{ + printf("L7 scrim 像素渲染(draw 落地)\n"); + meow_theme_set_mode(MEOW_THEME_DARK); + meow_lyric_view *lv = meow_lyric_view_create(0, 0, 480, 720, lw, NULL); + assert(lv); + /* 不透明 scrim → 背底像素应为 scrim 色(RGB565 舍入容差) */ + meow_lyric_view_colors c; memset(&c, 0, sizeof c); + c.scrim = 0x203040; c.scrim_alpha = 255; + meow_lyric_view_set_colors(lv, &c); + meow_lyric_view_set_pos(lv, 2000); + static const char *lrc = + "[00:01.00]First\n[00:02.00]Second\n[00:03.00]Third\n[00:04.00]Fourth\n"; + meow_lyric_parse(lrc, NULL); + meow_ui_clear(0); + meow_widget *w = meow_lyric_view_widget(lv); + meow_widget_draw(w); + CHECK(px_near(240, 350, 0x20, 0x30, 0x40), "视图中线像素≈scrim 0x203040(文本打桩不影响 scrim)"); + CHECK(px_near(50, 50, 0x20, 0x30, 0x40), "视图左上像素≈scrim 0x203040"); + meow_lyric_view_free(lv); +} + +int main(void) +{ + setbuf(stdout, NULL); + setenv("MEOW_UI_DUMP", "/tmp/lyricview.ppm", 1); + meow_ui_opts o = { 480, 720 }; + assert(meow_ui_init(&o) == 0); + meow_ui_activity_push(0x53); + load_lyric(); + + l1_white_gray(); + l2_translation_block(); + l3_above_anchor(); + l4_wrap_cjk_west(); + l5_hit_line(); + l6_theme_switch(); + l7_scrim_pixel(); + + meow_ui_activity_pop(); + printf(g_fail ? "\nRESULT: %d FAIL(S)\n" : "\nRESULT: ALL PASS\n", g_fail); + return g_fail; +}