summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/back-ini.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/back-ini.mkiv')
-rw-r--r--tex/context/base/mkiv/back-ini.mkiv116
1 files changed, 82 insertions, 34 deletions
diff --git a/tex/context/base/mkiv/back-ini.mkiv b/tex/context/base/mkiv/back-ini.mkiv
index e810ecde5..8729403f8 100644
--- a/tex/context/base/mkiv/back-ini.mkiv
+++ b/tex/context/base/mkiv/back-ini.mkiv
@@ -16,10 +16,23 @@
\writestatus{loading}{ConTeXt Backend Macros / Initialization}
+%D The exact page model depends on the backend so we just define some
+%D variables that are used. A helper at the \LUA\ end will synchronize
+%D with the internal variables. We store these in the format.
+
+% \newdimen\backendpageheight
+% \newdimen\backendpagewidth
+% \newdimen\backendinchoffset \backendinchoffset=1in
+
+%D Now we load the \LUA\ code:
+
\registerctxluafile{back-ini}{}
+\registerctxluafile{back-res}{}
-%D We currently have a curious mix between tex and lua backend
-%D handling but eventually most will move to lua.
+\doifelsefileexists{back-out.mkiv}{\loadmarkfile{back-out}}{}
+
+%D We currently have a curious mix between tex and lua backend handling but
+%D eventually most will move to \LUA.
\unprotect
@@ -27,54 +40,84 @@
\ifdefined\everylastbackendshipout \else \newtoks\everylastbackendshipout \fi
\ifdefined\everybackendlastinshipout \else \newtoks\everybackendlastinshipout \fi % e.g. finalize via latelua
-%D Right from the start \CONTEXT\ had a backend system based on
-%D runtime pluggable code. As most backend issues involved specials
-%D and since postprocessors had not that much in common, we ended up
-%D with a system where we could switch backend as well as output code
-%D for multiple backends at the same time.
+%D Right from the start \CONTEXT\ had a backend system based on runtime pluggable
+%D code. As most backend issues involved specials and since postprocessors had not
+%D that much in common, we ended up with a system where we could switch backend as
+%D well as output code for multiple backends at the same time.
%D
-%D Because \LUATEX\ has the backend built in, and since some backend
-%D issues have been moved to the frontend I decided to provide new
-%D backend code for \MKIV, starting with what was actually used.
+%D Because \LUATEX\ has the backend built in, and since some backend issues have
+%D been moved to the frontend I decided to provide new backend code for \MKIV,
+%D starting with what was actually used.
%D
-%D At this moment \DVI\ is no longer used for advanced document
-%D output and we therefore dropped support for this format. Future
-%D versions might support more backends again, but this has a low
-%D priority.
+%D At this moment \DVI\ is no longer used for advanced document output and we
+%D therefore dropped support for this format. Future versions might support more
+%D backends again, but this has a low priority.
%D
-%D Not everything here makes sense and the content of this file will
-%D definitely change (or even go away).
+%D Not everything here makes sense and the content of this file will definitely
+%D change (or even go away).
+
+% rotation
+
+\unexpanded\def\dostartrotation#1%
+ {\forcecolorhack
+ \clf_startrotation#1\relax} % todo: implement without Q q
+
+\unexpanded\def\dostoprotation
+ {\clf_stoprotation
+ \forcecolorhack}
+
+% scaling
+
+\unexpanded\def\dostartscaling#1#2%
+ {\forcecolorhack
+ \clf_startscaling rx #1 ry #2\relax}
-\let \dostartrotation \gobbleoneargument
-\let \dostoprotation \donothing
-\let \dostartscaling \gobbletwoarguments
-\let \dostopscaling \donothing
-\let \dostartmirroring \donothing
-\let \dostopmirroring \donothing
-\let \dotransformnextbox\gobblesixarguments % and pass last box
+\unexpanded\def\dostopscaling
+ {\clf_stopscaling
+ \forcecolorhack}
+
+% mirroring
+
+\unexpanded\def\dostartmirroring
+ {\clf_startmirroring}
+
+\unexpanded\def\dostopmirroring
+ {\clf_stopmirroring}
+
+% transform
+
+\unexpanded\def\dotransformnextbox#1#2#3#4#5#6%
+ {\dowithnextbox{\dodotransformnextbox{#1}{#2}{#3}{#4}{#5}{#6}}}
+
+\unexpanded\def\dodotransformnextbox#1#2#3#4#5#6%
+ {\hpack
+ {\kern #5\onebasepoint
+ \raise#6\onebasepoint
+ \hpack
+ {\clf_startmatrix rx #1 sx #2 sy #3 ry #4\relax
+ \box\nextbox
+ \clf_stopmatrix}}}
%D \macros
%D {back_ovalbox}
%D
-%D When we look at the implementation, this is a complicated
-%D one. There are seven arguments.
+%D When we look at the implementation, this is a complicated one. There are seven
+%D arguments.
%D
%D \starttyping
%D \back_ovalbox {w} {h} {d} {linewidth} {radius} {stroke} {fill} {variant}
%D \stoptyping
%D
-%D This command has to return a \type{\vbox} which can be used
-%D to lay over another one (with text). The radius is in
-%D degrees, the stroke and fill are~\type{1} (true) of~\type{0}
-%D (false).
+%D This command has to return a \type {\vbox} which can be used to lay over another
+%D one (with text). The radius is in degrees, the stroke and fill are~\type {1}
+%D (true) of~\type {0} (false).
\let\back_ovalbox \gobbleeightarguments
%D \macros
%D {dostartclipping,dostopclipping}
%D
-%D Clipping is implemented in such a way that an arbitrary code
-%D can be fed.
+%D Clipping is implemented in such a way that an arbitrary code can be fed.
%D
%D \starttyping
%D \dostartclipping {pathname} {width} {height}
@@ -87,9 +130,8 @@
%D \macros
%D {jobsuffix}
%D
-%D By default, \TEX\ produces \DVI\ files which can be
-%D converted to other filetypes. Sometimes it is handy to
-%D know what the target file will be. In other driver
+%D By default, \TEX\ produces \DVI\ files which can be converted to other filetypes.
+%D Sometimes it is handy to know what the target file will be. In other driver
%D modules we wil set \type {\jobsuffix} to \type {pdf}.
%D Backend configuration:
@@ -113,6 +155,12 @@
\clf_setrealspaces{\backendparameter\c!space}%
\to \everysetupbackend
+\appendtoks
+ \ifdefined\clf_resetmapfile
+ \clf_resetmapfile
+ \fi
+\to \everysetupbackend
+
%D For older styles:
\let\setupoutput\gobbleoneoptional