/* See license.txt in the root of this project. */ /*tex This is experimental code, and it might disappear. */ # ifndef LMT_SNAPPING_H # define LMT_SNAPPING_H # include "luametatex.h" typedef enum snapping_methods { snapping_method_threshold = 0x0001, snapping_method_glyph = 0x0010, snapping_method_rule = 0x0020, snapping_method_list = 0x0040, snapping_method_math = 0x0080, } box_snap_methods; typedef struct snapping_specification { /* ideal dimensions */ struct { scaled height; scaled depth; }; /* thresholds */ struct { scaled top; scaled bottom; }; /* control */ int method; } snapping_specification; extern int tex_snapping_needed (snapping_specification *specification); extern void tex_snapping_reset (snapping_specification *specification); extern int tex_snapping_content (halfword first, halfword last, snapping_specification *specification); extern int tex_snapping_indeed (halfword first, halfword last, snapping_specification *specification); # endif