summaryrefslogtreecommitdiff
path: root/gs/psi/icie.h
diff options
context:
space:
mode:
Diffstat (limited to 'gs/psi/icie.h')
-rw-r--r--gs/psi/icie.h94
1 files changed, 94 insertions, 0 deletions
diff --git a/gs/psi/icie.h b/gs/psi/icie.h
new file mode 100644
index 000000000..317fc1ea0
--- /dev/null
+++ b/gs/psi/icie.h
@@ -0,0 +1,94 @@
+/* Copyright (C) 2001-2006 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 that
+ license. Refer to licensing information at http://www.artifex.com/
+ or contact Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134,
+ San Rafael, CA 94903, U.S.A., +1(415)492-9861, for further information.
+*/
+
+/* $Id$ */
+/* Internal definitions for interpreter CIE color handling */
+
+#ifndef icie_INCLUDED
+# define icie_INCLUDED
+
+/*
+ * All of the routines below are exported by zcie.c for zcrd.c,
+ * except for cie_cache_joint which is exported by zcrd.c for zcie.c.
+ */
+
+/* ------ Parameter acquisition ------ */
+
+/* Get a range array parameter from a dictionary. */
+/* We know that count <= 4. */
+int dict_ranges_param(const gs_memory_t *mem,
+ const ref * pdref, const char *kstr, int count,
+ gs_range * prange);
+
+/* Get 3 ranges from a dictionary. */
+int dict_range3_param(const gs_memory_t *mem,
+ const ref *pdref, const char *kstr,
+ gs_range3 *prange3);
+
+/* Get a 3x3 matrix parameter from a dictionary. */
+int dict_matrix3_param(const gs_memory_t *mem, const ref *pdref,
+ const char *kstr,
+ gs_matrix3 *pmat3);
+
+/* Get an array of procedures from a dictionary. */
+/* We know count <= countof(empty_procs). */
+int dict_proc_array_param(const gs_memory_t *mem, const ref *pdict,
+ const char *kstr,
+ uint count, ref * pparray);
+
+/* Get 3 procedures from a dictionary. */
+int dict_proc3_param(const gs_memory_t *mem, const ref *pdref,
+ const char *kstr, ref proc3[3]);
+
+/* Get WhitePoint and BlackPoint values. */
+int cie_points_param(const gs_memory_t *mem,
+ const ref * pdref, gs_cie_wb * pwb);
+
+/* Process a 3- or 4-dimensional lookup table from a dictionary. */
+/* The caller has set pclt->n and pclt->m. */
+/* ptref is known to be a readable array of size at least n+1. */
+int cie_table_param(const ref * ptable, gx_color_lookup_table * pclt,
+ gs_memory_t * mem);
+
+/* ------ Internal routines ------ */
+
+int cie_set_finish(i_ctx_t *, gs_color_space *,
+ const ref_cie_procs *, int, int);
+
+int cie_cache_push_finish(i_ctx_t *i_ctx_p, op_proc_t finish_proc,
+ gs_ref_memory_t * imem, void *data);
+int cie_prepare_cache(i_ctx_t *i_ctx_p, const gs_range * domain,
+ const ref * proc, cie_cache_floats * pcache,
+ void *container, gs_ref_memory_t * imem,
+ client_name_t cname);
+int cie_prepare_caches_4(i_ctx_t *i_ctx_p, const gs_range * domains,
+ const ref * procs,
+ cie_cache_floats * pc0,
+ cie_cache_floats * pc1,
+ cie_cache_floats * pc2,
+ cie_cache_floats * pc3 /* may be 0 */,
+ void *container,
+ gs_ref_memory_t * imem, client_name_t cname);
+#define cie_prepare_cache3(p,d3,p3,c3,pcie,imem,cname)\
+ cie_prepare_caches_4(p, (d3)->ranges, p3,\
+ &(c3)->floats, &(c3)[1].floats, &(c3)[2].floats,\
+ NULL, pcie, imem, cname)
+#define cie_prepare_cache4(p,d4,p4,c4,pcie,imem,cname)\
+ cie_prepare_caches_4(p, (d4)->ranges, p4,\
+ &(c4)->floats, &(c4)[1].floats, &(c4)[2].floats,\
+ &(c4)[3].floats, pcie, imem, cname)
+
+int cie_cache_joint(i_ctx_t *, const ref_cie_render_procs *,
+ const gs_cie_common *, gs_state *);
+
+#endif /* icie_INCLUDED */