/usr/share/ghostscript/9.22/Resource/Init/gs_cspace.ps is in libgs9-common 9.22~dfsg+1-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 | % Copyright (C) 2001-2012 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 the license contained in the file LICENSE in this distribution.
%
% 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.
%
% basic colorspace mechanism
%
% There have been some major changes to the PostScript colour handling.
% In particular, the vast majority of the colour space code has been
% converted from PostScript to C. This file has been extensively
% modified, as has gs_icc.ps. The remaining PostScript files which
% previously implemented colour space handling; gs_ciecs2.ps, gs_ciecs3.ps
% gs_devcs.ps, gs_devn.ps, gs_devpxl.ps, gs_indxd.ps, gs_patrn.ps and
% gs_sepr.ps have been superceded by the C code and removed.
%
% gs_lev2.ps and gs_ll3.ps have also been modified so that they no longer
% attempt to execute these PostScript files.
%
.currentglobal //true .setglobal
systemdict begin
%
% gs_res.ps, and possibly other files, use this dictionary. Formerly
% in cspace_util, moved to systemdict.
%
20 dict dup /colorspacedict exch def
begin % colorspacedict
%
% gs_res.ps uses these entries in colorspacedict
% to populate the ColorSpaceFamily resource, so we need
% to add the supported spaces.
%
/DeviceGray [] def
/DeviceRGB [] def
/DeviceCMYK [] def
end % colorspacedict
%
% Global, read-only, unpacked, array-form device color spaces
% We need to return an array argument in response to currentcolorspace
% even if the argument presented to setcolorspace was a simple device
% space name. Not only that, but in order to satisfy some Adobe
% applications, it must be the *same* array every time. The only way
% to do that is to define an appropriate set initial arrays and always return
% one of those. These arrays are defined here.
%
/DeviceGray_array /DeviceGray 1 array astore readonly def
/DeviceRGB_array /DeviceRGB 1 array astore readonly def
/DeviceCMYK_array /DeviceCMYK 1 array astore readonly def
%
% - initgraphics -
%
% The internal routine gs_initgraphics doesn't (re)set the color space,
% so we must redefine the operation to do it here.
%
%
/initgraphics
{ initgraphics systemdict /DeviceGray_array get setcolorspace }
.bind odef
%
% These routines used for the NOSUBSTDEVICECOLORS switch. This prevents
% substitution of DeviceGray, DeviceRGB and DeviceCMYK with a Default*
% colour space when /UseCIEColors is true. If the job includes a
% definition of /DefaltGray, DefaultRGB or DefaultCMYK then it also executes
% .includecolorspace to allow the device to record the substitute space.
%
/..page_default_spaces 3 dict def
%
% Used internally to retrieve any relevant default colour space.
%
% <Default space name> ..nosubstdevicetest false
% <Default space name> [space] true
%
% If the boolean is true then the C code must set the additional colour space
% and execute .includecolorspace before finally setting a DeviceGray space.
%
/..nosubstdevicetest
{
//false mark 3 -1 roll
% If we have already recorded this space, don't repeat it.
systemdict /..page_default_spaces get 1 index known {
cleartomark
} {
{
% Check to see if this space was defined by defineresource, if so then
% the job defined it, otherwise its the usual default, so ignore it.
dup /ColorSpace resourcestatus {
pop 0 eq {
% Default* defined by defineresource
systemdict /..page_default_spaces get 1 index //true put
dup /ColorSpace findresource 4 2 roll pop pop //true
}{
cleartomark
} ifelse
}{
cleartomark
} ifelse
} stopped
{cleartomark}if
} ifelse
}bind def
%
% <color_space_name> ..includecolorspace -
%
/..includecolorspace
{
% If we have already recorded this space, don't repeat it.
systemdict /..page_default_spaces get 1 index known {
pop
} {
mark exch
{
% Check to see if this space was defined by defineresource, if so then
% the job defined it, otherwise its the usual default, so ignore it.
dup /ColorSpace resourcestatus {
pop 0 eq {
% Job defined /Default*, so record it and allow the device access to it
systemdict /..page_default_spaces get 1 index //true put
gsave
{ dup /ColorSpace findresource //setcolorspace exec .includecolorspace
} stopped pop
grestore
} if
} if
} stopped pop
cleartomark
} ifelse
} bind def
%
% <color_space> <color_space_name> cs_substitute_generic <color_space1> <color_space2>
%
/cs_substitute_generic
{ .getuseciecolor
{NOSUBSTDEVICECOLORS
{ //..includecolorspace exec dup }
{ /ColorSpace findresource }
ifelse
}
{ pop dup }
ifelse
}
bind def
%
% <color_space> <color_space_name> cs_substitute_DeviceRGB_for_PDFX_or_PDFA <color_space1> <color_space2>
%
/cs_substitute_DeviceRGB_for_PDFX_or_PDFA
{ systemdict /PDFX .knownget not { //false } if
systemdict /PDFA .knownget not { //false } {0 eq {//false}{//true} ifelse} ifelse
or {
dup /ColorSpace resourcestatus {
pop pop
} {
(Error: Need a /DefaultRGB /ColorSpace resource for generating a PDF/X or PDF/A document.) =
/cs_substitute_DeviceRGB_for_PDFX_or_PDFA cvx /undefined signalerror
} ifelse
/ColorSpace findresource
} {
//cs_substitute_generic exec
} ifelse
} bind def
end
%
% Set the initial device space
%
systemdict /DeviceGray_array get setcolorspace
.setglobal
|