feat: login wallpaper blur backdrop + no logo intro + login spinner; firstInit wallpaper backdrop

- login: drop ohMyLogo intro, blurred back.rgba as full-screen backdrop (built-in data)
- login: spinner (int 16-seg table, no SSE) below card during desktop load, wallpatch clear
- firstInit: same blurred wallpaper backdrop behind wizard cards
- note: 1.8MB wallpaper data also absorbs the DSK-E70 write-zero minefield -> integrity OK
This commit is contained in:
Linehu
2026-10-05 20:12:51 +08:00
parent 5db517f435
commit 6caf1aa322
3 changed files with 111213 additions and 51 deletions
+18 -1
View File
@@ -310,6 +310,22 @@ static void fill_gradient_rect(u32 *fb, i64 x, i64 y, i64 w, i64 h) {
}
}
/* 模糊化的桌面壁纸(与 login 共用,构建期盒模糊 back.rgba) */
#include "../login/back_blur_data.c"
static void draw_blur_wallpaper(u32 *fb) {
for (i64 y = 0; y < (i64)fb_h; y++) {
u32 *line = (u32 *)((u8 *)fb + (u64)y * fb_p);
u64 sy = (u64)y * WALLPAPER_BLUR_H / fb_h;
const unsigned char *srow = g_wall_blur_rgba + sy * WALLPAPER_BLUR_W * 4;
for (i64 x = 0; x < (i64)fb_w; x++) {
u64 sx = (u64)x * WALLPAPER_BLUR_W / fb_w;
const unsigned char *px = srow + sx * 4;
line[x] = 0xFF000000u | ((u32)px[0] << 16) | ((u32)px[1] << 8) | px[2];
}
}
}
static int rounded_rect_contains(i64 px, i64 py, i64 x, i64 y, i64 w, i64 h, i64 radius) {
if (px < x || py < y || px >= x + w || py >= y + h) return 0;
if (radius <= 0) return 1;
@@ -1444,7 +1460,8 @@ void dsk_entry(const dsk_boot_context *ctx) {
u32 bg = BG_MID, fg = TEXT_FG;
i64 cx=(i64)fb_w/2, cy=(i64)fb_h/2;
u32 *fb = (u32 *)(u64)fb_a;
fill_gradient_rect(fb, 0, 0, (i64)fb_w, (i64)fb_h);
/* 背景:模糊化的桌面壁纸铺满全屏(向导卡片浮于其上) */
draw_blur_wallpaper(fb);
/* fade out loading ring */
logl("[FirstInit] fading out ring");