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 except;
45 scaled padding;
46 scaled last_height;
47 scaled last_depth;
48 union {
49
50 scaled page_so_far[8];
51 struct {
52 scaled unused;
53 scaled initial;
54 scaled stretch;
55 scaled fistretch;
56 scaled filstretch;
57 scaled fillstretch;
58 scaled filllstretch;
59 scaled shrink;
60 };
61 };
62 union {
63
64 scaled page_last_so_far[8];
65 struct {
66 scaled last_unused;
67 scaled last_initial;
68 scaled last_stretch;
69 scaled last_fistretch;
70 scaled last_filstretch;
71 scaled last_fillstretch;
72 scaled last_filllstretch;
73 scaled last_shrink;
74 };
75 };
76 int insert_penalties;
77 halfword insert_heights;
78 halfword last_glue;
79 halfword last_penalty;
80 scaled last_kern;
81 halfword last_boundary;
82 int last_extra_used;
83 int last_node_type;
84 int last_node_subtype;
85 int output_active;
86 int dead_cycles;
87 int current_state;
88} page_builder_state_info;
89
90extern page_builder_state_info lmt_page_builder_state;
91
92
93
94extern void tex_initialize_buildpage (void);
95extern void tex_initialize_pagestate (void);
96extern void tex_build_page (halfword context, halfword boundary);
97extern void tex_resume_after_output (void);
98extern void tex_additional_page_skip (void);
99
100# define contribute_tail lmt_nest_state.nest[0].tail
101
102# define page_goal lmt_page_builder_state.goal
103# define page_vsize lmt_page_builder_state.vsize
104# define page_total lmt_page_builder_state.total
105# define page_depth lmt_page_builder_state.depth
106# define page_excess lmt_page_builder_state.excess
107# define page_except lmt_page_builder_state.except
108# define page_last_height lmt_page_builder_state.last_height
109# define page_last_depth lmt_page_builder_state.last_depth
110
111# define page_stretch lmt_page_builder_state.stretch
112# define page_fistretch lmt_page_builder_state.fistretch
113# define page_filstretch lmt_page_builder_state.filstretch
114# define page_fillstretch lmt_page_builder_state.fillstretch
115# define page_filllstretch lmt_page_builder_state.filllstretch
116# define page_shrink lmt_page_builder_state.shrink
117
118# define page_last_stretch lmt_page_builder_state.last_stretch
119# define page_last_fistretch lmt_page_builder_state.last_fistretch
120# define page_last_filstretch lmt_page_builder_state.last_filstretch
121# define page_last_fillstretch lmt_page_builder_state.last_fillstretch
122# define page_last_filllstretch lmt_page_builder_state.last_filllstretch
123# define page_last_shrink lmt_page_builder_state.last_shrink
124
125# endif
126 |