summaryrefslogtreecommitdiff
path: root/tex/context/base/spec-tpd.tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/spec-tpd.tex')
-rw-r--r--tex/context/base/spec-tpd.tex68
1 files changed, 53 insertions, 15 deletions
diff --git a/tex/context/base/spec-tpd.tex b/tex/context/base/spec-tpd.tex
index 77a097cc7..3b6065ec9 100644
--- a/tex/context/base/spec-tpd.tex
+++ b/tex/context/base/spec-tpd.tex
@@ -61,6 +61,12 @@
\pdfimageresolution=300
+%D Another downward compatible hack:
+
+\ifx\pdflastximagepages\undefined
+ \newcount\pdflastximagepages \pdflastximagepages=1
+\fi
+
% %D Why are the Acrobat viewers so buggy? To prevent font cache
% %D mismatches, we say:
%
@@ -110,7 +116,7 @@
\appendtoks \let\defaultspecial\normalspecial \to \everyresetspecials
-\let\PDFcode=\pdfliteral
+\let\PDFcode\pdfliteral
%D \macros
%D {dosetuppaper}
@@ -151,8 +157,11 @@
%D The number of pages in (for instance an \PDF) insert
%D file, can be asked for using:
-\definespecial\dogetnofinsertpages#1% global !
- {\global\let#1\PDFimagenofpages}
+\definespecial\dogetnofinsertpages#1%
+ {\xdef\nofinsertpages{1}% global
+ \doifvalidpdfimagefileelse{#1}%
+ {\pdfximage{#1}\xdef\nofinsertpages{\the\pdflastximagepages}}
+ {}}
%D Currently we support \type{pdf} for \PDF\ files, \type{mps}
%D for \METAPOST\ graphics, \type{png} and \type{jpg} for
@@ -214,7 +223,7 @@
\doifnumberelse{\commalistelement}
{\ifcase\commalistelement\else
\edef\pdfimagepagenumber{page \commalistelement}%
- \message{(pdf image page \pdfimagepagenumber)}%
+ \message{(pdf image \pdfimagepagenumber)}%
\fi}
{}}
@@ -228,7 +237,7 @@
\pdfimagepagenumber
{#1}%
\xdef\PDFimagereference{\the\pdflastximage}%
- \xdef\PDFimagenofpages{\the\pdflastximagepages}%
+ \xdef\nofinsertpages{\the\pdflastximagepages}%
\pdfrefximage\pdflastximage}
{\framed[\c!breedte=#7sp,\c!hoogte=#8sp]{#1}}%
\egroup}
@@ -253,12 +262,14 @@
%D similar to figure inclusion. The next macro calls the
%D general \PDF\ one.
-\newcounter\currentmovie
+\definefileinsertion{tpd}{mov}{\doPDFinsertmov}
-\def\setcurrentmovie#1%
- {\doglobal\increment\currentmovie}
+%D \macros
+%D {doinsertsoundtrack}
+%D
+%D We use numbers instead of labels to keep track of sounds.
-\definefileinsertion{tpd}{mov}{\doPDFinsertmov}
+\definespecial\doinsertsoundtrack{\doPDFinsertsoundtrack}
%D \macros
%D {measureTPDfiguresizetrue}
@@ -305,7 +316,7 @@
\global\setbox\foundexternalfigure=\vbox
{\immediate\pdfximage \pdfimageattributes \pdfimagepagenumber{#2}%
\xdef\PDFimagereference{\the\pdflastximage}%
- \xdef\PDFimagenofpages{\the\pdflastximagepages}%
+ \xdef\nofinsertpages{\the\pdflastximagepages}%
\pdfrefximage\pdflastximage}%
#6=\wd\foundexternalfigure
#7=\ht\foundexternalfigure
@@ -717,6 +728,34 @@
\definespecial\doregistercalculationset{\doFDFregistercalculationset}
%D \macros
+%D {dosetposition, dosetpositionwdh}
+%D
+%D Opposite to its \DVI\ counterpart, the \PDFTEX\ backend
+%D can provide positional information directly. Since
+%D \CONTEXT\ only uses relative positions, the origin is of
+%D less importance.
+
+\def\doTPDsetposition#1#2#3%
+ {\bgroup
+ \edef\doTPDsetposition%
+ {\writeutilitycommand
+ {#1%
+ {#2}%
+ {\noexpand\realfolio}%
+ {\noexpand\number\pdflastxpos}%
+ {\noexpand\number\pdflastypos}%
+ #3}}%
+ \pdfsavepos
+ \doTPDsetposition
+ \egroup}
+
+\definespecial\dosetposition#1%
+ {\doTPDsetposition{\pospxy}{#1}{}}
+
+\definespecial\dosetpositionwhd#1#2#3#4%
+ {\doTPDsetposition{\pospxywhd}{#1}{{#2}{#3}{#4}}}
+
+%D \macros
%D {doPDFdestination}
%D
%D Finally we implement some low level macros to deal with
@@ -764,7 +803,8 @@
\xdef\lastPDFaction{<<#3>>}%
\or
\ifsharePDFactions
- \immediate\pdfobj{<<#3>>}\xdef\lastPDFaction{\the\pdflastobj\space0 R}%
+ \immediate\pdfobj{<<#3>>}%
+ \xdef\lastPDFaction{\the\pdflastobj\space0 R}%
\else
\xdef\lastPDFaction{<<#3>>}%
\fi
@@ -827,16 +867,14 @@
{\pdfcatalog}
\def\doPDFpageattribute#1%
- {\expanded{\global\pdfpageattr{\the\pdfpageattr#1}}}
+ {\expanded{\global\pdfpageattr{#1\the\pdfpageattr}}}
\def\doPDFpagesattribute#1%
- {\expanded{\global\pdfpagesattr{\the\pdfpagesattr#1}}}
+ {\expanded{\global\pdfpagesattr{#1\the\pdfpagesattr}}}
\def\doPDFresetattributes%
{\global\pdfpageattr{}}
-% \global\pdfpagesattr{}}
-
\appendtoks\doPDFresetattributes\to\everyaftershipout
%D \macros