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

  1. #include    <intuition/intuition.h>
  2. #include    <devices/load.h>
  3. #include    <clib/macros.h>
  4. #include    "execdef.h"
  5. #include    "intuidef.h"
  6. #include    "windowinfo.h"
  7. #include    "loadrecord.h"
  8.  
  9. #include    "NewWindowSize.proto"
  10.  
  11. #include    <exec/proto.h>
  12.  
  13. #include    "SetWindowInfo.proto"
  14. #include    "FindMaxDataPoint.proto"
  15. #include    "RedrawWindow.proto"
  16.  
  17. Bool
  18. NewWindowSize(window)
  19.     Window *window;
  20. {
  21.     LoadDataValue *new_start_data;
  22.     short number_data_points_to_copy;
  23.     LoadRecord old_record, *record;
  24.  
  25.     SetWindowInfo(window);
  26.     for (record = (LoadRecord *)WINDOWINFO(window)->loadrecords.mlh_Head;
  27.      record->node.mln_Succ;
  28.      record = (LoadRecord *)record->node.mln_Succ)
  29.     {
  30.     old_record = *record;
  31.     if (!(new_start_data = (LoadDataValue *)AllocMem(WINDOWINFO(window)->width * sizeof(LoadDataValue), 0)))
  32.         return FALSE;
  33.     record->start_data = new_start_data;
  34.     record->end_data = record->start_data + WINDOWINFO(window)->width;
  35.     number_data_points_to_copy = MIN(old_record.next_data - old_record.start_data, WINDOWINFO(window)->width);
  36.     record->next_data = record->start_data + number_data_points_to_copy;
  37.     record->max_data = record->start_data + (old_record.max_data - old_record.start_data);
  38.     CopyMemQuick(old_record.next_data - number_data_points_to_copy, record->start_data, number_data_points_to_copy * sizeof(LoadDataValue));
  39.     if (record->max_data >= record->next_data)
  40.         FindMaxDataPoint(record);
  41.  
  42.     FreeMem((char *)old_record.start_data, (old_record.end_data - old_record.start_data) * sizeof(LoadDataValue));
  43.     if (record->scale)
  44.     {
  45.         record->deltay = WINDOWINFO(window)->height / record->scale;
  46.         record->moduloy = WINDOWINFO(window)->height / record->scale;
  47.     }
  48.     }
  49.     return TRUE;
  50. }
  51.