mirror of
https://github.com/xiaoqidun/ofdgo.git
synced 2026-10-29 13:56:32 +08:00
1 parent
5e0da3da28
commit
ee6c9f6a16
82 files changed
+4316
-4310
No files matched your search
+24
-24
@@ -19,9 +19,6 @@ import (
|
||||
"math"
|
||||
)
|
||||
|
||||
// GeometryOperation 指定路径填充区域的布尔运算
|
||||
type GeometryOperation uint8
|
||||
|
||||
const (
|
||||
GeometryIntersect GeometryOperation = iota
|
||||
GeometryUnion
|
||||
@@ -29,6 +26,9 @@ const (
|
||||
GeometryXor
|
||||
)
|
||||
|
||||
// GeometryOperation 指定路径填充区域的布尔运算
|
||||
type GeometryOperation uint8
|
||||
|
||||
// StrokeOptions 描述描边参数,长度单位为毫米
|
||||
type StrokeOptions struct {
|
||||
// Width为正有限描边宽度
|
||||
@@ -64,27 +64,6 @@ type GeometryCurves interface {
|
||||
Curves(path GeometryPath) (GeometryPath, error)
|
||||
}
|
||||
|
||||
// validateStroke 校验各后端共用的描边参数
|
||||
// 入参: options 描边样式
|
||||
// 返回: error 无效样式
|
||||
func validateStroke(options StrokeOptions) error {
|
||||
if !finite(options.Width) || options.Width <= 0 || !finite(options.Tolerance) || options.Tolerance < 0 || !finite(options.DashOffset) || !finite(options.MiterLimit) || options.MiterLimit < 0 {
|
||||
return fmt.Errorf("invalid stroke width or tolerance")
|
||||
}
|
||||
if options.Cap != "" && options.Cap != "Butt" && options.Cap != "Round" && options.Cap != "Square" {
|
||||
return fmt.Errorf("invalid stroke cap %q", options.Cap)
|
||||
}
|
||||
if options.Join != "" && options.Join != "Miter" && options.Join != "Round" && options.Join != "Bevel" {
|
||||
return fmt.Errorf("invalid stroke join %q", options.Join)
|
||||
}
|
||||
for _, dash := range options.Dashes {
|
||||
if !finite(dash) || dash < 0 {
|
||||
return fmt.Errorf("invalid stroke dash")
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Geometry 返回当前几何后端,不隐式恢复默认实现
|
||||
// 返回: GeometryBackend 几何后端, error 未配置错误
|
||||
func (r *Renderer) Geometry() (GeometryBackend, error) {
|
||||
@@ -118,6 +97,27 @@ func (r *Renderer) PathOutline(object PathObject) (string, error) {
|
||||
return path.SVG()
|
||||
}
|
||||
|
||||
// validateStroke 校验各后端共用的描边参数
|
||||
// 入参: options 描边样式
|
||||
// 返回: error 无效样式
|
||||
func validateStroke(options StrokeOptions) error {
|
||||
if !finite(options.Width) || options.Width <= 0 || !finite(options.Tolerance) || options.Tolerance < 0 || !finite(options.DashOffset) || !finite(options.MiterLimit) || options.MiterLimit < 0 {
|
||||
return fmt.Errorf("invalid stroke width or tolerance")
|
||||
}
|
||||
if options.Cap != "" && options.Cap != "Butt" && options.Cap != "Round" && options.Cap != "Square" {
|
||||
return fmt.Errorf("invalid stroke cap %q", options.Cap)
|
||||
}
|
||||
if options.Join != "" && options.Join != "Miter" && options.Join != "Round" && options.Join != "Bevel" {
|
||||
return fmt.Errorf("invalid stroke join %q", options.Join)
|
||||
}
|
||||
for _, dash := range options.Dashes {
|
||||
if !finite(dash) || dash < 0 {
|
||||
return fmt.Errorf("invalid stroke dash")
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// geometryRectangle 构建页面坐标矩形,保留输入精度
|
||||
// 入参: box 矩形范围
|
||||
// 返回: GeometryPath 闭合路径
|
||||
|
||||
Reference in new issue
Block a user