home *** CD-ROM | disk | FTP | other *** search
/ Carousel Volume 2 #1 / carousel.iso / mactosh / code / c_waitin.sit < prev    next >
Encoding:
Text File  |  1988-06-20  |  2.4 KB  |  114 lines

  1. 18-Jun-88 14:46:46-MDT,2548;000000000000
  2. Return-Path: <u-lchoqu%sunset@cs.utah.edu>
  3. Received: from cs.utah.edu by SIMTEL20.ARPA with TCP; Sat, 18 Jun 88 14:46:43 MDT
  4. Received: by cs.utah.edu (5.54/utah-2.0-cs)
  5.     id AA22703; Sat, 18 Jun 88 14:46:43 MDT
  6. Received: by sunset.utah.edu (5.54/utah-2.0-leaf)
  7.     id AA24827; Sat, 18 Jun 88 14:46:41 MDT
  8. Date: Sat, 18 Jun 88 14:46:41 MDT
  9. From: u-lchoqu%sunset@cs.utah.edu (Lee Choquette)
  10. Message-Id: <8806182046.AA24827@sunset.utah.edu>
  11. To: rthum@simtel20.arpa
  12. Subject: Waiting.c
  13.  
  14. /* Waiting.c */
  15. /* Shows time available to background tasks running under MultiFinder. */
  16.  
  17. #include <Quickdraw.h>
  18. #include <EventMgr.h>
  19. #include <ResourceMgr.h>
  20. #include "simple.h"
  21.  
  22. extern long Ticks         : 0x16A;
  23. extern long yieldTime;
  24. extern Rect    dragrect;
  25.  
  26. typedef struct wait_data {
  27.             Point windtop;
  28.             int yield;
  29.             int res1, res2, res3;
  30. } wait_data;
  31.  
  32. long        leaving_time;
  33. Rect        whole;
  34. WindowPtr     thewindow;
  35. Point        top;
  36. wait_data    **data;
  37.  
  38. idle ()
  39. {
  40.     long        time_away, angle;
  41.     time_away     = Ticks - leaving_time;
  42.     angle         = time_away * 6L;
  43.     if (angle > 360L) angle = 360L;
  44.     SetPort (thewindow);
  45.     EraseArc (&whole, 0, (int) angle - 350);
  46.     PaintArc (&whole, 0, (int) angle);
  47.     leaving_time = Ticks;
  48. }
  49.  
  50. movewindow(x,y,windp,event)    
  51. int x,y;            
  52. WindowPtr windp;        
  53. EventRecord *event;
  54. {
  55.       DragWindow (windp, event->where, &dragrect);
  56. }
  57.  
  58. got_about ()
  59. {
  60.     Alert (1000, 0L);
  61. }
  62.  
  63. got_quit ()
  64. {
  65.     if (data != 0L) {
  66.         top.h = thewindow -> portRect.left;
  67.         top.v = thewindow -> portRect.top;
  68.         SetPort (thewindow);
  69.         LocalToGlobal (&top);
  70.         HLock (data);
  71.         (**data).windtop     = top;
  72.         (**data).yield         = (int) yieldTime;
  73.         HUnlock (data);
  74.         ChangedResource (data);
  75.         WriteResource (data);
  76.     } 
  77.       ExitToShell();
  78. }
  79.  
  80. get_data ()
  81. {
  82.     data = (wait_data **) GetResource ('WAIT', 0);
  83.     top.h = -1; top.v = -1; yieldTime = -1;
  84.     if (data) {
  85.         HLock (data);
  86.         top         = (**data).windtop;
  87.         yieldTime     = (long) (**data).yield;
  88.         HUnlock (data);
  89.     }
  90.     if (!PtInRect (top, &dragrect)) {
  91.         top.h = 2;
  92.         top.v = 22;
  93.     }
  94.     if (yieldTime <= 0 || yieldTime > 1000)
  95.         yieldTime = 1;
  96. }
  97.  
  98. main ()
  99. {
  100.     simpletools ("About Waiting...");
  101.     menu (applestring, "About Waiting...", got_about);
  102.     menu (applestring, "About Waiting...", itemenable);
  103.     menu ("File", "Quit/Q", got_quit);
  104.     SetRect (&whole, 1, 1, 11, 11);
  105.     wprocid     = 3;
  106.     windmenu    = 0;
  107.     get_data ();
  108.     thewindow     = window ("Waiting",top.h,top.v,top.h+12,top.v+12,0L,0L, 
  109.                         idle, movewindow);
  110.     run (idle);
  111.     leaving_time = Ticks;
  112.     runsimpletools ();
  113. }
  114.