home *** CD-ROM | disk | FTP | other *** search
Wrap
#include "define.h" #include <obdefs.h> /* OBJECT DEFINTIONS */ #include <gemdefs.h> /* GEM DEFINITIONS */ #include <osbind.h> /* BIOS/GEMDOS/XBIOS FUNCTIONS */ #include <vdibind.h> /* VDI DECLERATIONS AND BINDINGS */ #include <aesbind.h> /* BINDINGS FOR AES */ #include <stdio.h> /* STANDARD I/O ROUTINES */ #include "cled.h" #include "rpcfg.h" int space[48]= {32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 }; int graph[3] = {45,0,0}; /* Size of graphic and one blank column */ int leftb[8] = {6,0,255,0,0,0,0,0}; /* Size 6, vertical bar, far left */ int rightb[8]= {6,0,0,0,0,0,0,255}; /* Size 6, vertical bar, far right */ int nline[2] = {10,13}; /* New line */ extern char data[3][40]; /* storage for graphic data */ extern char songs[16][47]; /* storage for songs & labels */ extern struct COMMAND print_codes[11]; /* Array to hold printer commands */ extern char print_name[80]; /* Printers name */ extern int coloura,quality; /* Have we got colour, nlq? 0=No */ /**************************************************************************** SUBROUTINE : print_setup VERSION : 1.1 AUTHOR : ROBERT ALLEY DATE : 02/07/90 DESCRIPTION : Do a dialog box to get printer setup info. LOGIC USED : STEP 1. Get address of dialog, pass side1 and side2 as well as their lengths for ftexts, get dialogs centred co-ords, set aside space for dialog, draw it. While value returned is less than the exit values : set colour or style based on return. Unset both exit buttons. Free the memory allocated. Return the exit status. RETURNS : val I Exit status (DOPRINT or NOPRINT). PARAMETERS : colour *I Pointer to colour to print in. style *I Pointer to print style to use. side1,side2 *CH Side labels VARIABLES : dialog *OBJECT Dialog to form val I Value returned from dialog cx,cy,cw,ch I Co-ords of centered dialog box. NOTES : Form_dial changed (zeros before cx,cy etc. instead of after) to fix non-removal bug. USAGE : print_steup(&colour,&style); ****************************************************************************/ print_setup(colour,style,side1,side2) int *style,*colour; char *side1,*side2; { OBJECT *dialog; int val=0; int cx, cy, cw, ch; rsrc_gaddr(0, PRINT, (OTYPE) &dialog); print_name[40]=0; ((TEDINFO *)dialog[PRNTNAME].ob_spec)->te_ptext=print_name; ((TEDINFO *)dialog[PRNTNAME].ob_spec)->te_txtlen =strlen(print_name); if (coloura==0) { objc_change(dialog,CBLACK,0,0,0,0,0,DISABLED,0); objc_change(dialog,CBLUE,0,0,0,0,0,DISABLED,0); objc_change(dialog,CRED,0,0,0,0,0,DISABLED,0); } else { objc_change(dialog,CBLACK,0,0,0,0,0,SELECTED,0); objc_change(dialog,CBLUE,0,0,0,0,0,NORMAL,0); objc_change(dialog,CRED,0,0,0,0,0,NORMAL,0); *colour=CBLACK; } if (quality==0) { objc_change(dialog,NLQ,0,0,0,0,0,DISABLED,0); objc_change(dialog,DRAFT,0,0,0,0,0,DISABLED,0); } else { objc_change(dialog,NLQ,0,0,0,0,0,SELECTED,0); objc_change(dialog,DRAFT,0,0,0,0,0,NORMAL,0); *style=NLQ; } ((TEDINFO *)dialog[SIDE1].ob_spec)->te_ptext = side1; ((TEDINFO *)dialog[SIDE1].ob_spec)->te_txtlen = 9; ((TEDINFO *)dialog[SIDE2].ob_spec)->te_ptext = side2; ((TEDINFO *)dialog[SIDE2].ob_spec)->te_txtlen = 9; form_center(dialog, &cx, &cy, &cw, &ch); form_dial(FMD_START, 0,0,0,0,cx, cy, cw, ch); objc_draw(dialog, 0, 10, cx, cy, cw, ch); while (val < DOPRINT) { val=form_do(dialog, 0); if ((val==NLQ)||(val==DRAFT)) *style=val; if ((val >=CBLUE)&&(val <=CBLACK)) *colour=val; } objc_change(dialog,NOPRINT,0,0,0,0,0,0,1); objc_change(dialog,DOPRINT,0,0,0,0,0,0,1); form_dial(FMD_FINISH, 0,0,0,0,cx, cy, cw, ch); return val; } /**************************************************************************** SUBROUTINE : print VERSION : 1.0 AUTHOR : ROBERT ALLEY DATE : ??/??/89 DESCRIPTION : Print string on printer. LOGIC USED : STEP 1. Loop from 0 to length, print corresponding char. PARAMETERS : string C81 String to be printed length I Numbers of characters to print. VARIABLES : loop I Loop counter. out I Current character being printed. USAGE : print(string,length); ****************************************************************************/ print (string,length) int string[81]; int length; { int loop; int out; for (loop = 0;loop < length; loop++) { out = string[loop]; Cprnout(out); } } /**************************************************************************** SUBROUTINE : printc VERSION : 1.0 AUTHOR : ROBERT ALLEY DATE : 11/07/90 DESCRIPTION : Print a command on the printer. LOGIC USED : STEP 1. Loop from 0 to length, print corresponding char. PARAMETERS : string C81 String to be printed length I Numbers of characters to print. VARIABLES : loop I Loop counter. out I Current character being printed. USAGE : print(string,length); ****************************************************************************/ printc (command,var) struct COMMAND command; int var; { int loop; int out; for (loop = 0;loop < command.length; loop++) { out=*command.list++; if (out==0x80) Cprnout(var); else Cprnout(out); } } /*************************************************************************** SUBROUTINE : print_label VERSION : 1.2 AUTHOR : ROBERT ALLEY DATE : 02/07/90 DESCRIPTION : Print the cassette label on the line printer. LOGIC USED : STEP 1. While printer not ready, check its status, if not ready, ask user if they want to quit. If they do return. While status is print, get printer set up info, if they said print, print. Ask if they want to do another. VARIABLES : colour I Colour to print in. style I Style to print in. status I Status of print (1=do print, any other = dont) side1,side2 CH Headings for the two sides label CH Current heading being printed loop,outloop I loop counters REQD. SUBPG.: print_setup print USAGE : print_label(); ****************************************************************************/ print_label() { static int colour=CBLACK; static int style=NLQ; static char side1[9]="SIDE 1",side2[9]="SIDE 2"; char label[19]; int status=1; int loop,outloop,abort; long printred=0L; while (printred==0L) { printred=Bcostat(0); if (printred==0L) { abort=form_alert(1,"[1][Printer Not Ready|Check power, online,|connections etc.][Retry|Abort]"); if (abort==2) return(0); } } while (status==1) { status=print_setup(&colour,&style,side1,side2); if (status==DOPRINT) { if (coloura==1) { switch (colour) { case CBLACK : printc(print_codes[0],0); break; case CBLUE : printc(print_codes[2],0); break; case CRED : printc(print_codes[1],0); break; } } if (quality==1) { switch (style) { case NLQ : printc(print_codes[5],0); break; case DRAFT : printc(print_codes[6],0); break; } } printc(print_codes[4],0); printc(print_codes[7],0); printc(print_codes[3],23); print(space,48); printc(print_codes[8],0); print(nline,2); printc(print_codes[9],0); print(leftb,8); print(space,46); printc(print_codes[9],0); print(rightb,8); print(nline,2); for(outloop=0; outloop<3;outloop++) { printc(print_codes[9],0); print(leftb,8); if (outloop==1) { sprintf(label," %8.8s ",side1); for (loop=0;loop<18; Cprnout( (int)label[loop++] )); } else print(space,18); printc(print_codes[9],0); print(graph,3); for(loop=0; loop<40; loop++) Cprnout(data[outloop][loop]); Cprnout(0); Cprnout(0); Cprnout(0); Cprnout(0); if (outloop==1) { sprintf(label," %8.8s ",side2); for (loop=0;loop<19; Cprnout( (int)label[loop++] )); } else print(space,19); printc(print_codes[9],0); print(rightb,8); print(nline,2); } printc(print_codes[9],0); print(leftb,8); print(space,46); printc(print_codes[9],0); print(rightb,8); Cprnout(13); printc(print_codes[7],0); print(space,48); printc(print_codes[8],0); print(nline,2); printc(print_codes[3],16); for (loop=0;loop<13;loop++) { /* print songs */ printc(print_codes[9],0); print(leftb,8); print(space,22); printc(print_codes[10],0); print(space,23); printc(print_codes[9],0); print(rightb,8); print(nline,2); printc(print_codes[9],0); print(leftb,8); for (outloop=0;outloop<22;outloop++) Cprnout(songs[loop][outloop]); printc(print_codes[10],0); for (outloop=23;outloop<46;outloop++) Cprnout(songs[loop][outloop]); printc(print_codes[9],0); print(rightb,8); print(nline,2); } /* print bot of songs */ printc(print_codes[9],0); print(leftb,8); print(space,46); printc(print_codes[9],0); print(rightb,8); Cprnout(13); printc(print_codes[7],0); print(space,48); printc(print_codes[8],0); print(nline,2); printc(print_codes[3],23); /* print top of spine */ printc(print_codes[9],0); print(leftb,8); print(space,46); printc(print_codes[9],0); print(rightb,8); print(nline,2); /* print spine */ printc(print_codes[9],0); print(leftb,8); for (outloop=0;outloop<46;outloop++) Cprnout(songs[14][outloop]); printc(print_codes[9],0); print(rightb,8); print(nline,2); printc(print_codes[9],0); print(leftb,8); print(space,46); printc(print_codes[9],0); print(rightb,8); print(nline,2); printc(print_codes[9],0); print(leftb,8); for (outloop=0;outloop<46;outloop++) Cprnout(songs[15][outloop]); printc(print_codes[9],0); print(rightb,8); print(nline,2); /* print bot of spine */ printc(print_codes[9],0); print(leftb,8); print(space,46); printc(print_codes[9],0); print(rightb,8); Cprnout(13); printc(print_codes[7],0); print(space,48); printc(print_codes[8],0); print(nline,2); for(loop=0;loop<4;loop++) { /* print tail */ printc(print_codes[9],0); print(leftb,8); print(space,46); printc(print_codes[9],0); print(rightb,8); print(nline,2); } /* print bot of label */ printc(print_codes[9],0); print(leftb,8); print(space,46); printc(print_codes[9],0); print(rightb,8); Cprnout(13); printc(print_codes[7],0); print(space,48); printc(print_codes[8],0); print(nline,2); status=form_alert(2,"[0][Print again][Yes|No]"); } } }