Documentation
¶
Overview ¶
Package geom 提供渲染核心与各后端共用的几何类型及OFD绘制规则。 Path、Matrix、Point、Rect及描边类型是github.com/zc310/canvas的类型别名, 路径变换、裁剪、描边展开均复用该依赖,不在本仓库维护第二套路径引擎。
颜色、画笔和分辨率规则由本包维护:渐变保留OFD的非预乘插值及透明色标, Paint区分未指定颜色与显式透明,MinimumRasterStrokeWidth处理设备线宽下限。 各后端共享几何类型,绘制与字体引擎仍通过drawing接口注册。
Index ¶
- Constants
- Variables
- func Equal(a, b float64) bool
- func MinimumRasterStrokeWidth(resolution Resolution) float64
- func SolveQuadraticFormula(a, b, c float64) (float64, float64)
- type BevelJoiner
- type ButtCapper
- type Capper
- type FillRule
- type Grad
- type Gradient
- type GradientFunc
- type Joiner
- type LinearGradient
- type Matrix
- type MiterJoiner
- type Paint
- type Path
- type PathReverseScanner
- type PathScanner
- type Paths
- type Point
- type RadialGradient
- type Rect
- type Resolution
- type RoundCapper
- type RoundJoiner
- type SquareCapper
- type Stop
Constants ¶
const ( MoveToCmd = canvas.MoveToCmd LineToCmd = canvas.LineToCmd QuadToCmd = canvas.QuadToCmd CubeToCmd = canvas.CubeToCmd ArcToCmd = canvas.ArcToCmd CloseCmd = canvas.CloseCmd NonZero = canvas.NonZero EvenOdd = canvas.EvenOdd Positive = canvas.Positive Negative = canvas.Negative // Tolerance 是OFD描边展开显式传入的毫米容差,不修改canvas的全局配置。 Tolerance = 0.01 DefaultResolution = canvas.DefaultResolution )
Variables ¶
var ( Transparent = color.RGBA{} Black = color.RGBA{A: 0xff} White = color.RGBA{R: 0xff, G: 0xff, B: 0xff, A: 0xff} )
常用颜色(与 canvas 的 Transparent/Black/White 一致)。
Functions ¶
func MinimumRasterStrokeWidth ¶ added in v0.1.5
func MinimumRasterStrokeWidth(resolution Resolution) float64
MinimumRasterStrokeWidth 返回栅格化时极细正线宽的下限(毫米)。 GB/T 33190—2016 表21以两个像素描述正线宽的设备下限;低分辨率预览 按300 DPI参考设备换算该下限,允许抗锯齿覆盖不足一个输出像素, 避免将字形轮廓扩成两个实心像素后挤住字腔。300 DPI及以上按实际设备计算。
func SolveQuadraticFormula ¶
Types ¶
type BevelJoiner ¶
type BevelJoiner = canvas.BevelJoiner
几何类型直接复用canvas。字体轮廓、OFD变换及各后端消费同一条路径, 不再逐段转换或持有另一份路径缓存。共享轮廓仍须先Copy再修改。
type ButtCapper ¶
type ButtCapper = canvas.ButtCapper
几何类型直接复用canvas。字体轮廓、OFD变换及各后端消费同一条路径, 不再逐段转换或持有另一份路径缓存。共享轮廓仍须先Copy再修改。
type Grad ¶
type Grad []Stop
Grad 是按 offset 升序排列的渐变色标集合。
func (Grad) ToLinear ¶
func (g Grad) ToLinear(start, end Point) *LinearGradient
ToLinear 把色标集合绑定到线性渐变。
type GradientFunc ¶
GradientFunc 让普通函数实现 Gradient。
type LinearGradient ¶
type LinearGradient struct {
Grad
Start, End Point
// Extend[0] 控制起点之前是否着色、Extend[1] 控制终点之后是否着色;
// 为 false 时该区域不着色(透明)。
Extend [2]bool
// contains filtered or unexported fields
}
LinearGradient 是 start→end 的线性渐变。
func NewLinearGradient ¶
func NewLinearGradient(start, end Point) *LinearGradient
NewLinearGradient 返回线性渐变,默认两端都延伸。
type MiterJoiner ¶
type MiterJoiner = canvas.MiterJoiner
几何类型直接复用canvas。字体轮廓、OFD变换及各后端消费同一条路径, 不再逐段转换或持有另一份路径缓存。共享轮廓仍须先Copy再修改。
type Path ¶
几何类型直接复用canvas。字体轮廓、OFD变换及各后端消费同一条路径, 不再逐段转换或持有另一份路径缓存。共享轮廓仍须先Copy再修改。
func MustParseSVGPath ¶
func RoundedRectangle ¶
type PathReverseScanner ¶
type PathReverseScanner = canvas.PathReverseScanner
几何类型直接复用canvas。字体轮廓、OFD变换及各后端消费同一条路径, 不再逐段转换或持有另一份路径缓存。共享轮廓仍须先Copy再修改。
type PathScanner ¶
type PathScanner = canvas.PathScanner
几何类型直接复用canvas。字体轮廓、OFD变换及各后端消费同一条路径, 不再逐段转换或持有另一份路径缓存。共享轮廓仍须先Copy再修改。
type RadialGradient ¶
type RadialGradient struct {
Grad
C0, C1 Point
R0, R1 float64
// Extend[0] 控制起始圆之前是否着色、Extend[1] 控制终止圆之后是否着色;
// 为 false 时该区域不着色(透明)。
Extend [2]bool
// contains filtered or unexported fields
}
RadialGradient 是两个圆之间的径向渐变。
func NewRadialGradient ¶
func NewRadialGradient(c0 Point, r0 float64, c1 Point, r1 float64) *RadialGradient
NewRadialGradient 返回径向渐变,默认两端都延伸。
func (*RadialGradient) At ¶
func (g *RadialGradient) At(x, y float64) color.RGBA
At 返回 (x,y) 处的颜色(参考 pixman-radial-gradient 实现)。
func (*RadialGradient) RadialParameter ¶ added in v0.1.4
func (g *RadialGradient) RadialParameter(x, y float64, extend int) (float64, bool)
RadialParameter 返回点 (x,y) 在两圆插值族 ((1-t)·C0+t·C1, R0+t·dr) 中的参数 t, 以及该点是否存在可用的解。参数 t 是 PDF/pixman 的同一参数:圆的半径为 R0+t·dr。
一个点可能同时落在两个圆上,两类根分别取较大的 t:轴内根属于扫描本身,轴外根 只有在该方向允许延伸时才算可用(extend 第 0 位允许 t<0 起点侧,第 1 位允许 t>1 终点侧)。半径 R0+t·dr 为负的圆被排除。没有任何可用解时 ok 为 false, 表示该点不在着色范围内(未延伸区域保持透明)。
轴内根优先于轴外根:延伸只负责扫描范围之外的点,不该覆盖扫描已经给出的颜色。 若把两类根放进同一个「取最大 t」的池子,由于任何 t>1 的根都大于任何 t<=1 的根, 终点侧延伸会把终止圆附近整片区域压成终点色——Extend 含终点位时那片区域是纯蓝, 而同一批点在 Extend=0 与 Extend=3 下仍保留渐变,三者自相矛盾。 不同 Extend 组合的差异只出现在扫描覆盖不到的点:例如点只落在 t=1.8 上(轴内无根)时, Extend 含终点位取 1.8(终点色),否则透明。
type Rect ¶
几何类型直接复用canvas。字体轮廓、OFD变换及各后端消费同一条路径, 不再逐段转换或持有另一份路径缓存。共享轮廓仍须先Copy再修改。
func RectFromSize ¶
type Resolution ¶
type Resolution = canvas.Resolution
几何类型直接复用canvas。字体轮廓、OFD变换及各后端消费同一条路径, 不再逐段转换或持有另一份路径缓存。共享轮廓仍须先Copy再修改。
func DPI ¶
func DPI(dpi float64) Resolution
func DPMM ¶
func DPMM(dpmm float64) Resolution
type RoundCapper ¶
type RoundCapper = canvas.RoundCapper
几何类型直接复用canvas。字体轮廓、OFD变换及各后端消费同一条路径, 不再逐段转换或持有另一份路径缓存。共享轮廓仍须先Copy再修改。
type RoundJoiner ¶
type RoundJoiner = canvas.RoundJoiner
几何类型直接复用canvas。字体轮廓、OFD变换及各后端消费同一条路径, 不再逐段转换或持有另一份路径缓存。共享轮廓仍须先Copy再修改。
type SquareCapper ¶
type SquareCapper = canvas.SquareCapper
几何类型直接复用canvas。字体轮廓、OFD变换及各后端消费同一条路径, 不再逐段转换或持有另一份路径缓存。共享轮廓仍须先Copy再修改。