1
4
5# ifndef LMT_BUILDPAGE_H
6# define LMT_BUILDPAGE_H
7
8
13
14typedef enum contribution_codes {
15 contribute_nothing,
16 contribute_insert,
17 contribute_box,
18 contribute_rule,
19} contribution_codes;
20
21typedef enum page_property_states {
22 page_unused_state,
23 page_initial_state,
24 page_stretch_state,
25 page_fistretch_state,
26 page_filstretch_state,
27 page_fillstretch_state,
28 page_filllstretch_state,
29 page_shrink_state,
30} page_property_states;
31
32typedef struct page_builder_state_info {
33 halfword page_tail;
34 int contents;
35 scaled max_depth;
36 halfword best_break;
37 int least_cost;
38 scaled best_size;
39 scaled goal;
40 scaled vsize;
41 scaled total;
42 scaled depth;
43 scaled excess;
44 scaled padding;
45 scaled last_height;
46 scaled last_depth;
47 union {
48
49 scaled page_so_far[8];
50 struct {
51 scaled unused;
52 scaled initial;
53 scaled stretch;
54 scaled fistretch;
55 scaled filstretch;
56 scaled fillstretch;
57 scaled filllstretch;
58 scaled shrink;
59 };
60 };
61 union {
62
63 scaled page_last_so_far[8];
64 struct {
65 scaled last_unused;
66 scaled last_initial;
67 scaled last_stretch;
68 scaled last_fistretch;
69 scaled last_filstretch;
70 scaled last_fillstretch;
71 scaled last_filllstretch;
72 scaled last_shrink;
73 };
74 };
75 int insert_penalties;
76 halfword insert_heights;
77 halfword last_glue;
78 halfword last_penalty;
79 scaled last_kern;
80 halfword last_boundary;
81 int last_extra_used;
82 int last_node_type;
83 int last_node_subtype;
84 int output_active;
85 int dead_cycles;
86 int current_state;
87} page_builder_state_info;
88
89extern page_builder_state_info lmt_page_builder_state;
90
91
92
93extern void tex_initialize_buildpage (void);
94extern void tex_initialize_pagestate (void);
95extern void tex_build_page (halfword context, halfword boundary);
96extern void tex_resume_after_output (void);
97extern void tex_additional_page_skip (void);
98
99# define contribute_tail lmt_nest_state.nest[0].tail
100
101# define page_goal lmt_page_builder_state.goal
102# define page_vsize lmt_page_builder_state.vsize
103# define page_total lmt_page_builder_state.total
104# define page_depth lmt_page_builder_state.depth
105# define page_excess lmt_page_builder_state.excess
106# define page_last_height lmt_page_builder_state.last_height
107# define page_last_depth lmt_page_builder_state.last_depth
108
109# define page_stretch lmt_page_builder_state.stretch
110# define page_fistretch lmt_page_builder_state.fistretch
111# define page_filstretch lmt_page_builder_state.filstretch
112# define page_fillstretch lmt_page_builder_state.fillstretch
113# define page_filllstretch lmt_page_builder_state.filllstretch
114# define page_shrink lmt_page_builder_state.shrink
115
116# define page_last_stretch lmt_page_builder_state.last_stretch
117# define page_last_fistretch lmt_page_builder_state.last_fistretch
118# define page_last_filstretch lmt_page_builder_state.last_filstretch
119# define page_last_fillstretch lmt_page_builder_state.last_fillstretch
120# define page_last_filllstretch lmt_page_builder_state.last_filllstretch
121# define page_last_shrink lmt_page_builder_state.last_shrink
122
123# endif
124 |