import pixie, chroma, vmath, benchy

block:

  var a = newImage(100, 100)
  var b = newImage(50, 50)

  timeIt "spread":
    a.fill(rgba(0, 0, 0, 0))
    b.fill(rgba(0, 0, 0, 255))
    a.draw(b, vec2(25, 25))

    a.spread(spread = 10)

  b = newImage(50, 50)
  b.fill(rgba(255, 255, 255, 255))
  a.draw(b, vec2(25, 25))

  # a.writeFile("tests/images/spread1.png")

block:
  var a = newImage(100, 100)
  var b = newImage(50, 50)

  timeIt "blur":
    a.fill(rgba(0, 0, 0, 0))
    b.fill(rgba(255, 255, 255, 255))
    a.draw(b, vec2(25, 25))

    a.blur(radius = 10)

  b = newImage(50, 50)
  b.fill(rgba(255, 255, 255, 255))
  a.draw(b, vec2(25, 25))

  # a.writeFile("tests/images/blur1.png")

block:
  var shadow: Image
  var a = newImage(100, 100)
  var b = newImage(50, 50)

  timeIt "shadow":
    a.fill(rgba(0, 0, 0, 0))
    b.fill(rgba(0, 0, 0, 255))
    a.draw(b, vec2(25, 25))

    shadow = a.shadow(
      offset = vec2(0, 0),
      spread = 10,
      blur = 10,
      color = rgba(0, 0, 0, 255)
    )

  b = newImage(50, 50)
  b.fill(rgba(255, 255, 255, 255))
  shadow.draw(b, vec2(25, 25))
  keep(shadow)

  # shadow.writeFile("tests/images/shadow1.png")


# import print
# timeIt "Shadow Stops":
#   var tmp = 0
#   var shadow: Image
#   for i in 0 ..< 1:
#     var a = newImage(10, 200)
#     var b = newImage(50, 50)
#     b.fill(rgba(0, 0, 0, 255))
#     a.draw(b, vec2(-25, -25))

#     for spread in 0 .. 0:
#       let spread = spread.float
#       for blur in 0 .. 10:
#         let blur = blur.float
#         print spread, blur

#         shadow = a.shadow(
#           offset = vec2(0, 0), spread = spread, blur = blur, color = rgba(0, 0, 0, 255))

#         for y in 25 ..< (25 + spread + blur).int:
#           echo y - 25, ":", shadow[5, y].a

#         b = newImage(50, 50)
#         b.fill(rgba(255, 255, 255, 255))
#         shadow.draw(b, vec2(-25, -25))

#     tmp += shadow.width * shadow.height
#   shadow.writeFile("tests/images/shadowStops.png")
#   echo tmp