From 193ddc174180d94556cc0dc5128775ff6e6af158 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Fri, 4 May 2012 16:55:31 -0400 Subject: [PATCH] Have presenter get slide and footer info from files --- TODO | 5 + asoft_presenter.c | 169 ++++++++++++++---- presenter_demo/Makefile | 14 +- presenter_demo/info | 13 +- presenter_demo/presenter_demo.dsk | Bin 143360 -> 143360 bytes .../{slide1 => slide_rapl_continued} | 0 presenter_demo/{slide0 => slide_rapl_finish} | 0 presenter_demo/{slide2 => slide_rapl_intro} | 0 presenter_demo/{slide3 => slide_rapl_more} | 0 9 files changed, 162 insertions(+), 39 deletions(-) rename presenter_demo/{slide1 => slide_rapl_continued} (100%) rename presenter_demo/{slide0 => slide_rapl_finish} (100%) rename presenter_demo/{slide2 => slide_rapl_intro} (100%) rename presenter_demo/{slide3 => slide_rapl_more} (100%) diff --git a/TODO b/TODO index 5887cb8b..539e8e91 100644 --- a/TODO +++ b/TODO @@ -1,3 +1,8 @@ +pcx2hgr: + error checking + complain if not 140x160 or 140x192 + + Fix undelete, it doesn't re-allocate all the sectors. diff --git a/asoft_presenter.c b/asoft_presenter.c index f155b57e..4d65298c 100644 --- a/asoft_presenter.c +++ b/asoft_presenter.c @@ -126,14 +126,66 @@ struct project_info { int slides; }; +struct footer_info { + char *left; + char *center; +}; + +#define SLIDE_40COL 0 +#define SLIDE_80COL 1 +#define SLIDE_HGR 2 +#define SLIDE_HGR2 3 + +#define MAX_SLIDES 100 + +struct slide_info { + int type; + char *filename; +}; + +#define LINES_PER_SLIDE 25 + +static void generate_slide(int num, int max, char*filename) { + + int line_num; + + /* line numbers start at 100 and run LINES_PER_SLIDE per slide */ + line_num=100+(num*LINES_PER_SLIDE); + + printf("%d REM ",line_num); line_num++; + print_line('*',strlen(filename)+8); + printf("\n"); + printf("%d REM *** %s ***\n",line_num,filename); line_num++; + printf("%d REM ",line_num); line_num++; + print_line('*',strlen(filename)+8); + printf("\n"); + printf("%d GOSUB 10000\n",line_num); line_num++; + printf("%d VTAB 1: PRINT \" RAPL %d\"\n",line_num,num); line_num++; + printf("%d PRINT\n",line_num); line_num++; + printf("%d PRINT \"* RAPL is awesome\"\n",line_num); line_num++; + printf("%d GOSUB 9000\n",line_num); line_num++; + printf("%d ON N%% GOTO %d,%d,%d\n", + line_num, + /* previous */ + num==0?(100+(num*LINES_PER_SLIDE)):(100+((num-1)*LINES_PER_SLIDE)), + /* current */ + 100+(num*LINES_PER_SLIDE), + /* next */ + num<(max-1)?(100+((num+1)*LINES_PER_SLIDE)): + (100+(num*LINES_PER_SLIDE))); +} + int main(int argc, char **argv) { + int i; char project_directory[BUFSIZ]; char filename[BUFSIZ],string[BUFSIZ]; char *result; FILE *fff; struct project_info info; + struct footer_info footer; + struct slide_info slides[MAX_SLIDES]; if (argc<2) { fprintf(stderr,"\n"); @@ -152,63 +204,118 @@ int main(int argc, char **argv) { exit(1); } + /* Get Title */ + while(1) { + result=fgets(string,BUFSIZ,fff); + if (result==NULL) { + fprintf(stderr,"Unexpected EOF finding TITLE in %s\n",filename); + exit(1); + } + if (!strncmp("TITLE",string,5)) break; + } result=fgets(string,BUFSIZ,fff); string[strlen(string)-1]='\0'; info.title=strdup(string); + /* Get Author */ + while(1) { + result=fgets(string,BUFSIZ,fff); + if (result==NULL) { + fprintf(stderr,"Unexpected EOF finding AUTHOR in %s\n",filename); + exit(1); + } + if (!strncmp("AUTHOR",string,6)) break; + } result=fgets(string,BUFSIZ,fff); string[strlen(string)-1]='\0'; info.author=strdup(string); - + + /* Get E-mail */ + while(1) { + result=fgets(string,BUFSIZ,fff); + if (result==NULL) { + fprintf(stderr,"Unexpected EOF finding EMAIL in %s\n",filename); + exit(1); + } + if (!strncmp("EMAIL",string,5)) break; + } result=fgets(string,BUFSIZ,fff); string[strlen(string)-1]='\0'; info.email=strdup(string); - result=fgets(string,BUFSIZ,fff); - sscanf(string,"%d",&info.slides); + /* Get list of slides */ + + while(1) { + result=fgets(string,BUFSIZ,fff); + if (result==NULL) { + fprintf(stderr,"Unexpected EOF finding SLIDES in %s\n",filename); + exit(1); + } + if (!strncmp("SLIDES",string,6)) break; + } + + info.slides=0; + + while(1) { + result=fgets(string,BUFSIZ,fff); + if (result==NULL) { + fprintf(stderr,"Unexpected EOF finding END_SLIDES in %s\n",filename); + exit(1); + } + if (!strncmp("END_SLIDES",string,10)) break; + + string[strlen(string)-1]='\0'; + slides[info.slides].filename=strdup(string); + + info.slides++; + } if (result==NULL) fprintf(stderr,"Error reading!\n"); fclose(fff); + /************************/ + /* read in footer info */ + /************************/ + + strncpy(project_directory,argv[1],BUFSIZ); + sprintf(filename,"%s/footer",project_directory); + + fff=fopen(filename,"r"); + if (fff==NULL) { + fprintf(stderr,"Error! Could not open %s\n",filename); + exit(1); + } + + result=fgets(string,BUFSIZ,fff); + string[strlen(string)-1]='\0'; + footer.left=strdup(string); + + result=fgets(string,BUFSIZ,fff); + string[strlen(string)-1]='\0'; + footer.center=strdup(string); + + fclose(fff); + + + /**************************/ + /* Generate the program */ + /**************************/ + /* Print the initial program remarks */ generate_initial_comment(info.title,info.author,info.email); printf("20 HOME\n"); printf("30 P%%=0 : TP%%=%d\n",info.slides-1); - printf("100 GOSUB 10000\n"); - printf("101 VTAB 1: PRINT \" RAPL\"\n"); - printf("102 PRINT\n"); - printf("103 PRINT \"* RAPL is awesome\"\n"); - printf("130 GOSUB 9000\n"); - printf("131 ON N%% GOTO 100,100,200\n"); - - printf("200 GOSUB 10000\n"); - printf("201 VTAB 1: PRINT \" RAPL1\"\n"); - printf("202 PRINT\n"); - printf("203 PRINT \"* RAPL2 is awesome\"\n"); - printf("230 GOSUB 9000\n"); - printf("231 ON N%% GOTO 200,100,300\n"); - - printf("300 GOSUB 10000\n"); - printf("301 VTAB 1: PRINT \" RAPL2\"\n"); - printf("302 PRINT\n"); - printf("303 PRINT \"* RAPL3 is awesome\"\n"); - printf("330 GOSUB 9000\n"); - printf("331 ON N%% GOTO 300,200,400\n"); - - printf("400 GOSUB 10000\n"); - printf("401 VTAB 1: PRINT \" RAPL3\"\n"); - printf("402 PRINT\n"); - printf("403 PRINT \"* RAPL4 is awesome\"\n"); - printf("430 GOSUB 9000\n"); - printf("431 ON N%% GOTO 400,300,400\n"); + for(i=0;i VINCE.IMG -TEST: test.bas - ../tokenize_asoft < test.bas > TEST +PRESENTER_DEMO: demo.bas + ../tokenize_asoft < demo.bas > PRESENTER_DEMO -test.bas: ../asoft_presenter - ../asoft_presenter . > test.bas +demo.bas: ../asoft_presenter + ../asoft_presenter . > demo.bas clean: - rm -f *~ *.IMG *.bas + rm -f *~ *.IMG *.bas PRESENTER_DEMO diff --git a/presenter_demo/info b/presenter_demo/info index 24f753f0..c4aaa386 100644 --- a/presenter_demo/info +++ b/presenter_demo/info @@ -1,4 +1,15 @@ +TITLE Measuring Power and Energy with PAPI + +AUTHOR Vince Weaver + +EMAIL vweaver1@eecs.utk.edu -4 + +SLIDES +slide_rapl_continued +slide_rapl_finish +slide_rapl_intro +slide_rapl_more +END_SLIDES \ No newline at end of file diff --git a/presenter_demo/presenter_demo.dsk b/presenter_demo/presenter_demo.dsk index d27c6e407db235dc3d83f4a2e4efb173d93608f7..3561b8ca509f8e734c6e6aa844a7c1bb28dc1b64 100644 GIT binary patch delta 7419 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