home *** CD-ROM | disk | FTP | other *** search
/ Collection of Education / collectionofeducationcarat1997.iso / COMPUSCI / NERVES.ZIP / NO87 / GRAPH.C < prev    next >
C/C++ Source or Header  |  1990-12-28  |  5KB  |  211 lines

  1. #include "defn.h"
  2. #include "nsdata.c"
  3. #include "proto.h"
  4.  
  5. int GraphDriver,GraphMode;
  6. int ErrorCode=0;
  7. int MaxColors;
  8. double AspectRatio;
  9. int xasp,yasp;
  10. int MaxX,MaxY;
  11. struct palettetype palette;
  12.  
  13. void graph(void)
  14. {
  15.  Initialize();
  16.  Draw();
  17. }
  18.  
  19. void Initialize(void)
  20. {
  21.  GraphDriver = EGA;
  22.  GraphMode = EGAHI;
  23.  initgraph(&GraphDriver, &GraphMode,"");
  24.  ErrorCode = graphresult();
  25.  if (ErrorCode != grOk)
  26.  {
  27.   closegraph();
  28.   printf("Graphics Error:%s\n", grapherrormsg(ErrorCode));
  29.   exit(1);
  30.  }
  31.  getpalette(&palette);
  32.  MaxColors = getmaxcolor() + 1;
  33.  MaxX = 640;
  34.  MaxY = 350;
  35.  getaspectratio(&xasp,&yasp);
  36. }
  37.  
  38. void Draw(void)
  39. {
  40.  int i;
  41.  char str[26];
  42.  
  43.  setcolor(15);
  44.  line(0,0,639,0); /* screen border lines */
  45.  line(0,0,0,349);
  46.  line(639,0,639,349);
  47.  line(0,349,639,349);
  48.  
  49.  line(0,330,639,330); /* world border lines */
  50.  line(479,0,479,329);
  51.  
  52.  /* plot either graphs or neuron activity */
  53.  if (plottype == 0)
  54.   graphsetup();
  55.  else
  56.   activesetup();
  57.  
  58.  setcolor(3);
  59.  
  60.  outtextxy(10,336,"Enter:Run  Space:Step  Esc:Menu  Tab:ChgPlots");
  61.  sprintf(str,"D:%d",drawmult);
  62.  outtextxy(384,336,str);
  63.  sprintf(str,"%d",(int)(energy/10000L));
  64.  outtextxy(422,336,str);
  65.  if (Iextgr >= 0 && gr[Iextgr].gtype == 1)
  66.   {
  67.    settextjustify(2,2);
  68.    sprintf(str,"Iext(%s)[nA]:%-.1f",gr[Iextgr].gneur,(float)Iextint/10000.);
  69.    outtextxy(629,336,str);
  70.   }
  71.  setviewport(1,1,478,329,1);
  72.  setfillstyle(1,7);
  73.  for (i = 0; i < nblock; i++)
  74.   {
  75.    bar(blockx[i]/2, ((long)AspR * blocky[i])/200L,
  76.       (blockx[i] + BLOCKWIDTH)/2,
  77.       ((long)AspR * (blocky[i] + BLOCKHEIGHT))/200L);
  78.   }
  79.  settextjustify(0,2);
  80.  setfillstyle(0,0);
  81. }
  82.  
  83. void graphsetup(void)
  84.  {
  85.   int j;
  86.   char str[26];
  87.  
  88.   setcolor(15);
  89.   line(479,66,639,66); /* plot border horizontal lines */
  90.   line(479,132,639,132);
  91.   line(479,198,639,198);
  92.   line(479,264,639,264);
  93.  
  94.   setcolor(3);
  95.   for (j = 0; j < 5; j++)
  96.    {
  97.     if (gr[j].gtype == 1)
  98.      {
  99.       line(537,53+j*66,637,53+j*66); /* graph lines */
  100.       line(537,3+j*66,537,56+j*66);
  101.  
  102.       line(533,3+j*66,537,3+j*66); /* graph y-axis ticks */
  103.       line(535,8+j*66,537,8+j*66);
  104.       line(535,13+j*66,537,13+j*66);
  105.       line(535,18+j*66,537,18+j*66);
  106.       line(535,23+j*66,537,23+j*66);
  107.       line(533,28+j*66,537,28+j*66);
  108.       line(535,33+j*66,537,33+j*66);
  109.       line(535,38+j*66,537,38+j*66);
  110.       line(535,43+j*66,537,43+j*66);
  111.       line(535,48+j*66,537,48+j*66);
  112.       line(533,53+j*66,537,53+j*66);
  113.  
  114.       line(547,3+j*66,547,55+j*66); /*graph x-axis ticks */
  115.       line(557,3+j*66,557,55+j*66);
  116.       line(567,3+j*66,567,55+j*66);
  117.       line(577,3+j*66,577,55+j*66);
  118.       line(587,3+j*66,587,56+j*66);
  119.       line(597,3+j*66,597,55+j*66);
  120.       line(607,3+j*66,607,55+j*66);
  121.       line(617,3+j*66,617,55+j*66);
  122.       line(627,3+j*66,627,55+j*66);
  123.       line(637,3+j*66,637,56+j*66);
  124.  
  125.       outtextxy(538,58+j*66,"0"); /* graph labels (always same) */
  126.       outtextxy(576,58+j*66,"sec");
  127.       outtextxy(630,58+j*66,"1");
  128.  
  129.       settextjustify(2,2); /* graph labels (user-set) */
  130.       if (gr[j].gvar == 1)
  131.        {
  132.     outtextxy(532,4+j*66,"1");
  133.     outtextxy(532,46+j*66,"0");
  134.        }
  135.       else
  136.        {
  137.     outtextxy(532,4+j*66,itoa(gr[j].gscale,str,10));
  138.     outtextxy(532,46+j*66,itoa(-gr[j].gscale,str,10));
  139.     outtextxy(532,25+j*66,"0");
  140.        }
  141.  
  142.       settextjustify(0,2); /* graph labels (also user-set) */
  143.       outtextxy(483,15+j*66,gr[j].gneur);
  144.  
  145.       if (gr[j].gvar == 0)
  146.        {
  147.     outtextxy(483,35+j*66,"V [mV]");
  148.        }
  149.       else
  150.        if (gr[j].gvar == 2)
  151.     {
  152.      outtextxy(483,35+j*66,"I [pA]");
  153.     }
  154.        else
  155.     outtextxy(483,35+j*66,"Freq");
  156.      }
  157.     else
  158.      if (gr[j].gtype == 2)
  159.       {
  160.        outtextxy(483,266-(4-j)*66,"R3"); /* gait labels (always same) */
  161.        outtextxy(483,275-(4-j)*66,"R2");
  162.        outtextxy(483,284-(4-j)*66,"R1");
  163.        outtextxy(483,293-(4-j)*66,"L3");
  164.        outtextxy(483,302-(4-j)*66,"L2");
  165.        outtextxy(483,312-(4-j)*66,"L1");
  166.        outtextxy(538,322-(4-j)*66,"0");
  167.        outtextxy(576,322-(4-j)*66,"sec");
  168.        outtextxy(630,322-(4-j)*66,"1");
  169.  
  170.        line(537,317-(4-j)*66,637,317-(4-j)*66); /* gait x-axis */
  171.  
  172.        line(537,267-(4-j)*66,537,320-(4-j)*66); /* gait x-axis ticks */
  173.        line(547,267-(4-j)*66,547,319-(4-j)*66);
  174.        line(557,267-(4-j)*66,557,319-(4-j)*66);
  175.        line(567,267-(4-j)*66,567,319-(4-j)*66);
  176.        line(577,267-(4-j)*66,577,319-(4-j)*66);
  177.        line(587,267-(4-j)*66,587,320-(4-j)*66);
  178.        line(597,267-(4-j)*66,597,319-(4-j)*66);
  179.        line(607,267-(4-j)*66,607,319-(4-j)*66);
  180.        line(617,267-(4-j)*66,617,319-(4-j)*66);
  181.        line(627,267-(4-j)*66,627,319-(4-j)*66);
  182.        line(637,267-(4-j)*66,637,320-(4-j)*66);
  183.       }
  184.    }
  185.  }
  186.  
  187. void activesetup(void)
  188.  {
  189.   char block[4];
  190.  
  191.   block[0] = block[1] = block[2] = 219;
  192.   block[3] = 0;
  193.   settextjustify(0,2);
  194.   setcolor(4);
  195.   moveto(483,322);
  196.   outtext("F:");
  197.   setcolor(1);
  198.   outtext("0");
  199.   setcolor(3);
  200.   outtext(block);
  201.   setcolor(4);
  202.   outtext("1/3");
  203.   setcolor(5);
  204.   outtext(block);
  205.   setcolor(4);
  206.   outtext("2/3");
  207.   setcolor(7);
  208.   outtext(block);
  209.   setcolor(4);
  210.   outtext("1");
  211.  }