summaryrefslogtreecommitdiff
path: root/tex/context/base/supp-eps.tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/supp-eps.tex')
-rw-r--r--tex/context/base/supp-eps.tex129
1 files changed, 129 insertions, 0 deletions
diff --git a/tex/context/base/supp-eps.tex b/tex/context/base/supp-eps.tex
new file mode 100644
index 000000000..0698f1332
--- /dev/null
+++ b/tex/context/base/supp-eps.tex
@@ -0,0 +1,129 @@
+%D \module
+%D [ file=supp-eps,
+%D version=1998.05.06,
+%D title=\CONTEXT\ Support Macros,
+%D subtitle=\EPS\ tools,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. Non||commercial use is
+%C granted.
+
+\ifx \undefined \writestatus \input supp-mis.tex \relax \fi
+
+%D The macros in this module are rather old and were originally
+%D part of the figure inclusion macros. When \PDFTEX\ started
+%D to support \PDF\ inclusion, where some accompanying macros
+%D were put in \type{supp-pdf}, I considered it more suitable
+%D to give the \EPS\ macros their own module.
+
+\writestatus{loading}{Context Support Macros / PDF}
+
+%D \macros
+%D {dogetEPSboundingbox}
+%D
+%D The predecessors of the following macro's are derived from
+%D Thomas Rockicky's macro's. They are rewritten to a more
+%D compact form, made a bit more robust and also handle the
+%D \type{HiResBoundingBox} and \type{ExactBoundingBox} that
+%D are sometimes present.
+%D
+%D A bounding box has the form:
+%D
+%D \starttypen
+%D %%BoundingBox: llx lly urx ury
+%D \stoptypen
+%D
+%D Before we scan the file, we have to reset special
+%D characters and set some others. The percentage symbol also
+%D needs special treatment. When a bounding box is
+%D encountered, we keep on scanning until no more directives
+%D are found, i.e. a line is found that does not start with a
+%D percentage symbol. We also abort scanning after finding a
+%D high resolution bounding box.
+%D
+%D This method also works inside verbatim mode (like when we
+%D are typesetting sources and putting eps coded logos into
+%D a heading. Temporary restoring the \CATCODES\ is done in
+%D the calling routine.
+
+\unprotect
+
+\let\EPSllx\!!zeropoint \let\MPllx\EPSllx % just in case these
+\let\EPSlly\!!zeropoint \let\MPlly\EPSlly % are used while running
+\let\EPSurx\!!zeropoint \let\MPurx\EPSurx % in fast mode we set
+\let\EPSury\!!zeropoint \let\MPury\EPSury % them to 0pt.
+
+\def\dogetEPSboundingbox#1#2#3#4#5%
+ {\bgroup
+ \global\chardef\EPSfound=0
+ \global\chardef\EPScreator=0
+ \uncatcodespecials
+ \def\doprocessEPSline%
+ {\expandafter\checkEPSboundingbox\fileline:. \end}%
+ \doprocessfile\scratchread{#1}\doprocessEPSline
+ \egroup
+ \ifnum\EPSfound>0
+ \dimen0=1bp\relax
+ #2=\EPSllx\dimen0
+ #4=\EPSurx\dimen0
+ \advance#4 by -\EPSllx\dimen0
+ #3=\EPSlly\dimen0
+ #5=\EPSury\dimen0
+ \advance#5 by -\EPSlly\dimen0
+ \else
+ #2=\!!zeropoint
+ #3=\!!zeropoint
+ #4=\!!zeropoint
+ #5=\!!zeropoint
+ \fi
+ \global\let\MPllx\EPSllx \global\let\MPlly\EPSlly
+ \global\let\MPurx\EPSurx \global\let\MPury\EPSury}
+
+\bgroup
+\catcode`\%=\@@other
+\global\let\EPSpercenttag =%
+\gdef\EPSboundingboxtag {%BoundingBox}
+\gdef\EPShiresboundingboxtag{%HiResBoundingBox}
+\gdef\EPSexactboundingboxtag{%ExactBoundingBox}
+\gdef\EPScreatortag {%Creator}
+\gdef\EPSmetaposttag { MetaPost :. }
+\egroup
+
+\long\def\checkEPSboundingbox#1#2:#3\end%
+ {\ifx#1\EPSpercenttag
+ \def\!!stringa{#2}%
+ \ifx\!!stringa\EPScreatortag
+ \def\!!stringa{#3}%
+ \global\chardef\EPScreator=\ifx\!!stringa\EPSmetaposttag1 \else0 \fi
+ \else\ifx\!!stringa\EPSboundingboxtag
+ \getEPSboundingbox #3 . . . \end
+ \global\chardef\EPSfound=1
+ \else\ifx\!!stringa\EPShiresboundingboxtag
+ \getEPSboundingbox #3 . . . \end
+ \global\chardef\EPSfound=2
+ \dofinishfile
+ \else\ifx\!!stringa\EPSexactboundingboxtag
+ \getEPSboundingbox #3 . . . \end
+ \global\chardef\EPSfound=2
+ \dofinishfile
+ \fi\fi\fi\fi
+ \else\ifnum\EPSfound>0
+ \dofinishfile
+ \fi\fi}
+
+\def\getEPSboundingbox #1 #2 #3 #4 #5\end%
+ {\gdef\EPSllx{#1}%
+ \ifx\EPSllx\empty
+ \getEPSboundingbox #2 #3 #4 #5 .\end
+ \else
+ \gdef\EPSlly{#2}%
+ \gdef\EPSurx{#3}%
+ \gdef\EPSury{#4}%
+ \fi}
+
+\protect
+
+\endinput