home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: Multimed
/
Multimed.zip
/
chord3_6.zip
/
chord
/
toc.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-04-25
|
4KB
|
185 lines
static char SccsId[] = "@(#)chord.c 3.6\t Mar. 1995";
static char copyright[] = "Copyright 1991-1995 by Martin Leclerc & Mario Dorion";
#include "chord.h"
struct toc_struct *so_toc = NULL;
struct toc_struct *cur_toc_entry;
extern char title1;
extern int v_pages;
extern int pagination;
extern float scale;
extern int number_all;
extern int song_pages;
extern int text_size;
extern int vpos;
struct toc_struct *toc_ptr;
struct sub_title_struct **sub_ptr_handle;
/* --------------------------------------------------------------------------------*/
void print_toc_entry (toc_ptr)
struct toc_struct *toc_ptr;
{
struct sub_title_struct *sub_ptr;
fprintf (stderr, "+++\n");
if ( toc_ptr != NULL )
{
fprintf (stderr, "*%s\n %d\n", toc_ptr->title, toc_ptr->page_label);
sub_ptr = toc_ptr->sub_titles;
while (sub_ptr != NULL)
{
fprintf(stderr, "%s\n", sub_ptr->sub_title);
sub_ptr = sub_ptr->next_sub;
}
}
else
fprintf (stderr, "Pointer is NULL\n");
fprintf (stderr, "---\n");
}
/* --------------------------------------------------------------------------------*/
void print_toc_entries()
{
struct toc_struct *dummy;
dummy=so_toc;
while (dummy != NULL )
{
print_toc_entry (dummy);
dummy=dummy->next;
}
}
/* --------------------------------------------------------------------------------*/
void add_title_to_toc (title, page_label)
char *title;
int page_label;
{
struct toc_struct **prev_ptr_handle, *new_toc_entry;
static struct toc_struct dummy_toc;
debug ("start of add_title_to_toc");
new_toc_entry = (struct toc_struct *)malloc (sizeof (dummy_toc));
new_toc_entry->page_label=page_label;
new_toc_entry->title = malloc (strlen (title)+1);
new_toc_entry->sub_titles = NULL;
sub_ptr_handle = &new_toc_entry->sub_titles;
strcpy (new_toc_entry->title, title);
toc_ptr = so_toc;
prev_ptr_handle = &so_toc;
while ( ( toc_ptr != NULL) && (strcmp (title, toc_ptr->title) >= 0 ))
{
prev_ptr_handle = &(toc_ptr->next);
toc_ptr=toc_ptr->next;
}
new_toc_entry->next = toc_ptr;
*prev_ptr_handle = new_toc_entry;
cur_toc_entry = new_toc_entry;
}
/* --------------------------------------------------------------------------------*/
void add_subtitle_to_toc (sub_title)
char *sub_title;
{
static struct sub_title_struct dummy_sub_title_struct;
struct sub_title_struct *new_sub = NULL;
char *tmp_string;
debug ("start of add_subtitle_to_toc");
new_sub = (struct sub_title_struct *)malloc (sizeof (dummy_sub_title_struct));
tmp_string = (char *)malloc (strlen (sub_title) + 1);
new_sub->sub_title = tmp_string;
new_sub->next_sub = NULL;
strcpy (new_sub->sub_title, sub_title);
*sub_ptr_handle = new_sub;
sub_ptr_handle = &(new_sub->next_sub);
new_sub = NULL;
}
/* --------------------------------------------------------------------------------*/
void build_ps_toc()
{
char line[MAXTOKEN];
struct toc_struct *toc_ptr;
struct sub_title_struct *sub_ptr;
debug("Debut de build_ps_toc");
/* print_toc_entries(); */
strcpy (&title1, "Index");
if (v_pages % pagination)
do_end_of_page(TRUE);
if (pagination == 4)
{
pagination = 1;
scale = 1.0;
}
v_pages=0;
do_start_of_page();
number_all= FALSE;
song_pages= 0;
set_text_font (text_size+10);
use_text_font();
printf ("(");
ps_puts (&title1);
printf (") dup stringwidth pop 2 div\n");
printf ("%f 2 div exch sub %d moveto\n", WIDTH, vpos);
printf ("show\n");
advance(text_size);
toc_ptr = so_toc;
while (toc_ptr != NULL)
{
/* title */
if ( vpos < BOTTOM + 3 * text_size)
{
advance (vpos);
song_pages= 0;
}
advance(text_size+8);
set_text_font(text_size + 5);
use_text_font();
printf("72 %d moveto\n", vpos);
printf("(");
debug ("Setting title\n");
ps_puts(toc_ptr->title);
printf(") show\n");
printf("500 %d moveto\n", vpos);
debug ("Setting page_label\n");
printf("(%d) show\n", toc_ptr->page_label);
/* sub titles */
sub_ptr=toc_ptr->sub_titles;
while (sub_ptr != NULL)
{
advance(text_size);
set_text_font(text_size);
use_text_font();
printf ("108 %d moveto\n", vpos);
printf("(");
ps_puts(sub_ptr->sub_title);
printf(") show\n");
sub_ptr = sub_ptr->next_sub;
}
toc_ptr= toc_ptr->next;
}
vpos = vpos - text_size - 5;
set_text_font (text_size);
}
/* --------------------------------------------------------------------------------*/