diff options
Diffstat (limited to 'dmagick/Color.d')
| -rw-r--r-- | dmagick/Color.d | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/dmagick/Color.d b/dmagick/Color.d index 0813dc2..11841c5 100644 --- a/dmagick/Color.d +++ b/dmagick/Color.d @@ -7,6 +7,7 @@ module dmagick.Color; import std.conv; +import std.math; import std.string; import dmagick.Exception; @@ -112,13 +113,15 @@ class Color string frm = "%02X"; else static if ( MagickQuantumDepth == 16 ) string frm = "%04X"; - else + else static if ( MagickQuantumDepth == 32 ) string frm = "%08X"; + else + string frm = "%016X"; if ( packet.opacity == OpaqueOpacity ) - return format("#"~frm~frm~frm, packet.red, packet.green, packet.blue); + return format("#"~frm~frm~frm, rndtol(packet.red), rndtol(packet.green), rndtol(packet.blue)); else - return format("#"~frm~frm~frm~frm, packet.red, packet.green, packet.blue, packet.opacity); + return format("#"~frm~frm~frm~frm, rndtol(packet.red), rndtol(packet.green), rndtol(packet.blue), rndtol(QuantumRange-packet.opacity)); } unittest @@ -129,8 +132,10 @@ class Color assert(color.toString() == "#0000FF"); else static if ( MagickQuantumDepth == 16 ) assert(color.toString() == "#00000000FFFF"); - else + else static if ( MagickQuantumDepth == 16 ) assert(color.toString() == "#0000000000000000FFFFFFFF"); + else + assert(color.toString() == "#00000000000000000000000000000000FFFFFFFFFFFFFFFF"); } /* |
