/************************************************* * The PMW Music Typesetter - 3rd incarnation * *************************************************/ /* Copyright (c) Philip Hazel, 1991 - 2019 */ /* Written by Philip Hazel, starting November 1991 */ /* This file last modified: August 2019 */ /* This is the header file for the pagination routines. It contains mostly definitions of shared variables. Many of the structures used are more global, and are therefore in pmwhdr. */ /* Backward offsets for non-note items in a bar. */ #define posx_acc (-1) /* accidental */ #define posx_gracelast (-2) /* grace notes use 2 to 15, in reverse order */ #define posx_gracefirst (-15) #define posx_RLright (-16) /* left repeat when printed on the right */ #define posx_timelast (-17) /* time signatures use 17 to 20, in reverse */ #define posx_timefirst (-20) #define posx_keylast (-21) /* key signatures use 21 to 24, in reverse */ #define posx_keyfirst (-24) #define posx_RLleft (-25) /* left repeat when printed on the left */ #define posx_RR (-26) #define posx_dotbar (-27) #define posx_clef (-28) #define posx_tick (-29) #define posx_comma (-30) #define posx_caesura (-31) #define posx_max (-31) #define posx_maxgrace (posx_gracelast - posx_gracefirst + 1) #define posx_maxtime (posx_timelast - posx_timefirst + 1) #define posx_maxkey (posx_keylast - posx_keyfirst + 1) extern pagedatastr *page_accepteddata; /* pointers to the data structures */ extern pagedatastr *page_nextdata; /* used while measuring */ extern pagedatastr *page_previousdata; extern int page_barcount; /* bars processed so far */ extern int page_barlinewidth; /* bar line width */ extern int page_barnumber; /* next to be processed */ extern int page_botmargin; /* value for this page */ extern contstr *page_cont; /* continuation structure */ extern int page_countsystems; /* count of systems on a page */ extern BOOL page_firstsystem; /* first system of movt */ extern headstr *page_footing; /* pending footing */ extern int page_footnotedepth; /* depth of footnotes for a system */ extern headstr *page_footnotes; /* pending footnotes */ extern int page_footnotespacing; /* current spacing off value */ extern int page_justify; /* bits for this page */ extern int page_justifyLR; /* bits for this system */ extern int page_lastbarcountbump; /* for backing off */ extern BOOL page_lastendwide; /* flag for repeat */ extern BOOL page_lastenddouble; /* flag for double bar */ extern headstr *page_lastfootnote; extern headstr *page_lastnewfootnote; extern sysblock *page_lastsystem; /* previous system */ extern int page_lastulevel; /* bottommost underlay level */ extern int page_lastwanted; /* highest wanted stave number */ extern int page_layout_stretchn; /* used for re-spacing */ extern int page_layout_stretchd; /* ditto */ extern int page_manyrest; /* multi-rest count */ extern startlinestr *page_midline; /* current mid line data */ extern int page_movtnumber; /* current movement */ extern BOOL page_movtpending; /* new movement pending */ extern int page_newfootnotedepth; /* depth of footnotes for a system */ extern headstr *page_newfootnotes; /* footnotes for a system */ extern BOOL page_newpagewanted; /* set to force newpage */ extern int page_olaysize; /* overlay size for this movement */ extern int *page_olevel; /* forced olevels */ extern int *page_olhere; /* local forcings */ extern workposstr *page_posptr; /* pointer to end of following */ extern workposstr *page_postable; /* working position table */ extern BOOL page_savehadmovt; /* temp save */ extern int page_sgnext; /* system gap for next system */ extern usint page_showtimes[STAVE_BITVEC_SIZE]; /* which staves require time sigs */ extern int *page_ssnext; /* spacing table for next system */ extern int *page_ssehere; /* ensure table for this system */ extern int *page_ssenext; /* ensure table for next system */ extern BOOL page_startchangetime; /* flags change of ts at start line */ extern startlinestr *page_startline; /* current start line data */ extern BOOL page_startlinebar; /* flags start of line */ extern int page_stave; /* current stave */ extern usint page_stavemap[STAVE_BITVEC_SIZE]; /* copy of movement stave bits */ extern uschar *page_sysclef; /* clef maintenance */ extern sysblock *page_sysblock; /* current block */ extern sysblock **page_sysprevptr; /* points to where to hang the next on */ extern int page_sys_botmargin; /* value set by this system */ extern int page_sys_justify; /* ditto */ extern int page_sys_topmargin; /* ditto */ extern int page_topmargin; /* value for this page */ extern int page_ulaysize; /* underlay size for this movement */ extern int *page_ulevel; /* forced ulevels */ extern int *page_ulhere; /* local forcings */ extern BOOL page_warnkey; /* warning key wanted */ extern BOOL page_warntime; /* warning time wanted */ extern int page_xxwidth; /* width of signatures only bar */ extern void page_dopageheading(headstr *); extern void page_endpage(BOOL); extern void page_justifyheading(headstr *); extern void page_newpage(headstr *, headstr *); extern int page_makepostable(BOOL); extern void page_setcont(void); extern void page_setsignatures(void); extern int page_startwidth(pagedatastr *, usint *, usint *); /* End of pagehdr.h */