- meow_ui.h(922 行)改为伞头:只做 #include 聚合 + 模块索引,不定义新 API。 - 新增 patch_v2/sdk/include/ 16 个子头(types/draw/image/theme/ime/widgets/input/ activity/zorder/statusbar/dialog/log/notify/config/font/audio),各自自洽可单独 include, 依赖最小化(不透明句柄前向声明 + 必要模块互引)。 - 验证:meow_ui.a md5 与主树完全一致(4786158d…,头重组 .o 逐字节等价); SDK .c 用 mipsel -Wall -Wextra 0 warning;hello/files 全量重编链接通过 (-Wall -Wextra 0 warning);宿主 test_p1p2p3_repro(P1c/P2/P3 ALL PASS) + 15 个 SDK/宿主测试 PASS;16 子头自洽编译 0 warning;伞头完整性回归 test_umbrella.c 0 warning;ncm 5 个含 meow_ui.h TÜ mipsel 交叉编译到 .o 0 warning。 - meow_ui_internal.h 及 view/nav/media/sys/vol 子头未动;build_sdk.sh 无需改。 - MEOW_APP_SDK.md 头部新增「公共头模块索引」。分支 sdk-header-split。
78 lines
3.4 KiB
C
78 lines
3.4 KiB
C
/*
|
||
* meow_ui_draw.h — SDK 绘制层(§3)+ 动画/时间(§7)+ 显示刷新率调度(§7.1)。
|
||
*
|
||
* 原 meow_ui.h 拆分的一部分(draw/gfx 模块)。坐标 0,0 = 左上;颜色均 24-bit RGB
|
||
* (0xRRGGBB),内部转 RGB565;所有绘制先进离屏 back_buf,调用 meow_ui_flush()/
|
||
* flush_region() 才上屏。文本字号:28(标题/状态栏)、20(正文/按钮)。
|
||
*/
|
||
#ifndef MEOW_UI_DRAW_H
|
||
#define MEOW_UI_DRAW_H
|
||
|
||
#include "meow_ui_types.h"
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
/* ============================================================ */
|
||
/* §3 绘制层 */
|
||
/* ============================================================ */
|
||
/* init 选项。width/height 为 0 表示自动读取 /dev/fb0 几何;
|
||
* 无 fb(宿主/qemu 离屏)时用 480×720 缺省([D1])。 */
|
||
typedef struct meow_ui_opts {
|
||
int width;
|
||
int height;
|
||
} meow_ui_opts;
|
||
|
||
int meow_ui_init(const meow_ui_opts *opts); /* 开 fb、读几何、载字库、建 back_buf;0=成功 */
|
||
void meow_ui_shutdown(void);
|
||
|
||
int meow_ui_width(void); /* 480 */
|
||
int meow_ui_height(void); /* 720 */
|
||
|
||
void meow_ui_clear(uint32_t color); /* 整屏清(填背景色) */
|
||
void meow_ui_put_px(int x, int y, uint32_t color);
|
||
void meow_ui_fill_rect(int x, int y, int w, int h, uint32_t color);
|
||
void meow_ui_draw_rect(int x, int y, int w, int h, uint32_t color); /* 空心框 */
|
||
void meow_ui_draw_rect_round(int x, int y, int w, int h, int r, uint32_t color); /* 圆角框 */
|
||
|
||
/* 文本(size=20/28) */
|
||
void meow_ui_text(int x, int y, const char *utf8, int size, uint32_t color);
|
||
void meow_ui_text_right(int right_x, int y, const char *utf8, int size, uint32_t color);
|
||
void meow_ui_text_center(int cx, int y, const char *utf8, int size, uint32_t color);
|
||
int meow_ui_text_width(const char *utf8, int size);
|
||
int meow_ui_text_height(int size); /* = meow_font_line_height */
|
||
|
||
/* 上屏:vsync + 原子 blit 脏区(内建脏区追踪) */
|
||
void meow_ui_flush(void);
|
||
void meow_ui_flush_region(int x, int y, int w, int h); /* 只刷新指定区 */
|
||
|
||
/* 半透明(blend565:前景按 alpha 与背景混叠) */
|
||
void meow_ui_fill_rect_alpha(int x, int y, int w, int h, uint32_t color, int alpha); /* 0-255 */
|
||
|
||
/* ============================================================ */
|
||
/* §7 动画/时间(B1 最小可用) */
|
||
/* ============================================================ */
|
||
uint64_t meow_ui_time_ms(void); /* 单调毫秒时间戳 */
|
||
|
||
/* ============================================================ */
|
||
/* §7.1 显示刷新率调度(A-1/A-2:从 launcher M2.16 迁入,归口 SDK,PERF_SCHEDULER 显示子域) */
|
||
/* ============================================================ */
|
||
/* 设目标档位 60/30/15(launcher 与 app 统一走 SDK 的 present 帧率门控一致)。
|
||
* 同时把当前有效档对齐到目标(与 launcher settings_load 语义一致)。 */
|
||
void meow_ui_set_refresh_rate(int r);
|
||
|
||
/* 1=恒 max 不降档(性能优先);0=允许 governor 在 [15,30,60] 自适应降/升档。 */
|
||
void meow_ui_set_refresh_always_max(int on);
|
||
|
||
/* 当前有效帧率(governor 可能已降档;诊断用)。 */
|
||
int meow_ui_effective_rate(void);
|
||
|
||
/* 已呈现帧计数(验证 present 频率用)。 */
|
||
unsigned long long meow_ui_frames_presented(void);
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
#endif /* MEOW_UI_DRAW_H */
|