home *** CD-ROM | disk | FTP | other *** search
/ PC World 2002 June / PCWorld_2002-06_cd.bin / Software / Topware / winamp / wa3install_beta3.exe / Scripts / GhostMod / script.m next >
Text File  |  2002-01-31  |  2KB  |  94 lines

  1.  
  2. // GhostMod 0.1 by Brennan Underwood
  3. // brennan@winamp.com
  4.  
  5. #include "../../lib/std.mi"
  6.  
  7. Global Timer fader, active_checker;
  8. Global int prev_active = -1;
  9.  
  10. Function adjustLayout(Layout l);    // sets desktopalpha mode
  11. Function int fadeto(Container c, Layout l, int targetalpha);
  12.  
  13. #define ACTIVEALPHA 230
  14. #define INACTIVEALPHA 150
  15.  
  16. adjustLayout(Layout l) {
  17.   l.setDesktopAlpha(true);
  18. }
  19.  
  20. System.onScriptLoaded() {
  21.   prev_active = -1;
  22.   active_checker = new Timer;
  23.   active_checker.setDelay(200);
  24.   active_checker.start();
  25.   fader = new Timer;
  26.   fader.setDelay(50);
  27.   // don't start it yet
  28.  
  29.   int n = getNumContainers();
  30.   for (int i = 0; i < n; i++) {
  31.     Container c = enumContainer(i);
  32.     int nl = c.getNumLayouts();
  33.     for (int j = 0; j < nl; j++) {
  34.       Layout l = c.enumLayout(j);
  35.       adjustLayout(l);
  36.     }
  37.   }
  38. }
  39.  
  40. System.onCreateLayout(Layout l) {
  41.   adjustLayout(l);
  42. }
  43.  
  44. System.onScriptUnloading() {
  45.   delete active_checker;
  46.   delete fader;
  47. }
  48.  
  49. active_checker.onTimer() {
  50.   if (fader.isRunning()) return;    // already fading
  51.   // start up fader if state changed
  52.   int isactive = isAppActive();
  53.   if (isactive != prev_active) {
  54.     prev_active = isactive;
  55.     fader.start();
  56.   }
  57. }
  58.  
  59. int fadeto(Container c, Layout l, int targetalpha) {
  60.   if (c.getId() == "Component") return 0;
  61.   int mal = l.getAlpha();
  62.   if (mal == targetalpha) {
  63.     return 0;    // didn't need to adjust it
  64.   }
  65.   if (mal > targetalpha) {
  66.     mal = mal - 2;
  67.     if (mal < targetalpha) mal = targetalpha;
  68.   } else if (mal < targetalpha) {
  69.     mal = mal + 8;
  70.     if (mal > targetalpha) mal = targetalpha;
  71.   }
  72.   l.setAlpha(mal);
  73.   return 1;
  74. }
  75.  
  76. fader.onTimer() {
  77.   int isactive = isAppActive();
  78.   int targetalpha = ACTIVEALPHA;
  79.   if (!isactive) targetalpha = INACTIVEALPHA;
  80.  
  81.   int done = 1;
  82.  
  83.   int n = getNumContainers();
  84.   for (int i = 0; i < n; i++) {
  85.     Container c = enumContainer(i);
  86.     int nl = c.getNumLayouts();
  87.     for (int j = 0; j < nl; j++) {
  88.       Layout l = c.enumLayout(j);
  89.       done *= !fadeto(l, targetalpha);
  90.     }
  91.   }
  92.   if (done) fader.stop();
  93. }
  94.