\ProvidesFile{pdftex.def}[1998/06/04 v0.02g graphics/color for pdftex] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% LaTeX Colour and Graphics support for PDFTeX %% %% David Carlisle, Sebastian Rahtz and Hans Hagen %% %% It may be used by specifying the pdftex option to any of the %% supported packages, for example: %% %% \usepackage[pdftex]{graphicx} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifx\pdftexversion\@undefined \def\driver@release{1}% \else \ifnum\pdftexversion<12 \def\driver@release{2}% \else \ifnum \expandafter `\pdftexrevision < `n \def\driver@release{3}% \else \def\driver@release{4}% \fi \fi \fi % Colour Support. The following models may be used. % * cmyk supported directly. % * rgb supported directly. % * RGB converted to rgb by this file. % * gray converted to rgb by this file. % * named converted to cmyk by this file. % \def\c@lor@arg#1{% \dimen@#1\p@ \ifdim\dimen@<\z@\dimen@\maxdimen\fi \ifdim\dimen@>\p@ \PackageError{color}{Argument `#1' not in range [0,1]}\@ehd \fi} \def\color@cmyk#1#2{\c@lor@@cmyk#2\@@#1} \def\c@lor@@cmyk#1,#2,#3,#4\@@#5{% \c@lor@arg{#4}% \c@lor@arg{#1}% \c@lor@arg{#2}% \c@lor@arg{#3}% \edef#5{#1 #2 #3 #4 k #1 #2 #3 #4 K}% } \def\color@gray#1#2{\c@lor@@rgb#2,#2,#2\@@#1} \def\color@rgb#1#2{\c@lor@@rgb#2\@@#1} \def\c@lor@@rgb#1,#2,#3\@@#4{% \c@lor@arg{#1}% \c@lor@arg{#2}% \c@lor@arg{#3}% \edef#4{#1 #2 #3 rg #1 #2 #3 RG}% } \def\color@RGB#1#2{\c@lor@@RGB#2\@@#1} \def\c@lor@@RGB#1,#2,#3\@@#4{% \c@lor@RGB@rgb{#1}\@tempa \c@lor@RGB@rgb{#2}\@tempb \c@lor@RGB@rgb{#3}\@tempc \c@lor@@rgb\@tempa,\@tempb,\@tempc\@@#4% } \def\c@lor@RGB@rgb#1#2{% \dimen@#1\p@ \divide\dimen@\@cclv \edef#2{\strip@pt\dimen@}} \def\color@named#1#2{\c@lor@@named#2,,\@@#1} \def\c@lor@@named#1,#2,#3\@@#4{% \@ifundefined{col@#1}% {\PackageError{color}{Undefined color `#1'}\@ehd}% {\edef#4{\csname col@#1\endcsname}}% } \def\set@color{\pdfliteral{\current@color}\aftergroup\reset@color} \def\reset@color{\pdfliteral{\current@color}} \def\define@color@named#1#2{% \expandafter\edef\csname col@#1\endcsname{#2}} \def\current@color{1 1 1 1 k 1 1 1 1 K} % Need the `colorfix' modifications as no internal colour stack % is maintained %<*colorfix> \AtBeginDocument{% \let\@ldc@l@r\color \def\color{\if@inlabel\leavevmode\fi\@ldc@l@r}% \let\@lduseb@x\usebox \def\usebox#1{\@lduseb@x{#1}\set@color}} % % % Graphic inclusion. Currently supports .png, .jpg, .mps and .pdf inclusion; % .mps is MetaPost output. % .mps inclusion depends on loading a CONTEXT module by Hans Hagen; % .pdf also needs a Context module unless pdftex 0.12n or later. % PNG bitmaps may be scaled/rotated as usual % by the graphics commands or keyword arguments. \def\Gread@png#1{% \setbox\@tempboxa\hbox{\pdfimage#1\relax}% \def\Gin@llx{0}\let\Gin@lly\Gin@llx \Gin@defaultbp\Gin@urx{\wd\@tempboxa}% \Gin@defaultbp\Gin@ury{\ht\@tempboxa}} \ifnum\driver@release>3 \let\Gread@jpg\Gread@png \fi \edef\Gread@MBox{/MediaBox} \def\Gread@pdf#1{% \begingroup \@tempcnta\z@ \loop\ifnum\@tempcnta<\@xxxii \catcode\@tempcnta14 % \advance\@tempcnta\@ne \repeat \catcode127=14 % \let\do\@makeother\dospecials\catcode`\ 10 % \catcode\endlinechar5 % \immediate\openin\@inputcheck#1 % \ifeof\@inputcheck \@latex@error{File `#1' not found}\@ehc \else \Gread@true \let\@tempb\Gread@false \loop % v0.02e: use \. not \@tempa so the space is preserved before [ \read\@inputcheck to\.% \ifeof\@inputcheck \Gread@false \else \expandafter\Gread@find@mbox\. []\\% \fi \ifGread@ \repeat \immediate\closein\@inputcheck \fi \ifGin@bbox\else \@latex@error {Cannot determine size of graphic in #1 (no BoundingBox)}% \@ehc \gdef\@gtempa{0 0 72 72 }% \fi \endgroup \expandafter\Gread@parse@bb\@gtempa\\} \long\def\Gread@find@mbox#1 [#2]#3\\{% \def\@tempa{#1}% \ifx\@tempa\Gread@MBox \gdef\@gtempa{#2 }% \@tempb \Gin@bboxtrue \fi } \def\Ginclude@png#1{% \hbox{% % v0.02f add \@depth\z@ (from Sebastian) \pdfimage \@height\Gin@req@height \@width\Gin@req@width \@depth\z@ #1\relax}} \def\Ginclude@mps#1{% \def\@tempa{!}% \ifx\Gin@scaley\@tempa \let\Gin@scaley\Gin@scalex \else \ifx\Gin@scalex\@tempa\let\Gin@scalex\Gin@scaley\fi \fi \hbox{% \convertMPtoPDF{#1}{\Gin@scalex}{\Gin@scaley}% }% } \def\Gread@mps{\Gread@eps} \ifnum\driver@release>3 \let\Ginclude@jpg\Ginclude@png \let\Ginclude@pdf\Ginclude@png \else \def\Ginclude@pdf#1{% \def\@tempa{!}% \ifx\Gin@scaley\@tempa \let\Gin@scaley\Gin@scalex \else \ifx\Gin@scalex\@tempa\let\Gin@scalex\Gin@scaley\fi \fi \hbox{% \convertPDFtoPDF{#1}{\Gin@scalex}{\Gin@scaley} {0bp} {0bp}{\Gin@req@width}{\Gin@req@height}% }% } \fi % v0.02e: restrict the rules to just the types that pdftex can currently % deal with. \ifnum\driver@release>3 \def\Gin@extensions{.png,.pdf,.jpg,.mps} \@namedef{Gin@rule@.jpg}#1{{jpg}{.jpg}{#1}} \else \def\Gin@extensions{.png,.pdf,.mps} \fi \@namedef{Gin@rule@.png}#1{{png}{.png}{#1}} \@namedef{Gin@rule@.mps}#1{{mps}{.mps}{#1}} \@namedef{Gin@rule@.pdf}#1{{pdf}{.pdf}{#1}} % Rotation % slightly hacky, but set width of box 0 to 0pt otherwise % the CTM gets restored in the wrong place. \def\Grot@start{% \pdfliteral{ q \Grot@cos\space\Grot@sin\space-\Grot@sin\space\Grot@cos\space 0 0 cm}% \wd\z@\z@} \def\Grot@end{\pdfliteral{ Q}} % Scaling is OK, as graphics package does it right here. \def\Gscale@start{% \pdfliteral{ q \Gscale@x\space0 0 \Gscale@y\space 0 0 cm}} \let\Gscale@end\Grot@end % undo the trig.sty `optimisation' so that these 0 1 and -1 values % get written out as digits, not unexpandable TeX primitives. \AtBeginDocument{% \expandafter\def\csname sin(0)\endcsname{0}% \expandafter\def\csname cos(0)\endcsname{1}% \expandafter\def\csname sin(90)\endcsname{1}% \expandafter\def\csname cos(90)\endcsname{0}% \expandafter\def\csname sin(-90)\endcsname{-1}% \expandafter\def\csname cos(-90)\endcsname{0}% \expandafter\def\csname sin(180)\endcsname{0}% \expandafter\def\csname cos(180)\endcsname{-1}} % Are we running under PDFTeX? \ifx\pdfpageheight\@undefined \PackageWarningNoLine\@currname {pdftex option does not work with standard TeX} \else \pdfpageheight\paperheight \pdfpagewidth\paperwidth \pdfoutput=1 \fi % v0.02e: Restore catcodes of context letters. % Not needed with current version of supp-pdf % but protects against older versions. \AtBeginDocument{% \edef\@tempa{% \catcode`\noexpand\!\the\catcode`\! \catcode`\noexpand\@\the\catcode`\@ \catcode`\noexpand\?\the\catcode`\? }% \InputIfFileExists{supp-pdf}{}{}% \@tempa} \endinput