chiark / gitweb /
Import upstream version 5.3.
[mup] / mup / mup / globals.h
1 /* Copyright (c) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
2  * 2005, 2006 by Arkkra Enterprises */
3 /* All rights reserved */
4 /*
5  *      globals.h
6  *
7  *      This file has externs for the global variables defined in global.c.
8  *      It also has externs for all nonstatic functions.
9  */
10
11 #ifndef _GLOBALS
12 #define _GLOBALS
13
14 #ifdef __WATCOMC__
15 #include <sys\types.h>
16 #endif
17 #include <string.h>
18 #include <ctype.h>
19 #include "structs.h"
20 #ifdef VMS
21 #include <unixio.h>
22 #endif
23
24 /*
25  * Some non-ANSI compilers may not have these defined in stdio.h, so if they
26  * aren't defined, define them now.
27  */
28 #ifndef SEEK_SET
29 #define SEEK_SET 0
30 #endif
31 #ifndef SEEK_CUR
32 #define SEEK_CUR 1
33 #endif
34 #ifndef SEEK_END
35 #define SEEK_END 2
36 #endif
37
38 /* ====== externs for variables--see globals.c for comments about them ===== */
39
40 extern struct SSV Score;
41 extern struct SSV Staff[MAXSTAFFS];
42 extern struct SSV Voice[MAXSTAFFS][MAXVOICES];
43
44 extern short Staff_vis[MAXSTAFFS + 1];
45 extern short Voice_vis[MAXSTAFFS + 1][MAXVOICES + 1];
46
47 extern struct MAINLL *Mainllhc_p;
48 extern struct MAINLL *Mainlltc_p;
49
50 extern int Optch;
51 extern int Mupmate;
52 extern int Errorcount;
53 extern int Maxverses;
54 extern short Meas_num;
55 extern int Preproc;
56 extern int Ppcomments;
57
58 extern int Context;
59 extern int Curr_family;
60 extern int Curr_font;
61 extern int Curr_size;
62 extern int Got_some_data;
63 extern int Doing_tab_staff;
64 extern int Doing_MIDI;
65 extern char *Curr_filename;
66 extern char *Outfilename;
67 extern int Vflag;
68 extern int Vcombused;
69 extern int CSBused;
70 extern int CSSused;
71 extern int CSSpass;
72
73 extern int yylineno;
74 /* This 8192 must agree with YYLMAX in lex.c.  We shouldn't have to specify
75  * the size here, but at least one compiler generates bad code if we don't. */
76 extern char yytext[8192];
77
78 extern int Last_was_newline;
79 extern unsigned char Hctab[];
80 extern unsigned char Xhctab[];
81 extern unsigned char Dhctab[];
82 extern unsigned char Resttab[];
83 extern int Letshift[];
84 extern char Circle[];
85 extern char Acclets[];
86 extern char *Acctostr[];
87 extern char Ped_start[];
88 extern char Ped_stop[];
89
90 extern struct STRINGINFO Guitar[DEFTABLINES];
91 extern int Octave_adjust[MAXSTAFFS+1];
92 extern int Octave_bars[MAXSTAFFS+1];
93 extern float Octave_count[MAXSTAFFS+1];
94
95 extern float _Page      [NUMCTYPE];
96 extern float _Win       [NUMCTYPE];
97 extern float _Cur       [NUMCTYPE];
98
99 extern struct BLOCKHEAD Header;
100 extern struct BLOCKHEAD Footer;
101 extern struct BLOCKHEAD Header2;
102 extern struct BLOCKHEAD Footer2;
103
104 extern float *Score_location_p;
105 extern float Staffs_y[MAXSTAFFS + 1];
106
107 extern struct RANGELIST *Staffrange_p;
108 extern struct RANGELIST *Vnorange_p;
109
110 extern short Place;
111
112 extern short Ped_snapshot[MAXSTAFFS + 1];
113
114 extern struct MAINLL *Staffmap_p[MAXSTAFFS + 1];
115 extern struct MAINLL *List_of_staffs_p;
116
117 extern struct SVRANGELIST *Svrangelist_p;
118 extern struct GRPSYL *Curr_gs_list_p;
119 extern short Got_multirest;
120 extern short Got_group;
121
122 extern short Pagenum;
123 extern int Last_pagenum;
124
125 extern short Font_used[MAXFONTS];
126
127 extern struct ATEND_INFO Atend_info;
128
129 extern float Staffscale;
130 extern float Stdpad;
131 extern float Stepsize;
132 extern float Flagsep;
133 extern float Smflagsep;
134 extern float Tupheight;
135
136 extern RATIONAL Zero;
137 extern RATIONAL One_fourth;
138 extern RATIONAL One_third;
139 extern RATIONAL One_half;
140 extern RATIONAL Two_thirds;
141 extern RATIONAL Three_fourths;
142 extern RATIONAL One;
143 extern RATIONAL Two;
144 extern RATIONAL Three;
145 extern RATIONAL Four;
146
147 extern RATIONAL Maxtime;
148
149 extern int Debuglevel;
150 extern int ifdebug;
151
152 /* =========== defines that depend on the above variables ============= */
153
154 /* size of the actual paper, scaled so that the right amount of music fits */
155 #define PGHEIGHT        (Score.pageheight / Score.scale_factor)
156 #define PGWIDTH         (Score.pagewidth  / Score.scale_factor)
157
158 /* must divide margin variables by scale to cancel out the scaling for them */
159 #define EFF_TOPMARGIN   (Score.topmargin   / Score.scale_factor)
160 #define EFF_BOTMARGIN   (Score.botmargin   / Score.scale_factor)
161 /* right & left margins use functions eff_rightmargin() & eff_leftmargin() */
162
163 /* =========== externs for global variables in generated code ============= */
164
165 extern int yydebug;     /* yacc debug flag */
166 extern FILE *yyin;      /* where lex will read from */
167
168 /* =========== externs for functions ============= */
169
170 #ifdef __STDC__
171 #include <stdlib.h>
172 #include <unistd.h>
173 #else
174 /* UNIX utilities that don't appear in official header files in SV_R3 */
175 extern char *malloc();
176 extern char *calloc();
177 extern char *realloc();
178 extern void free();
179
180 extern void exit();
181 extern int abs();
182 extern int atoi();
183 extern double atof();
184 extern void qsort();
185 extern long strtol();
186 #endif
187
188 /* abshorz.c */
189 extern void abshorz P((void));
190
191 /* absvert.c */
192 extern void absvert P((void));
193
194 /* assign.c */
195 extern void assign_int P((int var, int value, struct MAINLL *mainll_item_p));
196 extern void assign_float P((int var, double value,
197                 struct MAINLL *mainll_item_p));
198 extern void assign_vscheme P((int numvoices, int vtype,
199                 struct MAINLL *mainll_item_p));
200 extern void assign_key P((int num, int acc, int minor,
201                 struct MAINLL *mainll_item_p));
202 extern void assign_string P((int var, char *string,
203                 struct MAINLL *mainll_item_p));
204 extern void assign_unit P((int unittype, struct MAINLL *mainll_p));
205 extern char *copy_string P((char *string, int font, int size));
206 extern void assign_timesig P(( struct MAINLL *mainll_item_p, int invisible,
207                 char **next_alternation_p));
208 extern void assign_font P((int var, int value, struct MAINLL *mainll_item_p));
209 extern void new_staffset P((void));
210 extern void add_staffset P((int start, int end, char *label1, char *label2));
211 extern void set_staffset P((int var, struct MAINLL *mainll_item_p));
212 extern void new_barstlist P((void));
213 extern void add_barst P((int start, int end));
214 extern void set_barstlist P((struct MAINLL *mainll_item_p));
215 extern void new_beamlist P((void));
216 extern void add_beamlist P((RATIONAL value));
217 extern void set_beamlist P((struct MAINLL *mainll_item_p));
218 extern void asgn_stafflines P((int numlines, int printclef,
219                 struct MAINLL *mainll_item_p));
220 extern void set_font P((int var, int value, struct MAINLL *mll_p));
221 extern void add_tab_string_info P((int pitch, int accidental, int nticks,
222                 int octave, struct SSV *ssv_p));
223 extern void set_mnum P((struct BAR *bar_p, int mnum));
224 extern void assign_2floats P((int var, double value1, double value2,
225                 struct MAINLL *mainll_item_p));
226 extern void chkmargin P((double topmargin, double botmargin, double leftmargin,
227                 double rightmargin));
228 extern double adjust2inches P((double value));
229 extern void begin_subbeam P((void));
230 extern void end_subbeam P((void));
231 extern void assign_vcombine P((int qualifier, struct MAINLL * mainll_p));
232
233 /* beaming.c */
234 extern void setbeamloc P((struct GRPSYL *curr_grp_p,
235                 struct GRPSYL *last_grp_p));
236 extern int has_cust_beaming P((struct GRPSYL *grpsyl_p));
237 extern void do_beaming P((struct GRPSYL *grpsyl_p, int grpsize, int staffno,
238                 int vno));
239 extern void set_alt_beams P((struct GRPSYL *grpsyl_p));
240 extern int chk_crossbeam P((struct GRPSYL *gs_p, struct MAINLL *mll_p));
241
242 /* beamstem.c */
243 extern void beamstem P((void));
244
245 /* brac.c */
246 extern int brac_check P((struct STAFFSET *bracelist_p, int nbrace,
247                  struct STAFFSET *bracklist_p, int nbrack));
248 extern int pr_brac P((int is_restart, double x_offset, struct MAINLL *mll_p));
249 extern double width_left_of_score P((struct MAINLL *mll_p));
250 extern double pwidth_left_of_score P((struct MAINLL *mll_p,
251                 struct MAINLL *prev_feed_mll_p));
252
253 /* charinfo.c */
254 extern double height P((int font, int size, int ch));
255 extern double width P((int font, int size, int ch));
256 extern double ascent P((int font, int size, int ch));
257 extern double descent P((int font, int size, int ch));
258 extern char *fix_string P((char *string, int font, int size, char *fname,
259                 int lineno));
260 extern char *mc_num2name P((int code, int font));
261 extern unsigned char mc_name2num P((char *name, char *fname, int lineno,
262                 int *size_p, int *font_p));
263 extern int str2mfont P((int str));
264 extern int mfont2str P((int mfont));
265 #ifdef EXTCHAR
266 extern char *ext_num2name P((int code));
267 #endif
268 extern int is_music_symbol P((char *str));
269 extern double strascent P((char *str));
270 extern double strdescent P((char *str));
271 extern double strheight P((char *str));
272 extern double strwidth P((char *str));
273 extern char *tranchstr P((char *chordstring, int staffno));
274 extern int restchar P((int basictime));
275 extern char *dashstr P((char *str));
276 extern void end_fontsize P((char *str, int *font_p, int *size_p));
277 extern char *ascii_str P((char *str, int verbose, int pagenum, int textmod));
278 extern char *split_string P((char *string, double desired_width));
279 extern int adj_size P((int size, double factor, char *filename, int lineno));
280 extern char *resize_string P((char *string, double factor, char *filename,
281                 int lineno));
282 extern double left_width P((char *));
283 extern char *acc_trans P((char *string));
284 extern char *modify_chstr P((char *string, int modifier));
285 extern int is_ital_font P((int font));
286 extern double circled_dimensions P((char *str, float* height_p, float *width_p,
287                 float *ascent_adjust, float *x_offset_p));
288 extern char *get_reh_string P((char *string, int staffnum));
289
290 /* check.c */
291 extern int rangecheck P((int n, int min, int max, char *name));
292 extern int frangecheck P((double n, double min, double max, char *name));
293 extern int power_of2check P((int n, char *name));
294 extern int contextcheck P((int validcontext, char *action));
295 extern char *contextname P((int cont));
296 extern void check_at_least1visible P((void));
297 extern void chk_vis_feed P((void));
298 extern void chk_interval P((int inttype, int intnum));
299 extern void used_check P((struct MAINLL *mll_p, int var, char *name));
300 extern int l_rangecheck P((int num, int min, int max, char *name, char *fname,
301                 int lineno));
302 extern void combine_rests P((int c));
303 extern char *markname P((int mark));
304 extern void chk_order P((struct SSV *ssv_p, int place));
305 extern int erangecheck P((int n, int min, int max, int empty_value,
306                 char *name));
307 extern void chk_x_arg P((char *x_arg, int *start_p, int *end_p));
308 extern void extract P((int start, int end));
309
310 /* debug.c */
311 extern char *stype_name P((int stype));
312 extern void print_mainll P((void));
313
314 /* errors.c */
315 extern void ufatal P((char *format, ...));
316 extern void pfatal P((char *format, ...));
317 extern void l_ufatal P((char *filename, int lineno, char *format, ...));
318 extern void l_pfatal P((char *filename, int lineno, char *format, ...));
319 extern void l_no_mem P((char *filename, int lineno));
320 extern void cant_open P((char *filename));
321 extern void warning P((char *format, ...));
322 extern void l_yyerror P((char *fname, int lineno, char *format, ...));
323 extern void l_warning P((char *filename, int lineno, char *format, ...));
324 extern void debug P((int level, char *format, ...));
325 extern int debug_on P((int level));
326 extern void doraterr P((int code));
327 extern void error_exit P((void));
328 extern void print_offending_line P((char *filename, int lineno));
329
330 /* font.c */
331 extern double fontascent P((int font, int size));
332 extern double fontdescent P((int font, int size));
333 extern double fontheight P((int font, int size));
334 extern void parse_font_file P((char *filename));
335 extern int lookup_font P((char *fontname));
336 extern int font_index P((int font));
337 extern char *fontnum2name P((int font));
338
339 /* fontdata.c */
340 extern struct FONTINFO Fontinfo[MAXFONTS];
341 extern float Maxfontheight[MAXFONTS];
342 extern float Maxfontascent[MAXFONTS];
343
344 /* gram.y */
345 extern int yyparse P((void));
346 extern int yyerror P((char *msg));
347
348 /* grpsyl.c */
349 extern struct GRPSYL *newGRPSYL P((int grp_or_syl));
350 extern void copy_attributes P((struct GRPSYL *newgrp_p,
351                 struct GRPSYL *oldgrp_p));
352 extern struct TIMELIST *copy_timeunit P((struct GRPSYL *newgrp_p,
353                 struct GRPSYL *oldgrp_p, struct TIMELIST *timelist_p));
354 extern void copy_notes P((struct GRPSYL *newgrp_p, struct GRPSYL *oldgrp_p));
355 extern void link_notegroup P((struct GRPSYL *newgrp_p,
356                 struct GRPSYL *last_grp_p));
357 extern void add_note P((struct GRPSYL *grpsyl_p, int pitch, int accidental,
358                 int octave, int nticks, int has_paren, char *bend_string));
359 #ifdef __STDC__
360 extern int notecomp P((const void *item1_p, const void *item2_p));
361 #else
362 extern int notecomp P((char *item1_p, char *item2_p));
363 #endif
364 extern int reconstruct_basictime P((RATIONAL fulltime));
365 extern int recalc_dots P((RATIONAL fulltime, int basictime));
366 extern void clone_withlist P((struct GRPSYL *newgrp_p,
367                 struct GRPSYL *oldgrp_p));
368 extern char *stringname P((int stringno, int staffno));
369 extern char *format_string_name P((int letter, int accidental,
370                 int nticks));
371 extern void do_bar P((int bartype));
372 extern void begin_tuplet P((void));
373 extern void end_tuplet P((int tupcont, RATIONAL tuptime, int printtup,
374                 int tupside));
375 extern void check4barline_at_end P((void));
376 extern void add_multirest P((int nummeas));
377 extern struct GRPSYL *clone_gs_list P((struct GRPSYL *list_p,
378                 int copy_noteinfo));
379 extern void add_slurto P((struct GRPSYL *grpsyl_p, int pitch, int octave,
380                 int note_index, int slurstyle));
381 extern void free_grpsyls P((struct GRPSYL *gs_p));
382 extern void resize_notelist P((struct GRPSYL *gs_p));
383 extern void add_meas_space P((struct GRPSYL **gs_p_p, int staff, int voice));
384 extern int is_mrpt P((struct GRPSYL *gs_p));
385 extern void report_mix_error P((void));
386 extern void free_notelist P((struct GRPSYL *gs_p));
387 extern void begin_slur P((struct GRPSYL *grpsyl_p, int note_index));
388 extern void set_slurdir P((struct GRPSYL *grpsyl_p, int note_index, int dir));
389 extern int has_pickup P((void));
390 extern struct GRPSYL *expandgrp P((struct GRPSYL *grpsyl_p,
391                 struct TIMELIST *timelist_p));
392 extern RATIONAL calcfulltime P((RATIONAL basictime, int dots));
393
394 /* lex.l */
395 extern void chk_ifdefs P((void));
396 extern int save_macro P((FILE *file));
397 extern int yylex P((void));
398 extern void get_parameters P((char *macname));
399 extern int get_mac_arguments P((char *macname, int num_args));
400 extern void pushback P((int c));
401 extern void begin_raw P(());
402 extern void end_raw P(());
403 extern void new_lexbuff P((FILE *file));
404 extern void del_lexbuff P((void));
405
406 /* locvar.c */
407 extern void fix_locvars P((void));
408
409 /* lyrics.c */
410 extern void lyr_verse P((int begin, int end));
411 extern void proc_lyrics P((struct GRPSYL *grpsyl_p, char *lyrstring));
412 extern void attach_lyrics2staffs P((struct MAINLL *mll_staffs_p));
413 extern void sylwidth P((char *lyrstring, float *wid_b4_syl_p,
414                 float *wid_real_syl_p, float *wid_after_syl_p));
415 extern void set_maxverses P((void));
416 extern struct SSV *get_lyr_dflt_timeunit_ssv P((void));
417 extern void setlyrfont P((int staffno, int font));
418 extern void setlyrsize P((int staffno, int size));
419 extern void lyr_compensate P((struct GRPSYL *gs_p));
420 extern struct GRPSYL *derive_lyrtime P((void));
421 extern void lyr_new_bar P((void));
422
423 /* macros.c */
424 extern int not_in_mac P((int inc_dec));
425 extern void mac_error P((void));
426 extern void includefile P((char *fname));
427 extern int popfile P((void));
428 extern void cmdline_macro P((char *macdef));
429 extern void define_macro P((char *macname));
430 extern void undef_macro P((char *macname));
431 extern void call_macro P((char *macname));
432 extern int is_defined P((char *macname, int paramtoo));
433 #ifndef unix
434 extern void mac_cleanup P((void));
435 #endif
436 extern void add_parameter P((char *macname, char *param_name));
437 extern void set_parm_value P((char *macname, char *argbuff, int argnum));
438 extern char *add2argbuff P((char *argbuff, int c));
439 extern FILE *find_file P((char **filename_p));
440 extern void preproc P((void));
441
442 /* main.c */
443 extern int onpagelist P((int pagenum));
444 extern int yywrap P((void));
445 extern int last_page P((void));
446
447 /* mainlist.c */
448 extern struct MAINLL *newMAINLLstruct P((int structtype, int lineno));
449 extern void insertMAINLL P((struct MAINLL *info_p, struct MAINLL *where));
450 extern void unlinkMAINLL P((struct MAINLL *which_p));
451
452 /* map.c */
453 extern void begin_map P((void));
454 extern void end_map P((void));
455 extern void map_item P((void));
456 extern void save_map P((void));
457 extern struct SSV *get_dflt_timeunit_ssv P((void));
458 extern void reset_input_style P((void));
459 extern int input_style P((int staff, int voice));
460 extern void merge_dup_notes P((struct GRPSYL *gs_p, int n));
461 extern void link_groups P((void));
462 extern int is_tab_range P((void));
463 extern int timelists_equal P((struct TIMELIST *tlist1_p,
464                 struct TIMELIST *tlist2_p));
465
466 /* mkchords.c */
467 extern void makechords P((void));
468
469 /* midi.c */
470 extern void gen_midi P((char *midifilename));
471 extern UINT32B write_delta P((int mfile));
472 extern int voice_used P((int staffno, int vno));
473
474 /* midiutil.c */
475 extern void fix_track_size P((int mfile, long track_start, long track_size));
476 extern int parse_octave P((char *string, int place, char *fname, int lineno));
477 extern int clocks P((int num));
478 extern int getkeyword P((char *string, char **key_p, int *leng_p,
479                 char **arg_p_p));
480 extern int matches P((char *key, int leng, char *cmd));
481 extern int hexdig P((int ch));
482 extern UINT32B midi_wrstring P((int mfile, char *str, int internalform));
483 extern UINT32B wr_varlength P((int mfile, UINT32B num));
484 extern UINT32B midi_keysig P((int mfile, int sharps, int is_minor));
485 extern UINT32B midi_timesig P((int mfile));
486 extern void add_rest P((struct GRPSYL *gs_p, RATIONAL fulltime));
487 extern struct GRPSYL *grp_before P((struct GRPSYL *gs_p, struct MAINLL *mll_p,
488                 int staffno, int v));
489 extern void midi_squeeze P((void));
490 extern void guitar_transpose P((void));
491 extern void other_voice_accidentals P((struct STAFF *staff_p));
492 extern void mv_midi_items P((struct MAINLL *mll_p,
493                 struct MAINLL *topstaff_mll_p));
494 extern int get_param P((char *arg, char *inputfile, int inputlineno,
495                 int *parmnum_p, int *parmval_p));
496
497 /* nxtstrch.c */
498 extern double backsp_width P((int size));
499 extern int next_str_char P((char **str_p, int *font_p, int *size_p));
500 extern int nxt_str_char P((char **str_p, int *font_p, int *size_p,
501                 int *textfont_p, double *vertical_p, double *horizontal_p,
502                 int *in_pile_p, int slash));
503 extern double align_distance P((char *string, int font, int size));
504 extern double pile_width P((void));
505 extern int pile_size P((int size, int in_pile));
506
507 /* parstssv.c */
508 extern struct TIMEDSSV *tssv_create P((int context));
509 extern void tssv_update P((struct TIMEDSSV *timedssv_p, int param, int value));
510 extern void tssv_setgrpsyl P((struct GRPSYL *gs_p));
511 extern void tssv_line P((void));
512 extern struct TIMEDSSV *tssv_sort P((void));
513
514 /* parstuff.c */
515 extern void chk_stuff_header P((int size, int modifier, int place,
516                 int dist_usage));
517 extern void add_stuff_item P((double start_count, double start_steps,
518                 int gracebackup, char *string, int bars, double count,
519                 int dist, int dist_usage));
520 extern int string_is_sym P((char *string, int sym, int font));
521 extern void attach_stuff P((void));
522 extern void meas_stuff_chk P((void));
523 extern void chk4dangling_til_clauses P((char *boundary_desc));
524 extern struct STUFF *newSTUFF P((char *string, int dist, int dist_usage,
525                 double start_count, double start_steps, int gracebackup,
526                 int bars, double count, int stuff_type, int modifier,
527                 int place, char *inputfile, int inputlineno));
528 extern void reset_ped_state P((void));
529 extern void set_reh_string P((struct BAR *bar_p, int fontfamily, int font,
530                 int size, char *string));
531 extern void set_stuff_type P((int stuff_type));
532 extern int dflt_place P((void));
533 extern void ped_endings P((int endingloc));
534 extern void multi_stuff P((int nmeas));
535 extern int get_stuff_type P((void));
536 extern char *stuff_modifier P((int modifier));
537 extern char *pad_string P((char *string, int modifier));
538 extern void connect_stuff P((struct STAFF *staff_p, struct STUFF *stufflist_p));
539 extern void init_reh P((int rehnumber, char *rehletter,
540                 struct MAINLL *mainbar_p));
541
542 /* phrase.c */
543 extern void phrase_points P((struct MAINLL *mll_p, struct STUFF *stuff_p));
544 extern void tieslur_points P((struct MAINLL *mll_p, struct STUFF *stuff_p));
545 extern void bend_points P((struct MAINLL *mll_p, struct STUFF *stuff_p));
546 extern void tabslur_points P((struct MAINLL *mll_p, struct STUFF *stuff_p));
547
548 /* plutils.c */
549 extern struct GRPSYL *nextnongrace P((struct GRPSYL *gs_p)); 
550 extern struct GRPSYL *prevnongrace P((struct GRPSYL *gs_p));
551 extern struct GRPSYL *nextglobnongrace P((struct GRPSYL *gs_p,
552                 struct MAINLL **mll_p_p)); 
553 extern struct GRPSYL *prevglobnongrace P((struct GRPSYL *gs_p,
554                 struct MAINLL **mll_p_p));
555 extern int drmo P((int num));
556 extern double tieslurpad P((struct STAFF *staff_p, struct GRPSYL *gs_p));
557 extern int hasspace P((struct GRPSYL *gs_p, RATIONAL vtime, RATIONAL vtime2));
558 extern struct GRPSYL *closestgroup P((double count, struct GRPSYL *firstgs_p,
559                 int timeden));
560 extern int chkallspace P((struct MAINLL *msbeg_p, struct STUFF *stuff_p,
561                 int vno));
562 extern int allspace P((int vno, struct MAINLL *msbeg_p, RATIONAL begtime,
563                 struct MAINLL *msend_p, RATIONAL endtime));
564 extern struct MAINLL *getendstuff P((struct MAINLL *mainll_p,
565                 struct STUFF *stuff_p, int *timeden_p));
566 extern void accdimen P((struct NOTE *note_p, float *ascent_p, float *descent_p,
567                 float *width_p));
568 extern double staffvertspace P((int s));
569 extern double halfstaffhi P((int s));
570 extern RATIONAL ratbend P((struct NOTE *note_p));
571 extern double notehorz P((struct GRPSYL *gs_p, struct NOTE *note_p, int coord));
572 extern int allsmall P((struct GRPSYL *gs1_p, struct GRPSYL *gs2_p));
573 extern void finalstemadjust P((struct GRPSYL *gs_p));
574 extern double getstemshift P((struct GRPSYL *gs_p));
575 extern int vscheme_voices P((int vscheme));
576 extern struct MAINLL *chmgrp2staffm P((struct MAINLL *mll_p,
577                 struct GRPSYL *gs_p));
578 extern void shiftgs P((struct GRPSYL *gs_p, double shift));
579 extern double nearestline P((double offset));
580 extern void vfyoffset P((struct GRPSYL *g_p[]));
581 extern double adjslope P((struct GRPSYL *g_p, double oldslope, int betweencsb));
582 extern double eos_bar_adjust P((struct BAR *bar_p));
583 extern double curve_y_at_x P((struct CRVLIST *first_p, double x));
584 extern double findcubic P((struct CRVLIST *left_p, struct CRVLIST *right_p,
585                 float *a_p, float *b_p, float *c_p));
586 extern double solvecubic P((double a, double b, double c, double d,
587                 double lo, double hi, double thresh));
588 extern int css_affects_stemtip P((struct GRPSYL *gs1_p));
589 extern struct CHORD *gs2ch P((struct MAINLL *mll_p, struct GRPSYL *gs_p));
590 extern int css_affects_tieslurbend P((struct STUFF *stuff_p, struct MAINLL *mll_p));
591 extern int css_affects_phrase P((struct STUFF *stuff_p, struct MAINLL *mll_p));
592 extern struct GRPSYL *nextsimilar P((struct GRPSYL *gs_p));
593 extern struct GRPSYL *prevsimilar P((struct GRPSYL *gs_p));
594 extern double stemroom P((struct GRPSYL *gs_p));
595
596 /* print.c */
597 extern void print_music P((void));
598 extern void do_linetype P((int ltype));
599 extern void draw_line P((double x1, double y1, double x2, double y2));
600 extern void pr_muschar P((double x, double y, int ch, int size, int font));
601 extern double pr_clefsig P((struct MAINLL *mll_p, struct CLEFSIG *clefsig_p,
602                 int really_print));
603 extern void pr_string P((double x, double y, char *string, int justify,
604                 char *fname, int lineno));
605 extern void end_curve P((int ncoord, double x, double y));
606 extern void outcoord P((double val));
607 extern void draw_wavy P((double x1, double y1, double x2, double y2));
608 extern void do_pr_brac P((double x, double y1, double y2, int which));
609 extern void pr_linenum P((char *inputfile, int inputlineno));
610 extern void do_moveto P((double x, double y));
611 extern void do_line P((double x, double y));
612 extern void do_fill P((void));
613 extern void do_stroke P((void));
614 extern void do_curveto P((double x1, double y1, double x2, double y2,
615                 double x3, double y3));
616 extern void do_newpath P((void));
617 extern void do_closepath P((void));
618 extern void trailer P((void));
619 extern void do_closepath P((void));
620 extern void do_whitebox P((double x1, double y1, double x2, double y2));
621 extern void draw_prop_line P((double x1, double y1, double x2, double y2,
622                 int size, int ltype));
623 extern void do_grid P((double x, double y, double space, struct GRID *grid_p,
624                 int staff));
625 extern void newpage P((struct MAINLL *mll_p));
626 extern void pr_feed P((struct MAINLL *main_feed_p));
627 extern double pr_clef P((int staffno, double x, int really_print, int size));
628
629 /* prntdata.c */
630 extern void pr_staff P((struct MAINLL *mll_p));
631 extern int tupdir P((struct GRPSYL *gs_p, struct STAFF *staff_p));
632 extern char *num2str P((int num));
633 extern char *mrnum P((struct STAFF *staff_p, double *x_p, double *y_offset_p,
634                 double *height_p, double *width_p));
635 extern int tupgetsbrack P((struct GRPSYL *gs_p));
636 extern char *tupnumsize P((struct GRPSYL *gs_p, float *west_p,
637                 float *east_p, float *height_p, struct STAFF *staff_p));
638 extern int pbeamside P((struct GRPSYL *gs_p, struct GRPSYL *first_p));
639 extern struct GRPSYL *nxtbmgrp P((struct GRPSYL *gs_p, struct GRPSYL *first_p,
640                 struct GRPSYL *endnext_p));
641 extern struct GRPSYL *prevbmgrp P((struct GRPSYL *gs_p,
642                 struct GRPSYL *first_p));
643 extern double end_bm_offset P((struct GRPSYL *top_first_p, struct GRPSYL *end_p,
644                 int basictime));
645 extern void pr_slashes P((struct GRPSYL *grpsyl_p, double x, double y,
646                 double sign, double offset, double y_tilt));
647 extern void pr_tab_groups P((struct GRPSYL *gs_p, struct MAINLL *mll_p));
648 extern void pr_withlist P((struct GRPSYL *gs_p));
649 extern void pr_mrpt P((struct GRPSYL *gs_p, struct STAFF *staff_p));
650 extern void pr_multirest P((struct GRPSYL *gs_p, struct STAFF *staff_p));
651
652 /* prntmisc.c */
653 extern void pr_endings P((struct MAINLL *main_feed_p));
654 extern int has_ending P((int staffno));
655 extern void pr_ped_char P((struct STUFF *stuff_p, int staffno));
656 extern void pr_ped_bar P((struct MAINLL *mll_p, struct BAR *bar_p));
657 extern void pr_phrase P((struct CRVLIST *crvlist_p, int linetype, int tapered,
658                 int staffno));
659 extern void pr_allcurve P((float x[], float y[], int num, double cwid,
660                 int tapered));
661 extern void saveped P((struct MAINLL *mll_p, struct BAR *bar_p));
662 extern double ped_offset P((void));
663 extern void pr_bend P((struct CRVLIST *crvlist_p));
664 extern void pr_tabslur P((struct CRVLIST *crvlist_p, int ts_style));
665 extern void pr_sm_bend P((double x, double y));
666 extern void pr_atend P((void));
667
668 /* prnttab.c */
669 extern char *fret_string P((struct NOTE *note_p, struct GRPSYL *gs_p));
670 extern char *bend_string P((struct NOTE *note_p));
671 extern void pr_tab_groups P((struct GRPSYL *gs_p, struct MAINLL *mll_p));
672 extern double pr_tabclef P((int staffno, double x, int really_print, int size));
673
674 /* prolog.c */
675 extern void ps_prolog P((void));
676
677 /* range.c */
678 extern void begin_range P((int place));
679 extern void save_staff_range P((int beginstaffno, int endstaffno));
680 extern void save_vno_range P((int begin, int end));
681 extern void free_rlists P((void));
682 extern void chk_range_type P((int has_ampersand));
683 extern void create_staffs P((void));
684 extern void all P((void));
685 extern void free_staffrange P((void));
686 extern void free_vnorange P((void));
687 extern int is_tab_staff P((int staffno));
688 extern int leadstaff P((void));
689 extern void add_to_sv_list P((void));
690 extern void free_sv_list P((struct SVRANGELIST *svlist_p));
691 extern void begin_sv_list P((void));
692
693 /* relvert.c */
694 extern void relvert P((void));
695
696 /* restsyl.c */
697 extern void restsyl P((void));
698
699 /* roll.c */
700 extern void newROLLINFO P((void));
701 extern void setrolldir P((int dir));
702 extern void rollparam P((int topstaff, int topvoice, int botstaff,
703                 int botvoice));
704 extern void rolloffset P((double offset));
705 extern void do_rolls P((struct MAINLL *mll_p));
706 extern void print_roll P((struct GRPSYL *gs_p));
707 extern int gets_roll P((struct GRPSYL *gs_p, struct STAFF *staff_p, int v));
708
709 /* setgrps.c */
710 extern void setgrps P((void));
711
712 /* setnotes.c */
713 extern void setnotes P((void));
714
715 /* ssv.c */
716 extern void initstructs P((void));
717 extern void zapssv P((struct SSV *s_p));
718 extern struct SSV *svpath P((int s, int field));
719 extern struct SSV *vvpath P((int s, int v, int field));
720 extern void asgnssv P((struct SSV *i_p));
721 extern void setssvstate P((struct MAINLL *mainll_p));
722
723 /* stuff.c */
724 extern void stuff P((void));
725
726 /* symtbl.c */
727 extern void init_symtbl P((void));
728 extern void addsym P((char *symname, float *coordlist_p, int coordtype));
729 extern float *symval P((char *symname, float **ref_p_p));
730 extern struct COORD_INFO *find_coord P((float *key));
731 extern void add_coord P((float *coordlist_p, int coordtype));
732 extern struct GRID *findgrid P((char *name));
733 extern void add_grid P((char *name, char *griddef));
734 extern struct GRID *nextgrid P((struct GRID *grid_p));
735 extern void set_win_coord P((float *coord_p));
736 extern void add_shape P((char *name, char *shapes));
737 extern int nheadchar P((int headshape, int basictime, int stemdir,
738                 int *font_p));
739 extern int get_shape_num P((char *shapename));
740 extern double stem_yoff P((int headch, int font, int stemdir));
741 extern void remember_tsig_params P((struct MAINLL *mll_p));
742 extern void upd_ref P((float *old_p, float *new_p));
743 extern void rep_inpcoord P((struct INPCOORD *old_inpcoord_p,
744                 struct INPCOORD *new_inpcoord_p));
745
746 /* tie.c */
747 extern void tie P((void));
748 extern void tie_carry P((void));
749 extern struct GRPSYL *find_1st_grp_in_nxt_measure P((struct MAINLL *mll_p,
750                 int vno));
751 extern struct GRPSYL *find_next_group P((struct MAINLL *mll_p,
752                 struct GRPSYL *gs_p, char *type));
753 extern struct NOTE *find_matching_note P((struct GRPSYL *gs_p,
754                 int letter, int octave, char *type_p));
755
756 /* trantab.c */
757 extern void tab2tabnote P((void));
758
759 /* trnspose.c */
760 extern void transgroups P((void));
761 extern char *tranchnote P((int letter, int acc, int staffno));
762 extern int eff_key P((int staff));
763 extern void totaltrans P((int s, int *type_p, int *num_p));
764
765 /* undrscre.c */
766 extern int spread_extender P((struct GRPSYL *gs_p, struct MAINLL *mll_p,
767                 int verse, int sylplace, int really_print));
768 extern int has_extender P((char *syl));
769 extern void cont_extender P((struct MAINLL *mll_p, int sylplace,
770                 int verseno));
771 extern int last_char P((char *str));
772
773 /* utils.c */
774 extern void set_cur P((double x, double y));
775 extern void set_win P((double n, double s, double e, double w));
776 extern double width_barline P((struct BAR *bar_p));
777 extern double width_clefsig P((struct CLEFSIG *clefsig_p));
778 extern int clefchar P((int clef));
779 extern void calc_headfoot_height P((void));
780 extern int numbeams P((int btime));
781 extern int acc2char P((int acc));
782 extern double inpc_x P((struct INPCOORD *inpcoord_p, char *fname, int lineno));
783 extern double inpc_y P((struct INPCOORD *inpcoord_p, char *fname, int lineno));
784 extern double find_y_stem P((struct GRPSYL *gs_p));
785 extern double find_x_stem P((struct GRPSYL *gs_p));
786 extern double width_keysig P((int sharps, int naturals));
787 extern struct GRPSYL *nextgrpsyl P((struct GRPSYL *gs_p,
788                 struct MAINLL **mll_p_p));
789 extern struct GRPSYL *prevgrpsyl P((struct GRPSYL *gs_p,
790                 struct MAINLL **mll_p_p));
791 extern void octave_transpose P((struct STAFF *staff_p, struct MAINLL *mll_p,
792                 int vno, int normdir));
793 extern int eff_acc P((struct GRPSYL *gs_p, struct NOTE *note_p,
794                 struct MAINLL *mll_p));
795 extern int acc_from_keysig P((int letter, int staffno, struct MAINLL *mll_p));
796 extern void set_staffscale P((int s));
797 extern void gridsize P((struct GRID *grid_p, int staff, float *north_ptr,
798                 float *south_ptr, float *east_ptr, float *west_ptr));
799 extern double gridspace P((int staff));
800 extern void gridinfo P((struct GRID *grid_p, int staff, int *frets_p,
801                 int *fretnum_p, int *numvert_p, int *topfret_p));
802 extern double clefspace P((int prevclef, double prevscale, int curclef,
803                 double curscale, int measnum));
804 extern double eff_rightmargin P((struct MAINLL *mainll_p));
805 extern double eff_leftmargin P((struct MAINLL *mainll_p));
806 extern short *findprimes P((int max));
807 extern short *factor P((int num));
808 extern double clefwidth P((int clef, int is_small));
809 extern int clefvert P((int clef, int is_small, float *north_p, float *south_p));
810 extern double widest_head P((struct GRPSYL *gs_p));
811 extern void calc_block_heights P((void));
812
813 #endif