%D \module %D [ file=scrn-pag, %D version=1998.01.15, %D title=\CONTEXT\ Screen Macros, %D subtitle=Pages, % moved code %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. % pagecomments will be done differently \writestatus{loading}{ConTeXt Screen Macros / Pages} \registerctxluafile{scrn-pag}{autosuffix} \unprotect \installcorenamespace{interactionscreen} \installparameterhandler \??interactionscreen {interactionscreen} \installsetuphandler \??interactionscreen {interactionscreen} \newdimension\canvaswidth \newdimension\canvasheight \newdimension\canvasbackoffset \newdimension\canvastopoffset \newdimension\canvasmaxwidth \newdimension\canvasmaxheight \newdimension\canvascropoffset \newdimension\canvastrimoffset \newdimension\canvasbleedoffset \newdimension\canvasartoffset \mutable\lettonothing\currentinteractionscreendelay \mutable\lettonothing\currentinteractionscreenheight \mutable\lettonothing\currentinteractionscreenwidth \newconditional\c_scrn_canvas_tight_page \def\scrn_canvas_calculate {\begingroup \edef\currentinteractionscreenwidth {\interactionscreenparameter\c!width }% \edef\currentinteractionscreenheight{\interactionscreenparameter\c!height}% \canvasbackoffset\backspace \canvastopoffset\topspace \donetrue \ifx\currentinteractionscreenwidth\v!max \global\canvaswidth\printpaperwidth \orelse\ifx\currentinteractionscreenwidth\v!fit \donefalse \global\canvaswidth{% \leftcombitotal +\makeupwidth +\rightcombitotal +2*(% (\interactionscreenparameter\c!backspace)% + (\interactionscreenparameter\c!horoffset)% )% }% \orelse\ifx\currentinteractionscreenwidth\v!tight \donefalse \ifdim\backspace>\canvaswidth \ifdim\backspace>\zeropoint\relax \global\advanceby\canvasbackoffset -\canvaswidth \fi \fi \global\advanceby\canvaswidth{% \makeupwidth +\rightcombitotal +2*(% (\interactionscreenparameter\c!backspace)% +(\interactionscreenparameter\c!horoffset)% )% }% \else \donefalse \global\canvaswidth\currentinteractionscreenwidth \fi \ifx\currentinteractionscreenheight\v!max \global\canvasheight\printpaperheight \orelse\ifx\currentinteractionscreenheight\v!fit \donefalse \global\canvasheight{% \topheight +\topdistance +\makeupheight +\bottomdistance +\bottomheight +2*(% (\interactionscreenparameter\c!topspace)% +(\interactionscreenparameter\c!veroffset)% )% }% \orelse\ifx\currentinteractionscreenheight\v!tight \donefalse \global\canvasheight{\topheight+\topdistance}% \ifdim\topspace>\canvasheight \ifdim\topspace>\zeropoint\relax \global\advanceby\canvastopoffset -\canvasheight \fi \fi \global\advanceby\canvasheight{% \makeupheight +\bottomdistance +\bottomheight +2*(% (\interactionscreenparameter\c!topspace)% +(\interactionscreenparameter\c!veroffset)% )% }% \else \donefalse \global\canvasheight\currentinteractionscreenheight \fi \ifconditional\c_page_layouts_location_is_set \global\c_scrn_canvas_tight_page\conditionalfalse \fi \ifconditional\c_scrn_canvas_tight_page \global\canvasmaxwidth \paperwidth \global\canvasmaxheight\paperheight \else \global\canvasmaxwidth \printpaperwidth \global\canvasmaxheight\printpaperheight \fi % new: \ifdone \global\canvascropoffset \layoutcropoffset \global\canvastrimoffset \layouttrimoffset \global\canvasbleedoffset\layoutbleedoffset \global\canvasartoffset \layoutartoffset \else \global\canvascropoffset \zeropoint \global\canvastrimoffset \zeropoint \global\canvasbleedoffset\zeropoint \global\canvasartoffset \zeropoint \fi \endgroup} \newdimension\layoutcropoffset \newdimension\layouttrimoffset \newdimension\layoutbleedoffset \newdimension\layoutartoffset \appendtoks \edef\p_cropoffset{\layoutparameter\c!cropoffset}% \ifx\p_cropoffset\v!auto \ifconditional\c_page_layouts_location_is_middle \scratchheight{(\printpaperheight-\paperheight)/2}% \scratchwidth {(\printpaperwidth -\paperwidth )/2}% \layoutcropoffset \ifdim\scratchheight>\scratchwidth\scratchheight\else\scratchwidth\fi \layouttrimoffset {\layoutparameter\c!trimoffset}% \layoutbleedoffset{\layoutparameter\c!bleedoffset}% \layoutartoffset {\layoutparameter\c!artoffset}% \else \writestatus\m!system{auto crop etc only supported when location=middle}% \layoutcropoffset \zeropoint \layouttrimoffset \zeropoint \layoutbleedoffset\zeropoint \layoutartoffset \zeropoint \fi \else \layoutcropoffset {\layoutparameter\c!cropoffset}% \layouttrimoffset {\layoutparameter\c!trimoffset}% \layoutbleedoffset{\layoutparameter\c!bleedoffset}% \layoutartoffset {\layoutparameter\c!artoffset}% \fi \relax \to \everysetuplayout \setuplayout [\c!cropoffset=\zeropoint, \c!trimoffset=\zeropoint, \c!bleedoffset=\zeropoint, \c!artoffset=\zeropoint] % test the next when something is changed here: % % \setuppapersize[A5][A3] \showframe % % % \setuplayout[location=middle] \setupinteractionscreen[option=fit] % % \setuplayout[location=middle] \setupinteractionscreen[option=auto] % % \setupinteractionscreen[option=fit] % % \setupinteractionscreen[option=auto] % % \starttext \input ward \stoptext \let\scrn_canvas_synchronize_simple \relax \let\scrn_canvas_synchronize_complex\relax \appendtoks \glet\scrn_canvas_synchronize_simple \scrn_canvas_synchronize_simple_indeed \glet\scrn_canvas_synchronize_complex\scrn_canvas_synchronize_complex_indeed \to \everysetuplayout \appendtoks \glet\scrn_canvas_synchronize_simple \scrn_canvas_synchronize_simple_indeed \glet\scrn_canvas_synchronize_complex\scrn_canvas_synchronize_complex_indeed \to \everysetuplayouttarget \def\scrn_canvas_synchronize_common { mode {\interactionscreenparameter\c!option}% singlesided \ifsinglesided true\else false\fi\relaxedspace doublesided \ifdoublesided true\else false\fi\relaxedspace copies {\interactionscreenparameter\c!copies}% print {\interactionscreenparameter\c!print}% } \appendtoks \lettonothing\scrn_canvas_synchronize_common \to \everyaftershipout \def\scrn_canvas_synchronize_only {\clf_setupcanvas paperwidth \printpaperwidth paperheight \printpaperheight \scrn_canvas_synchronize_common \relax} \def\scrn_canvas_synchronize_set#width#height% {\clf_setupcanvas paperwidth {#width}% paperheight {#height}% \relax} \let\scrn_canvas_synchronize_reset\scrn_canvas_synchronize_only \def\scrn_canvas_synchronize_simple_indeed {\scrn_canvas_synchronize_only %\glet\scrn_canvas_synchronize_simple \relax \glet\scrn_canvas_synchronize_complex\relax} \def\scrn_canvas_synchronize_complex_indeed {\scrn_canvas_calculate % otherwise we need to hook it into setuppage etc \clf_setupcanvas leftoffset \canvasbackoffset topoffset \canvastopoffset width \canvaswidth height \canvasheight paperwidth \canvasmaxwidth paperheight \canvasmaxheight cropoffset \canvascropoffset trimoffset \canvastrimoffset bleedoffset \canvasbleedoffset artoffset \canvasartoffset \scrn_canvas_synchronize_common \relax %\glet\scrn_canvas_synchronize_simple \relax % one shot only \glet\scrn_canvas_synchronize_complex\relax} \appendtoks \begingroup \edef\p_option{\interactionscreenparameter\c!option}% \ifx\p_option\v!max \global\c_scrn_canvas_tight_page\conditionaltrue \orelse\ifx\p_option\v!fit \global\c_scrn_canvas_tight_page\conditionaltrue \else \global\c_scrn_canvas_tight_page\conditionalfalse \fi \endgroup \to \everysetupinteractionscreen \setupinteractionscreen [\c!width=\printpaperwidth, \c!height=\printpaperheight, \c!horoffset=\zeropoint, \c!veroffset=\zeropoint, \c!backspace=\backspace, \c!topspace=\topspace, \c!copies=\plusone, % not the best place but backend anyway \c!option=\v!auto] \appendtoks \glet\scrn_canvas_synchronize_simple \scrn_canvas_synchronize_simple_indeed \glet\scrn_canvas_synchronize_complex\scrn_canvas_synchronize_complex_indeed \to \everysetupinteractionscreen %D Conditional page breaks: \permanent\tolerant\protected\def\screen[#list]% {\iflocation \page[#list]% \fi} %D Page transitions: \lettonothing\scrn_transitions_list \permanent\tolerant\protected\def\setuppagetransitions[#list]% {\edef\scrn_transitions_list{#list}% \ifx\scrn_transitions_list\v!reset \lettonothing\scrn_transitions_list \fi} \def\scrn_transitions_set {\iflocation \ifempty\scrn_transitions_list \else \scrn_transitions_set_indeed \fi \fi} \def\scrn_transitions_set_indeed {\begingroup \edef\currentinteractionscreendelay{\interactionscreenparameter\c!delay}% \clf_setpagetransition n {\scrn_transitions_list}% delay {\ifx\currentinteractionscreendelay\v!none \zerocount\else\currentinteractionscreendelay\fi}% \relax \endgroup} \prependtoks \scrn_transitions_set \to \everyshipout \setupinteractionscreen [\c!delay=\v!none] \setuppagetransitions [\v!reset] \protect \endinput