1 /* Copyright (C) 2001-2012 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, 8 modified or distributed except as expressly authorized under the terms 9 of the license contained in the file LICENSE in this distribution. 10 11 Refer to licensing information at http://www.artifex.com or contact 12 Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, San Rafael, 13 CA 94903, U.S.A., +1(415)492-9861, for further information. 14 */ 15 16 17 /* Header for the ICC Manager */ 18 19 #ifndef gsiccmanage_INCLUDED 20 # define gsiccmanage_INCLUDED 21 22 #define ICC_DUMP 0 23 24 /* Define the default ICC profiles in the file system */ 25 #define OI_PROFILE "OIProfile" /* Keyword to indicate use of OI profile */ 26 #define DEFAULT_GRAY_ICC "default_gray.icc" 27 #define DEFAULT_RGB_ICC "default_rgb.icc" 28 #define DEFAULT_CMYK_ICC "default_cmyk.icc" 29 #define LAB_ICC "lab.icc" 30 #define SMASK_GRAY_ICC "ps_gray.icc" 31 #define SMASK_RGB_ICC "ps_rgb.icc" 32 #define SMASK_CMYK_ICC "ps_cmyk.icc" 33 #define GRAY_TO_K "gray_to_k.icc" 34 #define DEFAULT_DIR_ICC "%rom%iccprofiles/" 35 #define MAX_DEFAULT_ICC_LENGTH 17 36 37 /* Key names for special common canned profiles. 38 These are found in some image file formats as 39 a magic number. */ 40 41 #define GSICC_STANDARD_PROFILES_KEYS\ 42 "srgb", "sgray" 43 #define GSICC_STANDARD_PROFILES\ 44 "srgb.icc", "sgray.icc" 45 #define GSICC_NUMBER_STANDARD_PROFILES 2 46 #define GSICC_STANDARD_INTENT_KEYS\ 47 "per", "col" , "sat", "abs" 48 /* This enumeration has to be in sync with GSICC_SRCGTAG_KEYS */ 49 typedef enum { 50 COLOR_TUNE, 51 GRAPHIC_CMYK, 52 IMAGE_CMYK, 53 TEXT_CMYK, 54 GRAPHIC_RGB, 55 IMAGE_RGB, 56 TEXT_RGB 57 } gsicc_srcgtagkey_t; 58 59 #define GSICC_SRCGTAG_KEYS\ 60 "ColorTune", "Graphic_CMYK", "Image_CMYK", "Text_CMYK",\ 61 "Graphic_RGB", "Image_RGB", "Text_RGB" 62 #define GSICC_NUM_SRCGTAG_KEYS 7 63 #define GSICC_SRCGTAG_MAX_KEY 12 64 65 #include "gsicc_cms.h" 66 67 /* Prototypes */ 68 void gsicc_profile_reference(cmm_profile_t *icc_profile, int delta); 69 void gsicc_extract_profile(gs_graphics_type_tag_t graphics_type_tag, 70 cmm_dev_profile_t *profile_struct, 71 cmm_profile_t **profile, 72 gsicc_rendering_intents_t *rendering_intent); 73 void gsicc_get_srcprofile(gsicc_colorbuffer_t data_cs, 74 gs_graphics_type_tag_t graphics_type_tag, 75 cmm_srcgtag_profile_t *srcgtag_profile, 76 cmm_profile_t **profile, 77 gsicc_rendering_intents_t *rendering_intent); 78 int gsicc_getsrc_channel_count(cmm_profile_t *icc_profile); 79 int gsicc_init_iccmanager(gs_state * pgs); 80 int gsicc_init_gs_colors(gs_state *pgs); 81 void gsicc_profile_serialize(gsicc_serialized_profile_t *profile_data, 82 cmm_profile_t *iccprofile); 83 int gsicc_set_device_profile_intent(gx_device *dev, gsicc_profile_types_t intent, 84 gsicc_profile_types_t profile_type); 85 int gsicc_init_device_profile_struct(gx_device * dev, char *profile_name, 86 gsicc_profile_types_t profile_type); 87 int gsicc_set_profile(gsicc_manager_t *icc_manager, const char *pname, 88 int namelen, gsicc_profile_t defaulttype); 89 int gsicc_set_srcgtag_struct(gsicc_manager_t *icc_manager, const char* pname, 90 int namelen); 91 cmm_profile_t* gsicc_get_profile_handle_file(const char* pname, int namelen, 92 gs_memory_t *mem); 93 void gsicc_init_profile_info(cmm_profile_t *profile); 94 int gsicc_initialize_default_profile(cmm_profile_t *icc_profile); 95 gsicc_manager_t* gsicc_manager_new(gs_memory_t *memory); 96 cmm_profile_t* gsicc_profile_new(stream *s, gs_memory_t *memory, 97 const char* pname, int namelen); 98 int gsicc_set_gscs_profile(gs_color_space *pcs, cmm_profile_t *icc_profile, 99 gs_memory_t * mem); 100 cmm_profile_t* gsicc_get_gscs_profile(gs_color_space *gs_colorspace, 101 gsicc_manager_t *icc_manager); 102 void gsicc_init_hash_cs(cmm_profile_t *picc_profile, gs_imager_state *pis); 103 gcmmhprofile_t gsicc_get_profile_handle_clist(cmm_profile_t *picc_profile, 104 gs_memory_t *memory); 105 gcmmhprofile_t gsicc_get_profile_handle_buffer(unsigned char *buffer, 106 int profile_size); 107 gsicc_smask_t* gsicc_new_iccsmask(gs_memory_t *memory); 108 int gsicc_initialize_iccsmask(gsicc_manager_t *icc_manager); 109 unsigned int gsicc_getprofilesize(unsigned char *buffer); 110 void gscms_set_icc_range(cmm_profile_t **icc_profile); 111 cmm_profile_t* gsicc_read_serial_icc(gx_device * dev, int64_t icc_hashcode); 112 cmm_profile_t* gsicc_finddevicen(const gs_color_space *pcs, 113 gsicc_manager_t *icc_manager); 114 gs_color_space_index gsicc_get_default_type(cmm_profile_t *profile_data); 115 cmm_dev_profile_t* gsicc_new_device_profile_array(gs_memory_t *memory); 116 void gs_setoverrideicc(gs_imager_state *pis, bool value); 117 bool gs_currentoverrideicc(const gs_imager_state *pis); 118 void gs_setoverride_ri(gs_imager_state *pis, bool value); 119 bool gs_currentoverride_ri(const gs_imager_state *pis); 120 cmm_profile_t* gsicc_set_iccsmaskprofile(const char *pname, int namelen, 121 gsicc_manager_t *icc_manager, 122 gs_memory_t *mem); 123 int gsicc_set_device_profile(gx_device * pdev, gs_memory_t * mem, 124 char *file_name, gsicc_profile_types_t defaulttype); 125 void gsicc_setrange_lab(cmm_profile_t *profile); 126 /* system and user params */ 127 void gs_currentdevicenicc(const gs_state * pgs, gs_param_string * pval); 128 int gs_setdevicenprofileicc(const gs_state * pgs, gs_param_string * pval); 129 void gs_currentdefaultgrayicc(const gs_state * pgs, gs_param_string * pval); 130 int gs_setdefaultgrayicc(const gs_state * pgs, gs_param_string * pval); 131 void gs_currenticcdirectory(const gs_state * pgs, gs_param_string * pval); 132 int gs_seticcdirectory(const gs_state * pgs, gs_param_string * pval); 133 void gs_currentsrcgtagicc(const gs_state * pgs, gs_param_string * pval); 134 int gs_setsrcgtagicc(const gs_state * pgs, gs_param_string * pval); 135 void gs_currentdefaultrgbicc(const gs_state * pgs, gs_param_string * pval); 136 int gs_setdefaultrgbicc(const gs_state * pgs, gs_param_string * pval); 137 void gs_currentnamedicc(const gs_state * pgs, gs_param_string * pval); 138 int gs_setnamedprofileicc(const gs_state * pgs, gs_param_string * pval); 139 void gs_currentdefaultcmykicc(const gs_state * pgs, gs_param_string * pval); 140 int gs_setdefaultcmykicc(const gs_state * pgs, gs_param_string * pval); 141 void gs_currentlabicc(const gs_state * pgs, gs_param_string * pval); 142 int gs_setlabicc(const gs_state * pgs, gs_param_string * pval); 143 144 145 146 #if ICC_DUMP 147 static void dump_icc_buffer(int buffersize, char filename[],byte *Buffer); 148 #endif 149 #endif 150