save work if no shadow offset
This commit is contained in:
parent
8ba0ce3fb9
commit
a8518c8218
2 changed files with 27 additions and 4 deletions
|
@ -976,12 +976,18 @@ proc shadow*(
|
|||
image: Image, offset: Vec2, spread, blur: float32, color: SomeColor
|
||||
): Image {.raises: [PixieError].} =
|
||||
## Create a shadow of the image with the offset, spread and blur.
|
||||
let
|
||||
mask = image.newMask()
|
||||
let mask = image.newMask()
|
||||
|
||||
var shifted: Mask
|
||||
if offset == vec2(0, 0):
|
||||
shifted = mask
|
||||
else:
|
||||
shifted = newMask(mask.width, mask.height)
|
||||
shifted.draw(mask, translate(offset), bmOverwrite)
|
||||
shifted.draw(mask, translate(offset), bmOverwrite)
|
||||
|
||||
shifted.spread(spread)
|
||||
shifted.blur(blur)
|
||||
|
||||
result = newImage(shifted.width, shifted.height)
|
||||
result.fill(color)
|
||||
result.draw(shifted, blendMode = bmMask)
|
||||
|
|
|
@ -115,7 +115,7 @@ block:
|
|||
a = newImage(100, 100)
|
||||
b = newImage(50, 50)
|
||||
|
||||
timeIt "shadow":
|
||||
timeIt "shadow (no offset)":
|
||||
b.fill(rgba(0, 0, 0, 255))
|
||||
a.draw(b, translate(vec2(25, 25)))
|
||||
|
||||
|
@ -126,3 +126,20 @@ block:
|
|||
color = rgba(0, 0, 0, 255)
|
||||
)
|
||||
keep(shadow)
|
||||
|
||||
block:
|
||||
let
|
||||
a = newImage(100, 100)
|
||||
b = newImage(50, 50)
|
||||
|
||||
timeIt "shadow (with offset)":
|
||||
b.fill(rgba(0, 0, 0, 255))
|
||||
a.draw(b, translate(vec2(25, 25)))
|
||||
|
||||
let shadow = a.shadow(
|
||||
offset = vec2(10, 10),
|
||||
spread = 10,
|
||||
blur = 10,
|
||||
color = rgba(0, 0, 0, 255)
|
||||
)
|
||||
keep(shadow)
|
||||
|
|
Loading…
Reference in a new issue