Add drawImage to context.
This commit is contained in:
parent
4e5b2cd91e
commit
ecb3673372
2 changed files with 53 additions and 0 deletions
|
@ -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)
|
||||
|
|
|
@ -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")
|
||||
|
|
Loading…
Reference in a new issue