#include <exec/types.h>
#include <graphics/gfxbase.h>
#include <graphics/text.h>
#include <graphics/sprite.h>
#include <intuition/intuitionbase.h>

#include "cdsconst.h"
#include "cdsprefs.h"

extern UWORD  *sprites[FRAMES];
extern struct SimpleSprite  Man;

void SetSprColors(v)
   
 struct ViewPort *v;
   
 {
   SetRGB4(v,17L,10L,0L,8L);
   SetRGB4(v,18L,6L,0L,4L);
   SetRGB4(v,19L,12L,12L,12L);

   SetRGB4(v,21L,13L,10L,9L);
   SetRGB4(v,22L,8L,5L,5L);
   SetRGB4(v,23L,4L,9L,4L);
   
   SetRGB4(v,29L,0L,15L,0L);
   SetRGB4(v,30L,6L,3L,3L);
   SetRGB4(v,31L,12L,10L,10L);
}

void Fade_In(Vp,CMap,p)

struct ViewPort *Vp;
struct ColorMap *CMap;
struct CDSPrefs *p;

{ int i,j;
  LONG R,G,B,Color;
  UWORD *Sec;
  
  Sec = Man.posctldata;
  ChangeSprite(Vp,&Man,sprites[FRAMES-1]);
  
  for (i=0;i<8;i++)
      SetRGB4CM(CMap,(LONG)i,0L,0L,0L);
      
  for (i=0;i<16;i++)
      {
      for (j=0;j<8;j++)
          {
           Color = GetRGB4(CMap,(LONG)j);
           R = (Color >>8) & 0xF;
           G = (Color >>4) & 0xF;
           B = Color & 0xF;
           if ((int)R < p->red[j]) R++;
           if ((int)G < p->green[j]) G++;
           if ((int)B < p->blue[j]) B++;
           
           SetRGB4(Vp,(LONG)j,R,G,B);
          }
       Delay(Fade_Delay);
       }
  ChangeSprite(Vp,&Man,Sec);
}   

void Fade_Out(Vp,CMap)

struct ViewPort *Vp;
struct ColorMap *CMap;

{ int i,j;
  LONG R,G,B,Color;
  UWORD *Sec;
  
  Sec = Man.posctldata;
  ChangeSprite(Vp,&Man,sprites[FRAMES-1]);
  
  for (j=0;j<16;j++)
      {
       for (i=0;i<8;i++)
           {
           Color =  GetRGB4(CMap,(LONG)i);
           R = (Color >>8) & 0xF;
           G = (Color >>4) & 0xF;
           B = Color & 0xF;
           if (R) R--;
           if (G) G--;
           if (B) B--;
           SetRGB4(Vp,(LONG)i,R,G,B);
           }
       if (j<13) Delay(Fade_Delay);
       }
  ChangeSprite(Vp,&Man,Sec);
}

