project.json5 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428
  1. // 项目json结构
  2. {
  3. // 版本号
  4. "version": "1.0.0",
  5. // 应用元数据
  6. "meta": {
  7. // 项目名称
  8. "name": "智能HOME项目",
  9. // 项目版本号
  10. "version": "1.0.0",
  11. // 项目描述
  12. "description": "智能HOME项目",
  13. // 项目类型
  14. "type": "chip", // 'analog_display' | 'chip' | 'board' 1: 模拟显示 2: 芯片 3: 板卡
  15. // 屏幕类型
  16. "screenType": "single", // 'single' | 'double' 1:单屏 2:双屏
  17. // 语言
  18. "language": "zh-cn",
  19. // 资源打包方式
  20. "resourcePackaging": "c_bin", // 'c' | 'c_bin' 1: C源码 2: C源码+BIN
  21. // BIN数量
  22. "binNum": "1", // 1~32
  23. // 芯片配置
  24. "chip": {
  25. // 芯片型号
  26. "model": "ESP32"
  27. },
  28. // 板卡配置
  29. "board": {
  30. // 板卡型号
  31. "model": "ESP32",
  32. },
  33. // 屏幕配置
  34. "screens": [
  35. {
  36. // 屏幕类型
  37. "type": "1", // 1:主屏 2:副屏
  38. // 接口类型
  39. "interface": "RGB",
  40. // 屏幕宽
  41. "width": 1920,
  42. // 屏幕高
  43. "height": 1080,
  44. // 颜色深度
  45. "colorDepth": "16bit",
  46. // 颜色格式
  47. "colorFormat": "BGR",
  48. // 屏幕参数
  49. "params": {
  50. "PCLK": "",
  51. "VBP": "",
  52. "VFP": "",
  53. "HBP": "",
  54. "HFP": "",
  55. "HSYNC": "",
  56. "VSYNC": "",
  57. "HSYNC_WIDTH": "",
  58. "HSYNC_WIDTH": ""
  59. }
  60. }
  61. ],
  62. // 创建时间
  63. "createTime": "2025-09-01 12:00:00",
  64. // 修改时间
  65. "modifyTime": "2025-09-01 12:00:00",
  66. },
  67. // BIN列表
  68. "bins": [
  69. {
  70. "id": "bin_1",
  71. "fileName": "bin1.bin",
  72. "path": "./src/bin/bin1.bin"
  73. }
  74. ],
  75. // 资源
  76. "resources": {
  77. // 图片资源
  78. "images": [
  79. {
  80. "id": "img_1",
  81. "fileName": "image1.png",
  82. "fielType": "png",
  83. "path": "./src/assets/images/image1.png",
  84. "compressFormat": "rle", // 无压缩、RLE压缩、QOI压缩、JPEG压缩、PNG压缩
  85. "alpha": 1, // 透明度0-1
  86. "bin": "bin_1" // 关联的BIN ID
  87. }
  88. ],
  89. // 字体资源
  90. "fonts": [
  91. {
  92. "id": "font_1",
  93. "fileName": "font1.ttf",
  94. "fielType": "ttf",
  95. "path": "./src/assets/fonts/font1.ttf",
  96. "range": ["page", "custom", "range"], // 'all' | 'page' | 'custom' | 'range' 0: 全部 1:界面文本 2:自定义文本 3: 编码范围
  97. // 编码范围
  98. "codeRange": ["0x4E00-0x9FA5"],
  99. // 额外的文本内容
  100. "extText": "abcdefghijklmnopqrstuvwxyz",
  101. "bin": "bin_1" // 关联的BIN ID
  102. }
  103. ],
  104. "others": [
  105. // 动画资源
  106. {
  107. "id": "o_1",
  108. "fileName": "other.an",
  109. "fileType": "an",
  110. "path": "./src/assets/others/other.an"
  111. },
  112. // 样式资源
  113. {
  114. "id": "o_2",
  115. "fileName": "a.style",
  116. "fileType": "style",
  117. "path": "./src/assets/others/a.style"
  118. }
  119. ]
  120. },
  121. // 全局变量定义
  122. "variables": [
  123. {
  124. // 组ID
  125. "id": "group_1",
  126. // 组名称
  127. "name": "全局变量",
  128. // 变量
  129. "variables": [
  130. {
  131. "id": "var_1",
  132. "name": "a",
  133. "value": "1",
  134. "type": "int"
  135. }
  136. ]
  137. }
  138. ],
  139. // 主题
  140. "themes": [
  141. {
  142. "id": "theme_0",
  143. // 主题名称
  144. "name": "默认主题",
  145. // 默认主题
  146. "default": true,
  147. // 颜色集
  148. "colors": [
  149. {
  150. "id": "color_1",
  151. // 颜色名称
  152. "name": "背景颜色",
  153. // 颜色值
  154. "value": "#000000",
  155. // 透明度
  156. "alpha": 1
  157. }
  158. ]
  159. },
  160. {
  161. "id": "theme_1",
  162. // 主题名称
  163. "name": "高亮主题",
  164. // 默认主题
  165. "default": false,
  166. // 颜色集 这里的颜色只能从默认主题获取,可以修改值
  167. "colors": [
  168. {
  169. "id": "color_1",
  170. // 颜色名称
  171. "name": "背景颜色",
  172. // 颜色值
  173. "value": "#ffffff",
  174. // 透明度
  175. "alpha": 1
  176. }
  177. ]
  178. }
  179. ],
  180. // 动画
  181. "animations": [
  182. {
  183. // 动画名称
  184. "name": "move_x_animation",
  185. // 时间轴
  186. "timeline": [
  187. {
  188. // 目标属性
  189. "target": "x",
  190. // 开始值
  191. "start": 0,
  192. // 结束值
  193. "end": 100,
  194. // 延迟时间
  195. "delay": 0,
  196. // 动画时间
  197. "duration": 500,
  198. // 动画效果
  199. "timingFunction": "ease",
  200. // 动画次数
  201. "iterationCount": "infinite" // 数值或infinite
  202. }
  203. ]
  204. }
  205. ],
  206. // 多语言
  207. "languages": [
  208. {
  209. "id": "language_1",
  210. // 语言表示
  211. "key": "hello",
  212. // 语言内容
  213. "values": [
  214. {
  215. "language": "zh-cn",
  216. "value": "你好",
  217. "font": "font_1"
  218. },
  219. {
  220. "language": "en",
  221. "value": "hello"
  222. },
  223. {
  224. "language": "ja",
  225. "value": "こんにちは"
  226. },
  227. {
  228. "language": "ko",
  229. "value": "안녕하세요"
  230. },
  231. {
  232. "language": "fr",
  233. "value": "bonjour"
  234. }
  235. ]
  236. }
  237. ],
  238. // 方法
  239. "methods": [
  240. {
  241. "id": "method_1",
  242. "name": "lv_obj_click",
  243. "action": "static lv_obj_click(void* ctx) { // TODO: 添加事件处理逻辑 }"
  244. }
  245. ],
  246. // 屏幕
  247. "screens": [
  248. {
  249. "id": "screen_1",
  250. "name": "主屏",
  251. // 类型
  252. "type": "screen",
  253. // 屏幕宽 未设置取通用配置
  254. "width": 1920,
  255. // 屏幕高 未设置取通用配置
  256. "height": 1080,
  257. // 隐藏
  258. "hidden": false,
  259. // 锁定
  260. "locked": false,
  261. // 页面
  262. "pages": [
  263. {
  264. "id": "page_1",
  265. // 页面名称
  266. "name": "启动页",
  267. // 类型
  268. "type": "page",
  269. // 隐藏
  270. "hidden": false,
  271. // 锁定
  272. "locked": false,
  273. // 参考线
  274. "referenceLine": [
  275. {
  276. "id": "r_1",
  277. // 垂直 水平
  278. "layout": "horizontal",
  279. // 位置
  280. "position": 0,
  281. // 显示
  282. "visible": true
  283. }
  284. ],
  285. // 属性
  286. "props": {},
  287. // 样式
  288. "style": {},
  289. // 事件
  290. "events": [],
  291. // 页面变量
  292. "variables": [
  293. {
  294. "id": "page_1_var_1",
  295. "name": "page_1_a",
  296. "value": "1",
  297. "type": "int"
  298. }
  299. ],
  300. // 子组件
  301. "children": [
  302. {
  303. "id": "lv_obj_01",
  304. // 控件名称
  305. "name": "obj_01",
  306. // 类型
  307. "type": "widget",
  308. // 控件类型
  309. "widgetType": "lv_obj",
  310. // 隐藏
  311. "hidden": false,
  312. // 锁定
  313. "locked": false,
  314. // 属性 根据每个控件生成
  315. "props": {
  316. // 坐标x
  317. "x": 0,
  318. // 坐标y
  319. "y": 0,
  320. // 宽度
  321. "width": 100,
  322. // 高度
  323. "height": 100,
  324. // 布局方式 flex grid
  325. "layout": "flex",
  326. // 启用
  327. "enable": true,
  328. // 可见
  329. "visible": true,
  330. // 值
  331. "value": {
  332. "valueType": "VARIABLE",
  333. "value": "page_1_a"
  334. },
  335. },
  336. // 样式 根据每个控件生成
  337. "style": {
  338. // 样式
  339. "style": "default",
  340. "state": {
  341. // 默认状态
  342. "normal": {
  343. // 直接使用颜色值
  344. "bg_color": "#000000",
  345. "border": "all", // all left right top bottom
  346. // 绑定变量或主题色
  347. "border_color": {
  348. // valueType的值: TEXT: 文本,VARIABLE: 变量,LANGUAGE: 多语言, COLOR: 主题颜色,不同的控件可以配置不同类型的属性
  349. "valueType": "TEXT",
  350. "value": "#ffffff"
  351. },
  352. "border_width": 1,
  353. "round_radius": 4
  354. },
  355. // 禁用状态
  356. "disabled": {
  357. "bg_color": "#000000",
  358. "border": "all",
  359. }
  360. }
  361. },
  362. // 事件
  363. "events": [
  364. {
  365. "id": "event_1",
  366. // 事件名称
  367. "name": "lv_obj_click_event",
  368. // 触发事件
  369. "trigger": "click",
  370. // 动作类型
  371. "type": "function", // 'play_animation' | 'function' -> play_animation: 播放动画 function: 执行函数
  372. // 动画ID
  373. animation: "",
  374. // 动画播放前函数ID
  375. animationPlayerBeforeEvent: "",
  376. // 动画播放后函数ID
  377. animationPlayerAfterEvent: "",
  378. // 函数ID
  379. function: "method_1"
  380. },
  381. // 加载完毕播放动画
  382. {
  383. "id": "event_1",
  384. // 事件名称
  385. "name": "lv_obj_click_event",
  386. // 触发事件
  387. "trigger": "click",
  388. // 动作类型
  389. "type": "play_animation", // 'play_animation' | 'function' -> play_animation: 播放动画 function: 执行函数
  390. // 动画ID
  391. animation: "animation_1",
  392. // 动画播放前函数ID
  393. animationPlayerBeforeEvent: "method_animation_1",
  394. // 动画播放后函数ID
  395. animationPlayerAfterEvent: "method_animation_2",
  396. // 函数ID
  397. function: ""
  398. }
  399. ],
  400. // 子对象
  401. "children": [
  402. {
  403. "id": "label_1",
  404. "name": "lv_label",
  405. "parentId": "lv_obj_01",
  406. "type": "object",
  407. "hidden": false,
  408. "locked": false,
  409. "props": [
  410. {
  411. "id": "prop_1",
  412. "name": "text",
  413. "type": "string",
  414. "text": {
  415. "valueType": "LANGUAGE",
  416. "value": "hello"
  417. }
  418. }
  419. ]
  420. }
  421. ]
  422. }
  423. ]
  424. }
  425. ]
  426. }
  427. ]
  428. }