home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d0xx / d049 / plot.lha / Plot / plot2.c < prev    next >
Encoding:
C/C++ Source or Header  |  1987-01-11  |  19.8 KB  |  615 lines

  1. /* plot2.c -- based on the 3d graphics programs by M. Waite & C. L. Morgan
  2. >>>>>from the book "Graphics Primer for the IBM PC"<<<<<
  3. Converted to Amiga Lattice 'C' by Terry W. Gintz*/
  4.  
  5. void IMsg();
  6.  
  7. /* Include the definitions and functions we need */
  8.  
  9. #include "plot2.h"
  10. #include "plotter2.c"
  11. #include "palette2.c"
  12. #include "formula2.c"
  13. #include "mouse2.c"
  14.  
  15. extern int palette(),formula();
  16. extern struct ColorMap *p_Co;
  17. extern SHORT mx,my;
  18. double magx,magy;
  19.  
  20. struct IntuiText titletext = {
  21.    2,2,JAM1,0,0,NL,(UBYTE *)"COS(x)*COS(y)",NL};
  22.  
  23. struct IntuiText Menu0IText [] = {
  24.  
  25.    {
  26.    0,3,JAM2,      /* Front Pen, Back Pen, Draw Mode */
  27.    0,0,            /* Left Edge, Top Edge */
  28.    &TestFont,         /* pointer to Text Font */
  29.    "  new plot  ",   /* text of Menu Item */
  30.    NULL            /* pointer to next IText */
  31.    },
  32.  
  33.    {0,3,JAM2,0,0,&TestFont,"modify color",NULL },
  34.    {0,3,JAM2,0,0,&TestFont,"new formula ",NULL },
  35.    {0,3,JAM2,0,0,&TestFont,"    quit    ",NULL },
  36. };
  37.  
  38. struct MenuItem Menu0Item[5] = {
  39.    {
  40.    &Menu0Item[1],         /* pointer to next Item */
  41.    0,0,120,9,      /* Left, Top, Width, Height */
  42.    ITEMTEXT | ITEMENABLED | HIGHCOMP,   /* Flags */
  43.    0,            /* no mutual exclude */
  44.    (APTR)&Menu0IText[0],   /* Render info */   
  45.    NULL,NULL,NULL,         /*Alt Image, Command (amiga) char, subitem*/
  46.    MENUNULL      /* next select */
  47.    },
  48.  
  49.    {&Menu0Item[2],0,9,120,9,ITEMTEXT | ITEMENABLED | HIGHCOMP,
  50.    0,(APTR)&Menu0IText[1],NULL,NULL,NULL,MENUNULL},
  51.  
  52.    {&Menu0Item[3],0,18,120,9,ITEMTEXT | ITEMENABLED | HIGHCOMP,
  53.    0,(APTR)&Menu0IText[2],NULL,NULL,NULL,MENUNULL},
  54.  
  55.    {NULL,0,27,120,9,ITEMTEXT | ITEMENABLED | HIGHCOMP,
  56.    0,(APTR)&Menu0IText[3],NULL,NULL,NULL,MENUNULL}
  57. };
  58.  
  59. struct IntuiText Menu1IText [] = {
  60.  
  61.    {
  62.    0,3,JAM2,      /* Front Pen, Back Pen, Draw Mode */
  63.    0,0,            /* Left Edge, Top Edge */
  64.    &TestFont,         /* pointer to Text Font */
  65.    "  10°",   /* text of Menu Item */
  66.    NULL            /* pointer to next IText */
  67.    },
  68.  
  69.    {0,3,JAM2,0,0,&TestFont,"  15°",NULL },
  70.    {0,3,JAM2,0,0,&TestFont,"  20°",NULL },
  71.    {0,3,JAM2,0,0,&TestFont,"  25°",NULL },
  72.    {0,3,JAM2,0,0,&TestFont,"  30°",NULL },
  73.    {0,3,JAM2,0,0,&TestFont,"  35°",NULL },
  74.    {0,3,JAM2,0,0,&TestFont,"  40°",NULL },
  75.    {0,3,JAM2,0,0,&TestFont,"  45°",NULL },
  76.    {0,3,JAM2,0,0,&TestFont,"  50°",NULL },
  77.    {0,3,JAM2,0,0,&TestFont,"  55°",NULL },
  78.    {0,3,JAM2,0,0,&TestFont,"  60°",NULL },
  79.    {0,3,JAM2,0,0,&TestFont,"  65°",NULL },
  80.    {0,3,JAM2,0,0,&TestFont,"  70°",NULL },
  81.    {0,3,JAM2,0,0,&TestFont,"  75°",NULL },
  82.    {0,3,JAM2,0,0,&TestFont,"  80°",NULL },
  83. };
  84.  
  85. struct MenuItem Menu1Item[15] = {
  86.    {
  87.    &Menu1Item[1],         /* pointer to next Item */
  88.    0,0,50,9,      /* Left, Top, Width, Height */
  89.    ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,   /* Flags */
  90.    (~(1 << 0)),            /* mutual exclude */
  91.    (APTR)&Menu1IText[0],   /* Render info */
  92.    NULL,NULL,NULL,         /*Alt Image, Command (amiga) char, subitem*/
  93.    MENUNULL      /* next select */
  94.    },
  95.  
  96.    {&Menu1Item[2],0,9,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  97.    (~(1 << 1)),(APTR)&Menu1IText[1],NULL,NULL,NULL,MENUNULL},
  98.  
  99.    {&Menu1Item[3],0,18,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  100.    (~(1 << 2)),(APTR)&Menu1IText[2],NULL,NULL,NULL,MENUNULL},
  101.  
  102.    {&Menu1Item[4],0,27,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  103.    (~(1 << 3)),(APTR)&Menu1IText[3],NULL,NULL,NULL,MENUNULL},
  104.  
  105.    {&Menu1Item[5],0,36,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  106.    (~(1 << 4)),(APTR)&Menu1IText[4],NULL,NULL,NULL,MENUNULL},
  107.  
  108.    {&Menu1Item[6],0,45,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  109.    (~(1 << 5)),(APTR)&Menu1IText[5],NULL,NULL,NULL,MENUNULL},
  110.  
  111.    {&Menu1Item[7],0,54,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  112.    (~(1 << 6)),(APTR)&Menu1IText[6],NULL,NULL,NULL,MENUNULL},
  113.  
  114.    {&Menu1Item[8],0,63,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT | CHECKED,
  115.    (~(1 << 7)),(APTR)&Menu1IText[7],NULL,NULL,NULL,MENUNULL},
  116.  
  117.    {&Menu1Item[9],0,72,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  118.    (~(1 << 8)),(APTR)&Menu1IText[8],NULL,NULL,NULL,MENUNULL},
  119.  
  120.    {&Menu1Item[10],0,81,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  121.    (~(1 << 9)),(APTR)&Menu1IText[9],NULL,NULL,NULL,MENUNULL},
  122.  
  123.    {&Menu1Item[11],0,90,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  124.    (~(1 << 10)),(APTR)&Menu1IText[10],NULL,NULL,NULL,MENUNULL},
  125.  
  126.    {&Menu1Item[12],0,99,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  127.    (~(1 << 11)),(APTR)&Menu1IText[11],NULL,NULL,NULL,MENUNULL},
  128.  
  129.    {&Menu1Item[13],0,108,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  130.    (~(1 << 12)),(APTR)&Menu1IText[12],NULL,NULL,NULL,MENUNULL},
  131.  
  132.    {&Menu1Item[14],0,117,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  133.    (~(1 << 13)),(APTR)&Menu1IText[13],NULL,NULL,NULL,MENUNULL},
  134.  
  135.    {NULL,1,126,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  136.    (~(1 << 14)),(APTR)&Menu1IText[14],NULL,NULL,NULL,MENUNULL},
  137. };
  138.  
  139. struct IntuiText Menu2IText [] = {
  140.  
  141.    {
  142.    0,3,JAM2,      /* Front Pen, Back Pen, Draw Mode */
  143.    0,0,            /* Left Edge, Top Edge */
  144.    &TestFont,         /* pointer to Text Font */
  145.    "  10°",   /* text of Menu Item */
  146.    NULL            /* pointer to next IText */
  147.    },
  148.                               
  149.    {0,3,JAM2,0,0,&TestFont,"  15°",NULL },
  150.    {0,3,JAM2,0,0,&TestFont,"  20°",NULL },
  151.    {0,3,JAM2,0,0,&TestFont,"  25°",NULL },
  152.    {0,3,JAM2,0,0,&TestFont,"  30°",NULL },
  153.    {0,3,JAM2,0,0,&TestFont,"  35°",NULL },
  154.    {0,3,JAM2,0,0,&TestFont,"  40°",NULL },
  155.    {0,3,JAM2,0,0,&TestFont,"  45°",NULL },
  156.    {0,3,JAM2,0,0,&TestFont,"  50°",NULL },
  157.    {0,3,JAM2,0,0,&TestFont,"  55°",NULL },
  158.    {0,3,JAM2,0,0,&TestFont,"  60°",NULL },
  159.    {0,3,JAM2,0,0,&TestFont,"  65°",NULL },
  160.    {0,3,JAM2,0,0,&TestFont,"  70°",NULL },
  161.    {0,3,JAM2,0,0,&TestFont,"  75°",NULL },
  162.    {0,3,JAM2,0,0,&TestFont,"  80°",NULL },
  163. };
  164.  
  165. struct MenuItem Menu2Item[15] = {
  166.    {
  167.    &Menu2Item[1],         /* pointer to next Item */
  168.    0,0,50,9,      /* Left, Top, Width, Height */
  169.    ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,   /* Flags */
  170.    (~(1 << 0)),            /* mutual exclude */
  171.    (APTR)&Menu2IText[0],   /* Render info */
  172.    NULL,NULL,NULL,         /*Alt Image, Command (amiga) char, subitem*/
  173.    MENUNULL      /* next select */
  174.    },
  175.  
  176.    {&Menu2Item[2],0,9,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  177.    (~(1 << 1)),(APTR)&Menu2IText[1],NULL,NULL,NULL,MENUNULL},
  178.  
  179.    {&Menu2Item[3],0,18,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  180.    (~(1 << 2)),(APTR)&Menu2IText[2],NULL,NULL,NULL,MENUNULL},
  181.  
  182.    {&Menu2Item[4],0,27,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  183.    (~(1 << 3)),(APTR)&Menu2IText[3],NULL,NULL,NULL,MENUNULL},
  184.  
  185.    {&Menu2Item[5],0,36,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT | CHECKED,
  186.    (~(1 << 4)),(APTR)&Menu2IText[4],NULL,NULL,NULL,MENUNULL},
  187.  
  188.    {&Menu2Item[6],0,45,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  189.    (~(1 << 5)),(APTR)&Menu2IText[5],NULL,NULL,NULL,MENUNULL},
  190.  
  191.    {&Menu2Item[7],0,54,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  192.    (~(1 << 6)),(APTR)&Menu2IText[6],NULL,NULL,NULL,MENUNULL},
  193.  
  194.    {&Menu2Item[8],0,63,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  195.    (~(1 << 7)),(APTR)&Menu2IText[7],NULL,NULL,NULL,MENUNULL},
  196.  
  197.    {&Menu2Item[9],0,72,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  198.    (~(1 << 8)),(APTR)&Menu2IText[8],NULL,NULL,NULL,MENUNULL},
  199.  
  200.    {&Menu2Item[10],0,81,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  201.    (~(1 << 9)),(APTR)&Menu2IText[9],NULL,NULL,NULL,MENUNULL},
  202.  
  203.    {&Menu2Item[11],0,90,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  204.    (~(1 << 10)),(APTR)&Menu2IText[10],NULL,NULL,NULL,MENUNULL},
  205.  
  206.    {&Menu2Item[12],0,99,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  207.    (~(1 << 11)),(APTR)&Menu2IText[11],NULL,NULL,NULL,MENUNULL},
  208.  
  209.    {&Menu2Item[13],0,108,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  210.    (~(1 << 12)),(APTR)&Menu2IText[12],NULL,NULL,NULL,MENUNULL},
  211.  
  212.    {&Menu2Item[14],0,117,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  213.    (~(1 << 13)),(APTR)&Menu2IText[13],NULL,NULL,NULL,MENUNULL},
  214.  
  215.    {NULL,1,126,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  216.    (~(1 << 14)),(APTR)&Menu2IText[14],NULL,NULL,NULL,MENUNULL},
  217. };
  218. struct IntuiText Menu3IText [] = {
  219.  
  220.    {
  221.    0,3,JAM2,      /* Front Pen, Back Pen, Draw Mode */
  222.    0,0,            /* Left Edge, Top Edge */
  223.    &TestFont,         /* pointer to Text Font */
  224.    "  10",   /* text of Menu Item */
  225.    NULL            /* pointer to next IText */
  226.    },
  227.                               
  228.    {0,3,JAM2,0,0,&TestFont,"  20",NULL },
  229.    {0,3,JAM2,0,0,&TestFont,"  30",NULL },
  230.    {0,3,JAM2,0,0,&TestFont,"  40",NULL },
  231.    {0,3,JAM2,0,0,&TestFont,"  50",NULL },
  232.    {0,3,JAM2,0,0,&TestFont,"  60",NULL },
  233.    {0,3,JAM2,0,0,&TestFont,"  70",NULL },
  234.    {0,3,JAM2,0,0,&TestFont,"  80",NULL },
  235. };
  236.  
  237. struct MenuItem Menu3Item[8] = {
  238.    {
  239.    &Menu3Item[1],         /* pointer to next Item */
  240.    0,0,40,9,      /* Left, Top, Width, Height */
  241.    ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,   /* Flags */
  242.    (~(1 << 0)),            /* mutual exclude */
  243.    (APTR)&Menu3IText[0],   /* Render info */
  244.    NULL,NULL,NULL,         /*Alt Image, Command (amiga) char, subitem*/
  245.    MENUNULL      /* next select */
  246.    },
  247.  
  248.    {&Menu3Item[2],0,9,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  249.    (~(1 << 1)),(APTR)&Menu3IText[1],NULL,NULL,NULL,MENUNULL},
  250.  
  251.    {&Menu3Item[3],0,18,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  252.    (~(1 << 2)),(APTR)&Menu3IText[2],NULL,NULL,NULL,MENUNULL},
  253.  
  254.    {&Menu3Item[4],0,27,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT | CHECKED,
  255.    (~(1 << 3)),(APTR)&Menu3IText[3],NULL,NULL,NULL,MENUNULL},
  256.  
  257.    {&Menu3Item[5],0,36,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  258.    (~(1 << 4)),(APTR)&Menu3IText[4],NULL,NULL,NULL,MENUNULL},
  259.  
  260.    {&Menu3Item[6],0,45,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  261.    (~(1 << 5)),(APTR)&Menu3IText[5],NULL,NULL,NULL,MENUNULL},
  262.  
  263.    {&Menu3Item[7],0,54,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  264.    (~(1 << 6)),(APTR)&Menu3IText[6],NULL,NULL,NULL,MENUNULL},
  265.  
  266.    {NULL,0,63,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  267.    (~(1 << 7)),(APTR)&Menu3IText[7],NULL,NULL,NULL,MENUNULL}
  268.  
  269. };
  270.  
  271. struct IntuiText Menu4IText [] = {
  272.  
  273.    {
  274.    0,3,JAM2,      /* Front Pen, Back Pen, Draw Mode */
  275.    0,0,            /* Left Edge, Top Edge */
  276.    &TestFont,         /* pointer to Text Font */
  277.    "  10",   /* text of Menu Item */
  278.    NULL            /* pointer to next IText */
  279.    },
  280.                               
  281.    {0,3,JAM2,0,0,&TestFont,"  20",NULL },
  282.    {0,3,JAM2,0,0,&TestFont,"  30",NULL },
  283.    {0,3,JAM2,0,0,&TestFont,"  40",NULL },
  284.    {0,3,JAM2,0,0,&TestFont,"  50",NULL },
  285.    {0,3,JAM2,0,0,&TestFont,"  60",NULL },
  286.    {0,3,JAM2,0,0,&TestFont,"  70",NULL },
  287.    {0,3,JAM2,0,0,&TestFont,"  80",NULL },
  288. };
  289.  
  290. struct MenuItem Menu4Item[8] = {
  291.    {
  292.    &Menu4Item[1],         /* pointer to next Item */
  293.    0,0,40,9,      /* Left, Top, Width, Height */
  294.    ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,   /* Flags */
  295.    (~(1 << 0)),            /* mutual exclude */
  296.    (APTR)&Menu4IText[0],   /* Render info */
  297.    NULL,NULL,NULL,         /*Alt Image, Command (amiga) char, subitem*/
  298.    MENUNULL      /* next select */
  299.    },
  300.  
  301.    {&Menu4Item[2],0,9,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  302.    (~(1 << 1)),(APTR)&Menu4IText[1],NULL,NULL,NULL,MENUNULL},
  303.  
  304.    {&Menu4Item[3],0,18,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  305.    (~(1 << 2)),(APTR)&Menu4IText[2],NULL,NULL,NULL,MENUNULL},
  306.  
  307.    {&Menu4Item[4],0,27,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT | CHECKED,
  308.    (~(1 << 3)),(APTR)&Menu4IText[3],NULL,NULL,NULL,MENUNULL},
  309.  
  310.    {&Menu4Item[5],0,36,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  311.    (~(1 << 4)),(APTR)&Menu4IText[4],NULL,NULL,NULL,MENUNULL},
  312.  
  313.    {&Menu4Item[6],0,45,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  314.    (~(1 << 5)),(APTR)&Menu4IText[5],NULL,NULL,NULL,MENUNULL},
  315.  
  316.    {&Menu4Item[7],0,54,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  317.    (~(1 << 6)),(APTR)&Menu4IText[6],NULL,NULL,NULL,MENUNULL},
  318.  
  319.    {NULL,0,63,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  320.    (~(1 << 7)),(APTR)&Menu4IText[7],NULL,NULL,NULL,MENUNULL}
  321.  
  322. };
  323.  
  324. struct Menu BdMenu[5] = {
  325. {
  326.    &BdMenu[1],      /* ptr to next Menu */
  327.    10,0,130,0,   /* left,top,width,height--top and height ignored */
  328.    MENUENABLED,   /* Flags */
  329.    "    Main    ",   /* menu title */
  330.    &Menu0Item[0]   /* First Item in list */
  331. },
  332.    {&BdMenu[2],140,0,50,0,MENUENABLED,"Spin",&Menu1Item[0]},
  333.    {&BdMenu[3],200,0,50,0,MENUENABLED,"Tip ",&Menu2Item[0]},
  334.    {&BdMenu[4],260,0,40,0,MENUENABLED,"M*X",&Menu3Item[0]},
  335.    {NULL,310,0,40,0,MENUENABLED,"M*Y",&Menu4Item[0]}
  336. };
  337.  
  338. int foo;
  339. UWORD color18, color19;
  340. extern char z[30];
  341. extern int spin,tip;
  342.  
  343. main()
  344. {
  345.    USHORT drawing;
  346.  
  347.    drawing=1;
  348.    initwind();
  349.    init_colors();
  350.    init_scr();
  351.    strcpy(z,"COS(x)*COS(y)");
  352.    color18=GetRGB4(p_Co,18);
  353.    color19=GetRGB4(p_Co,19);
  354.    SetRGB4(vp,18,15,0,0);
  355.    SetRGB4(vp,19,15,15,15);
  356.    SetPointer(w,&PointImage,14,16,0,0);
  357.    magx=40.0;
  358.    magy=40.0;
  359.    mx=320;
  360.    my=200;
  361.    spin=45;
  362.    tip=30;
  363.    plotter();
  364.    PrintIText(w->RPort,&titletext,200,350);
  365.    ClearPointer(w);
  366.    while(drawing)
  367.    {
  368.       IMsg();
  369.    }
  370. }   /* end of main */
  371.  
  372. void IMsg()
  373. {
  374.    struct IntuiMessage *BdMsg;      /* Intuition message structure */
  375.    ULONG Mclass;               /* Message class */
  376.    USHORT Mcode;            /* Message code */
  377.  
  378. while (BdMsg = (struct IntuiMessage *)GetMsg(w->UserPort))
  379.    {
  380.    Mclass = BdMsg->Class;
  381.    Mcode = BdMsg->Code;
  382.    ReplyMsg(BdMsg);
  383.    switch (Mclass) {
  384.       case CLOSEWINDOW:
  385.          clear_colors();
  386.          Cleanup();
  387.          exit(TRUE);
  388.          break;
  389.  
  390.       case MENUPICK:
  391.          switch (MENUNUM(Mcode)){
  392.             case 0:
  393.                switch (ITEMNUM(Mcode)){
  394.                   case 0:
  395.                      color18=GetRGB4(p_Co,18);
  396.                      color19=GetRGB4(p_Co,19);
  397.                      SetRGB4(vp,18,0,15,0);
  398.                      SetRGB4(vp,19,11,4,0);
  399.                      SetPointer(w,&CursorImage,14,16,0,0);
  400.                      mouse();
  401.                      ClearPointer(w);
  402.                      color18=GetRGB4(p_Co,18);
  403.                      color19=GetRGB4(p_Co,19);
  404.                      SetRGB4(vp,18,15,0,0);
  405.                      SetRGB4(vp,19,15,15,15);
  406.                      SetPointer(w,&PointImage,14,16,0,0);
  407.                      plotter();
  408.                      titletext.IText=(UBYTE *)z;
  409.                      PrintIText(w->RPort,&titletext,200,350);
  410.                      ClearPointer(w);
  411.                      break;
  412.                   case 1:
  413.                      palette(w);
  414.                      break;
  415.                   case 2:
  416.                      foo=formula(w);
  417.                      if (foo==1){
  418.                         color18=GetRGB4(p_Co,18);
  419.                         color19=GetRGB4(p_Co,19);
  420.                         SetRGB4(vp,18,0,15,0);
  421.                         SetRGB4(vp,19,11,4,0);
  422.                         SetPointer(w,&CursorImage,14,16,0,0);
  423.                         mouse();
  424.                         ClearPointer(w);
  425.                         color18=GetRGB4(p_Co,18);
  426.                         color19=GetRGB4(p_Co,19);
  427.                         SetRGB4(vp,18,15,0,0);
  428.                         SetRGB4(vp,19,15,15,15);
  429.                         SetPointer(w,&PointImage,14,16,0,0);
  430.                         plotter();
  431.                         titletext.IText=(UBYTE *)z;
  432.                         PrintIText(w->RPort,&titletext,200,350);
  433.                         ClearPointer(w);
  434.                      }
  435.                      break;
  436.                   case 3:
  437.                      clear_colors();
  438.                      Cleanup();
  439.                      exit(TRUE);
  440.                      break;
  441.                }
  442.                break;
  443.             case 1:
  444.                switch(ITEMNUM(Mcode)){
  445.                   case 0:
  446.                      spin=10;
  447.                      break;
  448.                   case 1:
  449.                      spin=15;
  450.                      break;
  451.                   case 2:
  452.                      spin=20;
  453.                      break;
  454.                   case 3:
  455.                      spin=25;
  456.                      break;
  457.                   case 4:
  458.                      spin=30;
  459.                      break;
  460.                   case 5:
  461.                      spin=35;
  462.                      break;
  463.                   case 6:
  464.                      spin=40;
  465.                      break;
  466.                   case 7:
  467.                      spin=45;
  468.                      break;
  469.                   case 8:
  470.                      spin=50;
  471.                      break;
  472.                   case 9:
  473.                      spin=55;
  474.                      break;
  475.                   case 10:
  476.                      spin=60;
  477.                      break;
  478.                   case 11:
  479.                      spin=65;
  480.                      break;
  481.                   case 12:
  482.                      spin=70;
  483.                      break;
  484.                   case 13:
  485.                      spin=75;
  486.                      break;
  487.                   case 14:
  488.                      spin=80;
  489.                      break;
  490.                }
  491.                break;
  492.             case 2:
  493.                switch(ITEMNUM(Mcode)){
  494.                   case 0:
  495.                      tip=10;
  496.                      break;
  497.                   case 1:
  498.                      tip=15;
  499.                      break;
  500.                   case 2:
  501.                      tip=20;
  502.                      break;
  503.                   case 3:
  504.                      tip=25;
  505.                      break;
  506.                   case 4:
  507.                      tip=30;
  508.                      break;
  509.                   case 5:
  510.                      tip=35;
  511.                      break;
  512.                   case 6:
  513.                      tip=40;
  514.                      break;
  515.                   case 7:
  516.                      tip=45;
  517.                      break;
  518.                   case 8:
  519.                      tip=50;
  520.                      break;
  521.                   case 9:
  522.                      tip=55;
  523.                      break;
  524.                   case 10:
  525.                      tip=60;
  526.                      break;
  527.                   case 11:
  528.                      tip=65;
  529.                      break;
  530.                   case 12:
  531.                      tip=70;
  532.                      break;
  533.                   case 13:
  534.                      tip=75;
  535.                      break;
  536.                   case 14:
  537.                      tip=80;
  538.                      break;
  539.                }
  540.                break;
  541.             case 3:
  542.                switch(ITEMNUM(Mcode)){
  543.                   case 0:
  544.                      magx=10.0;
  545.                      break;
  546.                   case 1:
  547.                      magx=20.0;
  548.                      break;
  549.                   case 2:
  550.                      magx=30.0;
  551.                      break;
  552.                   case 3:
  553.                      magx=40.0;
  554.                      break;
  555.                   case 4:
  556.                      magx=50.0;
  557.                      break;
  558.                   case 5:
  559.                      magx=60.0;
  560.                      break;
  561.                   case 6:
  562.                      magx=70.0;
  563.                      break;
  564.                   case 7:
  565.                      magx=80.0;
  566.                      break;
  567.                }
  568.                break;
  569.             case 4:
  570.                switch(ITEMNUM(Mcode)){
  571.                   case 0:
  572.                      magy=10.0;
  573.                      break;
  574.                   case 1:
  575.                      magy=20.0;
  576.                      break;
  577.                   case 2:
  578.                      magy=30.0;
  579.                      break;
  580.                   case 3:
  581.                      magy=40.0;
  582.                      break;
  583.                   case 4:
  584.                      magy=50.0;
  585.                      break;
  586.                   case 5:
  587.                      magy=60.0;
  588.                      break;
  589.                   case 6:
  590.                      magy=70.0;
  591.                      break;
  592.                   case 7:
  593.                      magy=80.0;
  594.                      break;
  595.                }
  596.                break;
  597.          }
  598.    } 
  599.   /* end of Class switch */      
  600.    }/* while */
  601. }
  602.  
  603. init_scr()
  604. {
  605.  
  606. SetMenuStrip(w,&BdMenu);
  607.  
  608. }   /* end of init_scr */
  609.  
  610. Cleanup()
  611. {
  612.    CloseWindow(w);
  613.    CloseScreen(screen);
  614. }
  615.