Files
Deshab-OS/CODE/desktop/wallpaper.h
T

44 lines
1.8 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* wallpaper.h — 桌面壁纸(磁盘加载 + 一次性缩放进背景层缓存)
*
* 壁纸资产由 gen_wallpaper.py 生成:
* wallpaper.png — 人看预览
* wallpaper.rgba — 1000×700 原始 RGBA 字节流,部署于 FAT32
* system/wallpaper.rgba(避免 2.8MB 嵌入 ELF 撑大
* DSK ibuf 占用,且换壁纸无需重编 desktop.elf)
*
* 加载路径(wallpaper_init):
* FAT32 流式读 wallpaper.rgba → PE surface 暂存区(0x7800000,8MB,
* 启动期独占,PE 应用启动时自行覆盖初始化)
* → 双线性缩放到背景层缓存(WALLPAPER_ADDR 0x6200000,≤7.5MB)
*
* 运行期 compositor/acrylic 直接读背景层缓存,零缩放开销。
* 加载失败返回负值,调用方回退渐变背景,不阻塞启动。
*/
#ifndef DESHAB_WALLPAPER_H
#define DESHAB_WALLPAPER_H
typedef unsigned char wp_u8;
typedef unsigned int wp_u32;
typedef unsigned long long wp_u64;
typedef long long wp_i64;
#define WALLPAPER_ADDR 0x6200000ULL
#define WALLPAPER_MAX (7u * 1024u * 1024u + 512u * 1024u) /* 7.5MB */
/* 壁纸原始数据暂存区(= PE surface 区,启动期独占) */
#define WALLPAPER_STAGING_ADDR 0x7800000ULL
#define WALLPAPER_STAGING_MAX (8u * 1024u * 1024u)
/* FAT32 流式读取函数原型(f32io.h 的 f32_read_path_lfn_to_w) */
typedef int (*wallpaper_read_fn)(const char *path, unsigned char *dst,
unsigned int cap, unsigned int *out_size);
/* 启动时调用一次:加载 + 缩放到背景层缓存(fb 尺寸)。
* 返回 0 成功,负值失败(调用方回退渐变)。 */
int wallpaper_init(wallpaper_read_fn read_to, int fb_w, int fb_h);
/* 背景层缓存指针(成功后有效;失败返回 0) */
wp_u32 *wallpaper_layer(void);
#endif /* DESHAB_WALLPAPER_H */