faster subImage, a bit more
This commit is contained in:
parent
45da7c4db9
commit
007b495538
3 changed files with 20 additions and 93 deletions
|
@ -127,8 +127,11 @@ proc subImage*(image: Image, x, y, w, h: int): Image =
|
||||||
|
|
||||||
result = newImage(w, h)
|
result = newImage(w, h)
|
||||||
for y2 in 0 ..< h:
|
for y2 in 0 ..< h:
|
||||||
for x2 in 0 ..< w:
|
copyMem(
|
||||||
result.setRgbaUnsafe(x2, y2, image[x2 + x, y2 + y])
|
result.data[result.dataIndex(0, y2)].addr,
|
||||||
|
image.data[image.dataIndex(x, y + y2)].addr,
|
||||||
|
w * 4
|
||||||
|
)
|
||||||
|
|
||||||
proc minifyBy2*(image: Image): Image =
|
proc minifyBy2*(image: Image): Image =
|
||||||
## Scales the image down by an integer scale.
|
## Scales the image down by an integer scale.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import chroma, pixie, benchy, system/memory
|
import chroma, pixie, benchy
|
||||||
|
|
||||||
let a = newImage(2560, 1440)
|
let a = newImage(2560, 1440)
|
||||||
|
|
||||||
|
@ -12,6 +12,9 @@ timeIt "fill_rgba":
|
||||||
doAssert a[0, 0] == rgba(63, 127, 191, 255)
|
doAssert a[0, 0] == rgba(63, 127, 191, 255)
|
||||||
keep(a)
|
keep(a)
|
||||||
|
|
||||||
|
timeIt "subImage":
|
||||||
|
keep a.subImage(0, 0, 256, 256)
|
||||||
|
|
||||||
timeIt "invert":
|
timeIt "invert":
|
||||||
a.invert()
|
a.invert()
|
||||||
keep(a)
|
keep(a)
|
||||||
|
|
|
@ -1,112 +1,33 @@
|
||||||
import pixie, chroma, strutils, os, vmath
|
import pixie, chroma, vmath
|
||||||
|
|
||||||
proc writeAndCheck(image: Image, fileName: string) =
|
|
||||||
image.writeFile(fileName)
|
|
||||||
let masterFileName = fileName.replace("tests/images/", "tests/images/masters/")
|
|
||||||
if not fileExists(masterFileName):
|
|
||||||
echo "Master file: " & masterFileName & " not found!"
|
|
||||||
quit(-1)
|
|
||||||
var master = readImage(fileName)
|
|
||||||
assert image.width == master.width
|
|
||||||
assert image.height == master.height
|
|
||||||
assert image.data == master.data
|
|
||||||
|
|
||||||
# block:
|
|
||||||
# var a = newImage(100, 100)
|
|
||||||
# a.fill(rgba(0, 0, 0, 0))
|
|
||||||
# var b = newImage(50, 50)
|
|
||||||
# b.fill(rgba(255, 92, 0, 255))
|
|
||||||
# var c = a.drawBlendSmooth(
|
|
||||||
# b,
|
|
||||||
# translate(vec2(50, 50)) * rotationMat3(0.2789281382) * translate(vec2(-25, -25)),
|
|
||||||
# bmNormal
|
|
||||||
# )
|
|
||||||
# c.writeAndCheck("tests/images/centerRotation.png")
|
|
||||||
|
|
||||||
# block:
|
|
||||||
# var a = newImage(100, 100)
|
|
||||||
# a.fill(rgba(255, 255, 255, 255))
|
|
||||||
# var b = newImage(50, 50)
|
|
||||||
# b.fill(rgba(255, 92, 0, 255))
|
|
||||||
# var c = a.drawBlendSmooth(
|
|
||||||
# b,
|
|
||||||
# translate(vec2(50, 50)) * rotationMat3(0.2789281382) * translate(vec2(-25, -25)),
|
|
||||||
# bmNormal
|
|
||||||
# )
|
|
||||||
# c.writeAndCheck("tests/images/centerRotationWhite.png")
|
|
||||||
|
|
||||||
|
|
||||||
# block:
|
|
||||||
# var a = newImage(100, 100)
|
|
||||||
# a.fill(rgba(0, 0, 0, 0))
|
|
||||||
# var b = newImage(50, 50)
|
|
||||||
# b.fill(rgba(255, 92, 0, 255))
|
|
||||||
# var c = a.drawBlendSmooth(
|
|
||||||
# b,
|
|
||||||
# translate(vec2(50, 50)) * rotationMat3(0.2789281382) * translate(vec2(-25, -25)),
|
|
||||||
# bmNormal
|
|
||||||
# )
|
|
||||||
# c.writeAndCheck("tests/images/transCompose.c.png")
|
|
||||||
# var d = newImage(100, 100)
|
|
||||||
# d = d.fill(rgba(255, 255, 255, 255))
|
|
||||||
# var e = d.draw(c)
|
|
||||||
# e.writeAndCheck("tests/images/transCompose.png")
|
|
||||||
|
|
||||||
block:
|
block:
|
||||||
var image = newImage(10, 10)
|
let image = newImage(10, 10)
|
||||||
image[0, 0] = rgba(255, 255, 255, 255)
|
image[0, 0] = rgba(255, 255, 255, 255)
|
||||||
doAssert image[0, 0] == rgba(255, 255, 255, 255)
|
doAssert image[0, 0] == rgba(255, 255, 255, 255)
|
||||||
|
|
||||||
block:
|
block:
|
||||||
var image = newImage(10, 10)
|
let image = newImage(10, 10)
|
||||||
image.fill(rgba(255, 0, 0, 255))
|
image.fill(rgba(255, 0, 0, 255))
|
||||||
doAssert image[0, 0] == rgba(255, 0, 0, 255)
|
doAssert image[0, 0] == rgba(255, 0, 0, 255)
|
||||||
|
|
||||||
block:
|
block:
|
||||||
var image = newImage(10, 10)
|
let
|
||||||
|
image = newImage(256, 256)
|
||||||
|
subImage = image.subImage(0, 0, 128, 128)
|
||||||
|
doAssert subImage.width == 128 and subImage.height == 128
|
||||||
|
|
||||||
|
block:
|
||||||
|
let image = newImage(10, 10)
|
||||||
image.fill(rgba(255, 0, 0, 128))
|
image.fill(rgba(255, 0, 0, 128))
|
||||||
image.toAlphy()
|
image.toAlphy()
|
||||||
doAssert image[9, 9] == rgba(128, 0, 0, 128)
|
doAssert image[9, 9] == rgba(128, 0, 0, 128)
|
||||||
|
|
||||||
block:
|
block:
|
||||||
var image = newImage(10, 10)
|
let image = newImage(10, 10)
|
||||||
image.fill(rgba(128, 0, 0, 128))
|
image.fill(rgba(128, 0, 0, 128))
|
||||||
image.fromAlphy()
|
image.fromAlphy()
|
||||||
doAssert image[9, 9] == rgba(255, 0, 0, 128)
|
doAssert image[9, 9] == rgba(255, 0, 0, 128)
|
||||||
|
|
||||||
# block:
|
|
||||||
# var a = newImage(100, 100)
|
|
||||||
# a.fill(rgba(255, 0, 0, 255))
|
|
||||||
# var b = newImage(100, 100)
|
|
||||||
# b.fill(rgba(0, 255, 0, 255))
|
|
||||||
# var c = a.drawOverwrite(b, translate(vec2(25, 25)))
|
|
||||||
# c.writeAndCheck("tests/images/drawOverwrite.png")
|
|
||||||
|
|
||||||
# block:
|
|
||||||
# var a = newImage(100, 100)
|
|
||||||
# a.fill(rgba(255, 0, 0, 255))
|
|
||||||
# var b = newImage(100, 100)
|
|
||||||
# b.fill(rgba(0, 255, 0, 255))
|
|
||||||
# var c = a.draw(b, translate(vec2(25, 25)), bmOverwrite)
|
|
||||||
# c.writeAndCheck("tests/images/drawBlend.png")
|
|
||||||
|
|
||||||
# block:
|
|
||||||
# var a = newImage(100, 100)
|
|
||||||
# a.fill(rgba(255, 0, 0, 255))
|
|
||||||
# var b = newImage(100, 100)
|
|
||||||
# b.fill(rgba(0, 255, 0, 255))
|
|
||||||
# var c = a.draw(b, translate(vec2(25.15, 25.15)), bmOverwrite)
|
|
||||||
# c.writeAndCheck("tests/images/drawBlendSmooth.png")
|
|
||||||
|
|
||||||
# block:
|
|
||||||
# var a = newImage(100, 100)
|
|
||||||
# a.fill(rgba(255, 0, 0, 255))
|
|
||||||
# var b = newImage(100, 100)
|
|
||||||
# b.fill(rgba(0, 255, 0, 255))
|
|
||||||
|
|
||||||
# var c = a.draw(b, translate(vec2(25, 25)) * rotationMat3(PI/2))
|
|
||||||
# c.writeAndCheck("tests/images/drawOverwriteRot.png")
|
|
||||||
|
|
||||||
block:
|
block:
|
||||||
let
|
let
|
||||||
a = newImage(101, 101)
|
a = newImage(101, 101)
|
||||||
|
|
Loading…
Reference in a new issue