Add drawImage to context.

This commit is contained in:
treeform 2021-06-25 20:35:40 -07:00
parent 4e5b2cd91e
commit ecb3673372
2 changed files with 53 additions and 0 deletions

View file

@ -589,3 +589,26 @@ proc strokePolygon*(ctx: Context, pos: Vec2, size: float32, sides: int) =
var path: Path
path.polygon(pos, size, sides)
ctx.stroke(path)
# proc drawImage*(ctx: Context, image: Image, dx, dy, dWidth, dHeight: float32) =
# ## Draws an image onto the canvas.
# var path: Path
# var imageMat = ctx.mat * translate(vec2(dx, dy)) * scale(vec2(
# image.width.float32 / dWidth,
# image.height.float32 / dHeight
# ))
# ctx.fillStyle = Paint(kind: pkImage, image: image, imageMat: imageMat)
# path.rect(rect(dx, dy, image.width.float32, image.height.float32))
# ctx.fill(path)
proc drawImage*(ctx: Context, image: Image, dx, dy: float32) =
## Draws an image onto the canvas.
var path: Path
var imageMat = ctx.mat * translate(vec2(dx, dy))
ctx.fillStyle = Paint(kind: pkImage, image: image, imageMat: imageMat)
path.rect(rect(dx, dy, image.width.float32, image.height.float32))
ctx.fill(path)
proc drawImage*(ctx: Context, image: Image, pos: Vec2) =
## Draws an image onto the canvas.
ctx.drawImage(image, pos.x, pos.y)

View file

@ -548,3 +548,33 @@ block:
ctx.fillRect(50, 50, 100, 100)
image.writeFile("tests/images/context/globalAlpha_1.png")
block:
let
image = newImage(100, 100)
ctx = newContext(image)
var testImage = readImage("tests/images/pip1.png")
ctx.drawImage(testImage, 0, 0)
ctx.drawImage(testImage, 30, 30)
image.writeFile("tests/images/context/draw_image.png")
block:
let
image = newImage(100, 100)
ctx = newContext(image)
var testImage = readImage("tests/images/pip1.png")
ctx.translate(30, 30)
ctx.drawImage(testImage, -30, -30)
ctx.drawImage(testImage, 0, 0)
image.writeFile("tests/images/context/draw_image_translated.png")
block:
let
image = newImage(100, 100)
ctx = newContext(image)
var testImage = readImage("tests/images/pip1.png")
ctx.scale(2, 2)
ctx.drawImage(testImage, 0, 0)
ctx.scale(0.25, 0.25)
ctx.drawImage(testImage, 0, 0)
image.writeFile("tests/images/context/draw_image_scaled.png")