summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/spotcolor/spotcolor.sty
blob: 9783dca37fcba2860b8e31899297efbf9d166750 (plain)
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
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{spotcolor}
          [2006/11/15 v1.2 Package for adding Spot Color support to pdfLaTeX.]

\newif\ifhks\hksfalse
\newif\ifpantone\pantonefalse
\DeclareOption{hks}{\hkstrue}			% preload hks color values into "hks" colorspace
\DeclareOption{pantone}{\pantonetrue}	% preload pantone color values into "pantone" colorspace
\ProcessOptions

\RequirePackage[pdftex]{graphics}
%\RequirePackage{color}

%
% Erzeugt neuen Colorspace
%
\newcommand\NewSpotColorSpace[1]{%
  \expandafter\newtoks\csname #1\endcsname%
  \csname #1\endcsname{}%
}

%
% Colorspace variable, color name, CMYK representation
% Adds a new spot color with the CMYK representation in the 2nd parameter (HEX with values from 00-FF)
%
\catcode`\#=12%
\def\SpotSpace{#20}
\catcode`\#=6%
\gdef\csgrab#1#2{#2\expandafter{\the#2 #1}}%
\newcount{\thecolorprofile}
\newcount{\thecolor}
\newcommand\AddSpotColor[4]{%
  \def\obj{ 0 R}%
  \pdfobj{<</C0[0 0 0 0]/FunctionType 2/C1[#4]/Domain[0 1]/N 1>>}%
  \thecolorprofile=\the\pdflastobj%
  \pdfobj{[/Separation/#3 /DeviceCMYK \the\thecolorprofile \obj]}%  output color space Info
  \thecolor=\the\pdflastobj%
  \edef\tempcs{/#2 \the\pdflastobj \obj}%
  \expandafter\csgrab\expandafter{\tempcs}{\csname #1\endcsname}%
  \pdfrefobj\thecolorprofile%
  \pdfrefobj\thecolor%
}%

%
% Sets a color space for the current page
%
\def\SetPageColorResource#1{%
  \edef\act{\noexpand\pdfpageresources={\the\pdfpageresources\space
    /ColorSpace<<#1>>}}
  \act}
\newcommand\SetPageColorSpace[1]{%
	\expandafter\SetPageColorResource\expandafter{\the\csname #1\endcsname}%
}%

%
% Sets the spot color
%
\def\SpotColor#1#2{%
	\pdfliteral{/#1 cs}%
	\pdfliteral{/#1 CS}%
	\pdfliteral{#2 sc}%
	\pdfliteral{#2 SC}%
}%

%
% Defines a new color space called spotcolor
% The spotcolor has to be set first by using AddSpotColor
% The code is taken and modified from color.sty's pdftex.def
%
\makeatletter
\def\color@spotcolor#1#2{\c@lor@@spotcolor#2\@@#1}
\def\c@lor@@spotcolor#1,#2\@@#3{%
  \c@lor@arg{#2}%
  \edef#3{/#1 cs /#1 CS #2 sc #2 SC}%
}
\makeatother

%
% If pantone or hks option specified then load corresponding color tables
%
\ifhks\input{spotcolorhks}\fi
\ifpantone\input{spotcolorpantone}\fi