Skip to content

Add conicTo API and range-based Path iterator with PathIteratorNoConics for conic-to-quad conversion.#1252

Merged
domchen merged 12 commits intomainfrom
feature/YGaurora_Path_add_conic_to
Feb 6, 2026
Merged

Add conicTo API and range-based Path iterator with PathIteratorNoConics for conic-to-quad conversion.#1252
domchen merged 12 commits intomainfrom
feature/YGaurora_Path_add_conic_to

Conversation

@YGaurora
Copy link
Collaborator

@YGaurora YGaurora commented Feb 3, 2026

为 Path 类添加 conic 曲线支持和基于范围的迭代器。

主要变更:

  • 新增 Path::conicTo() 方法,支持绘制圆锥曲线(圆弧、椭圆弧、双曲线等)
  • 新增 Path::Iterator 支持 range-based for 循环遍历路径段,保留原始 conic 曲线
  • 新增 Path::ConvertConicToQuads() 静态方法,将 conic 转换为二次贝塞尔曲线
  • 新增内部类 PathIteratorNoConics,遍历时自动将 conic 转换为 quad 曲线
  • 重构 PDF、SVG、Web 平台的路径遍历逻辑,使用新迭代器替代原有的 decompose 回调方式
  • 添加相关单元测试用例

内部 Conic 转换场景:
以下场景使用 PathIteratorNoConics 将 conic 曲线转换为 quad,因为目标接口不原生支持 conic:

  • Web Canvas 栅格化:Canvas2D 只有 quadraticCurveTo
  • SVG 路径导出:SVG Path 语法只有 Q(quad)和 C(cubic)
  • PDF 导出:PDF 路径格式只支持直线和贝塞尔曲线

@YGaurora YGaurora changed the title Add conic curve support with Path::conicTo method and CurveConverter utility class. Add conicTo API and range-based Path iterator with PathIteratorNoConics for conic-to-quad conversion. Feb 6, 2026
…athIteratorNoConics to NoConicsPathIterator.
@domchen domchen merged commit 63342dc into main Feb 6, 2026
9 checks passed
@domchen domchen deleted the feature/YGaurora_Path_add_conic_to branch February 6, 2026 10:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants