diff options
| author | Mike Wey | 2011-09-19 23:01:35 +0200 |
|---|---|---|
| committer | Mike Wey | 2011-09-19 23:01:35 +0200 |
| commit | 6af7568675e3fce883a1d08878dfef7f4e412053 (patch) | |
| tree | 78fe6bc0c1dec6d5c5958e94a61a0352f3bc930f | |
| parent | 6e186769980be473eb17e8f3abc28a56432041cd (diff) | |
Reuse the Color in Pixels.opApply, Creating a new color every time considerably slows down the loop.
| -rw-r--r-- | dmagick/Color.d | 10 | ||||
| -rw-r--r-- | dmagick/ImageView.d | 5 |
2 files changed, 13 insertions, 2 deletions
diff --git a/dmagick/Color.d b/dmagick/Color.d index 94b6906..7223d81 100644 --- a/dmagick/Color.d +++ b/dmagick/Color.d @@ -79,11 +79,19 @@ class Color this.packet = packet; } - PixelPacket pixelPacket() + package PixelPacket pixelPacket() const { return *packet; } + package void pixelPacket(PixelPacket packet) + { + this.packet.red = packet.red; + this.packet.green = packet.green; + this.packet.blue = packet.blue; + this.packet.opacity = packet.opacity; + } + override bool opEquals(Object obj) { Color color = cast(Color)obj; diff --git a/dmagick/ImageView.d b/dmagick/ImageView.d index fbce73c..709c81f 100644 --- a/dmagick/ImageView.d +++ b/dmagick/ImageView.d @@ -362,9 +362,12 @@ struct Pixels */ int opApply(int delegate(ref Color) dg) { + Color color = new Color(); + foreach ( ref PixelPacket pixel; pixels ) { - Color color = new Color(pixel); + color.pixelPacket = pixel; + int result = dg(color); pixel = color.pixelPacket; |
