benchmark cairo draw
This commit is contained in:
parent
ef8f0fd4a9
commit
ecdf9f2f7e
2 changed files with 131 additions and 1 deletions
130
experiments/benchmark_cairo_draw.nim
Normal file
130
experiments/benchmark_cairo_draw.nim
Normal file
|
@ -0,0 +1,130 @@
|
|||
import benchy, cairo, pixie
|
||||
|
||||
block:
|
||||
let
|
||||
backdrop = imageSurfaceCreateFromPng("tests/fileformats/svg/masters/dragon2.png")
|
||||
source = imageSurfaceCreateFromPng("tests/fileformats/svg/masters/Ghostscript_Tiger.png")
|
||||
tmp = imageSurfaceCreate(FORMAT_ARGB32, 1568, 940)
|
||||
ctx = tmp.create()
|
||||
|
||||
timeIt "cairo draw basic":
|
||||
ctx.setSource(backdrop, 0, 0)
|
||||
ctx.paint()
|
||||
ctx.setSource(source, 0, 0)
|
||||
ctx.paint()
|
||||
tmp.flush()
|
||||
|
||||
# echo tmp.writeToPng("tmp.png")
|
||||
|
||||
block:
|
||||
let
|
||||
backdrop = readImage("tests/fileformats/svg/masters/dragon2.png")
|
||||
source = readImage("tests/fileformats/svg/masters/Ghostscript_Tiger.png")
|
||||
tmp = newImage(1568, 940)
|
||||
|
||||
timeIt "isOneColor":
|
||||
doAssert not backdrop.isOneColor()
|
||||
|
||||
timeIt "pixie draw basic":
|
||||
tmp.draw(backdrop)
|
||||
tmp.draw(source)
|
||||
|
||||
# tmp.writeFile("tmp2.png")
|
||||
|
||||
block:
|
||||
let
|
||||
backdrop = imageSurfaceCreateFromPng("tests/fileformats/svg/masters/dragon2.png")
|
||||
source = imageSurfaceCreateFromPng("tests/fileformats/svg/masters/Ghostscript_Tiger.png")
|
||||
tmp = imageSurfaceCreate(FORMAT_ARGB32, 1568, 940)
|
||||
ctx = tmp.create()
|
||||
|
||||
timeIt "cairo draw smooth":
|
||||
var
|
||||
mat = mat3()
|
||||
matrix = cairo.Matrix(
|
||||
xx: mat[0, 0],
|
||||
yx: mat[0, 1],
|
||||
xy: mat[1, 0],
|
||||
yy: mat[1, 1],
|
||||
x0: mat[2, 0],
|
||||
y0: mat[2, 1],
|
||||
)
|
||||
ctx.setMatrix(matrix.unsafeAddr)
|
||||
ctx.setSource(backdrop, 0, 0)
|
||||
ctx.paint()
|
||||
mat = rotate(15.toRadians)
|
||||
matrix = cairo.Matrix(
|
||||
xx: mat[0, 0],
|
||||
yx: mat[0, 1],
|
||||
xy: mat[1, 0],
|
||||
yy: mat[1, 1],
|
||||
x0: mat[2, 0],
|
||||
y0: mat[2, 1],
|
||||
)
|
||||
ctx.setMatrix(matrix.unsafeAddr)
|
||||
ctx.setSource(source, 0, 0)
|
||||
ctx.paint()
|
||||
tmp.flush()
|
||||
|
||||
# echo tmp.writeToPng("tmp.png")
|
||||
|
||||
block:
|
||||
let
|
||||
backdrop = readImage("tests/fileformats/svg/masters/dragon2.png")
|
||||
source = readImage("tests/fileformats/svg/masters/Ghostscript_Tiger.png")
|
||||
tmp = newImage(1568, 940)
|
||||
|
||||
timeIt "pixie draw smooth":
|
||||
tmp.draw(backdrop)
|
||||
tmp.draw(source, translate(vec2(0.5, 0.5)))
|
||||
|
||||
# tmp.writeFile("tmp2.png")
|
||||
|
||||
block:
|
||||
let
|
||||
backdrop = imageSurfaceCreateFromPng("tests/fileformats/svg/masters/dragon2.png")
|
||||
source = imageSurfaceCreateFromPng("tests/fileformats/svg/masters/Ghostscript_Tiger.png")
|
||||
tmp = imageSurfaceCreate(FORMAT_ARGB32, 1568, 940)
|
||||
ctx = tmp.create()
|
||||
|
||||
timeIt "cairo draw smooth rotated":
|
||||
var
|
||||
mat = mat3()
|
||||
matrix = cairo.Matrix(
|
||||
xx: mat[0, 0],
|
||||
yx: mat[0, 1],
|
||||
xy: mat[1, 0],
|
||||
yy: mat[1, 1],
|
||||
x0: mat[2, 0],
|
||||
y0: mat[2, 1],
|
||||
)
|
||||
ctx.setMatrix(matrix.unsafeAddr)
|
||||
ctx.setSource(backdrop, 0, 0)
|
||||
ctx.paint()
|
||||
mat = rotate(15.toRadians)
|
||||
matrix = cairo.Matrix(
|
||||
xx: mat[0, 0],
|
||||
yx: mat[0, 1],
|
||||
xy: mat[1, 0],
|
||||
yy: mat[1, 1],
|
||||
x0: mat[2, 0],
|
||||
y0: mat[2, 1],
|
||||
)
|
||||
ctx.setMatrix(matrix.unsafeAddr)
|
||||
ctx.setSource(source, 0, 0)
|
||||
ctx.paint()
|
||||
tmp.flush()
|
||||
|
||||
# echo tmp.writeToPng("tmp.png")
|
||||
|
||||
block:
|
||||
let
|
||||
backdrop = readImage("tests/fileformats/svg/masters/dragon2.png")
|
||||
source = readImage("tests/fileformats/svg/masters/Ghostscript_Tiger.png")
|
||||
tmp = newImage(1568, 940)
|
||||
|
||||
timeIt "pixie draw smooth rotated":
|
||||
tmp.draw(backdrop)
|
||||
tmp.draw(source, rotate(15.toRadians))
|
||||
|
||||
# tmp.writeFile("tmp2.png")
|
|
@ -580,7 +580,7 @@ proc decodeSvg*(data: string, width = 0, height = 0): Image =
|
|||
let
|
||||
bgra = pixels[result.dataIndex(x, y)]
|
||||
rgba = rgba(bgra[2], bgra[1], bgra[0], bgra[3])
|
||||
result.setRgbaUnsafe(x, y, rgba.rgbx())
|
||||
result.unsafe[x, y] = rgba.rgbx()
|
||||
except PixieError as e:
|
||||
raise e
|
||||
except:
|
||||
|
|
Loading…
Reference in a new issue