shadow global alpha fix
This commit is contained in:
parent
312633710b
commit
0476a8a85f
4 changed files with 10 additions and 7 deletions
|
@ -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)
|
||||
}
|
||||
|
|
6
paths.go
6
paths.go
|
@ -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[:])
|
||||
|
|
|
@ -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")
|
||||
|
|
2
text.go
2
text.go
|
@ -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[:])
|
||||
|
|
Loading…
Reference in a new issue