summaryrefslogtreecommitdiff
path: root/tex/context/base/meta-pag.mkiv
blob: a25353b188edc185d6124b3ff39764dc15584cdc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
%D \module
%D   [       file=meta-pag,
%D        version=1999.07.10,
%D          title=\METAPOST\ Graphics,
%D       subtitle=Initialization,
%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.

%D These definitions used to be part of the old \type
%D {core-mps} file, later changed into \type {meta-ini}, but
%D keeping them separate is cleaner.

\writestatus{loading}{MetaPost Graphics / Page Data Management}

\unprotect

%D The next few macros tell \METAPOST\ how the \CONTEXT\
%D pagebody looks.

\startMPextensions
    boolean PageStateAvailable,OnRightPage,InPageBody;
    PageStateAvailable:=true;
\stopMPextensions

\startMPinitializations
    OnRightPage:=true;
    InPageBody:=\ifinpagebody true \else false \fi;
\stopMPinitializations

\startMPinitializations
    CurrentColumn:=\number\mofcolumns;
    NOfColumns:=\number\nofcolumns;
    % todo: ColumnDistance
\stopMPinitializations

% maybe always set as frozen anyway

\startMPinitializations
  % def LoadPageState =
        OnRightPage:=\MPonrightpage;
        OnOddPage:=\MPonoddpage;
        RealPageNumber:=\the\realpageno;
        PageNumber:=\the\pageno;
        NOfPages:=\lastpage;
        PaperHeight:=\the\paperheight;
        PaperWidth:=\the\paperwidth;
        PrintPaperHeight:=\the\printpaperheight;
        PrintPaperWidth:=\the\printpaperwidth;
        TopSpace:=\the\topspace;
        BottomSpace:=\the\bottomspace;
        BackSpace:=\the\backspace;
        CutSpace:=\the\cutspace;
        MakeupHeight:=\the\makeupheight;
        MakeupWidth:=\the\makeupwidth;
        TopHeight:=\the\topheight;
        TopDistance:=\the\topdistance;
        HeaderHeight:=\the\headerheight;
        HeaderDistance:=\the\headerdistance;
        TextHeight:=\the\textheight;
        FooterDistance:=\the\footerdistance;
        FooterHeight:=\the\footerheight;
        BottomDistance:=\the\bottomdistance;
        BottomHeight:=\the\bottomheight;
        LeftEdgeWidth:=\the\leftedgewidth;
        LeftEdgeDistance:=\the\leftedgedistance;
        LeftMarginWidth:=\the\leftmarginwidth;
        LeftMarginDistance:=\the\leftmargindistance;
        TextWidth:=\the\textwidth ;
        RightMarginDistance:=\the\rightmargindistance;
        RightMarginWidth:=\the\rightmarginwidth;
        RightEdgeDistance:=\the\rightedgedistance;
        RightEdgeWidth:=\the\rightedgewidth;
        InnerMarginDistance:=\the\innermargindistance;
        InnerMarginWidth:=\the\innermarginwidth;
        OuterMarginDistance:=\the\outermargindistance;
        OuterMarginWidth:=\the\outermarginwidth;
        InnerEdgeDistance:=\the\inneredgedistance;
        InnerEdgeWidth:=\the\inneredgewidth;
        OuterEdgeDistance:=\the\outeredgedistance;
        OuterEdgeWidth:=\the\outeredgewidth;
        PageOffset:=\the\pagebackgroundoffset;
        PageDepth:=\the\pagebackgrounddepth;
        LayoutColumns:=\the\layoutcolumns;
        LayoutColumnDistance:=\the\layoutcolumndistance;
        LayoutColumnWidth:=\the\layoutcolumnwidth;
    def LoadPageState =
      % now always set .. this dummy can move to the mp code
    enddef;
\stopMPinitializations

\def\MPonrightpage{true}
\def\MPonoddpage  {true}

\def\freezeMPpagelayout
  {\edef\MPonrightpage{\doifbothsides  {tru}{tru}{fals}e}%
   \edef\MPonoddpage  {\doifoddpageelse     {tru}{fals}e}}

%D We need to freeze the pagelayout before the backgrounds
%D are build, because the overlay will temporarily become
%D zero (overlay).

\appendtoks
    \freezeMPpagelayout
\to \everybeforepagebody

%D By freezing these value every graphic, we can use layout
%D variables that change halfways a page, whatever use that
%D has.

% obsolete (but keep the code)
%
% \prependtoks
%     \calculatereducedvsizes % this is really needed
%     \freezeMPpagelayout
%     \freezeMPlayout % to be used grouped
% \to \everyMPgraphic

\prependtoks
    \calculatereducedvsizes % this is really needed
\to \everyMPgraphic

\protect \endinput