1 /* Copyright (C) 2001-2006 Artifex Software, Inc. 2 All Rights Reserved. 3 4 This software is provided AS-IS with no warranty, either express or 5 implied. 6 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. 12 */ 13 14 /* $Id: gscrd.h 8022 2007-06-05 22:23:38Z giles $ */ 15 /* Interface for CIE color rendering dictionary creation */ 16 17 #ifndef gscrd_INCLUDED 18 # define gscrd_INCLUDED 19 20 #include "gscie.h" 21 22 /* 23 * Allocate and minimally initialize a CRD. Note that this procedure sets 24 * the reference count of the structure to 1, not 0. gs_setcolorrendering 25 * will increment the reference count again, so unless you want the 26 * structure to stay allocated permanently (or until a garbage collection), 27 * you should call rc_decrement(pcrd, "client name") *after* calling 28 * gs_setcolorrendering. 29 */ 30 int 31 gs_cie_render1_build(gs_cie_render ** ppcrd, gs_memory_t * mem, 32 client_name_t cname); 33 34 /* 35 * Initialize a CRD given all of the relevant parameters. 36 * Any of the pointers except WhitePoint may be zero, meaning 37 * use the default values. 38 * 39 * The actual point, matrix, range, and procedure values are copied into the 40 * CRD, but only the pointer to the color lookup table 41 * (RenderTable.lookup.table) is copied, not the table itself. 42 * 43 * If pfrom_crd is not NULL, then if the EncodeLMN, EncodeABC, or 44 * RenderTable.T procedures indicate that the values exist only in the 45 * cache, the corresponding values will be copied from pfrom_crd. 46 * Note that NULL values for the individual pointers still represent 47 * default values. 48 */ 49 int 50 gs_cie_render1_init_from(const gs_memory_t *mem, 51 gs_cie_render *pcrd, 52 void *client_data, 53 const gs_cie_render * pfrom_crd, 54 const gs_vector3 * WhitePoint, 55 const gs_vector3 * BlackPoint, 56 const gs_matrix3 * MatrixPQR, 57 const gs_range3 * RangePQR, 58 const gs_cie_transform_proc3 * TransformPQR, 59 const gs_matrix3 * MatrixLMN, 60 const gs_cie_render_proc3 * EncodeLMN, 61 const gs_range3 * RangeLMN, 62 const gs_matrix3 * MatrixABC, 63 const gs_cie_render_proc3 * EncodeABC, 64 const gs_range3 * RangeABC, 65 const gs_cie_render_table_t * RenderTable); 66 /* 67 * Initialize a CRD without the option of copying cached values. 68 */ 69 int 70 gs_cie_render1_initialize(const gs_memory_t *mem, 71 gs_cie_render *pcrd, 72 void *client_data, 73 const gs_vector3 * WhitePoint, 74 const gs_vector3 * BlackPoint, 75 const gs_matrix3 * MatrixPQR, 76 const gs_range3 * RangePQR, 77 const gs_cie_transform_proc3 * TransformPQR, 78 const gs_matrix3 * MatrixLMN, 79 const gs_cie_render_proc3 * EncodeLMN, 80 const gs_range3 * RangeLMN, 81 const gs_matrix3 * MatrixABC, 82 const gs_cie_render_proc3 * EncodeABC, 83 const gs_range3 * RangeABC, 84 const gs_cie_render_table_t * RenderTable); 85 86 /* 87 * Set or access the client_data pointer in a CRD. 88 * The macro is an L-value. 89 */ 90 #define gs_cie_render_client_data(pcrd) ((pcrd)->client_data) 91 92 #endif /* gscrd_INCLUDED */ 93