Geometry 是图形语法数据处理和映射的体现点。

主要的逻辑:

  • 初始化(init、update)
    1. 根据视觉通道字段,创建或者更新 attribute 实例
    2. 处理数据
      1. 根据分组字段分组(color size shape 中的分类字段)

    3. 调整 scale
      1. stack 的 scale 处理
  • 渲染(render)
    1. 生成关键点(通过 { x y y0 size } 产生 points 数据)
    2. 数据映射
      1. 使用 attribute 映射视觉通道
      2. 通过 coordinate 将 position.xy 映射成成画布坐标
    3. 绘制 element:新增、更新、删除
      1. 组织生成 shapeInfo
      2. element.draw()

主要的关联类(用 uml 比较好)。

  • element
  • shape

改进点

待定,这么做了之后,整个 geometry 和 component 就是同构的,geometry 只不过是一个大型的 GUI 组件,这样:

  1. 会减少不少的特殊布局逻辑
  2. shape 的创建、更新、销毁走和 G.component 一样的逻辑