summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'base/gscssub.h')
-rw-r--r--base/gscssub.h70
1 files changed, 70 insertions, 0 deletions
diff --git a/base/gscssub.h b/base/gscssub.h
new file mode 100644
index 00000000..fe426286
--- /dev/null
+++ b/base/gscssub.h
@@ -0,0 +1,70 @@
+/* Copyright (C) 2001-2019 Artifex Software, Inc.
+ All Rights Reserved.
+
+ This software is provided AS-IS with no warranty, either express or
+ implied.
+
+ This software is distributed under license and may not be copied,
+ modified or distributed except as expressly authorized under the terms
+ of the license contained in the file LICENSE in this distribution.
+
+ Refer to licensing information at http://www.artifex.com or contact
+ Artifex Software, Inc., 1305 Grant Avenue - Suite 200, Novato,
+ CA 94945, U.S.A., +1(415)492-9861, for further information.
+*/
+
+
+/* Client interface to color space substitution */
+
+#ifndef gscssub_INCLUDED
+# define gscssub_INCLUDED
+
+#include "gscspace.h"
+
+/*
+ * Color space substitution at the library level is similar to, but not
+ * identical to, the operation of UseCIEColor in the PostScript language.
+ * When the Boolean UseCIEColor parameter of the current device is false,
+ * everything operates as normal. When UseCIEColor is true, the following
+ * procedures may substitute another color space for the implied one:
+ *
+ * gs_setgray, gs_setrgbcolor, gs_sethsbcolor, gs_setcmykcolor
+ * gs_current_Device{Gray,RGB,CMYK}_space
+ *
+ * Unlike the PostScript facility, the substitution *is* visible to
+ * gs_currentcolorspace, and does *not* affect gs_setcolorspace, or the
+ * ColorSpace members of images or shadings. However, the following
+ * procedures recognize when substitution has occurred and return the
+ * value(s) appropriate for the pre-substitution space:
+ *
+ * gs_currentgray, gs_currentrgbcolor, gs_currenthsbcolor,
+ * gs_currentcmykcolor
+ *
+ * Thus gs_{current,set}{gray,{rgb,hsb,cmyk}color} are always mutually
+ * consistent, concealing any substitution, and gs_{current,set}{colorspace}
+ * are mutually consistent, reflecting any substitution.
+ * gs_{current,set}color are consistent with the other color accessors,
+ * since color space substitution doesn't affect color values.
+ *
+ * As in PostScript, color space substitutions are not affected by
+ * (ordinary) grestore or by setgstate. Graphics states created by gsave or
+ * gstate, or overwritten by currentgstate or copygstate, share
+ * substitutions with the state from which they were copied.
+ */
+
+/* If pcs is NULL, it means undo any substitution. */
+int gs_setsubstitutecolorspace(gs_gstate *pgs, gs_color_space_index csi,
+ const gs_color_space *pcs);
+const gs_color_space *
+ gs_currentsubstitutecolorspace(const gs_gstate *pgs,
+ gs_color_space_index csi);
+
+/*
+ * The following procedures are primarily for internal use, to provide
+ * fast access to specific color spaces.
+ */
+const gs_color_space *gs_current_DeviceGray_space(const gs_gstate *pgs);
+const gs_color_space *gs_current_DeviceRGB_space(const gs_gstate *pgs);
+const gs_color_space *gs_current_DeviceCMYK_space(const gs_gstate *pgs);
+
+#endif /* gscssub_INCLUDED */