Files
MeowOS-For-R3P2/patch_v2/sdk/meow_ui.h
T
AskaEth 54857bc0fd sdk(ui): 字符串资源外置(i18n 雏形 §13)—— meow_str_* + 内嵌双语表 + TF 覆盖表 + 控件接入
公开 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 / 动态字体回退(雏形)。
2026-09-02 02:37:38 +08:00

76 lines
4.0 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.
/*
* 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 */