2 |
- |
1 |
/* Copyright (C) 1995, 1998, 1999 Aladdin Enterprises. All rights reserved.
|
|
|
2 |
|
|
|
3 |
This software is provided AS-IS with no warranty, either express or
|
|
|
4 |
implied.
|
|
|
5 |
|
|
|
6 |
This software is distributed under license and may not be copied,
|
|
|
7 |
modified or distributed except as expressly authorized under the terms
|
|
|
8 |
of the license contained in the file LICENSE in this distribution.
|
|
|
9 |
|
|
|
10 |
For more information about licensing, please refer to
|
|
|
11 |
http://www.ghostscript.com/licensing/. For information on
|
|
|
12 |
commercial licensing, go to http://www.artifex.com/licensing/ or
|
|
|
13 |
contact Artifex Software, Inc., 101 Lucas Valley Road #110,
|
|
|
14 |
San Rafael, CA 94903, U.S.A., +1(415)492-9861.
|
|
|
15 |
*/
|
|
|
16 |
|
|
|
17 |
/* $Id: icie.h,v 1.7 2004/08/04 19:36:12 stefan Exp $ */
|
|
|
18 |
/* Internal definitions for interpreter CIE color handling */
|
|
|
19 |
|
|
|
20 |
#ifndef icie_INCLUDED
|
|
|
21 |
# define icie_INCLUDED
|
|
|
22 |
|
|
|
23 |
/*
|
|
|
24 |
* All of the routines below are exported by zcie.c for zcrd.c,
|
|
|
25 |
* except for cie_cache_joint which is exported by zcrd.c for zcie.c.
|
|
|
26 |
*/
|
|
|
27 |
|
|
|
28 |
/* ------ Parameter acquisition ------ */
|
|
|
29 |
|
|
|
30 |
/* Get a range array parameter from a dictionary. */
|
|
|
31 |
/* We know that count <= 4. */
|
|
|
32 |
int dict_ranges_param(const gs_memory_t *mem,
|
|
|
33 |
const ref * pdref, const char *kstr, int count,
|
|
|
34 |
gs_range * prange);
|
|
|
35 |
|
|
|
36 |
/* Get 3 ranges from a dictionary. */
|
|
|
37 |
int dict_range3_param(const gs_memory_t *mem,
|
|
|
38 |
const ref *pdref, const char *kstr,
|
|
|
39 |
gs_range3 *prange3);
|
|
|
40 |
|
|
|
41 |
/* Get a 3x3 matrix parameter from a dictionary. */
|
|
|
42 |
int dict_matrix3_param(const gs_memory_t *mem, const ref *pdref,
|
|
|
43 |
const char *kstr,
|
|
|
44 |
gs_matrix3 *pmat3);
|
|
|
45 |
|
|
|
46 |
/* Get an array of procedures from a dictionary. */
|
|
|
47 |
/* We know count <= countof(empty_procs). */
|
|
|
48 |
int dict_proc_array_param(const gs_memory_t *mem, const ref *pdict,
|
|
|
49 |
const char *kstr,
|
|
|
50 |
uint count, ref * pparray);
|
|
|
51 |
|
|
|
52 |
/* Get 3 procedures from a dictionary. */
|
|
|
53 |
int dict_proc3_param(const gs_memory_t *mem, const ref *pdref,
|
|
|
54 |
const char *kstr, ref proc3[3]);
|
|
|
55 |
|
|
|
56 |
/* Get WhitePoint and BlackPoint values. */
|
|
|
57 |
int cie_points_param(const gs_memory_t *mem,
|
|
|
58 |
const ref * pdref, gs_cie_wb * pwb);
|
|
|
59 |
|
|
|
60 |
/* Process a 3- or 4-dimensional lookup table from a dictionary. */
|
|
|
61 |
/* The caller has set pclt->n and pclt->m. */
|
|
|
62 |
/* ptref is known to be a readable array of size at least n+1. */
|
|
|
63 |
int cie_table_param(const ref * ptable, gx_color_lookup_table * pclt,
|
|
|
64 |
gs_memory_t * mem);
|
|
|
65 |
|
|
|
66 |
/* ------ Internal routines ------ */
|
|
|
67 |
|
|
|
68 |
int cie_set_finish(i_ctx_t *, gs_color_space *,
|
|
|
69 |
const ref_cie_procs *, int, int);
|
|
|
70 |
|
|
|
71 |
int cie_cache_push_finish(i_ctx_t *i_ctx_p, op_proc_t finish_proc,
|
|
|
72 |
gs_ref_memory_t * imem, void *data);
|
|
|
73 |
int cie_prepare_cache(i_ctx_t *i_ctx_p, const gs_range * domain,
|
|
|
74 |
const ref * proc, cie_cache_floats * pcache,
|
|
|
75 |
void *container, gs_ref_memory_t * imem,
|
|
|
76 |
client_name_t cname);
|
|
|
77 |
int cie_prepare_caches_4(i_ctx_t *i_ctx_p, const gs_range * domains,
|
|
|
78 |
const ref * procs,
|
|
|
79 |
cie_cache_floats * pc0,
|
|
|
80 |
cie_cache_floats * pc1,
|
|
|
81 |
cie_cache_floats * pc2,
|
|
|
82 |
cie_cache_floats * pc3 /* may be 0 */,
|
|
|
83 |
void *container,
|
|
|
84 |
gs_ref_memory_t * imem, client_name_t cname);
|
|
|
85 |
#define cie_prepare_cache3(p,d3,p3,c3,pcie,imem,cname)\
|
|
|
86 |
cie_prepare_caches_4(p, (d3)->ranges, p3,\
|
|
|
87 |
&(c3)->floats, &(c3)[1].floats, &(c3)[2].floats,\
|
|
|
88 |
NULL, pcie, imem, cname)
|
|
|
89 |
#define cie_prepare_cache4(p,d4,p4,c4,pcie,imem,cname)\
|
|
|
90 |
cie_prepare_caches_4(p, (d4)->ranges, p4,\
|
|
|
91 |
&(c4)->floats, &(c4)[1].floats, &(c4)[2].floats,\
|
|
|
92 |
&(c4)[3].floats, pcie, imem, cname)
|
|
|
93 |
|
|
|
94 |
int cie_cache_joint(i_ctx_t *, const ref_cie_render_procs *,
|
|
|
95 |
const gs_cie_common *, gs_state *);
|
|
|
96 |
|
|
|
97 |
#endif /* icie_INCLUDED */
|