From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Mon, 2 Sep 2019 13:46:59 +0900
Subject: Initial commit

---
 macros/latex/contrib/graphics-def/xetex.def | 435 ++++++++++++++++++++++++++++
 1 file changed, 435 insertions(+)
 create mode 100644 macros/latex/contrib/graphics-def/xetex.def

(limited to 'macros/latex/contrib/graphics-def/xetex.def')

diff --git a/macros/latex/contrib/graphics-def/xetex.def b/macros/latex/contrib/graphics-def/xetex.def
new file mode 100644
index 0000000000..bb2cba80d4
--- /dev/null
+++ b/macros/latex/contrib/graphics-def/xetex.def
@@ -0,0 +1,435 @@
+%% xetex.def Copyright (C) 2005-2017 LaTeX3 Project, Jin-Hwan Cho, Shunsaku Hirata
+%%                                      (with contributions from many others)
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is the LaTeX3 Project.
+%%
+%% https://github.com/latex3/graphics-def/issues
+%%
+\ProvidesFile{xetex.def}
+  [2017/06/24 v5.0h Graphics/color driver for xetex]
+\def\GPT@space{ }
+\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@gray#1#2{%
+  \c@lor@arg{#2}%
+  \edef#1{gray #2}%
+  }
+\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{cmyk #1 #2 #3 #4}%
+  }
+\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{rgb #1 #2 #3}%
+  }
+\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@hsb#1#2{\c@lor@@hsb#2\@@#1}
+\def\c@lor@@hsb#1,#2,#3\@@#4{%
+  \c@lor@arg{#1}%
+  \c@lor@arg{#2}%
+  \c@lor@arg{#3}%
+  \edef#4{hsb #1 #2 #3}%
+  }
+\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{ #1}}%
+  }
+\def\c@lor@to@ps#1 #2\@@{\csname c@lor@ps@#1\endcsname#2 \@@}
+\def\c@lor@ps@#1 #2\@@{TeXDict begin #1 end}
+\def\c@lor@ps@rgb#1\@@{#1 setrgbcolor}
+\def\c@lor@ps@hsb#1\@@{#1 sethsbcolor}
+\def\c@lor@ps@cmyk#1\@@{#1 setcmykcolor}
+\def\c@lor@ps@gray#1\@@{#1 setgray}
+\def\current@color{ Black}
+\def\set@color{%
+ \special{color push  \current@color
+                          }\aftergroup\reset@color}
+\def\reset@color{\special{%
+        color pop}}
+\def\set@page@color{\special{%
+        background \current@color}}
+\def\define@color@named#1#2{%
+  \expandafter\let\csname col@#1\endcsname\@nnil}
+      \def\no@page@color{\special{background \string"newpath clip}}
+\@ifundefined{Gin@decode}
+  {\let\Gin@decode\@empty}
+  {}
+\@ifundefined{Gin@page}
+  {\let\Gin@page\@empty}
+  {}
+\@ifundefined{Gin@pagebox}
+  {\def\Gin@pagebox{cropbox}}
+  {}
+\@ifundefined{Gin@interpolate}
+  {\csname newif\endcsname\ifGin@interpolate}
+  {}
+\def\Gread@pdf#1{%
+  \let\Gin@decode\@empty
+  \Gin@interpolatefalse
+  \Gread@@xetex\XeTeXpdffile
+}
+\def\Gread@bmp#1{%
+  \let\Gin@page\@empty
+  \let\Gin@pagebox\@empty
+  \Gread@@xetex\XeTeXpicfile
+}
+\def\Gread@@xetex#1{%
+  \IfFileExists{\Gin@base.bb}%
+    {\Gread@eps{\Gin@base.bb}}%
+    {\Gread@@xetex@aux#1}%
+}
+\def\Gread@@xetex@aux#1{%
+  \edef\Gin@attr@hash{%
+    \ifx\Gin@pagebox\@empty
+    \else
+      :\Gin@pagebox
+    \fi
+    \ifx\Gin@page\@empty
+    \else
+      :P\Gin@page
+    \fi
+  }%
+  \edef\Gin@@name{\Gin@base\Gin@ext}%
+  \@ifundefined{\Gin@@name\GPT@space height\Gin@attr@hash}%
+    {%
+      \setbox\@tempboxa=\hbox{%
+        #1"\Gin@@name"\GPT@space
+        \ifx\Gin@page\@empty\else page \Gin@page\fi
+        \ifx\Gin@pagebox\@empty\else\expandafter\Gread@@xetex@box\Gin@pagebox\fi
+      }%
+      \def\Gin@llx{0}\let\Gin@lly\Gin@llx
+      \Gin@defaultbp\Gin@urx{\wd\@tempboxa}%
+      \Gin@defaultbp\Gin@ury{\ht\@tempboxa}%
+      \expandafter\xdef\csname \Gin@@name\GPT@space height\Gin@attr@hash\endcsname
+        {\the\ht\@tempboxa}%
+      \expandafter\xdef\csname \Gin@@name\GPT@space width\Gin@attr@hash\endcsname
+        {\the\wd\@tempboxa}%
+    }{%
+      \def\Gin@llx{0}\let\Gin@lly\Gin@llx
+      \Gin@defaultbp\Gin@urx
+        {\csname \Gin@@name\GPT@space width\Gin@attr@hash\endcsname}%
+      \Gin@defaultbp\Gin@ury
+        {\csname \Gin@@name\GPT@space height\Gin@attr@hash\endcsname}%
+    }%
+}
+\def\Gread@@xetex@box#1box{#1}
+\def\GPT@setup@scale{%
+  \def\@tempa{!}%
+  \ifx\Gin@scaley\@tempa
+    \let\Gin@scaley\Gin@scalex
+  \else
+    \ifx\Gin@scalex\@tempa\let\Gin@scalex\Gin@scaley\fi
+  \fi
+}
+\def\Ginclude@pdf#1{%
+  \GPT@setup@scale
+  \Gin@log{%
+    <use #1%
+    \ifx\Gin@page\@empty\else, page \Gin@page\fi
+    >%
+  }%
+  \hbox{%
+    \Gscale@box{\Gin@scalex}[\Gin@scaley]{%
+      \@ifundefined{Gin@vllx}{%
+        \GPT@viewportfalse
+        % without viewport/trim clipping does not make sense
+        % for pdfTeX
+        \Gin@clipfalse
+      }{}%
+      \ifGin@clip
+        \if!\Gin@vllx\Gin@vlly\Gin@vurx\Gin@vury!%
+        \else
+          \let\GPT@clipend\GPT@DoClipEnd
+          \setbox\@tempboxa\hbox\bgroup
+        \fi
+      \fi
+      \ifGPT@viewport
+        \ifdim\Gin@vlly\p@=\z@
+        \else
+          \lower\Gin@vlly bp\hbox\bgroup
+        \fi
+        \ifdim\Gin@vllx\p@=\z@
+        \else
+          \hskip-\Gin@vllx bp\relax
+        \fi
+      \fi
+      \XeTeXpdffile"#1" %
+        \ifx\Gin@page\@empty\else page \Gin@page\fi
+        \ifx\Gin@pagebox\@empty\else\expandafter\Gread@@xetex@box\Gin@pagebox\fi
+      \ifGPT@viewport
+        \ifdim\Gin@vlly\p@=\z@
+        \else
+          \egroup
+        \fi
+        \GPT@clipend
+      \fi
+    }%
+  }%
+}
+\newif\ifGPT@viewport
+\GPT@viewporttrue
+\let\GPT@clipend\relax
+\def\GPT@DoClipEnd{%
+  \egroup
+  \dp\@tempboxa\z@
+  % \Gin@urx and \Gin@ury already contain the correct values,
+  % so both cases viewport and trim can be handled together:
+  \dimen@\Gin@urx\p@
+  \advance\dimen@ -\Gin@llx\p@
+  \wd\@tempboxa\strip@pt\dimen@ bp\relax
+  \dimen@\Gin@ury\p@
+  \advance\dimen@ -\Gin@lly\p@
+  \ht\@tempboxa\strip@pt\dimen@ bp\relax
+  \GPT@clipbox\@tempboxa
+  \box\@tempboxa
+}
+\def\GPT@clipbox#1{%
+  \setbox#1=\hbox{%
+    \Gin@defaultbp\WIDTH{\wd#1}%
+    \Gin@defaultbp\DEPTH{\dp#1}%
+    \@tempdima\ht#1%
+    \advance\@tempdima\dp#1%
+    \Gin@defaultbp\TOTALHEIGHT{\@tempdima}%
+    \special{x:gsave}%
+    \special{%
+      pdf:literal
+      0 -\DEPTH\GPT@space \WIDTH\GPT@space \TOTALHEIGHT\GPT@space re  W n
+    }%
+    \rlap{\box#1}%
+    \special{x:grestore}%
+    \hskip\wd#1%
+  }%
+}
+\def\Ginclude@bmp#1{%
+  \Gin@log{<#1>}%
+  \bgroup
+  \def\@tempa{!}%
+    \special{pdf:image\GPT@space
+      bbox\GPT@space\Gin@llx\GPT@space\Gin@lly\GPT@space\Gin@urx\GPT@space\Gin@ury\GPT@space
+      clip\GPT@space\ifGin@clip 1\else 0\fi\GPT@space
+      \ifx\Gin@scalex\@tempa\else width\GPT@space\the\Gin@req@width\GPT@space\fi
+      \ifx\Gin@scaley\@tempa\else height\GPT@space\the\Gin@req@height\GPT@space\fi
+      (#1)\GPT@space
+      \ifnum0%
+        \ifx\Gin@decode\@empty\else 1\fi
+        \ifGin@interpolate 1\fi
+        >0 %
+        <<%
+          \ifx\Gin@decode\@empty\else /Decode[\Gin@decode]\fi
+          \ifGin@interpolate /Interpolate true\fi
+        >>%
+      \fi
+    }%
+  \egroup
+}
+\newif\if@trim@vport
+\def\Ginclude@eps#1{%
+  \Gin@log{<#1>}%
+  \bgroup
+  \ifx\Undefined\Gin@vllx\else\@trim@vporttrue\fi
+  \def\@tempa{!}%
+  \dimen@\Gin@urx\p@
+  \advance\dimen@ -\Gin@llx\p@
+  \if@trim@vport
+  \advance\dimen@ \Gin@vllx\p@
+  \fi
+  \edef\Gin@urx{\strip@pt\dimen@}%
+  \dimen@\Gin@ury\p@
+  \advance\dimen@ -\Gin@lly\p@
+  \if@trim@vport
+  \advance\dimen@ \Gin@vlly\p@
+  \fi
+  \edef\Gin@ury{\strip@pt\dimen@}%
+  \dimen@\Gin@req@width
+  \dimen@ii.1bp%
+  \divide\dimen@\dimen@ii
+  \@tempdima\Gin@req@height
+  \divide\@tempdima\dimen@ii
+    \special{PSfile="#1"\GPT@space
+      \if@trim@vport
+      llx=\Gin@vllx\GPT@space
+      lly=\Gin@vlly\GPT@space
+      \fi
+      urx=\Gin@urx\GPT@space
+      ury=\Gin@ury\GPT@space
+      \ifx\Gin@scalex\@tempa\else rwi=\number\dimen@\GPT@space\fi
+      \ifx\Gin@scaley\@tempa\else rhi=\number\@tempdima\GPT@space\fi
+      \ifGin@clip clip\fi}%
+  \egroup}
+%
+% In the above \Ginclude@eps, llx, lly, urx, and ury are translated to match
+% the -dEPSCrop option for Ghostscript to convert eps to pdf.
+% In the case of eps files created by MetaPost, the files are included
+% directly without the help of Ghostscript. That is, we have to translate
+% the origin accordingly if we use \Ginclude@eps for eps files created by
+% MetaPost. In TeX Live 2015, the translation of the origin was the default.
+% After TeX Live 2016, however, the translation of the origin is enabled only
+% if the --mvorigin option is given for xdvipdfmx
+% This may be a bit inconvenient, especially as
+% xdvipdfmx is usually called as a pipe. Therefore we introduce a new suffix
+% .mps(or .MPS) to support inclusion of eps files created by MetaPost without
+% the option --mvorigin.
+%
+\def\Ginclude@mps#1{%
+  \Gin@log{<#1>}%
+  \bgroup
+  \def\@tempa{!}%
+  \dimen@\Gin@req@width
+  \dimen@ii.1bp%
+  \divide\dimen@\dimen@ii
+  \@tempdima\Gin@req@height
+  \divide\@tempdima\dimen@ii
+    \special{PSfile="#1"\GPT@space
+      llx=\Gin@llx\GPT@space
+      lly=\Gin@lly\GPT@space
+      urx=\Gin@urx\GPT@space
+      ury=\Gin@ury\GPT@space
+      \ifx\Gin@scalex\@tempa\else rwi=\number\dimen@\GPT@space\fi
+      \ifx\Gin@scaley\@tempa\else rhi=\number\@tempdima\GPT@space\fi
+      \ifGin@clip clip\fi}%
+  \egroup}
+%
+\def\Grot@start{%
+\special{pdf:btrans rotate \Grot@angle}}
+\def\Grot@end{\special{pdf:etrans}}
+
+% 4.13 add support for ptex vertical writing mode
+% inspired by pxtatescale package (Hironobu Yamashita)
+\ifx\kanjiskip\@undefined
+\def\Gscale@start{%
+  \special{pdf:btrans}%
+  \special{x:scale \Gscale@x\GPT@space\Gscale@y}%
+}
+\else
+\edef\Gscale@start{%
+  \special{pdf:btrans}%
+  \special{x:scale
+  \expandafter\noexpand\csname iftdir\endcsname
+    \noexpand\Gscale@y\noexpand\GPT@space\noexpand\Gscale@x
+  \expandafter\noexpand\csname else\endcsname
+    \noexpand\Gscale@x\noexpand\GPT@space\noexpand\Gscale@y
+  \expandafter\noexpand\csname fi\endcsname}}
+\fi
+%
+\def\Gscale@end{\special{pdf:etrans}}
+\def\Gin@PS@raw#1{\special{ps: #1}}
+\def\Gin@PS@restored#1{\special{" #1}}
+\def\Gin@PS@literal@header#1{\AtBeginDvi{\special{! #1}}}
+\def\Gin@PS@file@header#1{\AtBeginDvi{\special{header=#1}}}
+\def\Gin@extensions{% order here is like pdftex.def, except for PS
+  .pdf,.PDF,.ai,.AI,%
+  .png,.PNG,.jpg,.JPG,.jpeg,.JPEG,.jp2,.JP2,.jpf,.JPF,.bmp,.BMP,%
+  .ps,.PS,.eps,.EPS,.mps,.MPS,%
+  .pz,.eps.Z,.ps.Z,.ps.gz,.eps.gz}
+%
+\@namedef{Gin@rule@.pdf}#1{{pdf}{.xbb}{#1}}
+\@namedef{Gin@rule@.PDF}#1{{pdf}{.xbb}{#1}}
+%
+\@namedef{Gin@rule@.ai}#1{{pdf}{.xbb}{#1}}
+\@namedef{Gin@rule@.AI}#1{{pdf}{.xbb}{#1}}
+%
+\@namedef{Gin@rule@.jp2}#1{{bmp}{.xbb}{#1}}
+\@namedef{Gin@rule@.JP2}#1{{bmp}{.xbb}{#1}}
+%
+\@namedef{Gin@rule@.jpf}#1{{bmp}{.xbb}{#1}}
+\@namedef{Gin@rule@.JPF}#1{{bmp}{.xbb}{#1}}
+%
+\@namedef{Gin@rule@.png}#1{{bmp}{.xbb}{#1}}
+\@namedef{Gin@rule@.PNG}#1{{bmp}{.xbb}{#1}}
+%
+\@namedef{Gin@rule@.jpg}#1{{bmp}{.xbb}{#1}}
+\@namedef{Gin@rule@.JPG}#1{{bmp}{.xbb}{#1}}
+%
+\@namedef{Gin@rule@.jpeg}#1{{bmp}{.xbb}{#1}}
+\@namedef{Gin@rule@.JPEG}#1{{bmp}{.xbb}{#1}}
+%
+\@namedef{Gin@rule@.jp2}#1{{bmp}{.xbb}{#1}}
+\@namedef{Gin@rule@.JP2}#1{{bmp}{.xbb}{#1}}
+%
+\@namedef{Gin@rule@.jpf}#1{{bmp}{.xbb}{#1}}
+\@namedef{Gin@rule@.JPF}#1{{bmp}{.xbb}{#1}}
+%
+\@namedef{Gin@rule@.bmp}#1{{bmp}{.xbb}{#1}}
+\@namedef{Gin@rule@.BMP}#1{{bmp}{.xbb}{#1}}
+%
+\@namedef{Gin@rule@.ps}#1{{eps}{.ps}{#1}}
+\@namedef{Gin@rule@.PS}#1{{eps}{.ps}{#1}}
+%
+\@namedef{Gin@rule@.eps}#1{{eps}{.eps}{#1}}
+\@namedef{Gin@rule@.EPS}#1{{eps}{.eps}{#1}}
+%
+\@namedef{Gin@rule@.mps}#1{{mps}{.mps}{#1}}
+\@namedef{Gin@rule@.MPS}#1{{mps}{.mps}{#1}}
+% (don't bother with uppercase versions for these Unixish extensions)
+\@namedef{Gin@rule@.pz}#1{{eps}{.xbb}{`gunzip -c #1}}
+\@namedef{Gin@rule@.eps.Z}#1{{eps}{.eps.xbb}{`gunzip -c #1}}
+\@namedef{Gin@rule@.ps.Z}#1{{eps}{.ps.xbb}{`gunzip -c #1}}
+\@namedef{Gin@rule@.ps.gz}#1{{eps}{.ps.xbb}{`gunzip -c #1}}
+\@namedef{Gin@rule@.eps.gz}#1{{eps}{.eps.xbb}{`gunzip -c #1}}
+%
+\@namedef{Gin@rule@*}#1{{eps}{\Gin@ext}{#1}}
+\@ifundefined{ifGin@setpagesize}
+{\expandafter\let\csname ifGin@setpagesize\expandafter\endcsname
+\csname iftrue\endcsname}
+{}
+\ifGin@setpagesize
+\ifx\paperwidth\@undefined\else
+\AtBeginDocument{%
+% If a package has changed \mag, assume it knows what it is doing
+% and leave page size alone
+\ifnum\mag=\@m
+\@ifundefined{stockwidth}{%
+\@ifundefined{paperwidth}{%
+}{%
+\ifdim\paperwidth>0pt\relax
+\ifdim\paperheight>0pt\relax
+\pdfpagewidth=\paperwidth
+\pdfpageheight=\paperheight
+\fi
+\fi
+}%
+}{%
+\ifdim\stockwidth>0pt\relax
+\ifdim\stockheight>0pt\relax
+\pdfpagewidth=\stockwidth
+\pdfpageheight=\stockheight
+\fi
+\fi
+}%
+\fi
+}
+\fi
+\fi
-- 
cgit v1.2.3

