diff options
| author | Mike Wey | 2015-09-08 19:43:45 +0200 |
|---|---|---|
| committer | Mike Wey | 2015-09-08 19:43:45 +0200 |
| commit | b630e3a4a4605af2ea1d798f80a92f2e0e801cb1 (patch) | |
| tree | 78ce8128e84ca1c600180964117c6e3bfc2f0f48 /dmagick | |
| parent | 6cf954449f0b09db069c64d13d27ee115a523336 (diff) | |
Don't use rndtol on integral types, Fix #16
Diffstat (limited to 'dmagick')
| -rw-r--r-- | dmagick/Color.d | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/dmagick/Color.d b/dmagick/Color.d index 0ddd59a..bbc7734 100644 --- a/dmagick/Color.d +++ b/dmagick/Color.d @@ -9,6 +9,7 @@ module dmagick.Color; import std.conv; import std.math; import std.string; +import std.traits; import dmagick.Exception; import dmagick.Utils; @@ -118,10 +119,21 @@ class Color else string frm = "%016X"; - if ( packet.opacity == OpaqueOpacity ) - return format("#"~frm~frm~frm, rndtol(packet.red), rndtol(packet.green), rndtol(packet.blue)); + + static if ( isFloatingPoint!Quantum ) + { + if ( packet.opacity == OpaqueOpacity ) + return format("#"~frm~frm~frm, rndtol(packet.red), rndtol(packet.green), rndtol(packet.blue)); + else + return format("#"~frm~frm~frm~frm, rndtol(packet.red), rndtol(packet.green), rndtol(packet.blue), rndtol(QuantumRange-packet.opacity)); + } else - return format("#"~frm~frm~frm~frm, rndtol(packet.red), rndtol(packet.green), rndtol(packet.blue), rndtol(QuantumRange-packet.opacity)); + { + if ( packet.opacity == OpaqueOpacity ) + return format("#"~frm~frm~frm, packet.red, packet.green, packet.blue); + else + return format("#"~frm~frm~frm~frm, packet.red, packet.green, packet.blue, QuantumRange-packet.opacity); + } } unittest |
