// 项目json结构
{
  // 版本号
  "version": "1.0.0",
  // 应用元数据
  "meta": {
    // 项目名称
    "name": "智能HOME项目",
    // 项目版本号
    "version": "1.0.0",
    // 项目描述
    "description": "智能HOME项目",
    // 源码路径
    "codePath": "C:\\Users\\Administrator\\Desktop\\project\\code",
    // 项目类型
    "type": "chip", // 'analog_display' | 'chip' | 'board' 1: 模拟显示 2: 芯片 3: 板卡
    // 屏幕类型
    "screenType": "single", // 'single' | 'dual' 1：单屏 2：双屏
    // 语言
    "language": "zh-cn",
    // 资源打包方式
    "resourcePackaging": "c_bin", // 'c' | 'c_bin' 1: C源码 2: C源码+BIN
    // BIN数量
    "binNum": "1", // 1~32
    // 芯片配置
    "chip": {
      // 芯片型号
      "model": "ESP32",
      // 闪存大小
      "flash_size": {
        "capacity": "16",
        "unit": "M"
      },
      // 内存大小
      "ram_size": {
        "capacity": "4",
        "unit": "M"
      }
    },
    // 板卡配置
    "board": {
      // 板卡型号
      "model": "ESP32",
    },
    // 屏幕配置
    "screens": [
      {
        // 屏幕类型
        "type": "1", // 1：主屏 2：副屏
        // 接口类型
        "interface": "RGB",
        // 屏幕宽
        "width": 1920,
        // 屏幕高
        "height": 1080,
        // 颜色深度
        "colorDepth": "16bit",
        // 颜色格式
        "colorFormat": "BGR",
        // 屏幕参数
        "params": {
          "PCLK": "",
          "VBP": "",
          "VFP": "",
          "HBP": "",
          "HFP": "",
          "HSYNC": "",
          "VSYNC": "",
          "HSYNC_WIDTH": "",
          "HSYNC_WIDTH": ""
        }
      }
    ],
    // 创建时间
    "createTime": "2025-09-01 12:00:00",
    // 修改时间
    "modifyTime": "2025-09-01 12:00:00",
  },
  // BIN列表
  "bins": [
    {
      "id": "bin_1",
      "fileName": "bin1.bin",
      "path": "./src/bin/bin1.bin"
    },
    {
      "id": "bin_2",
      "fileName": "bin2.bin",
      "path": "./src/bin/bin2.bin"
    }
  ],
  // 资源
  "resources": {
    // 图片资源
    "images": [
      {
        "id": "img_1",
        "fileName": "image1.png",
        "fileType": "png",
        "path": "./src/assets/images/image1.png",
        "compressFormat": "rle", // 无压缩、RLE压缩、QOI压缩、JPEG压缩、PNG压缩
        "alpha": 255, // 透明度0-255
        "bin": "bin_1", // 关联的BIN ID
        "colorFormat": "RGB565", // 颜色格式
        "colorDepth": "16bit", // 颜色深度
      }
    ],
    // 字体资源
    "fonts": [
      {
        "id": "font_1",
        "fileName": "font1.ttf",
        "fileType": "ttf",
        "path": "./src/assets/fonts/font1.ttf",
        "range": ["page", "custom", "range"], // 'all' | 'page' | 'custom' | 'range' 0: 全部 1：界面文本 2：自定义文本 3: 编码范围
        // 编码范围
        "codeRange": ["0x4E00-0x9FA5"],
        // 额外的文本内容
        "extText": "abcdefghijklmnopqrstuvwxyz",
        "bin": "bin_1" // 关联的BIN ID
      }
    ],
    "others": [
      // 动画资源
      {
        "id": "o_1",
        "fileName": "other.an",
        "fileType": "an",
        "path": "./src/assets/others/other.an"
      },
      // 样式资源
      {
        "id": "o_2",
        "fileName": "a.style",
        "fileType": "style",
        "path": "./src/assets/others/a.style"
      }
    ]
  },
  // 可复用控件
  "widgets": [
    {
      "id": "copy_obj_1",
      // 控件名称
      "name": "copy_obj_1",
      // 控件类型
      "widgetType": "lv_object",
      // 是否为可复用组件 widgets里面的为true
      "isCopy": true,
      // 复用来源组件id
      "copyFrom": "",
      // 元素类型
      "type": "widget",
      // 属性 根据每个控件生成
      "props": {
        // 坐标x
        "x": 0,
        // 坐标y
        "y": 0,
        // 宽度
        "width": 100,
        // 高度
        "height": 100,
        // 布局方式 flex grid
        "layout": "flex",
        // 启用
        "enable": true,
        // 可见
        "visible": true,
        // 值
        "value": {
          "valueType": "VARIABLE",
          "value": "page_1_a"
        },
      },
      // 样式 根据每个控件生成
      "style": [
        {
          part: {
            name: 'main',
            state: 'default'
          },
          background: {
            color: {
              // valueType的值： TEXT: 文本，VARIABLE: 变量，LANGUAGE: 多语言, COLOR: 主题颜色，不同的控件可以配置不同类型的属性
              "valueType": "TEXT", 
              "value": "#ffffff"
            },
            alpha: 255,
            image: {
              src: '',
              alpha: 255,
              colorFormat: '',
              colorDepth: '',
              color: ''
            }
          },
          text: {
            color: '#ffffff',
            family: '',
            size: 14,
            weight: 400,
            align: 'center'
          },
          border: {
            color: '#2195f6',
            width: 2,
            radius: 0,
            style: 'solid',
            side: 'all'
          },
          padding: {
            top: 0,
            right: 0,
            bottom: 0,
            left: 0
          },
          margin: {
            top: 0,
            right: 0,
            bottom: 0,
            left: 0
          },
          align: {
            horizontal: 'center',
            vertical: 'center'
          },
          shadow: {
            color: '',
            opacity: 127,
            x: 0,
            y: 0,
            blur: 0
          }
        }
      ],
      // 事件
      "events": [
        {
          "id": "event_1",
          // 事件名称
          "name": "lv_obj_click_event",
          // 触发事件
          "trigger": "click",
          // 动作类型
          "type": "function", // 'play_animation' | 'function' -> play_animation: 播放动画 function: 执行函数
          // 动画ID
          animation: "",
          // 动画播放前函数ID
          animationPlayerBeforeEvent: "",
          // 动画播放后函数ID
          animationPlayerAfterEvent: "",
          // 函数ID
          function: "method_1"
        },
        // 加载完毕播放动画
        {
          "id": "event_1",
          // 事件名称
          "name": "lv_obj_click_event",
          // 触发事件
          "trigger": "click",
          // 动作类型
          "type": "play_animation", // 'play_animation' | 'function' -> play_animation: 播放动画 function: 执行函数
          // 动画ID
          animation: "animation_1",
          // 动画播放前函数ID
          animationPlayerBeforeEvent: "method_animation_1",
          // 动画播放后函数ID
          animationPlayerAfterEvent: "method_animation_2",
          // 函数ID
          function: ""
        }
      ],
      // 子对象
      "children": [
        {
          "id": "label_1",
          "name": "lv_label",
          "widgetType": "lv_label",
          "isCopy": false,
          "copyFrom": "",
          "type": "widget",
          "hidden": false,
          "locked": false,
          "props": {
            "id": "prop_1",
            "name": "text",
            "type": "string",
            "text": {
              "valueType": "LANGUAGE",
              "value": "hello" 
            }
          },
          "style": [],
          "events": [],
          "children": []
        }
      ]
    },
  ],
  // 全局变量定义
  "variables": [
    {
      // 组ID
      "id": "group_1",
      // 组名称
      "name": "default_group",
      // 变量
      "variables": [
        {
          "id": "var_1",
          "name": "a",
          "value": "1",
          "type": "int"
        }
      ]
    }
  ],
  // 主题
  "themes": [
    {
      "id": "theme_0",
      // 主题名称
      "name": "默认主题",
      // 默认主题
      "default": true,
      // 颜色集
      "colors": [
        {
          "id": "color_1",
          // 颜色名称
          "name": "背景颜色",
          // 颜色值
          "value": "#000000",
          // 透明度
          "alpha": 255
        }
      ]
    },
    {
      "id": "theme_1",
      // 主题名称
      "name": "高亮主题",
      // 默认主题
      "default": false,
      // 颜色集 这里的颜色只能从默认主题获取，可以修改值
      "colors": [
        {
          "id": "color_1",
          // 颜色名称
          "name": "背景颜色",
          // 颜色值
          "value": "#ffffff",
          // 透明度
          "alpha": 255
        }
      ]
    }
  ],
  // 动画
  "animations": [
    {
      // 动画名称
      "name": "move_x_animation",
      // 时间轴
      "timeline": [
        {
          // 目标属性
          "target": "x",
          // 开始值
          "start": 0,
          // 结束值
          "end": 100,
          // 延迟时间
          "delay": 0,
          // 动画时间
          "duration": 500,
          // 动画效果
          "timingFunction": "ease",
          // 动画次数
          "iterationCount": "infinite" // 数值或infinite
        }
      ]
    }
  ],
  // 多语言
  "languages": [
    {
      "id": "language_1",
      // 语言表示
      "key": "hello",
      // 语言内容
      "values": [
        {
          "language": "zh-cn",
          "value": "你好",
          "font": "font_1"
        },
        {
          "language": "en",
          "value": "hello"
        },
        {
          "language": "ja",
          "value": "こんにちは"
        },
        {
          "language": "ko",
          "value": "안녕하세요"
        },
        {
          "language": "fr",
          "value": "bonjour"
        }
      ]
    }
  ],
  // 方法
  "methods": [
    {
      "id": "method_1",
      "name": "lv_obj_click",
      "action": "static lv_obj_click(void* ctx) { // TODO: 添加事件处理逻辑 }"
    }
  ],
  // 屏幕
  "screens": [
    {
      "id": "screen_1",
      // 名称
      "name": "主屏",
      // 元素类型
      "type": "screen",
      // 屏幕宽 未设置取通用配置
      "width": 1920,
      // 屏幕高 未设置取通用配置
      "height": 1080,
      // 颜色深度
      "colorDepth": "16bit",
      // 颜色格式
      "colorFormat": "BGR",
      // 页面
      "pages": [
        {
          "id": "page_1",
          // 页面名称
          "name": "启动页",
          // 元素类型
          "type": "page",
          // 隐藏
          "hidden": false,
          // 锁定
          "locked": false,
          // 参考线
          "referenceLine": [
            {
              "id": "r_1",
              // 垂直 水平
              "layout": "horizontal", 
              // 位置
              "position": 0,
              // 显示
              "visible": true
            }
          ],
          // 属性
          "props": {},
          // 样式
          "style": [],
          // 事件
          "events": [],
          // 页面变量
          "variables": [
            {
              // 组ID
              "id": "page_group_1",
              // 组名称
              "name": "default_group",
              // 变量
              "variables": [
                {
                  "id": "var_1",
                  "name": "a",
                  "value": "1",
                  "type": "int"
                }
              ]
            }
          ],
          // 子组件
          "children": [
            {
              "id": "lv_obj_01",
              // 控件类型
              "widgetType": "lv_obj",
              // 控件名称
              "name": "容器",
              // 是否为可复用组件
              "isCopy": false,
              // 复用来源组件id
              "copyFrom": "copy_obj_1",
              // 类型
              "type": "widget",
              // 隐藏
              "hidden": false,
              // 锁定
              "locked": false,
              // 属性 根据每个控件生成
              "props": {
                // 坐标x
                "x": 100,
                // 坐标y
                "y": 100
              }
            },
            {
              "id": "label_1",
              "name": "lv_label",
              "widgetType": "lv_label",
              "isCopy": false,
              "copyFrom": "",
              "type": "widget",
              "hidden": false,
              "locked": false,
              "props": {
                "id": "prop_1",
                "name": "text",
                "type": "string",
                "text": {
                  "valueType": "LANGUAGE",
                  "value": "hello" 
                }
              },
              "style": [],
              "events": [],
              "children": []
            }
          ]
        }
      ]
    }
  ]
}