shadow global alpha fix

This commit is contained in:
Thomas Friedel 2019-04-24 12:34:36 +02:00
parent 312633710b
commit 0476a8a85f
4 changed files with 10 additions and 7 deletions

View file

@ -169,7 +169,7 @@ func (cv *Canvas) DrawImage(image interface{}, coords ...float64) {
data[2] = cv.tf(vec{dx + dw, dy + dh})
data[3] = cv.tf(vec{dx + dw, dy})
cv.drawShadow2(data[:], nil)
cv.drawShadow(data[:], nil)
cv.b.DrawImage(img.img, sx, sy, sw, sh, data, cv.state.globalAlpha)
}

View file

@ -95,7 +95,7 @@ func (cv *Canvas) strokePath(path *Path2D, inv mat, doInv bool) {
var triBuf [500][2]float64
tris := cv.strokeTris(path, inv, doInv, triBuf[:0])
cv.drawShadow2(tris, nil)
cv.drawShadow(tris, nil)
stl := cv.backendFillStyle(&cv.state.stroke, 1)
cv.b.Fill(&stl, tris)
@ -370,7 +370,7 @@ func (cv *Canvas) fillPath(path *Path2D, tf mat) {
return
}
cv.drawShadow2(tris, nil)
cv.drawShadow(tris, nil)
stl := cv.backendFillStyle(&cv.state.fill, 1)
cv.b.Fill(&stl, tris)
@ -463,7 +463,7 @@ func (cv *Canvas) FillRect(x, y, w, h float64) {
data := [4][2]float64{{p0[0], p0[1]}, {p1[0], p1[1]}, {p2[0], p2[1]}, {p3[0], p3[1]}}
cv.drawShadow2(data[:], nil)
cv.drawShadow(data[:], nil)
stl := cv.backendFillStyle(&cv.state.fill, 1)
cv.b.Fill(&stl, data[:])

View file

@ -2,11 +2,12 @@ package canvas
import (
"image"
"math"
"github.com/tfriedel6/canvas/backend/backendbase"
)
func (cv *Canvas) drawShadow2(pts [][2]float64, mask *image.Alpha) {
func (cv *Canvas) drawShadow(pts [][2]float64, mask *image.Alpha) {
if cv.state.shadowColor.A == 0 {
return
}
@ -26,7 +27,9 @@ func (cv *Canvas) drawShadow2(pts [][2]float64, mask *image.Alpha) {
})
}
style := backendbase.FillStyle{Color: cv.state.shadowColor, Blur: cv.state.shadowBlur}
color := cv.state.shadowColor
color.A = uint8(math.Round(((float64(color.A) / 255.0) * cv.state.globalAlpha) * 255.0))
style := backendbase.FillStyle{Color: color, Blur: cv.state.shadowBlur}
if mask != nil {
if len(cv.shadowBuf) != 4 {
panic("invalid number of points to fill with mask, must be 4")

View file

@ -215,7 +215,7 @@ func (cv *Canvas) FillText(str string, x, y float64) {
mask := textImage.SubImage(image.Rect(0, 0, strWidth, strHeight)).(*image.Alpha)
cv.drawShadow2(pts[:], mask)
cv.drawShadow(pts[:], mask)
stl := cv.backendFillStyle(&cv.state.fill, 1)
cv.b.FillImageMask(&stl, mask, pts[:])