[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