home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / amiga / utility / misc / yak.lha / Yak / src / dimstuff < prev    next >
Encoding:
Text File  |  1992-09-17  |  1.0 KB  |  52 lines

  1. This is dim-screen code. Needs checks added, such as viewport still existing
  2. at UnBlank time.
  3.  
  4. #define MAX_COLORS    32
  5. UWORD    origcolors[MAX_COLORS], dimcolors[MAX_COLORS];
  6. UWORD    dimfactor = 5;    /* 0..10 */
  7. static    struct Screen *dimscr;
  8.  
  9. /* blank display, by putting up a black screen */
  10. void
  11. BlankScreen()
  12. {
  13.     struct ViewPort *vp;
  14.     ULONG lock;
  15.     UWORD i, r, g, b;
  16.  
  17.     lock = LockIBase(0);
  18.     dimscr = IntuitionBase->FirstScreen;
  19.     vp = &dimscr->ViewPort;
  20.     UnlockIBase(lock);
  21.  
  22.     for (i = 0; i < MAX_COLORS; i++)
  23.     {
  24.         origcolors[i] = dimcolors[i] = GetRGB4(vp->ColorMap, i);
  25.         
  26.         r = dimfactor*(dimcolors[i] & 0x0f00);
  27.         g = dimfactor*(dimcolors[i] & 0x00f0);
  28.         b = dimfactor*(dimcolors[i] & 0x000f);
  29.  
  30.         r = (r/10) & 0x0f00;
  31.         g = (g/10) & 0x00f0;
  32.         b = (b/10) & 0x000f;
  33.  
  34.         dimcolors[i] = r | g | b;
  35.     }
  36.     LoadRGB4(vp, dimcolors, MAX_COLORS);
  37.     blanked = TRUE;
  38. }
  39.     
  40. /* unblank display, i.e. close our screen */
  41. void
  42. UnBlankScreen()
  43. {
  44.     if (dimscr && FindScreen(dimscr))
  45.     {
  46.         LoadRGB4(&dimscr->ViewPort, origcolors, MAX_COLORS);
  47.         dimscr = FALSE;
  48.         blanked = FALSE;
  49.     }
  50. }
  51.  
  52.