summaryrefslogtreecommitdiff
path: root/tex/context/base/page-com.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/page-com.mkiv')
-rw-r--r--tex/context/base/page-com.mkiv176
1 files changed, 57 insertions, 119 deletions
diff --git a/tex/context/base/page-com.mkiv b/tex/context/base/page-com.mkiv
index 61cb49e89..80012dd14 100644
--- a/tex/context/base/page-com.mkiv
+++ b/tex/context/base/page-com.mkiv
@@ -30,141 +30,79 @@
%D \stoppagecomment
%D \stoptyping
-\installcorenamespace{pagecomment}
-\installcorenamespace{pagecommentlocations}
-\installcorenamespace{pagecommentstates}
-
-\newdimen\d_page_comments_offset
-\newdimen\d_page_comments_page_width
-\newdimen\d_page_comments_page_height
-\newdimen\d_page_comments_width
-\newdimen\d_page_comments_height
-\newdimen\d_page_comments_distance
-
-\newconditional\c_page_comment_enabled
-
-\let\p_page_commands_location\v!none
-\let\p_page_commands_state \v!stop
-
-\installsetuponlycommandhandler \??pagecomment {pagecomment}
-
-\appendtoks
- \edef\p_page_commands_location{\directpagecommentparameter\c!location}%
- \edef\p_page_commands_state {\directpagecommentparameter\c!state}%
- \expandcheckedcsname\??pagecommentstates\p_page_commands_state\v!none
-\to \everysetuppagecomment
-
-\ifdefined\scrn_canvas_synchronize_simple
-
- \appendtoks
- \ifx\p_page_commands_state\v!start
- \scrn_canvas_synchronize_simple
- \else
- \scrn_canvas_synchronize_complex
- \fi
- \to \everyshipout
-
-\fi
-
-\setvalue{\??pagecommentstates\v!start}%
- {\d_page_comments_offset \directpagecommentparameter\c!offset \relax
- \d_page_comments_distance\directpagecommentparameter\c!distance\relax
- \d_page_comments_width \directpagecommentparameter\c!width \relax
- \d_page_comments_height \directpagecommentparameter\c!height \relax
- \expandcheckedcsname\??pagecommentlocations\p_page_commands_location\v!none
- \definepapersize[\v!pagecomment][\c!height=\d_page_comments_page_height,\c!width=\d_page_comments_page_width]%
- \setuppapersize[\papersize][\v!pagecomment]%
- \setupbackgrounds[\v!paper][\c!background=\v!pagecomment]} % maybe append if already set
-
-\setvalue{\??pagecommentstates\v!stop}%
- {\setupbackgrounds[\v!paper][\c!background=]}
-
-\setvalue{\??pagecommentstates\v!none}%
- {}
-
-\setvalue{\??pagecommentlocations\v!bottom}%
- {\setuplayout[\c!location=]%
- \setuppapersize[\c!top=\vskip\d_page_comments_offset,\c!bottom=\vss,\c!left=\hskip\d_page_comments_offset,\c!right=]%
- \d_page_comments_page_height\dimexpr\paperheight+2\d_page_comments_offset+\d_page_comments_distance+\d_page_comments_height\relax
- \d_page_comments_page_width \dimexpr\paperwidth +2\d_page_comments_offset\relax
- \defineoverlay[\v!pagecomment][\page_comments_top_bottom]}
-
-\setvalue{\??pagecommentlocations\v!top}%
- {\setuplayout[\c!location=]%
- \setuppapersize[\c!top=\vss,\c!bottom=\vskip\d_page_comments_offset,\c!left=\hskip\d_page_comments_offset,\c!right=]%
- \d_page_comments_page_height\dimexpr\paperheight+2\d_page_comments_offset+\d_page_comments_distance+\d_page_comments_height\relax
- \d_page_comments_page_width \dimexpr\paperwidth +2\d_page_comments_offset\relax
- \defineoverlay[\v!pagecomment][\page_comments_top_bottom]}
-
-\setvalue{\??pagecommentlocations\v!left}%
- {\setuplayout[\c!location=]%
- \setuppapersize[\c!top=\vskip\d_page_comments_offset,\c!bottom=,\c!left=\hss,\c!right=\hskip\d_page_comments_offset]%
- \d_page_comments_page_height\dimexpr\paperheight+2\d_page_comments_offset\relax
- \d_page_comments_page_width \dimexpr\paperwidth +2\d_page_comments_offset+\d_page_comments_distance+\d_page_comments_width\relax
- \defineoverlay[\v!pagecomment][\page_comments_left_right]}
-
-\setvalue{\??pagecommentlocations\v!right}%
- {\setuplayout[\c!location=]%
- \setuppapersize[\c!top=\vskip\d_page_comments_offset,\c!bottom=,\c!left=\hskip\d_page_comments_offset,\c!right =\hss]%
- \d_page_comments_page_height\dimexpr\paperheight+2\d_page_comments_offset\relax
- \d_page_comments_page_width \dimexpr\paperwidth +2\d_page_comments_offset+\d_page_comments_distance+\d_page_comments_width\relax
- \defineoverlay[\v!pagecomment][\page_comments_left_right]}
-
-\setvalue{\??pagecommentlocations\v!none}%
- {}% \setuppapersize[\c!bottom=,\c!top=,\c!left=,\c!right=]}
-
-\unexpanded\def\page_comments_top_bottom
+\unexpanded\def\setuppagecomment
+ {\dosingleempty\dosetuppagecomment}
+
+\def\dosetuppagecomment[#1]%
+ {\getparameters[\??pc][#1]%
+ \doifelse\@@pcstate\v!start
+ {\doifinsetelse\@@pclocation{\v!bottom,\v!top}
+ {\setuppapersize[\c!left=\hskip\@@pcoffset]%
+ \edef\@@pcpaperheight{\the\dimexpr\paperheight+\@@pcoffset+\@@pcoffset+\@@pcdistance+\@@pcheight}%
+ \edef\@@pcpaperwidth {\the\dimexpr\paperwidth +\@@pcoffset+\@@pcoffset}%
+ \defineoverlay[\v!pagecomment][\placepagecommentTB]}
+ {\setuppapersize[\c!top=\vskip\@@pcoffset]%
+ \edef\@@pcpaperheight{\the\dimexpr\paperheight+\@@pcoffset+\@@pcoffset}%
+ \edef\@@pcpaperwidth {\the\dimexpr\paperwidth +\@@pcoffset+\@@pcoffset+\@@pcdistance+\@@pcwidth}%
+ \defineoverlay[\v!pagecomment][\placepagecommentLR]}%
+ \processaction
+ [\@@pclocation]
+ [ \v!bottom=>{\setuplayout[\c!location=]\setuppapersize[\c!bottom=\vss,\c!top =\vskip\@@pcoffset]},
+ \v!top=>{\setuplayout[\c!location=]\setuppapersize[\c!top =\vss,\c!bottom=\vskip\@@pcoffset]},
+ \v!left=>{\setuplayout[\c!location=]\setuppapersize[\c!left =\hss,\c!right =\hskip\@@pcoffset]},
+ \v!right=>{\setuplayout[\c!location=]\setuppapersize[\c!right =\hss,\c!left =\hskip\@@pcoffset]}]%
+ \definepapersize
+ [\v!pagecomment]
+ [\c!height=\@@pcpaperheight,
+ \c!width=\@@pcpaperwidth]%
+ \let\@@pcprintpapersize\printpapersize
+ \setuppapersize[\papersize][\v!pagecomment]%
+ \setupbackgrounds[\v!paper][\c!background=\v!pagecomment]}% todo append if already set
+ {\doif\@@pcstate\v!stop % else initialization invokes backgrounds
+ {% this should be tested first
+ % \normalexpanded{\noexpand\setuppapersize[\papersize][\@@pcprintpapersize]}%
+ \setupbackgrounds[\v!paper][\c!background=]}}}
+
+\def\@@pcprintpapersize{\printpapersize}
+
+\unexpanded\def\placepagecommentTB
{\vbox to \printpaperheight
{%\forgetall
- \hsize\printpaperwidth\relax
- \ifx\p_page_commands_location\v!bottom
- \vskip\dimexpr\paperheight+\d_page_comments_distance+\d_page_comments_offset\relax
- \else
- \vskip\d_page_comments_offset
- \vss
- \fi
- \hskip\d_page_comments_offset
- \vbox to \d_page_comments_height
+ \hsize\printpaperwidth
+ \vskip\@@pcoffset
+ \doifelse\@@pclocation\v!bottom{\vskip\dimexpr\paperheight+\@@pcdistance\relax}\vss
+ \hskip\@@pcoffset
+ \vbox to \@@pcheight
{%\forgetall
\hsize\paperwidth
- \ifconditional\c_page_comment_enabled
+ \ifpagecomment
\getbuffer[\v!pagecomment]%
- \global\setfalse\c_page_comment_enabled
+ \global\pagecommentfalse
\fi}%
\hfill
- \ifx\p_page_commands_location\v!bottom
- \vss
- \vskip\d_page_comments_offset
- \else
- \vskip\dimexpr\paperheight+\d_page_comments_distance+\d_page_comments_offset\relax
- \fi}}
+ \doifelse\@@pclocation\v!bottom\vss{\vskip\dimexpr\paperheight+\@@pcdistance\relax}%
+ \vskip\@@pcoffset}}
-\unexpanded\def\page_comments_left_right
+\unexpanded\def\placepagecommentLR
{\hbox to \printpaperwidth
- {\ifx\p_page_commands_location\v!right
- \hskip\dimexpr\paperwidth+\d_page_comments_distance+\d_page_comments_offset\relax
- \else
- \hskip\d_page_comments_offset
- \hss
- \fi
+ {\hskip\@@pcoffset
+ \doifelse\@@pclocation\v!right{\hskip\paperwidth\hskip\@@pcdistance}\hss
\vbox to \printpaperheight
{%\forgetall
- \vskip\d_page_comments_offset
- \hsize\d_page_comments_width
- \ifconditional\c_page_comment_enabled
+ \vskip\@@pcoffset
+ \hsize\@@pcwidth
+ \ifpagecomment
\getbuffer[\v!pagecomment]%
- \global\setfalse\c_page_comment_enabled
+ \global\pagecommentfalse
\fi
\vss}%
- \ifx\p_page_commands_location\v!right
- \hss
- \hskip\d_page_comments_offset
- \else
- \hskip\dimexpr\paperwidth+\d_page_comments_distance+\d_page_comments_offset\relax
- \fi}}
+ \doifelse\@@pclocation\v!right\hss{\hskip\paperwidth\hskip\@@pcdistance}%
+ \hskip\@@pcoffset}}
+
+\newif\ifpagecomment
\setvalue{\e!start\v!pagecomment}%
- {\global\settrue\c_page_comment_enabled
+ {\global\pagecommenttrue
\grabbufferdatadirect\v!pagecomment{\e!start\v!pagecomment}{\e!stop\v!pagecomment}}
\setuppagecomment