[Back to GRAPHICS SWAG index] [Back to Main SWAG index] [Original]

    {
    CHRIS BEISEL

    I've gotten many compliments on these two fade routines (a few good
    programmers thought they were asm!)... plus, I made them so you can fade
    part on the palette also... It's very smooth on my 486, as well as 386's
    and 286's at friends houses...

            set up in your type declarations
                    rgbtype=record
                        red,green,blue:byte;
                    end;
                    rgbarray[0..255] of rgbtype;

            and in your var declarations have something like
                    rgbpal:rgbarray;

            and set your colors in that...
    }
    procedure fadein(fadepal : rgbarray; col1, col2 : byte);
    var
      lcv,
      lcv2 : integer;
      tpal : rgbarray;
    begin
      for lcv := col1 to col2 do
      begin
        TPal[lcv].red   := 0;
        TPal[lcv].green := 0;
        TPal[lcv].blue  := 0;
      end;
      for lcv := 0 to 63 do
      begin
        for lcv2:=col1 to col2 do
        begin
          if fadepal[lcv2].red > TPal[lcv2].red then
            TPal[lcv2].red := TPal[lcv2].red + 1;
          if fadepal[lcv2].green > TPal[lcv2].green then
            TPal[lcv2].green := TPal[lcv2].green + 1;
          if fadepal[lcv2].blue > TPal[lcv2].blue then
            TPal[lcv2].blue := TPal[lcv2].blue+1;

          setcolor(lcv2, TPal[lcv2].red, TPal[lcv2].green, TPal[lcv2].blue);
        end;
        refresh;
      end;
    end;

    {*******************************************************************}

    procedure fadeout(fadepal : rgbarray; col1, col2 : byte);
    var
      lcv,
      lcv2 : integer;
      TPal : rgbarray;
    begin
      for lcv := col1 to col2 do
      begin
        TPal[lcv].red   := 0;
        TPal[lcv].green := 0;
        TPal[lcv].blue  := 0;
      end;
      for lcv := 0 to 63 do
      begin
        for lcv2 := col1 to col2 do
        begin
          if fadepal[lcv2].red > TPal[lcv2].red then
            fadepal[lcv2].red := fadepal[lcv2].red - 1;
          if fadepal[lcv2].green > TPal[lcv2].green then
            fadepal[lcv2].green := fadepal[lcv2].green - 1;
          if fadepal[lcv2].blue > TPal[lcv2].blue then
            fadepal[lcv2].blue := fadepal[lcv2].blue - 1;

          setcolor(lcv2, fadepal[lcv2].red, fadepal[lcv2].green, fadepal[lcv2].blue);
        end;
        refresh;
      end;
    end;

    {*******************************************************************}

[Back to GRAPHICS SWAG index] [Back to Main SWAG index] [Original]