[gs-cvs] rev 7124 - trunk/gs/lib

lpd at ghostscript.com lpd at ghostscript.com
Wed Oct 25 21:39:35 PDT 2006


Author: lpd
Date: 2006-10-25 21:39:35 -0700 (Wed, 25 Oct 2006)
New Revision: 7124

Modified:
   trunk/gs/lib/gs_cspace.ps
Log:
Replace inexact decimal literals in the HSB<->RGB algorithms with more exact
computed values, so that (e.g.) 0.2 1 1 sethsbcolor currenthsbcolor returns
0.2 1 1.  Fixes problems in PS3 CET 09-41-4.


Modified: trunk/gs/lib/gs_cspace.ps
===================================================================
--- trunk/gs/lib/gs_cspace.ps	2006-10-26 01:03:53 UTC (rev 7123)
+++ trunk/gs/lib/gs_cspace.ps	2006-10-26 04:39:35 UTC (rev 7124)
@@ -882,6 +882,12 @@
 %        break;
 %    }
 %
+
+
+% Define 1/3 and 2/3 accurately (don't use literals like 0.333333).
+/.f1_3 1.0 3 div def
+/.f2_3 2.0 3 div def
+
 /.rgb_2_hsb
   {
     % find the largest and smallest components
@@ -896,10 +902,10 @@
           {
             6.0 mul 5 1 roll
             2 copy eq       % blue == brightness
-              { pop pop sub exch div .666667 add }
+              { pop pop sub exch div //.f2_3 div add }
               {
                 2 index eq  % green == brightness
-                  { exch pop exch sub exch div .3333333 add }
+                  { exch pop exch sub exch div //.f1_3 add }
                   {
                     % red == brightness
                     sub exch pop exch div
@@ -932,16 +938,16 @@
         { mul 1 index add exch }
 
         % 1 ==> g >= r >= b
-        { 0.333333 exch sub mul 1 index add 3 1 roll }
+        { //.f1_3 exch sub mul 1 index add 3 1 roll }
 
         % 2 ==> g >= b >= r
-        { 0.333333 sub mul 1 index add 3 1 roll exch 3 -1 roll }
+        { //.f1_3 mul 1 index add 3 1 roll exch 3 -1 roll }
 
         % 3 ==> b >= g >= r
-        { 0.666667 exch sub mul 1 index add 3 -1 roll }
+        { //.f2_3 exch sub mul 1 index add 3 -1 roll }
 
         % 4 ==> b >= r >= g
-        { 0.666667 sub mul 1 index add 3 1 roll exch }
+        { //.f2_3 sub mul 1 index add 3 1 roll exch }
 
         % 5 ==> r >= b >= g
         { 1.0 exch sub mul 1 index add }



More information about the gs-cvs mailing list