1
/* Copyright (C) 2001-2006 Artifex Software, Inc.
4
This software is provided AS-IS with no warranty, either express or
7
This software is distributed under license and may not be copied, modified
8
or distributed except as expressly authorized under the terms of that
9
license. Refer to licensing information at http://www.artifex.com/
10
or contact Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134,
11
San Rafael, CA 94903, U.S.A., +1(415)492-9861, for further information.
14
/* $Id: gxcie.h 8781 2008-05-28 00:27:23Z mvrhel $ */
15
/* Internal definitions for CIE color implementation */
16
/* Requires gxcspace.h */
18
#ifndef gxcie_INCLUDED
19
# define gxcie_INCLUDED
25
* These color space implementation procedures are defined in gscie.c or
26
* gsciemap.c, and referenced from the color space structures in gscscie.c.
29
* We use CIExxx rather than CIEBasedxxx in some places because
30
* gcc under VMS only retains 23 characters of procedure names,
31
* and DEC C truncates all identifiers at 31 characters.
34
/* Defined in gscie.c */
36
cs_proc_init_color(gx_init_CIE);
37
cs_proc_restrict_color(gx_restrict_CIEDEFG);
38
cs_proc_install_cspace(gx_install_CIEDEFG);
39
cs_proc_restrict_color(gx_restrict_CIEDEF);
40
cs_proc_install_cspace(gx_install_CIEDEF);
41
cs_proc_restrict_color(gx_restrict_CIEABC);
42
cs_proc_install_cspace(gx_install_CIEABC);
43
cs_proc_restrict_color(gx_restrict_CIEA);
44
cs_proc_install_cspace(gx_install_CIEA);
47
* Initialize (just enough of) an imager state so that "concretizing" colors
48
* using this imager state will do only the CIE->XYZ mapping. This is a
49
* semi-hack for the PDF writer.
51
extern int gx_cie_to_xyz_alloc(gs_imager_state **,
52
const gs_color_space *, gs_memory_t *);
53
extern void gx_cie_to_xyz_free(gs_imager_state *);
55
/* Defined in gsciemap.c */
58
* Test whether a CIE rendering has been defined; ensure that the joint
59
* caches are loaded. Note that the procedure may return 1 if no rendering
62
int gx_cie_check_rendering(const gs_color_space * pcs, frac * pconc, const gs_imager_state * pis);
65
* Do the common remapping operation for CIE color spaces. Returns the
66
* number of components of the concrete color space (3 if RGB, 4 if CMYK).
67
* This simply calls a procedure variable stored in the joint caches
70
extern int gx_cie_remap_finish( cie_cached_vector3,
72
const gs_imager_state *,
73
const gs_color_space * );
74
/* Make sure the prototype matches the one defined in gscie.h. */
75
extern GX_CIE_REMAP_FINISH_PROC(gx_cie_remap_finish);
78
* Define the real remap_finish procedure. Except for CIE->XYZ mapping,
79
* this is what is stored in the remap_finish member of the joint caches.
81
extern GX_CIE_REMAP_FINISH_PROC(gx_cie_real_remap_finish);
83
* Define the remap_finish procedure for CIE->XYZ mapping.
85
extern GX_CIE_REMAP_FINISH_PROC(gx_cie_xyz_remap_finish);
87
cs_proc_concretize_color(gx_concretize_CIEDEFG);
88
cs_proc_concretize_color(gx_concretize_CIEDEF);
89
cs_proc_concretize_color(gx_concretize_CIEABC);
90
#if ENABLE_CUSTOM_COLOR_CALLBACK
91
cs_proc_remap_color(gx_remap_CIEDEFG);
92
cs_proc_remap_color(gx_remap_CIEDEF);
93
cs_proc_remap_color(gx_remap_CIEA);
94
cs_proc_remap_color(gx_remap_IndexedSpace);
96
cs_proc_remap_color(gx_remap_CIEABC);
97
cs_proc_concretize_color(gx_concretize_CIEA);
99
/* Defined in gscscie.c */
101
/* GC routines exported for gsicc.c */
102
extern_st(st_cie_common);
103
extern_st(st_cie_common_elements_t);
105
/* set up the common default values for a CIE color space */
106
extern void gx_set_common_cie_defaults( gs_cie_common *,
107
void * client_data );
109
/* Load the common caches for a CIE color space */
110
extern void gx_cie_load_common_cache(gs_cie_common *, gs_state *);
112
/* Complete loading of the common caches */
113
extern void gx_cie_common_complete(gs_cie_common *);
115
/* "indirect" color space installation procedure */
116
cs_proc_install_cspace(gx_install_CIE);
118
/* allocate and initialize the common part of a cie color space */
119
extern void * gx_build_cie_space( gs_color_space ** ppcspace,
120
const gs_color_space_type * pcstype,
121
gs_memory_type_ptr_t stype,
122
gs_memory_t * pmem );
125
* Determine the concrete space which underlies a CIE based space. For all
126
* device independent color spaces, this is dependent on the current color
127
* rendering dictionary, rather than the current color space. This procedure
128
* is exported for use by gsicc.c to implement ICCBased color spaces.
130
cs_proc_concrete_space(gx_concrete_space_CIE);
132
#endif /* gxcie_INCLUDED */