1 /* Copyright (c) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
2 * 2005, 2006 by Arkkra Enterprises */
3 /* All rights reserved */
7 * This file has externs for the global variables defined in global.c.
8 * It also has externs for all nonstatic functions.
15 #include <sys\types.h>
25 * Some non-ANSI compilers may not have these defined in stdio.h, so if they
26 * aren't defined, define them now.
38 /* ====== externs for variables--see globals.c for comments about them ===== */
40 extern struct SSV Score
;
41 extern struct SSV Staff
[MAXSTAFFS
];
42 extern struct SSV Voice
[MAXSTAFFS
][MAXVOICES
];
44 extern short Staff_vis
[MAXSTAFFS
+ 1];
45 extern short Voice_vis
[MAXSTAFFS
+ 1][MAXVOICES
+ 1];
47 extern struct MAINLL
*Mainllhc_p
;
48 extern struct MAINLL
*Mainlltc_p
;
52 extern int Errorcount
;
54 extern short Meas_num
;
56 extern int Ppcomments
;
59 extern int Curr_family
;
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
;
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];
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
[];
85 extern char Acclets
[];
86 extern char *Acctostr
[];
87 extern char Ped_start
[];
88 extern char Ped_stop
[];
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];
95 extern float _Page
[NUMCTYPE
];
96 extern float _Win
[NUMCTYPE
];
97 extern float _Cur
[NUMCTYPE
];
99 extern struct BLOCKHEAD Header
;
100 extern struct BLOCKHEAD Footer
;
101 extern struct BLOCKHEAD Header2
;
102 extern struct BLOCKHEAD Footer2
;
104 extern float *Score_location_p
;
105 extern float Staffs_y
[MAXSTAFFS
+ 1];
107 extern struct RANGELIST
*Staffrange_p
;
108 extern struct RANGELIST
*Vnorange_p
;
112 extern short Ped_snapshot
[MAXSTAFFS
+ 1];
114 extern struct MAINLL
*Staffmap_p
[MAXSTAFFS
+ 1];
115 extern struct MAINLL
*List_of_staffs_p
;
117 extern struct SVRANGELIST
*Svrangelist_p
;
118 extern struct GRPSYL
*Curr_gs_list_p
;
119 extern short Got_multirest
;
120 extern short Got_group
;
122 extern short Pagenum
;
123 extern int Last_pagenum
;
125 extern short Font_used
[MAXFONTS
];
127 extern struct ATEND_INFO Atend_info
;
129 extern float Staffscale
;
131 extern float Stepsize
;
132 extern float Flagsep
;
133 extern float Smflagsep
;
134 extern float Tupheight
;
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
;
144 extern RATIONAL Three
;
145 extern RATIONAL Four
;
147 extern RATIONAL Maxtime
;
149 extern int Debuglevel
;
152 /* =========== defines that depend on the above variables ============= */
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)
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() */
163 /* =========== externs for global variables in generated code ============= */
165 extern int yydebug
; /* yacc debug flag */
166 extern FILE *yyin
; /* where lex will read from */
168 /* =========== externs for functions ============= */
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();
183 extern double atof();
185 extern long strtol();
189 extern void abshorz
P((void));
192 extern void absvert
P((void));
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
));
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
,
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
));
243 extern void beamstem
P((void));
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
));
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
,
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
));
266 extern char *ext_num2name
P((int code
));
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
,
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
));
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
,
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
,
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
));
311 extern char *stype_name
P((int stype
));
312 extern void print_mainll
P((void));
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
));
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
));
340 extern struct FONTINFO Fontinfo
[MAXFONTS
];
341 extern float Maxfontheight
[MAXFONTS
];
342 extern float Maxfontascent
[MAXFONTS
];
345 extern int yyparse
P((void));
346 extern int yyerror
P((char *msg
));
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
));
360 extern int notecomp
P((const void *item1_p
, const void *item2_p
));
362 extern int notecomp
P((char *item1_p
, char *item2_p
));
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
,
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
,
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
,
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
));
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));
407 extern void fix_locvars
P((void));
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));
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
));
434 extern void mac_cleanup
P((void));
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));
443 extern int onpagelist
P((int pagenum
));
444 extern int yywrap
P((void));
445 extern int last_page
P((void));
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
));
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
));
467 extern void makechords
P((void));
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
));
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
,
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
));
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
));
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));
515 extern void chk_stuff_header
P((int size
, int modifier
, int place
,
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
));
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
));
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
,
560 extern int chkallspace
P((struct MAINLL
*msbeg_p
, struct STUFF
*stuff_p
,
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
,
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
));
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
,
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
,
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
));
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
,
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
));
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
,
659 extern void pr_allcurve
P((float x
[], float y
[], int num
, double cwid
,
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));
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
));
675 extern void ps_prolog
P((void));
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));
694 extern void relvert
P((void));
697 extern void restsyl
P((void));
700 extern void newROLLINFO
P((void));
701 extern void setrolldir
P((int dir
));
702 extern void rollparam
P((int topstaff
, int topvoice
, int botstaff
,
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
));
710 extern void setgrps
P((void));
713 extern void setnotes
P((void));
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
));
724 extern void stuff
P((void));
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
,
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
));
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
,
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
));
757 extern void tab2tabnote
P((void));
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
));
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
,
771 extern int last_char
P((char *str
));
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));