📄 fade.c
字号:
/*
* FreeLoader
* Copyright (C) 1998-2003 Brian Palmer <brianp@sginet.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <freeldr.h>
#define RGB_MAX 64
#define RGB_MAX_PER_ITERATION 64
VOID VideoSetAllColorsToBlack(ULONG ColorCount)
{
ULONG Color;
MachVideoSync();
for (Color=0; Color<ColorCount; Color++)
{
MachVideoSetPaletteColor(Color, 0, 0, 0);
}
}
VOID VideoFadeIn(PPALETTE_ENTRY Palette, ULONG ColorCount)
{
ULONG Index;
ULONG Color;
PALETTE_ENTRY PaletteColors[ColorCount];
for (Index=0; Index<RGB_MAX; Index++)
{
for (Color=0; Color<ColorCount; Color++)
{
MachVideoGetPaletteColor(Color, &PaletteColors[Color].Red, &PaletteColors[Color].Green, &PaletteColors[Color].Blue);
// Increment each color so it approaches its real value
if (PaletteColors[Color].Red < Palette[Color].Red)
{
PaletteColors[Color].Red++;
}
if (PaletteColors[Color].Green < Palette[Color].Green)
{
PaletteColors[Color].Green++;
}
if (PaletteColors[Color].Blue < Palette[Color].Blue)
{
PaletteColors[Color].Blue++;
}
// Make sure we haven't exceeded the real value
if (PaletteColors[Color].Red > Palette[Color].Red)
{
PaletteColors[Color].Red = Palette[Color].Red;
}
if (PaletteColors[Color].Green > Palette[Color].Green)
{
PaletteColors[Color].Green = Palette[Color].Green;
}
if (PaletteColors[Color].Blue > Palette[Color].Blue)
{
PaletteColors[Color].Blue = Palette[Color].Blue;
}
}
// Set the colors
for (Color=0; Color<ColorCount; Color++)
{
if ((Color % RGB_MAX_PER_ITERATION) == 0)
{
MachVideoSync();
}
MachVideoSetPaletteColor(Color, PaletteColors[Color].Red, PaletteColors[Color].Green, PaletteColors[Color].Blue);
}
}
}
VOID VideoFadeOut(ULONG ColorCount)
{
ULONG Index;
ULONG Color;
UCHAR Red;
UCHAR Green;
UCHAR Blue;
for (Index=0; Index<RGB_MAX; Index++)
{
for (Color=0; Color<ColorCount; Color++)
{
if ((Color % RGB_MAX_PER_ITERATION) == 0)
{
MachVideoSync();
}
MachVideoGetPaletteColor(Color, &Red, &Green, &Blue);
if (Red > 0)
{
Red--;
}
if (Green > 0)
{
Green--;
}
if (Blue > 0)
{
Blue--;
}
MachVideoSetPaletteColor(Color, Red, Green, Blue);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -