/* See license.txt in the root of this project. */ # ifndef LNODELIB_H # define LNODELIB_H extern void lmt_push_node (lua_State *L); extern void lmt_push_node_fast (lua_State *L, halfword n); extern void lmt_push_directornode (lua_State *L, halfword n, int isdirect); extern int lmt_get_math_style (lua_State *L, int n, int dflt); extern int lmt_get_math_parameter (lua_State *L, int n, int dflt); extern halfword lmt_optional_isnode (lua_State *L, int i); extern halfword lmt_check_isnode (lua_State *L, int i); extern halfword lmt_check_isdirect (lua_State *L, int i); extern halfword lmt_check_isdirectornode (lua_State *L, int i, int *isdirect); extern void lmt_initialize_properties (int set_size); extern void lmt_node_list_to_lua (lua_State *L, halfword n); /* only used in lmttexlib */ extern halfword lmt_node_list_from_lua (lua_State *L, int n); /* only used in lmttexlib */ extern void lmt_push_head_to_callback (lua_State *L, halfword n); extern void lmt_push_node_to_callback (lua_State *L, halfword n); extern halfword lmt_pop_node_from_callback (lua_State *L, int index); extern halfword lmt_hpack_callback( halfword head, scaled size, int packtype, int extrainfo, int direction, halfword a ); extern halfword lmt_vpack_callback( halfword head, scaled size, int packtype, scaled depth, int extrainfo, int direction, halfword a ); extern halfword lmt_packed_vbox_callback( halfword box, int extrainfo ); extern void lmt_around_linebreak_callback( int callback, int extrainfo, halfword head, halfword *tail ); extern int lmt_linebreak_callback( halfword head, int isbroken, /* display_math */ halfword *newhead ); extern void lmt_alignment_callback( halfword head, halfword context, halfword callback, halfword attrlist, halfword preamble ); extern void lmt_local_box_callback( halfword linebox, halfword leftbox, halfword rightbox, halfword middlebox, halfword linenumber, scaled leftskip, scaled rightskip, scaled lefthang, scaled righthang, scaled indentation, scaled parinitleftskip, scaled parinitrightskip, scaled parfillleftskip, scaled parfillrightskip, scaled overshoot ); extern int lmt_append_to_vlist_callback( halfword box, int location, halfword prevdepth, halfword *result, int *nextdepth, int *prevset, int *checkdepth ); extern void lmt_begin_paragraph_callback( int invmode, int *indented, int context ); extern void lmt_paragraph_context_callback( int context, int *ignore ); extern void lmt_buildpage_callback( int context, halfword boundary ); extern void lmt_append_pre_line_callback( void /* dummy function */ ); extern void lmt_append_line_callback( void ); extern void lmt_append_adjust_callback( halfword context, halfword index ); extern void lmt_append_migrate_callback( halfword context ); extern int lmt_par_pass_callback( halfword head, line_break_properties *properties, halfword identifier, halfword subpass, halfword callback, halfword features, scaled overfull, scaled underfull, halfword verdict, halfword classified, scaled threshold, halfword badness, halfword classes, int *repeat ); extern void lmt_insert_par_callback( halfword node, halfword mode ); extern halfword lmt_uleader_callback( halfword head, halfword index, int context, halfword box, int location ); extern halfword lmt_uinsert_callback( halfword callback, halfword index, halfword order, halfword packed, scaled height, scaled amount ); extern scaled lmt_italic_correction_callback( halfword glyph, scaled kern, halfword subtype ); # endif