diff --git a/freetype/raster/geom.go b/freetype/raster/geom.go index 1489a81..63c86e6 100644 --- a/freetype/raster/geom.go +++ b/freetype/raster/geom.go @@ -101,7 +101,7 @@ func (p Point) Len() Fix32 { func (p Point) Norm(length Fix32) Point { d := p.Len() if d == 0 { - return Point{0, 0} + return Point{} } s, t := int64(length), int64(d) x := int64(p.X) * s / t @@ -204,74 +204,34 @@ func (p Path) String() string { return s } -// grow adds n elements to p. -func (p *Path) grow(n int) { - n += len(*p) - if n > cap(*p) { - old := *p - *p = make([]Fix32, n, 2*n+8) - copy(*p, old) - return - } - *p = (*p)[0:n] -} - // Clear cancels any previous calls to p.Start or p.AddXxx. func (p *Path) Clear() { - *p = (*p)[0:0] + *p = (*p)[:0] } // Start starts a new curve at the given point. func (p *Path) Start(a Point) { - n := len(*p) - p.grow(4) - (*p)[n] = 0 - (*p)[n+1] = a.X - (*p)[n+2] = a.Y - (*p)[n+3] = 0 + *p = append(*p, 0, a.X, a.Y, 0) } // Add1 adds a linear segment to the current curve. func (p *Path) Add1(b Point) { - n := len(*p) - p.grow(4) - (*p)[n] = 1 - (*p)[n+1] = b.X - (*p)[n+2] = b.Y - (*p)[n+3] = 1 + *p = append(*p, 1, b.X, b.Y, 1) } // Add2 adds a quadratic segment to the current curve. func (p *Path) Add2(b, c Point) { - n := len(*p) - p.grow(6) - (*p)[n] = 2 - (*p)[n+1] = b.X - (*p)[n+2] = b.Y - (*p)[n+3] = c.X - (*p)[n+4] = c.Y - (*p)[n+5] = 2 + *p = append(*p, 2, b.X, b.Y, c.X, c.Y, 2) } // Add3 adds a cubic segment to the current curve. func (p *Path) Add3(b, c, d Point) { - n := len(*p) - p.grow(8) - (*p)[n] = 3 - (*p)[n+1] = b.X - (*p)[n+2] = b.Y - (*p)[n+3] = c.X - (*p)[n+4] = c.Y - (*p)[n+5] = d.X - (*p)[n+6] = d.Y - (*p)[n+7] = 3 + *p = append(*p, 3, b.X, b.Y, c.X, c.Y, d.X, d.Y, 3) } // AddPath adds the Path q to p. func (p *Path) AddPath(q Path) { - n, m := len(*p), len(q) - p.grow(m) - copy((*p)[n:n+m], q) + *p = append(*p, q...) } // AddStroke adds a stroked Path. diff --git a/freetype/raster/paint.go b/freetype/raster/paint.go index cf6f305..13cccc1 100644 --- a/freetype/raster/paint.go +++ b/freetype/raster/paint.go @@ -208,11 +208,11 @@ func (m *MonochromePainter) Paint(ss []Span, done bool) { if j < len(ss) { ss[j] = finalSpan j++ - m.Painter.Paint(ss[0:j], true) + m.Painter.Paint(ss[:j], true) } else if j == len(ss) { m.Painter.Paint(ss, false) if cap(ss) > 0 { - ss = ss[0:1] + ss = ss[:1] } else { ss = make([]Span, 1) } @@ -224,7 +224,7 @@ func (m *MonochromePainter) Paint(ss []Span, done bool) { // Reset the accumulator, so that this Painter can be re-used. m.y, m.x0, m.x1 = 0, 0, 0 } else { - m.Painter.Paint(ss[0:j], false) + m.Painter.Paint(ss[:j], false) } } @@ -253,11 +253,11 @@ func (g *GammaCorrectionPainter) Paint(ss []Span, done bool) { M = 0x1010101 // 255*M == 1<<32-1 N = 0x8080 // N = M>>9, and N < 1<<16-1 ) - for i, _ := range ss { - if ss[i].A == 0 || ss[i].A == 1<<32-1 { + for i, s := range ss { + if s.A == 0 || s.A == 1<<32-1 { continue } - p, q := ss[i].A/M, (ss[i].A%M)>>9 + p, q := s.A/M, (s.A%M)>>9 // The resultant alpha is a linear interpolation of g.a[p] and g.a[p+1]. a := uint32(g.a[p])*(N-q) + uint32(g.a[p+1])*q a = (a + N/2) / N diff --git a/freetype/raster/raster.go b/freetype/raster/raster.go index 90b57b7..45af7ea 100644 --- a/freetype/raster/raster.go +++ b/freetype/raster/raster.go @@ -327,8 +327,8 @@ func (r *Rasterizer) Add2(b, c Point) { s := sStack[i] p := pStack[2*i:] if s > 0 { - // Split the quadratic curve p[0:3] into an equivalent set of two shorter curves: - // p[0:3] and p[2:5]. The new p[4] is the old p[2], and p[0] is unchanged. + // Split the quadratic curve p[:3] into an equivalent set of two shorter curves: + // p[:3] and p[2:5]. The new p[4] is the old p[2], and p[0] is unchanged. mx := p[1].X p[4].X = p[2].X p[3].X = (p[4].X + mx) / 2 @@ -385,8 +385,8 @@ func (r *Rasterizer) Add3(b, c, d Point) { s := sStack[i] p := pStack[3*i:] if s > 0 { - // Split the cubic curve p[0:4] into an equivalent set of two shorter curves: - // p[0:4] and p[3:7]. The new p[6] is the old p[3], and p[0] is unchanged. + // Split the cubic curve p[:4] into an equivalent set of two shorter curves: + // p[:4] and p[3:7]. The new p[6] is the old p[3], and p[0] is unchanged. m01x := (p[0].X + p[1].X) / 2 m12x := (p[1].X + p[2].X) / 2 m23x := (p[2].X + p[3].X) / 2 @@ -519,22 +519,22 @@ func (r *Rasterizer) Rasterize(p Painter) { } } if s > len(r.spanBuf)-2 { - p.Paint(r.spanBuf[0:s], false) + p.Paint(r.spanBuf[:s], false) s = 0 } } } - p.Paint(r.spanBuf[0:s], true) + p.Paint(r.spanBuf[:s], true) } // Clear cancels any previous calls to r.Start or r.AddXxx. func (r *Rasterizer) Clear() { - r.a = Point{0, 0} + r.a = Point{} r.xi = 0 r.yi = 0 r.area = 0 r.cover = 0 - r.cell = r.cell[0:0] + r.cell = r.cell[:0] for i := 0; i < len(r.cellIndex); i++ { r.cellIndex[i] = -1 } @@ -562,11 +562,11 @@ func (r *Rasterizer) SetBounds(width, height int) { r.width = width r.splitScale2 = ss2 r.splitScale3 = ss3 - r.cell = r.cellBuf[0:0] + r.cell = r.cellBuf[:0] if height > len(r.cellIndexBuf) { r.cellIndex = make([]int, height) } else { - r.cellIndex = r.cellIndexBuf[0:height] + r.cellIndex = r.cellIndexBuf[:height] } r.Clear() } diff --git a/freetype/raster/stroke.go b/freetype/raster/stroke.go index dbd3da2..d49b1ce 100644 --- a/freetype/raster/stroke.go +++ b/freetype/raster/stroke.go @@ -401,7 +401,7 @@ func (k *stroker) stroke(q Path) { // The left-hand-side path is added immediately to k.p; the right-hand-side // path is accumulated in k.r. Once we've finished adding the LHS to k.p, // we add the RHS in reverse order. - k.r = Path(make([]Fix32, 0, len(q))) + k.r = make(Path, 0, len(q)) k.a = Point{q[1], q[2]} for i := 4; i < len(q); { switch q[i] {