diff --git a/images.go b/images.go index 7dd558e..0c31e77 100644 --- a/images.go +++ b/images.go @@ -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) } diff --git a/paths.go b/paths.go index db3d588..615bcca 100644 --- a/paths.go +++ b/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[:]) diff --git a/shadows.go b/shadows.go index f67ee9a..8b153d6 100644 --- a/shadows.go +++ b/shadows.go @@ -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") diff --git a/text.go b/text.go index 26cabdd..c010423 100644 --- a/text.go +++ b/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[:])