SVG加载模块
能够加载解析svg文件并且挂在一个根Group下面,解析出来的结果能够保持原先的层级结构,能够保持attributes和style里的样式,css里的样式暂时忽略。 脑补用法1:
svgLoader.load('sample.svg', opts).then(function(g) {
zr.addGroup(g);
zr.refresh();
});
脑补用法2:
// 是对上一种的封装,通过 zr 加载可以在加载完后自动刷新,就跟图片差不多了
// 第一个参数是 svg 的路径(也可以是svg dom节点?)
// 第二个参数是挂载的根节点, 如果为空则返回新创建的根节点
// 第三个是可能会有的一些可选参数
zr.loadSVG('sample.svg', rootGroup, opts);
几个问题
- 需要一个http模块,放在zrender/tool 下?
- 是否需要一个 promise 模块?
- Group 模块从 shape 目录移出来放到一个 container 目录下?
1、需要一个http模块,放在zrender/tool 下? 2、是否需要一个 promise 模块? http模块和promise模块都用外部依赖吧,e系内应该很多现成的,都放到lib里?把lib改名为dep?
3、Group 模块从 shape 目录移出来放到一个 container 目录下? container不太合适,这里面放的都是容器?这个目录的目标是什么?
嗯我看下现成的。
以后都会放容器,原来和所有shape放一个目录下应该是没问题的,但是现在那个目录名字是shape,而且有个Base类,很容易误解这个Group是Base的子类(刚开始实现Group的时候也犹豫过是否从Base扩展,但是很多方法都不会用到所以放弃了)。现在把 Group 移出来主要是想强调这个和Base是同一层级的,而并不是一个shape。
svg加载放入根目录下的extension里作为一个插件,示例是doc/example.html
目前完成的:
- 保留原始的层级关系
- attributes和style里的绘制样式,样式的继承
- transform属性的解析,支持translate, rotate, scale, transform, 不支持skew
- defs的引用,目前支持gradient
- 支持图形
rect,circle,line,ellipse,polygon,polyline,path。text和image稍后加入
tool目录下加入http模块
Group模块从shape目录移到src目录下
9年了,这个功能完成了吗?并没有找到对应的演示文件
@nanfb https://github.com/ecomfe/zrender/blob/master/src/tool/parseSVG.ts
@nanfb https://github.com/ecomfe/zrender/blob/master/src/tool/parseSVG.ts
导出的方法是这个吗?parseXML,怪不得找不到,靴靴
@nanfb https://github.com/ecomfe/zrender/blob/master/src/tool/parseSVG.ts
导出的方法是这个吗?parseXML,怪不得找不到,靴靴
这个方法对于defs中引入的样式不支持,只能显示标签中的属性,