home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / printer / graphpaper / src / src.lha / events.c < prev    next >
C/C++ Source or Header  |  1993-04-06  |  5KB  |  220 lines

  1. /* access the LongInt field of an integer gadget */
  2. #include "graph.h"
  3.  
  4. int   x_dpi_V;
  5. int   y_dpi_V;
  6. int   Minor_Thickness_V;
  7. int   Major_Thickness_V;
  8. float x_size_v;
  9. float y_size_v;
  10. int   x_grids_page_v;
  11. int   y_grids_page_v;
  12. int   minor_x_v;
  13. int   minor_y_v;
  14.  
  15. static void set_maxthick()
  16. {
  17.     if (Minor_Thickness_V > Major_Thickness_V ) {
  18.         maxthick = Minor_Thickness_V;
  19.     } else {
  20.         maxthick = Major_Thickness_V;
  21.     }
  22. }
  23.  
  24. static void show_vals(void)
  25. {
  26.     printf("x_dpi           = %d\n",  x_dpi_V);
  27.     printf("y_dpi           = %d\n",  y_dpi_V);
  28.     printf("Minor_Thickness = %d\n",  Minor_Thickness_V);
  29.     printf("Major_Thickness = %d\n",  Major_Thickness_V);
  30.     printf("x_size            %f\n",  x_size_v);
  31.     printf("y_size            %f\n",  y_size_v);
  32.     printf("x_grids_page_v  = %d\n",  x_grids_page_v);
  33.     printf("y_grids_page_v  = %d\n",  y_grids_page_v);
  34.     printf("minor_x_v       = %d\n",  minor_x_v);
  35.     printf("minor_y_v       = %d\n",  minor_y_v);
  36.     printf("maxthick        = %d\n",  maxthick);
  37. }
  38.  
  39. /* Gadgets */
  40.  
  41. void GetValues(void)
  42. {
  43.     x_dpi_V           = INTFIELD(x_dpi);
  44.     y_dpi_V           = INTFIELD(y_dpi);
  45.     Minor_Thickness_V = INTFIELD(Minor_Thickness);
  46.     Major_Thickness_V = INTFIELD(Major_Thickness);
  47.     sscanf(STRFIELD(x_size), "%f", &x_size_v);
  48.     sscanf(STRFIELD(y_size), "%f", &y_size_v);
  49.     x_grids_page_v    = INTFIELD(x_grids_page);
  50.     y_grids_page_v    = INTFIELD(y_grids_page);
  51.     minor_x_v         = INTFIELD(minor_x);
  52.     minor_y_v         = INTFIELD(minor_y);
  53.  
  54.     set_maxthick();
  55. }
  56.  
  57. void initialize(void)
  58. {
  59.     INTFIELD(x_dpi)           = 300;
  60.     INTFIELD(y_dpi)           = 300;
  61.     INTFIELD(Minor_Thickness) =   1;  
  62.     INTFIELD(Major_Thickness) =   4;  
  63.  
  64.     sprintf((char *)          x_dpiSIBuff,"%d", INTFIELD(x_dpi));
  65.     sprintf((char *)          y_dpiSIBuff,"%d", INTFIELD(y_dpi));
  66.     sprintf((char *)Minor_ThicknessSIBuff,"%d", INTFIELD(Minor_Thickness));
  67.     sprintf((char *)Major_ThicknessSIBuff,"%d", INTFIELD(Major_Thickness));
  68.  
  69.     set_maxthick();
  70.  
  71.     GetValues();
  72.  
  73.     /* these will be initialized once main gets far enough */
  74.     x_size_v = 1.0;
  75.     y_size_v = 1.0;
  76.     x_grids_page_v = 9;
  77.     y_grids_page_v = 7;
  78.     minor_x_v = 10;
  79.     minor_y_v = 10;
  80.  
  81.  /* show_vals(); */
  82. }
  83.  
  84. void OffGad(struct Gadget *gad)
  85. {
  86. #if 0
  87.     if (gad->GadgetText) {
  88.         printf("Turning off %s\n", gad->GadgetText->IText);
  89.     }
  90. #endif
  91.     gad->UserData  = (APTR)gad->Flags; /* remember old enabled flag */
  92.     SnipAllBut(gad);
  93.     OffGadget(gad, wG, NULL);
  94.     RestoreGads();
  95. }
  96.  
  97. #define dotogads(func) \
  98.     func(&LogLog); \
  99.     func(&LogY); \
  100.     func(&LogX); \
  101.     func(&None); \
  102.     func(&Linear); \
  103.  /* func(&go);            skip go - that one becomes the Cancel gadget */ \
  104.     func(&check); \
  105.     func(&Major_Thickness); \
  106.     func(&Minor_Thickness); \
  107.     func(&x_dpi); \
  108.     func(&y_dpi); \
  109.     func(&x_size); \
  110.     func(&y_size); \
  111.     func(&size_slider_left); \
  112.     func(&size_slider_middle); \
  113.     func(&size_slider_right); \
  114.     func(&x_grids_page);   \
  115.     func(&y_grids_page);   \
  116.     func(&grids_slider_left); \
  117.     func(&grids_slider_middle); \
  118.     func(&grids_slider_right); \
  119.     func(&minor_x);   \
  120.     func(&minor_y);   \
  121.     func(&minor_slider_left); \
  122.     func(&minor_slider_middle); \
  123.     func(&minor_slider_right);
  124.  
  125. void TurnOffGadgets(void)
  126. {
  127.     dotogads(OffGad);
  128. }
  129.  
  130. void OnGad(struct Gadget *gad)
  131. {
  132. #if 0
  133.     if (gad->GadgetText) {
  134.         printf("Turning on %s\n", gad->GadgetText->IText);
  135.     }
  136. #endif
  137.     /* check to make sure it was enabled before */
  138.     if ( !(((int)gad->UserData) & GFLG_DISABLED) ) {
  139.         SnipAllBut(gad);
  140.         OnGadget(gad, wG, NULL);
  141.         RestoreGads();
  142.     }
  143. }
  144.  
  145. void TurnOnGadgets(void)
  146. {
  147.     dotogads(OnGad);
  148. }
  149.  
  150. /* batch callable */
  151. void do_graph(int doit)
  152. {
  153.     message("Allocating memory ...");
  154.     if (!getraster()) {
  155.         return;
  156.     }
  157.     message("Creating graph ...");
  158.     DrawGraph();
  159.     message("Checking graph ...");
  160.     if (PrintGraph(SPECIAL_NOPRINT)) {
  161.         /* it fits, do it for real */
  162.         if (doit) {
  163.             message("Printing graph ...");
  164.             if (PrintGraph(0)) {
  165.                 message("Done.");
  166.             } else {
  167.                 /* the PrintGraph routine supplies a message if it fails */
  168.             }
  169.         } else {
  170.             sprintf(messagebuf, "OK. Graph size is %.3f x %.3f",
  171.                                   (float)(((float)WIDTH) /x_dpi_V),
  172.                                   (float)(((float)HEIGHT)/y_dpi_V));
  173.             message(messagebuf);
  174.         }
  175.     } else {
  176.         /* not enough room */
  177.         sprintf(messagebuf, "Sorry, graph size is %.3f x %.3f; too big for paper.",
  178.                               (float)(((float)WIDTH) /x_dpi_V),
  179.                               (float)(((float)HEIGHT)/y_dpi_V));
  180.         message(messagebuf);
  181.     }
  182.     freeraster(); /* in case dpi or size changes */
  183. }
  184.  
  185. static void tryit(int doit)
  186. {
  187.     GetValues();
  188.  /* show_vals(); */
  189.  
  190.     /* change go gadget to abort gadget */
  191.     go.GadgetText->IText = (UBYTE *)"ABORT";
  192.     RefreshOneGad(&go);
  193.  
  194.     TurnOffGadgets();
  195.  
  196.     do_graph(doit);
  197.  
  198.     /* restore go gadget */
  199.     go.GadgetText->IText = (UBYTE *)"PRINT";
  200.     RefreshOneGad(&go);
  201.  
  202.     TurnOnGadgets();
  203. }
  204.  
  205. void go_func(APTR object)
  206. {
  207.     tryit(1);
  208. }
  209.  
  210. void check_func(APTR object)
  211. {
  212.     tryit(0);
  213. }
  214.  
  215. /* Menu Items */
  216. void Project_Quit(APTR object)
  217. {
  218.     quit(object);
  219. }
  220.