scrn-pag.mkvi /size: 9547 b    last modification: 2020-07-01 14:35
1
%D \module
2
%D [ file=scrn-pag,
3
%D version=1998.01.15,
4
%D title=\CONTEXT\ Screen Macros,
5
%D subtitle=Pages, % moved code
6
%D author=Hans Hagen,
7
%D date=\currentdate,
8
%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
9
%C
10
%C This module is part of the \CONTEXT\ macro||package and is
11
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
12
%C details.
13 14
% pagecomments will be done differently
15 16
\writestatus
{
loading
}{
ConTeXt
Screen
Macros
/
Pages
}
17 18
\registerctxluafile
{
scrn
-
pag
}{}
19 20
\unprotect
21 22
\installcorenamespace
{
interactionscreen
}
23 24
\installparameterhandler
\??interactionscreen
{
interactionscreen
}
25
\installsetuphandler
\??interactionscreen
{
interactionscreen
}
26 27
\newdimen
\canvaswidth
28
\newdimen
\canvasheight
29
\newdimen
\canvasbackoffset
30
\newdimen
\canvastopoffset
31
\newdimen
\canvasmaxwidth
32
\newdimen
\canvasmaxheight
33
\newdimen
\canvascropoffset
34
\newdimen
\canvastrimoffset
35
\newdimen
\canvasbleedoffset
36
\newdimen
\canvasartoffset
37 38
\newconditional
\c_scrn_canvas_tight_page
39 40
\def
\scrn_canvas_calculate
41
{
\begingroup
42
\edef
\currentinteractionscreenwidth
{
\interactionscreenparameter
\c!width
}
%
43
\edef
\currentinteractionscreenheight
{
\interactionscreenparameter
\c!height
}
%
44
\canvasbackoffset
\backspace
45
\canvastopoffset
\topspace
46
\donetrue
47
\ifx
\currentinteractionscreenwidth
\v!max
48
\global
\canvaswidth
\printpaperwidth
49
\else\ifx
\currentinteractionscreenwidth
\v!fit
50
\donefalse
51
\global
\canvaswidth
\dimexpr
52
\leftcombitotal
53
+
\makeupwidth
54
+
\rightcombitotal
55
+
2
\dimexpr
56
\interactionscreenparameter
\c!backspace
57
+
\interactionscreenparameter
\c!horoffset
58
\relax
59
\relax
60
\else\ifx
\currentinteractionscreenwidth
\v!tight
61
\donefalse
62
\ifdim
\backspace
>
\canvaswidth
63
\ifdim
\backspace
>
\zeropoint
\relax
64
\global\advance
\canvasbackoffset
-
\canvaswidth
65
\fi
66
\fi
67
\global\advance
\canvaswidth
\dimexpr
68
\makeupwidth
69
+
\rightcombitotal
70
+
2
\dimexpr
71
\interactionscreenparameter
\c!backspace
72
+
\interactionscreenparameter
\c!horoffset
73
\relax
74
\relax
75
\else
76
\donefalse
77
\global
\canvaswidth
\currentinteractionscreenwidth
78
\fi\fi\fi
79
\ifx
\currentinteractionscreenheight
\v!max
80
\global
\canvasheight
\printpaperheight
81
\else\ifx
\currentinteractionscreenheight
\v!fit
82
\donefalse
83
\global
\canvasheight
\dimexpr
84
\topheight
85
+
\topdistance
86
+
\makeupheight
87
+
\bottomdistance
88
+
\bottomheight
89
+
2
\dimexpr
90
\interactionscreenparameter
\c!topspace
91
+
\interactionscreenparameter
\c!veroffset
92
\relax
93
\relax
94
\else\ifx
\currentinteractionscreenheight
\v!tight
95
\donefalse
96
\global
\canvasheight
\dimexpr
\topheight
+
\topdistance
\relax
97
\ifdim
\topspace
>
\canvasheight
98
\ifdim
\topspace
>
\zeropoint
\relax
99
\global\advance
\canvastopoffset
-
\canvasheight
100
\fi
101
\fi
102
\global\advance
\canvasheight
\dimexpr
103
\makeupheight
104
+
\bottomdistance
105
+
\bottomheight
106
+
2
\dimexpr
107
\interactionscreenparameter
\c!topspace
108
+
\interactionscreenparameter
\c!veroffset
109
\relax
110
\relax
111
\else
112
\donefalse
113
\global
\canvasheight
\currentinteractionscreenheight
114
\fi\fi\fi
115
\ifconditional
\c_page_layouts_location_is_set
116
\global
\setfalse
\c_scrn_canvas_tight_page
117
\fi
118
\ifconditional
\c_scrn_canvas_tight_page
119
\global
\canvasmaxwidth
\paperwidth
120
\global
\canvasmaxheight
\paperheight
121
\else
122
\global
\canvasmaxwidth
\printpaperwidth
123
\global
\canvasmaxheight
\printpaperheight
124
\fi
125
% new:
126
\ifdone
127
\global
\canvascropoffset
\layoutcropoffset
128
\global
\canvastrimoffset
\layouttrimoffset
129
\global
\canvasbleedoffset
\layoutbleedoffset
130
\global
\canvasartoffset
\layoutartoffset
131
\else
132
\global
\canvascropoffset
\zeropoint
133
\global
\canvastrimoffset
\zeropoint
134
\global
\canvasbleedoffset
\zeropoint
135
\global
\canvasartoffset
\zeropoint
136
\fi
137
\endgroup
}
138 139
\newdimen
\layoutcropoffset
140
\newdimen
\layouttrimoffset
141
\newdimen
\layoutbleedoffset
142
\newdimen
\layoutartoffset
143 144
\appendtoks
145
\edef
\p_cropoffset
{
\layoutparameter
\c!cropoffset
}
%
146
\ifx
\p_cropoffset
\v!auto
147
\ifconditional
\c_page_layouts_location_is_middle
148
\scratchheight
\dimexpr
(
\printpaperheight
-
\paperheight
)
/
2
\relax
149
\scratchwidth
\dimexpr
(
\printpaperwidth
-
\paperwidth
)
/
2
\relax
150
\layoutcropoffset
\ifdim
\scratchheight
>
\scratchwidth\scratchheight
\else
\scratchwidth
\fi
151
\layouttrimoffset
\layoutparameter
\c!trimoffset
152
\layoutbleedoffset
\layoutparameter
\c!bleedoffset
153
\layoutartoffset
\layoutparameter
\c!artoffset
154
\else
155
\writestatus
\m!system
{
auto
crop
etc
only
supported
when
location
=
middle
}
%
156
\layoutcropoffset
\zeropoint
157
\layouttrimoffset
\zeropoint
158
\layoutbleedoffset
\zeropoint
159
\layoutartoffset
\zeropoint
160
\fi
161
\else
162
\layoutcropoffset
\layoutparameter
\c!cropoffset
163
\layouttrimoffset
\layoutparameter
\c!trimoffset
164
\layoutbleedoffset
\layoutparameter
\c!bleedoffset
165
\layoutartoffset
\layoutparameter
\c!artoffset
166
\fi
167
\relax
168
\to
\everysetuplayout
169 170
\setuplayout
171
[
\c!cropoffset
=
\zeropoint
,
172
\c!trimoffset
=
\zeropoint
,
173
\c!bleedoffset
=
\zeropoint
,
174
\c!artoffset
=
\zeropoint
]
175 176
% test the next when something is changed here:
177
%
178
% \setuppapersize[A5][A3] \showframe
179
%
180
% % \setuplayout[location=middle] \setupinteractionscreen[option=fit]
181
% % \setuplayout[location=middle] \setupinteractionscreen[option=auto]
182
% % \setupinteractionscreen[option=fit]
183
% % \setupinteractionscreen[option=auto]
184
%
185
% \starttext \input ward \stoptext
186 187
\let
\scrn_canvas_synchronize_simple
\relax
188
\let
\scrn_canvas_synchronize_complex
\relax
189 190
\appendtoks
191
\glet
\scrn_canvas_synchronize_simple
\scrn_canvas_synchronize_simple_indeed
192
\glet
\scrn_canvas_synchronize_complex
\scrn_canvas_synchronize_complex_indeed
193
\to
\everysetuplayout
194 195
\appendtoks
196
\glet
\scrn_canvas_synchronize_simple
\scrn_canvas_synchronize_simple_indeed
197
\glet
\scrn_canvas_synchronize_complex
\scrn_canvas_synchronize_complex_indeed
198
\to
\everysetuplayouttarget
199 200
\def
\scrn_canvas_synchronize_only
201
{
\clf_setupcanvas
202
paperwidth
\printpaperwidth
203
paperheight
\printpaperheight
204
\relax
}
205 206
\def
\scrn_canvas_synchronize_set
#
1
#
2
%
207
{
\clf_setupcanvas
208
paperwidth
\dimexpr
#
1
\relax
209
paperheight
\dimexpr
#
2
\relax
210
\relax
}
211 212
\let
\scrn_canvas_synchronize_reset
\scrn_canvas_synchronize_only
213 214
\def
\scrn_canvas_synchronize_simple_indeed
215
{
\scrn_canvas_synchronize_only
216
%\glet\scrn_canvas_synchronize_simple \relax
217
\glet
\scrn_canvas_synchronize_complex
\relax
}
218 219
\def
\scrn_canvas_synchronize_complex_indeed
220
{
\scrn_canvas_calculate
% otherwise we need to hook it into setuppage etc
221
\clf_setupcanvas
222
mode
{
\interactionscreenparameter
\c!option
}
%
223
singlesided
\ifsinglesided
true
\else
false
\fi
\space
224
doublesided
\ifdoublesided
true
\else
false
\fi
\space
225
leftoffset
\canvasbackoffset
226
topoffset
\canvastopoffset
227
width
\canvaswidth
228
height
\canvasheight
229
paperwidth
\canvasmaxwidth
230
paperheight
\canvasmaxheight
231
cropoffset
\canvascropoffset
232
trimoffset
\canvastrimoffset
233
bleedoffset
\canvasbleedoffset
234
artoffset
\canvasartoffset
235
copies
\numexpr
\interactionscreenparameter
\c!copies
\relax
236
print
{
\interactionscreenparameter
\c!print
}
%
237
\relax
238
%\glet\scrn_canvas_synchronize_simple \relax
239
\glet
\scrn_canvas_synchronize_complex
\relax
}
240 241
\appendtoks
242
\begingroup
243
\edef
\p_option
{
\interactionscreenparameter
\c!option
}
%
244
\ifx
\p_option
\v!max
245
\global
\settrue
\c_scrn_canvas_tight_page
246
\else\ifx
\p_option
\v!fit
247
\global
\settrue
\c_scrn_canvas_tight_page
248
\else
249
\global
\setfalse
\c_scrn_canvas_tight_page
250
\fi\fi
251
\endgroup
252
\to
\everysetupinteractionscreen
253 254
\setupinteractionscreen
255
[
\c!width
=
\printpaperwidth
,
256
\c!height
=
\printpaperheight
,
257
\c!horoffset
=
\zeropoint
,
258
\c!veroffset
=
\zeropoint
,
259
\c!backspace
=
\backspace
,
260
\c!topspace
=
\topspace
,
261
\c!copies
=
\plusone
,
% not the best place but backend anyway
262
\c!option
=
\v!auto
]
263 264
\appendtoks
265
\glet
\scrn_canvas_synchronize_simple
\scrn_canvas_synchronize_simple_indeed
266
\glet
\scrn_canvas_synchronize_complex
\scrn_canvas_synchronize_complex_indeed
267
\to
\everysetupinteractionscreen
268 269
%D Conditional page breaks:
270 271
\unexpanded
\def
\screen
272
{
\dosingleempty
\scrn_screen
}
273 274
\def
\scrn_screen
[#
list
]
%
275
{
\iflocation
276
\page
[#
list
]
%
277
\fi
}
278 279
%D Page transitions:
280 281
\let
\scrn_transitions_list
\empty
282 283
\unexpanded
\def
\setuppagetransitions
284
{
\dosingleempty
\scrn_transitions_setup
}
285 286
\def
\scrn_transitions_setup
[#
list
]
%
287
{
\edef
\scrn_transitions_list
{
#
list
}
%
288
\ifx
\scrn_transitions_list
\v!reset
289
\let
\scrn_transitions_list
\empty
290
\fi
}
291 292
\def
\scrn_transitions_set
293
{
\iflocation
\ifx
\scrn_transitions_list
\empty
\else
294
\scrn_transitions_set_indeed
295
\fi
\fi
}
296 297
\def
\scrn_transitions_set_indeed
298
{
\begingroup
299
\edef
\currentinteractionscreendelay
{
\interactionscreenparameter
\c!delay
}
%
300
\clf_setpagetransition
301
n
{
\scrn_transitions_list
}
%
302
delay
\ifx
\currentinteractionscreendelay
\v!none
\zerocount
\else
\currentinteractionscreendelay
\fi
303
\relax
304
\endgroup
}
305 306
\prependtoks
307
\scrn_transitions_set
308
\to
\everyshipout
309 310
\setupinteractionscreen
311
[
\c!delay
=
\v!none
]
312 313
\setuppagetransitions
314
[
\v!reset
]
315 316
\protect
\endinput
317