func TestSimpleRasterizer(t *testing.T) { bounds := image.Rect(0, 0, 200, 200) img := image.NewRGBA(bounds) mask := image.NewAlpha(bounds) var p Path p.LineTo(10, 190) c := curve.CubicCurveFloat64{10, 190, 10, 10, 190, 10, 190, 190} c.Segment(&p, flattening_threshold) poly := Polygon(p.points) rgba := color.RGBA{0, 0, 0, 0xff} r := NewRasterizer() r.Fill(mask, poly, false) DrawSolidRGBA(img, mask, rgba) savepng("_testSimpleRasterizer.png", img) }
func BenchmarkRasterizer(b *testing.B) { var p Path p.LineTo(10, 190) c := curve.CubicCurveFloat64{10, 190, 10, 10, 190, 10, 190, 190} c.Segment(&p, flattening_threshold) poly := Polygon(p.points) color := color.RGBA{0, 0, 0, 0xff} tr := [6]float64{1, 0, 0, 1, 0, 0} rasterizer := NewRasterizer8BitsSample(200, 200) for i := 0; i < b.N; i++ { img := image.NewRGBA(image.Rect(0, 0, 200, 200)) rasterizer.RenderEvenOdd(img, color, []Polygon{poly}, tr) } }
func TestRasterizerNonZeroWinding(t *testing.T) { img := image.NewRGBA(image.Rect(0, 0, 200, 200)) var p Path p.LineTo(10, 190) c := curve.CubicCurveFloat64{10, 190, 10, 10, 190, 10, 190, 190} c.Segment(&p, flattening_threshold) poly := Polygon(p.points) color := color.RGBA{0, 0, 0, 0xff} tr := [6]float64{1, 0, 0, 1, 0, 0} r := NewRasterizer8BitsSample(200, 200) //PolylineBresenham(img, image.Black, poly...) r.RenderNonZeroWinding(img, color, []Polygon{poly}, tr) savepng("_testRasterizerNonZeroWinding.png", img) }
func BenchmarkSimpleRasterizerNonZero(b *testing.B) { var p Path p.LineTo(10, 190) c := curve.CubicCurveFloat64{10, 190, 10, 10, 190, 10, 190, 190} c.Segment(&p, flattening_threshold) poly := Polygon(p.points) rgba := color.RGBA{0, 0, 0, 0xff} rasterizer := NewRasterizer() for i := 0; i < b.N; i++ { bounds := image.Rect(0, 0, 200, 200) img := image.NewRGBA(bounds) mask := image.NewAlpha(bounds) rasterizer.Fill(mask, poly, true) DrawSolidRGBA(img, mask, rgba) } }
func TestFreetype(t *testing.T) { var p Path p.LineTo(10, 190) c := curve.CubicCurveFloat64{10, 190, 10, 10, 190, 10, 190, 190} c.Segment(&p, flattening_threshold) poly := Polygon(p.points) rgba := color.RGBA{0, 0, 0, 0xff} bounds := image.Rect(0, 0, 200, 200) mask := image.NewAlpha(bounds) img := image.NewRGBA(bounds) rasterizer := raster.NewRasterizer(200, 200) rasterizer.UseNonZeroWinding = false rasterizer.Start(raster.Point{raster.Fix32(10 * 256), raster.Fix32(190 * 256)}) for j := 0; j < len(poly); j = j + 2 { rasterizer.Add1(raster.Point{raster.Fix32(poly[j] * 256), raster.Fix32(poly[j+1] * 256)}) } painter := raster.NewAlphaSrcPainter(mask) rasterizer.Rasterize(painter) DrawSolidRGBA(img, mask, rgba) savepng("_testFreetype.png", img) }