import benchy, cairo, chroma, math, pixie

block:
  let
    surface = imageSurfaceCreate(FORMAT_ARGB32, 1920, 1080)
    ctx = surface.create()

  ctx.setSourceRgba(0, 0, 1, 1)

  timeIt "cairo1":
    ctx.newPath()
    ctx.moveTo(0, 0)
    ctx.lineTo(1920, 0)
    ctx.lineTo(1920, 1080)
    ctx.lineTo(0, 1080)
    ctx.closePath()
    ctx.fill()
    surface.flush()

  # discard surface.writeToPng("cairo1.png")

  let a = newImage(1920, 1080)
  a.fill(rgba(255, 255, 255, 255))

  timeIt "pixie1":
    let p = newPath()
    p.moveTo(0, 0)
    p.lineTo(1920, 0)
    p.lineTo(1920, 1080)
    p.lineTo(0, 1080)
    p.closePath()
    a.fillPath(p, rgba(0, 0, 255, 255))

  # a.writeFile("pixie1.png")

block:
  let
    surface = imageSurfaceCreate(FORMAT_ARGB32, 1920, 1080)
    ctx = surface.create()

  ctx.setSourceRgba(0, 0, 1, 1)

  timeIt "cairo2":
    ctx.newPath()
    ctx.moveTo(500, 240)
    ctx.lineTo(1500, 240)
    ctx.lineTo(1920, 600)
    ctx.lineTo(0, 600)
    ctx.closePath()
    ctx.fill()
  surface.flush()

  # discard surface.writeToPng("cairo2.png")

  let a = newImage(1920, 1080)
  a.fill(rgba(255, 255, 255, 255))

  timeIt "pixie2":
    let p = newPath()
    p.moveTo(500, 240)
    p.lineTo(1500, 240)
    p.lineTo(1920, 600)
    p.lineTo(0, 600)
    p.closePath()
    a.fillPath(p, rgba(0, 0, 255, 255))

  # a.writeFile("pixie2.png")

# block:
#   let
#     a = imageSurfaceCreate(FORMAT_ARGB32, 1000, 1000)
#     b = imageSurfaceCreate(FORMAT_ARGB32, 500, 500)
#     ac = a.create()
#     bc = b.create()

#   ac.setSourceRgba(1, 0, 0, 1)
#   ac.newPath()
#   ac.rectangle(0, 0, 1000, 1000)
#   ac.fill()

#   bc.setSourceRgba(0, 1, 0, 1)
#   bc.newPath()
#   bc.rectangle(0, 0, 500, 500)
#   bc.fill()

#   let pattern = patternCreateForSurface(b)

#   timeIt "a":
#     ac.setSource(pattern)
#     ac.save()
#     ac.translate(25.2, 25.2)
#     ac.rectangle(0, 0, 500, 500)
#     ac.fill()
#     ac.restore()

#   discard a.writeToPng("a.png")