summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/anch-pgr.mkxl
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/anch-pgr.mkxl')
-rw-r--r--tex/context/base/mkiv/anch-pgr.mkxl445
1 files changed, 0 insertions, 445 deletions
diff --git a/tex/context/base/mkiv/anch-pgr.mkxl b/tex/context/base/mkiv/anch-pgr.mkxl
deleted file mode 100644
index 3439fd5a2..000000000
--- a/tex/context/base/mkiv/anch-pgr.mkxl
+++ /dev/null
@@ -1,445 +0,0 @@
-%D \module
-%D [ file=anch-pgr, % split off core-pos
-%D version=1999.08.01,
-%D title=\CONTEXT\ Anchoring Macros,
-%D subtitle=Positioning Graphics,
-%D author=Hans Hagen,
-%D date=\currentdate,
-%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
-%C
-%C This module is part of the \CONTEXT\ macro||package and is
-%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
-%C details.
-
-\writestatus{loading}{ConTeXt Anchoring Macros / Grapics}
-
-%D Before we come to graphics support, we have to make sure of the reference point
-%D on the page. The next macros do so and are hooked into the page building routine.
-
-\registerctxluafile{anch-pgr}{}
-
-\unprotect
-
-%D A few more low level macros take care of defining and recalling actions. Actions
-%D are saved globally! The lists can become quite long because there can be lots of
-%D parameters passed on so we clean up the list afterwards.
-
-\newtoks\everypositionaction
-\newtoks\everyinsertpositionaction
-\newtoks\everycleanpositionaction
-
-\installcorenamespace{positionaction}
-\installcorenamespace{positioncleanup}
-
-\protected\def\anch_positions_set_action#1%
- {\expandafter\gdef\csname\??positionaction#1\endcsname} % nicely gobbles spaces
-
-\permanent\protected\def\doifpositionaction#1%
- {\ifcsname\??positionaction#1\endcsname
- \expandafter\firstofoneargument
- \else
- \expandafter\gobbleoneargument
- \fi}
-
-\permanent\protected\def\doifelsepositionaction#1%
- {\ifcsname\??positionaction#1\endcsname
- \expandafter\firstoftwoarguments
- \else
- \expandafter\secondoftwoarguments
- \fi}
-
-\aliased\let\doifpositionactionelse\doifelsepositionaction
-
-\protected\def\dopositionaction#1%
- {\edef\currentpositionaction{#1}%
- \ifcsname\??positionaction\currentpositionaction\endcsname
- \anch_positions_action_indeed
- \fi}
-
-\def\anch_positions_action_indeed
- {\doifelseposition\currentpositionaction
- \anch_positions_action_indeed_yes
- \anch_positions_action_indeed_nop}
-
-\def\anch_positions_action_indeed_nop
- {\anch_positions_trace_action_nop}
-
-\def\anch_positions_action_indeed_yes % we need a way to figure out if we have actions
- {\begingroup
- \setbox\scratchbox\hbox % \hpack
- {\anch_positions_trace_action_yes
- \the\everyinsertpositionaction
- \the\everypositionaction
- \begincsname\??positionaction\currentpositionaction\endcsname
- \anch_positions_cleanup_action}%
- \smashedbox\scratchbox % smashing is really needed else we get problems with too big overlays
- \endgroup}
-
-\protected\def\anch_positions_trace_action_nop_indeed
- {\anch_positions_trace\clap\darkred{<\currentpositionaction>}}
-
-\protected\def\anch_positions_trace_action_yes_indeed
- {\anch_positions_trace\clap\darkgreen{<\currentpositionaction>}}
-
-\let\anch_positions_trace_action_nop\relax
-\let\anch_positions_trace_action_yes\relax
-
-\appendtoks
- \let\anch_positions_trace_action_nop\anch_positions_trace_action_nop_indeed
- \let\anch_positions_trace_action_yes\anch_positions_trace_action_yes_indeed
-\to \t_anch_positions_tracers
-
-%D Here the complication has to do with collecting actions for later execution. This
-%D collection is especially handy when we want to move actions to a specific layer.
-%D Such series of actions are stored in a macro that is cleaned up after each
-%D invocation.
-
-\def\anch_positions_cleanup_action % not in trialtypesetting
- {\ifcsname\??positioncleanup\currentpositionaction\endcsname
- \the\everycleanpositionaction
- \setxvalue{\??positioncleanup\currentpositionaction}{\csname\??positioncleanup\currentpositionaction\endcsname}%
- \fi}
-
-\permanent\protected\def\handlepositionaction#1\with#2\on#3% ugly, will change
- {\begingroup
- \edef\currentpositionanchor
- {\ifempty\currentpositionoverlay#3\else\currentpositionoverlay::\MPanchoridentifier\fi}%
- \normalexpanded{\anch_positions_set_action{\currentpositionanchor}{\noexpand\getvalue{\??positioncleanup\currentpositionanchor}}}%
- \let#1\relax
- \ifcsname\??positioncleanup\currentpositionanchor\endcsname
- \setxvalue{\??positioncleanup\currentpositionanchor}%
- {\csname\??positioncleanup\currentpositionanchor\endcsname#1#2}%
- \else
- \setxvalue{\??positioncleanup\currentpositionanchor}%
- {#1#2}%
- \fi
- \endgroup}
-
-%D The first version of this module implemented head and tail anchors. Currently we
-%D stick to just one anchor and derive the head and tail anchors from this one. We
-%D set these anchors before and after each page.
-
-\newdimen\c_anch_page_width
-\newdimen\c_anch_page_height
-
-\protected\def\anch_positions_register_page#1% this one is flushed first ! ... can't we avoid this one
- {\ifpositioning\ifcase\realpageno\or
- \ifdim\c_anch_page_height=\paperheight
- \ifdim\c_anch_page_width=\paperwidth
- % no change
- \else
- \c_anch_page_width \paperwidth
- \c_anch_page_height\paperheight
- \anch_make_page_box{#1}% \ifvbox#1\setbox#1\hpack{\box#1}\fi
- \fi
- \else
- \c_anch_page_width \paperwidth
- \c_anch_page_height\paperheight
- \anch_make_page_box{#1}% \ifvbox#1\setbox#1\hpack{\box#1}\fi
- \fi
- \fi\fi}
-
-\protected\def\anch_positions_place_anchors
- {\ifpositioning
- \anch_positions_place_anchors_yes
- \else
- \anch_positions_place_anchors_nop
- \fi}
-
-\def\anch_positions_place_anchors_yes % todo : depth pagebox
- {\begingroup
- \setbox\scratchbox\emptyhbox
- \ht\scratchbox\textheight
- \dp\scratchbox\zeropoint % redundant
- \wd\scratchbox\makeupwidth
- \anch_mark_text_box\scratchbox
- \box\scratchbox
- \endgroup}
-
-\def\anch_positions_place_anchors_nop
- {\vkern\textheight}
-
-%D \macros
-%D {positionoverlay,startpositionoverlay}
-%D
-%D As long as we're dealing with graphics it makes much sense to use the available
-%D overlay mechanism. For this purpose, we define some dedicated overlay extensions.
-%D
-%D \startbuffer[sample]
-%D \defineoverlay [sample] [\positionoverlay{sample}]
-%D
-%D \startpositionoverlay{sample}
-%D \setMPpositiongraphic{A-1}{connectcenter}{from=A-1,to=A-2}
-%D \stoppositionoverlay
-%D \stopbuffer
-%D
-%D \typebuffer[sample]
-%D
-%D \startbuffer[graphic]
-%D \startMPpositiongraphic{connectcenter}
-%D path pa, pb ; pair ca, cb ;
-%D initialize_box(\MPpos{\MPvar{from}}) ; pa := pxy ; ca := cxy ;
-%D initialize_box(\MPpos{\MPvar{to}}) ; pb := pxy ; cb := cxy ;
-%D draw pa withcolor red ;
-%D draw pb withcolor red ;
-%D draw ca -- cb withcolor blue ;
-%D anchor_box(\MPanchor{\MPvar{from}}) ;
-%D \stopMPpositiongraphic
-%D \stopbuffer
-%D
-%D We can best demonstrate this in an example, say:
-%D
-%D \startbuffer[text]
-%D \framed
-%D [backgroundachtergrond=sample,align=middle,width=7cm]
-%D {We want to connect \hpos {A-1} {this} word with its
-%D grammatical cousin \hpos {A-2} {that}.}
-%D \stopbuffer
-%D
-%D \typebuffer[text]
-%D
-%D \startlinecorrection
-%D %\getbuffer[graphic,sample,text]
-%D \stoplinecorrection
-%D
-%D The graphic is defined in the following way, using some macros defined in an
-%D auxiliary \METAPOST\ module that is preloaded.
-%D
-%D \typebuffer[graphic]
-
-\def\MPanchoridentifier{mpa} % {mp-anchor}
-
-%D The rest of the definitions concerning such overlays may look complicated,
-
-\let\currentpositionoverlay\empty
-
-%D Position actions are automatically executed when a position is set.
-
-\def\textbackgroundoverlay#1{\v!text#1}
-\def\MPanchornumber {\the\realpageno}
-
-\permanent\protected\def\positionoverlay % the test prevents too many redundant positions
- {\ifpositioning % in (not used) text* position layers
- \expandafter\anch_positions_overlay_indeed
- \else % also \iftrialtypesetting test here?
- \expandafter\gobbleoneargument
- \fi}
-
-\def\anch_positions_overlay_indeed#1%
- {\begingroup
- \edef\currentpositionoverlay{#1}%
- \ifcsname\??positionaction\currentpositionoverlay::\MPanchoridentifier\endcsname
- \anch_positions_overlay_compose
- \fi
- \endgroup}
-
-\def\MPoverlayanchor#1{\MPpos\MPanchorid}
-
-\def\anch_positions_overlay_compose
- {\vpack to \d_overlay_height
- {%\writestatus{!!!}{\currentpositionoverlay/\MPanchoridentifier/\MPanchornumber}%
- \edef\MPanchorid{\currentpositionoverlay::\MPanchoridentifier:\MPanchornumber}% realpageno
- % \edef\MPanchor##1{\MPpos\MPanchorid}%
- \let\MPanchor\MPoverlayanchor % no need to fetch it already, seldom used
- \the\everyinsertpositionaction
- \copyposition{\currentpositionoverlay::\MPanchoridentifier}\MPanchorid
- \setbox\scratchbox\hbox to \d_overlay_width % \hpack
- {\dopositionaction{\currentpositionoverlay::\MPanchoridentifier}\hss}%
- \ht\scratchbox\d_overlay_height
- \dp\scratchbox\zeropoint
- \anch_mark_tagged_box\scratchbox\MPanchorid % needs an hbox
- \box\scratchbox
- \vfill}}
-
-\permanent\protected\def\positionregionoverlay % shares regions
- {\ifpositioning
- \expandafter\anch_positions_region_overlay_indeed
- \else % also \iftrialtypesetting test here?
- \expandafter\gobbletwoarguments
- \fi}
-
-\let\currentpositionregion\empty
-
-\def\anch_positions_region_overlay_indeed#1#2%
- {\begingroup
- \edef\currentpositionregion {#1}%
- \edef\currentpositionoverlay{#2}%
- \ifcsname\??positionaction\currentpositionoverlay::\MPanchoridentifier\endcsname
- \anch_positions_region_overlay_compose
- \fi
- \endgroup}
-
-\def\anch_positions_region_overlay_compose
- {\vpack to \d_overlay_height
- {\let\MPanchorid\currentpositionregion
- \let\MPanchor\MPoverlayanchor % no need to fetch it already, seldom used
- \the\everyinsertpositionaction
- \copyposition{\currentpositionoverlay::\MPanchoridentifier}\MPanchorid
- \setbox\scratchbox\hbox to \d_overlay_width % \hpack
- {\dopositionaction{\currentpositionoverlay::\MPanchoridentifier}\hss}%
- \ht\scratchbox\d_overlay_height
- \dp\scratchbox\zeropoint
- \box\scratchbox
- \vfill}}
-
-% \let\anch_positions_overlay_nop\gobbleoneargument
-
-\permanent\protected\def\startpositionoverlay
- {\iftrialtypesetting
- \expandafter\anch_positions_overlay_start_nop
- \else
- \expandafter\anch_positions_overlay_start_yes
- \fi}
-
-\def\anch_positions_overlay_start_nop#1\stoppositionoverlay
- {}
-
-\ifdefined\checkpositionoverlays \else \let\checkpositionoverlays\relax \fi
-
-\let\currentpositionoverlay\empty
-
-\def\anch_positions_overlay_start_yes#1%
- {\checkpositionoverlays
- \edef\currentpositionoverlay{#1}}
-
-\permanent\protected\def\stoppositionoverlay
- {\let\currentpositionoverlay\empty}
-
-%D A position graphic is a normal (non||reused) \METAPOST\ graphic, used
-%D immediately, with zero dimensions, so that a sequence of them does not harm.
-
-\installcorenamespace{positiongraphic}
-\installcorenamespace{positionmethod}
-%installcorenamespace{graphicvariable}
-
-\newbox\b_anch_positions_graphic
-
-\permanent\tolerant\protected\def\startMPpositiongraphic#=#*#=#:#3\stopMPpositiongraphic % tag list mpcode
- {\setgvalue{\??positiongraphic#1}{\anch_positions_meta_graphic_use{#1}{#2}{#3}}}
-
-\aliased\let\stopMPpositiongraphic\relax
-
-\def\anch_positions_meta_graphic_prepare
- {\ifcsname\??graphicvariable\currentmpvariableclass:self\endcsname \else
- \letvalue{\??graphicvariable\currentmpvariableclass:self}\currentposition
- \fi
- \ifcsname\??graphicvariable\currentmpvariableclass:from\endcsname \else
- \letvalue{\??graphicvariable\currentmpvariableclass:from}\currentposition
- \fi}
-
-\def\anch_positions_meta_graphic_use#1#2#3%
- {\begingroup
- \meta_prepare_variables{#2}%
- \anch_positions_meta_graphic_prepare
- \startMPcode#3\stopMPcode
- \endgroup}
-
-\permanent\tolerant\protected\def\MPpositiongraphic#=#*#=%
- {\ifcsname\??positionmethod#1\endcsname % method
- \expandafter\anch_positions_meta_graphic_direct_method
- \orelse\ifcsname\??positiongraphic#1\endcsname
- \expandafter\anch_positions_meta_graphic_direct_normal
- \else
- \expandafter\gobbletwoarguments
- \fi{#1}{#2}}
-
-\def\anch_positions_meta_graphic_direct_method{\anch_positions_meta_graphic_direct\??positionmethod }
-\def\anch_positions_meta_graphic_direct_normal{\anch_positions_meta_graphic_direct\??positiongraphic}
-
-\def\anch_positions_meta_graphic_direct#1#2#3% what tag setups
- {\begingroup
- \setupMPvariables[#2][#3]%
- \edef\currentmpvariableclass{#2}%
- \anch_positions_meta_graphic_prepare
- \obeyMPboxorigin % do we also set the size ? when needed this must be done in mp ... might change
- \enforced\def\MPpositiongraphic{\anch_positions_meta_graphic_nested{#3}}% takes two extra arguments
- \setbox\b_anch_positions_graphic\hbox % \hpack
- {\ignorespaces\begincsname#1#2\endcsname\removelastspace}%
- \smashbox\b_anch_positions_graphic
- \box\b_anch_positions_graphic
- \endgroup}
-
-\def\anch_positions_meta_graphic_nested#1#2#3% nesting used in prikkels / pascal (might go away)
- {\begingroup
- \setupMPvariables[#2][#1,#3]%
- \edef\currentmpvariableclass{#2}%
- \anch_positions_meta_graphic_prepare
- \begincsname\??positiongraphic#2\endcsname
- \endgroup}%
-
-\permanent\def\startMPpositionmethod#1#2\stopMPpositionmethod
- {\setgvalue{\??positionmethod#1}{#2}} % todo: var list here
-
-\aliased\let\stopMPpositionmethod\relax
-
-%D Simple one position graphics.
-
-\permanent\tolerant\protected\def\setMPpositiongraphic#=#*#=#*#=%
- {\ifempty\currentpositionoverlay
- \anch_positions_set_action{#1}{\MPpositiongraphic{#2}{#3}}%
- \else % silly can be one
- \anch_positions_meta_graphic_handle{#1}{#2}{#3}%
- \fi}
-
-\def\anch_positions_meta_graphic_handle#1#2#3% combine with boxes
- {\handlepositionaction\anch_positions_meta_graphic_handle_indeed\with{#1}{#2}{#3}\on{#2}}
-
-\def\anch_positions_meta_graphic_insert#1#2#3% pos tag setups
- {\ifnum\MPp{#1}=\realpageno\relax % extra saveguard
- \def\currentposition{#1}\MPpositiongraphic{#2}{#3}%
- \fi}
-
-\let\anch_positions_meta_graphic_handle_indeed\relax
-
-\appendtoks
- \let\anch_positions_meta_graphic_handle_indeed\anch_positions_meta_graphic_insert
-\to \everyinsertpositionaction
-
-\def\anch_positions_meta_graphic_cleanup#1#2#3% pos tag setups
- {\ifnum\MPp{#1}<\realpageno \else
- \noexpand\anch_positions_meta_graphic_handle_indeed{#1}{#2}{#3}%
- \fi}
-
-\appendtoks
- \let\anch_positions_meta_graphic_handle_indeed\anch_positions_meta_graphic_cleanup
-\to \everycleanpositionaction
-
-%D Graphics that span two positions (beware, does not cross pages).
-
-\permanent\tolerant\protected\def\setMPpositiongraphicrange#=#*#=#*#=#*#=%
- {\ifempty\currentpositionoverlay
- \anch_positions_set_action{#1}{\MPpositiongraphic{#3}{#4}}%
- \else
- \anch_positions_meta_graphic_handle_range{#1}{#2}{#3}{#4}%
- \fi}
-
-\def\anch_positions_meta_graphic_handle_range#1#2#3#4%
- {\handlepositionaction\anch_positions_meta_graphic_handle_range_indeed\with{#1}{#2}{#3}{#4}\on{#2}}
-
-\def\anch_positions_meta_graphic_insert_range#1#2#3#4% pos pos tag setups
- {\clf_doifelserangeonpage{#1}{#2}\realpageno
- {\def\currentposition{#1}%
- \MPpositiongraphic{#3}{#4}}%
- {}}
-
-\appendtoks
- \let\anch_positions_meta_graphic_handle_range_indeed\anch_positions_meta_graphic_insert_range
-\to \everyinsertpositionaction
-
-\def\anch_positions_meta_graphic_cleanup_range#1#2#3#4% pos tag setups
- {\ifnum\MPp{#2}<\realpageno \else
- \noexpand \anch_positions_meta_graphic_handle_range_indeed{#1}{#2}{#3}{#4}%
- \fi}
-
-\appendtoks
- \let\anch_positions_meta_graphic_handle_range_indeed\anch_positions_meta_graphic_cleanup_range
-\to \everycleanpositionaction
-
-\let\anch_positions_meta_graphic_handle_range_indeed\gobblefourarguments
-
-% Helpers:
-
-\permanent\def\MPgetposboxes #1#2{\clf_fetchposboxes{#1}{#2}\realpageno}
-\permanent\def\MPgetmultipars#1#2{\clf_fetchmultipar{#1}{#2}\realpageno}
-
-\protect \endinput