home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 215.lha / AmyLoad / drawdataline.c < prev    next >
C/C++ Source or Header  |  1996-02-14  |  1KB  |  58 lines

  1. #include    <intuition/intuition.h>
  2. #include    "execdef.h"
  3. #include    "intuidef.h"
  4. #include    "loadrecord.h"
  5. #include    "windowinfo.h"
  6.  
  7. #include    "DrawDataLine.proto"
  8.  
  9. #include    <graphics/proto.h>
  10.  
  11. void
  12. DrawDataLine(window, record, x, value)
  13.     Window *window;
  14.     LoadRecord *record;
  15.     short x;
  16.     LoadDataValue value;
  17. {
  18.     WindowInfo *window_info;
  19.     register short deltay, moduloy, y, miny;
  20.     unsigned char data_pen_num, ref_pen_num;
  21.     register RastPort *rport;
  22.  
  23.     window_info = WINDOWINFO(window);
  24.     data_pen_num = record->data_pen_num;
  25.     ref_pen_num = record->ref_pen_num;
  26.     x += window_info->leftedge;
  27.     rport = window->RPort;
  28.     y = window_info->bottomedge;
  29.     miny = y - (value * window_info->height) / record->scaled_ticks;
  30.     Move(rport, x, y);
  31.     if (record->scale <= 1)
  32.     {
  33.     SetAPen(rport, record->data_pen_num);
  34.     Draw(rport, x, miny);
  35.     }
  36.     else
  37.     {
  38.     deltay = record->deltay;
  39.     moduloy = record->moduloy;
  40.     do
  41.     {
  42.         y -= deltay;
  43.         if (moduloy-- > 0)
  44.         y--;
  45.         SetAPen(rport, data_pen_num);
  46.         if ( y < miny)
  47.         {
  48.         Draw(rport, x, miny);
  49.         break;
  50.         }
  51.         Draw(rport, x, y);
  52.         SetAPen(rport, ref_pen_num);
  53.         WritePixel(rport, x, y);
  54.         Move(rport, x, (short)(y-1));
  55.     } while (y >= miny);
  56.     }
  57. }
  58.