moved FillRect into paths.go

This commit is contained in:
Thomas Friedel 2018-04-04 16:15:54 +02:00
parent ef652e17ba
commit f0d9b83afb
2 changed files with 20 additions and 21 deletions

View file

@ -2,7 +2,6 @@ package canvas
import ( import (
"fmt" "fmt"
"unsafe"
"github.com/golang/freetype/truetype" "github.com/golang/freetype/truetype"
) )
@ -537,23 +536,3 @@ func (cv *Canvas) Transform(a, b, c, d, e, f float64) {
func (cv *Canvas) SetTransform(a, b, c, d, e, f float64) { func (cv *Canvas) SetTransform(a, b, c, d, e, f float64) {
cv.state.transform = mat{a, b, 0, c, d, 0, e, f, 1} cv.state.transform = mat{a, b, 0, c, d, 0, e, f, 1}
} }
// FillRect fills a rectangle with the active fill style
func (cv *Canvas) FillRect(x, y, w, h float64) {
cv.activate()
p0 := cv.tf(vec{x, y})
p1 := cv.tf(vec{x, y + h})
p2 := cv.tf(vec{x + w, y + h})
p3 := cv.tf(vec{x + w, y})
gli.BindBuffer(gl_ARRAY_BUFFER, buf)
data := [8]float32{float32(p0[0]), float32(p0[1]), float32(p1[0]), float32(p1[1]), float32(p2[0]), float32(p2[1]), float32(p3[0]), float32(p3[1])}
gli.BufferData(gl_ARRAY_BUFFER, len(data)*4, unsafe.Pointer(&data[0]), gl_STREAM_DRAW)
vertex := cv.useShader(&cv.state.fill)
gli.VertexAttribPointer(vertex, 2, gl_FLOAT, false, 0, nil)
gli.EnableVertexAttribArray(vertex)
gli.DrawArrays(gl_TRIANGLE_FAN, 0, 4)
gli.DisableVertexAttribArray(vertex)
}

View file

@ -559,3 +559,23 @@ func (cv *Canvas) StrokeRect(x, y, w, h float64) {
path[4] = pathPoint{pos: v0, tf: v0t} path[4] = pathPoint{pos: v0, tf: v0t}
cv.stroke(path[:]) cv.stroke(path[:])
} }
// FillRect fills a rectangle with the active fill style
func (cv *Canvas) FillRect(x, y, w, h float64) {
cv.activate()
p0 := cv.tf(vec{x, y})
p1 := cv.tf(vec{x, y + h})
p2 := cv.tf(vec{x + w, y + h})
p3 := cv.tf(vec{x + w, y})
gli.BindBuffer(gl_ARRAY_BUFFER, buf)
data := [8]float32{float32(p0[0]), float32(p0[1]), float32(p1[0]), float32(p1[1]), float32(p2[0]), float32(p2[1]), float32(p3[0]), float32(p3[1])}
gli.BufferData(gl_ARRAY_BUFFER, len(data)*4, unsafe.Pointer(&data[0]), gl_STREAM_DRAW)
vertex := cv.useShader(&cv.state.fill)
gli.VertexAttribPointer(vertex, 2, gl_FLOAT, false, 0, nil)
gli.EnableVertexAttribArray(vertex)
gli.DrawArrays(gl_TRIANGLE_FAN, 0, 4)
gli.DisableVertexAttribArray(vertex)
}