package rough
import "sync"
type patternFiller interface {
fillPolygon(points []Point , o *ResolvedOptions ) OpSet
}
type renderHelper struct {
randOffset func (x float64 , o *ResolvedOptions ) float64
randOffsetWithRange func (min, max float64 , o *ResolvedOptions ) float64
ellipse func (x, y, width, height float64 , o *ResolvedOptions ) OpSet
doubleLineOps func (x1, y1, x2, y2 float64 , o *ResolvedOptions ) []Op
}
var fillerCache = struct {
sync .Mutex
fillers map [string ]patternFiller
}{fillers : make (map [string ]patternFiller )}
func getFiller(o *ResolvedOptions , helper renderHelper ) patternFiller {
fillerName := o .FillStyle
if fillerName == "" {
fillerName = "hachure"
}
fillerCache .Lock ()
defer fillerCache .Unlock ()
if filler := fillerCache .fillers [fillerName ]; filler != nil {
return filler
}
var filler patternFiller
switch fillerName {
case "zigzag" :
filler = &zigZagFiller {hachureFiller : hachureFiller {helper : helper }}
case "cross-hatch" :
filler = &hatchFiller {hachureFiller : hachureFiller {helper : helper }}
case "dots" :
filler = &dotFiller {helper : helper }
case "dashed" :
filler = &dashedFiller {helper : helper }
case "zigzag-line" :
filler = &zigZagLineFiller {helper : helper }
case "hachure" :
filler = &hachureFiller {helper : helper }
default :
fillerName = "hachure"
if filler = fillerCache .fillers [fillerName ]; filler != nil {
return filler
}
filler = &hachureFiller {helper : helper }
}
fillerCache .fillers [fillerName ] = filler
return filler
}
The pages are generated with Golds v0.8.7 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .