home *** CD-ROM | disk | FTP | other *** search
/ Carousel / CAROUSEL.cdr / mactosh / lang / skel_azt.sha / redraw.c < prev    next >
C/C++ Source or Header  |  1986-07-08  |  2KB  |  65 lines

  1.  
  2. /*
  3.  *    redraw.c -- display the contents of this window again
  4.  */
  5.  
  6. #include <quickdraw.h>
  7. #include <control.h>
  8. #include <textedit.h>
  9.  
  10. #include "qdv.h"
  11. #include "def.h"
  12.  
  13. void
  14. redraw(i)
  15. int    i;        /* index of window pointer */
  16. {
  17.     extern    QDVar             *QD;
  18.     extern    ControlHandle    hscroll[NWINDOWS];
  19.     extern    TEHandle        hTE;
  20.     extern    Rect            r;
  21.     extern    Point            tlp[NWINDOWS];    /* top left of destRect */
  22.     extern    ControlHandle    vscroll[NWINDOWS];
  23.     extern    WindowPtr        wp[NWINDOWS];
  24.     
  25.     /* make grow icon, make scroll bars, fill window */
  26.  
  27.     /* caution -- changing the order of drawing the window parts or
  28.      * the clip boundaries may cause a continuous loop of update
  29.      * events, redrawing the scroll bars.  Avoiding such "flicker"
  30.      * and the lockout of other events is a tricky facet of having
  31.      * multiple scrollable windows that doesn't show up in the
  32.      * simpler example programs.
  33.      */
  34.     
  35.     ClipRect(&wp[i]->portRect);
  36.     DrawGrowIcon(wp[i]);
  37.     if (wp[i] == FrontWindow())
  38.         DrawControls(wp[i]);
  39.     else {
  40.         FillRect(&(*vscroll[i])->contrlRect, &QD->white);
  41.         FillRect(&(*hscroll[i])->contrlRect, &QD->white);
  42.         FrameRect(&(*vscroll[i])->contrlRect);
  43.         FrameRect(&(*hscroll[i])->contrlRect);
  44.     };
  45.     BlockMove(&wp[i]->portRect, &r, (long)sizeof(Rect));
  46.     r.bottom -= 15;
  47.     r.right -= 15;
  48.     ClipRect(&r);
  49.     if (i == 1 && hTE) {    /* TEScroll kept track of scrolling */
  50.         EraseRect(&r);
  51.         TEUpdate(&r, hTE);
  52.     }
  53.     else if (i == 0) {        /* explicitly keep track of scrolling */
  54.         SetOrigin(tlp[0].h, tlp[0].v);
  55.         OffsetRgn(wp[0]->clipRgn, tlp[0].h, tlp[0].v);
  56.         drawgraf();
  57.         SetOrigin(0, 0);
  58.     };
  59.     ClipRect(&wp[i]->portRect);    /* if the scroll and grow parts of the
  60.                                  * window are clipped, moving
  61.                                  * overlapping windows will leave
  62.                                  * "holes" in them
  63.                                  */
  64. } /* end of redraw */
  65.