Files
MeowOS-SDK/hello_internal.h
T

121 lines
6.7 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.
/* hello_internal.h — hello 应用内部共享头(UI 各页 + app 装配层 + 宿主测试面)。
*
* 层级(SDK_VIEW_FRAMEWORK_DESIGN.md §B.1/B.2):
* - ui/ 每页一个 view 文件(持视图态 scroll/focus/drag/几何);共享 chrome 在 ui/common/;
* - logic 下纯业务模块(state: taps/secs;notify: 通知发送/取消),UI 只经 logic_* / notify_* 调用;
* - app.c main + 装配 + 事件分发(把 meow_ui_run 的平铺回调路由到各页)。
* 页面组织:home/full/demo 各建一个 meow_view(ACTIVITY),生命周期用
* meow_view_page_push/pop 驱动(on_enter/on_leave 唯一入口);绘图仍走 batch① 已接线的
* 路径(home/full 手绘 + demo 走 meow_ui_paint_full 注册表),on_draw 本批置 NULL(见报告)。
*
* 本头是全应用/测试的跨 TU 声明:只声明(extern),不定义,避免多定义。宿主 test_p1p2p3_repro
* 直接 #include 本头 + 链接各 .c,驱动 demo 真实函数(demo_paint/demo_rebuild_to/demo_touch_down)
* 对 back_buf 做断言——这是测「真实 demo 代码 + 真实 SDK」,不是模拟桩。
*/
#ifndef HELLO_INTERNAL_H
#define HELLO_INTERNAL_H
#include <stdint.h>
#include "meow_ui.h"
#include "meow_ui_view.h"
#include "logic/logic.h"
/* ---- App 级弹层(app.c 创建;demo 页打开/关)---- */
extern meow_dialog *g_dlg; /* Dialog(阻塞模态;main 创建一次) */
extern meow_sheet *g_sheet; /* BottomSheet(阻塞模态;main 创建一次) */
/* ---- Activity 归属(§6.1 ①)---- */
#define ACT_HOME 0
#define ACT_FULL 1
#define ACT_DEMO 2
/* ---- SDK 控件不透明:App 自记几何,用于局部 flush / 命中 / scroll 重建 ---- */
typedef struct { int x, y, w, h; } rect_t;
#define RX(x,y,w,h) ((rect_t){ (x), (y), (w), (h) })
/* ---- 视图控制器(ctx = biz-UI 绑定点)----
* 本批控制器为薄壳:持 meow_view 回指针;页面细粒度视图态(g_ds/g_drag_* /scroll 等)留在各页
* 模块作用域全局(设计定案 B:demo 视图态不迁 logic)。控制器未来可吸收这些状态。 */
typedef struct {
meow_view *view;
int active; /* 是否有页进入(与模块 active 全局同步) */
int _pad;
} home_ctrl;
typedef struct {
meow_view *view;
int active;
int _pad;
} full_ctrl;
typedef struct {
meow_view *view;
int active; /* = g_demo */
int focus; /* = g_demo_focus */
int scroll; /* = g_demo_scroll */
int _pad;
} demo_ctrl;
/* ---- home 页(ui/home/home.c)---- */
meow_view *home_view_create(void); /* 建 home view;on_create 建 home 控件 + 注册业务监听器 */
int home_on_tap(int x, int y);/* home 态命中分发:返回 1=已消费(含导航到 demo/full) */
/* ---- full 页(ui/full.c)---- */
meow_view *full_view_create(void); /* 建 full view(无控件;全屏文本由 full_draw 手绘) */
int full_is_active(void); /* 1=处于全屏态 */
void full_draw(void); /* 画全屏帧(clear accent + 文本 + flush) */
/* ---- demo 页(ui/demo/demo.c)---- */
meow_view *demo_view_create(void); /* 建 demo view;on_create 调 demo_init() 建 chrome+内容 */
int demo_is_active(void); /* 1=处于 demo 页 */
void demo_on_tap(int x, int y);
void demo_touch_down(int x, int y);
void demo_touch_move(int x, int y);
void demo_swipe(int dir, int dist);
void demo_tick(uint64_t now);
/* demo 构建/绘制入口(宿主 test_p1p2p3_repro 直接驱动 + demo view 复用):
* demo_init 建 chrome+内容(scroll=0);demo_paint 整帧按 z 重画;demo_rebuild_to 重建到 scroll。 */
void demo_init(void);
void demo_paint(void);
void demo_rebuild_to(int scroll);
/* ---- demo 视图态(设计定案 B:g_ds 非列表字段/scroll/drag_page 留 ui/demo/demo.c,不迁 logic;
* 列表视图态批③ 迁 ui/demo/list/list.c——下列四项定义在 list.c,经本头 extern 跨 TU 共享)。----
* 暴露为 extern,供宿主测试对真实 demo 状态断言(P1/P2/P3)。 */
extern int g_demo; /* 1=处于 demo 演示页 */
extern int g_demo_focus; /* 1=LazyColumn 聚焦(list.c) */
extern int g_demo_scroll; /* 内容区滚动偏移 */
extern int g_drag_list; /* 手指在列表:拖拽滚列表(list.c) */
extern int g_drag_page; /* 手指在页内容:拖拽滚页面 */
extern meow_widget *g_dlc; /* LazyColumn(list.c) */
extern meow_widget *g_dprc; /* ProgressBar 圆形 */
extern rect_t r_prc; /* 圆形进度外接框 */
extern rect_t r_list; /* 列表区几何(list.c) */
extern rect_t r_dr1, r_dr2; /* Radio 几何 */
/* ---- 列表区 CONTAINER 子视图(ui/demo/list/list.c;批③ 视图深度化)----
* demo 页把列表逻辑区块抽成 meow_view CONTAINER 子视图挂到 DEMO ACTIVITY view children,
* 承接列表交互(tap/down/move/swipe)、列表视图态与列表区块标题 on_draw 直绘。
* 嵌套生命周期由 SDK view_enter/view_leave 递归驱动(随 demo 页进出;list_view_enter/leave
* 已退役,无需 App 层显式接管)。 */
meow_view *list_view_create(void); /* 建 CONTAINER 子视图(须即 meow_view_add_child) */
meow_view *list_view_get(void); /* 返回子视图(宿主测嵌套 on_enter/on_leave 断言) */
void list_view_bind(meow_widget *w, rect_t list, rect_t title); /* 内容重建后绑控件+几何+恢复态 */
void list_view_release(void); /* 内容释放后摘引用/几何 */
int list_view_hit(int x, int y); /* tap 分发给列表区,命中即消费(含选中) */
int list_view_down(int x, int y); /* touch_down 命中列表:置 focus+drag_list */
int list_view_move(int y); /* touch_move 拖动列表:1=在列表拖动 */
int list_view_swipe(int del); /* swipe:列表聚焦时滚列表,1=已消费 */
/* ---- chrome(ui/common/chrome.c)---- */
extern meow_widget *g_tb; /* TopAppBar(chrome 固定) */
extern meow_widget *g_nav; /* NavigationBar(chrome 固定) */
extern meow_widget *g_fab; /* FAB(chrome 置顶;demo 交互可重建换 label) */
extern rect_t r_tb, r_nav, r_fab;
void chrome_create(void); /* 建 chrome(调用方须先 push ACT_DEMO 使 owner=ACT_DEMO) */
void chrome_free(void); /* 释放 chrome(demo on_destroy 调) */
/* ---- App 级导航/媒体接线(app.c)---- */
void hello_nav_report(void); /* 上报当前 Activity 栈深/顶层(各页 on_enter 调) */
#endif /* HELLO_INTERNAL_H */