home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / files / acc / utility / printer / printer.c < prev    next >
Encoding:
C/C++ Source or Header  |  1987-11-10  |  4.3 KB  |  149 lines

  1. #include <string.h>      
  2. #include <gemdefs.h>
  3. #include <obdefs.h>
  4. #include <osbind.h>
  5. #include <stdio.h>
  6. #include "printer.h"
  7.  
  8.  int retn;   /* return value for form_do calls */
  9.  int menu_id;
  10.  int event;
  11.  int ret;
  12.  
  13. extern int    gl_apid;
  14. int    gl_hchar;
  15. int    gl_wchar;
  16. int    gl_wbox;
  17. int    gl_hbox;    /* system sizes */
  18. int msgbuff[8];    /* event message buffer */
  19.  
  20. int     phys_handle;    /* physical workstation handle */
  21. int     handle;        /* virtual workstation handle */
  22.  
  23. int    xdesk,ydesk,hdesk,wdesk;
  24. int    xold,yold,hold,wold;
  25. int    xwork,ywork,hwork,wwork;    /* desktop and work areas */
  26.  
  27. int    msgbuf[8];    /* event message buffer */
  28. int    keycode;    /* keycode returned by event-keyboard */
  29. int    mx,my;        /* mouse x and y pos. */
  30. int    butdown;    /* button state tested for, UP/DOWN */
  31.  
  32. int    contrl[12];
  33. int    intin[128];
  34. int    ptsin[128];
  35. int    intout[128];
  36. int    ptsout[128];    /* storage wasted for idiotic bindings */
  37.  
  38. int work_in[11];    /* Input to GSX parameter array */
  39. int work_out[57];    /* Output from GSX parameter array */
  40. int pxyarray[10];    /* input point array */
  41. int test;           /* result from char output to printer */
  42. #define TRUE 1
  43. #define FALSE 0
  44.  
  45. /****************************************************************/
  46. /* open virtual workstation                    */
  47. /****************************************************************/
  48. open_vwork()
  49. {
  50. int i;
  51.     for(i=0;i<10;work_in[i++]=1);
  52.     work_in[10]=2;
  53.     handle=phys_handle;
  54.     v_opnvwk(work_in,&handle,work_out);
  55. }
  56.  
  57. main()
  58. {
  59.     OBJECT *printer_dialog;                  /* pointer to midi tree       */
  60.     char string1[40], string2[40];       /* storage for ted_info struct */
  61.     int base, i,  count, place, cnt;  /* variable for base conversion */
  62.     char **ptr, output, *str;
  63.               int     x;
  64.       
  65.     appl_init();
  66.     phys_handle=graf_handle(&gl_wchar,&gl_hchar,&gl_wbox,&gl_hbox);
  67.     open_vwork();
  68.     menu_id = menu_register(gl_apid,"  Printer_Out");     /* I.D. for .ACC */
  69.     base = 10;
  70.     
  71.     
  72. /* load resource file */ 
  73.   
  74.     if (!rsrc_load("PRINTER.RSC")) {
  75.         form_alert(1, "[0][Cannot find PRINTER.RSC file...][OK]"); }
  76.  
  77.  
  78. while (TRUE)  {                       /* forever loop for evnt_multi */
  79.         event = evnt_multi(MU_MESAG,
  80.             1,1,butdown,
  81.             0,0,0,0,0,
  82.             0,0,0,0,0,
  83.             msgbuf,0,0,&mx,&my,&ret,&ret,&keycode,&ret);
  84.             
  85.        
  86.  
  87.        if (msgbuf[0] == AC_OPEN)  {    
  88.              if (msgbuf[4] == menu_id)
  89.  {                                           /* start message handle */
  90.     rsrc_gaddr(0, PRINTER, &printer_dialog);
  91.     ((TEDINFO *)printer_dialog[TEXT].ob_spec)->te_ptext = string1;
  92.     ((TEDINFO *)printer_dialog[TEXT].ob_spec)->te_txtlen = 40;
  93.     do_dialog(printer_dialog);
  94.     if(retn == B1)                                    /* send ? (Ok button)      */
  95.              {     cnt = 1;
  96.               count = 0;
  97.               place = 0;
  98.                base = 10;
  99.                test = TRUE;
  100.            while(test==TRUE) {    
  101.                          switch(string1[count]) {
  102.               
  103.                 case ',' :  str=&string1[place];
  104.                             output = (char) strtol(str,ptr,base);
  105.                             if(!Cprnout(output)) {
  106.                                form_alert(1, "[0][Device not responding.|Check connections...][OK]"); 
  107.                                test=FALSE;          }
  108.                             count++;
  109.                             place=count;
  110.                             break;
  111.                             
  112.                 case '\0' : if(count==0) break;
  113.                             str=&string1[place];
  114.                             output = (char) strtol(str,ptr,base);
  115.                             if(!Cprnout(output)) {
  116.                                form_alert(1, "[0][Device not responding.|Check connections...][OK]"); 
  117.                                test=FALSE;          }
  118.                      }
  119.                 if (string1[count]=='\0')  
  120.                              break; 
  121.                 count++;  
  122.                          }
  123.                            
  124.  
  125.       } 
  126.     }                                 
  127.    }     
  128.  }
  129. }
  130. do_dialog(printer_dialog)
  131. OBJECT *printer_dialog ;
  132. {
  133.     int cx, cy, cw, ch ;
  134.     graf_mouse(M_OFF,0x0L);
  135.     form_center(printer_dialog, &cx, &cy, &cw, &ch);
  136.     form_dial(FMD_START, 0,0,0,0, cx, cy, cw, ch);
  137.     objc_draw(printer_dialog, 0, 10, cx, cy, cw, ch);
  138.     graf_mouse(M_ON,0x0L);
  139.     retn=form_do(printer_dialog, 0);
  140.     form_dial(FMD_FINISH, 0,0,0,0,cx, cy, cw, ch);
  141.     objc_change(printer_dialog,retn,0,cx,cy,cw,ch,0,0);
  142. }
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.