公开 SDK 前把 SDK/App 硬编码文案外置:新增 meow_str/meow_strf/meow_str_set_locale/ meow_str_locale,按当前 locale 取串(永不 NULL),第三方开发者可做多语言。 - 新增 include/meow_ui_str.h + meow_ui_str.c:取串优先级 = TF 覆盖表 > 内嵌当前语言 (en_us→en 其余→zh) > 内嵌内置默认(zh_cn) > 原样返回 id。内嵌双语表(common.* 21 条 + ime.* 9 条);热路径零 malloc(编译期静态表 + ≤256 静态覆盖数组);纯 libc 宿主可单测。 - locale 存系统设置 settings.conf 的 ui.locale(默认 zh_cn,首次调用惰性读取); meow_str_set_locale 即时切换 + 重载覆盖表 + best-effort 持久化(流式改写保留其它行)。 - TF 覆盖表 MeowData/<pkg>/strings/<locale>.txt(id=text 行,UTF-8,'=' 两侧去空白); 无卡/无文件/无该 id → 回落内嵌。meow_strf 用调用方缓冲(snprintf 语义,重入安全)。 - SDK 控件接入:dialog 默认按钮 OK/CANCEL + INPUT 占位、IME 键面/徽标(空格/确定/拼英/ ?123/清/拼音/(无候选)/中)改走 meow_str;空态/加载态给 App 提供 common.no_data/loading。 - 测试:新增 test_meow_ui_str.c(内嵌回退/TF 覆盖优先级/未知 id 回退/切 locale 即时生效/ 查找正确性/meow_strf,tmp+env 两模式);全量宿主回归(widgets/dispatch/box/anim/scroll/ listvirt/theme/ime_fix/pinyin/overlay/notif/sdk_input_keys/p1p2p3/config/vol/sb_collapse/ notify_*) 0 回归;交叉 zig-mipsel -Wall -Wextra 0 warning。 - 文档:MEOW_APP_SDK.md 新增 §13(字符串资源/i18n,遗留顺延为 §14);docs/APP_DEV_GUIDE.md 新增 §7.11。各宿主 test_*.c 头注释补 meow_ui_str.c 编译依赖。 边界(§13.7):仅 zh_cn/en_us 整串取用;不做复数规则 / BiDi / RTL / 动态字体回退(雏形)。
76 lines
4.0 KiB
C
76 lines
4.0 KiB
C
/*
|
||
* meow_ui.h — MeowOS 应用框架 SDK 公共 API(B1)。
|
||
*
|
||
* 蓝本:MEOW_APP_SDK.md §3-§8。应用只调本头声明的 API;绝不 open/mmap/ioctl
|
||
* /dev/fb0、绝不 open /dev/input/event* —— 屏幕与输入由 meow_ui 接管。
|
||
*
|
||
* 约定:
|
||
* - 坐标 0,0 = 左上;所有颜色为 24-bit RGB(0xRRGGBB),内部转 RGB565。
|
||
* - 所有绘制先进离屏 back_buf,调用 meow_ui_flush()/flush_region() 才上屏。
|
||
* - 文本字号:28(标题/状态栏)、20(正文/按钮)。
|
||
*
|
||
* 与设计文档的偏差(实现期定案,见 MEOW_APP_SDK.md §12 更新):
|
||
* [D1] meow_ui_opts 由实现补充(宽/高覆写,0=自动读 /dev/fb0);文档只引用未定义。
|
||
* [D2] meow_list_create 的数据源回调签名由实现定案(文档留占位注释)。
|
||
* [D3] meow_img_blend 内部实现补充(见 meow_ui_internal.h),非公共 API 增量。
|
||
* [D4] 增加 meow_theme_defaults()/meow_theme_current() 便于脱机(无 settings 文件)使用。
|
||
*
|
||
* ------------------------------------------------------------------
|
||
* 公共头模块索引(按模块拆分,本头为**伞头**:只做 #include 聚合,不定义新 API):
|
||
*
|
||
* include/meow_ui_types.h 核心类型/常量(物理键 keycode、滑动方向、meow_widget/meow_img 句柄)
|
||
* include/meow_ui_draw.h 绘制层(§3)+ 时间(§7)+ 刷新率调度(§7.1)
|
||
* include/meow_ui_image.h 图片层(§4)
|
||
* include/meow_ui_theme.h 主题/配置(§8:meow_theme、MD3 色板、风格族)
|
||
* include/meow_ui_ime.h 输入法(§5.1:ASCII/NUM/PINYIN 软键盘)
|
||
* include/meow_ui_widgets.h 控件层(§5 + §5.8 基座 + §5.8.6 MD3 组件 + §5.5 W_LISTVIEW)
|
||
* include/meow_ui_input.h 输入层/生命周期(§6)+ 通用长按(§6.3)
|
||
* include/meow_ui_activity.h Activity 栈 + 三层控件模型(§6.1)
|
||
* include/meow_ui_zorder.h 绘制物注册表 / z 序 / 区域重画(§6.2)
|
||
* include/meow_ui_statusbar.h 全局状态栏 / 全屏(§3.1)
|
||
* include/meow_ui_dialog.h 模态 Dialog / BottomSheet(§5.8.6)
|
||
* include/meow_ui_log.h 应用日志(§9)
|
||
* include/meow_ui_notify.h 应用通知(§9.1)
|
||
* include/meow_ui_config.h 应用配置读写(§9.2)
|
||
* include/meow_ui_font.h 字体列表(§5.7)+ 字体分层(§10)
|
||
* include/meow_ui_audio.h 独占音频客户端(§11)
|
||
* include/meow_ui_box.h 线性布局引擎(§12.1:meow_box,固定/weight/wrap/对齐/嵌套)
|
||
* include/meow_ui_anim.h 动画基座+UI 节拍器(§12.2:tween/easing/池+脏区联动)
|
||
* include/meow_ui_scroll.h 滚动物理(§12.3:速度跟踪/fling/边界回弹/snap)
|
||
* include/meow_ui_str.h 字符串资源/i18n(§13:meow_str/meow_strf/meow_str_set_locale)
|
||
*
|
||
* 其余模块头(非伞头、App 按需显式 include,均保持不动):
|
||
* meow_ui_view.h / meow_ui_nav.h / meow_ui_media.h / meow_ui_sys.h / meow_ui_vol.h
|
||
* ------------------------------------------------------------------
|
||
*
|
||
* 拆分不改变任何 API 名称/类型/宏(-Wall -Wextra 0 warning,既有 App 零改动)。
|
||
*/
|
||
#ifndef MEOW_UI_H
|
||
#define MEOW_UI_H
|
||
|
||
#include <stdint.h>
|
||
#include <stddef.h>
|
||
|
||
#include "include/meow_ui_types.h"
|
||
#include "include/meow_ui_draw.h"
|
||
#include "include/meow_ui_image.h"
|
||
#include "include/meow_ui_ime.h"
|
||
#include "include/meow_ui_input.h"
|
||
#include "include/meow_ui_activity.h"
|
||
#include "include/meow_ui_zorder.h"
|
||
#include "include/meow_ui_statusbar.h"
|
||
#include "include/meow_ui_theme.h"
|
||
#include "include/meow_ui_widgets.h"
|
||
#include "include/meow_ui_dialog.h"
|
||
#include "include/meow_ui_log.h"
|
||
#include "include/meow_ui_notify.h"
|
||
#include "include/meow_ui_config.h"
|
||
#include "include/meow_ui_font.h"
|
||
#include "include/meow_ui_audio.h"
|
||
#include "include/meow_ui_box.h"
|
||
#include "include/meow_ui_anim.h"
|
||
#include "include/meow_ui_scroll.h"
|
||
#include "include/meow_ui_str.h"
|
||
|
||
#endif /* MEOW_UI_H */
|