summaryrefslogtreecommitdiff
path: root/tex/context/base/meta-pag.tex
blob: b94a5b1db3778361739ad72e449fdd9e86da152c (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
%D \module
%D   [       file=meta-ini,
%D        version=1999.07.10,
%D          title=\METAPOST\ Graphics, 
%D       subtitle=Initialization, 
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%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 

\appendtoks 
  if unknown context_page : input mp-page ; fi ; 
\to \MPinitializations 

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

\startuseMPgraphic{page data}
  boolean PageStateAvailable ; PageStateAvailable := true ; 
  boolean OnRightPage        ; OnRightPage        := true ;  
  def LoadPageState = 
    OnRightPage         :=      \MPonrightpage ; 
    PageNumber          :=      \realfolio ; 
    PaperHeight         :=  \the\papierhoogte ;
    PaperWidth          :=  \the\papierbreedte ;
    PrintPaperHeight    :=  \the\printpapierhoogte ;
    PrintPaperWidth     :=  \the\printpapierbreedte ;
    TopSpace            :=  \the\kopwit ;
    BackSpace           :=  \the\rugwit ;
    MakeupHeight        :=  \the\zethoogte ;
    MakeupWidth         :=  \the\zetbreedte ;
    TopHeight           :=  \the\bovenhoogte ;
    TopDistance         := \@the\bovenafstand ;
    HeaderHeight        :=  \the\hoofdhoogte ;
    HeaderDistance      := \@the\hoofdafstand ;
    TextHeight          :=  \the\teksthoogte ;
    FooterDistance      := \@the\voetafstand ;
    FooterHeight        :=  \the\voethoogte ;
    BottomDistance      := \@the\onderafstand ;
    BottomHeight        :=  \the\onderhoogte ;
    LeftEdgeWidth       :=  \the\linkerrandbreedte ;
    LeftEdgeDistance    := \@the\linkerrandafstand ;
    LeftMarginWidth     :=  \the\linkermargebreedte ;
    LeftMarginDistance  := \@the\linkermargeafstand ;
    TextWidth           :=  \the\tekstbreedte ;
    RightMarginDistance := \@the\rechtermargeafstand ;
    RightMarginWidth    :=  \the\rechtermargebreedte ;
    RightEdgeDistance   := \@the\rechterrandafstand ;
    RightEdgeWidth      :=  \the\rechterrandbreedte ;
    PageOffset          :=      \MPpageoffset ;
    PageDepth           :=      \MPpagedepth ;
  enddef ; 
\stopuseMPgraphic
              
\def\MPonrightpage{true} 
\let\MPpageoffset \!!zeropoint
\let\MPpagedepth  \!!zeropoint

\def\freezeMPpagelayout%
  {\doifelsevalue{\??ma\v!pagina\c!offset}{\v!overlay}
     {\let\MPpageoffset\!!zeropoint}
     {\edef\MPpageoffset{\getvalue{\??ma\v!pagina\c!offset}}}%
   \edef\MPpagedepth{\getvalue{\??ma\v!pagina\c!diepte}}%
   \freezedimenmacro\MPpageoffset
   \freezedimenmacro\MPpagedepth
   \doifbothsides 
     \def\MPonrightpage{true}% 
   \orsideone
     \def\MPonrightpage{true}% 
   \orsidetwo
     \def\MPonrightpage{false}% 
   \od}
 
\iffixedlayoutdimensions 

  \let\freezeMPlayout\relax

\else

  \def\freezeMPlayout% must be done more efficient
    {\freezedimenmacro\bovenafstand         
     \freezedimenmacro\hoofdafstand         
     \freezedimenmacro\voetafstand          
     \freezedimenmacro\onderafstand         
     \freezedimenmacro\linkerrandafstand    
     \freezedimenmacro\linkermargeafstand   
     \freezedimenmacro\rechtermargeafstand  
     \freezedimenmacro\rechterrandafstand}   

\fi

%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 \everypagebody 

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

\prependtoks 
  \calculatereducedvsizes % this is really needed
  \freezeMPlayout % to be used grouped 
\to \everyMPgraphic 

\appendtoks 
  \includeMPgraphic{page data} 
\to \MPinitializations

\protect \endinput