summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/luatexdir/tex/texnodes.h
diff options
context:
space:
mode:
authorLuigi Scarso <luigi.scarso@gmail.com>2018-09-05 21:30:41 +0000
committerLuigi Scarso <luigi.scarso@gmail.com>2018-09-05 21:30:41 +0000
commit1b8b254a766350291f8e7e19feaf6326ebabe633 (patch)
tree8a20823763635906b94a68b72541a10dc6f91377 /Build/source/texk/web2c/luatexdir/tex/texnodes.h
parentef7aedbc1cabb3eebb59082e349f9792c9c4d3c1 (diff)
sync with luatex revision 6924.
git-svn-id: svn://tug.org/texlive/trunk@48591 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/tex/texnodes.h')
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/texnodes.h185
1 files changed, 151 insertions, 34 deletions
diff --git a/Build/source/texk/web2c/luatexdir/tex/texnodes.h b/Build/source/texk/web2c/luatexdir/tex/texnodes.h
index eb9b2da4a48..e77e2916e71 100644
--- a/Build/source/texk/web2c/luatexdir/tex/texnodes.h
+++ b/Build/source/texk/web2c/luatexdir/tex/texnodes.h
@@ -97,8 +97,30 @@ extern halfword do_set_attribute(halfword p, int i, int val);
# define list_offset 6
typedef enum {
+ user_skip_glue,
+ line_skip_glue,
+ baseline_skip_glue,
+ par_skip_glue,
+ above_display_skip_glue,
+ below_display_skip_glue,
+ above_display_short_skip_glue,
+ below_display_short_skip_glue,
+ left_skip_glue,
+ right_skip_glue,
+ top_skip_glue,
+ split_top_skip_glue,
+ tab_skip_glue,
+ space_skip_glue,
+ xspace_skip_glue,
+ par_fill_skip_glue,
+ math_skip_glue,
+ thin_mu_skip_glue,
+ med_mu_skip_glue,
+ thick_mu_skip_glue,
+ /* math */
cond_math_glue = 98, /* special |subtype| to suppress glue in the next node */
mu_glue, /* |subtype| for math glue */
+ /* leaders */
a_leaders, /* |subtype| for aligned leaders */
c_leaders, /* |subtype| for centered leaders */
x_leaders, /* |subtype| for expanded leaders */
@@ -199,7 +221,7 @@ typedef enum {
# define disc_penalty(a) vlink((a)+2)
# define pre_break(a) vinfo((a)+3)
# define post_break(a) vlink((a)+3)
-# define no_break(a) vlink((a)+4)
+# define no_break(a) vlink((a)+4) /* we have vinfo((a)+4) for later usage */
# define vlink_pre_break(a) vlink(pre_break_head(a))
# define vlink_post_break(a) vlink(post_break_head(a))
@@ -264,14 +286,17 @@ typedef enum {
math_under_rule,
math_fraction_rule,
math_radical_rule,
+ outline_rule,
} rule_subtypes;
-# define rule_node_size 8
+# define rule_node_size 9
# define rule_dir(a) vlink((a)+5)
# define rule_index(a) vinfo((a)+6)
# define rule_transform(a) vlink((a)+6)
-# define synctex_tag_rule(a) vinfo((a)+7)
-# define synctex_line_rule(a) vlink((a)+7)
+# define rule_left(a) vinfo((a)+7)
+# define rule_right(a) vlink((a)+7)
+# define synctex_tag_rule(a) vinfo((a)+8)
+# define synctex_line_rule(a) vlink((a)+8)
# define rule_math_size rule_index
# define rule_math_font rule_transform
@@ -292,7 +317,7 @@ typedef enum {
# define x_displace(a) vinfo((a)+4)
# define y_displace(a) vlink((a)+4)
# define ex_glyph(a) vinfo((a)+5) /* expansion factor (hz) */
-# define x_advance(a) vlink((a)+5) /* obsolete, can become user field */
+# define glyph_node_data(a) vlink((a)+5)
# define synctex_tag_glyph(a) vinfo((a)+6)
# define synctex_line_glyph(a) vlink((a)+6)
@@ -318,11 +343,15 @@ typedef enum {
/*@# {|subtype| of marginal kerns}*/
-# define left_side 0
-# define right_side 1
+typedef enum {
+ left_side = 0,
+ right_side
+} margin_kern_subtypes ;
-# define before 0 /* |subtype| for math node that introduces a formula */
-# define after 1 /* |subtype| for math node that winds up a formula */
+typedef enum {
+ before = 0,
+ after
+} math_subtypes ;
# define math_node_size 7
/* define width(a) vinfo((a)+2) */
@@ -487,6 +516,24 @@ typedef enum {
# define noadextra3(a) vlink((a)+7) /* see (!) below */
# define noadextra4(a) vinfo((a)+7) /* used to store samesize */
+# define noad_fam(a) vlink((a)+6) /* noadextra1 */
+
+typedef enum {
+ ord_noad_type = 0,
+ op_noad_type_normal,
+ op_noad_type_limits,
+ op_noad_type_no_limits,
+ bin_noad_type,
+ rel_noad_type,
+ open_noad_type,
+ close_noad_type,
+ punct_noad_type,
+ inner_noad_type,
+ under_noad_type,
+ over_noad_type,
+ vcenter_noad_type,
+} noad_types;
+
/* accent noads */
# define accent_noad_size 8
@@ -495,6 +542,13 @@ typedef enum {
# define overlay_accent_chr(a) vinfo((a)+7) /* the |overlay_accent_chr| field of an accent noad */
# define accentfraction(a) vlink((a)+7)
+typedef enum {
+ bothflexible_accent,
+ fixedtop_accent,
+ fixedbottom_accent,
+ fixedboth_accent,
+} math_accent_subtypes ;
+
/* left and right noads */
# define fence_noad_size 8 /* needs to match noad size */
@@ -540,22 +594,36 @@ typedef enum {
noad_delimiter_mode_noshift = 0x01,
noad_delimiter_mode_italics = 0x02,
noad_delimiter_mode_ordinal = 0x04,
+ noad_delimiter_mode_samenos = 0x08,
+ noad_delimiter_mode_charnos = 0x10,
} delimiter_modes ;
# define delimitermodenoshift ((math_delimiters_mode_par & noad_delimiter_mode_noshift) == noad_delimiter_mode_noshift)
# define delimitermodeitalics ((math_delimiters_mode_par & noad_delimiter_mode_italics) == noad_delimiter_mode_italics)
# define delimitermodeordinal ((math_delimiters_mode_par & noad_delimiter_mode_ordinal) == noad_delimiter_mode_ordinal)
+# define delimitermodesamenos ((math_delimiters_mode_par & noad_delimiter_mode_samenos) == noad_delimiter_mode_samenos)
+# define delimitermodecharnos ((math_delimiters_mode_par & noad_delimiter_mode_charnos) == noad_delimiter_mode_charnos)
/* subtype of fence noads */
+/*
# define left_noad_side 1
# define middle_noad_side 2
# define right_noad_side 3
# define no_noad_side 4
+*/
+
+typedef enum {
+ unset_noad_side = 0,
+ left_noad_side = 1,
+ middle_noad_side = 2,
+ right_noad_side = 3,
+ no_noad_side = 4,
+} fence_subtypes ;
/* fraction noads */
-# define fraction_noad_size 7
+# define fraction_noad_size 8
# define thickness(a) vlink((a)+2) /* |thickness| field in a fraction noad */
# define numerator(a) vlink((a)+3) /* |numerator| field in a fraction noad */
# define denominator(a) vinfo((a)+3) /* |denominator| field in a fraction noad */
@@ -563,6 +631,7 @@ typedef enum {
# define right_delimiter(a) vinfo((a)+5) /* second delimiter field of a fraction noad */
# define middle_delimiter(a) vlink((a)+6)
# define fractionoptions(a) vinfo((a)+6)
+# define fraction_fam(a) vlink((a)+7)
# define fractionoptionset(a) ((fractionoptions(a) & noad_option_set ) == noad_option_set )
# define fractionexact(a) ((fractionoptions(a) & noad_option_exact ) == noad_option_exact )
@@ -582,6 +651,16 @@ typedef enum {
# define radicalmiddle(a) ((radicaloptions(a) & noad_option_middle) == noad_option_middle)
# define radicalright(a) ((radicaloptions(a) & noad_option_right ) == noad_option_right)
+typedef enum {
+ radical_noad_type,
+ uradical_noad_type,
+ uroot_noad_type,
+ uunderdelimiter_noad_type,
+ uoverdelimiter_noad_type,
+ udelimiterunder_noad_type,
+ udelimiterover_noad_type,
+} radical_subtypes;
+
/* accessors for the |nucleus|-style node fields */
# define math_kernel_node_size 3
@@ -659,6 +738,15 @@ typedef enum {
# define GLYPH_LEFT (1 << 3)
# define GLYPH_RIGHT (1 << 4)
+typedef enum {
+ glyph_unset = 0,
+ glyph_character = GLYPH_CHARACTER,
+ glyph_ligature = GLYPH_LIGATURE,
+ glyph_ghost = GLYPH_GHOST,
+ glyph_left = GLYPH_LEFT,
+ glyph_right = GLYPH_RIGHT,
+} glyph_subtypes;
+
# define is_character(p) ((subtype(p)) & GLYPH_CHARACTER)
# define is_ligature(p) ((subtype(p)) & GLYPH_LIGATURE )
# define is_ghost(p) ((subtype(p)) & GLYPH_GHOST )
@@ -698,6 +786,11 @@ typedef enum {
# define special_node_size 3
+typedef enum {
+ normal_dir = 0,
+ cancel_dir,
+} dir_subtypes ;
+
# define dir_node_size 5
# define dir_dir(a) vinfo((a)+2)
# define dir_level(a) vlink((a)+2)
@@ -737,6 +830,7 @@ typedef enum {
/* type of literal data */
# define lua_refid_literal 1 /* not a |normal| string */
+# define lua_refid_call 2 /* not a |normal| string */
/* begin of pdf backend nodes */
@@ -899,40 +993,60 @@ extern void print_short_node_contents(halfword n);
extern void show_node_list(int i);
extern pointer actual_box_width(pointer r, scaled base_width);
-/* from luanode.c */
+typedef struct _subtype_info {
+ int id;
+ const char *name;
+ int lua;
+} subtype_info;
+
+typedef struct _field_info {
+ const char *name;
+ int lua;
+} field_info;
typedef struct _node_info {
int id;
int size;
- const char **fields;
+ subtype_info *subtypes;
+ field_info *fields;
const char *name;
int etex;
+ int lua;
} node_info;
extern node_info node_data[];
extern node_info whatsit_node_data[];
-extern const char *node_subtypes_glue[];
-extern const char *node_subtypes_mathglue[];
-extern const char *node_subtypes_leader[];
-extern const char *node_subtypes_fill[];
-extern const char *node_subtypes_boundary[];
-extern const char *node_subtypes_penalty[];
-extern const char *node_subtypes_kern[];
-extern const char *node_subtypes_rule[];
-extern const char *node_subtypes_glyph[];
-extern const char *node_subtypes_disc[];
-extern const char *node_subtypes_marginkern[];
-extern const char *node_subtypes_list[];
-extern const char *node_subtypes_adjust[];
-extern const char *node_subtypes_math[];
-extern const char *node_subtypes_noad[];
-extern const char *node_subtypes_radical[];
-extern const char *node_subtypes_accent[];
-extern const char *node_subtypes_fence[];
-
-extern const char *node_subtypes_pdf_destination[];
-extern const char *node_subtypes_pdf_literal[];
+extern subtype_info node_subtypes_dir[];
+extern subtype_info node_subtypes_glue[];
+extern subtype_info node_subtypes_mathglue[];
+extern subtype_info node_subtypes_leader[];
+extern subtype_info node_subtypes_boundary[];
+extern subtype_info node_subtypes_penalty[];
+extern subtype_info node_subtypes_kern[];
+extern subtype_info node_subtypes_rule[];
+extern subtype_info node_subtypes_glyph[];
+extern subtype_info node_subtypes_disc[];
+extern subtype_info node_subtypes_marginkern[];
+extern subtype_info node_subtypes_list[];
+extern subtype_info node_subtypes_adjust[];
+extern subtype_info node_subtypes_math[];
+extern subtype_info node_subtypes_noad[];
+extern subtype_info node_subtypes_radical[];
+extern subtype_info node_subtypes_accent[];
+extern subtype_info node_subtypes_fence[];
+
+extern subtype_info node_values_pdf_destination[];
+extern subtype_info node_values_pdf_literal[];
+extern subtype_info node_values_pdf_literal[];
+extern subtype_info node_values_pdf_action[];
+extern subtype_info node_values_pdf_window[];
+
+extern subtype_info node_values_fill[];
+extern subtype_info node_values_dir[];
+extern subtype_info node_values_color_stack[];
+
+extern subtype_info other_values_page_states[];
extern halfword new_node(int i, int j);
extern void flush_node_list(halfword);
@@ -958,7 +1072,7 @@ extern void show_node_wrapup_dvi(halfword);
extern void show_node_wrapup_pdf(halfword);
typedef enum {
- normal_g = 0,
+ normal_g = 0, /* normal */
sfi,
fil,
fill,
@@ -1037,5 +1151,8 @@ extern void synctex_set_no_files(int flag);
extern int synctex_get_no_files(void);
extern int synctex_get_line(void);
+extern void l_set_node_data(void) ;
+extern void l_set_whatsit_data(void) ;
+
#endif