From b630e3a4a4605af2ea1d798f80a92f2e0e801cb1 Mon Sep 17 00:00:00 2001 From: Mike Wey Date: Tue, 8 Sep 2015 19:43:45 +0200 Subject: Don't use rndtol on integral types, Fix #16 --- dmagick/Color.d | 18 +++++++++++++++--- 1 file 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 -- cgit v1.2.3